Skip to content

Commit a09b15f

Browse files
committed
ccs: add MAGIC monero fund
1 parent 6225e0e commit a09b15f

File tree

9 files changed

+49
-40
lines changed

9 files changed

+49
-40
lines changed

src/MainWindow.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1111,7 +1111,7 @@ void MainWindow::payToMany() {
11111111
}
11121112

11131113
void MainWindow::showSendScreen(const CCSEntry &entry) { // TODO: rename this function
1114-
m_sendWidget->fill(entry.address, QString("CCS: %1").arg(entry.title));
1114+
m_sendWidget->fill(entry.address, QString("Donation to %1: %2").arg(entry.organizer, entry.title));
11151115
ui->tabWidget->setCurrentIndex(Tabs::SEND);
11161116
}
11171117

src/MainWindow.ui

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@
122122
</property>
123123
<widget class="QWidget" name="tab">
124124
<attribute name="title">
125-
<string>CCS</string>
125+
<string>Crowdfunding</string>
126126
</attribute>
127127
<layout class="QVBoxLayout" name="verticalLayout_6">
128128
<property name="leftMargin">
@@ -479,7 +479,7 @@
479479
<x>0</x>
480480
<y>0</y>
481481
<width>977</width>
482-
<height>27</height>
482+
<height>24</height>
483483
</rect>
484484
</property>
485485
<widget class="QMenu" name="menuFile">

