annotate changeset.h @ 109:1721c580c10e

* Add a queueing mechanism for Hg actions, instead of refusing to start an action if something else is already happening. This is essential now that actions can be prompted by asynchronous events (e.g. filesystem watcher). * Make Revert behave sensibly
author Chris Cannam
date Fri, 26 Nov 2010 12:48:29 +0000
parents 8ae3b44c0073
children 3afa1ce339ec
rev   line source
Chris@57 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@57 2
Chris@57 3 /*
Chris@57 4 EasyMercurial
Chris@57 5
Chris@57 6 Based on HgExplorer by Jari Korhonen
Chris@57 7 Copyright (c) 2010 Jari Korhonen
Chris@57 8 Copyright (c) 2010 Chris Cannam
Chris@57 9 Copyright (c) 2010 Queen Mary, University of London
Chris@57 10
Chris@57 11 This program is free software; you can redistribute it and/or
Chris@57 12 modify it under the terms of the GNU General Public License as
Chris@57 13 published by the Free Software Foundation; either version 2 of the
Chris@57 14 License, or (at your option) any later version. See the file
Chris@57 15 COPYING included with this distribution for more information.
Chris@57 16 */
Chris@57 17
Chris@43 18 #ifndef CHANGESET_H
Chris@43 19 #define CHANGESET_H
Chris@43 20
Chris@43 21 #include <QObject>
Chris@43 22 #include <QString>
Chris@43 23 #include <QStringList>
Chris@43 24 #include <QList>
Chris@106 25 #include <QSharedPointer>
Chris@106 26
Chris@106 27 #include "logparser.h"
Chris@43 28
Chris@108 29 class Changeset;
Chris@108 30
Chris@108 31 typedef QList<Changeset *> Changesets; //!!! should be QList<QSharedPointer<Changeset> >
Chris@108 32
Chris@43 33 class Changeset : public QObject
Chris@43 34 {
Chris@43 35 Q_OBJECT
Chris@43 36
Chris@43 37 Q_PROPERTY(QString id READ id WRITE setId NOTIFY idChanged STORED true);
Chris@43 38 Q_PROPERTY(QString author READ author WRITE setAuthor NOTIFY authorChanged STORED true);
Chris@43 39 Q_PROPERTY(QString branch READ branch WRITE setBranch NOTIFY branchChanged STORED true);
Chris@44 40 Q_PROPERTY(QString tag READ tag WRITE setTag NOTIFY tagChanged STORED true);
Chris@52 41 Q_PROPERTY(QString datetime READ datetime WRITE setDatetime NOTIFY datetimeChanged STORED true);
Chris@52 42 Q_PROPERTY(qulonglong timestamp READ timestamp WRITE setTimestamp NOTIFY timestampChanged STORED true);
Chris@43 43 Q_PROPERTY(QString age READ age WRITE setAge NOTIFY ageChanged STORED true);
Chris@43 44 Q_PROPERTY(QStringList parents READ parents WRITE setParents NOTIFY parentsChanged STORED true);
Chris@47 45 Q_PROPERTY(QStringList children READ children WRITE setChildren NOTIFY childrenChanged STORED true);
Chris@43 46 Q_PROPERTY(QString comment READ comment WRITE setComment NOTIFY commentChanged STORED true);
Chris@43 47
Chris@43 48 public:
Chris@43 49 Changeset() : QObject() { }
Chris@106 50 explicit Changeset(const LogEntry &e);
Chris@43 51
Chris@43 52 QString id() const { return m_id; }
Chris@43 53 QString author() const { return m_author; }
Chris@43 54 QString branch() const { return m_branch; }
Chris@44 55 QString tag() const { return m_tag; }
Chris@51 56 QString datetime() const { return m_datetime; }
Chris@52 57 qulonglong timestamp() const { return m_timestamp; }
Chris@43 58 QString age() const { return m_age; }
Chris@43 59 QStringList parents() const { return m_parents; }
Chris@47 60 QStringList children() const { return m_children; }
Chris@43 61 QString comment() const { return m_comment; }
Chris@43 62
Chris@43 63 int number() const {
Chris@43 64 return id().split(':')[0].toInt();
Chris@43 65 }
Chris@43 66
Chris@44 67 QString authorName() const {
Chris@44 68 QString a = author();
Chris@44 69 return a.replace(QRegExp("\\s*<[^>]*>"), "");
Chris@44 70 }
Chris@44 71
Chris@51 72 QString date() const {
Chris@51 73 return datetime().split(' ')[0];
Chris@51 74 }
Chris@51 75
Chris@108 76 bool isOnBranch(QString branch) {
Chris@108 77 QString b = m_branch;
Chris@108 78 if (branch == "") branch = "default";
Chris@108 79 if (b == "") b = "default";
Chris@108 80 if (branch == b) return true;
Chris@108 81 return false;
Chris@108 82 }
Chris@108 83
Chris@108 84 static Changesets parseChangesets(QString logText) {
Chris@108 85 Changesets csets;
Chris@108 86 LogList log = LogParser(logText).parse();
Chris@108 87 foreach (LogEntry e, log) {
Chris@108 88 csets.push_back(new Changeset(e));
Chris@108 89 }
Chris@108 90 return csets;
Chris@108 91 }
Chris@108 92
Chris@43 93 signals:
Chris@43 94 void idChanged(QString id);
Chris@43 95 void authorChanged(QString author);
Chris@43 96 void branchChanged(QString branch);
Chris@44 97 void tagChanged(QString tag);
Chris@51 98 void datetimeChanged(QString datetime);
Chris@52 99 void timestampChanged(qulonglong timestamp);
Chris@43 100 void ageChanged(QString age);
Chris@43 101 void parentsChanged(QStringList parents);
Chris@47 102 void childrenChanged(QStringList children);
Chris@43 103 void commentChanged(QString comment);
Chris@43 104
Chris@43 105 public slots:
Chris@43 106 void setId(QString id) { m_id = id; emit idChanged(id); }
Chris@43 107 void setAuthor(QString author) { m_author = author; emit authorChanged(author); }
Chris@43 108 void setBranch(QString branch) { m_branch = branch; emit branchChanged(branch); }
Chris@44 109 void setTag(QString tag) { m_tag = tag; emit tagChanged(tag); }
Chris@52 110 void setDatetime(QString datetime) { m_datetime = datetime; emit datetimeChanged(datetime); }
Chris@52 111 void setTimestamp(qulonglong timestamp) { m_timestamp = timestamp; emit timestampChanged(timestamp); }
Chris@43 112 void setAge(QString age) { m_age = age; emit ageChanged(age); }
Chris@43 113 void setParents(QStringList parents) { m_parents = parents; emit parentsChanged(parents); }
Chris@47 114 void setChildren(QStringList children) { m_children = children; emit childrenChanged(m_children); }
Chris@47 115 void addChild(QString child) { m_children.push_back(child); emit childrenChanged(m_children); }
Chris@43 116 void setComment(QString comment) { m_comment = comment; emit commentChanged(comment); }
Chris@43 117
Chris@43 118 private:
Chris@43 119 QString m_id;
Chris@43 120 QString m_author;
Chris@43 121 QString m_branch;
Chris@44 122 QString m_tag;
Chris@51 123 QString m_datetime;
Chris@52 124 qulonglong m_timestamp;
Chris@43 125 QString m_age;
Chris@43 126 QStringList m_parents;
Chris@47 127 QStringList m_children;
Chris@43 128 QString m_comment;
Chris@43 129 };
Chris@43 130
Chris@43 131
Chris@43 132 #endif // CHANGESET_H