@ -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 : : sho wW arning( 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
}