[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