[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    playground/network/telepathy-accounts-kcm/src
From:       Gustavo P. Boiko <gustavo.boiko () kdemail ! net>
Date:       2010-09-23 13:49:59
Message-ID: 20100923134959.B1E44AC888 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1178681 by boiko:

Make the dialogs modal and use a simpler method to set the config pages' \
title. This commit also makes the editting of accounts a resposibility of \
the kcm module instead of doing that in the item itself.

The sideeffect of this commit is that it also fixes the account list not \
being refreshed sometimes.
BUG: 252053


 M  +1 -38     account-item.cpp  
 M  +0 -4      account-item.h  
 M  +9 -21     accounts-list-model.cpp  
 M  +1 -1      accounts-list-model.h  
 M  +9 -45     add-account-assistant.cpp  
 M  +0 -5      add-account-assistant.h  
 M  +13 -26    edit-account-dialog.cpp  
 M  +1 -6      edit-account-dialog.h  
 M  +8 -61     kcm-telepathy-accounts.cpp  
 M  +0 -4      kcm-telepathy-accounts.h  


--- trunk/playground/network/telepathy-accounts-kcm/src/account-item.cpp \
#1178680:1178681 @@ -36,8 +36,7 @@
 AccountItem::AccountItem(const Tp::AccountPtr &account, AccountsListModel \
*parent)  : QObject(parent),
    m_account(account),
-   m_icon(new KIcon()),
-   m_editAccountDialog(0)
+   m_icon(new KIcon())
 {
     kDebug();
 
@@ -80,32 +79,6 @@
     return m_account;
 }
 
-void AccountItem::edit()
-{
-    kDebug();
-
-    // If the edit dialog already exists, focus it.
-    if (m_editAccountDialog) {
-        m_editAccountDialog->focusWidget();
-        return;
-    }
-
-    // FIXME: There should be a driving test for those who want to become \
                parents... :'(
-    QWidget *p = qobject_cast<QWidget*>(parent()->parent());
-    m_editAccountDialog = new EditAccountDialog(this, p); // FIXME: Argh \
                I'm going to jump off a bridge
-
-    // Connect to the dialog's signals.
-    connect(m_editAccountDialog,
-            SIGNAL(finished()),
-            SLOT(onAccountEdited()));
-	connect(m_editAccountDialog, SIGNAL(protocolSelected(QString, QString)),
-			this, SIGNAL(protocolSelected(QString, QString)));
-	connect(this, SIGNAL(setTitleForCustomPages(QString, QList<QString>)),
-			m_editAccountDialog, SLOT(onTitleForCustomPages(QString, \
                QList<QString>)));
-
-    m_editAccountDialog->show();
-}
-
 void AccountItem::remove()
 {
     kDebug() << "Account about to be removed";
@@ -177,16 +150,6 @@
     Q_EMIT removed();
 }
 
-void AccountItem::onAccountEdited()
-{
-    kDebug();
-
-    m_editAccountDialog->deleteLater();
-    m_editAccountDialog = 0;
-
-    Q_EMIT updated();
-}
-
 void AccountItem::onTitleForCustomPages(QString mandatoryPage, \
QList<QString> optionalPage)  {
 	kDebug();
--- trunk/playground/network/telepathy-accounts-kcm/src/account-item.h \
#1178680:1178681 @@ -28,7 +28,6 @@
 class KIcon;
 
 class AccountsListModel;
-class EditAccountDialog;
 
 namespace Tp {
     class PendingOperation;
@@ -43,7 +42,6 @@
     explicit AccountItem(const Tp::AccountPtr &account, AccountsListModel \
*parent = 0);  virtual ~AccountItem();
     Tp::AccountPtr account() const;
-    void edit();
     void remove();
     const KIcon& icon() const;
 
@@ -61,12 +59,10 @@
     void generateIcon();
     void onAccountReady(Tp::PendingOperation *op);
     void onAccountRemoved(Tp::PendingOperation *op);
-    void onAccountEdited();
 
 private:
     Tp::AccountPtr m_account;
     KIcon* m_icon;
-    EditAccountDialog *m_editAccountDialog;
 };
 
 
--- trunk/playground/network/telepathy-accounts-kcm/src/accounts-list-model.cpp \
#1178680:1178681 @@ -140,44 +140,32 @@
    }
 }
 
