[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:07:05 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-contact-list.git;a=commitdiff;h=c568a96
The following commit has been merged in the master branch:
commit c568a96e51801bff7f5e3248e24235df32d653ca
Author: Martin Klapetek <martin.klapetek at gmail.com>
Date: Mon Jul 18 15:30:18 2011 +0200
Groups context menu + menu refactor.
BUG: 274232
REVIEW: 101985
Reviewed-by: David Edmundson
---
main-widget.cpp | 156 +++++++++++++++++++++++++++++++++++++++++++++++---------
main-widget.h | 6 +++
2 files changed, 139 insertions(+), 23 deletions(-)
diff --git a/main-widget.cpp b/main-widget.cpp
index be3b691..3a15817 100644
--- a/main-widget.cpp
+++ b/main-widget.cpp
@@ -49,6 +49,7 @@
#include <KSettings/Dialog>
#include <KSharedConfig>
#include <KFileDialog>
+#include <KInputDialog>
#include <KStandardShortcut>
#include <KNotification>
@@ -70,6 +71,7 @@
#include "models/groups-model-item.h"
#include "models/accounts-model.h"
#include "models/accounts-filter-model.h"
+#include "models/proxy-tree-node.h"
#define PREFERRED_TEXTCHAT_HANDLER "org.freedesktop.Telepathy.Client.KDE.TextUi"
#define PREFERRED_FILETRANSFER_HANDLER "org.freedesktop.Telepathy.Client.KDE.FileTransfer"
@@ -624,7 +626,7 @@ void MainWidget::showMessageToUser(const QString& text, const MainWidget::System
} else {
notification = new KNotification("telepathyInfo", this);
}
-
+
KAboutData aboutData("ktelepathy",0,KLocalizedString(),0);
notification->setComponentData(KComponentData(aboutData));
@@ -736,22 +738,41 @@ void MainWidget::onCustomContextMenuRequested(const QPoint &pos)
Tp::ContactPtr contact;
QVariant item = index.data(AccountsModel::ItemRole);
- //only handle contacts;
- if(item.userType() != qMetaTypeId<ContactModelItem*>()) {
- return;
+ KMenu *menu = 0;
+
+ if (item.userType() == qMetaTypeId<ContactModelItem*>()) {
+ menu = contactContextMenu(index);
+ } else if (item.userType() == qMetaTypeId<GroupsModelItem*>()) {
+ menu = groupContextMenu(index);
+ }
+
+ if (menu) {
+ menu->exec(QCursor::pos());
+ menu->deleteLater();
+ }
+}
+
+KMenu* MainWidget::contactContextMenu(const QModelIndex &index)
+{
+ if (!index.isValid()) {
+ return 0;
}
- contact = item.value<ContactModelItem*>()->contact();
+ Tp::ContactPtr contact = index.data(AccountsModel::ItemRole).value<ContactModelItem*>()->contact();
+ if (contact.isNull()) {
+ kDebug() << "Contact is nulled";
+ return 0;
+ }
- Tp::AccountPtr account = m_model->accountForContactItem(item.value<ContactModelItem*>());
+ Tp::AccountPtr account = m_model->accountForContactItem(index.data(AccountsModel::ItemRole).value<ContactModelItem*>());
if (account.isNull()) {
kDebug() << "Account is nulled";
- return;
+ return 0;
}
- QScopedPointer<KMenu> menu(new KMenu);
+ KMenu *menu = new KMenu();
menu->addTitle(contact->alias());
QAction* action = menu->addAction(i18n("Start Chat..."));
@@ -767,7 +788,7 @@ void MainWidget::onCustomContextMenuRequested(const QPoint &pos)
Tp::ConnectionPtr accountConnection = account->connection();
if (accountConnection.isNull()) {
kDebug() << "Account connection is nulled.";
- return;
+ return 0;
}
action = menu->addAction(i18n("Start Audio Call..."));
@@ -825,7 +846,9 @@ void MainWidget::onCustomContextMenuRequested(const QPoint &pos)
groupList.removeAll(group);
}
- groupAddMenu->addAction(i18n("Create New Group..."));
+ connect(groupAddMenu->addAction(i18n("Create New Group...")), SIGNAL(triggered(bool)),
+ this, SLOT(onCreateNewGroup()));
+
groupAddMenu->addSeparator();
foreach (const QString &group, groupList) {
@@ -840,22 +863,45 @@ void MainWidget::onCustomContextMenuRequested(const QPoint &pos)
// TODO: Remove when Telepathy actually supports blocking.
/*if (contact->isBlocked()) {
- action = menu->addAction(i18n("Unblock User"));
- connect(action, SIGNAL(triggered(bool)),
- SLOT(slotUnblockContactTriggered()));
- } else {
- action = menu->addAction(i18n("Blocked"));
- connect(action, SIGNAL(triggered(bool)),
- SLOT(slotBlockContactTriggered()));
- }*/
+ * action = menu->addAction(i18n("Unblock User"));
+ * connect(action, SIGNAL(triggered(bool)),
+ * SLOT(slotUnblockContactTriggered()));
+} else {
+ action = menu->addAction(i18n("Blocked"));
+ connect(action, SIGNAL(triggered(bool)),
+ SLOT(slotBlockContactTriggered()));
+}*/
- menu->addSeparator();
+ menu->exec(QCursor::pos());
+ return menu;
+}
- action = menu->addAction(i18n("Show Info..."));
- action->setIcon(KIcon(""));
- connect(action, SIGNAL(triggered()), SLOT(slotShowInfo()));
+KMenu* MainWidget::groupContextMenu(const QModelIndex &index)
+{
+ if (!index.isValid()) {
+ return 0;
+ }
- menu->exec(QCursor::pos());
+ GroupsModelItem *groupItem = index.data(AccountsModel::ItemRole).value<GroupsModelItem*>();
+
+ Q_ASSERT(groupItem);
+
+ KMenu *menu = new KMenu();
+ menu->addTitle(groupItem->groupName());
+
+ QAction *action = menu->addAction(i18n("Rename Group..."));
+ action->setIcon(KIcon("edit-rename"));
+
+ connect(action, SIGNAL(triggered(bool)),
+ this, SLOT(onRenameGroup()));
+
+ action = menu->addAction(i18n("Delete Group"));
+ action->setIcon(KIcon("edit-delete"));
+
+ connect(action, SIGNAL(triggered(bool)),
+ this, SLOT(onDeleteGroup()));
+
+ return menu;
}
void MainWidget::slotAddContactToGroupTriggered()
@@ -888,6 +934,70 @@ void MainWidget::slotAddContactToGroupTriggered()
}
}
+void MainWidget::onCreateNewGroup()
+{
+ QString newGroupName = KInputDialog::getText(i18n("New Group Name"), i18n("Please enter the new group name"));
+
+ QModelIndex index = m_contactsListView->currentIndex();
+ ContactModelItem *contactItem = index.data(AccountsModel::ItemRole).value<ContactModelItem*>();
+
+ Q_ASSERT(contactItem);
+ Tp::ContactPtr contact = contactItem->contact();
+ Tp::PendingOperation *operation = contact->addToGroup(newGroupName);
+
+ connect(operation, SIGNAL(finished(Tp::PendingOperation*)),
+ SLOT(slotGenericOperationFinished(Tp::PendingOperation*)));
+}
+
+void MainWidget::onRenameGroup()
+{
+ QModelIndex index = m_contactsListView->currentIndex();
+
+ GroupsModelItem *groupItem = index.data(AccountsModel::ItemRole).value<GroupsModelItem*>();
+
+ Q_ASSERT(groupItem);
+
+ QString newGroupName = KInputDialog::getText(i18n("New Group Name"), i18n("Please enter the new group name"), groupItem->groupName());
+
+ for(int i = 0; i < groupItem->size(); i++) {
+ Tp::ContactPtr contact = qobject_cast<ProxyTreeNode*>(groupItem->childAt(i))
+ ->data(AccountsModel::ItemRole).value<ContactModelItem*>()->contact();
+ Q_ASSERT(contact);
+
+ Tp::PendingOperation *operation = contact->addToGroup(newGroupName);
+ connect(operation, SIGNAL(finished(Tp::PendingOperation*)),
+ SLOT(slotGenericOperationFinished(Tp::PendingOperation*)));
+
+ operation = contact->removeFromGroup(groupItem->groupName());
+ connect(operation, SIGNAL(finished(Tp::PendingOperation*)),
+ SLOT(slotGenericOperationFinished(Tp::PendingOperation*)));
+ }
+}
+
+void MainWidget::onDeleteGroup()
+{
+ QModelIndex index = m_contactsListView->currentIndex();
+
+ GroupsModelItem *groupItem = index.data(AccountsModel::ItemRole).value<GroupsModelItem*>();
+
+ if (KMessageBox::warningContinueCancel(this,
+ i18n("Do you really want to remove group %1?
"
+ "Note that all contacts will be moved to group 'Ungroupped'", groupItem->groupName()),
+ i18n("Remove Group")) == KMessageBox::Continue) {
+
+ for(int i = 0; i < groupItem->size(); i++) {
+ Tp::ContactPtr contact = qobject_cast<ProxyTreeNode*>(groupItem->childAt(i))
+ ->data(AccountsModel::ItemRole).value<ContactModelItem*>()->contact();
+ Q_ASSERT(contact);
+
+ Tp::PendingOperation *operation = contact->removeFromGroup(groupItem->groupName());
+ connect(operation, SIGNAL(finished(Tp::PendingOperation*)),
+ SLOT(slotGenericOperationFinished(Tp::PendingOperation*)));
+ }
+ }
+}
+
+
void MainWidget::slotBlockContactTriggered()
{
QModelIndex index = m_contactsListView->currentIndex();
diff --git a/main-widget.h b/main-widget.h
index 961d04b..bc3d1f8 100644
--- a/main-widget.h
+++ b/main-widget.h
@@ -120,6 +120,9 @@ private Q_SLOTS:
void onContactManagerStateChanged(const Tp::ContactManagerPtr &contactManager, Tp::ContactListState state);
void onSwitchToFullView();
void onSwitchToCompactView();
+ void onCreateNewGroup();
+ void onRenameGroup();
+ void onDeleteGroup();
Q_SIGNALS:
void enableOverlays(bool);
@@ -129,6 +132,9 @@ private:
void handleConnectionError(const Tp::AccountPtr &account);
void closeEvent(QCloseEvent *e);
+ KMenu* contactContextMenu(const QModelIndex &index);
+ KMenu* groupContextMenu(const QModelIndex &index);
+
AccountsModel *m_model;
GroupsModel *m_groupsModel;
AccountsFilterModel *m_modelFilter;
--
ktp-contact-list packaging
More information about the pkg-kde-commits
mailing list