#ifndef _TelepathyQt4_examples_roster_roster_widget_h_HEADER_GUARD_
#define _TelepathyQt4_examples_roster_roster_widget_h_HEADER_GUARD_
#include <QWidget>
#include <TelepathyQt4/Contact>
#include <TelepathyQt4/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