summaryrefslogtreecommitdiff
path: root/src/modinfodialogconflicts.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-06-27 11:30:46 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-07-02 10:10:19 -0400
commita818954ee5d02b8723f5b48f458a0c76f9ba1935 (patch)
tree86a892d029f463827f67f1d5a59061ade895aa86 /src/modinfodialogconflicts.cpp
parent4b958d9efed3834ceaa57f6c50a1e8288eff01b0 (diff)
added explore menu item to conflict lists and filetree
changed filetree context menu to always show all items added mnemonics to conflicts context menu
Diffstat (limited to 'src/modinfodialogconflicts.cpp')
-rw-r--r--src/modinfodialogconflicts.cpp43
1 files changed, 38 insertions, 5 deletions
diff --git a/src/modinfodialogconflicts.cpp b/src/modinfodialogconflicts.cpp
index e631db30..a3383a50 100644
--- a/src/modinfodialogconflicts.cpp
+++ b/src/modinfodialogconflicts.cpp
@@ -7,6 +7,7 @@
using namespace MOShared;
using namespace MOBase;
+namespace shell = MOBase::shell;
// if there are more than 50 selected items in the conflict tree, don't bother
// checking whether menu items apply to them, just show all of them
@@ -91,6 +92,11 @@ public:
return canPreviewFile(pluginContainer, isArchive(), fileName());
}
+ bool canExplore() const
+ {
+ return canExploreFile(isArchive(), fileName());
+ }
+
private:
QString m_before;
QString m_relativeName;
@@ -533,6 +539,16 @@ void ConflictsTab::previewItems(QTreeView* tree)
});
}
+void ConflictsTab::exploreItems(QTreeView* tree)
+{
+ // the menu item is only shown for a single selection, but handle all of them
+ // in case this changes
+ for_each_in_selection(tree, [&](const ConflictItem* item) {
+ shell::ExploreFile(item->fileName());
+ return true;
+ });
+}
+
void ConflictsTab::showContextMenu(const QPoint &pos, QTreeView* tree)
{
auto actions = createMenuActions(tree);
@@ -557,6 +573,15 @@ void ConflictsTab::showContextMenu(const QPoint &pos, QTreeView* tree)
menu.addAction(actions.preview);
}
+ // explore
+ if (actions.explore) {
+ connect(actions.explore, &QAction::triggered, [&]{
+ exploreItems(tree);
+ });
+
+ menu.addAction(actions.explore);
+ }
+
// hide
if (actions.hide) {
connect(actions.hide, &QAction::triggered, [&]{
@@ -603,6 +628,7 @@ ConflictsTab::Actions ConflictsTab::createMenuActions(QTreeView* tree)
bool enableUnhide = true;
bool enableOpen = true;
bool enablePreview = true;
+ bool enableExplore = true;
bool enableGoto = true;
const auto n = smallSelectionSize(tree);
@@ -626,6 +652,7 @@ ConflictsTab::Actions ConflictsTab::createMenuActions(QTreeView* tree)
enableUnhide = item->canUnhide();
enableOpen = item->canOpen();
enablePreview = item->canPreview(plugin());
+ enableExplore = item->canExplore();
enableGoto = item->hasAlts();
}
else {
@@ -634,6 +661,9 @@ ConflictsTab::Actions ConflictsTab::createMenuActions(QTreeView* tree)
enableOpen = false;
enablePreview = false;
+ // can't explore multiple files
+ enableExplore = false;
+
// don't bother with this on multiple selection, at least for now
enableGoto = false;
@@ -664,21 +694,24 @@ ConflictsTab::Actions ConflictsTab::createMenuActions(QTreeView* tree)
Actions actions;
- actions.hide = new QAction(tr("Hide"), parentWidget());
+ actions.hide = new QAction(tr("&Hide"), parentWidget());
actions.hide->setEnabled(enableHide);
// note that it is possible for hidden files to appear if they override other
// hidden files from another mod
- actions.unhide = new QAction(tr("Unhide"), parentWidget());
+ actions.unhide = new QAction(tr("&Unhide"), parentWidget());
actions.unhide->setEnabled(enableUnhide);
- actions.open = new QAction(tr("Open/Execute"), parentWidget());
+ actions.open = new QAction(tr("&Open/Execute"), parentWidget());
actions.open->setEnabled(enableOpen);
- actions.preview = new QAction(tr("Preview"), parentWidget());
+ actions.preview = new QAction(tr("&Preview"), parentWidget());
actions.preview->setEnabled(enablePreview);
- actions.gotoMenu = new QMenu(tr("Go to..."), parentWidget());
+ actions.explore = new QAction(tr("Open in &Explorer"), parentWidget());
+ actions.explore->setEnabled(enableExplore);
+
+ actions.gotoMenu = new QMenu(tr("&Go to..."), parentWidget());
actions.gotoMenu->setEnabled(enableGoto);
if (enableGoto && n == 1) {