Skip to content
Snippets Groups Projects
CommunitiesList.h 1.45 KiB
Newer Older
  • Learn to ignore specific revisions
  • Max Sandholm's avatar
    Max Sandholm committed
    #pragma once
    
    #include <QScrollArea>
    #include <QSharedPointer>
    #include <QVBoxLayout>
    
    #include "CommunitiesListItem.h"
    #include "Community.h"
    #include "ui/Theme.h"
    
    class CommunitiesList : public QWidget
    {
            Q_OBJECT
    
    public:
    
            CommunitiesList(QWidget *parent = nullptr);
    
    Max Sandholm's avatar
    Max Sandholm committed
    
    
            void setCommunities(const std::map<QString, QSharedPointer<Community>> &communities);
            void clear() { communities_.clear(); }
    
            void addCommunity(QSharedPointer<Community> community, const QString &id);
    
            void removeCommunity(const QString &id) { communities_.erase(id); };
    
    Max Sandholm's avatar
    Max Sandholm committed
    
    signals:
    
            void communityChanged(const QString &id);
    
            void avatarRetrieved(const QString &id, const QPixmap &img);
    
    Max Sandholm's avatar
    Max Sandholm committed
    
    public slots:
    
            void updateCommunityAvatar(const QString &id, const QPixmap &img);
            void highlightSelectedCommunity(const QString &id);
    
    Max Sandholm's avatar
    Max Sandholm committed
    
    private:
    
            void fetchCommunityAvatar(const QString &id, const QString &avatarUrl);
    
            void addGlobalItem() { addCommunity(QSharedPointer<Community>(new Community), "world"); }
    
    
            //! Check whether or not a community id is currently managed.
            bool communityExists(const QString &id)
            {
                    return communities_.find(id) != communities_.end();
            }
    
    
    Max Sandholm's avatar
    Max Sandholm committed
            QVBoxLayout *topLayout_;
            QVBoxLayout *contentsLayout_;
            QWidget *scrollAreaContents_;
            QScrollArea *scrollArea_;
    
    
            std::map<QString, QSharedPointer<CommunitiesListItem>> communities_;
    
    Max Sandholm's avatar
    Max Sandholm committed
    };