diff options
| author | Tannin <devnull@localhost> | 2013-07-13 10:10:46 +0200 |
|---|---|---|
| committer | Tannin <devnull@localhost> | 2013-07-13 10:10:46 +0200 |
| commit | 8d34ae34135cfd495556a059c449a5f11ca6212c (patch) | |
| tree | 555ffc51d1e084ac148ccb4b928898ab1ed4fc62 | |
| parent | 849a0a0ef40c9fa1feb15b880aa52fccdd84f234 (diff) | |
- some fixes to the refreshing behaviour
- "fix" buttons in problems dialog are now actually functional
- python proxy now has diagnosis functionality to warn user if correct proxy version is not available
- python proxy now has a configurable python path
| -rw-r--r-- | src/mainwindow.cpp | 11 | ||||
| -rw-r--r-- | src/pluginlist.cpp | 3 | ||||
| -rw-r--r-- | src/problemsdialog.cpp | 16 | ||||
| -rw-r--r-- | src/problemsdialog.h | 1 | ||||
| -rw-r--r-- | src/qtgroupingproxy.cpp | 12 | ||||
| -rw-r--r-- | src/settingsdialog.cpp | 6 | ||||
| -rw-r--r-- | src/version.rc | 4 |
7 files changed, 31 insertions, 22 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index b95be745..f001f3b2 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1318,8 +1318,8 @@ void MainWindow::activateSelectedProfile() connect(m_CurrentProfile, SIGNAL(modStatusChanged(uint)), this, SLOT(modStatusChanged(uint))); - refreshModList(); refreshSaveList(); + refreshModList(); } @@ -1484,7 +1484,6 @@ void MainWindow::refreshDirectoryStructure() m_DirectoryRefresher.setMods(activeModList); statusBar()->show(); -// m_RefreshProgress->setVisible(true); m_RefreshProgress->setRange(0, 100); QTimer::singleShot(0, &m_DirectoryRefresher, SLOT(refresh())); @@ -1552,7 +1551,6 @@ void MainWindow::refreshDataTree() void MainWindow::refreshSaveList() { - refreshLists(); ui->savegameList->clear(); QDir savesDir; @@ -2191,7 +2189,9 @@ void MainWindow::directory_refreshed() return; } m_DirectoryUpdate = false; - refreshLists(); + if (m_CurrentProfile != NULL) { + refreshLists(); + } // m_RefreshProgress->setVisible(false); statusBar()->hide(); } @@ -2975,7 +2975,8 @@ void MainWindow::saveCategories() saveCategoriesFromMenu(menu, mapToModel(&m_ModList, selected.at(i)).row()); } //m_ModList.notifyChange(min, max); - refreshModList(); + m_ModList.notifyChange(-1); +// refreshModList(); // find mods by their name because indices are invalidated QAbstractItemModel *model = ui->modList->model(); diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp index d29ca585..df132287 100644 --- a/src/pluginlist.cpp +++ b/src/pluginlist.cpp @@ -643,12 +643,9 @@ bool PluginList::setData(const QModelIndex &index, const QVariant &value, int ro if (role == Qt::CheckStateRole) { m_ESPs[index.row()].m_Enabled = value.toInt() == Qt::Checked; - emit layoutAboutToBeChanged(); - refreshLoadOrder(); startSaveTime(); - emit layoutChanged(); return true; } else { return false; diff --git a/src/problemsdialog.cpp b/src/problemsdialog.cpp index 8173e1e2..d5700381 100644 --- a/src/problemsdialog.cpp +++ b/src/problemsdialog.cpp @@ -20,13 +20,19 @@ ProblemsDialog::ProblemsDialog(std::vector<MOBase::IPluginDiagnose *> diagnosePl QTreeWidgetItem *newItem = new QTreeWidgetItem();
newItem->setText(0, diagnose->shortDescription(key));
newItem->setData(0, Qt::UserRole, diagnose->fullDescription(key));
+ newItem->setData(1, Qt::UserRole, qVariantFromValue(reinterpret_cast<void*>(diagnose)));
+ newItem->setData(1, Qt::UserRole + 1, key);
+
+ ui->problemsWidget->addTopLevelItem(newItem);
if (diagnose->hasGuidedFix(key)) {
- ui->problemsWidget->setItemWidget(newItem, 1, new QPushButton(tr("Fix")));
+ newItem->setText(1, tr("fix"));
+ QPushButton *fixButton = new QPushButton(tr("Fix"));
+ connect(fixButton, SIGNAL(clicked()), this, SLOT(startFix()));
+ ui->problemsWidget->setItemWidget(newItem, 1, fixButton);
} else {
newItem->setText(1, tr("No guided fix"));
}
- ui->problemsWidget->addTopLevelItem(newItem);
}
}
connect(ui->problemsWidget, SIGNAL(itemSelectionChanged()), this, SLOT(selectionChanged()));
@@ -52,6 +58,12 @@ void ProblemsDialog::selectionChanged() ui->descriptionText->setLineWrapMode(text.contains('\n') ? QTextEdit::NoWrap : QTextEdit::WidgetWidth);
}
+void ProblemsDialog::startFix()
+{
+ IPluginDiagnose *plugin = reinterpret_cast<IPluginDiagnose*>(ui->problemsWidget->currentItem()->data(1, Qt::UserRole).value<void*>());
+ plugin->startGuidedFix(ui->problemsWidget->currentItem()->data(1, Qt::UserRole + 1).toUInt());
+}
+
void ProblemsDialog::urlClicked(const QUrl &url)
{
::ShellExecuteW(NULL, L"open", ToWString(url.toString()).c_str(), NULL, NULL, SW_SHOWNORMAL);
diff --git a/src/problemsdialog.h b/src/problemsdialog.h index 299faf8d..050785f4 100644 --- a/src/problemsdialog.h +++ b/src/problemsdialog.h @@ -27,6 +27,7 @@ private slots: void selectionChanged();
void urlClicked(const QUrl &url);
+ void startFix();
private:
Ui::ProblemsDialog *ui;
diff --git a/src/qtgroupingproxy.cpp b/src/qtgroupingproxy.cpp index f62d45d3..45ff192b 100644 --- a/src/qtgroupingproxy.cpp +++ b/src/qtgroupingproxy.cpp @@ -215,10 +215,7 @@ QtGroupingProxy::buildTree() QList<int>
QtGroupingProxy::addSourceRow( const QModelIndex &idx )
{
- // TODO: modeltest reports a discrepance between the "rowAboutToBeInserted" and "rowInserted" events
-
QList<int> updatedGroups;
-
QList<RowData> groupData = belongsTo( idx );
//an empty list here means it's supposed to go in root.
@@ -265,7 +262,6 @@ QtGroupingProxy::addSourceRow( const QModelIndex &idx ) updatedGroups << updatedGroup;
}
-
//update m_groupHash to the new source-model layout (one row added)
QMutableHashIterator<quint32, QList<int> > i( m_groupHash );
while( i.hasNext() )
@@ -290,9 +286,7 @@ QtGroupingProxy::addSourceRow( const QModelIndex &idx ) if( updatedGroups.contains( i.key() ) )
{
//the row needs to be added to this group
- beginInsertRows( index( i.key() ), insertedProxyRow, insertedProxyRow );
groupList.insert( insertedProxyRow, idx.row() );
- endInsertRows();
}
}
@@ -337,11 +331,13 @@ QModelIndex QtGroupingProxy::index( int row, int column, const QModelIndex &parent ) const
{
// qDebug() << "index requested for: (" << row << "," << column << "), " << parent;
- if( !hasIndex(row, column, parent) )
+ if( !hasIndex(row, column, parent) ) {
return QModelIndex();
+ }
- if( parent.column() > 0 )
+ if( parent.column() > 0 ) {
return QModelIndex();
+ }
/* We save the instructions to make the parent of the index in a struct.
* The place of the struct in the list is stored in the internalId
diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp index 8fb990c1..9f268455 100644 --- a/src/settingsdialog.cpp +++ b/src/settingsdialog.cpp @@ -145,8 +145,10 @@ void SettingsDialog::on_pluginsList_currentItemChanged(QListWidgetItem *current, ui->pluginSettingsList->setEnabled(settings.count() != 0); for (auto iter = settings.begin(); iter != settings.end(); ++iter) { QTreeWidgetItem *newItem = new QTreeWidgetItem(QStringList(iter.key())); - newItem->setData(1, Qt::DisplayRole, *iter); - newItem->setData(1, Qt::EditRole, *iter); + QVariant value = *iter; + newItem->setData(1, Qt::DisplayRole, value); + newItem->setData(1, Qt::EditRole, value); + newItem->setFlags(newItem->flags() | Qt::ItemIsEditable); ui->pluginSettingsList->addTopLevelItem(newItem); } diff --git a/src/version.rc b/src/version.rc index 4a13f65b..e23603f1 100644 --- a/src/version.rc +++ b/src/version.rc @@ -1,7 +1,7 @@ #include "Winver.h"
-#define VER_FILEVERSION 0,99,1,0
-#define VER_FILEVERSION_STR "0,99,1,0\0"
+#define VER_FILEVERSION 0,99,2,0
+#define VER_FILEVERSION_STR "0,99,2,0\0"
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILEVERSION
|
