3636#include < QUrl>
3737#include < QVBoxLayout>
3838
39+ /* * Date format for persistence */
40+ static const char * PERSISTENCE_DATE_FORMAT = " yyyy-MM-dd" ;
41+
3942TransactionView::TransactionView (const PlatformStyle *platformStyle, QWidget *parent) :
4043 QWidget(parent), model(0 ), transactionProxyModel(0 ),
4144 transactionView(0 )
@@ -258,6 +261,8 @@ void TransactionView::chooseDate(int idx)
258261{
259262 if (!transactionProxyModel)
260263 return ;
264+
265+ QSettings settings;
261266 QDate current = QDate::currentDate ();
262267 dateRangeWidget->setVisible (false );
263268 switch (dateWidget->itemData (idx).toInt ())
@@ -300,10 +305,11 @@ void TransactionView::chooseDate(int idx)
300305 dateRangeChanged ();
301306 break ;
302307 }
303- // Persist settings
304- if (dateWidget->itemData (idx).toInt () != Range){
305- QSettings settings;
306- settings.setValue (" transactionDate" , idx);
308+ // Persist new date settings
309+ settings.setValue (" transactionDate" , idx);
310+ if (dateWidget->itemData (idx).toInt () == Range){
311+ settings.setValue (" transactionDateFrom" , dateFrom->date ().toString (PERSISTENCE_DATE_FORMAT));
312+ settings.setValue (" transactionDateTo" , dateTo->date ().toString (PERSISTENCE_DATE_FORMAT));
307313 }
308314}
309315
@@ -507,6 +513,11 @@ void TransactionView::openThirdPartyTxUrl(QString url)
507513
508514QWidget *TransactionView::createDateRangeWidget ()
509515{
516+ // Create default dates in case nothing is persisted
517+ QString defaultDateFrom = QDate::currentDate ().toString (PERSISTENCE_DATE_FORMAT);
518+ QString defaultDateTo = QDate::currentDate ().addDays (1 ).toString (PERSISTENCE_DATE_FORMAT);
519+ QSettings settings;
520+
510521 dateRangeWidget = new QFrame ();
511522 dateRangeWidget->setFrameStyle (QFrame::Panel | QFrame::Raised);
512523 dateRangeWidget->setContentsMargins (1 ,1 ,1 ,1 );
@@ -516,18 +527,20 @@ QWidget *TransactionView::createDateRangeWidget()
516527 layout->addWidget (new QLabel (tr (" Range:" )));
517528
518529 dateFrom = new QDateTimeEdit (this );
519- dateFrom->setDisplayFormat (" dd/MM/yy" );
520530 dateFrom->setCalendarPopup (true );
521531 dateFrom->setMinimumWidth (100 );
522- dateFrom->setDate (QDate::currentDate ().addDays (-7 ));
532+ // Load persisted FROM date
533+ dateFrom->setDate (QDate::fromString (settings.value (" transactionDateFrom" , defaultDateFrom).toString (), PERSISTENCE_DATE_FORMAT));
534+
523535 layout->addWidget (dateFrom);
524536 layout->addWidget (new QLabel (tr (" to" )));
525537
526538 dateTo = new QDateTimeEdit (this );
527- dateTo->setDisplayFormat (" dd/MM/yy" );
528539 dateTo->setCalendarPopup (true );
529540 dateTo->setMinimumWidth (100 );
530- dateTo->setDate (QDate::currentDate ());
541+ // Load persisted TO date
542+ dateTo->setDate (QDate::fromString (settings.value (" transactionDateTo" , defaultDateTo).toString (), PERSISTENCE_DATE_FORMAT));
543+
531544 layout->addWidget (dateTo);
532545 layout->addStretch ();
533546
@@ -545,9 +558,15 @@ void TransactionView::dateRangeChanged()
545558{
546559 if (!transactionProxyModel)
547560 return ;
561+
562+ // Persist new date range
563+ QSettings settings;
564+ settings.setValue (" transactionDateFrom" , dateFrom->date ().toString (PERSISTENCE_DATE_FORMAT));
565+ settings.setValue (" transactionDateTo" , dateTo->date ().toString (PERSISTENCE_DATE_FORMAT));
566+
548567 transactionProxyModel->setDateRange (
549568 QDateTime (dateFrom->date ()),
550- QDateTime (dateTo->date ()). addDays ( 1 ) );
569+ QDateTime (dateTo->date ()));
551570}
552571
553572void TransactionView::focusTransaction (const QModelIndex &idx)
0 commit comments