2021-01-06 00:24:08 +00:00
|
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
// Copyright (c) 2020-2021, The Monero Project.
|
|
|
|
|
|
|
|
#ifndef SUCHWOWWIDGET_H
|
|
|
|
#define SUCHWOWWIDGET_H
|
|
|
|
|
2021-05-02 22:43:46 +00:00
|
|
|
#include <QObject>
|
2021-01-06 00:24:08 +00:00
|
|
|
#include <QMenu>
|
|
|
|
#include <QWidget>
|
|
|
|
#include <QItemSelection>
|
2021-05-02 22:43:46 +00:00
|
|
|
#include <QListWidgetItem>
|
2021-01-06 00:24:08 +00:00
|
|
|
|
|
|
|
#include "utils/networking.h"
|
|
|
|
#include "appcontext.h"
|
|
|
|
|
|
|
|
namespace Ui {
|
|
|
|
class SuchWowWidget;
|
|
|
|
}
|
|
|
|
|
|
|
|
class SuchWowPost : public QObject
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
explicit SuchWowPost(AppContext *ctx, QObject *parent = nullptr);
|
|
|
|
~SuchWowPost();
|
|
|
|
|
|
|
|
QString title;
|
|
|
|
QString added_by;
|
|
|
|
QString thumb;
|
|
|
|
QString img;
|
|
|
|
QString addy;
|
|
|
|
QString href;
|
2021-05-02 22:43:46 +00:00
|
|
|
uint uid;
|
2021-01-06 00:24:08 +00:00
|
|
|
|
|
|
|
QPixmap thumb_data;
|
|
|
|
QPixmap img_data;
|
|
|
|
|
|
|
|
void download_thumb() {
|
2021-05-02 22:43:46 +00:00
|
|
|
const QString url = QString("%1/%2").arg(m_weburl, this->thumb);
|
2021-01-06 00:24:08 +00:00
|
|
|
connect(m_networkThumb, &UtilsNetworking::webReceived, this, &SuchWowPost::onThumbReceived);
|
|
|
|
m_networkThumb->get(url);
|
|
|
|
}
|
|
|
|
|
|
|
|
void download_img() {
|
2021-05-02 22:43:46 +00:00
|
|
|
const QString url = QString("%1/%2").arg(m_weburl, this->img);
|
2021-01-06 00:24:08 +00:00
|
|
|
connect(m_networkImg, &UtilsNetworking::webReceived, this, &SuchWowPost::onImgReceived);
|
|
|
|
m_networkImg->get(url);
|
|
|
|
}
|
|
|
|
|
2021-05-02 22:43:46 +00:00
|
|
|
bool isFetchingImage() { return m_networkImg->busy; }
|
|
|
|
bool isFetchingThumb() { return m_networkThumb->busy; }
|
|
|
|
|
2021-01-06 00:24:08 +00:00
|
|
|
private slots:
|
|
|
|
void onThumbReceived(QByteArray data);
|
|
|
|
void onImgReceived(QByteArray data);
|
|
|
|
|
|
|
|
signals:
|
2021-05-02 22:43:46 +00:00
|
|
|
void imgReceived(SuchWowPost *post);
|
|
|
|
void thumbReceived(SuchWowPost *post);
|
2021-01-06 00:24:08 +00:00
|
|
|
|
|
|
|
private:
|
2021-04-06 00:20:42 +00:00
|
|
|
QString m_weburl;
|
2021-01-06 00:24:08 +00:00
|
|
|
AppContext *m_ctx = nullptr;
|
|
|
|
UtilsNetworking *m_networkThumb = nullptr;
|
|
|
|
UtilsNetworking *m_networkImg = nullptr;
|
|
|
|
};
|
|
|
|
|
|
|
|
class SuchWowWidget : public QWidget
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
explicit SuchWowWidget(QWidget *parent = nullptr);
|
|
|
|
~SuchWowWidget();
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
void onWS(QJsonArray such_data);
|
2021-05-14 01:36:33 +00:00
|
|
|
void onPreferredFiatCurrencyChanged(const QString &symbol);
|
2021-01-06 00:24:08 +00:00
|
|
|
|
|
|
|
private slots:
|
2021-05-02 22:43:46 +00:00
|
|
|
void addThumb(SuchWowPost *post);
|
|
|
|
void showImage(SuchWowPost *post);
|
2021-05-14 01:36:33 +00:00
|
|
|
void onTipSliderChanged(int value);
|
2021-01-06 00:24:08 +00:00
|
|
|
|
|
|
|
signals:
|
|
|
|
void donate(QString donate);
|
2021-05-02 22:43:46 +00:00
|
|
|
void openImage(SuchWowPost *post);
|
2021-01-06 00:24:08 +00:00
|
|
|
|
|
|
|
private:
|
|
|
|
void setupTable();
|
|
|
|
void suchDonate();
|
|
|
|
void suchImage();
|
2021-05-14 01:36:33 +00:00
|
|
|
void setTipAmountLabel(double tipAmount = 0.0);
|
2021-01-06 00:24:08 +00:00
|
|
|
SuchWowPost* itemToPost();
|
|
|
|
void showContextMenu(const QPoint &pos);
|
|
|
|
|
2021-05-02 22:43:46 +00:00
|
|
|
QMap<uint, SuchWowPost*> m_lookup;
|
2021-01-06 00:24:08 +00:00
|
|
|
Ui::SuchWowWidget *ui;
|
|
|
|
AppContext *m_ctx = nullptr;
|
|
|
|
QMenu *m_contextMenu;
|
|
|
|
};
|
|
|
|
|
2021-05-02 22:43:46 +00:00
|
|
|
class SuchWidgetItem : public QListWidgetItem
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
explicit SuchWidgetItem(const QIcon &icon, const QString &text, SuchWowPost *post, QListWidget *parent = nullptr, int type = Type) {
|
|
|
|
this->setIcon(icon);
|
|
|
|
this->setText(text);
|
|
|
|
this->post = post;
|
|
|
|
}
|
|
|
|
|
|
|
|
SuchWowPost *post;
|
|
|
|
|
|
|
|
// sort
|
|
|
|
virtual bool operator< (const QListWidgetItem &other) const {
|
|
|
|
auto const *_other = dynamic_cast<const SuchWidgetItem *>(&other);
|
|
|
|
return this->post->uid > _other->post->uid;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // SUCHWOWWIDGET_H
|