-void AccountsListModel::editAccount(const QModelIndex &index)
+void AccountsListModel::removeAccount(const QModelIndex &index)
 {
     kDebug();
 
     if(!index.isValid()) {
-        kWarning() << "Can't edit Account: Invalid index.";
+        kDebug() << "Can't remove Account: Invalid index";
         return;
     }
-
     AccountItem *accountItem = m_readyAccounts.at(index.row());
 
-    if (!accountItem) {
-        kWarning() << "Account item is null.";
-        return;
-    }
+    Q_ASSERT(accountItem);
 
-      accountItem->disconnect();
-	connect(accountItem, SIGNAL(protocolSelected(QString, QString)),
-		this, SIGNAL(protocolSelected(QString, QString)));
-	connect(this, SIGNAL(setTitleForCustomPages(QString, QList<QString>)),
-			accountItem, SLOT(onTitleForCustomPages(QString, QList<QString>)));
-
-    accountItem->edit();
+    accountItem->remove();
 }
 
-void AccountsListModel::removeAccount(const QModelIndex &index)
+AccountItem* AccountsListModel::itemForIndex(const QModelIndex &index)
 {
     kDebug();
 
     if(!index.isValid()) {
-        kDebug() << "Can't remove Account: Invalid index";
-        return;
+        kWarning() << "Invalid index" << index;
+        return 0;
     }
-    AccountItem *accountItem = m_readyAccounts.at(index.row());
 
-    Q_ASSERT(accountItem);
-
-    accountItem->remove();
+    AccountItem *accountItem = m_readyAccounts.at(index.row());
+    return accountItem;
 }
 
 void AccountsListModel::onAccountItemReady()
--- trunk/playground/network/telepathy-accounts-kcm/src/accounts-list-model.h \
#1178680:1178681 @@ -40,8 +40,8 @@
     virtual Qt::ItemFlags flags(const QModelIndex &index) const;
     virtual bool setData(const QModelIndex &index, const QVariant &value, \
int role);  void addAccount(const Tp::AccountPtr &account);
-    void editAccount(const QModelIndex &index);
     void removeAccount(const QModelIndex &index);
+    AccountItem* itemForIndex(const QModelIndex &index);
 
 Q_SIGNALS:
 	void protocolSelected(QString, QString);
--- trunk/playground/network/telepathy-accounts-kcm/src/add-account-assistant.cpp \
#1178680:1178681 @@ -61,8 +61,6 @@
     QList<AbstractAccountParametersWidget*> optionalParametersWidgets;
     KPageWidgetItem *pageOne;
     KPageWidgetItem *pageTwo;
-	QString mandatoryPageDesc;
-	QList<QString> optionalPageDesc;
 };
 
 AddAccountAssistant::AddAccountAssistant(Tp::AccountManagerPtr \
accountManager, QWidget *parent) @@ -83,8 +81,7 @@
             SLOT(onProtocolSelected(bool)));
 	connect(d->protocolSelectWidget,
 			SIGNAL(protocolDoubleClicked()),
-			SLOT(onProtocolDoubleClicked()),
-			Qt::DirectConnection);
+            SLOT(next()));
 
     d->tabWidget = new KTabWidget(this);
     d->pageTwo = new KPageWidgetItem(d->tabWidget);
@@ -206,12 +203,11 @@
                     item->mandatoryParameters(), QVariantMap(), \
d->tabWidget);  }
 
-		if(d->mandatoryPageDesc.isEmpty())
-	        d->tabWidget->addTab(d->mandatoryParametersWidget, \
                i18n("Mandatory Parameters"));
