[SCM] ktp-common-internals packaging branch, master, updated. debian/15.12.1-2-1839-gf0635e9

Maximiliano Curia maxy at moszumanska.debian.org
Mon May 9 09:05:52 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=1f5edb2

The following commit has been merged in the master branch:
commit 1f5edb207af5b5cb8665d2dd817ae379c210e307
Author: David Edmundson <kde at davidedmundson.co.uk>
Date:   Wed Nov 14 11:14:32 2012 +0900

    Use AccountsComboBox in AddContactDialog and JoinChatRoomDialog
    
    This removes incorrect usages of ContactModel to create lists of accounts in common internals,
    as well as removing some duplicate code.
    
    This patch also fixes the JoinChatRoomDialog not updating as accounts become online/offline.
    
    REVIEW: 107321
---
 KTp/Widgets/add-contact-dialog.cpp    | 50 +++++++++++++------------------
 KTp/Widgets/add-contact-dialog.h      |  2 +-
 KTp/Widgets/add-contact-dialog.ui     | 11 +++++--
 KTp/Widgets/join-chat-room-dialog.cpp | 56 +++++++++++++++++++----------------
 KTp/Widgets/join-chat-room-dialog.ui  | 12 ++++----
 5 files changed, 66 insertions(+), 65 deletions(-)

diff --git a/KTp/Widgets/add-contact-dialog.cpp b/KTp/Widgets/add-contact-dialog.cpp
index ddc26bd..def6a9f 100644
--- a/KTp/Widgets/add-contact-dialog.cpp
+++ b/KTp/Widgets/add-contact-dialog.cpp
@@ -26,7 +26,6 @@
 #include <KTp/Models/accounts-model-item.h>
 
 #include <QObject>
-#include <QSortFilterProxyModel>
 #include <QCloseEvent>
 
 #include <KMessageBox>
@@ -37,29 +36,26 @@
 #include <TelepathyQt/Connection>
 #include <TelepathyQt/ContactManager>
 #include <TelepathyQt/PendingContacts>
+#include <TelepathyQt/Filter>
+#include <TelepathyQt/AccountSet>
 
 namespace KTp {
 
-/** A filter which only lists connections which accept adding contacts*/
-class KTP_NO_EXPORT SubscribableAccountsModel : public QSortFilterProxyModel
+class KTP_NO_EXPORT SubscribableAccountFilter : public Tp::AccountFilter
 {
 public:
-    SubscribableAccountsModel(QObject *parent);
-    virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const;
-};
-
-SubscribableAccountsModel::SubscribableAccountsModel(QObject *parent)
- : QSortFilterProxyModel(parent)
-{
-}
-
-bool SubscribableAccountsModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
-{
-    AccountsModelItem* item = sourceModel()->index(source_row, 0, source_parent).data(ContactsModel::ItemRole).value<AccountsModelItem*>();
+    SubscribableAccountFilter()
+    {
+    }
 
-    if (item) {
-        Tp::AccountPtr account = item->account();
+    bool isValid() const
+    {
+        //return whether the filter is valid which is always true as this filter is hardcoded
+        return true;
+    }
 
+    bool matches(const Tp::AccountPtr &account) const
+    {
         //if there's no connection we can't add contacts as we have no contactmanager
         if (! account->connection()) {
             return false;
@@ -69,9 +65,9 @@ bool SubscribableAccountsModel::filterAcceptsRow(int source_row, const QModelInd
         if (! account->connection()->contactManager()->canRequestPresenceSubscription()){
             return false;
         }
+        return true;
     }
-    return true;
-}
+};
 
 
 struct KTP_NO_EXPORT AddContactDialog::Private
@@ -85,7 +81,7 @@ struct KTP_NO_EXPORT AddContactDialog::Private
     bool acceptInProgress;
 };
 
-AddContactDialog::AddContactDialog(ContactsModel *accountModel, QWidget *parent) :
+AddContactDialog::AddContactDialog(const Tp::AccountManagerPtr &accountManager, QWidget *parent) :
     KDialog(parent),
     d(new Private)
 {
@@ -96,9 +92,10 @@ AddContactDialog::AddContactDialog(ContactsModel *accountModel, QWidget *parent)
     d->ui->setupUi(widget);
     setMainWidget(widget);
 
-    SubscribableAccountsModel *filteredModel = new SubscribableAccountsModel(this);
-    filteredModel->setSourceModel(accountModel);
-    d->ui->accountCombo->setModel(filteredModel);
+    Tp::AccountFilterPtr filter = Tp::AccountFilterPtr(new KTp::SubscribableAccountFilter());
+    Tp::AccountSetPtr accountSet = accountManager->filterAccounts(filter);
+
+    d->ui->accountCombo->setAccountSet(accountSet);
 
     d->ui->screenNameLineEdit->setFocus();
 }
@@ -111,12 +108,7 @@ AddContactDialog::~AddContactDialog()
 
 void AddContactDialog::accept()
 {
-    Tp::AccountPtr account;
-    QVariant itemData = d->ui->accountCombo->itemData(d->ui->accountCombo->currentIndex(), ContactsModel::ItemRole);
-    AccountsModelItem* item = itemData.value<AccountsModelItem*>();
-    if (item) {
-        account = item->account();
-    }
+    Tp::AccountPtr account = d->ui->accountCombo->currentAccount();
 
     if (account.isNull()) {
         KMessageBox::sorry(this, i18n("No account selected."));
diff --git a/KTp/Widgets/add-contact-dialog.h b/KTp/Widgets/add-contact-dialog.h
index cd4b66e..cb57731 100644
--- a/KTp/Widgets/add-contact-dialog.h
+++ b/KTp/Widgets/add-contact-dialog.h
@@ -40,7 +40,7 @@ class KTP_EXPORT AddContactDialog : public KDialog
     Q_OBJECT
 
 public:
-    explicit AddContactDialog(ContactsModel* accountModel, QWidget *parent = 0);
+    explicit AddContactDialog(const Tp::AccountManagerPtr &accountManager, QWidget *parent = 0);
     virtual ~AddContactDialog();
 
     virtual void accept();
diff --git a/KTp/Widgets/add-contact-dialog.ui b/KTp/Widgets/add-contact-dialog.ui
index 616fc71..f3ba71a 100644
--- a/KTp/Widgets/add-contact-dialog.ui
+++ b/KTp/Widgets/add-contact-dialog.ui
@@ -18,9 +18,6 @@
      </property>
     </widget>
    </item>
-   <item row="0" column="1">
-    <widget class="KComboBox" name="accountCombo"/>
-   </item>
    <item row="1" column="0">
     <widget class="QLabel" name="label_2">
      <property name="text">
@@ -31,6 +28,9 @@
    <item row="1" column="1">
     <widget class="KLineEdit" name="screenNameLineEdit"/>
    </item>
+   <item row="0" column="1">
+    <widget class="KTp::AccountsComboBox" name="accountCombo"/>
+   </item>
   </layout>
  </widget>
  <customwidgets>
@@ -39,6 +39,11 @@
    <extends>QLineEdit</extends>
    <header>klineedit.h</header>
   </customwidget>
+  <customwidget>
+   <class>KTp::AccountsComboBox</class>
+   <extends>QComboBox</extends>
+   <header>accounts-combo-box.h</header>
+  </customwidget>
  </customwidgets>
  <resources/>
  <connections/>
diff --git a/KTp/Widgets/join-chat-room-dialog.cpp b/KTp/Widgets/join-chat-room-dialog.cpp
index 3490539..c29c3e8 100644
--- a/KTp/Widgets/join-chat-room-dialog.cpp
+++ b/KTp/Widgets/join-chat-room-dialog.cpp
@@ -25,22 +25,26 @@
 #include <KTp/Models/rooms-model.h>
 
 #include <KConfig>
+#include <KDebug>
 #include <KInputDialog>
 #include <KMessageBox>
 #include <KNotification>
 #include <KPushButton>
 #include <KCompletionBox>
 
+#include <TelepathyQt/AccountSet>
+#include <TelepathyQt/AccountCapabilityFilter>
 #include <TelepathyQt/AccountManager>
+#include <TelepathyQt/AccountPropertyFilter>
+#include <TelepathyQt/AndFilter>
 #include <TelepathyQt/ChannelTypeRoomListInterface>
 #include <TelepathyQt/PendingChannel>
 #include <TelepathyQt/PendingReady>
+#include <TelepathyQt/RequestableChannelClassSpec>
 #include <TelepathyQt/RoomListChannel>
 
 #include <QSortFilterProxyModel>
 
-#include <KDebug>
-
 KTp::JoinChatRoomDialog::JoinChatRoomDialog(Tp::AccountManagerPtr accountManager, QWidget* parent)
     : KDialog(parent, Qt::Dialog)
     , ui(new Ui::JoinChatRoomDialog)
@@ -50,7 +54,6 @@ KTp::JoinChatRoomDialog::JoinChatRoomDialog(Tp::AccountManagerPtr accountManager
     , m_recentComp(new KCompletion)
 {
     QWidget *joinChatRoomDialog = new QWidget(this);
-    m_accounts = accountManager->allAccounts();
     ui->setupUi(joinChatRoomDialog);
     setMainWidget(joinChatRoomDialog);
     setWindowIcon(KIcon(QLatin1String("telepathy-kde")));
@@ -77,15 +80,17 @@ KTp::JoinChatRoomDialog::JoinChatRoomDialog(Tp::AccountManagerPtr accountManager
     ui->removeRecentPushButton->setIcon(KIcon(QLatin1String("list-remove")));
     ui->clearRecentPushButton->setIcon(KIcon(QLatin1String("edit-clear-list")));
 
-    // populate combobox with accounts that support chat rooms
-    for (int i = 0; i < m_accounts.count(); ++i) {
-        Tp::AccountPtr acc = m_accounts.at(i);
+    Tp::AccountPropertyFilterPtr isOnlineFilter = Tp::AccountPropertyFilter::create();
+    isOnlineFilter->addProperty(QLatin1String("online"), true);
 
-        if (acc->capabilities().textChatrooms() && acc->isOnline()) {
-            // add unique data to identify the correct account later on
-            ui->comboBox->addItem(KIcon(acc->iconName()), acc->displayName(), acc->uniqueIdentifier());
-        }
-    }
+    Tp::AccountCapabilityFilterPtr capabilityFilter = Tp::AccountCapabilityFilter::create(
+                Tp::RequestableChannelClassSpecList() << Tp::RequestableChannelClassSpec::conferenceTextChatroom());
+
+    Tp::AccountFilterPtr filter = Tp::AndFilter<Tp::Account>::create((QList<Tp::AccountFilterConstPtr>() <<
+                                             isOnlineFilter <<
+                                             capabilityFilter));
+
+    ui->comboBox->setAccountSet(accountManager->filterAccounts(filter));
 
     // apply the filter after populating
     onAccountSelectionChanged(ui->comboBox->currentIndex());
@@ -145,24 +150,19 @@ KTp::JoinChatRoomDialog::~JoinChatRoomDialog()
 
 Tp::AccountPtr KTp::JoinChatRoomDialog::selectedAccount() const
 {
-    Tp::AccountPtr account;
-    bool found = false;
-
-    for (int i = 0; i < m_accounts.count() && !found; ++i) {
-        if (m_accounts.at(i)->uniqueIdentifier() == ui->comboBox->itemData(ui->comboBox->currentIndex()).toString()) {
-            account = m_accounts.at(i);
-            found = true;
-        }
-    }
-
-    // account should never be empty
-    return account;
+    return ui->comboBox->currentAccount();
 }
 
 void KTp::JoinChatRoomDialog::onAccountSelectionChanged(int newIndex)
 {
     // Show only favorites associated with the selected account
-    QString accountIdentifier = ui->comboBox->itemData(newIndex).toString();
+    Q_UNUSED(newIndex)
+
+    if (!ui->comboBox->currentAccount()) {
+        return;
+    }
+
+    QString accountIdentifier = ui->comboBox->currentAccount()->uniqueIdentifier();
     m_favoritesProxyModel->setFilterFixedString(accountIdentifier);
 
     // Provide only rooms recently used with the selected account for completion
@@ -185,9 +185,13 @@ void KTp::JoinChatRoomDialog::onAccountSelectionChanged(int newIndex)
 
 void KTp::JoinChatRoomDialog::addFavorite()
 {
+    if (!ui->comboBox->currentAccount()) {
+        return;
+    }
+
     bool ok = false;
     QString favoriteHandle = ui->lineEdit->text();
-    QString favoriteAccount = ui->comboBox->itemData(ui->comboBox->currentIndex()).toString();
+    QString favoriteAccount = ui->comboBox->currentAccount()->uniqueIdentifier();
 
     if (m_favoritesModel->containsRoom(favoriteHandle, favoriteAccount)) {
         KMessageBox::sorry(this, i18n("This room is already in your favorites."));
@@ -306,7 +310,7 @@ void KTp::JoinChatRoomDialog::clearRecentRooms()
 
 void KTp::JoinChatRoomDialog::getRoomList()
 {
-    Tp::AccountPtr account = selectedAccount();
+    Tp::AccountPtr account = ui->comboBox->currentAccount();
 
     // Clear the list from previous items
     m_model->clearRoomInfoList();
diff --git a/KTp/Widgets/join-chat-room-dialog.ui b/KTp/Widgets/join-chat-room-dialog.ui
index 2d077c4..4bc1d3b 100644
--- a/KTp/Widgets/join-chat-room-dialog.ui
+++ b/KTp/Widgets/join-chat-room-dialog.ui
@@ -21,7 +21,7 @@
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
-    <widget class="KComboBox" name="comboBox"/>
+    <widget class="KTp::AccountsComboBox" name="comboBox"/>
    </item>
    <item>
     <widget class="QLabel" name="label">
@@ -229,15 +229,15 @@
  </widget>
  <customwidgets>
   <customwidget>
-   <class>KComboBox</class>
-   <extends>QComboBox</extends>
-   <header>kcombobox.h</header>
-  </customwidget>
-  <customwidget>
    <class>KLineEdit</class>
    <extends>QLineEdit</extends>
    <header>klineedit.h</header>
   </customwidget>
+  <customwidget>
+   <class>KTp::AccountsComboBox</class>
+   <extends>QComboBox</extends>
+   <header>accounts-combo-box.h</header>
+  </customwidget>
  </customwidgets>
  <resources/>
  <connections/>

-- 
ktp-common-internals packaging



More information about the pkg-kde-commits mailing list