diff --git a/qtox.pro b/qtox.pro
index dbe17ce62..5f6ec00b6 100644
--- a/qtox.pro
+++ b/qtox.pro
@@ -483,7 +483,8 @@ SOURCES += \
src/widget/about/aboutuser.cpp \
src/persistence/db/rawdatabase.cpp \
src/persistence/history.cpp \
- src/widget/form/groupinviteform.cpp
+ src/widget/form/groupinviteform.cpp \
+ src/widget/tool/profileimporter.cpp
HEADERS += \
src/audio/audio.h \
@@ -540,4 +541,5 @@ HEADERS += \
src/widget/about/aboutuser.h \
src/persistence/db/rawdatabase.h \
src/persistence/history.h \
- src/widget/form/groupinviteform.h
+ src/widget/form/groupinviteform.h \
+ src/widget/tool/profileimporter.h
diff --git a/src/loginscreen.ui b/src/loginscreen.ui
index 722e6d387..37f4850bf 100644
--- a/src/loginscreen.ui
+++ b/src/loginscreen.ui
@@ -42,7 +42,7 @@
true
- 0
+ 1
@@ -333,6 +333,13 @@
-
+
-
+
+
+ Import
+
+
+
-
diff --git a/src/widget/loginscreen.cpp b/src/widget/loginscreen.cpp
index 7dfa65f21..474b4c551 100644
--- a/src/widget/loginscreen.cpp
+++ b/src/widget/loginscreen.cpp
@@ -27,6 +27,7 @@
#include "src/widget/form/setpassworddialog.h"
#include "src/widget/translator.h"
#include "src/widget/style.h"
+#include "src/widget/tool/profileimporter.h"
#include
#include
@@ -54,6 +55,7 @@ LoginScreen::LoginScreen(QWidget *parent) :
connect(ui->newPass, &QLineEdit::textChanged, this, &LoginScreen::onPasswordEdited);
connect(ui->newPassConfirm, &QLineEdit::textChanged, this, &LoginScreen::onPasswordEdited);
connect(ui->autoLoginCB, &QCheckBox::stateChanged, this, &LoginScreen::onAutoLoginToggled);
+ connect(ui->importButton, &QPushButton::clicked, this, &LoginScreen::onImportProfile);
reset();
this->setStyleSheet(Style::getStylesheet(":/ui/loginScreen/loginScreen.css"));
@@ -255,3 +257,13 @@ void LoginScreen::retranslateUi()
{
ui->retranslateUi(this);
}
+
+void LoginScreen::onImportProfile()
+{
+ ProfileImporter *pi = new ProfileImporter(this);
+ if(pi->importProfile() == true)
+ {
+ reset();
+ }
+ delete pi;
+}
diff --git a/src/widget/loginscreen.h b/src/widget/loginscreen.h
index 66e027d34..0a8361a09 100644
--- a/src/widget/loginscreen.h
+++ b/src/widget/loginscreen.h
@@ -54,6 +54,7 @@ private slots:
// Buttons to submit form
void onCreateNewProfile();
void onLogin();
+ void onImportProfile();
private:
void retranslateUi();
diff --git a/src/widget/tool/profileimporter.cpp b/src/widget/tool/profileimporter.cpp
new file mode 100644
index 000000000..41513379a
--- /dev/null
+++ b/src/widget/tool/profileimporter.cpp
@@ -0,0 +1,85 @@
+/*
+ Copyright © 2015-2016 by The qTox Project
+
+ This file is part of qTox, a Qt-based graphical interface for Tox.
+
+ qTox is libre software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ qTox is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with qTox. If not, see .
+*/
+
+#include "profileimporter.h"
+#include
+#include
+#include
+#include
+#include
+#include "src/persistence/settings.h"
+#include "src/core/core.h"
+#include "src/widget/gui.h"
+#include
+#include
+
+ProfileImporter::ProfileImporter(QWidget *parent) : QWidget(parent)
+{
+
+}
+
+bool ProfileImporter::importProfile()
+{
+ QString path = QFileDialog::getOpenFileName( this,
+ tr("Import profile", "import dialog title"),
+ QDir::homePath(),
+ tr("Tox save file (*.tox)", "import dialog filter") );
+
+ if (path.isEmpty())
+ return false;
+
+ QFileInfo info(path);
+ QString profile = info.completeBaseName();
+
+ if (info.suffix() != "tox")
+ {
+ 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);
+
+ if (QFileInfo(profilePath).exists())
+ {
+ QMessageBox::StandardButton reply;
+ reply = QMessageBox::warning( this,
+ tr("Profile already exists", "import confirm title"),
+ tr("A profile named \"%1\" already exists. Do you want to erase it?", "import confirm text").arg(profile),
+ QMessageBox::Yes | QMessageBox::No);
+
+ if (reply == QMessageBox::Yes)
+ {
+ QFile::copy(path, profilePath);
+ return true; //import successfull
+ }
+ else
+ {
+ return false; //import canelled
+ }
+ }
+ else
+ {
+ QFile::copy(path, profilePath);
+ return true; //import successfull
+ }
+
+}
diff --git a/src/widget/tool/profileimporter.h b/src/widget/tool/profileimporter.h
new file mode 100644
index 000000000..5ec3040e6
--- /dev/null
+++ b/src/widget/tool/profileimporter.h
@@ -0,0 +1,38 @@
+/*
+ Copyright © 2015-2016 by The qTox Project
+
+ This file is part of qTox, a Qt-based graphical interface for Tox.
+
+ qTox is libre software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ qTox is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with qTox. If not, see .
+*/
+
+#ifndef PROFILEIMPORTER_H
+#define PROFILEIMPORTER_H
+
+#include
+
+class ProfileImporter : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit ProfileImporter(QWidget *parent = 0);
+ bool importProfile();
+
+signals:
+
+public slots:
+};
+
+#endif // PROFILEIMPORTER_H
diff --git a/ui/loginScreen/loginScreen.css b/ui/loginScreen/loginScreen.css
index d742cbdd1..a67052122 100644
--- a/ui/loginScreen/loginScreen.css
+++ b/ui/loginScreen/loginScreen.css
@@ -36,6 +36,7 @@ QStackedWidget QPushButton
}
#loginButton,
+#importButton,
#createAccountButton {
border-radius:5px;
padding:5px;
@@ -43,6 +44,7 @@ QStackedWidget QPushButton
}
#loginButton:hover,
+#importButton:hover,
#createAccountButton:hover {
background: #0c530d;
}