-
Notifications
You must be signed in to change notification settings - Fork 172
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implementation of EditSideStakeDialog
- Loading branch information
1 parent
b51ce44
commit bf4d620
Showing
6 changed files
with
415 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
// Copyright (c) 2014-2023 The Gridcoin developers | ||
// Distributed under the MIT/X11 software license, see the accompanying | ||
// file COPYING or https://opensource.org/licenses/mit-license.php. | ||
|
||
#include "editsidestakedialog.h" | ||
#include "ui_editsidestakedialog.h" | ||
#include "optionsmodel.h" | ||
#include "sidestaketablemodel.h" | ||
#include "guiutil.h" | ||
#include "qt/decoration.h" | ||
|
||
#include <QDataWidgetMapper> | ||
#include <QMessageBox> | ||
|
||
EditSideStakeDialog::EditSideStakeDialog(Mode mode, QWidget* parent) | ||
: QDialog(parent) | ||
, ui(new Ui::EditSideStakeDialog) | ||
, mapper(nullptr) | ||
, mode(mode) | ||
, model(nullptr) | ||
{ | ||
ui->setupUi(this); | ||
|
||
resize(GRC::ScaleSize(this, width(), height())); | ||
|
||
GUIUtil::setupAddressWidget(ui->addressLineEdit, this); | ||
|
||
switch (mode) | ||
{ | ||
case NewSideStake: | ||
setWindowTitle(tr("New SideStake")); | ||
break; | ||
case EditSideStake: | ||
setWindowTitle(tr("Edit SideStake")); | ||
ui->addressLineEdit->setEnabled(false); | ||
break; | ||
} | ||
|
||
mapper = new QDataWidgetMapper(this); | ||
mapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit); | ||
} | ||
|
||
EditSideStakeDialog::~EditSideStakeDialog() | ||
{ | ||
delete ui; | ||
} | ||
|
||
void EditSideStakeDialog::setModel(OptionsModel *model) | ||
{ | ||
this->model = model; | ||
if (!model) { | ||
return; | ||
} | ||
|
||
mapper->setModel(model); | ||
mapper->addMapping(ui->addressLineEdit, SideStakeTableModel::Address); | ||
mapper->addMapping(ui->allocationLineEdit, SideStakeTableModel::Allocation); | ||
mapper->addMapping(ui->descriptionLineEdit, SideStakeTableModel::Description); | ||
} | ||
|
||
void EditSideStakeDialog::loadRow(int row) | ||
{ | ||
mapper->setCurrentIndex(row); | ||
} | ||
|
||
bool EditSideStakeDialog::saveCurrentRow() | ||
{ | ||
if (!model) { | ||
return false; | ||
} | ||
|
||
switch (mode) | ||
{ | ||
case NewSideStake: | ||
address = model->getSideStakeTableModel()->addRow(ui->addressLineEdit->text(), | ||
ui->allocationLineEdit->text(), | ||
ui->descriptionLineEdit->text()); | ||
break; | ||
case EditSideStake: | ||
if (mapper->submit()) { | ||
address = ui->addressLineEdit->text(); | ||
} | ||
break; | ||
} | ||
return !address.isEmpty(); | ||
} | ||
|
||
void EditSideStakeDialog::accept() | ||
{ | ||
if (!model) { | ||
return; | ||
} | ||
|
||
if (!saveCurrentRow()) | ||
{ | ||
switch(model->getSideStakeTableModel()->getEditStatus()) | ||
{ | ||
case SideStakeTableModel::OK: | ||
// Failed with unknown reason. Just reject. | ||
break; | ||
case SideStakeTableModel::NO_CHANGES: | ||
// No changes were made during edit operation. Just reject. | ||
break; | ||
case SideStakeTableModel::INVALID_ADDRESS: | ||
QMessageBox::warning(this, windowTitle(), | ||
tr("The entered address \"%1\" is not " | ||
"a valid Gridcoin address.").arg(ui->addressLineEdit->text()), | ||
QMessageBox::Ok, QMessageBox::Ok); | ||
break; | ||
case SideStakeTableModel::DUPLICATE_ADDRESS: | ||
QMessageBox::warning(this, windowTitle(), | ||
tr("The entered address \"%1\" is already " | ||
"in the address book.").arg(ui->addressLineEdit->text()), | ||
QMessageBox::Ok, QMessageBox::Ok); | ||
break; | ||
case SideStakeTableModel::INVALID_ALLOCATION: | ||
QMessageBox::warning(this, windowTitle(), | ||
tr("The entered allocation is not valid.").arg(ui->allocationLineEdit->text()), | ||
QMessageBox::Ok, QMessageBox::Ok); | ||
|
||
} | ||
return; | ||
} | ||
|
||
QDialog::accept(); | ||
} | ||
|
||
QString EditSideStakeDialog::getAddress() const | ||
{ | ||
return address; | ||
} | ||
|
||
void EditSideStakeDialog::setAddress(const QString &address) | ||
{ | ||
this->address = address; | ||
ui->addressLineEdit->setText(address); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
// Copyright (c) 2014-2023 The Gridcoin developers | ||
// Distributed under the MIT/X11 software license, see the accompanying | ||
// file COPYING or https://opensource.org/licenses/mit-license.php. | ||
|
||
#ifndef BITCOIN_QT_EDITSIDESTAKEDIALOG_H | ||
#define BITCOIN_QT_EDITSIDESTAKEDIALOG_H | ||
|
||
#include <QDialog> | ||
|
||
QT_BEGIN_NAMESPACE | ||
class QDataWidgetMapper; | ||
QT_END_NAMESPACE | ||
|
||
namespace Ui { | ||
class EditSideStakeDialog; | ||
} | ||
class OptionsModel; | ||
|
||
/** Dialog for editing an address and associated information. | ||
*/ | ||
class EditSideStakeDialog : public QDialog | ||
{ | ||
Q_OBJECT | ||
|
||
public: | ||
enum Mode { | ||
NewSideStake, | ||
EditSideStake | ||
}; | ||
|
||
explicit EditSideStakeDialog(Mode mode, QWidget* parent = nullptr); | ||
~EditSideStakeDialog(); | ||
|
||
void setModel(OptionsModel *model); | ||
void loadRow(int row); | ||
|
||
QString getAddress() const; | ||
void setAddress(const QString &address); | ||
|
||
public slots: | ||
void accept(); | ||
|
||
private: | ||
bool saveCurrentRow(); | ||
|
||
Ui::EditSideStakeDialog *ui; | ||
QDataWidgetMapper *mapper; | ||
Mode mode; | ||
OptionsModel *model; | ||
|
||
QString address; | ||
}; | ||
#endif // BITCOIN_QT_EDITSIDESTAKEDIALOG_H |
Oops, something went wrong.