summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/modinfodialogfiletree.cpp42
-rw-r--r--src/settings.cpp12
-rw-r--r--src/settings.h7
-rw-r--r--src/settingsdialog.ui10
-rw-r--r--src/settingsdialoggeneral.cpp2
5 files changed, 62 insertions, 11 deletions
diff --git a/src/modinfodialogfiletree.cpp b/src/modinfodialogfiletree.cpp
index e94b0a4f..c79a5264 100644
--- a/src/modinfodialogfiletree.cpp
+++ b/src/modinfodialogfiletree.cpp
@@ -32,10 +32,6 @@ FileTreeTab::FileTreeTab(ModInfoDialogTabContext cx)
m_actions.hide = new QAction(tr("&Hide"), ui->filetree);
m_actions.unhide = new QAction(tr("&Unhide"), ui->filetree);
- auto bold = m_actions.open->font();
- bold.setBold(true);
- m_actions.open->setFont(bold);
-
connect(m_actions.newFolder, &QAction::triggered, [&]{ onCreateDirectory(); });
connect(m_actions.open, &QAction::triggered, [&]{ onOpen(); });
connect(m_actions.runHooked, &QAction::triggered, [&]{ onRunHooked(); });
@@ -152,10 +148,17 @@ void FileTreeTab::onOpen()
return;
}
- core().processRunner()
- .setFromFile(parentWidget(), m_fs->filePath(selection))
- .setWaitForCompletion()
- .run();
+ const auto path = m_fs->filePath(selection);
+ const auto tryPreview = core().settings().interface().doubleClicksOpenPreviews();
+
+ if (tryPreview && canPreviewFile(plugin(), false, path)) {
+ core().previewFile(parentWidget(), mod().name(), path);
+ } else {
+ core().processRunner()
+ .setFromFile(parentWidget(), path)
+ .setWaitForCompletion()
+ .run();
+ }
}
void FileTreeTab::onRunHooked()
@@ -408,7 +411,6 @@ void FileTreeTab::onContextMenu(const QPoint &pos)
// this is a multiple selection, don't show open or explore actions so users
// don't open a thousand files
enableNewFolder = true;
- enablePreview = true;
enableDelete = true;
if (selection.size() < max_scan_for_context_menu) {
@@ -446,6 +448,28 @@ void FileTreeTab::onContextMenu(const QPoint &pos)
menu.addAction(m_actions.preview);
m_actions.preview->setEnabled(enablePreview);
+ auto bold = m_actions.preview->font();
+ bold.setBold(true);
+ auto notBold = m_actions.preview->font();
+ notBold.setBold(false);
+
+ // preview is bold if the file is previewable and [the preview on double-click
+ // option is enabled or the file can't be opened]; open is bold if the file
+ // can be opened and cannot be previewed
+ if (enablePreview && core().settings().interface().doubleClicksOpenPreviews()) {
+ m_actions.open->setFont(notBold);
+ m_actions.preview->setFont(bold);
+ } else if (enableOpen) {
+ m_actions.open->setFont(bold);
+ m_actions.preview->setFont(notBold);
+ } else if (enablePreview) {
+ m_actions.open->setFont(notBold);
+ m_actions.preview->setFont(bold);
+ } else {
+ m_actions.open->setFont(notBold);
+ m_actions.preview->setFont(notBold);
+ }
+
menu.addAction(m_actions.explore);
m_actions.explore->setEnabled(enableExplore);
diff --git a/src/settings.cpp b/src/settings.cpp
index e1e5c2da..68dc19d9 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -1966,11 +1966,21 @@ bool InterfaceSettings::showChangeGameConfirmation() const
return get<bool>(m_Settings, "Settings", "show_change_game_confirmation", true);
}
-void InterfaceSettings::setShowChangeGameConfirmation(bool b) const
+void InterfaceSettings::setShowChangeGameConfirmation(bool b)
{
set(m_Settings, "Settings", "show_change_game_confirmation", b);
}
+bool InterfaceSettings::doubleClicksOpenPreviews() const
+{
+ return get<bool>(m_Settings, "Settings", "double_click_previews", false);
+}
+
+void InterfaceSettings::setDoubleClicksOpenPreviews(bool b)
+{
+ set(m_Settings, "Settings", "double_click_previews", b);
+}
+
DiagnosticsSettings::DiagnosticsSettings(QSettings& settings)
: m_Settings(settings)
diff --git a/src/settings.h b/src/settings.h
index 870e0fc4..0e5238b1 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -608,7 +608,12 @@ public:
// whether to show the confirmation when switching instances
//
bool showChangeGameConfirmation() const;
- void setShowChangeGameConfirmation(bool b) const;
+ void setShowChangeGameConfirmation(bool b);
+
+ // whether double-clicks on files should try to open previews first
+ //
+ bool doubleClicksOpenPreviews() const;
+ void setDoubleClicksOpenPreviews(bool b);
private:
QSettings& m_Settings;
diff --git a/src/settingsdialog.ui b/src/settingsdialog.ui
index bc59d635..8e175312 100644
--- a/src/settingsdialog.ui
+++ b/src/settingsdialog.ui
@@ -101,6 +101,9 @@
</item>
<item row="1" column="1" colspan="2">
<widget class="LinkLabel" name="label_33">
+ <property name="toolTip">
+ <string>https://www.transifex.com/tannin/mod-organizer/</string>
+ </property>
<property name="text">
<string>&lt;a href=&quot;https://www.transifex.com/tannin/mod-organizer/&quot;&gt;Help translate Mod Organizer&lt;/a&gt;</string>
</property>
@@ -133,6 +136,13 @@
</widget>
</item>
<item>
+ <widget class="QCheckBox" name="doubleClickPreviews">
+ <property name="text">
+ <string>Open previews on double-click</string>
+ </property>
+ </widget>
+ </item>
+ <item>
<widget class="QPushButton" name="resetDialogsButton">
<property name="maximumSize">
<size>
diff --git a/src/settingsdialoggeneral.cpp b/src/settingsdialoggeneral.cpp
index dca4410b..58871cee 100644
--- a/src/settingsdialoggeneral.cpp
+++ b/src/settingsdialoggeneral.cpp
@@ -21,6 +21,7 @@ GeneralSettingsTab::GeneralSettingsTab(Settings& s, SettingsDialog& d)
ui->centerDialogs->setChecked(settings().geometry().centerDialogs());
ui->changeGameConfirmation->setChecked(settings().interface().showChangeGameConfirmation());
+ ui->doubleClickPreviews->setChecked(settings().interface().doubleClicksOpenPreviews());
ui->compactBox->setChecked(settings().interface().compactDownloads());
ui->showMetaBox->setChecked(settings().interface().metaDownloads());
ui->checkForUpdates->setChecked(settings().checkForUpdates());
@@ -63,6 +64,7 @@ void GeneralSettingsTab::update()
settings().geometry().setCenterDialogs(ui->centerDialogs->isChecked());
settings().interface().setShowChangeGameConfirmation(ui->changeGameConfirmation->isChecked());
+ settings().interface().setDoubleClicksOpenPreviews(ui->doubleClickPreviews->isChecked());
settings().interface().setCompactDownloads(ui->compactBox->isChecked());
settings().interface().setMetaDownloads(ui->showMetaBox->isChecked());
settings().setCheckForUpdates(ui->checkForUpdates->isChecked());