[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:11:23 UTC 2016


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

The following commit has been merged in the master branch:
commit 660f4c1f3426415fcc8988d13ac3041d01fd3c95
Author: Dan Vrátil <dvratil at redhat.com>
Date:   Tue Oct 2 23:49:12 2012 +0200

    Add 'Open Log Viewer...' action to contact context menu
    
    REVIEW: 106688
---
 CMakeLists.txt                             |  4 ++
 cmake/modules/FindGIO.cmake                | 71 ++++++++++++++++++++++++++++
 cmake/modules/FindGObject.cmake            | 75 ++++++++++++++++++++++++++++++
 cmake/modules/FindQtGLib.cmake             | 46 ++++++++++++++++++
 cmake/modules/FindTelepathyGlib.cmake      | 54 +++++++++++++++++++++
 cmake/modules/FindTelepathyLogger.cmake    | 53 +++++++++++++++++++++
 cmake/modules/FindTelepathyLoggerQt4.cmake | 49 +++++++++++++++++++
 context-menu.cpp                           | 41 +++++++++++++++-
 context-menu.h                             |  4 ++
 9 files changed, 395 insertions(+), 2 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7cb36cf..b89e0c3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,15 +10,18 @@ set(KDE_MIN_VERSION "4.4.75")
 find_package (KDE4 4.4.75 REQUIRED)
 find_package (TelepathyQt4 0.9.3 REQUIRED)
 find_package (KTp REQUIRED)
+find_package (TelepathyLoggerQt4 REQUIRED)
 
 include (KDE4Defaults)
 include (MacroLibrary)
 
 add_definitions (${KDE4_DEFINITIONS}
+		 ${TELEPATHY_LOGGER_QT4_DEFINITIONS}
 )
 
 include_directories (${KDE4_INCLUDES}
                      ${TELEPATHY_QT4_INCLUDE_DIR}
+                     ${TELEPATHY_LOGGER_QT4_INCLUDE_DIRS}
                      ${KTP_INCLUDE_DIR}
 )
 
@@ -69,6 +72,7 @@ target_link_libraries (ktp-contactlist
                        ${KDE4_KDEUI_LIBS}
                        ${KDE4_KIO_LIBS}
                        ${KDE4_KCMUTILS_LIBS}
+                       ${TELEPATHY_LOGGER_QT4_LIBRARIES}
 )
 
 # Install:
diff --git a/cmake/modules/FindGIO.cmake b/cmake/modules/FindGIO.cmake
new file mode 100644
index 0000000..4c570b7
--- /dev/null
+++ b/cmake/modules/FindGIO.cmake
@@ -0,0 +1,71 @@
+# - Try to find the GIO libraries
+# Once done this will define
+#
+#  GIO_FOUND - system has GIO
+#  GIO_INCLUDE_DIR - the GIO include directory
+#  GIO_LIBRARIES - GIO library
+#
+# Copyright (c) 2010 Dario Freddi <drf at kde.org>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+if(GIO_INCLUDE_DIR AND GIO_LIBRARIES)
+    # Already in cache, be silent
+    set(GIO_FIND_QUIETLY TRUE)
+endif(GIO_INCLUDE_DIR AND GIO_LIBRARIES)
+
+if (NOT WIN32)
+   include(UsePkgConfig)
+   pkgconfig(gio-2.0 _LibGIOIncDir _LibGIOLinkDir _LibGIOLinkFlags _LibGIOCflags)
+endif(NOT WIN32)
+
+MESSAGE(STATUS "gio include dir: ${_LibGIOIncDir}")
+
+# first try without default paths to respect PKG_CONFIG_PATH
+
+find_path(GIO_MAIN_INCLUDE_DIR glib.h
+          PATH_SUFFIXES glib-2.0
+          PATHS ${_LibGIOIncDir}
+          NO_DEFAULT_PATH)
+
+find_path(GIO_MAIN_INCLUDE_DIR glib.h
+          PATH_SUFFIXES glib-2.0
+          PATHS ${_LibGIOIncDir} )
+
+MESSAGE(STATUS "found gio main include dir: ${GIO_MAIN_INCLUDE_DIR}")
+
+# search the glibconfig.h include dir under the same root where the library is found
+find_library(GIO_LIBRARIES
+             NAMES gio-2.0
+             PATHS ${_LibGIOLinkDir}
+             NO_DEFAULT_PATH)
+
+find_library(GIO_LIBRARIES
+             NAMES gio-2.0
+             PATHS ${_LibGIOLinkDir})
+
+
+get_filename_component(GIOLibDir "${GIO_LIBRARIES}" PATH)
+
+find_path(GIO_INTERNAL_INCLUDE_DIR glibconfig.h
+          PATH_SUFFIXES glib-2.0/include
+          PATHS ${_LibGIOIncDir} "${GIOLibDir}" ${CMAKE_SYSTEM_LIBRARY_PATH}
+          NO_DEFAULT_PATH)
+
+find_path(GIO_INTERNAL_INCLUDE_DIR glibconfig.h
+          PATH_SUFFIXES glib-2.0/include
+          PATHS ${_LibGIOIncDir} "${GIOLibDir}" ${CMAKE_SYSTEM_LIBRARY_PATH})
+
+set(GIO_INCLUDE_DIR "${GIO_MAIN_INCLUDE_DIR}")
+
+# not sure if this include dir is optional or required
+# for now it is optional
+if(GIO_INTERNAL_INCLUDE_DIR)
+  set(GIO_INCLUDE_DIR ${GIO_INCLUDE_DIR} "${GIO_INTERNAL_INCLUDE_DIR}")
+endif(GIO_INTERNAL_INCLUDE_DIR)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(GIO  DEFAULT_MSG  GIO_LIBRARIES GIO_MAIN_INCLUDE_DIR)
+
+mark_as_advanced(GIO_INCLUDE_DIR GIO_LIBRARIES)
diff --git a/cmake/modules/FindGObject.cmake b/cmake/modules/FindGObject.cmake
new file mode 100644
index 0000000..1507b43
--- /dev/null
+++ b/cmake/modules/FindGObject.cmake
@@ -0,0 +1,75 @@
+# - Try to find GObject
+# Once done this will define
+#
+#  GOBJECT_FOUND - system has GObject
+#  GOBJECT_INCLUDE_DIR - the GObject include directory
+#  GOBJECT_LIBRARIES - the libraries needed to use GObject
+#  GOBJECT_DEFINITIONS - Compiler switches required for using GObject
+
+# Copyright (c) 2008 Helio Chissini de Castro, <helio at kde.org>
+#  (c)2006, Tim Beaulen <tbscope at gmail.com>
+
+
+IF (GOBJECT_INCLUDE_DIR AND GOBJECT_LIBRARIES)
+   # in cache already
+   SET(GObject_FIND_QUIETLY TRUE)
+ELSE (GOBJECT_INCLUDE_DIR AND GOBJECT_LIBRARIES)
+   SET(GObject_FIND_QUIETLY FALSE)
+ENDIF (GOBJECT_INCLUDE_DIR AND GOBJECT_LIBRARIES)
+
+IF (NOT WIN32)
+   FIND_PACKAGE(PkgConfig REQUIRED)
+   # use pkg-config to get the directories and then use these values
+   # in the FIND_PATH() and FIND_LIBRARY() calls
+   PKG_CHECK_MODULES(PKG_GOBJECT2 REQUIRED gobject-2.0)
+   SET(GOBJECT_DEFINITIONS ${PKG_GOBJECT2_CFLAGS})
+ENDIF (NOT WIN32)
+
+FIND_PATH(GOBJECT_INCLUDE_DIR gobject/gobject.h
+   PATHS
+   ${PKG_GOBJECT2_INCLUDE_DIRS}
+   /usr/include/glib-2.0/
+   PATH_SUFFIXES glib-2.0
+   )
+
+FIND_LIBRARY(_GObjectLibs NAMES gobject-2.0
+   PATHS
+   ${PKG_GOBJECT2_LIBRARY_DIRS}
+   )
+FIND_LIBRARY(_GModuleLibs NAMES gmodule-2.0
+   PATHS
+   ${PKG_GOBJECT2_LIBRARY_DIRS}
+   )
+FIND_LIBRARY(_GThreadLibs NAMES gthread-2.0
+   PATHS
+   ${PKG_GOBJECT2_LIBRARY_DIRS}
+   )
+FIND_LIBRARY(_GLibs NAMES glib-2.0
+   PATHS
+   ${PKG_GOBJECT2_LIBRARY_DIRS}
+   )
+
+IF (WIN32)
+SET (GOBJECT_LIBRARIES ${_GObjectLibs} ${_GModuleLibs} ${_GThreadLibs} ${_GLibs})
+ELSE (WIN32)
+SET (GOBJECT_LIBRARIES ${PKG_GOBJECT2_LIBRARIES})
+ENDIF (WIN32)
+
+IF (GOBJECT_INCLUDE_DIR AND GOBJECT_LIBRARIES)
+   SET(GOBJECT_FOUND TRUE)
+ELSE (GOBJECT_INCLUDE_DIR AND GOBJECT_LIBRARIES)
+   SET(GOBJECT_FOUND FALSE)
+ENDIF (GOBJECT_INCLUDE_DIR AND GOBJECT_LIBRARIES)
+
+IF (GOBJECT_FOUND)
+   IF (NOT GObject_FIND_QUIETLY)
+      MESSAGE(STATUS "Found GObject libraries: ${GOBJECT_LIBRARIES}")
+      MESSAGE(STATUS "Found GObject includes : ${GOBJECT_INCLUDE_DIR}")
+   ENDIF (NOT GObject_FIND_QUIETLY)
+ELSE (GOBJECT_FOUND)
+    IF (GObject_FIND_REQUIRED)
+      MESSAGE(STATUS "Could NOT find GObject")
+    ENDIF(GObject_FIND_REQUIRED)
+ENDIF (GOBJECT_FOUND)
+
+MARK_AS_ADVANCED(GOBJECT_INCLUDE_DIR GOBJECT_LIBRARIES)
diff --git a/cmake/modules/FindQtGLib.cmake b/cmake/modules/FindQtGLib.cmake
new file mode 100644
index 0000000..0713164
--- /dev/null
+++ b/cmake/modules/FindQtGLib.cmake
@@ -0,0 +1,46 @@
+# - Try to find QtGLib
+# Once done this will define
+#
+#  QTGLIB_FOUND - system has QtGLib
+#  QTGLIB_INCLUDE_DIR - the QtGLib include directory
+#  QTGLIB_LIBRARIES - the libraries needed to use QtGLib
+#  QTGLIB_DEFINITIONS - Compiler switches required for using QtGLib
+
+# Copyright (c) 2011 Collabora Ltd <http://www.collabora.co.uk>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+
+if (QTGLIB_INCLUDE_DIR AND QTGLIB_LIBRARIES)
+   # in cache already
+   set(QtGLib_FIND_QUIETLY TRUE)
+else (QTGLIB_INCLUDE_DIR AND QTGLIB_LIBRARIES)
+   set(QtGLib_FIND_QUIETLY FALSE)
+endif (QTGLIB_INCLUDE_DIR AND QTGLIB_LIBRARIES)
+
+if (NOT WIN32)
+    # use pkg-config to get the directories and then use these values
+    # in the find_path() and find_library() calls
+    find_package(PkgConfig)
+    if (QTGLIB_MIN_VERSION)
+        PKG_CHECK_MODULES(PC_QTGLIB QtGLib-2.0>=${QTGLIB_MIN_VERSION})
+    else (QTGLIB_MIN_VERSION)
+        PKG_CHECK_MODULES(PC_QTGLIB QtGLib-2.0)
+    endif (QTGLIB_MIN_VERSION)
+    set(QTGLIB_DEFINITIONS ${PC_QTGLIB_CFLAGS_OTHER})
+endif (NOT WIN32)
+
+find_path(QTGLIB_INCLUDE_DIR 
+   NAMES QGlib/Object
+   PATHS ${PC_QTGLIB_INCLUDEDIR} ${PC_QTGLIB_INCLUDE_DIRS} 
+   PATH_SUFFIXES QtGStreamer
+   )
+
+find_library(QTGLIB_LIBRARIES 
+   NAMES QtGLib-2.0
+   PATHS ${PC_QTGLIB_LIBDIR} ${PC_QTGLIB_LIBRARY_DIRS}
+   )
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(QtGLib-2.0 DEFAULT_MSG QTGLIB_LIBRARIES QTGLIB_INCLUDE_DIR)
+
+mark_as_advanced(QTGLIB_INCLUDE_DIR QTGLIB_LIBRARIES)
diff --git a/cmake/modules/FindTelepathyGlib.cmake b/cmake/modules/FindTelepathyGlib.cmake
new file mode 100644
index 0000000..8728dab
--- /dev/null
+++ b/cmake/modules/FindTelepathyGlib.cmake
@@ -0,0 +1,54 @@
+# - Try to find Telepathy-Glib
+# Once done this will define
+#
+#  TELEPATHY_GLIB_FOUND - system has Telepathy-Glib
+#  TELEPATHY_GLIB_INCLUDE_DIR - the Telepathy-Glib include directory
+#  TELEPATHY_GLIB_LIBRARIES - the libraries needed to use Telepathy-Glib
+#  TELEPATHY_GLIB_DEFINITIONS - Compiler switches required for using Telepathy-Glib
+
+# Copyright (c) 2010, Dario Freddi <dario.freddi at collabora.co.uk>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+
+if (TELEPATHY_GLIB_INCLUDE_DIR AND TELEPATHY_GLIB_LIBRARIES)
+   # in cache already
+   set(TELEPATHYGLIB_FIND_QUIETLY TRUE)
+else (TELEPATHY_GLIB_INCLUDE_DIR AND TELEPATHY_GLIB_LIBRARIES)
+   set(TELEPATHYGLIB_FIND_QUIETLY FALSE)
+endif (TELEPATHY_GLIB_INCLUDE_DIR AND TELEPATHY_GLIB_LIBRARIES)
+
+if (NOT WIN32)
+    # use pkg-config to get the directories and then use these values
+    # in the find_path() and find_library() calls
+    find_package(PkgConfig)
+    if (TELEPATHY_GLIB_MIN_VERSION)
+        PKG_CHECK_MODULES(PC_TELEPATHY_GLIB telepathy-glib>=${TELEPATHY_GLIB_MIN_VERSION})
+    else (TELEPATHY_GLIB_MIN_VERSION)
+        PKG_CHECK_MODULES(PC_TELEPATHY_GLIB telepathy-glib)
+    endif (TELEPATHY_GLIB_MIN_VERSION)
+    set(TELEPATHY_GLIB_DEFINITIONS ${PC_TELEPATHY_GLIB_CFLAGS_OTHER})
+endif (NOT WIN32)
+
+if (TELEPATHY_GLIB_MIN_VERSION AND PKG_CONFIG_FOUND AND NOT PC_TELEPATHY_GLIB_FOUND)
+    message(STATUS "Telepathy-glib not found or its version is < ${TELEPATHY_GLIB_MIN_VERSION}")
+else (TELEPATHY_GLIB_MIN_VERSION AND PKG_CONFIG_FOUND AND NOT PC_TELEPATHY_GLIB_FOUND)
+    find_path(TELEPATHY_GLIB_INCLUDE_DIR telepathy-glib/client.h
+       PATHS
+       ${PC_TELEPATHY_GLIB_INCLUDEDIR}
+       ${PC_TELEPATHY_GLIB_INCLUDE_DIRS}
+       PATH_SUFFIXES telepathy-1.0
+    )
+
+    find_library(TELEPATHY_GLIB_LIBRARIES NAMES telepathy-glib
+       PATHS
+       ${PC_TELEPATHY_GLIB_LIBDIR}
+       ${PC_TELEPATHY_GLIB_LIBRARY_DIRS}
+    )
+
+    include(FindPackageHandleStandardArgs)
+    find_package_handle_standard_args(TelepathyGlib DEFAULT_MSG TELEPATHY_GLIB_LIBRARIES
+                                                                TELEPATHY_GLIB_INCLUDE_DIR)
+
+    mark_as_advanced(TELEPATHY_GLIB_INCLUDE_DIR TELEPATHY_GLIB_LIBRARIES)
+
+endif (TELEPATHY_GLIB_MIN_VERSION AND PKG_CONFIG_FOUND AND NOT PC_TELEPATHY_GLIB_FOUND)
diff --git a/cmake/modules/FindTelepathyLogger.cmake b/cmake/modules/FindTelepathyLogger.cmake
new file mode 100644
index 0000000..19de2e3
--- /dev/null
+++ b/cmake/modules/FindTelepathyLogger.cmake
@@ -0,0 +1,53 @@
+# - Try to find Telepathy-Logger
+# Once done this will define
+#
+#  TELEPATHY_LOGGER_FOUND - system has Telepathy-Logger
+#  TELEPATHY_LOGGER_INCLUDE_DIR - the Telepathy-Logger include directory
+#  TELEPATHY_LOGGER_LIBRARIES - the libraries needed to use Telepathy-Logger
+#  TELEPATHY_LOGGER_DEFINITIONS - Compiler switches required for using Telepathy-Logger
+
+# Copyright (c) 2011 Collabora Ltd <http://www.collabora.co.uk>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+
+if (TELEPATHY_LOGGER_INCLUDE_DIR AND TELEPATHY_LOGGER_LIBRARIES)
+   # in cache already
+   set(TELEPATHYLOGGER_FIND_QUIETLY TRUE)
+else (TELEPATHY_LOGGER_INCLUDE_DIR AND TELEPATHY_LOGGER_LIBRARIES)
+   set(TELEPATHYLOGGER_FIND_QUIETLY FALSE)
+endif (TELEPATHY_LOGGER_INCLUDE_DIR AND TELEPATHY_LOGGER_LIBRARIES)
+
+if (NOT WIN32)
+    # use pkg-config to get the directories and then use these values
+    # in the find_path() and find_library() calls
+    find_package(PkgConfig)
+    if (TELEPATHY_LOGGER_MIN_VERSION)
+        PKG_CHECK_MODULES(PC_TELEPATHY_LOGGER telepathy-logger-0.2>=${TELEPATHY_LOGGER_MIN_VERSION})
+    else (TELEPATHY_LOGGER_MIN_VERSION)
+        PKG_CHECK_MODULES(PC_TELEPATHY_LOGGER telepathy-logger-0.2)
+    endif (TELEPATHY_LOGGER_MIN_VERSION)
+    set(TELEPATHY_LOGGER_DEFINITIONS ${PC_TELEPATHY_LOGGER_CFLAGS_OTHER})
+endif (NOT WIN32)
+
+if (TELEPATHY_LOGGER_MIN_VERSION AND PKG_CONFIG_FOUND AND NOT PC_TELEPATHY_LOGGER_FOUND)
+    message(STATUS "Telepathy-logger not found or its version is < ${TELEPATHY_LOGGER_MIN_VERSION}")
+else (TELEPATHY_LOGGER_MIN_VERSION AND PKG_CONFIG_FOUND AND NOT PC_TELEPATHY_LOGGER_FOUND)
+    find_path(TELEPATHY_LOGGER_INCLUDE_DIR telepathy-logger/log-manager.h
+       PATHS
+       ${PC_TELEPATHY_LOGGER_INCLUDEDIR}
+       ${PC_TELEPATHY_LOGGER_INCLUDE_DIRS}
+    )
+
+    find_library(TELEPATHY_LOGGER_LIBRARIES NAMES telepathy-logger
+       PATHS
+       ${PC_TELEPATHY_LOGGER_LIBDIR}
+       ${PC_TELEPATHY_LOGGER_LIBRARY_DIRS}
+    )
+
+    include(FindPackageHandleStandardArgs)
+    find_package_handle_standard_args(TelepathyLogger DEFAULT_MSG TELEPATHY_LOGGER_LIBRARIES
+                                                                TELEPATHY_LOGGER_INCLUDE_DIR)
+
+    mark_as_advanced(TELEPATHY_LOGGER_INCLUDE_DIR TELEPATHY_LOGGER_LIBRARIES)
+
+endif (TELEPATHY_LOGGER_MIN_VERSION AND PKG_CONFIG_FOUND AND NOT PC_TELEPATHY_LOGGER_FOUND)
diff --git a/cmake/modules/FindTelepathyLoggerQt4.cmake b/cmake/modules/FindTelepathyLoggerQt4.cmake
new file mode 100644
index 0000000..858a1d7
--- /dev/null
+++ b/cmake/modules/FindTelepathyLoggerQt4.cmake
@@ -0,0 +1,49 @@
+# - Try to find TelepathyLoggerQt4
+# Once done this will define
+#  TELEPATHY_LOGGER_QT4_FOUND - System has TelepathyLoggerQt4
+#  TELEPATHY_LOGGER_QT4_INCLUDE_DIRS - The TelepathyLoggerQt4 include directories
+#  TELEPATHY_LOGGER_QT4_LIBRARIES - The libraries needed to use TelepathyLoggerQt4
+#  TELEPATHY_LOGGER_QT4_DEFINITIONS - Compiler switches required for using TelepathyLoggerQt4
+
+# Copyright (c) 2010 Dominik Schmidt <kde at dominik-schmidt.de>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+set(TELEPATHY_LOGGER_QT4_DEFINITIONS "-fexceptions")
+
+find_path(TELEPATHY_LOGGER_QT4_INCLUDE_DIR telepathy-logger-0.2/TelepathyLoggerQt4/init.h)
+
+find_library(TELEPATHY_LOGGER_QT4_LIBRARY NAMES libtelepathy-logger-qt4 telepathy-logger-qt4)
+
+set(TELEPATHY_LOGGER_QT4_LIBRARIES ${TELEPATHY_LOGGER_QT4_LIBRARY} )
+set(TELEPATHY_LOGGER_QT4_INCLUDE_DIRS ${TELEPATHY_LOGGER_QT4_INCLUDE_DIR} ${TELEPATHY_LOGGER_QT4_INCLUDE_DIR}/telepathy-logger-0.2 )
+
+find_package(TelepathyLogger)
+find_package(TelepathyGlib)
+find_package(GObject)
+find_package(GIO)
+find_package(GLIB2)
+find_package(QtGLib)
+
+list(APPEND TELEPATHY_LOGGER_QT4_LIBRARIES
+    ${TELEPATHY_LOGGER_LIBRARIES}
+    ${TELEPATHY_GLIB_LIBRARIES}
+    ${GLIB2_LIBRARIES}
+    ${GOBJECT_LIBRARIES}
+    ${QTGLIB_LIBRARIES}
+    ${GIO_LIBRARIES}
+)
+
+list(APPEND TELEPATHY_LOGGER_QT4_INCLUDE_DIRS
+    ${GLIB2_INCLUDE_DIR}
+    ${QTGLIB_INCLUDE_DIR}
+)
+
+include(FindPackageHandleStandardArgs)
+# handle the QUIETLY and REQUIRED arguments and set LIBXML2_FOUND to TRUE
+# if all listed variables are TRUE
+find_package_handle_standard_args(TELEPATHY_LOGGER_QT4  DEFAULT_MSG
+                                  TELEPATHY_LOGGER_QT4_LIBRARY TELEPATHY_LOGGER_QT4_INCLUDE_DIR)
+
+mark_as_advanced(TELEPATHY_LOGGER_QT4_INCLUDE_DIRS TELEPATHY_LOGGER_QT4_LIBRARY )
diff --git a/context-menu.cpp b/context-menu.cpp
index 4d30c78..fa19283 100644
--- a/context-menu.cpp
+++ b/context-menu.cpp
@@ -38,6 +38,10 @@
 
 #include <TelepathyQt/ContactManager>
 
+#include <TelepathyLoggerQt4/Entity>
+#include <TelepathyLoggerQt4/LogManager>
+#include <TelepathyLoggerQt4/Init>
+
 #include "dialogs/remove-contact-dialog.h"
 #include "dialogs/contact-info.h"
 
@@ -48,6 +52,9 @@ ContextMenu::ContextMenu(ContactListWidget *mainWidget)
     : QObject(mainWidget)
 {
     m_mainWidget = mainWidget;
+
+    Tpl::init();
+    m_logManager = Tpl::LogManager::instance();
 }
 
 
@@ -59,6 +66,7 @@ ContextMenu::~ContextMenu()
 void ContextMenu::setAccountManager(const Tp::AccountManagerPtr &accountManager)
 {
     m_accountManager = accountManager;
+    m_logManager->setAccountManagerPtr(accountManager);
 }
 
 KMenu* ContextMenu::contactContextMenu(const QModelIndex &index)
@@ -147,6 +155,17 @@ KMenu* ContextMenu::contactContextMenu(const QModelIndex &index)
         action->setEnabled(true);
     }
 
