]> Nutra Git (v1) - gamesguru/feather.git/commitdiff
ccs: add MAGIC monero fund
authortobtoht <tob@featherwallet.org>
Sat, 25 Nov 2023 13:27:22 +0000 (14:27 +0100)
committertobtoht <tob@featherwallet.org>
Sat, 25 Nov 2023 13:28:06 +0000 (14:28 +0100)
src/MainWindow.cpp
src/MainWindow.ui
src/plugins/ccs/CCSEntry.h
src/plugins/ccs/CCSModel.cpp
src/plugins/ccs/CCSModel.h
src/plugins/ccs/CCSWidget.cpp
src/plugins/ccs/CCSWidget.h
src/plugins/ccs/CCSWidget.ui
src/utils/WebsocketNotifier.cpp

index f2578e2958afa55cb31bf3aa703d4ded94276a10..f5719aef7811bdb89bf5d1f23ef3729b5505e7ac 100644 (file)
@@ -1111,7 +1111,7 @@ void MainWindow::payToMany() {
 }
 
 void MainWindow::showSendScreen(const CCSEntry &entry) { // TODO: rename this function
-    m_sendWidget->fill(entry.address, QString("CCS: %1").arg(entry.title));
+    m_sendWidget->fill(entry.address, QString("Donation to %1: %2").arg(entry.organizer, entry.title));
     ui->tabWidget->setCurrentIndex(Tabs::SEND);
 }
 
index 710e39e6beb4034dccc7183b9724c5992848d353..f1bdc7ecee98db131936bfb284604d9d69459e45 100644 (file)
               </property>
               <widget class="QWidget" name="tab">
                <attribute name="title">
-                <string>CCS</string>
+                <string>Crowdfunding</string>
                </attribute>
                <layout class="QVBoxLayout" name="verticalLayout_6">
                 <property name="leftMargin">
      <x>0</x>
      <y>0</y>
      <width>977</width>
-     <height>27</height>
+     <height>24</height>
     </rect>
    </property>
    <widget class="QMenu" name="menuFile">
