summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMateu Batle <mateu.batle@collabora.co.uk>2011-06-30 00:39:42 -0500
committerMateu Batle <mateu.batle@collabora.co.uk>2011-06-30 00:39:42 -0500
commit4079eaa9fff727ed5ff8332bf4837124a7f09024 (patch)
tree5288b4d22a2364a13481348fa6c1e4ae276a7b6a
parent2e05d6e4192cd6b177a60c0f8d13ee1cbd5c7947 (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.cpp29
-rw-r--r--TelepathyQt4Yell/Models/accounts-model.h9
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;