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-29 15:14:49 +02:00
# include "SidebarGenerator.h"
2016-04-03 09:23:14 +02:00
# include "ProfileInterface.h"
2016-04-02 21:09:07 +02:00
# include "SavegameDialog.h"
2016-03-28 20:00:04 +02:00
# include "StandardPaths.h"
2016-03-26 09:22:47 +01:00
# include "SavegameData.h"
2016-04-02 21:09:07 +02:00
# include "SavegameCopy.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-04-03 05:25:54 +02:00
# include <QPalette>
# include <QColor>
# include <QBrush>
# include <QTimer>
2016-03-28 17:46:42 +02:00
# include <QFile>
2016-04-03 01:18:48 +02:00
# include <QMenu>
2016-03-28 20:00:04 +02:00
# include <QUrl>
2016-03-25 07:07:58 +01:00
SavegameWidget : : SavegameWidget ( QWidget * parent ) :
2016-04-03 01:18:48 +02:00
ProfileWidget ( parent ) ,
2016-03-25 07:07:58 +01:00
ui ( new Ui : : SavegameWidget )
{
ui - > setupUi ( this ) ;
2016-04-03 01:18:48 +02:00
ui - > cmdCopy - > setVisible ( false ) ;
ui - > cmdView - > setVisible ( false ) ;
ui - > cmdDelete - > setVisible ( false ) ;
ui - > cbSelected - > setVisible ( false ) ;
2016-04-03 05:25:54 +02:00
QPalette palette ;
QColor highlightBackColor = palette . highlight ( ) . color ( ) ;
QColor highlightTextColor = palette . highlightedText ( ) . color ( ) ;
setStyleSheet ( QString ( " QFrame:hover#SavegameFrame{background-color: rgb(%1, %2, %3); color: rgb(%4, %5, %6)} " ) . arg ( QString : : number ( highlightBackColor . red ( ) ) , QString : : number ( highlightBackColor . green ( ) ) , QString : : number ( highlightBackColor . blue ( ) ) , QString : : number ( highlightTextColor . red ( ) ) , QString : : number ( highlightTextColor . green ( ) ) , QString : : number ( highlightTextColor . blue ( ) ) ) ) ;
clkIssued = 0 ;
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
2016-04-02 21:09:07 +02:00
void SavegameWidget : : on_cmdCopy_clicked ( )
{
2016-04-03 10:17:01 +02:00
SavegameCopy : : copySavegame ( this , sgdPath ) ;
2016-04-02 21:09:07 +02:00
}
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
2016-04-03 01:18:48 +02:00
void SavegameWidget : : on_cmdView_clicked ( )
{
SavegameDialog * savegameDialog = new SavegameDialog ( this ) ;
savegameDialog - > setWindowFlags ( savegameDialog - > windowFlags ( ) ^ Qt : : WindowContextHelpButtonHint ) ;
savegameDialog - > setSavegameData ( sgdata , sgdPath , true ) ;
savegameDialog - > setModal ( true ) ;
savegameDialog - > show ( ) ;
savegameDialog - > exec ( ) ;
savegameDialog - > deleteLater ( ) ;
delete savegameDialog ;
}
2016-04-03 05:25:54 +02:00
void SavegameWidget : : mousePressEvent ( QMouseEvent * ev )
{
ProfileWidget : : mouseReleaseEvent ( ev ) ;
clkIssued = true ;
}
void SavegameWidget : : mouseReleaseEvent ( QMouseEvent * ev )
{
ProfileWidget : : mouseReleaseEvent ( ev ) ;
if ( ui - > cbSelected - > isVisible ( ) )
{
if ( rect ( ) . contains ( ev - > pos ( ) ) & & ev - > button ( ) = = Qt : : LeftButton )
{
clkIssued = false ;
2016-04-03 08:39:31 +02:00
//QTimer::singleShot(QApplication::doubleClickInterval(), this, SLOT(changeCheckedState()));
ui - > cbSelected - > setChecked ( ! ui - > cbSelected - > isChecked ( ) ) ;
2016-04-03 05:25:54 +02:00
}
}
2016-04-03 05:49:18 +02:00
else
{
if ( rect ( ) . contains ( ev - > pos ( ) ) & & ev - > button ( ) = = Qt : : LeftButton )
{
on_cmdView_clicked ( ) ;
}
}
2016-04-03 05:25:54 +02:00
}
2016-04-02 21:09:07 +02:00
void SavegameWidget : : mouseDoubleClickEvent ( QMouseEvent * ev )
2016-03-28 20:00:04 +02:00
{
2016-04-02 21:09:07 +02:00
QWidget : : mouseDoubleClickEvent ( ev ) ;
2016-03-28 21:37:42 +02:00
2016-04-03 08:39:31 +02:00
// if (ev->button() == Qt::LeftButton)
// {
// clkIssued = true;
// on_cmdView_clicked();
// }
2016-04-03 01:18:48 +02:00
}
2016-04-03 05:25:54 +02:00
void SavegameWidget : : changeCheckedState ( )
2016-04-03 01:18:48 +02:00
{
2016-04-03 05:25:54 +02:00
if ( ! clkIssued )
{
ui - > cbSelected - > setChecked ( ! ui - > cbSelected - > isChecked ( ) ) ;
}
2016-04-03 01:18:48 +02:00
}
2016-04-03 08:39:31 +02:00
void SavegameWidget : : setSelected ( bool isSelected )
{
ui - > cbSelected - > setChecked ( isSelected ) ;
}
void SavegameWidget : : savegameSelected ( )
{
2016-04-03 09:23:14 +02:00
setSelected ( ! ui - > cbSelected - > isChecked ( ) ) ;
2016-04-03 08:39:31 +02:00
}
2016-04-03 01:18:48 +02:00
void SavegameWidget : : contextMenuEvent ( QContextMenuEvent * ev )
{
QMenu contextMenu ( this ) ;
2016-04-03 08:39:31 +02:00
if ( ! ui - > cbSelected - > isVisible ( ) )
2016-04-03 09:23:14 +02:00
contextMenu . addAction ( tr ( " View " ) , this , SLOT ( on_cmdView_clicked ( ) ) ) ;
contextMenu . addAction ( tr ( " Copy " ) , this , SLOT ( on_cmdCopy_clicked ( ) ) ) ;
contextMenu . addAction ( tr ( " Delete " ) , this , SLOT ( on_cmdDelete_clicked ( ) ) ) ;
if ( ui - > cbSelected - > isVisible ( ) )
2016-04-03 01:18:48 +02:00
{
contextMenu . addSeparator ( ) ;
2016-04-03 09:23:14 +02:00
if ( ! ui - > cbSelected - > isChecked ( ) ) { contextMenu . addAction ( tr ( " Select " ) , this , SLOT ( savegameSelected ( ) ) ) ; }
if ( ui - > cbSelected - > isChecked ( ) ) { contextMenu . addAction ( tr ( " Deselect " ) , this , SLOT ( savegameSelected ( ) ) ) ; }
2016-04-03 09:33:32 +02:00
contextMenu . addAction ( tr ( " Select all " ) , this , SLOT ( selectAllWidgets ( ) ) , QKeySequence : : fromString ( " Ctrl+S " ) ) ;
contextMenu . addAction ( tr ( " Deselect all " ) , this , SLOT ( deselectAllWidgets ( ) ) , QKeySequence : : fromString ( " Shift+S " ) ) ;
2016-04-03 09:23:14 +02:00
}
else
{
contextMenu . addSeparator ( ) ;
contextMenu . addAction ( tr ( " Select " ) , this , SLOT ( savegameSelected ( ) ) ) ;
2016-04-03 09:33:32 +02:00
contextMenu . addAction ( tr ( " Select all " ) , this , SLOT ( selectAllWidgets ( ) ) , QKeySequence : : fromString ( " Ctrl+S " ) ) ;
2016-04-02 21:21:26 +02:00
}
2016-04-03 01:18:48 +02:00
contextMenu . exec ( ev - > globalPos ( ) ) ;
2016-04-03 05:45:29 +02:00
setStyleSheet ( styleSheet ( ) ) ; // fix multi highlight bug
2016-04-03 01:18:48 +02:00
}
void SavegameWidget : : on_cbSelected_stateChanged ( int arg1 )
{
if ( arg1 = = Qt : : Checked )
{
emit widgetSelected ( ) ;
}
else if ( arg1 = = Qt : : Unchecked )
{
emit widgetDeselected ( ) ;
}
}
2016-04-03 03:56:24 +02:00
bool SavegameWidget : : isSelected ( )
{
return ui - > cbSelected - > isChecked ( ) ;
}
2016-04-03 01:18:48 +02:00
void SavegameWidget : : setSelectionMode ( bool selectionMode )
{
ui - > cbSelected - > setVisible ( selectionMode ) ;
2016-03-28 20:00:04 +02:00
}
2016-04-03 03:56:24 +02:00
2016-04-03 09:23:14 +02:00
void SavegameWidget : : selectAllWidgets ( )
{
emit allWidgetsSelected ( ) ;
}
void SavegameWidget : : deselectAllWidgets ( )
{
emit allWidgetsDeselected ( ) ;
}
2016-04-03 03:56:24 +02:00
SavegameData * SavegameWidget : : getSavegame ( )
{
return sgdata ;
}