aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Chris Xiong <chirs241097@gmail.com> 2022-10-01 18:49:43 -0400
committerGravatar Chris Xiong <chirs241097@gmail.com> 2022-10-01 18:49:43 -0400
commit3afafef65bff7fc6ecb02c88bc20657e1bdc2fe4 (patch)
tree227aee45075dafb3120f644e28d85dfef0136d29
parent69455a743a21b0c1f07f2e828c642b1a413fac72 (diff)
downloaddeduper-3afafef65bff7fc6ecb02c88bc20657e1bdc2fe4.tar.xz
Restore item shortcuts.
-rw-r--r--qdeduper/mingui.cpp75
1 files changed, 43 insertions, 32 deletions
diff --git a/qdeduper/mingui.cpp b/qdeduper/mingui.cpp
index 5c320b8..caf0249 100644
--- a/qdeduper/mingui.cpp
+++ b/qdeduper/mingui.cpp
@@ -150,6 +150,29 @@ DeduperMainWindow::DeduperMainWindow()
QObject::connect(rampupd, &QTimer::timeout, this, &DeduperMainWindow::update_memusg);
this->setup_menu();
this->update_actions();
+ for (size_t i = 0; i < iadefkeys.size(); ++i)
+ {
+ QAction *ma = new QAction();
+ QObject::connect(ma, &QAction::triggered, std::bind(&DeduperMainWindow::mark_toggle, this, i));
+ selhk.push_back(ma);
+
+ QAction *sa = new QAction();
+ QObject::connect(sa, &QAction::triggered, std::bind(&DeduperMainWindow::mark_all_but, this, i));
+ selhk.push_back(sa);
+
+ QAction *ca = new QAction();
+ QObject::connect(ca, &QAction::triggered, std::bind(&DeduperMainWindow::show_only, this, i));
+ selhk.push_back(ca);
+
+ QAction *oa = new QAction();
+ QObject::connect(oa, &QAction::triggered, std::bind(&DeduperMainWindow::open_image, this, i));
+ selhk.push_back(oa);
+
+ QAction *la = new QAction();
+ QObject::connect(la, &QAction::triggered, std::bind(&DeduperMainWindow::locate_image, this, i));
+ selhk.push_back(la);
+ }
+ this->addActions(selhk);
sr = new SettingsRegistry(QStandardPaths::writableLocation(QStandardPaths::StandardLocation::ConfigLocation) + QString("/qdeduperrc"));
int generalt = sr->register_tab("General");
@@ -165,10 +188,15 @@ DeduperMainWindow::DeduperMainWindow()
std::string hkn = hkp.first.substr(3);
sr->register_keyseq_option(hkt, "hotkey/" + hkn, QString(), hkp.second);
}
- for (int i = 0; i < ItemActionType::ACTION_MAX; ++i)
+ for (size_t i = 0; i < iadefmo.size(); ++i)
+ {
+ std::string iamt = "hotkey/item_action_mod_" + std::to_string(i);
+ sr->register_int_option(hkt, iamt, QString(), INT_MIN, INT_MAX, iadefmo[i]);
+ }
+ for (size_t i = 0; i < iadefkeys.size(); ++i)
{
- std::string iakt = "hotkey/item_action_mod_" + std::to_string(i);
- sr->register_int_option(hkt, iakt, QString(), INT_MIN, INT_MAX, 0);
+ std::string iakt = "hotkey/item_" + std::to_string(i) + "_action_key";
+ sr->register_int_option(hkt, iakt, QString(), INT_MIN, INT_MAX, iadefkeys[i]);
}
prefdlg = new PreferenceDialog(sr, this);
prefdlg->setModal(true);
@@ -178,30 +206,6 @@ DeduperMainWindow::DeduperMainWindow()
QObject::connect(prefdlg, &PreferenceDialog::accepted, this, &DeduperMainWindow::apply_prefs);
apply_prefs();
- for (size_t i = 0; i < iadefkeys.size(); ++i)
- {
- QAction *ma = new QAction();
- QObject::connect(ma, &QAction::triggered, std::bind(&DeduperMainWindow::mark_toggle, this, i));
- selhk.push_back(ma);
-
- QAction *sa = new QAction();
- QObject::connect(sa, &QAction::triggered, std::bind(&DeduperMainWindow::mark_all_but, this, i));
- selhk.push_back(sa);
-
- QAction *ca = new QAction();
- QObject::connect(ca, &QAction::triggered, std::bind(&DeduperMainWindow::show_only, this, i));
- selhk.push_back(ca);
-
- QAction *oa = new QAction();
- QObject::connect(oa, &QAction::triggered, std::bind(&DeduperMainWindow::open_image, this, i));
- selhk.push_back(oa);
-
- QAction *la = new QAction();
- QObject::connect(la, &QAction::triggered, std::bind(&DeduperMainWindow::locate_image, this, i));
- selhk.push_back(la);
- }
- this->addActions(selhk);
-
QObject::connect(lv, &QListView::clicked, [this](const QModelIndex &i) {
auto cs = i.data(Qt::ItemDataRole::CheckStateRole).value<Qt::CheckState>();
if (cs == Qt::CheckState::Checked)
@@ -497,23 +501,18 @@ void DeduperMainWindow::setup_menu()
QMenu *cm = new QMenu(this);
QAction *ma = cm->addAction(cks == Qt::CheckState::Checked ? "Unmark" : "Mark");
QObject::connect(ma, &QAction::triggered, std::bind(&DeduperMainWindow::mark_toggle, this, idx.row()));
- selhk.push_back(ma);
QAction *sa = cm->addAction("Mark All Except");
QObject::connect(sa, &QAction::triggered, std::bind(&DeduperMainWindow::mark_all_but, this, idx.row()));
- selhk.push_back(sa);
QAction *ca = cm->addAction(id->is_single_item_mode() ? "Restore" : "Maximize");
QObject::connect(ca, &QAction::triggered, std::bind(&DeduperMainWindow::show_only, this, idx.row()));
- selhk.push_back(ca);
QAction *oa = cm->addAction("Open Image");
QObject::connect(oa, &QAction::triggered, std::bind(&DeduperMainWindow::open_image, this, idx.row()));
- selhk.push_back(oa);
QAction *la = cm->addAction("Open Containing Folder");
QObject::connect(la, &QAction::triggered, std::bind(&DeduperMainWindow::locate_image, this, idx.row()));
- selhk.push_back(la);
QObject::connect(cm, &QMenu::aboutToHide, [cm] {cm->deleteLater();});
cm->popup(this->lv->mapToGlobal(pos));
@@ -823,6 +822,18 @@ void DeduperMainWindow::apply_prefs()
QKeySequence ks = sr->get_option_keyseq("hotkey/" + hkn);
menuact[hkn]->setShortcut(ks);
}
+ for (size_t i = 0; i < selhk.size(); ++i)
+ {
+ QAction *act = selhk[i];
+ size_t actn = i / ItemActionType::ACTION_MAX;
+ size_t actt = i % ItemActionType::ACTION_MAX;
+ std::string iamt = "hotkey/item_action_mod_" + std::to_string(actt);
+ std::string iakt = "hotkey/item_" + std::to_string(actn) + "_action_key";
+ int ik = sr->get_option_int(iakt);
+ int im = sr->get_option_int(iamt);
+ QKeySequence ks = QKeySequence(static_cast<Qt::Key>(ik | im));
+ act->setShortcut(ks);
+ }
}
void DeduperMainWindow::update_memusg()