Transaction View: LastMonth calculation fixed
[novacoin.git] / src / qt / transactionview.cpp
index 38afba6..88b119a 100644 (file)
@@ -32,6 +32,7 @@
 #include <QDesktopServices>
 #include <QSignalMapper>
 #include <QUrl>
+#include <QEventLoop>
 
 TransactionView::TransactionView(QWidget *parent) :
     QWidget(parent), model(0), transactionProxyModel(0),
@@ -167,7 +168,7 @@ TransactionView::TransactionView(QWidget *parent) :
     connect(clearOrphansAction, SIGNAL(triggered()), this, SLOT(clearOrphans()));
 }
 
-void TransactionView::setModel(WalletModel *model)
+void TransactionView::setModel(WalletModel *model, bool fShoudAddThirdPartyURL)
 {
     this->model = model;
     if(model)
@@ -178,8 +179,8 @@ void TransactionView::setModel(WalletModel *model)
         transactionProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
         transactionProxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
 
-//        transactionProxyModel->setSortRole(Qt::EditRole);
-        transactionProxyModel->setSortRole(TransactionTableModel::DateRole);
+        transactionProxyModel->setSortRole(Qt::EditRole);
+//        transactionProxyModel->setSortRole(TransactionTableModel::DateRole);
 
         transactionView->setModel(transactionProxyModel);
         transactionView->setAlternatingRowColors(true);
@@ -202,9 +203,9 @@ void TransactionView::setModel(WalletModel *model)
         transactionView->horizontalHeader()->setSectionResizeMode(TransactionTableModel::ToAddress, QHeaderView::Stretch);
 #endif
         transactionView->horizontalHeader()->resizeSection(
-                TransactionTableModel::Amount, 100);
+                TransactionTableModel::Amount, 130);
 
-        if (model->getOptionsModel())
+        if (model->getOptionsModel() && fShoudAddThirdPartyURL)
         {
             // Add third party transaction URLs to context menu
             QStringList listUrls = model->getOptionsModel()->getThirdPartyTxUrls().split("|", QString::SkipEmptyParts);
@@ -258,7 +259,7 @@ void TransactionView::chooseDate(int idx)
         break;
     case LastMonth:
         transactionProxyModel->setDateRange(
-                QDateTime(QDate(current.year(), current.month()-1, 1)),
+                QDateTime(QDate(current.year(), current.month(), 1).addMonths(-1)),
                 QDateTime(QDate(current.year(), current.month(), 1)));
         break;
     case ThisYear:
@@ -415,7 +416,13 @@ void TransactionView::showDetails()
     if(!selection.isEmpty())
     {
         TransactionDescDialog dlg(selection.at(0));
-        dlg.exec();
+        dlg.setWindowModality(Qt::ApplicationModal);
+        dlg.show();
+
+        // This loop will wait for the window is closed
+        QEventLoop loop;
+        connect(&dlg, SIGNAL(stopExec()), &loop, SLOT(quit()));
+        loop.exec();
     }
 }
 
@@ -425,6 +432,11 @@ void TransactionView::clearOrphans()
         return;
 
     model->clearOrphans();
+    model->getTransactionTableModel()->refresh();
+    delete transactionProxyModel;
+    setModel(model, false);
+    transactionView->sortByColumn(TransactionTableModel::Status, Qt::DescendingOrder);
+    transactionView->sortByColumn(TransactionTableModel::Date, Qt::DescendingOrder);
 }
 
 void TransactionView::openThirdPartyTxUrl(QString url)