-		else
-			d->tabWidget->addTab(d->mandatoryParametersWidget, \
d->mandatoryPageDesc); +        QString title = \
d->mandatoryParametersWidget->windowTitle(); +        if (title.isEmpty())
+            title = i18n("Mandatory Parameters");
 
-		int pageIndex = 0;
+        d->tabWidget->addTab(d->mandatoryParametersWidget, title);
 
         // Check if the AbstractAccountUi exists. If not then we use the \
autogenerated UI for  // everything.
@@ -236,13 +232,10 @@
 
             foreach (AbstractAccountParametersWidget *widget, widgets) {
                 d->optionalParametersWidgets.append(widget);
-				int indexOf = widgets.indexOf(widget);
-				QString description = i18n("Optional parameter");
-				if(indexOf < d->optionalPageDesc.size())
-					description = d->optionalPageDesc.at(indexOf);
-				
-				d->tabWidget->addTab(widget, description);
-				pageIndex++;
+                title = widget->windowTitle();
+                if (title.isEmpty())
+                    title = i18n("Optional Parameters");
+                d->tabWidget->addTab(widget, title);
             }
         }
 
@@ -253,9 +246,6 @@
                                                     QVariantMap(),
                                                     d->tabWidget);
             d->optionalParametersWidgets.append(opew);
-			if(pageIndex < d->optionalPageDesc.size())
-				d->tabWidget->addTab(opew, d->optionalPageDesc.at(pageIndex));
-			else
             	d->tabWidget->addTab(opew, i18n("Optional Parameters"));
         }
 
@@ -429,33 +419,7 @@
 	kDebug();
     //if a protocol is selected, enable the next button on the first page
     setValid(d->pageOne, value);
-
-	if(value)
-	{
-		ProtocolItem *item = d->protocolSelectWidget->selectedProtocol();
-		emit protocolSelected(item->protocol(), item->localizedName());
 	}
-}
 
-void AddAccountAssistant::onProtocolDoubleClicked()
-{
-	kDebug();
-
-	ProtocolItem *item = d->protocolSelectWidget->selectedProtocol();
-	emit protocolSelected(item->protocol(), item->localizedName());
-	next();
-}
-
-void AddAccountAssistant::onTitleForCustomPages(QString mandatoryPage, \
                QList<QString> optionalPage)
-{
-	kDebug();
-	d->mandatoryPageDesc.clear();
-	d->optionalPageDesc.clear();
-
-	d->mandatoryPageDesc = mandatoryPage;
-	d->optionalPageDesc = optionalPage;
-}
-
-
 #include "add-account-assistant.moc"
 
--- trunk/playground/network/telepathy-accounts-kcm/src/add-account-assistant.h \
#1178680:1178681 @@ -44,16 +44,11 @@
 
 Q_SIGNALS:
     void cancelled();
-	void protocolSelected(QString, QString);
 
-public Q_SLOTS:
-	void onTitleForCustomPages(QString mandatoryPage, QList<QString> \
                optionalPage);
-
 private Q_SLOTS:
     void onAccountCreated(Tp::PendingOperation *op);
     void onSetEnabledFinished(Tp::PendingOperation *op);
     void onProtocolSelected(bool value);
-	void onProtocolDoubleClicked();
 
 private:
     class Private;
--- trunk/playground/network/telepathy-accounts-kcm/src/edit-account-dialog.cpp \
#1178680:1178681 @@ -67,14 +67,8 @@
     resize(400, 480);
 
     d->item = item;
-}
 
-void EditAccountDialog::show()
-{
-	emit protocolSelected(d->item->account()->protocol(),
-		d->item->account()->cmName());
-
-	KDialog::show();
+    loadPages();
 }
 
 EditAccountDialog::~EditAccountDialog()
@@ -213,10 +207,8 @@
     emit finished();
 }
 
