2016-03-25 07:07:58 +01:00
/*****************************************************************************
* gta5sync GRAND THEFT AUTO V SYNC
2016-03-27 09:52:23 +02:00
* Copyright ( C ) 2016 Syping
2016-03-25 07:07:58 +01:00
*
* This program is free 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 .
*
* This program 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 this program . If not , see < http : //www.gnu.org/licenses/>.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# include "SavegameWidget.h"
# include "ui_SavegameWidget.h"
2016-03-28 20:00:04 +02:00
# include "StandardPaths.h"
2016-03-26 09:22:47 +01:00
# include "SavegameData.h"
2016-03-28 20:00:04 +02:00
# include <QFileDialog>
2016-03-28 17:46:42 +02:00
# include <QMessageBox>
2016-03-28 21:37:42 +02:00
# include <QSettings>
2016-03-28 20:00:04 +02:00
# include <QFileInfo>
2016-03-28 17:46:42 +02:00
# include <QFile>
2016-03-28 20:00:04 +02:00
# include <QUrl>
2016-03-25 07:07:58 +01:00
SavegameWidget : : SavegameWidget ( QWidget * parent ) :
QWidget ( parent ) ,
ui ( new Ui : : SavegameWidget )
{
ui - > setupUi ( this ) ;
2016-03-26 09:22:47 +01:00
sgdPath = " " ;
2016-03-28 17:46:42 +02:00
sgdStr = " " ;
2016-03-26 09:22:47 +01:00
sgdata = 0 ;
2016-03-25 07:07:58 +01:00
}
SavegameWidget : : ~ SavegameWidget ( )
{
delete ui ;
}
2016-03-26 09:22:47 +01:00
void SavegameWidget : : setSavegameData ( SavegameData * savegame , QString savegamePath )
{
ui - > labSavegameStr - > setText ( savegame - > getSavegameStr ( ) ) ;
2016-03-28 17:46:42 +02:00
sgdStr = savegame - > getSavegameStr ( ) ;
2016-03-26 09:22:47 +01:00
sgdPath = savegamePath ;
sgdata = savegame ;
}
2016-03-28 17:46:42 +02:00
void SavegameWidget : : on_cmdDelete_clicked ( )
{
2016-03-28 17:49:23 +02:00
int uchoice = QMessageBox : : question ( this , tr ( " Delete savegame " ) , tr ( " Are you sure to delete %1 from your savegames? " ) . arg ( " \" " + sgdStr + " \" " ) , QMessageBox : : No | QMessageBox : : Yes , QMessageBox : : No ) ;
2016-03-28 17:46:42 +02:00
if ( uchoice = = QMessageBox : : Yes )
{
if ( ! QFile : : exists ( sgdPath ) )
{
emit savegameDeleted ( ) ;
}
else if ( QFile : : remove ( sgdPath ) )
{
emit savegameDeleted ( ) ;
}
else
{
2016-03-28 17:49:23 +02:00
QMessageBox : : warning ( this , tr ( " Delete savegame " ) , tr ( " Failed at deleting %1 from your savegames " ) . arg ( " \" " + sgdStr + " \" " ) ) ;
2016-03-28 17:46:42 +02:00
}
}
}
2016-03-28 20:00:04 +02:00
void SavegameWidget : : on_cmdCopy_clicked ( )
{
2016-03-28 21:37:42 +02:00
QSettings settings ( " Syping " , " gta5sync " ) ;
settings . beginGroup ( " FileDialogs " ) ;
2016-03-29 11:22:41 +02:00
fileDialogPreSave :
QFileInfo sgdFileInfo ( sgdPath ) ;
2016-03-28 20:00:04 +02:00
QFileDialog fileDialog ( this ) ;
fileDialog . setFileMode ( QFileDialog : : AnyFile ) ;
fileDialog . setViewMode ( QFileDialog : : Detail ) ;
fileDialog . setAcceptMode ( QFileDialog : : AcceptSave ) ;
fileDialog . setOption ( QFileDialog : : DontUseNativeDialog , true ) ;
2016-03-28 21:37:42 +02:00
fileDialog . setOption ( QFileDialog : : DontConfirmOverwrite , true ) ;
2016-03-28 20:00:04 +02:00
fileDialog . setDefaultSuffix ( " " ) ;
fileDialog . setWindowFlags ( fileDialog . windowFlags ( ) ^ Qt : : WindowContextHelpButtonHint ) ;
fileDialog . setWindowTitle ( tr ( " Copy savegame " ) ) ;
QStringList filters ;
filters < < tr ( " Savegame files (SGTA*) " ) ;
filters < < tr ( " All files (**) " ) ;
fileDialog . setNameFilters ( filters ) ;
QList < QUrl > sidebarUrls = fileDialog . sidebarUrls ( ) ;
QDir dir ;
// Get Documents + Desktop Location
QString documentsLocation = StandardPaths : : documentsLocation ( ) ;
QString desktopLocation = StandardPaths : : desktopLocation ( ) ;
// Add Desktop Location to Sidebar
dir . setPath ( desktopLocation ) ;
if ( dir . exists ( ) )
{
sidebarUrls . append ( QUrl : : fromLocalFile ( dir . absolutePath ( ) ) ) ;
}
// Add Documents + GTA V Location to Sidebar
dir . setPath ( documentsLocation ) ;
if ( dir . exists ( ) )
{
sidebarUrls . append ( QUrl : : fromLocalFile ( dir . absolutePath ( ) ) ) ;
if ( dir . cd ( " Rockstar Games/GTA V " ) )
{
sidebarUrls . append ( QUrl : : fromLocalFile ( dir . absolutePath ( ) ) ) ;
}
}
fileDialog . setSidebarUrls ( sidebarUrls ) ;
2016-03-28 21:37:42 +02:00
fileDialog . restoreState ( settings . value ( " CopySavegame " , " " ) . toByteArray ( ) ) ;
2016-03-29 11:22:41 +02:00
fileDialog . selectFile ( sgdFileInfo . fileName ( ) ) ;
2016-03-28 20:00:04 +02:00
if ( fileDialog . exec ( ) )
{
QStringList selectedFiles = fileDialog . selectedFiles ( ) ;
if ( selectedFiles . length ( ) = = 1 )
{
QString selectedFile = selectedFiles . at ( 0 ) ;
2016-03-28 21:37:42 +02:00
if ( QFile : : exists ( selectedFile ) )
{
if ( QMessageBox : : Yes = = QMessageBox : : warning ( this , tr ( " Copy savegame " ) , tr ( " Overwrite %1 with current savegame? " ) . arg ( " \" " + selectedFile + " \" " ) , QMessageBox : : Yes | QMessageBox : : No , QMessageBox : : Yes ) )
{
if ( ! QFile : : remove ( selectedFile ) )
{
QMessageBox : : warning ( this , tr ( " Copy savegame " ) , tr ( " Failed to overwrite %1 with current savegame " ) . arg ( " \" " + selectedFile + " \" " ) ) ;
goto fileDialogPreSave ;
}
}
else
{
goto fileDialogPreSave ;
}
}
2016-03-28 20:00:04 +02:00
2016-03-28 21:37:42 +02:00
bool isCopied = QFile : : copy ( sgdPath , selectedFile ) ;
2016-03-28 20:00:04 +02:00
if ( ! isCopied )
{
2016-03-28 21:37:42 +02:00
QMessageBox : : warning ( this , tr ( " Copy savegame " ) , tr ( " Failed to copy current savegame " ) ) ;
2016-03-28 20:00:04 +02:00
goto fileDialogPreSave ;
}
}
else
{
QMessageBox : : warning ( this , tr ( " Copy savegame " ) , tr ( " No valid file is selected " ) ) ;
goto fileDialogPreSave ;
}
}
2016-03-28 21:37:42 +02:00
settings . setValue ( " CopySavegame " , fileDialog . saveState ( ) ) ;
settings . endGroup ( ) ;
2016-03-28 20:00:04 +02:00
}