From 6e2ae2444ca0bdea964cf0551edd338e6dafa2bc Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Mon, 17 Jun 2019 04:00:00 -0400
Subject: split text file tab into its own class
---
src/modinfodialog.cpp | 100 +++++++++++++++++++++-----------------------------
1 file changed, 41 insertions(+), 59 deletions(-)
(limited to 'src/modinfodialog.cpp')
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp
index 065058fc..7e72653f 100644
--- a/src/modinfodialog.cpp
+++ b/src/modinfodialog.cpp
@@ -38,6 +38,8 @@ along with Mod Organizer. If not, see .
#include "previewdialog.h"
#include "texteditor.h"
+#include "modinfodialogtextfiles.h"
+
#include
#include
#include
@@ -59,6 +61,18 @@ using namespace MOBase;
using namespace MOShared;
+std::vector> ModInfoDialogTab::createTabs(
+ Ui::ModInfoDialog* ui)
+{
+ std::vector> v;
+
+ v.push_back(std::make_unique(ui));
+
+ return v;
+}
+
+
+
class ModFileListWidget : public QListWidgetItem {
friend bool operator<(const ModFileListWidget &LHS, const ModFileListWidget &RHS);
public:
@@ -254,6 +268,9 @@ ModInfoDialog::ModInfoDialog(ModInfo::Ptr modInfo, const DirectoryEntry *directo
m_OrganizerCore(organizerCore), m_PluginContainer(pluginContainer)
{
ui->setupUi(this);
+
+ m_tabs = ModInfoDialogTab::createTabs(ui);
+
this->setWindowTitle(modInfo->name());
this->setWindowModality(Qt::WindowModal);
@@ -305,12 +322,6 @@ ModInfoDialog::ModInfoDialog(ModInfo::Ptr modInfo, const DirectoryEntry *directo
}
}
- ui->textFileView->setupToolbar();
-
- ui->tabTextSplitter->setSizes({200, 1});
- ui->tabTextSplitter->setStretchFactor(0, 0);
- ui->tabTextSplitter->setStretchFactor(1, 1);
-
// refresh everything but the conflict lists, which are done in exec() because
// they depend on restoring the state to some widgets; this refresh has to be
// done here because some of the checks below depend on the ui to decide which
@@ -333,15 +344,17 @@ ModInfoDialog::ModInfoDialog(ModInfo::Ptr modInfo, const DirectoryEntry *directo
}
else if (unmanaged)
{
+ ui->tabWidget->setTabEnabled(TAB_TEXTFILES, false);
ui->tabWidget->setTabEnabled(TAB_INIFILES, false);
ui->tabWidget->setTabEnabled(TAB_CATEGORIES, false);
ui->tabWidget->setTabEnabled(TAB_NEXUS, false);
ui->tabWidget->setTabEnabled(TAB_FILETREE, false);
ui->tabWidget->setTabEnabled(TAB_NOTES, false);
ui->tabWidget->setTabEnabled(TAB_ESPS, false);
- ui->tabWidget->setTabEnabled(TAB_TEXTFILES, false);
ui->tabWidget->setTabEnabled(TAB_IMAGES, false);
} else {
+ ui->tabWidget->setTabEnabled(TAB_TEXTFILES, true);
+
initFiletree(modInfo);
addCategories(CategoryFactory::instance(), modInfo->getCategories(), ui->categoriesTree->invisibleRootItem(), 0);
refreshPrimaryCategoriesBox();
@@ -838,7 +851,10 @@ QTreeWidgetItem* ModInfoDialog::createAdvancedConflictItem(
void ModInfoDialog::refreshFiles()
{
// clearing
- ui->textFileList->clear();
+ for (auto& tab : m_tabs) {
+ tab->clear();
+ }
+
ui->iniTweaksList->clear();
ui->iniFileList->clear();
ui->inactiveESPList->clear();
@@ -857,9 +873,13 @@ void ModInfoDialog::refreshFiles()
while (dirIterator.hasNext()) {
QString fileName = dirIterator.next();
- if (fileName.endsWith(".txt", Qt::CaseInsensitive)) {
- ui->textFileList->addItem(fileName.mid(m_RootPath.length() + 1));
- } else if ((fileName.endsWith(".ini", Qt::CaseInsensitive) || fileName.endsWith(".cfg", Qt::CaseInsensitive)) &&
+ for (auto& tab : m_tabs) {
+ if (tab->feedFile(m_RootPath, fileName)) {
+ break;
+ }
+ }
+
+ if ((fileName.endsWith(".ini", Qt::CaseInsensitive) || fileName.endsWith(".cfg", Qt::CaseInsensitive)) &&
!fileName.endsWith("meta.ini")) {
QString namePart = fileName.mid(m_RootPath.length() + 1);
if (namePart.startsWith("INI Tweaks", Qt::CaseInsensitive)) {
@@ -903,7 +923,6 @@ void ModInfoDialog::refreshFiles()
}
}
- ui->tabWidget->setTabEnabled(TAB_TEXTFILES, ui->textFileList->count() != 0);
ui->tabWidget->setTabEnabled(TAB_IMAGES, ui->thumbnailArea->count() != 0);
ui->tabWidget->setTabEnabled(TAB_ESPS, (ui->inactiveESPList->count() != 0) || (ui->activeESPList->count() != 0));
}
@@ -943,9 +962,17 @@ void ModInfoDialog::saveCategories(QTreeWidgetItem *currentNode)
void ModInfoDialog::on_closeButton_clicked()
{
- if (allowNavigateFromTXT() && allowNavigateFromINI()) {
- this->close();
+ for (auto& tab : m_tabs) {
+ if (!tab->canClose()) {
+ return;
+ }
+ }
+
+ if (!allowNavigateFromINI()) {
+ return;
}
+
+ close();
}
@@ -981,23 +1008,6 @@ void ModInfoDialog::thumbnailClicked(const QString &fileName)
ui->imageLabel->setPixmap(QPixmap::fromImage(image));
}
-bool ModInfoDialog::allowNavigateFromTXT()
-{
- if (ui->textFileView->dirty()) {
- const int res = QMessageBox::question(
- this, tr("Save changes?"),
- tr("Save changes to \"%1\"?").arg(ui->textFileView->filename()),
- QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel);
-
- if (res == QMessageBox::Cancel) {
- return false;
- } else if (res == QMessageBox::Yes) {
- saveCurrentTextFile();
- }
- }
- return true;
-}
-
bool ModInfoDialog::allowNavigateFromINI()
{
if (ui->saveButton->isEnabled()) {
@@ -1012,29 +1022,6 @@ bool ModInfoDialog::allowNavigateFromINI()
return true;
}
-void ModInfoDialog::on_textFileList_currentItemChanged(
- QListWidgetItem *current, QListWidgetItem *previous)
-{
- const QString fullPath = m_RootPath + "/" + current->text();
-
- if (fullPath == ui->textFileView->filename()) {
- // the new file is the same as the currently displayed file. May be the
- // result of a cancellation
- return;
- }
-
- if (allowNavigateFromTXT()) {
- openTextFile(fullPath);
- } else {
- ui->textFileList->setCurrentItem(previous, QItemSelectionModel::Current);
- }
-}
-
-void ModInfoDialog::openTextFile(const QString &fileName)
-{
- ui->textFileView->load(fileName);
-}
-
void ModInfoDialog::openIniFile(const QString &fileName)
{
QFile iniFile(fileName);
@@ -1109,11 +1096,6 @@ void ModInfoDialog::on_saveButton_clicked()
saveCurrentIniFile();
}
-void ModInfoDialog::saveCurrentTextFile()
-{
- ui->textFileView->save();
-}
-
void ModInfoDialog::saveCurrentIniFile()
{
--
cgit v1.3.1