summaryrefslogtreecommitdiff
path: root/src/modinfodialog.h
diff options
context:
space:
mode:
authorAl <gabriel.cortesi@outlook.com>2019-06-01 09:54:09 +0200
committerGitHub <noreply@github.com>2019-06-01 09:54:09 +0200
commitf00314442b9c3c28e846c64da3c3f776e50656de (patch)
tree371f52175eaa83db0b3b354b95d382bd7080ca38 /src/modinfodialog.h
parent41f8da011d1df7a368e3fb73f972cee1f4efd0c0 (diff)
parentd2eb890f2b9df13c402db6adeaafa7e3f4a7d736 (diff)
Merge pull request #740 from isanae/new-conflict-list
New conflict list, new "go to" conflict menu item
Diffstat (limited to 'src/modinfodialog.h')
-rw-r--r--src/modinfodialog.h59
1 files changed, 52 insertions, 7 deletions
diff --git a/src/modinfodialog.h b/src/modinfodialog.h
index 5f7d831b..8510c96d 100644
--- a/src/modinfodialog.h
+++ b/src/modinfodialog.h
@@ -25,6 +25,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include "tutorabledialog.h"
#include "plugincontainer.h"
#include "organizercore.h"
+#include "filterwidget.h"
#include <QDialog>
#include <QSignalMapper>
@@ -279,6 +280,8 @@ public:
**/
void openTab(int tab);
+ int exec() override;
+
void saveState(Settings& s) const;
void restoreState(const Settings& s);
@@ -367,6 +370,7 @@ private slots:
void on_overwriteTree_customContextMenuRequested(const QPoint &pos);
void on_overwrittenTree_customContextMenuRequested(const QPoint &pos);
void on_noConflictTree_customContextMenuRequested(const QPoint &pos);
+ void on_conflictsAdvancedList_customContextMenuRequested(const QPoint &pos);
void on_fileTree_customContextMenuRequested(const QPoint &pos);
void on_refreshButton_clicked();
@@ -381,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<QAction*> gotoActions;
- ConflictActions()
- : hide(nullptr), unhide(nullptr), open(nullptr), preview(nullptr)
+ ConflictActions() :
+ hide(nullptr), unhide(nullptr), open(nullptr), preview(nullptr),
+ gotoMenu(nullptr)
{
}
};
@@ -427,20 +436,52 @@ private:
std::map<int, int> m_RealTabPos;
ExpanderWidget m_overwriteExpander, m_overwrittenExpander, m_nonconflictExpander;
+ FilterWidget m_advancedConflictFilter;
+
+
+ void refreshConflictLists(bool refreshGeneral, bool refreshAdvanced);
+ void refreshFiles();
+
+ QTreeWidgetItem* createOverwriteItem(
+ FileEntry::Index index, bool archive,
+ const QString& fileName, const QString& relativeName,
+ const MOShared::FileEntry::AlternativesVector& alternatives);
+ QTreeWidgetItem* createNoConflictItem(
+ FileEntry::Index index, bool archive,
+ const QString& fileName, const QString& relativeName);
+
+ QTreeWidgetItem* createOverwrittenItem(
+ FileEntry::Index index, int fileOrigin, bool archive,
+ const QString& fileName, const QString& relativeName);
+
+ QTreeWidgetItem* createAdvancedConflictItem(
+ FileEntry::Index index, int fileOrigin, bool archive,
+ const QString& fileName, const QString& relativeName,
+ const MOShared::FileEntry::AlternativesVector& alternatives);
+
+ void setConflictItem(
+ QTreeWidgetItem* item, FileEntry::Index index,
+ const QString& fileName, bool hasAltOrigins, const QString& altOrigin,
+ bool archive) const;
+
+ QString conflictFileName(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 restoreConflictExpandersState(const QByteArray &state);
+ void restoreConflictsState(const QByteArray &state);
QByteArray saveTabState() const;
- QByteArray saveConflictExpandersState() const;
+ QByteArray saveConflictsState() const;
bool canHideConflictItem(const QTreeWidgetItem* item) const;
bool canUnhideConflictItem(const QTreeWidgetItem* item) const;
+ bool canOpenConflictItem(const QTreeWidgetItem* item) const;
bool canPreviewConflictItem(const QTreeWidgetItem* item) const;
- void openDataFile(const QTreeWidgetItem* item);
- void previewDataFile(const QTreeWidgetItem* item);
void changeFiletreeVisibility(bool visible);
void openConflictItems(const QList<QTreeWidgetItem*>& items);
@@ -449,13 +490,17 @@ private:
const QList<QTreeWidgetItem*>& items, bool visible);
bool canPreviewFile(bool isArchive, const QString& filename) const;
+ bool canOpenFile(bool isArchive, const QString& filename) const;
bool canHideFile(bool isArchive, const QString& filename) const;
bool canUnhideFile(bool isArchive, const QString& filename) const;
void showConflictMenu(const QPoint &pos, QTreeWidget* tree);
ConflictActions createConflictMenuActions(
- const QList<QTreeWidgetItem*> selection);
+ const QList<QTreeWidgetItem*>& selection);
+
+ std::vector<QAction*> createGotoActions(
+ const QList<QTreeWidgetItem*>& selection);
};
#endif // MODINFODIALOG_H