summaryrefslogtreecommitdiff
path: root/src/modinfodialog.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-05-20 17:38:17 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-05-20 17:38:17 -0400
commit00f8cbff05c3f548baba59b0cb525205cc1d80e3 (patch)
tree706ead7a454c40f5e5981db58f0ae853426488e1 /src/modinfodialog.cpp
parenta2b1f6a3604d8a2e4bc47c2b91fb58e6d5b45af6 (diff)
expandable sections in the conflict tab
Diffstat (limited to 'src/modinfodialog.cpp')
-rw-r--r--src/modinfodialog.cpp65
1 files changed, 62 insertions, 3 deletions
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp
index 3c68f4e8..3f8b58a9 100644
--- a/src/modinfodialog.cpp
+++ b/src/modinfodialog.cpp
@@ -265,6 +265,61 @@ bool FileRenamer::renameFailed(const QString& oldName, const QString& newName)
}
+ExpanderWidget::ExpanderWidget()
+ : m_button(nullptr), m_content(nullptr)
+{
+}
+
+ExpanderWidget::ExpanderWidget(QToolButton* button, QWidget* content)
+ : ExpanderWidget()
+{
+ set(button, content);
+}
+
+void ExpanderWidget::set(QToolButton* button, QWidget* content, bool o)
+{
+ m_button = button;
+ m_content = content;
+
+ m_button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
+ m_button->setCheckable(true);
+
+ if (o)
+ open();
+ else
+ close();
+
+ QObject::connect(m_button, &QToolButton::clicked, [&]{ toggle(); });
+}
+
+void ExpanderWidget::open()
+{
+ m_button->setArrowType(Qt::DownArrow);
+ m_button->setChecked(false);
+ m_content->show();
+}
+
+void ExpanderWidget::close()
+{
+ m_button->setArrowType(Qt::RightArrow);
+ m_button->setChecked(false);
+ m_content->hide();
+}
+
+void ExpanderWidget::toggle()
+{
+ if (opened())
+ close();
+ else
+ open();
+}
+
+bool ExpanderWidget::opened() const
+{
+ return m_content->isVisible();
+}
+
+
ModInfoDialog::ModInfoDialog(ModInfo::Ptr modInfo, const DirectoryEntry *directory, bool unmanaged, OrganizerCore *organizerCore, PluginContainer *pluginContainer, QWidget *parent)
: TutorableDialog("ModInfoDialog", parent), ui(new Ui::ModInfoDialog), m_ModInfo(modInfo),
m_ThumbnailMapper(this), m_RequestStarted(false),
@@ -378,6 +433,10 @@ ModInfoDialog::ModInfoDialog(ModInfo::Ptr modInfo, const DirectoryEntry *directo
if (ui->tabWidget->currentIndex() == TAB_NEXUS) {
activateNexusTab();
}
+
+ m_overwriteExpander.set(ui->overwriteExpander, ui->overwriteTree, true);
+ m_overwrittenExpander.set(ui->overwrittenExpander, ui->overwrittenTree, true);
+ m_nonconflictExpander.set(ui->noConflictExpander, ui->noConflictTree);
}
@@ -501,7 +560,7 @@ void ModInfoDialog::refreshLists()
ui->overwriteTree->clear();
ui->overwrittenTree->clear();
- ui->noconflictTree->clear();
+ ui->noConflictTree->clear();
if (m_Origin != nullptr) {
std::vector<FileEntry::Ptr> files = m_Origin->getFiles();
@@ -520,7 +579,7 @@ void ModInfoDialog::refreshLists()
}
altString << m_Directory->getOriginByID(altIter->first).getName();
}
- QStringList fields(relativeName.prepend("..."));
+ QStringList fields(relativeName);
fields.append(ToQString(altString.str()));
QTreeWidgetItem *item = new QTreeWidgetItem(fields);
@@ -544,7 +603,7 @@ void ModInfoDialog::refreshLists()
font.setItalic(true);
item->setFont(0, font);
}
- ui->noconflictTree->addTopLevelItem(item);
+ ui->noConflictTree->addTopLevelItem(item);
++numNonConflicting;
}
} else {