-void EditAccountDialog::onTitleForCustomPages(QString mandatoryPageDesc, \
QList<QString> optionalPageDesc) +void EditAccountDialog::loadPages()
 {
-	kDebug();
-
     // Get the protocol's parameters.
     Tp::ProtocolInfo *protocolInfo = d->item->account()->protocolInfo();
     Tp::ProtocolParameterList protocolParameters = \
protocolInfo->parameters(); @@ -283,16 +275,16 @@
                 d->tabWidget);
     }
 
-	if(mandatoryPageDesc.isEmpty())
-	    d->tabWidget->addTab(d->mandatoryParametersWidget, i18n("Mandatory \
                Parameters"));
-	else
-		d->tabWidget->addTab(d->mandatoryParametersWidget, mandatoryPageDesc);
+    // Get the custom title for the page, if any
+    QString title = d->mandatoryParametersWidget->windowTitle();
+    if (title.isEmpty())
+        title = i18n("Mandatory Parameters");
 
-    // Get the list of parameters
+    d->tabWidget->addTab(d->mandatoryParametersWidget, title);
+
+    // Get the list of optional parameters
     Tp::ProtocolParameterList optionalParametersLeft = \
d->optionalProtocolParameters;  
-	int pageIndex = 0;
-
     // Check if the AbstractAccountUi exists. If not then we use the \
autogenerated UI for  // everything.
     if (ui) {
@@ -318,13 +310,11 @@
 
         foreach (AbstractAccountParametersWidget *widget, widgets) {
             d->optionalParametersWidgets.append(widget);
-            int indexOf = widgets.indexOf(widget);
-            QString description = i18n("Optional parameter");
-            if(indexOf < optionalPageDesc.size())
-                description = optionalPageDesc.at(indexOf);
+            title = widget->windowTitle();
+            if (title.isEmpty())
+                title = i18n("Optional parameters");
 
-            d->tabWidget->addTab(widget, description);
-            pageIndex++;
+            d->tabWidget->addTab(widget, title);
         }
     }
 
@@ -335,9 +325,6 @@
                                                 \
d->item->account()->parameters(),  d->tabWidget);
         d->optionalParametersWidgets.append(opew);
-        if(pageIndex < optionalPageDesc.size())
-            d->tabWidget->addTab(opew, optionalPageDesc.at(pageIndex));
-        else
             d->tabWidget->addTab(opew, i18n("Optional Parameters"));
     }
 }
--- trunk/playground/network/telepathy-accounts-kcm/src/edit-account-dialog.h \
#1178680:1178681 @@ -35,13 +35,7 @@
     explicit EditAccountDialog(AccountItem *item, QWidget *parent = 0);
     virtual ~EditAccountDialog();
 
-Q_SIGNALS:
-	void protocolSelected(QString, QString);
 
-public Q_SLOTS:
-	void onTitleForCustomPages(QString, QList<QString>);
-	void show();
-
 protected Q_SLOTS:
     virtual void slotButtonClicked(int button);
 
@@ -51,6 +45,7 @@
 private:
     Q_DISABLE_COPY(EditAccountDialog);
 
+    void loadPages();
     void accept();
 
     class Private;
--- trunk/playground/network/telepathy-accounts-kcm/src/kcm-telepathy-accounts.cpp \
#1178680:1178681 @@ -22,6 +22,7 @@
 
 #include "accounts-list-model.h"
 #include "add-account-assistant.h"
+#include "edit-account-dialog.h"
 
 #include <KGenericFactory>
 #include <KIcon>
@@ -78,9 +79,6 @@
     connect(m_accountsListView->selectionModel(),
             SIGNAL(currentChanged(QModelIndex, QModelIndex)),
             SLOT(onSelectedItemChanged()));
-      connect(this, SIGNAL(setTitleForCustomPages(QString, \
                QList<QString>)),
-                  m_accountsListModel, SLOT(onTitleForCustomPages(QString, \
                QList<QString>)));
-
 }
 
 KCMTelepathyAccounts::~KCMTelepathyAccounts()
@@ -144,31 +142,11 @@
         return;
     }
 
