Add two signals to propagate the URLs when the buttons are clicked
This commit is contained in:
parent
ad89dd5db9
commit
9373508bc3
2 changed files with 77 additions and 2 deletions
|
@ -36,6 +36,7 @@
|
|||
|
||||
#include <KPushButton>
|
||||
|
||||
|
||||
namespace Danbooru {
|
||||
|
||||
const int DanbooruPostDelegate::MARGIN = 5;
|
||||
|
@ -73,6 +74,13 @@ namespace Danbooru {
|
|||
m_downloadButton->resize(m_buttonSize, m_buttonSize);
|
||||
m_viewButton->resize(m_buttonSize, m_buttonSize);
|
||||
|
||||
// Signal-slot connections
|
||||
|
||||
connect(m_viewButton, SIGNAL(clicked()), this,
|
||||
SLOT(viewButtonClicked()));
|
||||
connect(m_downloadButton, SIGNAL(clicked()), this,
|
||||
SLOT(downloadButtonClicked()));
|
||||
|
||||
}
|
||||
|
||||
void DanbooruPostDelegate::paint(QPainter* painter,
|
||||
|
@ -154,4 +162,41 @@ namespace Danbooru {
|
|||
return m_itemView->indexAt(pos);
|
||||
}
|
||||
|
||||
void DanbooruPostDelegate::downloadButtonClicked()
|
||||
{
|
||||
QModelIndex index = hoveredIndex();
|
||||
|
||||
if (!index.isValid()) {
|
||||
return;
|
||||
}
|
||||
|
||||
QVariant data = index.data(Qt::DisplayRole);
|
||||
const DanbooruPost* post = data.value<DanbooruPost*>();
|
||||
|
||||
if (post) {
|
||||
KUrl url = post->fileUrl();
|
||||
Q_EMIT(postViewRequested(url));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
void DanbooruPostDelegate::viewButtonClicked()
|
||||
{
|
||||
|
||||
QModelIndex index = hoveredIndex();
|
||||
|
||||
if (!index.isValid()) {
|
||||
return;
|
||||
}
|
||||
|
||||
QVariant data = index.data(Qt::DisplayRole);
|
||||
const DanbooruPost* post = data.value<DanbooruPost*>();
|
||||
if (post) {
|
||||
KUrl url = post->fileUrl();
|
||||
Q_EMIT(postViewRequested(url));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} // namespace Danbooru
|
||||
|
|
|
@ -31,22 +31,27 @@
|
|||
|
||||
#include <QStyledItemDelegate>
|
||||
|
||||
#include <KUrl>
|
||||
|
||||
class QListView;
|
||||
class QPainter;
|
||||
class KPushButton;
|
||||
|
||||
|
||||
namespace Danbooru {
|
||||
|
||||
/**
|
||||
* @brief Specific delegate for Danbooru items.
|
||||
*
|
||||
*/
|
||||
|
||||
class DanbooruPost;
|
||||
|
||||
class DanbooruPostDelegate : public QStyledItemDelegate
|
||||
{
|
||||
|
||||
Q_OBJECT
|
||||
|
||||
|
||||
public:
|
||||
DanbooruPostDelegate(QListView* itemView);
|
||||
|
||||
|
@ -57,7 +62,6 @@ namespace Danbooru {
|
|||
|
||||
QModelIndex hoveredIndex() const;
|
||||
|
||||
|
||||
private:
|
||||
|
||||
QListView* m_itemView;
|
||||
|
@ -70,6 +74,32 @@ namespace Danbooru {
|
|||
|
||||
static const int MARGIN;
|
||||
|
||||
Q_SIGNALS:
|
||||
|
||||
/**
|
||||
* @brief Emitted when the view button is clicked.
|
||||
*
|
||||
* @param postUrl the URL to the full picture.
|
||||
*
|
||||
*/
|
||||
void postViewRequested(KUrl postUrl);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Emitted when the download button is clicked.
|
||||
*
|
||||
* @param postUrl the URL to the full picture.
|
||||
*
|
||||
*/
|
||||
void postDownloadRequested(KUrl postUrl);
|
||||
|
||||
|
||||
private Q_SLOTS:
|
||||
void viewButtonClicked();
|
||||
void downloadButtonClicked();
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
} // namespace Danbooru
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue