| Home · All Classes · All Namespaces · Modules · Functions · Files

roster/roster-widget.h

    #ifndef _TelepathyQt_examples_roster_roster_widget_h_HEADER_GUARD_
    #define _TelepathyQt_examples_roster_roster_widget_h_HEADER_GUARD_

    #include <QWidget>

    #include <TelepathyQt/Contact>
    #include <TelepathyQt/Connection>

    namespace Tp {
    class Connection;
    class PendingOperation;
    }

    class QAction;
    class QDialog;
    class QLineEdit;
    class QListWidget;
    class QListWidgetItem;
    class QPushButton;

    class RosterItem;

    class RosterWidget : public QWidget
    {
        Q_OBJECT

    public:
        RosterWidget(QWidget *parent = 0);
        virtual ~RosterWidget();

        Tp::ConnectionPtr connection() const { return mConn; }
        void setConnection(const Tp::ConnectionPtr &conn);
        void unsetConnection();

        QListWidget *listWidget() const { return mList; }

    protected:
        virtual RosterItem *createItemForContact(
                const Tp::ContactPtr &contact,
                bool &exists);
        virtual void updateActions(RosterItem *item) { }

    private Q_SLOTS:
        void onContactManagerStateChanged(Tp::ContactListState state);
        void onPresencePublicationRequested(const Tp::Contacts &);
        void onItemSelectionChanged();
        void onAddButtonClicked();
        void onAuthActionTriggered(bool);
        void onDenyActionTriggered(bool);
        void onRemoveActionTriggered(bool);
        void onBlockActionTriggered(bool);
        void onContactRetrieved(Tp::PendingOperation *op);
        void updateActions();

    private:
        void createActions();
        void setupGui();

        Tp::ConnectionPtr mConn;
        QAction *mAuthAction;
        QAction *mRemoveAction;
        QAction *mDenyAction;
        QAction *mBlockAction;
        QListWidget *mList;
        QPushButton *mAddBtn;
        QDialog *mAddDlg;
        QLineEdit *mAddDlgEdt;
    };

    #endif