Skip to content
Snippets Groups Projects
CommunitiesListItem.h 2.74 KiB
Newer Older
  • Learn to ignore specific revisions
  • Max Sandholm's avatar
    Max Sandholm committed
    #pragma once
    
    #include <QDebug>
    #include <QMouseEvent>
    #include <QPainter>
    #include <QSharedPointer>
    #include <QWidget>
    
    #include "Community.h"
    
    Max Sandholm's avatar
    Max Sandholm committed
    #include "ui/Theme.h"
    
    
    Max Sandholm's avatar
    Max Sandholm committed
    class CommunitiesListItem : public QWidget
    {
            Q_OBJECT
            Q_PROPERTY(QColor highlightedBackgroundColor READ highlightedBackgroundColor WRITE
                         setHighlightedBackgroundColor)
            Q_PROPERTY(
              QColor hoverBackgroundColor READ hoverBackgroundColor WRITE setHoverBackgroundColor)
            Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor)
    
    
            Q_PROPERTY(QColor avatarFgColor READ avatarFgColor WRITE setAvatarFgColor)
            Q_PROPERTY(QColor avatarBgColor READ avatarBgColor WRITE setAvatarBgColor)
    
    
    Max Sandholm's avatar
    Max Sandholm committed
    public:
            CommunitiesListItem(QSharedPointer<Community> community,
                                QString community_id,
                                QWidget *parent = nullptr);
    
    
            void setCommunity(QSharedPointer<Community> community) { community_ = community; };
    
    Max Sandholm's avatar
    Max Sandholm committed
    
    
            bool isPressed() const { return isPressed_; }
            void setAvatar(const QImage &img);
    
    Max Sandholm's avatar
    Max Sandholm committed
    
            QColor highlightedBackgroundColor() const { return highlightedBackgroundColor_; }
            QColor hoverBackgroundColor() const { return hoverBackgroundColor_; }
            QColor backgroundColor() const { return backgroundColor_; }
    
    
            QColor avatarFgColor() const { return avatarFgColor_; }
            QColor avatarBgColor() const { return avatarBgColor_; }
    
    
    Max Sandholm's avatar
    Max Sandholm committed
            void setHighlightedBackgroundColor(QColor &color) { highlightedBackgroundColor_ = color; }
            void setHoverBackgroundColor(QColor &color) { hoverBackgroundColor_ = color; }
            void setBackgroundColor(QColor &color) { backgroundColor_ = color; }
    
    
            void setAvatarFgColor(QColor &color) { avatarFgColor_ = color; }
            void setAvatarBgColor(QColor &color) { avatarBgColor_ = color; }
    
            QSize sizeHint() const override
            {
                    return QSize(IconSize + IconSize / 3, IconSize + IconSize / 3);
            }
    
    Max Sandholm's avatar
    Max Sandholm committed
    
    signals:
            void clicked(const QString &community_id);
    
    public slots:
            void setPressedState(bool state);
    
    protected:
            void mousePressEvent(QMouseEvent *event) override;
            void paintEvent(QPaintEvent *event) override;
    
    private:
    
    Max Sandholm's avatar
    Max Sandholm committed
    
            QSharedPointer<Community> community_;
            QString communityId_;
            QString communityName_;
            QString communityShortDescription;
    
            QPixmap communityAvatar_;
    
    
            QColor highlightedBackgroundColor_;
            QColor hoverBackgroundColor_;
            QColor backgroundColor_;
    
            QColor avatarFgColor_;
            QColor avatarBgColor_;
    
    
    Max Sandholm's avatar
    Max Sandholm committed
            bool isPressed_ = false;
    
    
            RippleOverlay *rippleOverlay_;
    };