diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2019-12-04 12:42:15 -0500 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2019-12-04 13:23:02 -0500 |
| commit | a0fa896e68856ec5204e7f74db775bdb3595010a (patch) | |
| tree | 424496627105af026cb845068c21358f27fbb2e3 /src | |
| parent | b209a8e47f866a129c53cef43539e96ab8722405 (diff) | |
added open previews on double-click option
implemented for filetree
Diffstat (limited to 'src')
| -rw-r--r-- | src/modinfodialogfiletree.cpp | 42 | ||||
| -rw-r--r-- | src/settings.cpp | 12 | ||||
| -rw-r--r-- | src/settings.h | 7 | ||||
| -rw-r--r-- | src/settingsdialog.ui | 10 | ||||
| -rw-r--r-- | src/settingsdialoggeneral.cpp | 2 |
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><a href="https://www.transifex.com/tannin/mod-organizer/">Help translate Mod Organizer</a></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()); |
