summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2020-12-31 23:44:45 +0100
committerMikaël Capelle <capelle.mikael@gmail.com>2021-01-02 15:38:18 +0100
commit33860662c1cd5d39cf51d411870a84b9081c8427 (patch)
treea2e3f35dfa90384382143bb353be7f6abb5bca9f /src
parent87dac464d9ec488737b16839b0f06586eadb837e (diff)
Move sort plugins handler to PluginListView.
Diffstat (limited to 'src')
-rw-r--r--src/mainwindow.cpp43
-rw-r--r--src/mainwindow.h3
-rw-r--r--src/pluginlistview.cpp52
-rw-r--r--src/pluginlistview.h5
4 files changed, 53 insertions, 50 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 55019a44..2068b476 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -254,7 +254,6 @@ MainWindow::MainWindow(Settings &settings
, m_CategoryFactory(CategoryFactory::instance())
, m_OrganizerCore(organizerCore)
, m_PluginContainer(pluginContainer)
- , m_DidUpdateMasterList(false)
, m_ArchiveListWriter(std::bind(&MainWindow::saveArchiveList, this))
, m_LinkToolbar(nullptr)
, m_LinkDesktop(nullptr)
@@ -3304,48 +3303,6 @@ void MainWindow::on_showHiddenBox_toggled(bool checked)
m_OrganizerCore.downloadManager()->setShowHidden(checked);
}
-void MainWindow::on_bossButton_clicked()
-{
- const bool offline = m_OrganizerCore.settings().network().offlineMode();
-
- auto r = QMessageBox::No;
-
- if (offline) {
- r = QMessageBox::question(
- this, tr("Sorting plugins"),
- tr("Are you sure you want to sort your plugins list?") + "\r\n\r\n" +
- tr("Note: You are currently in offline mode and LOOT will not update the master list."),
- QMessageBox::Yes | QMessageBox::No);
- } else {
- r = QMessageBox::question(
- this, tr("Sorting plugins"),
- tr("Are you sure you want to sort your plugins list?"),
- QMessageBox::Yes | QMessageBox::No);
- }
-
- if (r != QMessageBox::Yes) {
- return;
- }
-
- m_OrganizerCore.savePluginList();
-
- setEnabled(false);
- ON_BLOCK_EXIT([&] () { setEnabled(true); });
-
- // don't try to update the master list in offline mode
- const bool didUpdateMasterList = offline ? true : m_DidUpdateMasterList;
-
- if (runLoot(this, m_OrganizerCore, didUpdateMasterList)) {
- // don't assume the master list was updated in offline mode
- if (!offline) {
- m_DidUpdateMasterList = true;
- }
-
- m_OrganizerCore.refreshESPList(false);
- m_OrganizerCore.savePluginList();
- }
-}
-
const char *MainWindow::PATTERN_BACKUP_GLOB = ".????_??_??_??_??_??";
const char *MainWindow::PATTERN_BACKUP_REGEX = "\\.(\\d\\d\\d\\d_\\d\\d_\\d\\d_\\d\\d_\\d\\d_\\d\\d)";
const char *MainWindow::PATTERN_BACKUP_DATE = "yyyy_MM_dd_hh_mm_ss";
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 5fa61c24..0db339f2 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -276,8 +276,6 @@ private:
QByteArray m_ArchiveListHash;
- bool m_DidUpdateMasterList;
-
MOBase::DelayedFileWriter m_ArchiveListWriter;
QAction* m_LinkToolbar;
@@ -431,7 +429,6 @@ private slots: // ui slots
void on_linkButton_pressed();
void on_showHiddenBox_toggled(bool checked);
void on_bsaList_itemChanged(QTreeWidgetItem *item, int column);
- void on_bossButton_clicked();
void on_saveButton_clicked();
void on_restoreButton_clicked();
diff --git a/src/pluginlistview.cpp b/src/pluginlistview.cpp
index 39db7163..f95226fc 100644
--- a/src/pluginlistview.cpp
+++ b/src/pluginlistview.cpp
@@ -20,7 +20,9 @@ using namespace MOBase;
PluginListView::PluginListView(QWidget *parent)
: QTreeView(parent)
+ , m_sortProxy(nullptr)
, m_Scrollbar(new ViewMarkingScrollBar(this->model(), this))
+ , m_didUpdateMasterList(false)
{
setVerticalScrollBar(m_Scrollbar);
MOBase::setCustomizableColumns(this);
@@ -123,6 +125,49 @@ void PluginListView::onFilterChanged(const QString& filter)
updatePluginCount();
}
+void PluginListView::onSortButtonClicked()
+{
+ const bool offline = m_core->settings().network().offlineMode();
+
+ auto r = QMessageBox::No;
+
+ if (offline) {
+ r = QMessageBox::question(
+ topLevelWidget(), tr("Sorting plugins"),
+ tr("Are you sure you want to sort your plugins list?") + "\r\n\r\n" +
+ tr("Note: You are currently in offline mode and LOOT will not update the master list."),
+ QMessageBox::Yes | QMessageBox::No);
+ }
+ else {
+ r = QMessageBox::question(
+ topLevelWidget(), tr("Sorting plugins"),
+ tr("Are you sure you want to sort your plugins list?"),
+ QMessageBox::Yes | QMessageBox::No);
+ }
+
+ if (r != QMessageBox::Yes) {
+ return;
+ }
+
+ m_core->savePluginList();
+
+ topLevelWidget()->setEnabled(false);
+ Guard g([=]() { topLevelWidget()->setEnabled(true); });
+
+ // don't try to update the master list in offline mode
+ const bool didUpdateMasterList = offline ? true : m_didUpdateMasterList;
+
+ if (runLoot(topLevelWidget(), *m_core, didUpdateMasterList)) {
+ // don't assume the master list was updated in offline mode
+ if (!offline) {
+ m_didUpdateMasterList = true;
+ }
+
+ m_core->refreshESPList(false);
+ m_core->savePluginList();
+ }
+}
+
std::pair<QModelIndex, QModelIndexList> PluginListView::selected() const
{
return { indexViewToModel(currentIndex()), indexViewToModel(selectionModel()->selectedRows()) };
@@ -151,8 +196,11 @@ void PluginListView::setup(OrganizerCore& core, MainWindow* mw, Ui::MainWindow*
setItemDelegateForColumn(PluginList::COL_FLAGS, new GenericIconDelegate(this));
// counter
- connect(core.pluginList(), &PluginList::writePluginsList, [=]() { updatePluginCount(); });
- connect(core.pluginList(), &PluginList::esplist_changed, [=]() { updatePluginCount(); });
+ connect(core.pluginList(), &PluginList::writePluginsList, [=]{ updatePluginCount(); });
+ connect(core.pluginList(), &PluginList::esplist_changed, [=]{ updatePluginCount(); });
+
+ // sort
+ connect(mwui->bossButton, &QPushButton::clicked, [=]{ onSortButtonClicked(); });
// filter
connect(ui.filter, &QLineEdit::textChanged, m_sortProxy, &PluginListSortProxy::updateFilter);
diff --git a/src/pluginlistview.h b/src/pluginlistview.h
index 4a637bd1..e5dc15e7 100644
--- a/src/pluginlistview.h
+++ b/src/pluginlistview.h
@@ -46,6 +46,7 @@ protected slots:
void onDoubleClicked(const QModelIndex& index);
void onFilterChanged(const QString& filter);
+ void onSortButtonClicked();
protected:
@@ -77,10 +78,10 @@ private:
PluginListViewUi ui;
PluginListSortProxy* m_sortProxy;
-
ModListViewActions* m_modActions;
-
ViewMarkingScrollBar* m_Scrollbar;
+
+ bool m_didUpdateMasterList;
};
#endif // PLUGINLISTVIEW_H