]> Nutra Git (v2) - gamesguru/feather.git/commitdiff
Coins: add Edit Label to context menu
authortobtoht <thotbot@protonmail.com>
Fri, 2 Jul 2021 15:27:26 +0000 (17:27 +0200)
committertobtoht <thotbot@protonmail.com>
Fri, 2 Jul 2021 15:27:26 +0000 (17:27 +0200)
src/CoinsWidget.cpp
src/CoinsWidget.h
src/model/CoinsModel.cpp

index 95a664515b2343c3e3dfcceb5435016d8280452f..6b4eb319d5f81b06b1369a903c3929073ceb36c1 100644 (file)
@@ -38,6 +38,9 @@ CoinsWidget::CoinsWidget(QSharedPointer<AppContext> ctx, QWidget *parent)
     // context menu
     ui->coins->setContextMenuPolicy(Qt::CustomContextMenu);
 
+    m_editLabelAction = new QAction("Edit Label", this);
+    connect(m_editLabelAction, &QAction::triggered, this, &CoinsWidget::editLabel);
+
     m_thawOutputAction = new QAction("Thaw output", this);
     m_freezeOutputAction = new QAction("Freeze output", this);
 
@@ -47,6 +50,7 @@ CoinsWidget::CoinsWidget(QSharedPointer<AppContext> ctx, QWidget *parent)
     m_viewOutputAction = new QAction(icons()->icon("info2.svg"), "Details", this);
     m_sweepOutputAction = new QAction("Sweep output", this);
     m_sweepOutputsAction = new QAction("Sweep selected outputs", this);
+
     connect(m_freezeOutputAction, &QAction::triggered, this, &CoinsWidget::freezeOutput);
     connect(m_thawOutputAction, &QAction::triggered, this, &CoinsWidget::thawOutput);
     connect(m_viewOutputAction, &QAction::triggered, this, &CoinsWidget::viewOutput);
@@ -116,6 +120,7 @@ void CoinsWidget::showContextMenu(const QPoint &point) {
         bool isUnlocked = c->unlocked();
 
         menu->addMenu(m_copyMenu);
+        menu->addAction(m_editLabelAction);
 
         if (!isSpent) {
             isFrozen ? menu->addAction(m_thawOutputAction) : menu->addAction(m_freezeOutputAction);
@@ -303,4 +308,10 @@ void CoinsWidget::thawCoins(const QVector<int> &indexes) {
     m_ctx->updateBalance();
 }
 
+void CoinsWidget::editLabel() {
+    QModelIndex index = ui->coins->currentIndex().siblingAtColumn(m_model->ModelColumn::Label);
+    ui->coins->setCurrentIndex(index);
+    ui->coins->edit(index);
+}
+
 CoinsWidget::~CoinsWidget() = default;
\ No newline at end of file
index 90471e21d203019e37d790e50b19355b5cf37a14..b1b1f0ad91d64a95402d79329988af3b824ddef9 100644 (file)
@@ -41,6 +41,7 @@ private slots:
     void onSweepOutput();
     void onSweepMulti();
     void setSearchFilter(const QString &filter);
+    void editLabel();
 
 private:
     void freezeCoins(const QVector<int>& indexes);
@@ -70,6 +71,7 @@ private:
     QAction *m_viewOutputAction;
     QAction *m_sweepOutputAction;
     QAction *m_sweepOutputsAction;
+    QAction *m_editLabelAction;
     Coins *m_coins;
     CoinsModel * m_model;
     CoinsProxyModel * m_proxyModel;
index ee604ec84635270a7396793b4fa1685b5653628c..a5a409dc117bfd3c5c3f527d4de88e826dabd67e 100644 (file)
@@ -61,7 +61,7 @@ QVariant CoinsModel::data(const QModelIndex &index, int role) const
     QVariant result;
 
     bool found = m_coins->coin(index.row(), [this, &index, &result, &role](const CoinsInfo &cInfo) {
-        if(role == Qt::DisplayRole || role == Qt::UserRole) {
+        if(role == Qt::DisplayRole || role == Qt::EditRole || role == Qt::UserRole) {
             result = parseTransactionInfo(cInfo, index.column(), role);
         }
         else if (role == Qt::BackgroundRole) {
@@ -119,6 +119,9 @@ QVariant CoinsModel::data(const QModelIndex &index, int role) const
             else if (!cInfo.unlocked()) {
                 result = "Output is locked (needs more confirmations)";
             }
+            else if (cInfo.spent()) {
+                result = "Output is spent";
+            }
         }
     });
     if (!found) {