|
|
|
@ -18,34 +18,67 @@
@@ -18,34 +18,67 @@
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
#include "profileimporter.h" |
|
|
|
|
#include <QString> |
|
|
|
|
#include <QFile> |
|
|
|
|
#include <QDir> |
|
|
|
|
|
|
|
|
|
#include <QApplication> |
|
|
|
|
#include <QFileDialog> |
|
|
|
|
#include <QFileInfo> |
|
|
|
|
#include "src/persistence/settings.h" |
|
|
|
|
#include "src/core/core.h" |
|
|
|
|
#include "src/widget/gui.h" |
|
|
|
|
#include <QDebug> |
|
|
|
|
#include <QMessageBox> |
|
|
|
|
#include <QPushButton> |
|
|
|
|
|
|
|
|
|
#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)
@@ -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)
@@ -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)
@@ -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
|
|
|
|
|
} |
|
|
|
|