[SCM] ktp-contact-list packaging branch, master, updated. debian/15.12.1-2-1070-g6c56f91

Maximiliano Curia maxy at moszumanska.debian.org
Sat May 28 00:06:49 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-contact-list.git;a=commitdiff;h=a987d7f

The following commit has been merged in the master branch:
commit a987d7f7c2a22c9729d9f1ba97a340c51c7c7543
Author: Francesco Nwokeka <francesco.nwokeka at gmail.com>
Date:   Sat Jun 25 00:10:08 2011 +0200

    ADD "join chat room" action in contactlist
    
    the "join chat room" action is located under the "wrench" toolbutton. It displays only the accounts that have the capability of doing so.
    
    Reviewed by: David Edmundson
---
 CMakeLists.txt                                     |  2 +
 dialogs/join-chat-room-dialog.cpp                  | 87 ++++++++++++++++++++++
 .../join-chat-room-dialog.h                        | 38 +++++-----
 dialogs/join-chat-room-dialog.ui                   | 34 +++++++++
 main-widget.cpp                                    | 25 ++++++-
 main-widget.h                                      |  1 +
 6 files changed, 166 insertions(+), 21 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3dd8cc0..809dc0d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -32,6 +32,7 @@ set (contactlist_SRCS
      main-widget.cpp
      fetch-avatar-job.cpp
      dialogs/add-contact-dialog.cpp
+     dialogs/join-chat-room-dialog.cpp
      dialogs/remove-contact-dialog.cpp
      models/accounts-filter-model.cpp
      models/contact-model-item.cpp
@@ -47,6 +48,7 @@ set (contactlist_SRCS
 kde4_add_ui_files (contactlist_SRCS
                    main-widget.ui
                    dialogs/add-contact-dialog.ui
+                   dialogs/join-chat-room-dialog.ui
                    dialogs/remove-contact-dialog.ui
 )
 
diff --git a/dialogs/join-chat-room-dialog.cpp b/dialogs/join-chat-room-dialog.cpp
new file mode 100644
index 0000000..135688f
--- /dev/null
+++ b/dialogs/join-chat-room-dialog.cpp
@@ -0,0 +1,87 @@
+/*
+ * This file is part of telepathy-contactslist-prototype
+ *
+ * Copyright (C) 2011 Francesco Nwokeka <francesco.nwokeka at gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#include "../models/accounts-model.h"
+#include "join-chat-room-dialog.h"
+#include "ui_join-chat-room-dialog.h"
+
+#include <KDE/KPushButton>
+#include <TelepathyQt4/AccountManager>
+
+JoinChatRoomDialog::JoinChatRoomDialog(Tp::AccountManagerPtr accountManager, QWidget* parent)
+    : KDialog(parent, Qt::Dialog)
+    , ui(new Ui::JoinChatRoomDialog)
+{
+    QWidget *joinChatRoomDialog = new QWidget(this);
+    m_accounts = accountManager->allAccounts();
+    ui->setupUi(joinChatRoomDialog);
+    setMainWidget(joinChatRoomDialog);
+
+    // disable OK button on start
+    button(Ok)->setEnabled(false);
+
+
+    // populate combobox with accounts that support chat rooms
+    for (int i = 0; i < m_accounts.count(); ++i) {
+        Tp::AccountPtr acc = m_accounts.at(i);
+
+        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());
+        }
+    }
+
+    // connects
+    connect(ui->lineEdit, SIGNAL(textChanged(QString)), this, SLOT(onTextChanged(QString)));
+}
+
+JoinChatRoomDialog::~JoinChatRoomDialog()
+{
+    delete ui;
+}
+
+Tp::AccountPtr 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;
+}
+
+QString JoinChatRoomDialog::selectedChatRoom() const
+{
+    return ui->lineEdit->text();
+}
+
+void JoinChatRoomDialog::onTextChanged(QString newText)
+{
+    if (button(Ok)->isEnabled() == newText.isEmpty()) {
+        button(Ok)->setEnabled(!newText.isEmpty());
+    }
+}
+
diff --git a/fetch-avatar-job.h b/dialogs/join-chat-room-dialog.h
similarity index 54%
copy from fetch-avatar-job.h
copy to dialogs/join-chat-room-dialog.h
index 633351e..0b42207 100644
--- a/fetch-avatar-job.h
+++ b/dialogs/join-chat-room-dialog.h
@@ -1,8 +1,7 @@
 /*
  * This file is part of telepathy-contactslist-prototype
  *
- * Copyright (C) 2011 Collabora Ltd. <info at collabora.co.uk>
- *   @Author Dario Freddi <dario.freddi at collabora.co.uk>
+ * Copyright (C) 2011 Francesco Nwokeka <francesco.nwokeka at gmail.com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -19,33 +18,34 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
-#ifndef FETCH_AVATAR_JOB_H
-#define FETCH_AVATAR_JOB_H
+#ifndef JOINCHATROOMDIALOG_H
+#define JOINCHATROOMDIALOG_H
 
-#include <KJob>
+#include <KDialog>
+#include <TelepathyQt4/AccountManager>
 
-#include <TelepathyQt4/Types>
+namespace Ui {
+    class JoinChatRoomDialog;
+}
 
-class KUrl;
-class FetchAvatarJob : public KJob
+class JoinChatRoomDialog : public KDialog
 {
     Q_OBJECT
 
 public:
-    explicit FetchAvatarJob(const KUrl &url, QObject *parent = 0);
-    virtual ~FetchAvatarJob();
+    explicit JoinChatRoomDialog(Tp::AccountManagerPtr accountManager, QWidget *parent = 0);
+    ~JoinChatRoomDialog();
 
-    void start();
+    Tp::AccountPtr selectedAccount() const;     /** returns selected account */
+    QString selectedChatRoom() const;           /** returns selected chat room */
 
-    Tp::Avatar avatar() const;
+private slots:
+    void onTextChanged(QString newText);
 
 private:
-    class Private;
-    Private * const d;
-
-    Q_PRIVATE_SLOT(d, void _k_onMimeTypeDetected(KIO::Job*,QString))
-    Q_PRIVATE_SLOT(d, void _k_onDataFromJob(KIO::Job*,QByteArray))
-    Q_PRIVATE_SLOT(d, void _k_onJobFinished(KJob*))
+    QList<Tp::AccountPtr> m_accounts;
+    Ui::JoinChatRoomDialog *ui;
 };
 
-#endif // FETCH_AVATAR_JOB_H
+
+#endif  // JOINCHATROOMDIALOG_H
\ No newline at end of file
diff --git a/dialogs/join-chat-room-dialog.ui b/dialogs/join-chat-room-dialog.ui
new file mode 100644
index 0000000..2782e79
--- /dev/null
+++ b/dialogs/join-chat-room-dialog.ui
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>JoinChatRoomDialog</class>
+ <widget class="QWidget" name="JoinChatRoomDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>134</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QComboBox" name="comboBox"/>
+   </item>
+   <item>
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string>Enter chat room:</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLineEdit" name="lineEdit"/>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/main-widget.cpp b/main-widget.cpp
index f19cbee..253006d 100644
--- a/main-widget.cpp
+++ b/main-widget.cpp
@@ -60,6 +60,7 @@
 #include "fetch-avatar-job.h"
 
 #include "dialogs/add-contact-dialog.h"
+#include "dialogs/join-chat-room-dialog.h"
 #include "dialogs/remove-contact-dialog.h"
 
 #include "models/groups-model.h"
@@ -79,8 +80,8 @@ bool kde_tp_filter_contacts_by_publication_status(const Tp::ContactPtr &contact)
 
 MainWidget::MainWidget(QWidget *parent)
     : KMainWindow(parent),
-   m_model(0),
-   m_modelFilter(0)
+    m_model(0),
+    m_modelFilter(0)
 {
     Tp::registerTypes();
     KUser user;
@@ -184,6 +185,7 @@ MainWidget::MainWidget(QWidget *parent)
 
     settingsButtonMenu->addMenu(setDelegateTypeMenu);
 
+    settingsButtonMenu->addAction(i18n("Join chat room"), this, SLOT(onJoinChatRoomRequested()));
     settingsButtonMenu->addSeparator();
     settingsButtonMenu->addMenu(helpMenu());
 
@@ -196,6 +198,7 @@ MainWidget::MainWidget(QWidget *parent)
     Tp::AccountFactoryPtr  accountFactory = Tp::AccountFactory::create(QDBusConnection::sessionBus(),
                                                                        Tp::Features() << Tp::Account::FeatureCore
                                                                        << Tp::Account::FeatureAvatar
+                                                                       << Tp::Account::FeatureCapabilities
                                                                        << Tp::Account::FeatureProtocolInfo
                                                                        << Tp::Account::FeatureProfile);
 
@@ -1218,6 +1221,24 @@ void MainWidget::onGroupContacts(bool enabled)
     }
 }
 
