annotate src/changesetitem.h @ 600:641ccce7c771

Avoid messing with font size when zooming, let it zoom naturally; don't delete detail item when removing it, just let it wait to be shown again (and do delete it when deleting main item)
author Chris Cannam
date Fri, 11 May 2012 17:44:33 +0100
parents 1e76d1009167
children ae67ea0af696
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@560 8 Copyright (c) 2012 Chris Cannam
Chris@560 9 Copyright (c) 2012 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 CHANGESETITEM_H
Chris@43 19 #define CHANGESETITEM_H
Chris@43 20
Chris@168 21 #include <QGraphicsObject>
Chris@53 22 #include <QFont>
Chris@43 23
Chris@43 24 class Changeset;
Chris@117 25 class ChangesetDetailItem;
Chris@43 26
Chris@153 27 class QAction;
Chris@390 28 class QImage;
Chris@153 29
Chris@168 30 class ChangesetItem : public QGraphicsObject
Chris@43 31 {
Chris@119 32 Q_OBJECT
Chris@119 33
Chris@43 34 public:
Chris@53 35 ChangesetItem(Changeset *cs);
Chris@600 36 ~ChangesetItem();
Chris@43 37
Chris@43 38 virtual QRectF boundingRect() const;
Chris@43 39 virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *);
Chris@43 40
Chris@53 41 Changeset *getChangeset() { return m_changeset; }
Chris@141 42 QString getId();
Chris@53 43
Chris@44 44 int column() const { return m_column; }
Chris@44 45 int row() const { return m_row; }
Chris@46 46 void setColumn(int c) { m_column = c; setX(c * 100); }
Chris@53 47 void setRow(int r) { m_row = r; setY(r * 90); }
Chris@44 48
Chris@55 49 bool isWide() const { return m_wide; }
Chris@55 50 void setWide(bool w) { m_wide = w; }
Chris@55 51
Chris@128 52 bool isCurrent() const { return m_current; }
Chris@128 53 void setCurrent(bool c) { m_current = c; }
Chris@128 54
Chris@508 55 // Closed is true if this changeset is on a closed branch
Chris@510 56 bool isClosed() const;
Chris@506 57
Chris@508 58 // Closing is true if this changeset is the commit that closed its
Chris@508 59 // branch (i.e. is at the end of a closed branch)
Chris@508 60 bool isClosingCommit() const { return m_closing; }
Chris@508 61 void setClosingCommit(bool c) { m_closing = c; }
Chris@508 62
Chris@133 63 bool isNew() const { return m_new; }
Chris@133 64 void setNew(bool n) { m_new = n; }
Chris@133 65
Chris@153 66 bool showBranch() const { return m_showBranch; }
Chris@74 67 void setShowBranch(bool s) { m_showBranch = s; }
Chris@74 68
Chris@566 69 bool matchSearchText(QString text); // return true and records the match if it matches
Chris@555 70
Chris@119 71 signals:
Chris@119 72 void detailShown();
Chris@119 73 void detailHidden();
Chris@119 74
Chris@141 75 void updateTo(QString);
Chris@141 76 void diffToCurrent(QString);
Chris@148 77 void diffToParent(QString child, QString parent);
Chris@289 78 void showSummary(Changeset *);
Chris@141 79 void mergeFrom(QString);
Chris@278 80 void newBranch(QString);
Chris@514 81 void closeBranch(QString);
Chris@141 82 void tag(QString);
Chris@141 83
Chris@119 84 public slots:
Chris@119 85 void showDetail();
Chris@119 86 void hideDetail();
Chris@119 87
Chris@141 88 private slots:
Chris@153 89 void copyIdActivated();
Chris@141 90 void updateActivated();
Chris@153 91 void diffToParentActivated();
Chris@289 92 void showSummaryActivated();
Chris@141 93 void diffToCurrentActivated();
Chris@141 94 void mergeActivated();
Chris@141 95 void tagActivated();
Chris@278 96 void newBranchActivated();
Chris@514 97 void closeBranchActivated();
Chris@141 98
Chris@117 99 protected:
Chris@117 100 virtual void mousePressEvent(QGraphicsSceneMouseEvent *);
Chris@474 101 virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *);
Chris@117 102
Chris@43 103 private:
Chris@140 104 void activateMenu();
Chris@140 105
Chris@53 106 QFont m_font;
Chris@43 107 Changeset *m_changeset;
Chris@117 108 ChangesetDetailItem *m_detail;
Chris@600 109 bool m_detailVisible;
Chris@74 110 bool m_showBranch;
Chris@44 111 int m_column;
Chris@44 112 int m_row;
Chris@55 113 bool m_wide;
Chris@128 114 bool m_current;
Chris@508 115 bool m_closing;
Chris@133 116 bool m_new;
Chris@555 117 QString m_searchText;
Chris@555 118 bool m_searchMatches;
Chris@153 119
Chris@153 120 QMap<QAction *, QString> m_parentDiffActions;
Chris@288 121 QMap<QAction *, QString> m_summaryActions;
Chris@387 122
Chris@390 123 static QImage *m_star;
Chris@390 124
Chris@387 125 bool isMerge() const;
Chris@399 126 void paintNormal(QPainter *);
Chris@508 127 void paintSimple(QPainter *);
Chris@43 128 };
Chris@43 129
Chris@43 130 #endif // CHANGESETITEM_H