From f9e9d79a7d433b79a0beb5d11272a606f066affe Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Tue, 28 May 2019 12:43:57 -0400
Subject: moved all widgets in the conflict tab into a parent widget instead of
directly being in the tab, allows for future additions to the tab
---
src/modinfodialog.ui | 453 ++++++++++++++++++++++++++-------------------------
1 file changed, 234 insertions(+), 219 deletions(-)
(limited to 'src/modinfodialog.ui')
diff --git a/src/modinfodialog.ui b/src/modinfodialog.ui
index 840c81ee..1fe431dd 100644
--- a/src/modinfodialog.ui
+++ b/src/modinfodialog.ui
@@ -400,243 +400,258 @@ Most mods do not have optional esps, so chances are good you are looking at an e
Conflicts
-
+
0
-
-
-
-
-
-
-
-
-
-
- 0
- 0
-
-
-
- border: none;
-text-align: left;
-
-
- The following conflicted files are provided by this mod
-
-
-
- -
-
-
- QFrame::Sunken
-
-
- 1
-
-
- QLCDNumber::Flat
-
-
-
-
-
-
-
- -
-
-
- Qt::CustomContextMenu
-
-
- QAbstractItemView::ExtendedSelection
-
-
- Qt::ElideLeft
-
-
- true
-
-
- true
-
-
- true
-
-
- 2
+
+
+
+ 0
+ 100
+
-
- 365
-
-
- 200
-
-
-
- File
+
+
+ 0
-
-
-
- Overwritten Mods
+
+ 0
-
-
-
- -
-
-
-
-
-
-
-
-
-
- 0
- 0
-
-
-
- border: none;
+
+ 0
+
+
+ 0
+
+
-
+
+
-
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ border: none;
text-align: left;
-
+
+
+ The following conflicted files are provided by this mod
+
+
+
+ -
+
+
+ QFrame::Sunken
+
+
+ 1
+
+
+ QLCDNumber::Flat
+
+
+
+
+
+
+
+ -
+
+
+ Qt::CustomContextMenu
+
+
+ QAbstractItemView::ExtendedSelection
+
+
+ Qt::ElideLeft
+
+
+ true
+
+
+ true
+
+
+ false
+
+
+ 2
+
+
+ 365
+
+
+ false
+
+
+ 200
+
+
- The following conflicted files are provided by other mods
-
-
-
- -
-
-
- QFrame::Sunken
+ File
-
- QLCDNumber::Flat
-
-
-
-
-
-
-
- -
-
-
- Qt::CustomContextMenu
-
-
- QAbstractItemView::ExtendedSelection
-
-
- Qt::ElideLeft
-
-
- true
-
-
- true
-
-
- true
-
-
- 2
-
-
- 365
-
-
- 200
-
-
-
- File
-
-
-
-
- Providing Mod
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
- 0
- 0
-
+
+
+
+ Overwritten Mods
-
- border: none;
+
+
+
+ -
+
+
-
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ border: none;
text-align: left;
-
+
+
+ The following conflicted files are provided by other mods
+
+
+
+ -
+
+
+ QFrame::Sunken
+
+
+ QLCDNumber::Flat
+
+
+
+
+
+
+
+ -
+
+
+ Qt::CustomContextMenu
+
+
+ Qt::ElideLeft
+
+
+ true
+
+
+ true
+
+
+ 2
+
+
+ 365
+
+
+ 200
+
+
- The following files have no conflicts
+ File
-
-
- -
-
-
- QFrame::Sunken
+
+
+
+ Providing Mod
-
- QLCDNumber::Flat
+
+
+
+ -
+
+
-
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ border: none;
+text-align: left;
+
+
+ The following files have no conflicts
+
+
+
+ -
+
+
+ QFrame::Sunken
+
+
+ QLCDNumber::Flat
+
+
+
+
+
+
+
+ -
+
+
+ Qt::CustomContextMenu
+
+
+ Qt::ElideLeft
+
+
+ true
+
+
+ true
+
+
+ 1
+
+
+
+ File
-
-
-
-
-
-
- -
-
-
- Qt::CustomContextMenu
-
-
- QAbstractItemView::ExtendedSelection
-
-
- Qt::ElideLeft
-
-
- true
-
-
- true
-
-
- true
-
-
- 1
-
-
-
- File
-
-
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 0
+
+
+
+
+
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 0
-
-
-
-
--
cgit v1.3.1
From 2687fa8231cf4b4d9d9bc5bd90ca7c287f97ead2 Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Tue, 28 May 2019 14:18:32 -0400
Subject: added new tabs in the conflict tab
---
src/modinfodialog.ui | 568 +++++++++++++++++++++++++++++++--------------------
1 file changed, 351 insertions(+), 217 deletions(-)
(limited to 'src/modinfodialog.ui')
diff --git a/src/modinfodialog.ui b/src/modinfodialog.ui
index 1fe431dd..190f5b56 100644
--- a/src/modinfodialog.ui
+++ b/src/modinfodialog.ui
@@ -401,255 +401,384 @@ Most mods do not have optional esps, so chances are good you are looking at an e
Conflicts
-
- 0
-
-
-
-
-
- 0
- 100
-
+
+
+ 1
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
-
-
-
+
+
+ General
+
+
+
-
+
+
+
+ 0
+ 100
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
-
-
-
-
- 0
- 0
-
-
-
- border: none;
+
+
-
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ border: none;
text-align: left;
+
+
+ The following conflicted files are provided by this mod
+
+
+
+ -
+
+
+ QFrame::Sunken
+
+
+ 1
+
+
+ QLCDNumber::Flat
+
+
+
+
+
+
+
+ -
+
+
+ Qt::CustomContextMenu
-
- The following conflicted files are provided by this mod
+
+ QAbstractItemView::ExtendedSelection
+
+ Qt::ElideLeft
+
+
+ true
+
+
+ true
+
+
+ false
+
+
+ 2
+
+
+ 365
+
+
+ false
+
+
+ 200
+
+
+
+ File
+
+
+
+
+ Overwritten Mods
+
+
-
-
-
- QFrame::Sunken
+
+
-
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ border: none;
+text-align: left;
+
+
+ The following conflicted files are provided by other mods
+
+
+
+ -
+
+
+ QFrame::Sunken
+
+
+ QLCDNumber::Flat
+
+
+
+
+
+
+
+ -
+
+
+ Qt::CustomContextMenu
-
- 1
+
+ Qt::ElideLeft
+
+
+ true
+
+
+ true
-
- QLCDNumber::Flat
+
+ 2
+
+ 365
+
+
+ 200
+
+
+
+ File
+
+
+
+
+ Providing Mod
+
+
-
-
-
-
- -
-
-
- Qt::CustomContextMenu
-
-
- QAbstractItemView::ExtendedSelection
-
-
- Qt::ElideLeft
-
-
- true
-
-
- true
-
-
- false
-
-
- 2
-
-
- 365
-
-
- false
-
-
- 200
-
-
-
- File
-
-
-
-
- Overwritten Mods
-
-
-
-
- -
-
-
-
-
-
-
-
-
- 0
- 0
-
-
-
- border: none;
+
+
-
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ border: none;
text-align: left;
+
+
+ The following files have no conflicts
+
+
+
+ -
+
+
+ QFrame::Sunken
+
+
+ QLCDNumber::Flat
+
+
+
+
+
+
+
+ -
+
+
+ Qt::CustomContextMenu
+
+
+ Qt::ElideLeft
-
- The following conflicted files are provided by other mods
+
+ true
+
+
+ true
+
+
+ 1
+
+
+ File
+
+
-
-
-
- QFrame::Sunken
+
+
+ Qt::Vertical
-
- QLCDNumber::Flat
+
+
+ 20
+ 0
+
-
+
-
-
-
- -
-
-
- Qt::CustomContextMenu
-
-
- Qt::ElideLeft
-
-
- true
-
-
- true
-
-
- 2
-
-
- 365
-
-
- 200
-
-
-
- File
-
-
-
-
- Providing Mod
-
-
-
-
- -
-
-
-
-
+
+
+
+
+
+
+ Advanced
+
+
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
-
-
-
-
- 0
- 0
-
-
-
- border: none;
-text-align: left;
-
-
- The following files have no conflicts
-
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ 3
+
+
+ 243
+
+
+
+ Overwrites
+
+
+
+
+ File
+
+
+
+
+ Overwritten by
+
+
+
+
+
-
-
-
- QFrame::Sunken
-
-
- QLCDNumber::Flat
-
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Show files that have no conflicts
+
+
+
+ -
+
+
+
+ 20
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Filter
+
+
+
+
+
+
+
-
-
-
- -
-
-
- Qt::CustomContextMenu
-
-
- Qt::ElideLeft
-
-
- true
-
-
- true
-
-
- 1
-
-
-
- File
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 0
-
-
-
-
-
+
+
+
+
@@ -1052,6 +1181,11 @@ p, li { white-space: pre-wrap; }
QLineEdit
+
+ MOBase::LineEditClear
+ QLineEdit
+
+
--
cgit v1.3.1
From ab385347afc3317049d85a5ee4b011592d8b3dce Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Tue, 28 May 2019 15:39:09 -0400
Subject: allow for refreshing individual conflict tabs advanced conflict list
now has items
---
src/modinfodialog.cpp | 132 +++++++++++++++++++++++++++++++++++++++-----------
src/modinfodialog.h | 11 +++--
src/modinfodialog.ui | 3 ++
3 files changed, 116 insertions(+), 30 deletions(-)
(limited to 'src/modinfodialog.ui')
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp
index f5b6abc8..2d2cc559 100644
--- a/src/modinfodialog.cpp
+++ b/src/modinfodialog.cpp
@@ -437,6 +437,10 @@ ModInfoDialog::ModInfoDialog(ModInfo::Ptr modInfo, const DirectoryEntry *directo
m_overwriteExpander.set(ui->overwriteExpander, ui->overwriteTree, true);
m_overwrittenExpander.set(ui->overwrittenExpander, ui->overwrittenTree, true);
m_nonconflictExpander.set(ui->noConflictExpander, ui->noConflictTree);
+
+ connect(ui->conflictsAdvancedShowNoConflict, &QCheckBox::clicked, [&] {
+ refreshConflictLists(false, true);
+ });
}
@@ -597,55 +601,76 @@ QByteArray ModInfoDialog::saveConflictExpandersState() const
void ModInfoDialog::refreshLists()
{
- refreshConflictLists();
+ refreshConflictLists(true, true);
refreshFiles();
}
-void ModInfoDialog::refreshConflictLists()
+void ModInfoDialog::refreshConflictLists(
+ bool refreshGeneral, bool refreshAdvanced)
{
int numNonConflicting = 0;
int numOverwrite = 0;
int numOverwritten = 0;
- ui->overwriteTree->clear();
- ui->overwrittenTree->clear();
- ui->noConflictTree->clear();
+ if (refreshGeneral) {
+ ui->overwriteTree->clear();
+ ui->overwrittenTree->clear();
+ ui->noConflictTree->clear();
+ }
+
+ if (refreshAdvanced) {
+ ui->conflictsAdvancedList->clear();
+ }
if (m_Origin != nullptr) {
std::vector files = m_Origin->getFiles();
for (const auto& file : m_Origin->getFiles()) {
- QString relativeName = QDir::fromNativeSeparators(ToQString(file->getRelativePath()));
- QString fileName = relativeName.mid(0).prepend(m_RootPath);
+ const QString relativeName = QDir::fromNativeSeparators(ToQString(file->getRelativePath()));
+ const QString fileName = relativeName.mid(0).prepend(m_RootPath);
+
bool archive = false;
+ const int fileOrigin = file->getOrigin(archive);
+ const auto& alternatives = file->getAlternatives();
- if (file->getOrigin(archive) == m_Origin->getID()) {
- const auto& alternatives = file->getAlternatives();
+ if (refreshGeneral) {
+ if (fileOrigin == m_Origin->getID()) {
+ if (!alternatives.empty()) {
+ ui->overwriteTree->addTopLevelItem(createOverwriteItem(
+ archive, fileName, relativeName, alternatives));
- if (!alternatives.empty()) {
- ui->overwriteTree->addTopLevelItem(createOverwriteItem(
- archive, fileName, relativeName, alternatives));
+ ++numOverwrite;
+ } else {
+ // otherwise, put the file in the noconflict tree
+ ui->noConflictTree->addTopLevelItem(createNoConflictItem(
+ archive, fileName, relativeName));
- ++numOverwrite;
+ ++numNonConflicting;
+ }
} else {
- // otherwise, put the file in the nonconflict tree
- ui->noConflictTree->addTopLevelItem(createNoConflictItem(
- archive, fileName, relativeName));
+ ui->overwrittenTree->addTopLevelItem(createOverwrittenItem(
+ fileOrigin, archive, fileName, relativeName));
- ++numNonConflicting;
+ ++numOverwritten;
}
- } else {
- ui->overwrittenTree->addTopLevelItem(createOverwrittenItem(
- file, archive, fileName, relativeName));
+ }
+
+ if (refreshAdvanced) {
+ auto* advancedItem = createAdvancedConflictItem(
+ fileOrigin, archive, fileName, relativeName, alternatives);
- ++numOverwritten;
+ if (advancedItem) {
+ ui->conflictsAdvancedList->addTopLevelItem(advancedItem);
+ }
}
}
}
- ui->overwriteCount->display(numOverwrite);
- ui->overwrittenCount->display(numOverwritten);
- ui->noConflictCount->display(numNonConflicting);
+ if (refreshGeneral) {
+ ui->overwriteCount->display(numOverwrite);
+ ui->overwrittenCount->display(numOverwritten);
+ ui->noConflictCount->display(numNonConflicting);
+ }
}
QTreeWidgetItem* ModInfoDialog::createOverwriteItem(
@@ -697,10 +722,10 @@ QTreeWidgetItem* ModInfoDialog::createNoConflictItem(
}
QTreeWidgetItem* ModInfoDialog::createOverwrittenItem(
- const MOShared::FileEntry::Ptr& file,
- bool archive, const QString& fileName, const QString& relativeName)
+ int fileOrigin, bool archive,
+ const QString& fileName, const QString& relativeName)
{
- const FilesOrigin &realOrigin = m_Directory->getOriginByID(file->getOrigin(archive));
+ const FilesOrigin &realOrigin = m_Directory->getOriginByID(fileOrigin);
QStringList fields(relativeName);
fields.append(ToQString(realOrigin.getName()));
@@ -720,6 +745,59 @@ QTreeWidgetItem* ModInfoDialog::createOverwrittenItem(
return item;
}
+QTreeWidgetItem* ModInfoDialog::createAdvancedConflictItem(
+ int fileOrigin, bool archive,
+ const QString& fileName, const QString& relativeName,
+ const MOShared::FileEntry::AlternativesVector& alternatives)
+{
+ QString before, after;
+
+ if (!alternatives.empty()) {
+ int beforePrio = 0;
+ int afterPrio = std::numeric_limits::max();
+
+ for (const auto& alt : alternatives)
+ {
+ auto altOrigin = m_Directory->getOriginByID(alt.first);
+
+ if (altOrigin.getPriority() > beforePrio) {
+ if (altOrigin.getPriority() < m_Origin->getPriority()) {
+ before = ToQString(altOrigin.getName());
+ beforePrio = altOrigin.getPriority();
+ }
+ }
+
+ if (altOrigin.getPriority() < afterPrio) {
+ if (altOrigin.getPriority() > m_Origin->getPriority()) {
+ after = ToQString(altOrigin.getName());
+ afterPrio = altOrigin.getPriority();
+ }
+ }
+ }
+
+ if (after.isEmpty()) {
+ FilesOrigin &realOrigin = m_Directory->getOriginByID(fileOrigin);
+
+ if (realOrigin.getID() != m_Origin->getID()) {
+ after = ToQString(realOrigin.getName());
+ }
+ }
+ }
+
+ if (!ui->conflictsAdvancedShowNoConflict->isChecked()) {
+ if (before.isEmpty() && after.isEmpty()) {
+ return nullptr;
+ }
+ }
+
+ QTreeWidgetItem* item = new QTreeWidgetItem;
+ item->setText(0, before);
+ item->setText(1, relativeName);
+ item->setText(2, after);
+
+ return item;
+}
+
void ModInfoDialog::refreshFiles()
{
if (m_RootPath.length() > 0) {
diff --git a/src/modinfodialog.h b/src/modinfodialog.h
index 3c193cd3..69b0069e 100644
--- a/src/modinfodialog.h
+++ b/src/modinfodialog.h
@@ -429,7 +429,7 @@ private:
ExpanderWidget m_overwriteExpander, m_overwrittenExpander, m_nonconflictExpander;
- void refreshConflictLists();
+ void refreshConflictLists(bool refreshGeneral, bool refreshAdvanced);
void refreshFiles();
QTreeWidgetItem* createOverwriteItem(
@@ -440,8 +440,13 @@ private:
bool archive, const QString& fileName, const QString& relativeName);
QTreeWidgetItem* createOverwrittenItem(
- const MOShared::FileEntry::Ptr& file,
- bool archive, const QString& fileName, const QString& relativeName);
+ int fileOrigin, bool archive,
+ const QString& fileName, const QString& relativeName);
+
+ QTreeWidgetItem* createAdvancedConflictItem(
+ int fileOrigin, bool archive,
+ const QString& fileName, const QString& relativeName,
+ const MOShared::FileEntry::AlternativesVector& alternatives);
void restoreTabState(const QByteArray &state);
void restoreConflictExpandersState(const QByteArray &state);
diff --git a/src/modinfodialog.ui b/src/modinfodialog.ui
index 190f5b56..b31f49d3 100644
--- a/src/modinfodialog.ui
+++ b/src/modinfodialog.ui
@@ -744,6 +744,9 @@ text-align: left;
Show files that have no conflicts
+
+ true
+
-
--
cgit v1.3.1
From 260462fe6dd37899744b95f777cdff3c738fad2c Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Tue, 28 May 2019 16:10:10 -0400
Subject: added show all/nearest mods radio buttons
---
src/modinfodialog.cpp | 48 ++++++++++++++++++++++++++++++++++++++----------
src/modinfodialog.ui | 17 +++++++++++++++++
2 files changed, 55 insertions(+), 10 deletions(-)
(limited to 'src/modinfodialog.ui')
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp
index 2d2cc559..e35aa0e1 100644
--- a/src/modinfodialog.cpp
+++ b/src/modinfodialog.cpp
@@ -441,6 +441,14 @@ ModInfoDialog::ModInfoDialog(ModInfo::Ptr modInfo, const DirectoryEntry *directo
connect(ui->conflictsAdvancedShowNoConflict, &QCheckBox::clicked, [&] {
refreshConflictLists(false, true);
});
+
+ connect(ui->conflictsAdvancedShowAll, &QRadioButton::clicked, [&] {
+ refreshConflictLists(false, true);
+ });
+
+ connect(ui->conflictsAdvancedShowNearest, &QRadioButton::clicked, [&] {
+ refreshConflictLists(false, true);
+ });
}
@@ -760,26 +768,46 @@ QTreeWidgetItem* ModInfoDialog::createAdvancedConflictItem(
{
auto altOrigin = m_Directory->getOriginByID(alt.first);
- if (altOrigin.getPriority() > beforePrio) {
+ if (ui->conflictsAdvancedShowAll->isChecked()) {
if (altOrigin.getPriority() < m_Origin->getPriority()) {
- before = ToQString(altOrigin.getName());
- beforePrio = altOrigin.getPriority();
+ if (!before.isEmpty()) {
+ before += ", ";
+ }
+
+ before += ToQString(altOrigin.getName());
+ } else if (altOrigin.getPriority() > m_Origin->getPriority()) {
+ if (!after.isEmpty()) {
+ after += ", ";
+ }
+
+ after += ToQString(altOrigin.getName());
+ }
+ } else {
+ if (altOrigin.getPriority() > beforePrio) {
+ if (altOrigin.getPriority() < m_Origin->getPriority()) {
+ before = ToQString(altOrigin.getName());
+ beforePrio = altOrigin.getPriority();
+ }
}
- }
- if (altOrigin.getPriority() < afterPrio) {
- if (altOrigin.getPriority() > m_Origin->getPriority()) {
- after = ToQString(altOrigin.getName());
- afterPrio = altOrigin.getPriority();
+ if (altOrigin.getPriority() < afterPrio) {
+ if (altOrigin.getPriority() > m_Origin->getPriority()) {
+ after = ToQString(altOrigin.getName());
+ afterPrio = altOrigin.getPriority();
+ }
}
}
}
- if (after.isEmpty()) {
+ if (after.isEmpty() || ui->conflictsAdvancedShowAll->isChecked()) {
FilesOrigin &realOrigin = m_Directory->getOriginByID(fileOrigin);
if (realOrigin.getID() != m_Origin->getID()) {
- after = ToQString(realOrigin.getName());
+ if (!after.isEmpty()) {
+ after += ", ";
+ }
+
+ after += ToQString(realOrigin.getName());
}
}
}
diff --git a/src/modinfodialog.ui b/src/modinfodialog.ui
index b31f49d3..e391da46 100644
--- a/src/modinfodialog.ui
+++ b/src/modinfodialog.ui
@@ -749,6 +749,23 @@ text-align: left;
+ -
+
+
+ Show all conflicting mods
+
+
+ true
+
+
+
+ -
+
+
+ Show nearest conflicting mod
+
+
+
-
--
cgit v1.3.1
From 4d90e502266dfb886e1d089fb26780d19a38e5a7 Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Wed, 29 May 2019 09:45:30 -0400
Subject: added new filterwidget, will eventually get the operators
functionality from the mod/pluging lists
---
src/CMakeLists.txt | 3 ++
src/filterwidget.cpp | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++
src/filterwidget.h | 27 ++++++++++++++++
src/modinfodialog.cpp | 2 ++
src/modinfodialog.h | 3 ++
src/modinfodialog.ui | 7 +---
6 files changed, 124 insertions(+), 6 deletions(-)
create mode 100644 src/filterwidget.cpp
create mode 100644 src/filterwidget.h
(limited to 'src/modinfodialog.ui')
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index cae26334..93597d62 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -115,6 +115,7 @@ SET(organizer_SRCS
lcdnumber.cpp
forcedloaddialog.cpp
forcedloaddialogwidget.cpp
+ filterwidget.cpp
shared/windows_error.cpp
shared/error_report.cpp
@@ -211,6 +212,7 @@ SET(organizer_HDRS
lcdnumber.h
forcedloaddialog.h
forcedloaddialogwidget.h
+ filterwidget.h
shared/windows_error.h
shared/error_report.h
@@ -391,6 +393,7 @@ set(utilities
set(widgets
descriptionpage
genericicondelegate
+ filterwidget
icondelegate
lcdnumber
logbuffer
diff --git a/src/filterwidget.cpp b/src/filterwidget.cpp
new file mode 100644
index 00000000..39324bc6
--- /dev/null
+++ b/src/filterwidget.cpp
@@ -0,0 +1,88 @@
+#include "filterwidget.h"
+#include "eventfilter.h"
+
+FilterWidget::FilterWidget()
+ : m_edit(nullptr), m_clear(nullptr), m_buddy(nullptr)
+{
+}
+
+void FilterWidget::set(QLineEdit* edit)
+{
+ if (m_clear) {
+ delete m_clear;
+ m_clear = nullptr;
+ }
+
+ m_edit = edit;
+ if (!m_edit) {
+ return;
+ }
+
+ createClear();
+ hookEvents();
+}
+
+void FilterWidget::clear()
+{
+ if (!m_edit) {
+ return;
+ }
+
+ m_edit->clear();
+}
+
+void FilterWidget::createClear()
+{
+ m_clear = new QToolButton(m_edit);
+
+ QPixmap pixmap(":/MO/gui/edit_clear");
+ m_clear->setIcon(QIcon(pixmap));
+ m_clear->setIconSize(pixmap.size());
+ m_clear->setCursor(Qt::ArrowCursor);
+ m_clear->setStyleSheet("QToolButton { border: none; padding: 0px; }");
+ m_clear->hide();
+
+ QObject::connect(m_clear, &QToolButton::clicked, [&]{ clear(); });
+ QObject::connect(m_edit, &QLineEdit::textChanged, [&]{ onTextChanged(); });
+
+ repositionClearButton();
+}
+
+void FilterWidget::hookEvents()
+{
+ auto* f = new EventFilter(m_edit, [&](auto* w, auto* e) {
+ if (e->type() == QEvent::Resize) {
+ onResized();
+ }
+
+ return false;
+ });
+
+ m_edit->installEventFilter(f);
+}
+
+void FilterWidget::onTextChanged()
+{
+ m_clear->setVisible(!m_edit->text().isEmpty());
+}
+
+void FilterWidget::onResized()
+{
+ repositionClearButton();
+}
+
+void FilterWidget::repositionClearButton()
+{
+ if (!m_clear) {
+ return;
+ }
+
+ const QSize sz = m_clear->sizeHint();
+ const int frame = m_edit->style()->pixelMetric(QStyle::PM_DefaultFrameWidth);
+ const auto r = m_edit->rect();
+
+ const auto x = r.right() - frame - sz.width();
+ const auto y = (r.bottom() + 1 - sz.height()) / 2;
+
+ m_clear->move(x, y);
+}
diff --git a/src/filterwidget.h b/src/filterwidget.h
new file mode 100644
index 00000000..07e216f1
--- /dev/null
+++ b/src/filterwidget.h
@@ -0,0 +1,27 @@
+#ifndef FILTERWIDGET_H
+#define FILTERWIDGET_H
+
+class FilterWidget
+{
+public:
+ FilterWidget();
+
+ void set(QLineEdit* edit);
+ void buddy(QWidget* w);
+
+ void clear();
+
+private:
+ QLineEdit* m_edit;
+ QToolButton* m_clear;
+ QWidget* m_buddy;
+
+ void createClear();
+ void hookEvents();
+ void repositionClearButton();
+
+ void onTextChanged();
+ void onResized();
+};
+
+#endif // FILTERWIDGET_H
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp
index 9db31da3..1e933a74 100644
--- a/src/modinfodialog.cpp
+++ b/src/modinfodialog.cpp
@@ -453,6 +453,8 @@ ModInfoDialog::ModInfoDialog(ModInfo::Ptr modInfo, const DirectoryEntry *directo
m_nonconflictExpander.set(ui->noConflictExpander, ui->noConflictTree);
+ m_advancedConflictFilter.set(ui->conflictsAdvancedFilter);
+
// left-elide the overwrites column so that the nearest are visible
ui->conflictsAdvancedList->setItemDelegateForColumn(
0, new ElideLeftDelegate(ui->conflictsAdvancedList));
diff --git a/src/modinfodialog.h b/src/modinfodialog.h
index 69b0069e..5169a993 100644
--- a/src/modinfodialog.h
+++ b/src/modinfodialog.h
@@ -25,6 +25,7 @@ along with Mod Organizer. If not, see .
#include "tutorabledialog.h"
#include "plugincontainer.h"
#include "organizercore.h"
+#include "filterwidget.h"
#include
#include
@@ -427,6 +428,7 @@ private:
std::map m_RealTabPos;
ExpanderWidget m_overwriteExpander, m_overwrittenExpander, m_nonconflictExpander;
+ FilterWidget m_advancedConflictFilter;
void refreshConflictLists(bool refreshGeneral, bool refreshAdvanced);
@@ -448,6 +450,7 @@ private:
const QString& fileName, const QString& relativeName,
const MOShared::FileEntry::AlternativesVector& alternatives);
+
void restoreTabState(const QByteArray &state);
void restoreConflictExpandersState(const QByteArray &state);
diff --git a/src/modinfodialog.ui b/src/modinfodialog.ui
index e391da46..b55c0f07 100644
--- a/src/modinfodialog.ui
+++ b/src/modinfodialog.ui
@@ -782,7 +782,7 @@ text-align: left;
0
-
-
+
Filter
@@ -1201,11 +1201,6 @@ p, li { white-space: pre-wrap; }
QLineEdit
-
- MOBase::LineEditClear
- QLineEdit
-
-
--
cgit v1.3.1
From b7580c5ad766ebf984641674fdc0f121d754c82e Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Fri, 31 May 2019 11:31:21 -0400
Subject: restore conflicts selected tab and checkboxes
---
src/modinfodialog.cpp | 28 +++++++++++++++++++++++-----
src/modinfodialog.h | 4 ++--
src/modinfodialog.ui | 2 +-
3 files changed, 26 insertions(+), 8 deletions(-)
(limited to 'src/modinfodialog.ui')
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp
index 4852150f..1dd44112 100644
--- a/src/modinfodialog.cpp
+++ b/src/modinfodialog.cpp
@@ -553,13 +553,13 @@ int ModInfoDialog::tabIndex(const QString &tabId)
void ModInfoDialog::saveState(Settings& s) const
{
s.directInterface().setValue("mod_info_tabs", saveTabState());
- s.directInterface().setValue("mod_info_conflict_expanders", saveConflictExpandersState());
+ s.directInterface().setValue("mod_info_conflicts", saveConflictsState());
}
void ModInfoDialog::restoreState(const Settings& s)
{
restoreTabState(s.directInterface().value("mod_info_tabs").toByteArray());
- restoreConflictExpandersState(s.directInterface().value("mod_info_conflict_expanders").toByteArray());
+ restoreConflictsState(s.directInterface().value("mod_info_conflicts").toByteArray());
}
void ModInfoDialog::restoreTabState(const QByteArray &state)
@@ -593,7 +593,7 @@ void ModInfoDialog::restoreTabState(const QByteArray &state)
ui->tabWidget->blockSignals(false);
}
-void ModInfoDialog::restoreConflictExpandersState(const QByteArray &state)
+void ModInfoDialog::restoreConflictsState(const QByteArray &state)
{
QDataStream stream(state);
@@ -608,6 +608,20 @@ void ModInfoDialog::restoreConflictExpandersState(const QByteArray &state)
m_overwrittenExpander.toggle(overwrittenExpanded);
m_nonconflictExpander.toggle(noConflictExpanded);
}
+
+ int index = 0;
+ bool noConflictChecked = false;
+ bool showAllChecked = false;
+ bool showNearestChecked = false;
+
+ stream >> index >> noConflictChecked >> showAllChecked >> showNearestChecked;
+
+ if (stream.status() == QDataStream::Ok) {
+ ui->tabConflictsTabs->setCurrentIndex(index);
+ ui->conflictsAdvancedShowNoConflict->setChecked(noConflictChecked);
+ ui->conflictsAdvancedShowAll->setChecked(showAllChecked);
+ ui->conflictsAdvancedShowNearest->setChecked(showNearestChecked);
+ }
}
QByteArray ModInfoDialog::saveTabState() const
@@ -622,7 +636,7 @@ QByteArray ModInfoDialog::saveTabState() const
return result;
}
-QByteArray ModInfoDialog::saveConflictExpandersState() const
+QByteArray ModInfoDialog::saveConflictsState() const
{
QByteArray result;
QDataStream stream(&result, QIODevice::WriteOnly);
@@ -630,7 +644,11 @@ QByteArray ModInfoDialog::saveConflictExpandersState() const
stream
<< m_overwriteExpander.opened()
<< m_overwrittenExpander.opened()
- << m_nonconflictExpander.opened();
+ << m_nonconflictExpander.opened()
+ << ui->tabConflictsTabs->currentIndex()
+ << ui->conflictsAdvancedShowNoConflict->isChecked()
+ << ui->conflictsAdvancedShowAll->isChecked()
+ << ui->conflictsAdvancedShowNearest->isChecked();
return result;
}
diff --git a/src/modinfodialog.h b/src/modinfodialog.h
index 5169a993..40e45eb4 100644
--- a/src/modinfodialog.h
+++ b/src/modinfodialog.h
@@ -452,10 +452,10 @@ private:
void restoreTabState(const QByteArray &state);
- void restoreConflictExpandersState(const QByteArray &state);
+ void restoreConflictsState(const QByteArray &state);
QByteArray saveTabState() const;
- QByteArray saveConflictExpandersState() const;
+ QByteArray saveConflictsState() const;
bool canHideConflictItem(const QTreeWidgetItem* item) const;
bool canUnhideConflictItem(const QTreeWidgetItem* item) const;
diff --git a/src/modinfodialog.ui b/src/modinfodialog.ui
index b55c0f07..6c1ed36d 100644
--- a/src/modinfodialog.ui
+++ b/src/modinfodialog.ui
@@ -402,7 +402,7 @@ Most mods do not have optional esps, so chances are good you are looking at an e
-
-
+
1
--
cgit v1.3.1
From 65428e89ad9c2489d40cc01e026e6a73e64df258 Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Fri, 31 May 2019 11:59:19 -0400
Subject: put back changes from another PR lost because of a bad rebase
---
src/modinfodialog.ui | 23 ++++++++++++++++-------
1 file changed, 16 insertions(+), 7 deletions(-)
(limited to 'src/modinfodialog.ui')
diff --git a/src/modinfodialog.ui b/src/modinfodialog.ui
index 6c1ed36d..8744b216 100644
--- a/src/modinfodialog.ui
+++ b/src/modinfodialog.ui
@@ -404,7 +404,7 @@ Most mods do not have optional esps, so chances are good you are looking at an e
-
- 1
+ 0
@@ -481,24 +481,21 @@ text-align: left;
Qt::ElideLeft
+
+ true
+
true
true
-
- false
-
2
365
-
- false
-
200
@@ -554,9 +551,15 @@ text-align: left;
Qt::CustomContextMenu
+
+ QAbstractItemView::ExtendedSelection
+
Qt::ElideLeft
+
+ true
+
true
@@ -624,9 +627,15 @@ text-align: left;
Qt::CustomContextMenu
+
+ QAbstractItemView::ExtendedSelection
+
Qt::ElideLeft
+
+ true
+
true
--
cgit v1.3.1
From 0f6f0c23943116ea668ab035055cb8b0e4a6574e Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Fri, 31 May 2019 12:49:25 -0400
Subject: replaced all the manual UserRole stuff with a few constants and
helper functions setConflictItem() is now used by all conflict lists to setup
the data (filename, archive, etc.) and visuals (italic for archives) merged
openDataFile() and previewDataFile() into their caller as they weren't used
anywhere else previewDataFile() used to do a fromNativeSeparators() before
previewing, moved that to previewFileWithAlternatives() instead brought
overwrittenTree double click in line with overwriteTree, there's no
difference between apply() and close() because there's only a close button
---
src/modinfodialog.cpp | 133 +++++++++++++++++++++++++++-----------------------
src/modinfodialog.h | 10 +++-
src/modinfodialog.ui | 9 ++++
src/organizercore.cpp | 2 +
4 files changed, 91 insertions(+), 63 deletions(-)
(limited to 'src/modinfodialog.ui')
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp
index 1dd44112..e639dcc7 100644
--- a/src/modinfodialog.cpp
+++ b/src/modinfodialog.cpp
@@ -57,6 +57,10 @@ along with Mod Organizer. If not, see .
using namespace MOBase;
using namespace MOShared;
+const auto FILENAME_USERROLE = Qt::UserRole + 1;
+const auto ORIGIN_USERROLE = Qt::UserRole + 2;
+const auto ARCHIVE_USERROLE = Qt::UserRole + 3;
+
class ModFileListWidget : public QListWidgetItem {
friend bool operator<(const ModFileListWidget &LHS, const ModFileListWidget &RHS);
@@ -744,18 +748,10 @@ QTreeWidgetItem* ModInfoDialog::createOverwriteItem(
QStringList fields(relativeName);
fields.append(altString);
- QTreeWidgetItem *item = new QTreeWidgetItem(fields);
- item->setData(0, Qt::UserRole, fileName);
- item->setData(1, Qt::UserRole, ToQString(m_Directory->getOriginByID(alternatives.back().first).getName()));
- item->setData(1, Qt::UserRole + 1, alternatives.back().first);
- item->setData(1, Qt::UserRole + 2, archive);
+ const auto origin = ToQString(m_Directory->getOriginByID(alternatives.back().first).getName());
- if (archive) {
- QFont font = item->font(0);
- font.setItalic(true);
- item->setFont(0, font);
- item->setFont(1, font);
- }
+ QTreeWidgetItem *item = new QTreeWidgetItem(fields);
+ setConflictItem(item, fileName, origin, archive);
return item;
}
@@ -764,13 +760,7 @@ QTreeWidgetItem* ModInfoDialog::createNoConflictItem(
bool archive, const QString& fileName, const QString& relativeName)
{
QTreeWidgetItem *item = new QTreeWidgetItem(QStringList({relativeName}));
- item->setData(0, Qt::UserRole, fileName);
-
- if (archive) {
- QFont font = item->font(0);
- font.setItalic(true);
- item->setFont(0, font);
- }
+ setConflictItem(item, fileName, "", archive);
return item;
}
@@ -785,16 +775,7 @@ QTreeWidgetItem* ModInfoDialog::createOverwrittenItem(
fields.append(ToQString(realOrigin.getName()));
QTreeWidgetItem *item = new QTreeWidgetItem(fields);
- item->setData(0, Qt::UserRole, fileName);
- item->setData(1, Qt::UserRole, ToQString(realOrigin.getName()));
- item->setData(1, Qt::UserRole + 2, archive);
-
- if (archive) {
- QFont font = item->font(0);
- font.setItalic(true);
- item->setFont(0, font);
- item->setFont(1, font);
- }
+ setConflictItem(item, fileName, ToQString(realOrigin.getName()), archive);
return item;
}
@@ -908,9 +889,44 @@ QTreeWidgetItem* ModInfoDialog::createAdvancedConflictItem(
item->setText(1, relativeName);
item->setText(2, after);
+ setConflictItem(item, fileName, "", archive);
+
return item;
}
+void ModInfoDialog::setConflictItem(
+ QTreeWidgetItem* item,
+ const QString& fileName, const QString& origin, bool archive) const
+{
+ item->setData(0, FILENAME_USERROLE, fileName);
+ item->setData(0, ORIGIN_USERROLE, origin);
+ item->setData(0, ARCHIVE_USERROLE, archive);
+
+ if (archive) {
+ QFont font = item->font(0);
+ font.setItalic(true);
+
+ for (int i=0; icolumnCount(); ++i) {
+ item->setFont(i, font);
+ }
+ }
+}
+
+QString ModInfoDialog::conflictFileName(const QTreeWidgetItem* conflictItem) const
+{
+ return conflictItem->data(0, FILENAME_USERROLE).toString();
+}
+
+QString ModInfoDialog::conflictOrigin(const QTreeWidgetItem* conflictItem) const
+{
+ return conflictItem->data(0, ORIGIN_USERROLE).toString();
+}
+
+bool ModInfoDialog::conflictIsArchive(const QTreeWidgetItem* conflictItem) const
+{
+ return conflictItem->data(0, ARCHIVE_USERROLE).toBool();
+}
+
void ModInfoDialog::refreshFiles()
{
if (m_RootPath.length() > 0) {
@@ -1860,8 +1876,12 @@ void ModInfoDialog::on_primaryCategoryBox_currentIndexChanged(int index)
void ModInfoDialog::on_overwriteTree_itemDoubleClicked(QTreeWidgetItem *item, int)
{
- this->close();
- emit modOpen(item->data(1, Qt::UserRole).toString(), TAB_CONFLICTS);
+ const auto origin = conflictOrigin(item);
+
+ if (!origin.isEmpty()) {
+ close();
+ emit modOpen(origin, TAB_CONFLICTS);
+ }
}
FileRenamer::RenameResults ModInfoDialog::hideFile(FileRenamer& renamer, const QString &oldName)
@@ -1907,14 +1927,14 @@ void ModInfoDialog::changeConflictItemsVisibility(
qDebug().nospace() << "cannot unhide " << item->text(0) << ", skipping";
continue;
}
- result = unhideFile(renamer, item->data(0, Qt::UserRole).toString());
+ result = unhideFile(renamer, conflictFileName(item));
} else {
if (!canHideConflictItem(item)) {
qDebug().nospace() << "cannot hide " << item->text(0) << ", skipping";
continue;
}
- result = hideFile(renamer, item->data(0, Qt::UserRole).toString());
+ result = hideFile(renamer, conflictFileName(item));
}
switch (result) {
@@ -1953,7 +1973,9 @@ void ModInfoDialog::openConflictItems(const QList& items)
// the menu item is only shown for a single selection, but handle all of them
// in case this changes
for (auto* item : items) {
- openDataFile(item);
+ if (item) {
+ m_OrganizerCore->executeFileVirtualized(this, conflictFileName(item));
+ }
}
}
@@ -1962,28 +1984,10 @@ void ModInfoDialog::previewConflictItems(const QList& items)
// the menu item is only shown for a single selection, but handle all of them
// in case this changes
for (auto* item : items) {
- previewDataFile(item);
- }
-}
-
-void ModInfoDialog::openDataFile(const QTreeWidgetItem* item)
-{
- if (!item) {
- return;
- }
-
- QFileInfo targetInfo(item->data(0, Qt::UserRole).toString());
- m_OrganizerCore->executeFileVirtualized(this, targetInfo);
-}
-
-void ModInfoDialog::previewDataFile(const QTreeWidgetItem* item)
-{
- if (!item) {
- return;
+ if (item) {
+ m_OrganizerCore->previewFileWithAlternatives(this, conflictFileName(item));
+ }
}
-
- QString fileName = QDir::fromNativeSeparators(item->data(0, Qt::UserRole).toString());
- m_OrganizerCore->previewFileWithAlternatives(this, fileName);
}
bool ModInfoDialog::canPreviewFile(bool isArchive, const QString& filename) const
@@ -2028,19 +2032,17 @@ bool ModInfoDialog::canUnhideFile(bool isArchive, const QString& filename) const
bool ModInfoDialog::canHideConflictItem(const QTreeWidgetItem* item) const
{
- return canHideFile(item->data(1, Qt::UserRole + 2).toBool(), item->text(0));
+ return canHideFile(conflictIsArchive(item), conflictFileName(item));
}
bool ModInfoDialog::canUnhideConflictItem(const QTreeWidgetItem* item) const
{
- return canUnhideFile(item->data(1, Qt::UserRole + 2).toBool(), item->text(0));
+ return canUnhideFile(conflictIsArchive(item), conflictFileName(item));
}
bool ModInfoDialog::canPreviewConflictItem(const QTreeWidgetItem* item) const
{
- return canPreviewFile(
- item->data(1, Qt::UserRole + 2).toBool(),
- item->data(0, Qt::UserRole).toString());
+ return canPreviewFile(conflictIsArchive(item), conflictFileName(item));
}
void ModInfoDialog::on_overwriteTree_customContextMenuRequested(const QPoint &pos)
@@ -2058,6 +2060,11 @@ void ModInfoDialog::on_noConflictTree_customContextMenuRequested(const QPoint &p
showConflictMenu(pos, ui->noConflictTree);
}
+void ModInfoDialog::on_conflictsAdvancedList_customContextMenuRequested(const QPoint &pos)
+{
+ showConflictMenu(pos, ui->conflictsAdvancedList);
+}
+
void ModInfoDialog::showConflictMenu(const QPoint &pos, QTreeWidget* tree)
{
auto actions = createConflictMenuActions(tree->selectedItems());
@@ -2181,8 +2188,12 @@ ModInfoDialog::ConflictActions ModInfoDialog::createConflictMenuActions(
void ModInfoDialog::on_overwrittenTree_itemDoubleClicked(QTreeWidgetItem *item, int)
{
- emit modOpen(item->data(1, Qt::UserRole).toString(), TAB_CONFLICTS);
- this->accept();
+ const auto origin = conflictOrigin(item);
+
+ if (!origin.isEmpty()) {
+ close();
+ emit modOpen(origin, TAB_CONFLICTS);
+ }
}
void ModInfoDialog::on_refreshButton_clicked()
diff --git a/src/modinfodialog.h b/src/modinfodialog.h
index 40e45eb4..59912127 100644
--- a/src/modinfodialog.h
+++ b/src/modinfodialog.h
@@ -368,6 +368,7 @@ private slots:
void on_overwriteTree_customContextMenuRequested(const QPoint &pos);
void on_overwrittenTree_customContextMenuRequested(const QPoint &pos);
void on_noConflictTree_customContextMenuRequested(const QPoint &pos);
+ void on_conflictsAdvancedList_customContextMenuRequested(const QPoint &pos);
void on_fileTree_customContextMenuRequested(const QPoint &pos);
void on_refreshButton_clicked();
@@ -450,6 +451,13 @@ private:
const QString& fileName, const QString& relativeName,
const MOShared::FileEntry::AlternativesVector& alternatives);
+ void setConflictItem(
+ QTreeWidgetItem* item,
+ const QString& fileName, const QString& origin, bool archive) const;
+
+ QString conflictFileName(const QTreeWidgetItem* conflictItem) const;
+ QString conflictOrigin(const QTreeWidgetItem* conflictItem) const;
+ bool conflictIsArchive(const QTreeWidgetItem* conflictItem) const;
void restoreTabState(const QByteArray &state);
void restoreConflictsState(const QByteArray &state);
@@ -461,8 +469,6 @@ private:
bool canUnhideConflictItem(const QTreeWidgetItem* item) const;
bool canPreviewConflictItem(const QTreeWidgetItem* item) const;
- void openDataFile(const QTreeWidgetItem* item);
- void previewDataFile(const QTreeWidgetItem* item);
void changeFiletreeVisibility(bool visible);
void openConflictItems(const QList& items);
diff --git a/src/modinfodialog.ui b/src/modinfodialog.ui
index 8744b216..93291c02 100644
--- a/src/modinfodialog.ui
+++ b/src/modinfodialog.ui
@@ -707,6 +707,15 @@ text-align: left;
-
+
+ Qt::CustomContextMenu
+
+
+ QAbstractItemView::ExtendedSelection
+
+
+ true
+
3
diff --git a/src/organizercore.cpp b/src/organizercore.cpp
index 3ad4e586..892162f6 100644
--- a/src/organizercore.cpp
+++ b/src/organizercore.cpp
@@ -1321,6 +1321,8 @@ bool OrganizerCore::executeFileVirtualized(
bool OrganizerCore::previewFileWithAlternatives(
QWidget* parent, QString fileName, int selectedOrigin)
{
+ fileName = QDir::fromNativeSeparators(fileName);
+
// what we have is an absolute path to the file in its actual location (for the primary origin)
// what we want is the path relative to the virtual data directory
--
cgit v1.3.1
From 7421aaa33b37bc13a9c5a3f5df2f06b6bf0f09e5 Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Fri, 31 May 2019 13:59:08 -0400
Subject: conflict lists - sorting on advanced list - save state of all four
lists - call refreshLists() just before showing because the state has to be
loaded first, which happens after the ctor
---
src/modinfodialog.cpp | 36 ++++++++++++++++++++++++++++++++++--
src/modinfodialog.h | 2 ++
src/modinfodialog.ui | 3 +++
3 files changed, 39 insertions(+), 2 deletions(-)
(limited to 'src/modinfodialog.ui')
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp
index 97507777..b8a8ae69 100644
--- a/src/modinfodialog.cpp
+++ b/src/modinfodialog.cpp
@@ -397,8 +397,6 @@ ModInfoDialog::ModInfoDialog(ModInfo::Ptr modInfo, const DirectoryEntry *directo
}
}
- refreshLists();
-
if (modInfo->hasFlag(ModInfo::FLAG_SEPARATOR))
{
ui->tabWidget->setTabEnabled(TAB_TEXTFILES, false);
@@ -501,6 +499,12 @@ ModInfoDialog::~ModInfoDialog()
}
+int ModInfoDialog::exec()
+{
+ refreshLists();
+ return TutorableDialog::exec();
+}
+
void ModInfoDialog::initINITweaks()
{
int numTweaks = m_Settings->beginReadArray("INI Tweaks");
@@ -558,12 +562,40 @@ void ModInfoDialog::saveState(Settings& s) const
{
s.directInterface().setValue("mod_info_tabs", saveTabState());
s.directInterface().setValue("mod_info_conflicts", saveConflictsState());
+
+ s.directInterface().setValue(
+ "mod_info_conflicts_overwrite",
+ ui->overwriteTree->header()->saveState());
+
+ s.directInterface().setValue(
+ "mod_info_conflicts_noconflict",
+ ui->noConflictTree->header()->saveState());
+
+ s.directInterface().setValue(
+ "mod_info_conflicts_overwritten",
+ ui->overwrittenTree->header()->saveState());
+
+ s.directInterface().setValue(
+ "mod_info_advanced_conflicts",
+ ui->conflictsAdvancedList->header()->saveState());
}
void ModInfoDialog::restoreState(const Settings& s)
{
restoreTabState(s.directInterface().value("mod_info_tabs").toByteArray());
restoreConflictsState(s.directInterface().value("mod_info_conflicts").toByteArray());
+
+ ui->overwriteTree->header()->restoreState(
+ s.directInterface().value("mod_info_conflicts_overwrite").toByteArray());
+
+ ui->noConflictTree->header()->restoreState(
+ s.directInterface().value("mod_info_conflicts_noconflict").toByteArray());
+
+ ui->overwrittenTree->header()->restoreState(
+ s.directInterface().value("mod_info_conflicts_overwritten").toByteArray());
+
+ ui->conflictsAdvancedList->header()->restoreState(
+ s.directInterface().value("mod_info_advanced_conflicts").toByteArray());
}
void ModInfoDialog::restoreTabState(const QByteArray &state)
diff --git a/src/modinfodialog.h b/src/modinfodialog.h
index 35f87820..85505487 100644
--- a/src/modinfodialog.h
+++ b/src/modinfodialog.h
@@ -280,6 +280,8 @@ public:
**/
void openTab(int tab);
+ int exec() override;
+
void saveState(Settings& s) const;
void restoreState(const Settings& s);
diff --git a/src/modinfodialog.ui b/src/modinfodialog.ui
index 93291c02..20437e58 100644
--- a/src/modinfodialog.ui
+++ b/src/modinfodialog.ui
@@ -716,6 +716,9 @@ text-align: left;
true
+
+ true
+
3
--
cgit v1.3.1
From a6dbb1d7668a2219811fec71a55294e1db6d14aa Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Fri, 31 May 2019 14:09:36 -0400
Subject: advanced conflict list tooltips
---
src/modinfodialog.ui | 9 +++++++++
1 file changed, 9 insertions(+)
(limited to 'src/modinfodialog.ui')
diff --git a/src/modinfodialog.ui b/src/modinfodialog.ui
index 20437e58..e009a599 100644
--- a/src/modinfodialog.ui
+++ b/src/modinfodialog.ui
@@ -762,6 +762,9 @@ text-align: left;
-
+
+ Whether files that have no conflicts should be visible in the list
+
Show files that have no conflicts
@@ -772,6 +775,9 @@ text-align: left;
-
+
+ Shows all mods overwriting or being overwritten by this mod
+
Show all conflicting mods
@@ -782,6 +788,9 @@ text-align: left;
-
+
+ Shows only the nearest conflicting mods, in order of priority
+
Show nearest conflicting mod
--
cgit v1.3.1