summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mainwindow.cpp53
-rw-r--r--src/mainwindow.h9
-rw-r--r--src/organizercore.cpp8
3 files changed, 22 insertions, 48 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index e01f984a..3af7079f 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -3654,12 +3654,7 @@ void MainWindow::addRemoveCategoriesFromMenu(QMenu *menu, int modRow, int refere
}
}
-void MainWindow::addRemoveCategories_MenuHandler(int modIndex, const QModelIndex& rowIdx) {
- QMenu *menu = qobject_cast<QMenu*>(sender());
- if (menu == nullptr) {
- log::error("not a menu?");
- return;
- }
+void MainWindow::addRemoveCategories_MenuHandler(QMenu* menu, int modIndex, const QModelIndex& rowIdx) {
QList<QPersistentModelIndex> selected;
for (const QModelIndex &idx : ui->modList->selectionModel()->selectedRows()) {
@@ -3695,13 +3690,8 @@ void MainWindow::addRemoveCategories_MenuHandler(int modIndex, const QModelIndex
refreshFilters();
}
-void MainWindow::replaceCategories_MenuHandler(int modIndex) {
- QMenu *menu = qobject_cast<QMenu*>(sender());
- if (menu == nullptr) {
- log::error("not a menu?");
- return;
- }
-
+void MainWindow::replaceCategories_MenuHandler(QMenu* menu, int modIndex)
+{
QList<QPersistentModelIndex> selected;
for (const QModelIndex &idx : ui->modList->selectionModel()->selectedRows()) {
selected.append(QPersistentModelIndex(idx));
@@ -3879,8 +3869,10 @@ void MainWindow::unignoreUpdate(int modIndex)
}
}
-void MainWindow::addPrimaryCategoryCandidates(QMenu *primaryCategoryMenu,
- ModInfo::Ptr info) {
+void MainWindow::setPrimaryCategoryCandidates(QMenu *primaryCategoryMenu,
+ ModInfo::Ptr info)
+{
+ primaryCategoryMenu->clear();
const std::set<int> &categories = info->getCategories();
for (int categoryID : categories) {
int catIdx = m_CategoryFactory.getCategoryIndex(categoryID);
@@ -3905,19 +3897,6 @@ void MainWindow::addPrimaryCategoryCandidates(QMenu *primaryCategoryMenu,
}
}
-void MainWindow::addPrimaryCategoryCandidates(int modIndex)
-{
- QMenu *menu = qobject_cast<QMenu*>(sender());
- if (menu == nullptr) {
- log::error("not a menu?");
- return;
- }
- menu->clear();
- ModInfo::Ptr modInfo = ModInfo::getByIndex(modIndex);
-
- addPrimaryCategoryCandidates(menu, modInfo);
-}
-
void MainWindow::enableVisibleMods()
{
if (QMessageBox::question(nullptr, tr("Confirm"), tr("Really enable all visible mods?"),
@@ -4292,10 +4271,10 @@ void MainWindow::on_modList_customContextMenuRequested(const QPoint &pos)
ModInfo::Ptr info = ModInfo::getByIndex(modIndex);
std::vector<ModInfo::EFlag> flags = info->getFlags();
- // Context menu for overwrites
+ // context menu for overwrites
if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_OVERWRITE) != flags.end()) {
if (QDir(info->absolutePath()).count() > 2) {
- menu.addAction(tr("Sync to Mods..."), &m_OrganizerCore, SLOT(syncOverwrite()));
+ menu.addAction(tr("Sync to Mods..."), [=]() { m_OrganizerCore.syncOverwrite(); });
menu.addAction(tr("Create Mod..."), [=]() { createModFromOverwrite(); });
menu.addAction(tr("Move content to Mod..."), [=]() { moveOverwriteContentToExistingMod(); });
menu.addAction(tr("Clear Overwrite..."), [=]() { clearOverwrite(); });
@@ -4303,7 +4282,7 @@ void MainWindow::on_modList_customContextMenuRequested(const QPoint &pos)
menu.addAction(tr("Open in Explorer"), [=]() { openExplorer_clicked(modIndex); });
}
- // Context menu for mod backups
+ // context menu for mod backups
else if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_BACKUP) != flags.end()) {
menu.addAction(tr("Restore Backup"), [=]() { restoreBackup_clicked(modIndex); });
menu.addAction(tr("Remove Backup..."), [=]() { removeMod_clicked(modIndex); });
@@ -4332,10 +4311,10 @@ void MainWindow::on_modList_customContextMenuRequested(const QPoint &pos)
menu.addSeparator();
QMenu *addRemoveCategoriesMenu = new QMenu(tr("Change Categories"), &menu);
populateMenuCategories(modIndex, addRemoveCategoriesMenu, 0);
- connect(addRemoveCategoriesMenu, &QMenu::aboutToHide, [=]() { addRemoveCategories_MenuHandler(modIndex, contextIdx); });
+ connect(addRemoveCategoriesMenu, &QMenu::aboutToHide, [=]() { addRemoveCategories_MenuHandler(addRemoveCategoriesMenu, modIndex, contextIdx); });
addMenuAsPushButton(&menu, addRemoveCategoriesMenu);
QMenu *primaryCategoryMenu = new QMenu(tr("Primary Category"), &menu);
- connect(primaryCategoryMenu, &QMenu::aboutToShow, [=]() { addPrimaryCategoryCandidates(modIndex); });
+ connect(primaryCategoryMenu, &QMenu::aboutToShow, [=]() { setPrimaryCategoryCandidates(primaryCategoryMenu, info); });
addMenuAsPushButton(&menu, primaryCategoryMenu);
menu.addSeparator();
menu.addAction(tr("Rename Separator..."), [=]() { renameMod_clicked(); });
@@ -4350,17 +4329,21 @@ void MainWindow::on_modList_customContextMenuRequested(const QPoint &pos)
menu.addSeparator();
}
+
+ // foregin
else if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_FOREIGN) != flags.end()) {
addModSendToContextMenu(&menu);
}
+
+ // regular
else {
QMenu* addRemoveCategoriesMenu = new QMenu(tr("Change Categories"), &menu);
populateMenuCategories(modIndex, addRemoveCategoriesMenu, 0);
- connect(addRemoveCategoriesMenu, &QMenu::aboutToHide, [=]() { addRemoveCategories_MenuHandler(modIndex, contextIdx); });
+ connect(addRemoveCategoriesMenu, &QMenu::aboutToHide, [=]() { addRemoveCategories_MenuHandler(addRemoveCategoriesMenu, modIndex, contextIdx); });
addMenuAsPushButton(&menu, addRemoveCategoriesMenu);
QMenu* primaryCategoryMenu = new QMenu(tr("Primary Category"), &menu);
- connect(primaryCategoryMenu, &QMenu::aboutToShow, [=]() { addPrimaryCategoryCandidates(modIndex); });
+ connect(primaryCategoryMenu, &QMenu::aboutToShow, [=]() { setPrimaryCategoryCandidates(primaryCategoryMenu, info); });
addMenuAsPushButton(&menu, primaryCategoryMenu);
menu.addSeparator();
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 97bca68b..9e9e9591 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -129,8 +129,6 @@ public:
void saveArchiveList();
- void addPrimaryCategoryCandidates(QMenu *primaryCategoryMenu, ModInfo::Ptr info);
-
void installTranslator(const QString &name);
void displayModInformation(
@@ -434,10 +432,9 @@ private slots:
void originModified(int originID);
- void addRemoveCategories_MenuHandler(int modIndex, const QModelIndex& rowIdx);
- void replaceCategories_MenuHandler(int modIndex);
-
- void addPrimaryCategoryCandidates(int modIndex);
+ void setPrimaryCategoryCandidates(QMenu* menu, ModInfo::Ptr info);
+ void addRemoveCategories_MenuHandler(QMenu* menu, int modIndex, const QModelIndex& rowIdx);
+ void replaceCategories_MenuHandler(QMenu* menu, int modIndex);
void modInstalled(const QString &modName);
diff --git a/src/organizercore.cpp b/src/organizercore.cpp
index 9e3528ef..1a6083b4 100644
--- a/src/organizercore.cpp
+++ b/src/organizercore.cpp
@@ -1785,13 +1785,7 @@ void OrganizerCore::loginFailedUpdate(const QString &message)
void OrganizerCore::syncOverwrite()
{
- unsigned int overwriteIndex = ModInfo::findMod([](ModInfo::Ptr mod) -> bool {
- std::vector<ModInfo::EFlag> flags = mod->getFlags();
- return std::find(flags.begin(), flags.end(), ModInfo::FLAG_OVERWRITE)
- != flags.end();
- });
-
- ModInfo::Ptr modInfo = ModInfo::getByIndex(overwriteIndex);
+ ModInfo::Ptr modInfo = ModInfo::getOverwrite();
SyncOverwriteDialog syncDialog(modInfo->absolutePath(), m_DirectoryStructure,
qApp->activeWindow());
if (syncDialog.exec() == QDialog::Accepted) {