+    action = menu->addAction(i18n("Open Log Viewer..."));
+    action->setIcon(KIcon("documentation"));
+    action->setDisabled(true);
+    connect(action, SIGNAL(triggered(bool)),
+            SLOT(onOpenLogViewerTriggered()));
+
+    Tpl::EntityPtr entity = Tpl::Entity::create(contact, Tpl::EntityTypeContact);
+    if (m_logManager->exists(account, entity, Tpl::EventTypeMaskText)) {
+	action->setEnabled(true);
+    }
+    
     menu->addSeparator();
     action = menu->addAction(KIcon("dialog-information"), i18n("Configure Notifications ..."));
     action->setEnabled(true);
@@ -218,7 +237,7 @@ KMenu* ContextMenu::contactContextMenu(const QModelIndex &index)
 
     menu->addSeparator();
 
-    
+
     if (contact->manager()->canRequestPresenceSubscription()) {
         if (contact->subscriptionState() != Tp::Contact::PresenceStateYes) {
             action = menu->addAction(i18n("Re-request Contact Authorization"));
@@ -233,7 +252,7 @@ KMenu* ContextMenu::contactContextMenu(const QModelIndex &index)
     }
 
     action = menu->addSeparator(); //prevent two seperators in a row
-        
+
     if (contact->isBlocked()) {
         action = menu->addAction(i18n("Unblock Contact"));
         connect(action, SIGNAL(triggered(bool)), SLOT(onUnblockContactTriggered()));
@@ -391,6 +410,24 @@ void ContextMenu::onStartDesktopSharingTriggered()
     }
 }
 
