From fa7e34e84a09ed7a2f453a35a48e71477c841e5b Mon Sep 17 00:00:00 2001 From: isanae <14251494+isanae@users.noreply.github.com> Date: Fri, 31 May 2019 15:15:47 -0400 Subject: conflict lists: - the file index is now stored in the row data - the alternate origins are now added to the context menu in a "go to" submenu - context menu items are now visually disabled instead of omitted from the menu --- src/modinfodialog.h | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) (limited to 'src/modinfodialog.h') diff --git a/src/modinfodialog.h b/src/modinfodialog.h index 85505487..8510c96d 100644 --- a/src/modinfodialog.h +++ b/src/modinfodialog.h @@ -385,15 +385,20 @@ private slots: void createTweak(); private: + using FileEntry = MOShared::FileEntry; + struct ConflictActions { QAction* hide; QAction* unhide; QAction* open; QAction* preview; + QMenu* gotoMenu; + std::vector gotoActions; - ConflictActions() - : hide(nullptr), unhide(nullptr), open(nullptr), preview(nullptr) + ConflictActions() : + hide(nullptr), unhide(nullptr), open(nullptr), preview(nullptr), + gotoMenu(nullptr) { } }; @@ -438,28 +443,33 @@ private: void refreshFiles(); QTreeWidgetItem* createOverwriteItem( - bool archive, const QString& fileName, const QString& relativeName, + FileEntry::Index index, bool archive, + const QString& fileName, const QString& relativeName, const MOShared::FileEntry::AlternativesVector& alternatives); QTreeWidgetItem* createNoConflictItem( - bool archive, const QString& fileName, const QString& relativeName); + FileEntry::Index index, bool archive, + const QString& fileName, const QString& relativeName); QTreeWidgetItem* createOverwrittenItem( - int fileOrigin, bool archive, + FileEntry::Index index, int fileOrigin, bool archive, const QString& fileName, const QString& relativeName); QTreeWidgetItem* createAdvancedConflictItem( - int fileOrigin, bool archive, + FileEntry::Index index, int fileOrigin, bool archive, const QString& fileName, const QString& relativeName, const MOShared::FileEntry::AlternativesVector& alternatives); void setConflictItem( - QTreeWidgetItem* item, - const QString& fileName, const QString& origin, bool archive) const; + QTreeWidgetItem* item, FileEntry::Index index, + const QString& fileName, bool hasAltOrigins, const QString& altOrigin, + bool archive) const; QString conflictFileName(const QTreeWidgetItem* conflictItem) const; - QString conflictOrigin(const QTreeWidgetItem* conflictItem) const; + QString conflictAltOrigin(const QTreeWidgetItem* conflictItem) const; + bool conflictHasAlts(const QTreeWidgetItem* conflictItem) const; bool conflictIsArchive(const QTreeWidgetItem* conflictItem) const; + FileEntry::Index conflictFileIndex(const QTreeWidgetItem* conflictItem) const; void restoreTabState(const QByteArray &state); void restoreConflictsState(const QByteArray &state); @@ -487,7 +497,10 @@ private: void showConflictMenu(const QPoint &pos, QTreeWidget* tree); ConflictActions createConflictMenuActions( - const QList selection); + const QList& selection); + + std::vector createGotoActions( + const QList& selection); }; #endif // MODINFODIALOG_H -- cgit v1.3.1