diff --git a/src/widget/tool/profileimporter.cpp b/src/widget/tool/profileimporter.cpp index 22bdc4d4d..9298c74f9 100644 --- a/src/widget/tool/profileimporter.cpp +++ b/src/widget/tool/profileimporter.cpp @@ -18,34 +18,67 @@ */ #include "profileimporter.h" -#include -#include -#include + +#include #include -#include -#include "src/persistence/settings.h" -#include "src/core/core.h" -#include "src/widget/gui.h" -#include #include +#include + +#include "src/core/core.h" +#include "src/persistence/settings.h" + +/** + * @class ProfileImporter + * @brief This class provides the ability to import profile. + * @note This class can be used before @a Nexus instance will be created, + * consequently it can't use @a GUI class. Therefore it should use QMessageBox + * to create dialog forms. + */ ProfileImporter::ProfileImporter(QWidget *parent) : QWidget(parent) { } +/** + * @brief Show a file dialog. Selected file will be imported as Tox profile. + * @return True, if the import was succesful. False otherwise. + */ bool ProfileImporter::importProfile() { - QString path = QFileDialog::getOpenFileName(this, - tr("Import profile", "import dialog title"), - QDir::homePath(), - tr("Tox save file (*.tox)", "import dialog filter"), - 0, + QString title = tr("Import profile", "import dialog title"); + QString filter = tr("Tox save file (*.tox)", "import dialog filter"); + QString dir = QDir::homePath(); + QString path = QFileDialog::getOpenFileName(this, title, dir, filter, 0, QFileDialog::DontUseNativeDialog); return importProfile(path); } +/** + * @brief Asks the user a question with Yes/No choices. + * @param title Title of question window. + * @param message Text in question window. + * @return True if the answer is positive, false otherwise. + */ +bool ProfileImporter::askQuestion(QString title, QString message) +{ + QMessageBox::Icon icon = QMessageBox::Warning; + QMessageBox box(icon, title, message, QMessageBox::NoButton, this); + QPushButton* pushButton1 = box.addButton(QApplication::tr("Yes"), QMessageBox::AcceptRole); + QPushButton* pushButton2 = box.addButton(QApplication::tr("No"), QMessageBox::RejectRole); + box.setDefaultButton(pushButton2); + box.setEscapeButton(pushButton2); + + box.exec(); + return box.clickedButton() == pushButton1; +} + +/** + * @brief Try to import Tox profile. + * @param path Path to Tox profile. + * @return True, if the import was succesful. False otherwise. + */ bool ProfileImporter::importProfile(const QString &path) { if (path.isEmpty()) @@ -54,8 +87,8 @@ bool ProfileImporter::importProfile(const QString &path) QFileInfo info(path); if (!info.exists()) { - GUI::showWarning(tr("File doesn't exist"), - tr("Profile doesn't exist")); + QMessageBox::warning(this, tr("File doesn't exist"), + tr("Profile doesn't exist"), QMessageBox::Ok); return false; } @@ -63,18 +96,23 @@ bool ProfileImporter::importProfile(const QString &path) if (info.suffix() != "tox") { - GUI::showWarning(tr("Ignoring non-Tox file", "popup title"), - tr("Warning: You have chosen a file that is not a Tox save file; ignoring.", "popup text")); + QMessageBox::warning(this, tr("Ignoring non-Tox file", "popup title"), + tr("Warning: You have chosen a file that is not a " + "Tox save file; ignoring.", "popup text"), + QMessageBox::Ok); return false; //ingore importing non-tox file } - QString profilePath = QDir(Settings::getInstance().getSettingsDirPath()).filePath(profile + Core::TOX_EXT); + QString settingsPath = Settings::getInstance().getSettingsDirPath(); + QString profilePath = QDir(settingsPath).filePath(profile + Core::TOX_EXT); if (QFileInfo(profilePath).exists()) { QString title = tr("Profile already exists", "import confirm title"); - QString message = tr("A profile named \"%1\" already exists. Do you want to erase it?", "import confirm text").arg(profile); - bool erase = GUI::askQuestion(title, message); + QString message = tr("A profile named \"%1\" already exists. " + "Do you want to erase it?", + "import confirm text").arg(profile); + bool erase = askQuestion(title, message); if (!erase) return false; //import canelled @@ -85,7 +123,9 @@ bool ProfileImporter::importProfile(const QString &path) QFile::copy(path, profilePath); // no good way to update the ui from here... maybe we need a Widget:refreshUi() function... // such a thing would simplify other code as well I believe - GUI::showInfo(tr("Profile imported"), - tr("%1.tox was successfully imported").arg(profile)); + QMessageBox::information(this, tr("Profile imported"), + tr("%1.tox was successfully imported").arg(profile), + QMessageBox::Ok); + return true; //import successfull } diff --git a/src/widget/tool/profileimporter.h b/src/widget/tool/profileimporter.h index 9b5d988db..bb68f4cac 100644 --- a/src/widget/tool/profileimporter.h +++ b/src/widget/tool/profileimporter.h @@ -31,9 +31,8 @@ public: bool importProfile(const QString &path); bool importProfile(); -signals: - -public slots: +private: + bool askQuestion(QString title, QString message); }; #endif // PROFILEIMPORTER_H