index bf1dfdcff988aae59245784b3b78e8b839bf2394..07c564901c7c547712ec57593abc0c04ecea01e0 100644 (file)
@@ -9,12 +9,14 @@
 struct CCSEntry {
     CCSEntry()= default;;
 
-    QString title = "";
-    QString date = "";
-    QString address = "";
-    QString author = "";
-    QString state = "";
-    QString url = "";
+    QString title;
+    QString date;
+    QString address;
+    QString author;
+    QString state;
+    QString url;
+    QString organizer;
+    QString currency;
     double target_amount = 0;
     double raised_amount = 0;
     double percentage_funded = 0;
index 769f9eaada708443e6300be2106737f84d190dc2..a8e9d1ca74223245f97434370dd1bdaf22081419 100644 (file)
@@ -54,10 +54,12 @@ QVariant CCSModel::data(const QModelIndex &index, int role) const
         switch(index.column()) {
             case Title:
                 return entry->title;
+            case Organizer:
+                return entry->organizer;
             case Author:
-                return entry->author;
+                return QString("%1 ").arg(entry->author);
             case Progress:
-                return QString("%1/%2 XMR").arg(entry->raised_amount).arg(entry->target_amount);
+                return QString("%1/%2 %3").arg(QString::number(entry->raised_amount), QString::number(entry->target_amount), entry->currency);
             default:
                 return QVariant();
         }
@@ -74,7 +76,9 @@ QVariant CCSModel::headerData(int section, Qt::Orientation orientation, int role
     {
         switch(section) {
             case Title:
-                return QString("Community Crowdfunding Proposal");
+                return QString("Proposal");
+            case Organizer:
+                return QString("Organizer");
             case Author:
                 return QString("Author");
             case Progress:
index 7b34416b2de087bb19919c91d52e025bc5c4bb65..d4d0dbe87252010e486de20f753de56c02deae38 100644 (file)
@@ -17,6 +17,7 @@ public:
     enum ModelColumn
     {
         Title = 0,
+        Organizer,
         Author,
         Progress,
         COUNT
index 96f384204e2cc2b023beccf05866a08651626152..d2ace60008cb20a5208aadb6504bdefd7de0ab95 100644 (file)
@@ -18,16 +18,17 @@ CCSWidget::CCSWidget(QWidget *parent)
         , m_contextMenu(new QMenu(this))
 {
     ui->setupUi(this);
-    ui->tableView->setModel(m_model);
-    this->setupTable();
+    ui->treeView->setModel(m_model);
 
     m_contextMenu->addAction("View proposal", this, &CCSWidget::linkClicked);
     m_contextMenu->addAction("Donate", this, &CCSWidget::donateClicked);
-    connect(ui->tableView, &QHeaderView::customContextMenuRequested, this, &CCSWidget::showContextMenu);
 
-    connect(ui->tableView, &QTableView::doubleClicked, this, &CCSWidget::linkClicked);
+    connect(ui->treeView, &QHeaderView::customContextMenuRequested, this, &CCSWidget::showContextMenu);
+    connect(ui->treeView, &QTreeView::doubleClicked, this, &CCSWidget::linkClicked);
 
-    ui->tableView->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
+    ui->treeView->setSelectionBehavior(QAbstractItemView::SelectRows);
+    ui->treeView->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
+    ui->treeView->header()->setSectionResizeMode(CCSModel::Title, QHeaderView::Stretch);
 }
 
 CCSModel* CCSWidget::model() {
@@ -35,7 +36,7 @@ CCSModel* CCSWidget::model() {
 }
 
 void CCSWidget::linkClicked() {
-    QModelIndex index = ui->tableView->currentIndex();
+    QModelIndex index = ui->treeView->currentIndex();
     auto entry = m_model->entry(index.row());
 
     if (entry) {
@@ -44,28 +45,20 @@ void CCSWidget::linkClicked() {
 }
 
 void CCSWidget::donateClicked() {
-    QModelIndex index = ui->tableView->currentIndex();
+    QModelIndex index = ui->treeView->currentIndex();
     auto entry = m_model->entry(index.row());
 
     if (entry)
         emit selected(*entry);
 }
 
-void CCSWidget::setupTable() {
-    ui->tableView->verticalHeader()->setVisible(false);
-    ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
-
-    ui->tableView->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
-    ui->tableView->setColumnWidth(2, 160);
-}
-
 void CCSWidget::showContextMenu(const QPoint &pos) {
-    QModelIndex index = ui->tableView->indexAt(pos);
+    QModelIndex index = ui->treeView->indexAt(pos);
         if (!index.isValid()) {
         return;
     }
 
-    m_contextMenu->exec(ui->tableView->viewport()->mapToGlobal(pos));
+    m_contextMenu->exec(ui->treeView->viewport()->mapToGlobal(pos));
 }
 
 CCSWidget::~CCSWidget() = default;
\ No newline at end of file
index 473bbb4c7f61920234b9fdd3cae23ac052ae4aa6..cd344cfe0f2b5c531dba2646af52c1430b0f7852 100644 (file)
@@ -36,7 +36,6 @@ private slots:
     void linkClicked();
 
 private:
-    void setupTable();
     void showContextMenu(const QPoint &pos);
 
     QScopedPointer<Ui::CSSWidget> ui;
index c02ad8f834928a07f3eec4c1c9c9937d5dbaa59f..51163e36416b211b9c4e250ba765708b550c8029 100644 (file)
     <number>0</number>
    </property>
    <item>
-    <widget class="QTableView" name="tableView">
+    <widget class="QTreeView" name="treeView">
      <property name="contextMenuPolicy">
       <enum>Qt::CustomContextMenu</enum>
      </property>
-     <property name="editTriggers">
-      <set>QAbstractItemView::NoEditTriggers</set>
+     <property name="alternatingRowColors">
+      <bool>true</bool>
      </property>
-     <property name="selectionMode">
-      <enum>QAbstractItemView::SingleSelection</enum>
-     </property>
-     <property name="sortingEnabled">
+     <property name="rootIsDecorated">
       <bool>false</bool>
      </property>
-     <attribute name="horizontalHeaderStretchLastSection">
+     <attribute name="headerStretchLastSection">
       <bool>false</bool>
      </attribute>
     </widget>
index 4cf4c0d16c1746b1168ca2a516aaa5e98c3fcd26..346a8b6014d5527a085fc8bfb2b8e626d26421d3 100644 (file)
@@ -156,7 +156,7 @@ void WebsocketNotifier::onWSReddit(const QJsonArray& reddit_data) {
 void WebsocketNotifier::onWSCCS(const QJsonArray &ccs_data) {
     QList<QSharedPointer<CCSEntry>> l;
 
-    for (auto &&entry: ccs_data) {
+    for (const auto& entry: ccs_data) {
         auto obj = entry.toObject();
         auto c = QSharedPointer<CCSEntry>(new CCSEntry());
 
@@ -168,11 +168,24 @@ void WebsocketNotifier::onWSCCS(const QJsonArray &ccs_data) {
         c->author = obj.value("author").toString();
         c->date = obj.value("date").toString();
         c->title = obj.value("title").toString();
-        c->url = obj.value("url").toString();
         c->target_amount = obj.value("target_amount").toDouble();
         c->raised_amount = obj.value("raised_amount").toDouble();
         c->percentage_funded = obj.value("percentage_funded").toDouble();
         c->contributions = obj.value("contributions").toInt();
+        c->organizer = obj.value("organizer").toString();
+        c->currency = obj.value("currency").toString();
+
+        QString urlpath = obj.value("urlpath").toString();
+        if (c->organizer == "CCS") {
+            c->url = QString("https://ccs.getmonero.org/%1").arg(urlpath);
+        }
+        else if (c->organizer == "MAGIC") {
+            c->url = QString("https://monerofund.org/%1").arg(urlpath);
+        }
+        else {
+            continue;
+        }
+
         l.append(c);
     }