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