[Grandmas-svn-commit] SF.net SVN: grandmas-svn: [59] trunk
Brought to you by:
matthiasmiller
From: <mat...@us...> - 2006-10-26 12:59:25
|
Revision: 59 http://svn.sourceforge.net/grandmas-svn/?rev=59&view=rev Author: matthiasmiller Date: 2006-10-26 05:59:20 -0700 (Thu, 26 Oct 2006) Log Message: ----------- allow multiple items to be diffed at once; slight tweak to commit dialog layout Modified Paths: -------------- trunk/include/dialogs/modificationsmodel.h trunk/src/dialogs/mainwindow.cpp trunk/src/dialogs/modificationsmodel.cpp trunk/ui/commit.ui trunk/ui/mainwindow.ui Modified: trunk/include/dialogs/modificationsmodel.h =================================================================== --- trunk/include/dialogs/modificationsmodel.h 2006-10-26 03:36:10 UTC (rev 58) +++ trunk/include/dialogs/modificationsmodel.h 2006-10-26 12:59:20 UTC (rev 59) @@ -32,7 +32,7 @@ void showError(QString error); void showModifications(const QList<Modification>& rcModifications, bool includeUnversionedMods); - Modification getModificationFromIndex(const QModelIndex& rcIndex) const; + Modification getModificationFromIndex(int row) const; virtual int columnCount(const QModelIndex &rcParent = QModelIndex()) const; virtual int rowCount(const QModelIndex& rcParent = QModelIndex()) const; Modified: trunk/src/dialogs/mainwindow.cpp =================================================================== --- trunk/src/dialogs/mainwindow.cpp 2006-10-26 03:36:10 UTC (rev 58) +++ trunk/src/dialogs/mainwindow.cpp 2006-10-26 12:59:20 UTC (rev 59) @@ -141,32 +141,42 @@ void MainWindow::diff() { - diff(mpUi->changesTreeView->selectionModel()->currentIndex()); -} - -void MainWindow::diff(const QModelIndex& rcIndex) -{ - if (!rcIndex.isValid()) - return; - - // Generate each side of the diff - QString error, leftPath, rightPath; - Modification mod = mpModificationsModel->getModificationFromIndex(rcIndex); - QString fullFilePath = RepoFileAccess::getCanonicalPath(*mpContext, mPath, mod.getFilePath()); - if (!RepoFileAccess::getDiffFiles(*mpContext, fullFilePath, mod.getOldRevision(), mod.getNewRevision(), leftPath, rightPath, error)) + // determine which rows are selected (remove duplicate rows, since an index is returned for each column) + QModelIndexList selection = mpUi->changesTreeView->selectionModel()->selectedIndexes(); + QSet<int> rows; + Q_FOREACH(QModelIndex index, selection) { - QMessageBox::critical(this, "", error); - return; + if (index.isValid()) + rows.insert(index.row()); } - // Launch the diff - if (!diffFiles(leftPath, rightPath)) + Q_FOREACH(int row, rows) { - QMessageBox::critical(this, tr("The differences could not be displayed."), tr("The comparison program could not be opened.")); - return; + // Generate each side of the diff + QString error, leftPath, rightPath; + Modification mod = mpModificationsModel->getModificationFromIndex(row); + QString fullFilePath = RepoFileAccess::getCanonicalPath(*mpContext, mPath, mod.getFilePath()); + if (!RepoFileAccess::getDiffFiles(*mpContext, fullFilePath, mod.getOldRevision(), mod.getNewRevision(), leftPath, rightPath, error)) + { + QMessageBox::critical(this, "", error); + return; + } + + // Launch the diff + if (!diffFiles(leftPath, rightPath)) + { + QMessageBox::critical(this, tr("The differences could not be displayed."), tr("The comparison program could not be opened.")); + return; + } } } +void MainWindow::diff(const QModelIndex& rcIndex) +{ + Q_UNUSED(rcIndex); + diff(); +} + void MainWindow::move() { MoveDialog dlg(this); Modified: trunk/src/dialogs/modificationsmodel.cpp =================================================================== --- trunk/src/dialogs/modificationsmodel.cpp 2006-10-26 03:36:10 UTC (rev 58) +++ trunk/src/dialogs/modificationsmodel.cpp 2006-10-26 12:59:20 UTC (rev 59) @@ -81,21 +81,15 @@ emit layoutChanged(); } -Modification ModificationsModel::getModificationFromIndex(const QModelIndex& rcIndex) const +Modification ModificationsModel::getModificationFromIndex(int row) const { - if (!rcIndex.isValid()) + if (row < 0 || row >= mAllModifications.count()) { GSVN_ASSERT(false); return Modification(); } - - if (rcIndex.row() < 0 || rcIndex.row() >= mAllModifications.count()) - { - GSVN_ASSERT(false); - return Modification(); - } - return mAllModifications.at(rcIndex.row()); + return mAllModifications.at(row); } int ModificationsModel::columnCount(const QModelIndex &rcParent) const Modified: trunk/ui/commit.ui =================================================================== --- trunk/ui/commit.ui 2006-10-26 03:36:10 UTC (rev 58) +++ trunk/ui/commit.ui 2006-10-26 12:59:20 UTC (rev 59) @@ -13,7 +13,7 @@ <string>Commit</string> </property> <property name="windowIcon" > - <iconset resource="grandmas-svn.qrc" >:/logo/logo-32x32.png</iconset> + <iconset/> </property> <layout class="QVBoxLayout" > <property name="margin" > @@ -74,6 +74,13 @@ </widget> </item> <item> + <widget class="QCheckBox" name="updateCheckBox" > + <property name="text" > + <string>&Also update this working copy.</string> + </property> + </widget> + </item> + <item> <layout class="QHBoxLayout" > <property name="margin" > <number>0</number> @@ -82,13 +89,6 @@ <number>6</number> </property> <item> - <widget class="QCheckBox" name="updateCheckBox" > - <property name="text" > - <string>&Also update this working copy.</string> - </property> - </widget> - </item> - <item> <spacer> <property name="orientation" > <enum>Qt::Horizontal</enum> Modified: trunk/ui/mainwindow.ui =================================================================== --- trunk/ui/mainwindow.ui 2006-10-26 03:36:10 UTC (rev 58) +++ trunk/ui/mainwindow.ui 2006-10-26 12:59:20 UTC (rev 59) @@ -169,6 +169,9 @@ </item> <item row="2" column="0" > <widget class="QTreeView" name="changesTreeView" > + <property name="selectionMode" > + <enum>QAbstractItemView::ExtendedSelection</enum> + </property> <property name="indentation" > <number>0</number> </property> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |