diff options
author | Mateu Batle <mateu.batle@collabora.co.uk> | 2011-06-30 00:39:42 -0500 |
---|---|---|
committer | Mateu Batle <mateu.batle@collabora.co.uk> | 2011-06-30 00:39:42 -0500 |
commit | 4079eaa9fff727ed5ff8332bf4837124a7f09024 (patch) | |
tree | 5288b4d22a2364a13481348fa6c1e4ae276a7b6a | |
parent | 2e05d6e4192cd6b177a60c0f8d13ee1cbd5c7947 (diff) |
Define new signal hierarchicalDataChanged (used by subclsases to indicate accounts changes that might change contacts role data in the model)
Use of proper signal / slot names with namespace qualifier Tpy
Moved load accounts to be executed after object constructor finished
-rw-r--r-- | TelepathyQt4Yell/Models/accounts-model.cpp | 29 | ||||
-rw-r--r-- | TelepathyQt4Yell/Models/accounts-model.h | 9 |
2 files changed, 23 insertions, 15 deletions
diff --git a/TelepathyQt4Yell/Models/accounts-model.cpp b/TelepathyQt4Yell/Models/accounts-model.cpp index dcc0a7c..9de6961 100644 --- a/TelepathyQt4Yell/Models/accounts-model.cpp +++ b/TelepathyQt4Yell/Models/accounts-model.cpp @@ -56,23 +56,18 @@ AccountsModel::AccountsModel(const Tp::AccountManagerPtr &am, QObject *parent) { mPriv->mTree = new TreeNode; connect(mPriv->mTree, - SIGNAL(changed(TreeNode*)), - SLOT(onItemChanged(TreeNode*))); + SIGNAL(changed(Tpy::TreeNode*)), + SLOT(onItemChanged(Tpy::TreeNode*))); connect(mPriv->mTree, - SIGNAL(childrenAdded(TreeNode*,QList<TreeNode*>)), - SLOT(onItemsAdded(TreeNode*,QList<TreeNode*>))); + SIGNAL(childrenAdded(Tpy::TreeNode*,QList<Tpy::TreeNode*>)), + SLOT(onItemsAdded(Tpy::TreeNode*,QList<Tpy::TreeNode*>))); connect(mPriv->mTree, - SIGNAL(childrenRemoved(TreeNode*,int,int)), - SLOT(onItemsRemoved(TreeNode*,int,int))); + SIGNAL(childrenRemoved(Tpy::TreeNode*,int,int)), + SLOT(onItemsRemoved(Tpy::TreeNode*,int,int))); connect(mPriv->mAM.data(), SIGNAL(newAccount(Tp::AccountPtr)), SLOT(onNewAccount(Tp::AccountPtr))); - // load existing accounts - foreach (Tp::AccountPtr account, mPriv->mAM->allAccounts()) { - onNewAccount(account); - } - QHash<int, QByteArray> roles; roles[ItemRole] = "item"; roles[IdRole] = "id"; @@ -119,6 +114,8 @@ AccountsModel::AccountsModel(const Tp::AccountManagerPtr &am, QObject *parent) roles[UpgradeCallCapabilityRole] = "upgradeCall"; roles[FileTransferCapabilityRole] = "fileTransfer"; setRoleNames(roles); + + QTimer::singleShot(0, this, SLOT(onLoadAccounts())); } AccountsModel::~AccountsModel() @@ -127,6 +124,14 @@ AccountsModel::~AccountsModel() delete mPriv; } +void AccountsModel::onLoadAccounts() +{ + // load existing accounts + foreach (Tp::AccountPtr account, mPriv->mAM->allAccounts()) { + onNewAccount(account); + } +} + void AccountsModel::onNewAccount(const Tp::AccountPtr &account) { AccountsModelItem *item = new AccountsModelItem(account); @@ -149,7 +154,7 @@ void AccountsModel::onItemChanged(TreeNode *node) emit dataChanged(accountIndex, accountIndex); } -void AccountsModel::onItemsAdded(TreeNode *parent, const QList<TreeNode *> &nodes) +void AccountsModel::onItemsAdded(Tpy::TreeNode *parent, const QList<Tpy::TreeNode *> &nodes) { QModelIndex parentIndex = index(parent); int currentSize = rowCount(parentIndex); diff --git a/TelepathyQt4Yell/Models/accounts-model.h b/TelepathyQt4Yell/Models/accounts-model.h index 1020ee5..93658ba 100644 --- a/TelepathyQt4Yell/Models/accounts-model.h +++ b/TelepathyQt4Yell/Models/accounts-model.h @@ -122,12 +122,15 @@ public: Q_SIGNALS: void accountCountChanged(); void accountConnectionStatusChanged(const QString &accountId, int status); + // expensive operation, updates all children from parents first .. last + void hierarchicalDataChanged(const QModelIndex &first, const QModelIndex &last); protected Q_SLOTS: + void onLoadAccounts(); void onNewAccount(const Tp::AccountPtr &account); - void onItemChanged(TreeNode *node); - void onItemsAdded(TreeNode *parent, const QList<TreeNode *> &nodes); - void onItemsRemoved(TreeNode *parent, int first, int last); + void onItemChanged(Tpy::TreeNode *node); + virtual void onItemsAdded(Tpy::TreeNode *parent, const QList<Tpy::TreeNode *> &nodes); + void onItemsRemoved(Tpy::TreeNode *parent, int first, int last); private: struct Private; |