[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:08:12 UTC 2016


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

The following commit has been merged in the master branch:
commit efcf098b3f0aaf5c06659c0efef4aa91b7fe261e
Author: David Edmundson <kde at davidedmundson.co.uk>
Date:   Mon Apr 14 17:23:04 2014 +0200

    Add warning inside join chat dialog if connection fails
    
    Start the text channel request from within join chat dialog, we then
    monitor this for errors and display a KMessageWidget if applicable
    
    REVIEW: 117564
---
 KTp/Declarative/telepathy-manager.cpp | 17 ------------
 KTp/Declarative/telepathy-manager.h   |  1 -
 KTp/Widgets/join-chat-room-dialog.cpp | 50 +++++++++++++++++++++++++++++++++++
 KTp/Widgets/join-chat-room-dialog.h   | 11 +++++++-
 KTp/Widgets/join-chat-room-dialog.ui  |  9 +++++++
 5 files changed, 69 insertions(+), 19 deletions(-)

diff --git a/KTp/Declarative/telepathy-manager.cpp b/KTp/Declarative/telepathy-manager.cpp
index bd93b1f..397f686 100644
--- a/KTp/Declarative/telepathy-manager.cpp
+++ b/KTp/Declarative/telepathy-manager.cpp
@@ -192,27 +192,10 @@ void TelepathyManager::addContact()
 void TelepathyManager::joinChatRoom()
 {
     KTp::JoinChatRoomDialog *dialog = new KTp::JoinChatRoomDialog(m_accountManager);
-    connect(dialog, SIGNAL(accepted()), this, SLOT(onJoinChatRoomSelected()));
     dialog->setAttribute(Qt::WA_DeleteOnClose);
     dialog->show();
 }
 
-void TelepathyManager::onJoinChatRoomSelected()
-{
-    KTp::JoinChatRoomDialog *dialog = qobject_cast<KTp::JoinChatRoomDialog*>(sender());
-    if (!dialog) {
-        return;
-    }
-
-    Tp::AccountPtr account = dialog->selectedAccount();
-    // check account validity. Should NEVER be invalid
-    if (!account.isNull()) {
-        Tp::PendingChannelRequest *channelRequest = KTp::Actions::startGroupChat(account, dialog->selectedChatRoom());
-
-        connect(channelRequest, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onGenericOperationFinished(Tp::PendingOperation*)));
-    }
-}
-
 void TelepathyManager::toggleContactList()
 {
     //contact list is registered, call toggleWindowVisibility in contact list
diff --git a/KTp/Declarative/telepathy-manager.h b/KTp/Declarative/telepathy-manager.h
index 9e1a9a8..d9ad24a 100644
--- a/KTp/Declarative/telepathy-manager.h
+++ b/KTp/Declarative/telepathy-manager.h
@@ -154,7 +154,6 @@ public Q_SLOTS:
     void openLogViewer(const Tp::AccountPtr &account, const KTp::ContactPtr &contact);
 
 private Q_SLOTS:
-    void onJoinChatRoomSelected();
     void contactlistDBusAccessed(QDBusPendingCallWatcher*);
 
 private:
diff --git a/KTp/Widgets/join-chat-room-dialog.cpp b/KTp/Widgets/join-chat-room-dialog.cpp
index 710eb87..9d55bd9 100644
--- a/KTp/Widgets/join-chat-room-dialog.cpp
+++ b/KTp/Widgets/join-chat-room-dialog.cpp
@@ -32,6 +32,7 @@
 #include <KPushButton>
 #include <KCompletionBox>
 
+#include <TelepathyQt/Account>
 #include <TelepathyQt/AccountSet>
 #include <TelepathyQt/AccountCapabilityFilter>
 #include <TelepathyQt/AccountManager>
@@ -42,6 +43,7 @@
 #include <TelepathyQt/PendingReady>
 #include <TelepathyQt/RequestableChannelClassSpec>
 #include <TelepathyQt/RoomListChannel>
+#include <TelepathyQt/PendingChannelRequest>
 
 #include <QSortFilterProxyModel>
 
@@ -52,9 +54,12 @@ KTp::JoinChatRoomDialog::JoinChatRoomDialog(Tp::AccountManagerPtr accountManager
     , m_favoritesModel(new FavoriteRoomsModel(this))
     , m_favoritesProxyModel(new QSortFilterProxyModel(this))
     , m_recentComp(new KCompletion)
+    , m_joinInProgress(false)
 {
     QWidget *joinChatRoomDialog = new QWidget(this);
     ui->setupUi(joinChatRoomDialog);
+    ui->feedbackWidget->hide();
+
     setMainWidget(joinChatRoomDialog);
     setWindowIcon(KIcon(QLatin1String("telepathy-kde")));
 
@@ -135,6 +140,15 @@ KTp::JoinChatRoomDialog::JoinChatRoomDialog(Tp::AccountManagerPtr accountManager
     connect(button(Ok), SIGNAL(clicked(bool)), this, SLOT(addRecentRoom()));
 }
 
+void KTp::JoinChatRoomDialog::closeEvent(QCloseEvent* e)
+{
+    // ignore close event if we are in the middle of an operation
+    if (!m_joinInProgress) {
+        KDialog::closeEvent(e);
+    }
+}
+
+
 void KTp::JoinChatRoomDialog::onAccountManagerReady(Tp::PendingOperation* operation)
 {
     Tp::AccountManagerPtr accountManager = Tp::AccountManagerPtr::qObjectCast(
@@ -170,6 +184,18 @@ Tp::AccountPtr KTp::JoinChatRoomDialog::selectedAccount() const
     return ui->comboBox->currentAccount();
 }
 
+void KTp::JoinChatRoomDialog::accept()
+{
+    ui->feedbackWidget->hide();
+    const Tp::AccountPtr account = selectedAccount();
+    if (account) {
+        setJoinInProgress(true);
+        Tp::PendingChannelRequest *request = account->ensureTextChatroom(selectedChatRoom());
+        connect(request, SIGNAL(finished(Tp::PendingOperation*)), SLOT(onStartChatFinished(Tp::PendingOperation*)));
+    }
+}
+
+
 void KTp::JoinChatRoomDialog::onAccountSelectionChanged(int newIndex)
 {
     // Show only favorites associated with the selected account
@@ -496,6 +522,30 @@ void KTp::JoinChatRoomDialog::onTextChanged(QString newText)
     }
 }
 
+void KTp::JoinChatRoomDialog::onStartChatFinished(Tp::PendingOperation *op)
+{
+    setJoinInProgress(false);
+    if (op->isError()) {
+        kDebug() << "failed to join room";
+        kDebug() << op->errorName() << op->errorMessage();
+
+        ui->feedbackWidget->setMessageType(KMessageWidget::KMessageWidget::Error);
+        ui->feedbackWidget->setText(i18n("Could not join chatroom"));
+        ui->feedbackWidget->animatedShow();
+    } else {
+        close();
+    }
+}
+
+void KTp::JoinChatRoomDialog::setJoinInProgress(bool inProgress)
+{
+    m_joinInProgress = inProgress;
+    mainWidget()->setEnabled(!inProgress);
+    button(KDialog::Ok)->setEnabled(!inProgress);
+    button(KDialog::Cancel)->setEnabled(!inProgress);
+}
+
+
 void KTp::JoinChatRoomDialog::sendNotificationToUser(const QString& errorMsg)
 {
     //The pointer is automatically deleted when the event is closed
diff --git a/KTp/Widgets/join-chat-room-dialog.h b/KTp/Widgets/join-chat-room-dialog.h
index 1b69f25..80a1be3 100644
--- a/KTp/Widgets/join-chat-room-dialog.h
+++ b/KTp/Widgets/join-chat-room-dialog.h
@@ -28,7 +28,7 @@
 #include <KTp/ktp-export.h>
 
 namespace Ui {
-    class JoinChatRoomDialog;
+class JoinChatRoomDialog;
 }
 
 class RoomsModel;
@@ -48,6 +48,10 @@ public:
 
     Tp::AccountPtr selectedAccount() const;     /** returns selected account */
     QString selectedChatRoom() const;           /** returns selected chat room */
+    virtual void accept();
+
+protected:
+    virtual void closeEvent(QCloseEvent *e);
 
 private Q_SLOTS:
     void onTextChanged(QString newText);
@@ -70,11 +74,15 @@ private Q_SLOTS:
     void onRecentRoomClicked();
     void onRoomClicked(const QModelIndex &index);
     void onAccountManagerReady(Tp::PendingOperation*);
+    void onStartChatFinished(Tp::PendingOperation *op);
+
 
 private:
     void sendNotificationToUser(const QString& errorMsg);
     void loadFavoriteRooms();
+    void setJoinInProgress(bool);
 
+    //TODO d pointer this
     QList<Tp::AccountPtr> m_accounts;
     Ui::JoinChatRoomDialog *ui;
     Tp::PendingChannel *m_pendingRoomListChannel;
@@ -87,6 +95,7 @@ private:
     KConfigGroup m_recentRoomsGroup;
     QHash <QString, QStringList> m_recentRooms;
     KCompletion *m_recentComp;
+    bool m_joinInProgress;
 
 };
 
diff --git a/KTp/Widgets/join-chat-room-dialog.ui b/KTp/Widgets/join-chat-room-dialog.ui
index 058362d..ca72088 100644
--- a/KTp/Widgets/join-chat-room-dialog.ui
+++ b/KTp/Widgets/join-chat-room-dialog.ui
@@ -21,6 +21,9 @@
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
+    <widget class="KMessageWidget" name="feedbackWidget" native="true"/>
+   </item>
+   <item>
     <widget class="KTp::AccountsComboBox" name="comboBox"/>
    </item>
    <item>
@@ -248,6 +251,12 @@
    <extends>QComboBox</extends>
    <header>accounts-combo-box.h</header>
   </customwidget>
+  <customwidget>
+   <class>KMessageWidget</class>
+   <extends>QWidget</extends>
+   <header location="global">kmessagewidget.h</header>
+   <container>1</container>
+  </customwidget>
  </customwidgets>
  <resources/>
  <connections/>

-- 
ktp-common-internals packaging



More information about the pkg-kde-commits mailing list