summaryrefslogtreecommitdiff
path: root/src/modinfodialog.cpp
diff options
context:
space:
mode:
authorMikaƫl Capelle <capelle.mikael@gmail.com>2021-01-10 10:25:37 +0100
committerGitHub <noreply@github.com>2021-01-10 10:25:37 +0100
commit80e44a9e3ade61695b4807a3a900d2866138ecac (patch)
tree1ef9904664d8d34dba6692bbf5325aea8c199d08 /src/modinfodialog.cpp
parenteaec140f7c823012c09536175d8917dddcacdb7c (diff)
parent4a0ce804ea486744e5f6140a0ce4538d99e21ce3 (diff)
Merge pull request #1338 from Holt59/collapsible-separators
Collapsible separators (and refactoring).
Diffstat (limited to 'src/modinfodialog.cpp')
-rw-r--r--src/modinfodialog.cpp63
1 files changed, 42 insertions, 21 deletions
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp
index cc50d446..f50d7024 100644
--- a/src/modinfodialog.cpp
+++ b/src/modinfodialog.cpp
@@ -21,7 +21,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include "ui_modinfodialog.h"
#include "plugincontainer.h"
#include "organizercore.h"
-#include "mainwindow.h"
+#include "modlistview.h"
#include "modinfodialogtextfiles.h"
#include "modinfodialogimages.h"
#include "modinfodialogesps.h"
@@ -174,19 +174,31 @@ bool ModInfoDialog::TabInfo::isVisible() const
return (realPos != -1);
}
-
ModInfoDialog::ModInfoDialog(
- MainWindow* mw, OrganizerCore* core, PluginContainer* plugin,
- ModInfo::Ptr mod) :
- TutorableDialog("ModInfoDialog", mw),
- ui(new Ui::ModInfoDialog), m_mainWindow(mw),
- m_core(core), m_plugin(plugin), m_initialTab(ModInfoTabIDs::None),
+ OrganizerCore& core, PluginContainer& plugin,
+ ModInfo::Ptr mod, ModListView* modListView, QWidget *parent) :
+ TutorableDialog("ModInfoDialog", parent),
+ ui(new Ui::ModInfoDialog),
+ m_core(core),
+ m_plugin(plugin),
+ m_modListView(modListView),
+ m_initialTab(ModInfoTabIDs::None),
m_arrangingTabs(false)
{
ui->setupUi(this);
- auto* sc = new QShortcut(QKeySequence::Delete, this);
- connect(sc, &QShortcut::activated, [&]{ onDeleteShortcut(); });
+ {
+ auto* sc = new QShortcut(QKeySequence::Delete, this);
+ connect(sc, &QShortcut::activated, [&] { onDeleteShortcut(); });
+ }
+ {
+ auto* sc = new QShortcut(QKeySequence::MoveToNextPage, this);
+ connect(sc, &QShortcut::activated, [&] { onNextMod(); });
+ }
+ {
+ auto* sc = new QShortcut(QKeySequence::MoveToPreviousPage, this);
+ connect(sc, &QShortcut::activated, [&] { onPreviousMod(); });
+ }
setMod(mod);
createTabs();
@@ -204,7 +216,7 @@ template <class T>
std::unique_ptr<ModInfoDialogTab> createTab(ModInfoDialog& d, ModInfoTabIDs id)
{
return std::make_unique<T>(ModInfoDialogTabContext(
- *d.m_core, *d.m_plugin, &d, d.ui.get(), id, d.m_mod, d.getOrigin()));
+ d.m_core, d.m_plugin, &d, d.ui.get(), id, d.m_mod, d.getOrigin()));
}
void ModInfoDialog::createTabs()
@@ -269,7 +281,7 @@ int ModInfoDialog::exec()
update(true);
if (noCustomTabRequested) {
- m_core->settings().widgets().restoreIndex(ui->tabWidget);
+ m_core.settings().widgets().restoreIndex(ui->tabWidget);
}
const int r = TutorableDialog::exec();
@@ -430,7 +442,7 @@ void ModInfoDialog::reAddTabs(
Q_ASSERT(visibility.size() == m_tabs.size());
// ordered tab names from settings
- const auto orderedNames = m_core->settings().geometry().modInfoTabOrder();
+ const auto orderedNames = m_core.settings().geometry().modInfoTabOrder();
// whether the tabs can be sorted
//
@@ -586,7 +598,7 @@ void ModInfoDialog::feedFiles(std::vector<TabInfo*>& interestedTabs)
void ModInfoDialog::setTabsColors()
{
- const auto p = m_mainWindow->palette();
+ const auto p = m_modListView->parentWidget()->palette();
for (const auto& tabInfo : m_tabs) {
if (!tabInfo.isVisible()) {
@@ -619,7 +631,7 @@ void ModInfoDialog::switchToTab(ModInfoTabIDs id)
MOShared::FilesOrigin* ModInfoDialog::getOrigin()
{
- auto* ds = m_core->directoryStructure();
+ auto* ds = m_core.directoryStructure();
if (!ds->originExists(m_mod->name().toStdWString())) {
return nullptr;
@@ -639,7 +651,7 @@ void ModInfoDialog::saveState() const
// save state for each tab
for (const auto& tabInfo : m_tabs) {
- tabInfo.tab->saveState(m_core->settings());
+ tabInfo.tab->saveState(m_core.settings());
}
}
@@ -650,7 +662,7 @@ void ModInfoDialog::restoreState()
// restore state for each tab
for (const auto& tabInfo : m_tabs) {
- tabInfo.tab->restoreState(m_core->settings());
+ tabInfo.tab->restoreState(m_core.settings());
}
}
@@ -678,9 +690,9 @@ void ModInfoDialog::saveTabOrder() const
names += ui->tabWidget->widget(i)->objectName();
}
- m_core->settings().geometry().setModInfoTabOrder(names);
+ m_core.settings().geometry().setModInfoTabOrder(names);
// save last opened index
- m_core->settings().widgets().saveIndex(ui->tabWidget);
+ m_core.settings().widgets().saveIndex(ui->tabWidget);
}
void ModInfoDialog::onOriginModified(int originID)
@@ -776,22 +788,31 @@ void ModInfoDialog::onTabMoved()
void ModInfoDialog::onNextMod()
{
- auto mod = m_mainWindow->nextModInList();
+ auto index = m_modListView->nextMod(ModInfo::getIndex(m_mod->name()));
+ if (!index) {
+ return;
+ }
+ auto mod = ModInfo::getByIndex(*index);
if (!mod || mod == m_mod) {
return;
}
setMod(mod);
update();
+
+ emit modChanged(*index);
}
void ModInfoDialog::onPreviousMod()
{
- auto mod = m_mainWindow->previousModInList();
- if (!mod || mod == m_mod) {
+ auto index = m_modListView->prevMod(ModInfo::getIndex(m_mod->name()));
+ if (!index) {
return;
}
+ auto mod = ModInfo::getByIndex(*index);
setMod(mod);
update();
+
+ emit modChanged(*index);
}