summaryrefslogtreecommitdiff
path: root/src/profilesdialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/profilesdialog.cpp')
-rw-r--r--src/profilesdialog.cpp34
1 files changed, 19 insertions, 15 deletions
diff --git a/src/profilesdialog.cpp b/src/profilesdialog.cpp
index ef9b607b..c6731041 100644
--- a/src/profilesdialog.cpp
+++ b/src/profilesdialog.cpp
@@ -25,6 +25,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include "profileinputdialog.h"
#include "mainwindow.h"
#include <gameinfo.h>
+#include <appconfig.h>
#include <QListWidgetItem>
#include <QInputDialog>
#include <QLineEdit>
@@ -39,12 +40,16 @@ using namespace MOShared;
Q_DECLARE_METATYPE(Profile::Ptr)
-ProfilesDialog::ProfilesDialog(const QString &gamePath, QWidget *parent)
- : TutorableDialog("Profiles", parent), ui(new Ui::ProfilesDialog), m_GamePath(gamePath), m_FailState(false)
+ProfilesDialog::ProfilesDialog(const QString &gamePath, MOBase::IPluginGame *gamePlugin, QWidget *parent)
+ : TutorableDialog("Profiles", parent)
+ , ui(new Ui::ProfilesDialog)
+ , m_GamePlugin(gamePlugin)
+ , m_GamePath(gamePath)
+ , m_FailState(false)
{
ui->setupUi(this);
- QDir profilesDir(QDir::fromNativeSeparators(ToQString(GameInfo::instance().getProfilesDir())));
+ QDir profilesDir(qApp->property("dataPath").toString() + "/" + QString::fromStdWString(AppConfig::profilesPath()));
profilesDir.setFilter(QDir::AllDirs | QDir::NoDotAndDotDot);
m_ProfilesList = findChild<QListWidget*>("profilesList");
@@ -92,20 +97,19 @@ void ProfilesDialog::addItem(const QString &name)
QDir profileDir(name);
QListWidgetItem *newItem = new QListWidgetItem(profileDir.dirName(), m_ProfilesList);
try {
- newItem->setData(Qt::UserRole, QVariant::fromValue(Profile::Ptr(new Profile(profileDir))));
+ newItem->setData(Qt::UserRole, QVariant::fromValue(Profile::Ptr(new Profile(profileDir, m_GamePlugin))));
m_FailState = false;
} catch (const std::exception& e) {
reportError(tr("failed to create profile: %1").arg(e.what()));
}
}
-
void ProfilesDialog::createProfile(const QString &name, bool useDefaultSettings)
{
try {
QListWidget *profilesList = findChild<QListWidget*>("profilesList");
QListWidgetItem *newItem = new QListWidgetItem(name, profilesList);
- newItem->setData(Qt::UserRole, QVariant::fromValue(Profile::Ptr(new Profile(name, useDefaultSettings))));
+ newItem->setData(Qt::UserRole, QVariant::fromValue(Profile::Ptr(new Profile(name, m_GamePlugin, useDefaultSettings))));
profilesList->addItem(newItem);
m_FailState = false;
} catch (const std::exception&) {
@@ -114,13 +118,12 @@ void ProfilesDialog::createProfile(const QString &name, bool useDefaultSettings)
}
}
-
void ProfilesDialog::createProfile(const QString &name, const Profile &reference)
{
try {
QListWidget *profilesList = findChild<QListWidget*>("profilesList");
QListWidgetItem *newItem = new QListWidgetItem(name, profilesList);
- newItem->setData(Qt::UserRole, QVariant::fromValue(Profile::Ptr(Profile::createPtrFrom(name, reference))));
+ newItem->setData(Qt::UserRole, QVariant::fromValue(Profile::Ptr(Profile::createPtrFrom(name, reference, m_GamePlugin))));
profilesList->addItem(newItem);
m_FailState = false;
} catch (const std::exception&) {
@@ -129,7 +132,6 @@ void ProfilesDialog::createProfile(const QString &name, const Profile &reference
}
}
-
void ProfilesDialog::on_addProfileButton_clicked()
{
ProfileInputDialog dialog(this);
@@ -176,8 +178,10 @@ void ProfilesDialog::on_removeProfileButton_clicked()
Profile::Ptr currentProfile = profilesList->currentItem()->data(Qt::UserRole).value<Profile::Ptr>();
QString profilePath;
- if (currentProfile.get() == NULL) {
- profilePath = QDir::fromNativeSeparators(ToQString(GameInfo::instance().getProfilesDir())) + "/" + profilesList->currentItem()->text();
+ if (currentProfile.get() == nullptr) {
+ profilePath = qApp->property("dataPath").toString()
+ + "/" + QString::fromStdWString(AppConfig::profilesPath())
+ + "/" + profilesList->currentItem()->text();
if (QMessageBox::question(this, tr("Profile broken"),
tr("This profile you're about to delete seems to be broken or the path is invalid. "
"I'm about to delete the following folder: \"%1\". Proceed?").arg(profilePath), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) {
@@ -189,7 +193,7 @@ void ProfilesDialog::on_removeProfileButton_clicked()
profilePath = currentProfile->getPath();
}
QListWidgetItem* item = profilesList->takeItem(profilesList->currentRow());
- if (item != NULL) {
+ if (item != nullptr) {
delete item;
}
if (!shellDelete(QStringList(profilePath))) {
@@ -230,7 +234,7 @@ void ProfilesDialog::on_invalidationBox_stateChanged(int state)
QListWidget *profilesList = findChild<QListWidget*>("profilesList");
QListWidgetItem *currentItem = profilesList->currentItem();
- if (currentItem == NULL) {
+ if (currentItem == nullptr) {
return;
}
if (!ui->invalidationBox->isEnabled()) {
@@ -262,7 +266,7 @@ void ProfilesDialog::on_profilesList_currentItemChanged(QListWidgetItem *current
QPushButton *transferButton = findChild<QPushButton*>("transferButton");
QPushButton *renameButton = findChild<QPushButton*>("renameButton");
- if (current != NULL) {
+ if (current != nullptr) {
if (!current->data(Qt::UserRole).isValid()) return;
const Profile::Ptr currentProfile = current->data(Qt::UserRole).value<Profile::Ptr>();
@@ -314,6 +318,6 @@ void ProfilesDialog::on_localSavesBox_stateChanged(int state)
void ProfilesDialog::on_transferButton_clicked()
{
const Profile::Ptr currentProfile = m_ProfilesList->currentItem()->data(Qt::UserRole).value<Profile::Ptr>();
- TransferSavesDialog transferDialog(*currentProfile, this);
+ TransferSavesDialog transferDialog(*currentProfile, m_GamePlugin, this);
transferDialog.exec();
}