Browse Source

Wire up dialog

recurring
adityapk00 5 years ago
parent
commit
93ac8d11df
  1. 4
      src/mainwindow.cpp
  2. 10
      src/mainwindow.ui
  3. 63
      src/recurring.cpp
  4. 12
      src/recurring.h
  5. 6
      src/recurringdialog.ui
  6. 7
      src/rpc.cpp
  7. 5
      src/sendtab.cpp

4
src/mainwindow.cpp

@ -45,6 +45,10 @@ MainWindow::MainWindow(QWidget *parent) :
rpc->checkForUpdate(false);
});
QObject::connect(ui->action_Recurring_Payments, &QAction::triggered, [=]() {
Recurring::getInstance()->showRecurringDialog();
});
// Pay Zcash URI
QObject::connect(ui->actionPay_URI, &QAction::triggered, this, &MainWindow::payZcashURI);

10
src/mainwindow.ui

@ -346,8 +346,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>920</width>
<height>301</height>
<width>928</width>
<height>353</height>
</rect>
</property>
<layout class="QVBoxLayout" name="sendToLayout">
@ -1069,6 +1069,7 @@
</property>
<addaction name="action_Address_Book"/>
<addaction name="actionSettings"/>
<addaction name="action_Recurring_Payments"/>
</widget>
<addaction name="menuFile"/>
<addaction name="menu_Edit"/>
@ -1161,6 +1162,11 @@
<string>Ctrl+M</string>
</property>
</action>
<action name="action_Recurring_Payments">
<property name="text">
<string>&amp;Recurring Payments</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<customwidgets>

63
src/recurring.cpp

@ -4,6 +4,7 @@
#include "rpc.h"
#include "settings.h"
#include "ui_newrecurring.h"
#include "ui_recurringdialog.h"
QString schedule_desc(Schedule s) {
switch (s) {
@ -15,7 +16,6 @@ QString schedule_desc(Schedule s) {
}
}
RecurringPaymentInfo RecurringPaymentInfo::fromJson(QJsonObject j) {
RecurringPaymentInfo r;
r.hashid = j["hash"].toString();
@ -209,7 +209,6 @@ QDateTime Recurring::getNextPaymentDate(Schedule s) {
return nextDate;
}
QString Recurring::writeableFile() {
auto filename = QStringLiteral("recurringpayments.json");
@ -235,6 +234,22 @@ void Recurring::addRecurringInfo(const RecurringPaymentInfo& rpi) {
writeToStorage();
}
void Recurring::readFromFile() {
QFile file(writeableFile());
file.open(QIODevice::ReadOnly);
QTextStream in(&file);
auto jsondoc = QJsonDocument::fromJson(in.readAll().toUtf8());
for (auto k : jsondoc.array()) {
auto p = RecurringPaymentInfo::fromJson(k.toObject());
p.updateHash();
payments.insert(p.hashid, p);
}
}
void Recurring::writeToStorage() {
QFile file(writeableFile());
file.open(QIODevice::ReadWrite | QIODevice::Truncate);
@ -250,13 +265,36 @@ void Recurring::writeToStorage() {
file.close();
}
Recurring* Recurring::getInstance() {
if (!instance) {
instance = new Recurring();
instance->readFromFile();
}
return instance;
}
// Singleton
Recurring* Recurring::instance = nullptr;
void Recurring::showRecurringDialog() {
Ui_RecurringDialog rd;
QDialog d;
rd.setupUi(&d);
Settings::saveRestore(&d);
auto model = new RecurringListViewModel(rd.tableView);
rd.tableView->setModel(model);
d.exec();
delete model;
}
RecurringListViewModel::RecurringListViewModel(QTableView* parent) {
this->parent = parent;
headers << tr("To") << tr("Amount") << tr("Schedule") << tr("Payments Left");
headers << tr("Amount") << tr("Schedule") << tr("Payments Left") << tr("To");
}
@ -272,10 +310,11 @@ QVariant RecurringListViewModel::data(const QModelIndex &index, int role) const
auto rpi = Recurring::getInstance()->getAsList().at(index.row());
if (role == Qt::DisplayRole) {
switch (index.column()) {
case 0: return rpi.toAddr;
case 1: return rpi.getAmountPretty();
case 2: return schedule_desc(rpi.schedule);
case 3: return rpi.numPayments - rpi.completedPayments;
case 0: return rpi.getAmountPretty();
case 1: return tr("Every ") + schedule_desc(rpi.schedule);
case 2: return rpi.numPayments - rpi.completedPayments;
case 3: return rpi.toAddr;
//case 4: return Recurring::getNextPaymentDate(rpi.)
}
}
@ -283,5 +322,15 @@ QVariant RecurringListViewModel::data(const QModelIndex &index, int role) const
}
QVariant RecurringListViewModel::headerData(int section, Qt::Orientation orientation, int role) const {
if (role == Qt::FontRole) {
QFont f;
f.setBold(true);
return f;
}
if (role == Qt::DisplayRole && orientation == Qt::Horizontal) {
return headers.at(section);
}
return QVariant();
}

12
src/recurring.h

@ -54,14 +54,16 @@ struct RecurringPaymentInfo {
class Recurring
{
public:
static Recurring* getInstance() { if (!instance) { instance = new Recurring(); } return instance; }
static Recurring* getInstance();
RecurringPaymentInfo* getNewRecurringFromTx(QWidget* parent, MainWindow* main, Tx tx, RecurringPaymentInfo* rpi);
QDateTime getNextPaymentDate(Schedule s);
RecurringPaymentInfo* getNewRecurringFromTx(QWidget* parent, MainWindow* main, Tx tx, RecurringPaymentInfo* rpi);
void updateInfoWithTx(RecurringPaymentInfo* r, Tx tx);
QString writeableFile();
void readFromFile();
static void showRecurringDialog();
static QDateTime getNextPaymentDate(Schedule s);
void addRecurringInfo(const RecurringPaymentInfo& rpi);
void writeToStorage();

6
src/recurringdialog.ui

@ -15,7 +15,11 @@
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QTableView" name="tableView"/>
<widget class="QTableView" name="tableView">
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
</widget>
</item>
<item row="0" column="1">
<layout class="QVBoxLayout" name="verticalLayout">

7
src/rpc.cpp

@ -748,15 +748,10 @@ void RPC::refreshBalances() {
ui->balTransparent->setText(Settings::getZECDisplayFormat(balT));
ui->balTotal ->setText(Settings::getZECDisplayFormat(balTotal));
<<<<<<< HEAD
ui->balSheilded ->setToolTip(Settings::getUSDFromZecAmount(balZ));
ui->balTransparent->setToolTip(Settings::getUSDFromZecAmount(balT));
ui->balTotal ->setToolTip(Settings::getUSDFromZecAmount(tot));
=======
ui->balSheilded ->setToolTip(Settings::getUSDFormat(balZ));
ui->balTransparent->setToolTip(Settings::getUSDFormat(balT));
ui->balTotal ->setToolTip(Settings::getUSDFormat(balTotal));
>>>>>>> master
});
// 2. Get the UTXOs

5
src/sendtab.cpp

@ -99,11 +99,6 @@ void MainWindow::setupSendTab() {
// Recurring schedule button
QObject::connect(ui->btnRecurSchedule, &QPushButton::clicked, this, &MainWindow::editSchedule);
// Hide the recurring section for now
ui->chkRecurring->setVisible(false);
ui->lblRecurDesc->setVisible(false);
ui->btnRecurSchedule->setVisible(false);
// Set the default state for the whole page
clearSendForm();
}

Loading…
Cancel
Save