[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