summaryrefslogtreecommitdiff
path: root/src/modinfodialogconflicts.h
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-06-21 21:24:44 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-07-02 10:10:17 -0400
commitb5c47eb161f6e20c9275909d32202e52bf3ba4a3 (patch)
tree2302dd63d506068ad5d6a78102270b2ef11dbe39 /src/modinfodialogconflicts.h
parentc98115e2f6f59b807382c41256d7f1a86009aa40 (diff)
pass parent widget to tabs for dialogs
finished moving over conflict tab to its own set of files
Diffstat (limited to 'src/modinfodialogconflicts.h')
-rw-r--r--src/modinfodialogconflicts.h80
1 files changed, 73 insertions, 7 deletions
diff --git a/src/modinfodialogconflicts.h b/src/modinfodialogconflicts.h
index 894f9dd4..5843884a 100644
--- a/src/modinfodialogconflicts.h
+++ b/src/modinfodialogconflicts.h
@@ -4,23 +4,33 @@
#include "modinfodialog.h"
#include "expanderwidget.h"
-class GeneralConflictsTab
+class ConflictsTab;
+
+class GeneralConflictsTab : public QObject
{
+ Q_OBJECT;
+
public:
- GeneralConflictsTab(Ui::ModInfoDialog* ui, OrganizerCore& oc);
+ GeneralConflictsTab(
+ ConflictsTab* tab, Ui::ModInfoDialog* ui, OrganizerCore& oc);
+ void clear();
void saveState(Settings& s);
void restoreState(const Settings& s);
- void rebuild(ModInfo::Ptr mod, MOShared::FilesOrigin* origin);
+ void setMod(ModInfo::Ptr mod, MOShared::FilesOrigin* origin);
void update();
+signals:
+ void modOpen(QString name);
+
private:
struct Expanders
{
ExpanderWidget overwrite, overwritten, nonconflict;
};
+ ConflictsTab* m_tab;
Ui::ModInfoDialog* ui;
OrganizerCore& m_core;
ModInfo::Ptr m_mod;
@@ -41,21 +51,34 @@ private:
const QString& fileName, const QString& relativeName);
void onOverwriteActivated(QTreeWidgetItem* item, int);
+ void onOverwrittenActivated(QTreeWidgetItem *item, int);
+
+ void onOverwriteTreeContext(const QPoint &pos);
+ void onOverwrittenTreeContext(const QPoint &pos);
+ void onNoConflictTreeContext(const QPoint &pos);
};
-class AdvancedConflictsTab
+class AdvancedConflictsTab : public QObject
{
+ Q_OBJECT;
+
public:
- AdvancedConflictsTab(Ui::ModInfoDialog* ui, OrganizerCore& oc);
+ AdvancedConflictsTab(
+ ConflictsTab* tab, Ui::ModInfoDialog* ui, OrganizerCore& oc);
+ void clear();
void saveState(Settings& s);
void restoreState(const Settings& s);
- void rebuild(ModInfo::Ptr mod, MOShared::FilesOrigin* origin);
+ void setMod(ModInfo::Ptr mod, MOShared::FilesOrigin* origin);
void update();
+signals:
+ void modOpen(QString name);
+
private:
+ ConflictsTab* m_tab;
Ui::ModInfoDialog* ui;
OrganizerCore& m_core;
ModInfo::Ptr m_mod;
@@ -71,16 +94,59 @@ private:
class ConflictsTab : public ModInfoDialogTab
{
+ Q_OBJECT;
+
public:
- ConflictsTab(Ui::ModInfoDialog* ui, OrganizerCore& oc);
+ ConflictsTab(
+ QWidget* parent, Ui::ModInfoDialog* ui,
+ OrganizerCore& oc, PluginContainer& plugin);
+
+ void setMod(ModInfo::Ptr mod, MOShared::FilesOrigin* origin) override;
+ void update() override;
+ void clear() override;
+ bool feedFile(const QString& rootPath, const QString& filename) override;
void saveState(Settings& s) override;
void restoreState(const Settings& s) override;
+ void openItems(const QList<QTreeWidgetItem*>& items);
+ void previewItems(const QList<QTreeWidgetItem*>& items);
+
+ void changeItemsVisibility(
+ const QList<QTreeWidgetItem*>& items, bool visible);
+
+ void showContextMenu(const QPoint &pos, QTreeWidget* tree);
+
private:
+ struct Actions
+ {
+ QAction* hide;
+ QAction* unhide;
+ QAction* open;
+ QAction* preview;
+ QMenu* gotoMenu;
+ std::vector<QAction*> gotoActions;
+
+ Actions() :
+ hide(nullptr), unhide(nullptr), open(nullptr), preview(nullptr),
+ gotoMenu(nullptr)
+ {
+ }
+ };
+
+ QWidget* m_parent;
Ui::ModInfoDialog* ui;
+ OrganizerCore& m_core;
+ PluginContainer& m_plugin;
+ ModInfo::Ptr m_mod;
+ MOShared::FilesOrigin* m_origin;
GeneralConflictsTab m_general;
AdvancedConflictsTab m_advanced;
+
+ Actions createMenuActions(const QList<QTreeWidgetItem*>& selection);
+
+ std::vector<QAction*> createGotoActions(
+ const QList<QTreeWidgetItem*>& selection);
};
#endif // MODINFODIALOGCONFLICTS_H