#ifndef _TelepathyQt_examples_accounts_account_item_h_HEADER_GUARD_
#define _TelepathyQt_examples_accounts_account_item_h_HEADER_GUARD_
#include <TelepathyQt/Types>
#include <TelepathyQt/Account>
#include <TelepathyQt/Types>
#include <QString>
namespace Tp {
class AccountManager;
class PendingOperation;
}
class QTableWidget;
class AccountItem : public QObject
{
    Q_OBJECT
public:
    enum Columns {
        ColumnValid = 0,
        ColumnEnabled,
        ColumnConnectionManager,
        ColumnProtocol,
        ColumnDisplayName,
        ColumnNickname,
        ColumnConnectsAutomatically,
        ColumnChangingPresence,
        ColumnAutomaticPresence,
        ColumnCurrentPresence,
        ColumnRequestedPresence,
        ColumnConnectionStatus,
        ColumnConnection,
        NumColumns
    };
    Q_ENUMS(Columns)
    AccountItem(Tp::AccountPtr acc, QTableWidget *table, int row, QObject *parent = 0);
    virtual ~AccountItem();
    int row() const { return mRow; }
private Q_SLOTS:
    void onValidityChanged(bool);
    void onStateChanged(bool);
    void onDisplayNameChanged(const QString &);
    void onNicknameChanged(const QString &);
    void onConnectsAutomaticallyPropertyChanged(bool);
    void onChangingPresenceChanged(bool);
    void onAutomaticPresenceChanged(const Tp::SimplePresence &);
    void onCurrentPresenceChanged(const Tp::SimplePresence &);
    void onRequestedPresenceChanged(const Tp::SimplePresence &);
    void onStatusChanged(Tp::ConnectionStatus, Tp::ConnectionStatusReason,
            const QString &error, const QVariantMap &errorDetails);
    void onHaveConnectionChanged(bool);
private:
    void init();
    void setupGui();
    Tp::AccountPtr mAcc;
    QTableWidget *mTable;
    int mRow;
};
#endif