src/plugins/ccs/CCSEntry.h

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@
99
struct CCSEntry {
1010
CCSEntry()= default;;
1111

12-
QString title = "";
13-
QString date = "";
14-
QString address = "";
15-
QString author = "";
16-
QString state = "";
17-
QString url = "";
12+
QString title;
13+
QString date;
14+
QString address;
15+
QString author;
16+
QString state;
17+
QString url;
18+
QString organizer;
19+
QString currency;
1820
double target_amount = 0;
1921
double raised_amount = 0;
2022
double percentage_funded = 0;

src/plugins/ccs/CCSModel.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,12 @@ QVariant CCSModel::data(const QModelIndex &index, int role) const
5454
switch(index.column()) {
5555
case Title:
5656
return entry->title;
57+
case Organizer:
58+
return entry->organizer;
5759
case Author:
58-
return entry->author;
60+
return QString("%1 ").arg(entry->author);
5961
case Progress:
60-
return QString("%1/%2 XMR").arg(entry->raised_amount).arg(entry->target_amount);
62+
return QString("%1/%2 %3").arg(QString::number(entry->raised_amount), QString::number(entry->target_amount), entry->currency);
6163
default:
6264
return QVariant();
6365
}
@@ -74,7 +76,9 @@ QVariant CCSModel::headerData(int section, Qt::Orientation orientation, int role
7476
{
7577
switch(section) {
7678
case Title:
77-
return QString("Community Crowdfunding Proposal");
79+
return QString("Proposal");
80+
case Organizer:
81+
return QString("Organizer");
7882
case Author:
7983
return QString("Author");
8084
case Progress:

src/plugins/ccs/CCSModel.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Q_OBJECT
1717
enum ModelColumn
1818
{
1919
Title = 0,
20+
Organizer,
2021
Author,
2122
Progress,
2223
COUNT

src/plugins/ccs/CCSWidget.cpp

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,25 @@ CCSWidget::CCSWidget(QWidget *parent)
1818
, m_contextMenu(new QMenu(this))
1919
{
2020
ui->setupUi(this);
21-
ui->tableView->setModel(m_model);
22-
this->setupTable();
21+
ui->treeView->setModel(m_model);
2322

2423
m_contextMenu->addAction("View proposal", this, &CCSWidget::linkClicked);
2524
m_contextMenu->addAction("Donate", this, &CCSWidget::donateClicked);
26-
connect(ui->tableView, &QHeaderView::customContextMenuRequested, this, &CCSWidget::showContextMenu);
2725

28-
connect(ui->tableView, &QTableView::doubleClicked, this, &CCSWidget::linkClicked);
26+
connect(ui->treeView, &QHeaderView::customContextMenuRequested, this, &CCSWidget::showContextMenu);
27+
connect(ui->treeView, &QTreeView::doubleClicked, this, &CCSWidget::linkClicked);
2928

30-
ui->tableView->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
29+
ui->treeView->setSelectionBehavior(QAbstractItemView::SelectRows);
30+
ui->treeView->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
31+
ui->treeView->header()->setSectionResizeMode(CCSModel::Title, QHeaderView::Stretch);
3132
}
3233

3334
CCSModel* CCSWidget::model() {
3435
return m_model;
3536
}
3637

3738
void CCSWidget::linkClicked() {
38-
QModelIndex index = ui->tableView->currentIndex();
39+
QModelIndex index = ui->treeView->currentIndex();
3940
auto entry = m_model->entry(index.row());
4041

4142
if (entry) {
@@ -44,28 +45,20 @@ void CCSWidget::linkClicked() {
4445
}
4546

4647
void CCSWidget::donateClicked() {
47-
QModelIndex index = ui->tableView->currentIndex();
48+
QModelIndex index = ui->treeView->currentIndex();
4849
auto entry = m_model->entry(index.row());
4950

5051
if (entry)
5152
emit selected(*entry);
5253
}
5354

54-
void CCSWidget::setupTable() {
55-
ui->tableView->verticalHeader()->setVisible(false);
56-
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
57-
58-
ui->tableView->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
59-
ui->tableView->setColumnWidth(2, 160);
60-
}
61-
6255
void CCSWidget::showContextMenu(const QPoint &pos) {
63-
QModelIndex index = ui->tableView->indexAt(pos);
56+
QModelIndex index = ui->treeView->indexAt(pos);
6457
if (!index.isValid()) {
6558
return;
6659
}
6760

68-
m_contextMenu->exec(ui->tableView->viewport()->mapToGlobal(pos));
61+
m_contextMenu->exec(ui->treeView->viewport()->mapToGlobal(pos));
6962
}
7063

7164
CCSWidget::~CCSWidget() = default;

src/plugins/ccs/CCSWidget.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ private slots:
3636
void linkClicked();
3737

3838
private:
39-
void setupTable();
4039
void showContextMenu(const QPoint &pos);
4140

4241
QScopedPointer<Ui::CSSWidget> ui;

src/plugins/ccs/CCSWidget.ui

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,17 @@
3030
<number>0</number>
3131
</property>
3232
<item>
33-
<widget class="QTableView" name="tableView">
33+
<widget class="QTreeView" name="treeView">
3434
<property name="contextMenuPolicy">
3535
<enum>Qt::CustomContextMenu</enum>
3636
</property>
37-
<property name="editTriggers">
38-
<set>QAbstractItemView::NoEditTriggers</set>
37+
<property name="alternatingRowColors">
38+
<bool>true</bool>
3939
</property>
40-
<property name="selectionMode">
41-
<enum>QAbstractItemView::SingleSelection</enum>
42-
</property>
43-
<property name="sortingEnabled">
40+
<property name="rootIsDecorated">
4441
<bool>false</bool>
4542
</property>
46-
<attribute name="horizontalHeaderStretchLastSection">
43+
<attribute name="headerStretchLastSection">
4744
<bool>false</bool>
4845
</attribute>
4946
</widget>

src/utils/WebsocketNotifier.cpp

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ void WebsocketNotifier::onWSReddit(const QJsonArray& reddit_data) {
156156
void WebsocketNotifier::onWSCCS(const QJsonArray &ccs_data) {
157157
QList<QSharedPointer<CCSEntry>> l;
158158

159-
for (auto &&entry: ccs_data) {
159+
for (const auto& entry: ccs_data) {
160160
auto obj = entry.toObject();
161161
auto c = QSharedPointer<CCSEntry>(new CCSEntry());
162162

@@ -168,11 +168,24 @@ void WebsocketNotifier::onWSCCS(const QJsonArray &ccs_data) {
168168
c->author = obj.value("author").toString();
169169
c->date = obj.value("date").toString();
170170
c->title = obj.value("title").toString();
171-
c->url = obj.value("url").toString();
172171
c->target_amount = obj.value("target_amount").toDouble();
173172
c->raised_amount = obj.value("raised_amount").toDouble();
174173
c->percentage_funded = obj.value("percentage_funded").toDouble();
175174
c->contributions = obj.value("contributions").toInt();
175+
c->organizer = obj.value("organizer").toString();
176+
c->currency = obj.value("currency").toString();
177+
178+
QString urlpath = obj.value("urlpath").toString();
179+
if (c->organizer == "CCS") {
180+
c->url = QString("https://ccs.getmonero.org/%1").arg(urlpath);
181+
}
182+
else if (c->organizer == "MAGIC") {
183+
c->url = QString("https://monerofund.org/%1").arg(urlpath);
184+
}
185+
else {
186+
continue;
187+
}
188+
176189
l.append(c);
177190
}
178191

0 commit comments

Comments
 (0)