+void ContextMenu::onOpenLogViewerTriggered()
+{
+    if (!m_currentIndex.isValid()) {
+      kDebug() << "Invalid index provided.";
+      return;
+    }
+
+    ContactModelItem *item = m_currentIndex.data(AccountsModel::ItemRole).value<ContactModelItem*>();
+    Q_ASSERT(item);
+
+    Tp::ContactPtr contact = item->contact();
+    Tp::AccountPtr account = m_mainWidget->d_ptr->model->accountForContactItem(item);
+
+    /* Use "--" so that KCmdLineArgs does not parse UIDs starting with "-" as arguments */
+    KToolInvocation::kdeinitExec(QLatin1String("ktp-log-viewer"),
+	  QStringList() << QLatin1String("--") << account->uniqueIdentifier() << contact->id());
+}
+
 void ContextMenu::onUnblockContactTriggered()
 {
     ContactModelItem *item = m_currentIndex.data(AccountsModel::ItemRole).value<ContactModelItem*>();
diff --git a/context-menu.h b/context-menu.h
index 77a1111..55d20bd 100644
--- a/context-menu.h
+++ b/context-menu.h
@@ -26,6 +26,8 @@
 
 #include <TelepathyQt/Types>
 
+#include <TelepathyLoggerQt4/LogManager>
+
 #include "contact-list-widget.h"
 
 class AccountsModel;
@@ -52,6 +54,7 @@ private Q_SLOTS:
     void onStartVideoChatTriggered();
     void onStartFileTransferTriggered();
     void onStartDesktopSharingTriggered();
+    void onOpenLogViewerTriggered();
     void onUnblockContactTriggered();
     void onRemoveContactFromGroupTriggered();
     void onCreateNewGroupTriggered();
@@ -68,6 +71,7 @@ private:
     ContactListWidget     *m_mainWidget;
     QModelIndex            m_currentIndex;
     Tp::AccountManagerPtr  m_accountManager;
+    Tpl::LogManagerPtr	   m_logManager;
 };
 
 #endif // CONTEXT_MENU_H

-- 
ktp-contact-list packaging



More information about the pkg-kde-commits mailing list