comparison changesetitem.cpp @ 296:d40294e164da status_outside_tabs

Merge from the default branch
author Chris Cannam
date Tue, 22 Feb 2011 13:03:03 +0000
parents 37f67999b661
children 5b4aa1c24407
comparison
equal deleted inserted replaced
287:3fbafca196e4 296:d40294e164da
106 106
107 void 107 void
108 ChangesetItem::activateMenu() 108 ChangesetItem::activateMenu()
109 { 109 {
110 m_parentDiffActions.clear(); 110 m_parentDiffActions.clear();
111 m_summaryActions.clear();
111 112
112 QMenu *menu = new QMenu; 113 QMenu *menu = new QMenu;
113 QLabel *label = new QLabel(tr("<qt><b>&nbsp;Revision: </b>%1</qt>") 114 QLabel *label = new QLabel(tr("<qt><b>&nbsp;Revision: </b>%1</qt>")
114 .arg(Changeset::hashOf(m_changeset->id()))); 115 .arg(Changeset::hashOf(m_changeset->id())));
115 QWidgetAction *wa = new QWidgetAction(menu); 116 QWidgetAction *wa = new QWidgetAction(menu);
118 menu->addSeparator(); 119 menu->addSeparator();
119 120
120 QAction *copyId = menu->addAction(tr("Copy identifier to clipboard")); 121 QAction *copyId = menu->addAction(tr("Copy identifier to clipboard"));
121 connect(copyId, SIGNAL(triggered()), this, SLOT(copyIdActivated())); 122 connect(copyId, SIGNAL(triggered()), this, SLOT(copyIdActivated()));
122 123
124 QAction *stat = menu->addAction(tr("Summarise changes"));
125 connect(stat, SIGNAL(triggered()), this, SLOT(showSummaryActivated()));
126
123 menu->addSeparator(); 127 menu->addSeparator();
124 128
125 QStringList parents = m_changeset->parents(); 129 QStringList parents = m_changeset->parents();
126 130
131 QString leftId, rightId;
132 bool havePositions = false;
133
127 if (parents.size() > 1) { 134 if (parents.size() > 1) {
128
129 QString leftId, rightId;
130 ChangesetScene *cs = dynamic_cast<ChangesetScene *>(scene()); 135 ChangesetScene *cs = dynamic_cast<ChangesetScene *>(scene());
131 bool havePositions = false;
132
133 if (cs && parents.size() == 2) { 136 if (cs && parents.size() == 2) {
134 ChangesetItem *i0 = cs->getItemById(parents[0]); 137 ChangesetItem *i0 = cs->getItemById(parents[0]);
135 ChangesetItem *i1 = cs->getItemById(parents[1]); 138 ChangesetItem *i1 = cs->getItemById(parents[1]);
136 if (i0 && i1) { 139 if (i0 && i1) {
137 if (i0->x() < i1->x()) { 140 if (i0->x() < i1->x()) {
142 rightId = parents[0]; 145 rightId = parents[0];
143 } 146 }
144 havePositions = true; 147 havePositions = true;
145 } 148 }
146 } 149 }
147 150 }
151
152 if (parents.size() > 1) {
148 if (havePositions) { 153 if (havePositions) {
149 154
150 QAction *diffParent = menu->addAction(tr("Diff to left parent")); 155 QAction *diff = menu->addAction(tr("Diff to left parent"));
151 connect(diffParent, SIGNAL(triggered()), 156 connect(diff, SIGNAL(triggered()), this, SLOT(diffToParentActivated()));
152 this, SLOT(diffToParentActivated())); 157 m_parentDiffActions[diff] = leftId;
153 m_parentDiffActions[diffParent] = leftId;
154 158
155 diffParent = menu->addAction(tr("Diff to right parent")); 159 diff = menu->addAction(tr("Diff to right parent"));
156 connect(diffParent, SIGNAL(triggered()), 160 connect(diff, SIGNAL(triggered()), this, SLOT(diffToParentActivated()));
157 this, SLOT(diffToParentActivated())); 161 m_parentDiffActions[diff] = rightId;
158 m_parentDiffActions[diffParent] = rightId;
159 162
160 } else { 163 } else {
161 164
162 foreach (QString parentId, parents) { 165 foreach (QString parentId, parents) {
163 QString text = tr("Diff to parent %1") 166 QString text = tr("Diff to parent %1").arg(Changeset::hashOf(parentId));
164 .arg(Changeset::hashOf(parentId)); 167 QAction *diff = menu->addAction(text);
165 QAction *diffParent = menu->addAction(text); 168 connect(diff, SIGNAL(triggered()), this, SLOT(diffToParentActivated()));
166 connect(diffParent, SIGNAL(triggered()), 169 m_parentDiffActions[diff] = parentId;
167 this, SLOT(diffToParentActivated()));
168 m_parentDiffActions[diffParent] = parentId;
169 } 170 }
170 } 171 }
171 172
172 } else { 173 } else {
173 174
174 QAction *diffParent = 175 QAction *diff = menu->addAction(tr("Diff to parent"));
175 menu->addAction(tr("Diff to parent")); 176 connect(diff, SIGNAL(triggered()), this, SLOT(diffToParentActivated()));
176 connect(diffParent, SIGNAL(triggered()),
177 this, SLOT(diffToParentActivated()));
178 } 177 }
179 178
180 QAction *diffCurrent = menu->addAction(tr("Diff to current working folder")); 179 QAction *diffCurrent = menu->addAction(tr("Diff to current working folder"));
181 connect(diffCurrent, SIGNAL(triggered()), this, SLOT(diffToCurrentActivated())); 180 connect(diffCurrent, SIGNAL(triggered()), this, SLOT(diffToCurrentActivated()));
182 181
221 } 220 }
222 221
223 emit diffToParent(getId(), parentId); 222 emit diffToParent(getId(), parentId);
224 } 223 }
225 224
225 void ChangesetItem::showSummaryActivated()
226 {
227 emit showSummary(m_changeset);
228 }
229
226 void ChangesetItem::updateActivated() { emit updateTo(getId()); } 230 void ChangesetItem::updateActivated() { emit updateTo(getId()); }
227 void ChangesetItem::diffToCurrentActivated() { emit diffToCurrent(getId()); } 231 void ChangesetItem::diffToCurrentActivated() { emit diffToCurrent(getId()); }
228 void ChangesetItem::mergeActivated() { emit mergeFrom(getId()); } 232 void ChangesetItem::mergeActivated() { emit mergeFrom(getId()); }
229 void ChangesetItem::tagActivated() { emit tag(getId()); } 233 void ChangesetItem::tagActivated() { emit tag(getId()); }
230 234
231 void 235 void
232 ChangesetItem::paint(QPainter *paint, const QStyleOptionGraphicsItem *option, 236 ChangesetItem::paint(QPainter *paint, const QStyleOptionGraphicsItem *, QWidget *)
233 QWidget *w)
234 { 237 {
235 paint->save(); 238 paint->save();
236 239
237 ColourSet *colourSet = ColourSet::instance(); 240 ColourSet *colourSet = ColourSet::instance();
238 QColor branchColour = colourSet->getColourFor(m_changeset->branch()); 241 QColor branchColour = colourSet->getColourFor(m_changeset->branch());