From 949e451379d63fe4c6bff82a7a059c6792fbebb5 Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Sun, 23 Jun 2019 06:48:35 -0400
Subject: added missing icons now passing tab index to allow enabling/disabling
depending on mod type modinfodialog cleanup
---
src/modinfodialog.cpp | 173 +++++++++++----------------------
src/modinfodialog.h | 48 +++------
src/modinfodialog.ui | 5 +-
src/modinfodialogcategories.cpp | 9 +-
src/modinfodialogcategories.h | 3 +-
src/modinfodialogconflicts.cpp | 11 ++-
src/modinfodialogconflicts.h | 4 +-
src/modinfodialogesps.cpp | 4 +-
src/modinfodialogesps.h | 2 +-
src/modinfodialogfiletree.cpp | 4 +-
src/modinfodialogfiletree.h | 2 +-
src/modinfodialogimages.cpp | 5 +-
src/modinfodialogimages.h | 2 +-
src/modinfodialognexus.cpp | 4 +-
src/modinfodialognexus.h | 2 +-
src/modinfodialogtab.cpp | 29 +++++-
src/modinfodialogtab.h | 11 ++-
src/modinfodialogtextfiles.cpp | 12 +--
src/modinfodialogtextfiles.h | 6 +-
src/resources.qrc | 210 ++++++++++++++++++++--------------------
20 files changed, 258 insertions(+), 288 deletions(-)
(limited to 'src')
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp
index 71e514b2..be7d4aa4 100644
--- a/src/modinfodialog.cpp
+++ b/src/modinfodialog.cpp
@@ -19,24 +19,8 @@ along with Mod Organizer. If not, see .
#include "modinfodialog.h"
#include "ui_modinfodialog.h"
-#include "mainwindow.h"
-
-#include "modidlineedit.h"
-#include "iplugingame.h"
-#include "nexusinterface.h"
-#include "report.h"
-#include "utility.h"
-#include "messagedialog.h"
-#include "bbcode.h"
-#include "questionboxmemory.h"
-#include "settings.h"
-#include "categories.h"
+#include "plugincontainer.h"
#include "organizercore.h"
-#include "pluginlistsortproxy.h"
-#include "previewgenerator.h"
-#include "previewdialog.h"
-#include "texteditor.h"
-
#include "modinfodialogtextfiles.h"
#include "modinfodialogimages.h"
#include "modinfodialogesps.h"
@@ -45,23 +29,6 @@ along with Mod Organizer. If not, see .
#include "modinfodialognexus.h"
#include "modinfodialogfiletree.h"
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-
-#include
-
-
using namespace MOBase;
using namespace MOShared;
@@ -144,13 +111,32 @@ FileRenamer::RenameResults unhideFile(FileRenamer& renamer, const QString &oldNa
}
-ModInfoDialog::ModInfoDialog(ModInfo::Ptr modInfo, bool unmanaged, OrganizerCore *organizerCore, PluginContainer *pluginContainer, QWidget *parent)
- : TutorableDialog("ModInfoDialog", parent), ui(new Ui::ModInfoDialog), m_ModInfo(modInfo),
- m_Origin(nullptr), m_OrganizerCore(organizerCore), m_PluginContainer(pluginContainer)
+ModInfoDialog::ModInfoDialog(
+ ModInfo::Ptr modInfo, bool unmanaged, OrganizerCore *organizerCore,
+ PluginContainer *pluginContainer, QWidget *parent) :
+ TutorableDialog("ModInfoDialog", parent), ui(new Ui::ModInfoDialog),
+ m_ModInfo(modInfo), m_RootPath(modInfo->absolutePath()),
+ m_OrganizerCore(organizerCore), m_PluginContainer(pluginContainer),
+ m_Origin(nullptr)
{
ui->setupUi(this);
+ auto* ds = m_OrganizerCore->directoryStructure();
+ if (ds->originExists(ToWString(m_ModInfo->name()))) {
+ m_Origin = &ds->getOriginByName(ToWString(m_ModInfo->name()));
+ if (m_Origin->isDisabled()) {
+ m_Origin = nullptr;
+ }
+ }
+
+ this->setWindowTitle(m_ModInfo->name());
+ this->setWindowModality(Qt::WindowModal);
+
+ auto* sc = new QShortcut(QKeySequence::Delete, this);
+ connect(sc, &QShortcut::activated, [&]{ onDeleteShortcut(); });
+
m_tabs = createTabs();
+ bool tabSelected = false;
for (std::size_t i=0; i(i));
});
- }
- this->setWindowTitle(modInfo->name());
- this->setWindowModality(Qt::WindowModal);
+ bool enabled = true;
- m_RootPath = modInfo->absolutePath();
-
- auto* sc = new QShortcut(QKeySequence::Delete, this);
- connect(sc, &QShortcut::activated, [&]{ onDeleteShortcut(); });
-
- auto* ds = m_OrganizerCore->directoryStructure();
- if (ds->originExists(ToWString(modInfo->name()))) {
- m_Origin = &ds->getOriginByName(ToWString(modInfo->name()));
- if (m_Origin->isDisabled()) {
- m_Origin = nullptr;
+ if (unmanaged) {
+ enabled = m_tabs[i]->canHandleUnmanaged();
+ } else if (m_ModInfo->hasFlag(ModInfo::FLAG_SEPARATOR)) {
+ enabled = m_tabs[i]->canHandleSeparators();
}
- }
- if (modInfo->hasFlag(ModInfo::FLAG_SEPARATOR))
- {
- ui->tabWidget->setTabEnabled(TAB_TEXTFILES, false);
- ui->tabWidget->setTabEnabled(TAB_INIFILES, false);
- ui->tabWidget->setTabEnabled(TAB_IMAGES, false);
- ui->tabWidget->setTabEnabled(TAB_ESPS, false);
- ui->tabWidget->setTabEnabled(TAB_CONFLICTS, false);
- ui->tabWidget->setTabEnabled(TAB_CATEGORIES, true);
- ui->tabWidget->setTabEnabled(TAB_NEXUS, false);
- ui->tabWidget->setTabEnabled(TAB_NOTES, true);
- ui->tabWidget->setTabEnabled(TAB_FILETREE, false);
- }
- else if (unmanaged)
- {
- ui->tabWidget->setTabEnabled(TAB_TEXTFILES, false);
- ui->tabWidget->setTabEnabled(TAB_INIFILES, false);
- ui->tabWidget->setTabEnabled(TAB_IMAGES, false);
- ui->tabWidget->setTabEnabled(TAB_ESPS, false);
- ui->tabWidget->setTabEnabled(TAB_CONFLICTS, true);
- ui->tabWidget->setTabEnabled(TAB_CATEGORIES, false);
- ui->tabWidget->setTabEnabled(TAB_NEXUS, false);
- ui->tabWidget->setTabEnabled(TAB_NOTES, false);
- ui->tabWidget->setTabEnabled(TAB_FILETREE, false);
- } else {
- ui->tabWidget->setTabEnabled(TAB_TEXTFILES, true);
- ui->tabWidget->setTabEnabled(TAB_INIFILES, true);
- ui->tabWidget->setTabEnabled(TAB_IMAGES, true);
- ui->tabWidget->setTabEnabled(TAB_ESPS, true);
- ui->tabWidget->setTabEnabled(TAB_CONFLICTS, true);
- ui->tabWidget->setTabEnabled(TAB_CATEGORIES, true);
- ui->tabWidget->setTabEnabled(TAB_NEXUS, true);
- ui->tabWidget->setTabEnabled(TAB_NOTES, true);
- ui->tabWidget->setTabEnabled(TAB_FILETREE, true);
- }
+ ui->tabWidget->setTabEnabled(static_cast(i), enabled);
- // activate first enabled tab
- for (int i = 0; i < ui->tabWidget->count(); ++i) {
- if (ui->tabWidget->isTabEnabled(i)) {
- ui->tabWidget->setCurrentIndex(i);
- break;
+ if (!tabSelected && enabled) {
+ ui->tabWidget->setCurrentIndex(static_cast(i));
+ tabSelected = true;
}
}
@@ -234,23 +176,21 @@ ModInfoDialog::~ModInfoDialog()
delete ui;
}
-template
-std::vector> createTabsImpl(
- OrganizerCore& oc, PluginContainer& plugin,
- ModInfoDialog* self, Ui::ModInfoDialog* ui)
+std::vector> ModInfoDialog::createTabs()
{
std::vector> v;
- (v.push_back(std::make_unique(oc, plugin, self, ui)), ...);
- return v;
-}
+ v.push_back(createTab(TAB_TEXTFILES));
+ v.push_back(createTab(TAB_INIFILES));
+ v.push_back(createTab(TAB_IMAGES));
+ v.push_back(createTab(TAB_ESPS));
+ v.push_back(createTab(TAB_CONFLICTS));
+ v.push_back(createTab(TAB_CATEGORIES));
+ v.push_back(createTab(TAB_NEXUS));
+ v.push_back(createTab(TAB_NOTES));
+ v.push_back(createTab(TAB_FILETREE));
-std::vector> ModInfoDialog::createTabs()
-{
- return createTabsImpl<
- TextFilesTab, IniFilesTab, ImagesTab, ESPsTab,
- ConflictsTab, CategoriesTab, NexusTab, NotesTab, FileTreeTab>(
- *m_OrganizerCore, *m_PluginContainer, this, ui);
+ return v;
}
int ModInfoDialog::exec()
@@ -259,16 +199,6 @@ int ModInfoDialog::exec()
return TutorableDialog::exec();
}
-int ModInfoDialog::tabIndex(const QString &tabId)
-{
- for (int i = 0; i < ui->tabWidget->count(); ++i) {
- if (ui->tabWidget->widget(i)->objectName() == tabId) {
- return i;
- }
- }
- return -1;
-}
-
void ModInfoDialog::saveState(Settings& s) const
{
s.directInterface().setValue("mod_info_tabs", saveTabState());
@@ -309,7 +239,7 @@ void ModInfoDialog::restoreTabState(const QByteArray &state)
}
// then actually move the tabs
- QTabBar *tabBar = ui->tabWidget->findChild("qt_tabwidget_tabbar"); // magic name = bad
+ QTabBar *tabBar = ui->tabWidget->tabBar();
ui->tabWidget->blockSignals(true);
for (int newPos = 0; newPos < count; ++newPos) {
QString tabId = tabIds.at(newPos);
@@ -331,6 +261,16 @@ QByteArray ModInfoDialog::saveTabState() const
return result;
}
+int ModInfoDialog::tabIndex(const QString& tabId)
+{
+ for (int i = 0; i < ui->tabWidget->count(); ++i) {
+ if (ui->tabWidget->widget(i)->objectName() == tabId) {
+ return i;
+ }
+ }
+ return -1;
+}
+
void ModInfoDialog::onDeleteShortcut()
{
for (auto& t : m_tabs) {
@@ -373,9 +313,8 @@ void ModInfoDialog::on_closeButton_clicked()
void ModInfoDialog::openTab(int tab)
{
- QTabWidget *tabWidget = findChild("tabWidget");
- if (tabWidget->isTabEnabled(tab)) {
- tabWidget->setCurrentIndex(tab);
+ if (ui->tabWidget->isTabEnabled(tab)) {
+ ui->tabWidget->setCurrentIndex(tab);
}
}
diff --git a/src/modinfodialog.h b/src/modinfodialog.h
index 49007c87..020e7958 100644
--- a/src/modinfodialog.h
+++ b/src/modinfodialog.h
@@ -23,36 +23,15 @@ along with Mod Organizer. If not, see .
#include "modinfo.h"
#include "tutorabledialog.h"
-#include "plugincontainer.h"
-#include "organizercore.h"
-#include "filterwidget.h"
#include "filerenamer.h"
-#include "expanderwidget.h"
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-namespace Ui {
- class ModInfoDialog;
-}
-
-class QFileSystemModel;
-class QTreeView;
-class CategoryFactory;
-class TextEditor;
-class ModInfoDialogTab;
+namespace Ui { class ModInfoDialog; }
+namespace MOShared { class FilesOrigin; }
+
+class PluginContainer;
+class OrganizerCore;
+class Settings;
+class ModInfoDialogTab;
bool canPreviewFile(PluginContainer& pluginContainer, bool isArchive, const QString& filename);
@@ -131,9 +110,6 @@ signals:
void modOpenPrev(int tab=-1);
void originModified(int originID);
-private:
- int tabIndex(const QString &tabId);
-
private slots:
void on_closeButton_clicked();
void on_tabWidget_currentChanged(int index);
@@ -141,8 +117,6 @@ private slots:
void on_prevButton_clicked();
private:
- using FileEntry = MOShared::FileEntry;
-
Ui::ModInfoDialog *ui;
ModInfo::Ptr m_ModInfo;
std::vector> m_tabs;
@@ -157,6 +131,14 @@ private:
void restoreTabState(const QByteArray &state);
QByteArray saveTabState() const;
void onDeleteShortcut();
+ int tabIndex(const QString &tabId);
+
+ template
+ std::unique_ptr createTab(int index)
+ {
+ return std::make_unique(
+ *m_OrganizerCore, *m_PluginContainer, this, ui, index);
+ }
};
#endif // MODINFODIALOG_H
diff --git a/src/modinfodialog.ui b/src/modinfodialog.ui
index 65b89621..93550de3 100644
--- a/src/modinfodialog.ui
+++ b/src/modinfodialog.ui
@@ -20,7 +20,7 @@
QTabWidget::Rounded
- 8
+ 0
true
@@ -1148,6 +1148,9 @@ p, li { white-space: pre-wrap; }
QAbstractItemView::ExtendedSelection
+
+ true
+
diff --git a/src/modinfodialogcategories.cpp b/src/modinfodialogcategories.cpp
index 69c7c6b5..321c22b8 100644
--- a/src/modinfodialogcategories.cpp
+++ b/src/modinfodialogcategories.cpp
@@ -5,8 +5,8 @@
CategoriesTab::CategoriesTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui)
- : ModInfoDialogTab(oc, plugin, parent, ui)
+ QWidget* parent, Ui::ModInfoDialog* ui, int index)
+ : ModInfoDialogTab(oc, plugin, parent, ui, index)
{
connect(
ui->categories, &QTreeWidget::itemChanged,
@@ -35,6 +35,11 @@ void CategoriesTab::update()
updatePrimary();
}
+bool CategoriesTab::canHandleSeparators() const
+{
+ return true;
+}
+
void CategoriesTab::add(
const CategoryFactory &factory, const std::set& enabledCategories,
QTreeWidgetItem* root, int rootLevel)
diff --git a/src/modinfodialogcategories.h b/src/modinfodialogcategories.h
index 76426a5d..29d0b2a5 100644
--- a/src/modinfodialogcategories.h
+++ b/src/modinfodialogcategories.h
@@ -7,10 +7,11 @@ class CategoriesTab : public ModInfoDialogTab
public:
CategoriesTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui);
+ QWidget* parent, Ui::ModInfoDialog* ui, int index);
void clear() override;
void update() override;
+ bool canHandleSeparators() const override;
private:
void add(
diff --git a/src/modinfodialogconflicts.cpp b/src/modinfodialogconflicts.cpp
index adde27ca..15bb7ed4 100644
--- a/src/modinfodialogconflicts.cpp
+++ b/src/modinfodialogconflicts.cpp
@@ -2,6 +2,8 @@
#include "ui_modinfodialog.h"
#include "modinfodialog.h"
#include "utility.h"
+#include "settings.h"
+#include "organizercore.h"
using namespace MOShared;
using namespace MOBase;
@@ -131,8 +133,8 @@ public:
ConflictsTab::ConflictsTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui) :
- ModInfoDialogTab(oc, plugin, parent, ui),
+ QWidget* parent, Ui::ModInfoDialog* ui, int index) :
+ ModInfoDialogTab(oc, plugin, parent, ui, index),
m_general(this, ui, oc), m_advanced(this, ui, oc)
{
connect(
@@ -174,6 +176,11 @@ void ConflictsTab::restoreState(const Settings& s)
m_advanced.restoreState(s);
}
+bool ConflictsTab::canHandleUnmanaged() const
+{
+ return true;
+}
+
void ConflictsTab::changeItemsVisibility(
const QList& items, bool visible)
{
diff --git a/src/modinfodialogconflicts.h b/src/modinfodialogconflicts.h
index 9c011163..a05682ba 100644
--- a/src/modinfodialogconflicts.h
+++ b/src/modinfodialogconflicts.h
@@ -5,6 +5,7 @@
#include "expanderwidget.h"
#include "filterwidget.h"
#include "directoryentry.h"
+#include
class ConflictsTab;
class OrganizerCore;
@@ -96,13 +97,14 @@ class ConflictsTab : public ModInfoDialogTab
public:
ConflictsTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui);
+ QWidget* parent, Ui::ModInfoDialog* ui, int index);
void update() override;
void clear() override;
void saveState(Settings& s) override;
void restoreState(const Settings& s) override;
+ bool canHandleUnmanaged() const override;
void openItems(const QList& items);
void previewItems(const QList& items);
diff --git a/src/modinfodialogesps.cpp b/src/modinfodialogesps.cpp
index ea7eb3b0..dd4fff0b 100644
--- a/src/modinfodialogesps.cpp
+++ b/src/modinfodialogesps.cpp
@@ -124,8 +124,8 @@ private:
ESPsTab::ESPsTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui)
- : ModInfoDialogTab(oc, plugin, parent, ui)
+ QWidget* parent, Ui::ModInfoDialog* ui, int index)
+ : ModInfoDialogTab(oc, plugin, parent, ui, index)
{
QObject::connect(
ui->activateESP, &QToolButton::clicked, [&]{ onActivate(); });
diff --git a/src/modinfodialogesps.h b/src/modinfodialogesps.h
index e1a7a4f7..d8c8997e 100644
--- a/src/modinfodialogesps.h
+++ b/src/modinfodialogesps.h
@@ -12,7 +12,7 @@ class ESPsTab : public ModInfoDialogTab
public:
ESPsTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui);
+ QWidget* parent, Ui::ModInfoDialog* ui, int index);
void clear() override;
bool feedFile(const QString& rootPath, const QString& fullPath) override;
diff --git a/src/modinfodialogfiletree.cpp b/src/modinfodialogfiletree.cpp
index b73a9e24..3e233ccc 100644
--- a/src/modinfodialogfiletree.cpp
+++ b/src/modinfodialogfiletree.cpp
@@ -15,8 +15,8 @@ const int max_scan_for_context_menu = 50;
FileTreeTab::FileTreeTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui)
- : ModInfoDialogTab(oc, plugin, parent, ui), m_fs(nullptr)
+ QWidget* parent, Ui::ModInfoDialog* ui, int index)
+ : ModInfoDialogTab(oc, plugin, parent, ui, index), m_fs(nullptr)
{
m_fs = new QFileSystemModel(this);
m_fs->setReadOnly(false);
diff --git a/src/modinfodialogfiletree.h b/src/modinfodialogfiletree.h
index dcc096fe..d0c36edc 100644
--- a/src/modinfodialogfiletree.h
+++ b/src/modinfodialogfiletree.h
@@ -8,7 +8,7 @@ class FileTreeTab : public ModInfoDialogTab
public:
FileTreeTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui);
+ QWidget* parent, Ui::ModInfoDialog* ui, int index);
void clear() override;
void update() override;
diff --git a/src/modinfodialogimages.cpp b/src/modinfodialogimages.cpp
index 1c7dcc1f..332a0984 100644
--- a/src/modinfodialogimages.cpp
+++ b/src/modinfodialogimages.cpp
@@ -82,8 +82,9 @@ void ScalableImage::mousePressEvent(QMouseEvent* e)
ImagesTab::ImagesTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui)
- : ModInfoDialogTab(oc, plugin, parent, ui), m_image(new ScalableImage)
+ QWidget* parent, Ui::ModInfoDialog* ui, int index) :
+ ModInfoDialogTab(oc, plugin, parent, ui, index),
+ m_image(new ScalableImage)
{
ui->imagesImage->layout()->addWidget(m_image);
ui->imagesThumbnails->setLayout(new QVBoxLayout);
diff --git a/src/modinfodialogimages.h b/src/modinfodialogimages.h
index 7853935a..689b8e93 100644
--- a/src/modinfodialogimages.h
+++ b/src/modinfodialogimages.h
@@ -36,7 +36,7 @@ class ImagesTab : public ModInfoDialogTab
public:
ImagesTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui);
+ QWidget* parent, Ui::ModInfoDialog* ui, int index);
void clear() override;
bool feedFile(const QString& rootPath, const QString& fullPath) override;
diff --git a/src/modinfodialognexus.cpp b/src/modinfodialognexus.cpp
index 55b55439..9d51871c 100644
--- a/src/modinfodialognexus.cpp
+++ b/src/modinfodialognexus.cpp
@@ -9,8 +9,8 @@
NexusTab::NexusTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui)
- : ModInfoDialogTab(oc, plugin, parent, ui), m_requestStarted(false)
+ QWidget* parent, Ui::ModInfoDialog* ui, int index)
+ : ModInfoDialogTab(oc, plugin, parent, ui, index), m_requestStarted(false)
{
ui->modID->setValidator(new QIntValidator(ui->modID));
ui->endorse->setVisible(core().settings().endorsementIntegration());
diff --git a/src/modinfodialognexus.h b/src/modinfodialognexus.h
index 2e328c6d..7fe10171 100644
--- a/src/modinfodialognexus.h
+++ b/src/modinfodialognexus.h
@@ -35,7 +35,7 @@ class NexusTab : public ModInfoDialogTab
public:
NexusTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui);
+ QWidget* parent, Ui::ModInfoDialog* ui, int index);
~NexusTab();
diff --git a/src/modinfodialogtab.cpp b/src/modinfodialogtab.cpp
index 58745220..1b7fadbb 100644
--- a/src/modinfodialogtab.cpp
+++ b/src/modinfodialogtab.cpp
@@ -5,8 +5,9 @@
ModInfoDialogTab::ModInfoDialogTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui)
- : ui(ui), m_core(oc), m_plugin(plugin), m_parent(parent), m_origin(nullptr)
+ QWidget* parent, Ui::ModInfoDialog* ui, int index) :
+ ui(ui), m_core(oc), m_plugin(plugin), m_parent(parent),
+ m_origin(nullptr), m_tabIndex(index)
{
}
@@ -42,6 +43,16 @@ bool ModInfoDialogTab::deleteRequested()
return false;
}
+bool ModInfoDialogTab::canHandleSeparators() const
+{
+ return false;
+}
+
+bool ModInfoDialogTab::canHandleUnmanaged() const
+{
+ return false;
+}
+
void ModInfoDialogTab::setMod(ModInfo::Ptr mod, MOShared::FilesOrigin* origin)
{
m_mod = mod;
@@ -58,6 +69,11 @@ MOShared::FilesOrigin* ModInfoDialogTab::origin() const
return m_origin;
}
+int ModInfoDialogTab::tabIndex() const
+{
+ return m_tabIndex;
+}
+
OrganizerCore& ModInfoDialogTab::core()
{
return m_core;
@@ -88,8 +104,8 @@ void ModInfoDialogTab::emitModOpen(QString name)
NotesTab::NotesTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui)
- : ModInfoDialogTab(oc, plugin, parent, ui)
+ QWidget* parent, Ui::ModInfoDialog* ui, int index)
+ : ModInfoDialogTab(oc, plugin, parent, ui, index)
{
connect(ui->commentsEdit, &QLineEdit::editingFinished, [&]{ onComments(); });
connect(ui->notesEdit, &HTMLEditor::editingFinished, [&]{ onNotes(); });
@@ -107,6 +123,11 @@ void NotesTab::update()
ui->notesEdit->setText(mod()->notes());
}
+bool NotesTab::canHandleSeparators() const
+{
+ return true;
+}
+
void NotesTab::onComments()
{
mod()->setComments(ui->commentsEdit->text());
diff --git a/src/modinfodialogtab.h b/src/modinfodialogtab.h
index 0dc977a8..1f99344f 100644
--- a/src/modinfodialogtab.h
+++ b/src/modinfodialogtab.h
@@ -29,11 +29,16 @@ public:
virtual void restoreState(const Settings& s);
virtual bool deleteRequested();
+ virtual bool canHandleSeparators() const;
+ virtual bool canHandleUnmanaged() const;
+
virtual void setMod(ModInfo::Ptr mod, MOShared::FilesOrigin* origin);
ModInfo::Ptr mod() const;
MOShared::FilesOrigin* origin() const;
+ int tabIndex() const;
+
signals:
void originModified(int originID);
void modOpen(QString name);
@@ -43,7 +48,7 @@ protected:
ModInfoDialogTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui);
+ QWidget* parent, Ui::ModInfoDialog* ui, int index);
OrganizerCore& core();
PluginContainer& plugin();
@@ -59,6 +64,7 @@ private:
QWidget* m_parent;
ModInfo::Ptr m_mod;
MOShared::FilesOrigin* m_origin;
+ int m_tabIndex;
};
@@ -67,10 +73,11 @@ class NotesTab : public ModInfoDialogTab
public:
NotesTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui);
+ QWidget* parent, Ui::ModInfoDialog* ui, int index);
void clear() override;
void update() override;
+ bool canHandleSeparators() const override;
private:
void onComments();
diff --git a/src/modinfodialogtextfiles.cpp b/src/modinfodialogtextfiles.cpp
index f48557b0..fddfafba 100644
--- a/src/modinfodialogtextfiles.cpp
+++ b/src/modinfodialogtextfiles.cpp
@@ -23,9 +23,9 @@ private:
GenericFilesTab::GenericFilesTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui,
+ QWidget* parent, Ui::ModInfoDialog* ui, int index,
QListWidget* list, QSplitter* sp, TextEditor* e)
- : ModInfoDialogTab(oc, plugin, parent, ui), m_list(list), m_editor(e)
+ : ModInfoDialogTab(oc, plugin, parent, ui, index), m_list(list), m_editor(e)
{
m_editor->setupToolbar();
@@ -113,9 +113,9 @@ void GenericFilesTab::select(FileListItem* item)
TextFilesTab::TextFilesTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui)
+ QWidget* parent, Ui::ModInfoDialog* ui, int index)
: GenericFilesTab(
- oc, plugin, parent, ui,
+ oc, plugin, parent, ui, index,
ui->textFileList, ui->tabTextSplitter, ui->textFileEditor)
{
}
@@ -137,9 +137,9 @@ bool TextFilesTab::wantsFile(const QString& rootPath, const QString& fullPath) c
IniFilesTab::IniFilesTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui)
+ QWidget* parent, Ui::ModInfoDialog* ui, int index)
: GenericFilesTab(
- oc, plugin, parent, ui,
+ oc, plugin, parent, ui, index,
ui->iniFileList, ui->tabIniSplitter, ui->iniFileEditor)
{
}
diff --git a/src/modinfodialogtextfiles.h b/src/modinfodialogtextfiles.h
index 0dc5ec89..f618a6bb 100644
--- a/src/modinfodialogtextfiles.h
+++ b/src/modinfodialogtextfiles.h
@@ -23,7 +23,7 @@ protected:
GenericFilesTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui,
+ QWidget* parent, Ui::ModInfoDialog* ui, int index,
QListWidget* list, QSplitter* splitter, TextEditor* editor);
virtual bool wantsFile(const QString& rootPath, const QString& fullPath) const = 0;
@@ -39,7 +39,7 @@ class TextFilesTab : public GenericFilesTab
public:
TextFilesTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui);
+ QWidget* parent, Ui::ModInfoDialog* ui, int index);
protected:
bool wantsFile(const QString& rootPath, const QString& fullPath) const override;
@@ -51,7 +51,7 @@ class IniFilesTab : public GenericFilesTab
public:
IniFilesTab(
OrganizerCore& oc, PluginContainer& plugin,
- QWidget* parent, Ui::ModInfoDialog* ui);
+ QWidget* parent, Ui::ModInfoDialog* ui, int index);
protected:
bool wantsFile(const QString& rootPath, const QString& fullPath) const override;
diff --git a/src/resources.qrc b/src/resources.qrc
index 8645b27e..6fc33293 100644
--- a/src/resources.qrc
+++ b/src/resources.qrc
@@ -1,106 +1,108 @@
-
- resources/help-browser.png
- resources/list-add.png
- resources/document-save.png
- resources/edit-find-replace.png
- resources/go-jump.png
- resources/media-playback-start.png
- resources/process-stop.png
- resources/system-search.png
- resources/view-refresh.png
- resources/system-installer.png
- resources/start-here.png
- resources/list-remove.png
- resources/document-properties.png
- resources/go-up.png
- resources/go-down.png
- resources/switch-instance-icon.png
- resources/contact-new.png
- resources/preferences-system.png
- resources/application-x-executable.png
- resources/dialog-information.png
- resources/emblem-readonly.png
- resources/go-next_16.png
- resources/go-previous_16.png
- resources/view-refresh_16.png
- resources/software-update-available.png
- resources/emblem-important.png
- resources/check.png
- resources/dialog-warning.png
- resources/symbol-backup.png
- resources/applications-accessories.png
- resources/emblem-unreadable.png
- resources/internet-web-browser.png
- resources/system-software-update.png
- resources/help-browser_32.png
- resources/system-installer.png
- resources/function.png
- resources/plugins.png
- resources/edit-clear.png
- resources/dynamic-blue-right.png
- resources/icon-favorite.png
- resources/emblem-favorite.png
- resources/error.png
- resources/show.png
- splash.png
- resources/conflict-mixed.png
- resources/conflict-overwrite.png
- resources/conflict-overwritten.png
- resources/conflict-redundant.png
- resources/conflict-mixed-blue.png
- resources/conflict-overwrite-blue.png
- resources/red-archive-conflict-loser.png
- resources/accessories-text-editor.png
- resources/x-office-calendar.png
- resources/dialog-warning_16.png
- resources/mail-attachment.png
- resources/document-save_32.png
- resources/edit-undo.png
- resources/arrange-boxes.png
- resources/badge_1.png
- resources/badge_2.png
- resources/badge_3.png
- resources/badge_4.png
- resources/badge_5.png
- resources/badge_6.png
- resources/badge_7.png
- resources/badge_8.png
- resources/badge_9.png
- resources/badge_more.png
- resources/status_active.png
- resources/status_awaiting.png
- resources/status_inactive.png
- resources/mo_icon.png
- resources/package.png
- resources/switch-instance-icon.png
- resources/open-Folder-Icon.png
- resources/multiply-red.png
- resources/archive-conflict-loser.png
- resources/archive-conflict-mixed.png
- resources/archive-conflict-neutral.png
- resources/archive-conflict-winner.png
- resources/game-warning.png
- resources/game-warning-16.png
- resources/tracked.png
-
-
- resources/contents/jigsaw-piece.png
- resources/contents/hand-of-god.png
- resources/contents/empty-chessboard.png
- resources/contents/double-quaver.png
- resources/contents/lyre.png
- resources/contents/usable.png
- resources/contents/checkbox-tree.png
- resources/contents/tinker.png
- resources/contents/breastplate.png
- resources/contents/conversation.png
- resources/contents/locked-chest.png
- resources/contents/config.png
- resources/contents/feather-and-scroll.png
- resources/contents/xedit.png
-
-
- qt.conf
-
+
+ resources/save.svg
+ resources/word-wrap.svg
+ resources/help-browser.png
+ resources/list-add.png
+ resources/document-save.png
+ resources/edit-find-replace.png
+ resources/go-jump.png
+ resources/media-playback-start.png
+ resources/process-stop.png
+ resources/system-search.png
+ resources/view-refresh.png
+ resources/system-installer.png
+ resources/start-here.png
+ resources/list-remove.png
+ resources/document-properties.png
+ resources/go-up.png
+ resources/go-down.png
+ resources/switch-instance-icon.png
+ resources/contact-new.png
+ resources/preferences-system.png
+ resources/application-x-executable.png
+ resources/dialog-information.png
+ resources/emblem-readonly.png
+ resources/go-next_16.png
+ resources/go-previous_16.png
+ resources/view-refresh_16.png
+ resources/software-update-available.png
+ resources/emblem-important.png
+ resources/check.png
+ resources/dialog-warning.png
+ resources/symbol-backup.png
+ resources/applications-accessories.png
+ resources/emblem-unreadable.png
+ resources/internet-web-browser.png
+ resources/system-software-update.png
+ resources/help-browser_32.png
+ resources/system-installer.png
+ resources/function.png
+ resources/plugins.png
+ resources/edit-clear.png
+ resources/dynamic-blue-right.png
+ resources/icon-favorite.png
+ resources/emblem-favorite.png
+ resources/error.png
+ resources/show.png
+ splash.png
+ resources/conflict-mixed.png
+ resources/conflict-overwrite.png
+ resources/conflict-overwritten.png
+ resources/conflict-redundant.png
+ resources/conflict-mixed-blue.png
+ resources/conflict-overwrite-blue.png
+ resources/red-archive-conflict-loser.png
+ resources/accessories-text-editor.png
+ resources/x-office-calendar.png
+ resources/dialog-warning_16.png
+ resources/mail-attachment.png
+ resources/document-save_32.png
+ resources/edit-undo.png
+ resources/arrange-boxes.png
+ resources/badge_1.png
+ resources/badge_2.png
+ resources/badge_3.png
+ resources/badge_4.png
+ resources/badge_5.png
+ resources/badge_6.png
+ resources/badge_7.png
+ resources/badge_8.png
+ resources/badge_9.png
+ resources/badge_more.png
+ resources/status_active.png
+ resources/status_awaiting.png
+ resources/status_inactive.png
+ resources/mo_icon.png
+ resources/package.png
+ resources/switch-instance-icon.png
+ resources/open-Folder-Icon.png
+ resources/multiply-red.png
+ resources/archive-conflict-loser.png
+ resources/archive-conflict-mixed.png
+ resources/archive-conflict-neutral.png
+ resources/archive-conflict-winner.png
+ resources/game-warning.png
+ resources/game-warning-16.png
+ resources/tracked.png
+
+
+ resources/contents/jigsaw-piece.png
+ resources/contents/hand-of-god.png
+ resources/contents/empty-chessboard.png
+ resources/contents/double-quaver.png
+ resources/contents/lyre.png
+ resources/contents/usable.png
+ resources/contents/checkbox-tree.png
+ resources/contents/tinker.png
+ resources/contents/breastplate.png
+ resources/contents/conversation.png
+ resources/contents/locked-chest.png
+ resources/contents/config.png
+ resources/contents/feather-and-scroll.png
+ resources/contents/xedit.png
+
+
+ qt.conf
+
--
cgit v1.3.1