summaryrefslogtreecommitdiff
path: root/src/modinfodialog.cpp
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2020-12-31 12:34:17 +0100
committerMikaël Capelle <capelle.mikael@gmail.com>2021-01-02 15:38:17 +0100
commita105e4c8c881ac720c41ef342769adee14caca47 (patch)
tree7556c6f01803e8379153eb1a07659e7839f8d7cb /src/modinfodialog.cpp
parentfcf0aff98b43c9cb3b64c01cd03693e55f82fba7 (diff)
Move more stuff from MainWindow. Minor improvements for prev/next button in ModInfoDialog.
Diffstat (limited to 'src/modinfodialog.cpp')
-rw-r--r--src/modinfodialog.cpp48
1 files changed, 30 insertions, 18 deletions
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp
index cb282195..54c97406 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"
@@ -176,11 +176,14 @@ bool ModInfoDialog::TabInfo::isVisible() const
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) :
+ TutorableDialog("ModInfoDialog", modListView),
+ ui(new Ui::ModInfoDialog),
+ m_core(core),
+ m_plugin(plugin),
+ m_modListView(modListView),
+ m_initialTab(ModInfoTabIDs::None),
m_arrangingTabs(false)
{
ui->setupUi(this);
@@ -204,7 +207,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 +272,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 +433,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 +589,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 +622,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 +642,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 +653,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 +681,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 +779,31 @@ void ModInfoDialog::onTabMoved()
void ModInfoDialog::onNextMod()
{
- auto mod = m_mainWindow->nextModInList(ModInfo::getIndex(m_mod->name()));
+ 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(ModInfo::getIndex(m_mod->name()));
- 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);
}