Add two signals to propagate the URLs when the buttons are clicked

This commit is contained in:
Luca Beltrame 2013-06-09 22:00:41 +02:00
parent ad89dd5db9
commit 9373508bc3
2 changed files with 77 additions and 2 deletions

View file

@ -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

View file

@ -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