-    // Ensure that there is not already an instance of the \
                AddAccountAssistant before we create one.";
-    if (!m_addAccountAssistant) {
-
-        // Create an AddAccountAssistant instance
-        m_addAccountAssistant = new AddAccountAssistant(m_accountManager, \
                this);
-
-        // Connect to its completion signals...
-        connect(m_addAccountAssistant, SIGNAL(cancelled()),
-                this, SLOT(onAddAccountAssistantClosed()));
-        connect(m_addAccountAssistant, SIGNAL(accepted()),
-                this, SLOT(onAddAccountAssistantClosed()));
-		connect(m_addAccountAssistant, SIGNAL(protocolSelected(QString, \
                QString)),
-				this, SLOT(onProtocolSelected(QString, QString)));
-		connect(this, SIGNAL(setTitleForCustomPages(QString, QList<QString>)),
-				m_addAccountAssistant, SLOT(onTitleForCustomPages(QString, \
                QList<QString>)));
-
-        // ...and finally show it.
-        m_addAccountAssistant->show();
-
-        return;
+    // ...and finally exec it.
+    AddAccountAssistant assistant(m_accountManager, this);
+    assistant.exec();
     }
 
-    kWarning() << "Cannot create a new AddAccountAssistant. One already \
                exists.";
-}
-
 void KCMTelepathyAccounts::onEditAccountClicked()
 {
     kDebug();
@@ -179,18 +157,14 @@
     }
 
     QModelIndex index = m_accountsListView->currentIndex();
+    AccountItem *item = m_accountsListModel->itemForIndex(index);
 
-    // A valid account must be selected in the list to allow editing
-    if (!index.isValid()) {
+    if (!item)
         return;
-    }
 
     // Item is OK. Edit the item.
-	m_accountsListModel->disconnect();
-	connect(m_accountsListModel, SIGNAL(protocolSelected(QString, QString)),
-			this, SLOT(onProtocolSelected(QString, QString)));
-      
-    m_accountsListModel->editAccount(index);
+    EditAccountDialog dialog(item, this);
+    dialog.exec();
 }
 
 void KCMTelepathyAccounts::onRemoveAccountClicked()
@@ -206,32 +180,5 @@
     }
 }
 
-void KCMTelepathyAccounts::onAddAccountAssistantClosed()
-{
-    kDebug();
-
-    // Add account assistant has been cancelled. Delete it.
-    m_addAccountAssistant->deleteLater();
-    m_addAccountAssistant = 0;
-}
-
-void KCMTelepathyAccounts::onProtocolSelected(QString protocol, QString \
                localizedName)
-{
-	kDebug() << protocol << localizedName;
-
-	QString mandatoryPage;
-	QList<QString> optionalPage;
-
-	if(protocol == "jabber")
-	{
-		mandatoryPage = i18n("Basic setup");
-		optionalPage.push_back(i18n("Account preferences"));
-		optionalPage.push_back(i18n("Connection settings"));
-		optionalPage.push_back(i18n("Advanced options"));
-	}
-
-	emit setTitleForCustomPages(mandatoryPage, optionalPage);
-}
-
 #include "kcm-telepathy-accounts.moc"
 
--- trunk/playground/network/telepathy-accounts-kcm/src/kcm-telepathy-accounts.h \
#1178680:1178681 @@ -44,8 +44,6 @@
                                   const QVariantList& args = \
QVariantList());  virtual ~KCMTelepathyAccounts();
 
-Q_SIGNALS:
-	void setTitleForCustomPages(QString mandatoryPage, QList<QString> \
optionalPage);  
 public Q_SLOTS:
     virtual void load();
@@ -58,8 +56,6 @@
     void onAddAccountClicked();
     void onEditAccountClicked();
     void onRemoveAccountClicked();
-    void onAddAccountAssistantClosed();
-	void onProtocolSelected(QString protocol, QString localizedName);
 
 private:
     Tp::AccountManagerPtr m_accountManager;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic