2015-09-23 15:08:46 +02:00
# include "trashdialog.h"
# include "ui_trashdialog.h"
# include <QSettings>
# include <QDebug>
# include <QScriptValueIterator>
# include <QPushButton>
2016-01-31 19:53:52 +01:00
# include <services/analyticsservice.h>
2015-09-23 15:08:46 +02:00
TrashDialog : : TrashDialog ( QScriptValue notes , MainWindow * mainWindow , QWidget * parent ) :
QDialog ( parent ) ,
ui ( new Ui : : TrashDialog )
{
this - > mainWindow = mainWindow ;
ui - > setupUi ( this ) ;
2016-01-31 19:53:52 +01:00
AnalyticsService * analyticsService =
qApp - > property ( " analyticsService " ) . value < AnalyticsService * > ( ) ;
analyticsService - > sendAppView ( " trash dialog " ) ;
2015-09-23 15:08:46 +02:00
setupMainSplitter ( ) ;
QPushButton * button ;
ui - > buttonBox - > clear ( ) ;
2015-09-30 18:24:03 +02:00
button = new QPushButton ( tr ( " &Restore selected note on server " ) ) ;
2015-10-01 17:45:29 +02:00
button - > setToolTip ( " <h3>Slower, but with note versions</h3><p>The note will be restored on your ownCloud server with all versions.</p><p>You will have to wait until it is synced to QOwnNotes by ownCloud sync.</p> " ) ;
2015-09-30 18:24:03 +02:00
button - > setProperty ( " ActionRole " , RestoreOnServer ) ;
button - > setDefault ( false ) ;
2015-10-01 17:45:29 +02:00
button - > setIcon ( QIcon ( " :/images/breeze/view-restore.svg " ) ) ;
2015-09-30 18:24:03 +02:00
ui - > buttonBox - > addButton ( button , QDialogButtonBox : : ActionRole ) ;
button = new QPushButton ( tr ( " &Download selected note " ) ) ;
2015-10-19 08:09:50 +02:00
button - > setToolTip ( " <h3>Faster, but without versions</h3><p>The note will be created with the text from the preview.</p><p>The note versions on your ownCloud server will not be restored and the note will remain in the trash.</p><p>You can always restore the note and its versions later.</p> " ) ;
2015-09-30 18:24:03 +02:00
button - > setProperty ( " ActionRole " , Download ) ;
2015-09-23 15:08:46 +02:00
button - > setDefault ( false ) ;
2015-09-24 09:05:42 +02:00
button - > setIcon ( QIcon ( " :/images/breeze/edit-download.svg " ) ) ;
2015-09-23 15:08:46 +02:00
ui - > buttonBox - > addButton ( button , QDialogButtonBox : : ActionRole ) ;
button = new QPushButton ( tr ( " &Cancel " ) ) ;
button - > setProperty ( " ActionRole " , Cancel ) ;
2015-09-24 09:05:42 +02:00
button - > setIcon ( QIcon ( " :/images/breeze/dialog-cancel.svg " ) ) ;
2015-09-23 15:08:46 +02:00
button - > setDefault ( true ) ;
ui - > buttonBox - > addButton ( button , QDialogButtonBox : : ActionRole ) ;
connect ( this - > ui - > buttonBox , SIGNAL ( clicked ( QAbstractButton * ) ) , SLOT ( dialogButtonClicked ( QAbstractButton * ) ) ) ;
connect ( this , SIGNAL ( finished ( int ) ) , this , SLOT ( storeSettings ( ) ) ) ;
QString itemName ;
QString dateString ;
QString data ;
2015-09-30 18:24:03 +02:00
int timestamp ;
2015-09-23 15:08:46 +02:00
ui - > trashListWidget - > clear ( ) ;
dataList = new QStringList ( ) ;
2015-09-30 18:24:03 +02:00
timestampList = new QList < int > ;
2015-09-23 15:08:46 +02:00
// init the iterator for the verions
QScriptValueIterator notesIterator ( notes ) ;
// iterate over the trashs
while ( notesIterator . hasNext ( ) ) {
notesIterator . next ( ) ;
2015-09-23 17:50:55 +02:00
// qDebug() << notesIterator.value().property( "timestamp" ).toString() << " - " << notesIterator.value().property( "dateString" ).toString() << " - " << notesIterator.value().property( "noteName" ).toString();
2015-09-23 15:08:46 +02:00
itemName = notesIterator . value ( ) . property ( " noteName " ) . toString ( ) ;
dateString = notesIterator . value ( ) . property ( " dateString " ) . toString ( ) ;
data = notesIterator . value ( ) . property ( " data " ) . toString ( ) ;
2015-09-30 18:24:03 +02:00
timestamp = notesIterator . value ( ) . property ( " timestamp " ) . toInteger ( ) ;
2015-09-23 15:08:46 +02:00
if ( itemName = = " " ) {
continue ;
}
QListWidgetItem * item = new QListWidgetItem ( ) ;
item - > setText ( itemName ) ;
item - > setToolTip ( dateString ) ;
ui - > trashListWidget - > addItem ( item ) ;
dataList - > append ( data ) ;
2015-09-30 18:24:03 +02:00
timestampList - > append ( timestamp ) ;
2015-09-23 15:08:46 +02:00
}
ui - > trashListWidget - > setCurrentRow ( 0 ) ;
ui - > noteBrowser - > setText ( dataList - > at ( 0 ) ) ;
}
void TrashDialog : : setupMainSplitter ( )
{
this - > trashSplitter = new QSplitter ;
this - > trashSplitter - > addWidget ( ui - > trashListWidget ) ;
this - > trashSplitter - > addWidget ( ui - > noteBrowser ) ;
// restore splitter sizes
QSettings settings ;
QByteArray state = settings . value ( " trashSplitterSizes " ) . toByteArray ( ) ;
this - > trashSplitter - > restoreState ( state ) ;
this - > ui - > gridLayout - > layout ( ) - > addWidget ( this - > trashSplitter ) ;
this - > ui - > gridLayout - > layout ( ) - > addWidget ( ui - > buttonBox ) ;
}
void TrashDialog : : storeSettings ( )
{
// store the splitter sizes
QSettings settings ;
settings . setValue ( " trashSplitterSizes " , this - > trashSplitter - > saveState ( ) ) ;
}
TrashDialog : : ~ TrashDialog ( )
{
delete ui ;
}
void TrashDialog : : on_trashListWidget_currentRowChanged ( int currentRow )
{
ui - > noteBrowser - > setText ( dataList - > value ( currentRow ) ) ;
}
void TrashDialog : : dialogButtonClicked ( QAbstractButton * button )
{
int actionRole = button - > property ( " ActionRole " ) . toInt ( ) ;
2015-09-30 18:24:03 +02:00
QString name = ui - > trashListWidget - > currentItem ( ) - > text ( ) ;
2015-09-23 15:08:46 +02:00
2015-09-30 18:24:03 +02:00
switch ( actionRole )
2015-09-23 15:08:46 +02:00
{
2015-09-30 18:24:03 +02:00
case Download :
{
QString text = dataList - > value ( ui - > trashListWidget - > currentRow ( ) ) ;
mainWindow - > createNewNote ( name , text ) ;
break ;
}
case RestoreOnServer :
{
int timestamp = this - > timestampList - > value ( ui - > trashListWidget - > currentRow ( ) ) ;
qDebug ( ) < < name < < timestamp ;
mainWindow - > restoreTrashedNoteOnServer ( name + " .txt " , timestamp ) ;
break ;
}
2015-09-23 15:08:46 +02:00
}
this - > close ( ) ;
}