+void MainWidget::onJoinChatRoomRequested()
+{
+    QWeakPointer<JoinChatRoomDialog> dialog = new JoinChatRoomDialog(m_accountManager);
+
+    if (dialog.data()->exec() == QDialog::Accepted) {
+        Tp::AccountPtr account = dialog.data()->selectedAccount();
+
+        // check account validity. Should NEVER be invalid
+        if (!account.isNull()) {
+            // ensure chat room
+            Tp::PendingChannelRequest *channelRequest = account->ensureTextChatroom(dialog.data()->selectedChatRoom());
+            connect(channelRequest, SIGNAL(finished(Tp::PendingOperation*)), SLOT(slotGenericOperationFinished(Tp::PendingOperation*)));
+        }
+    }
+
+    delete dialog.data();
+}
+
 void MainWidget::onSwitchToFullView()
 {
     m_contactsListView->setItemDelegate(m_delegate);
diff --git a/main-widget.h b/main-widget.h
index 5625778..313f74f 100644
--- a/main-widget.h
+++ b/main-widget.h
@@ -94,6 +94,7 @@ public Q_SLOTS:
     void startVideoChannel(ContactModelItem *contactItem);
     void onCustomContextMenuRequested(const QPoint &point);
     void onGroupContacts(bool enabled);
+    void onJoinChatRoomRequested();         /** join chat room action is triggered */
 
 private Q_SLOTS:
     void slotAddContactToGroupTriggered();

-- 
ktp-contact-list packaging



More information about the pkg-kde-commits mailing list