Port to TelepathyGLib
Co-authored-by: tonadev <tonadevv@gmail.com> [initial port] Co-authored-by: Aniket21mathur <aniketmathur320@gmail.com> [further work] Co-authored-by: James Cameron <quozl@laptop.org> [minimising changes]
This commit is contained in:
committed by
James Cameron
parent
ac7482081e
commit
88ea8e1f4f
@@ -172,22 +172,17 @@ import json
|
||||
import gi
|
||||
gi.require_version('Gtk', '3.0')
|
||||
gi.require_version('Gdk', '3.0')
|
||||
gi.require_version('TelepathyGLib', '0.12')
|
||||
gi.require_version('SugarExt', '1.0')
|
||||
|
||||
from gi.repository import GLib
|
||||
from gi.repository import GObject
|
||||
from gi.repository import Gdk
|
||||
from gi.repository import Gtk
|
||||
from gi.repository import TelepathyGLib
|
||||
import dbus
|
||||
import dbus.service
|
||||
from dbus import PROPERTIES_IFACE
|
||||
from telepathy.server import DBusProperties
|
||||
from telepathy.interfaces import CHANNEL, \
|
||||
CHANNEL_TYPE_TEXT, \
|
||||
CLIENT, \
|
||||
CLIENT_HANDLER
|
||||
from telepathy.constants import CONNECTION_HANDLE_TYPE_CONTACT
|
||||
from telepathy.constants import CONNECTION_HANDLE_TYPE_ROOM
|
||||
|
||||
from sugar3 import util
|
||||
from sugar3 import power
|
||||
@@ -222,6 +217,14 @@ N_BUS_NAME = 'org.freedesktop.Notifications'
|
||||
N_OBJ_PATH = '/org/freedesktop/Notifications'
|
||||
N_IFACE_NAME = 'org.freedesktop.Notifications'
|
||||
|
||||
CHANNEL = TelepathyGLib.IFACE_CHANNEL
|
||||
CHANNEL_TYPE_TEXT = TelepathyGLib.IFACE_CHANNEL_TYPE_TEXT
|
||||
CLIENT = TelepathyGLib.IFACE_CLIENT
|
||||
CLIENT_HANDLER = TelepathyGLib.IFACE_CLIENT_HANDLER
|
||||
|
||||
CONNECTION_HANDLE_TYPE_CONTACT = TelepathyGLib.HandleType.CONTACT
|
||||
CONNECTION_HANDLE_TYPE_ROOM = TelepathyGLib.HandleType.ROOM
|
||||
|
||||
CONN_INTERFACE_ACTIVITY_PROPERTIES = 'org.laptop.Telepathy.ActivityProperties'
|
||||
|
||||
PREVIEW_SIZE = style.zoom(300), style.zoom(225)
|
||||
@@ -1418,7 +1421,7 @@ class Activity(Window, Gtk.Container):
|
||||
Gdk.flush()
|
||||
|
||||
|
||||
class _ClientHandler(dbus.service.Object, DBusProperties):
|
||||
class _ClientHandler(dbus.service.Object):
|
||||
def __init__(self, bundle_id, got_channel_cb):
|
||||
self._interfaces = set([CLIENT, CLIENT_HANDLER, PROPERTIES_IFACE])
|
||||
self._got_channel_cb = got_channel_cb
|
||||
@@ -1429,12 +1432,13 @@ class _ClientHandler(dbus.service.Object, DBusProperties):
|
||||
|
||||
path = '/' + name.replace('.', '/')
|
||||
dbus.service.Object.__init__(self, bus_name, path)
|
||||
DBusProperties.__init__(self)
|
||||
|
||||
self._implement_property_get(CLIENT, {
|
||||
self._prop_getters = {}
|
||||
self._prop_setters = {}
|
||||
self._prop_getters.setdefault(CLIENT, {}).update({
|
||||
'Interfaces': lambda: list(self._interfaces),
|
||||
})
|
||||
self._implement_property_get(CLIENT_HANDLER, {
|
||||
self._prop_getters.setdefault(CLIENT_HANDLER, {}).update({
|
||||
'HandlerChannelFilter': self.__get_filters_cb,
|
||||
})
|
||||
|
||||
@@ -1465,6 +1469,34 @@ class _ClientHandler(dbus.service.Object, DBusProperties):
|
||||
except Exception as e:
|
||||
logging.exception(e)
|
||||
|
||||
@dbus.service.method(dbus_interface=dbus.PROPERTIES_IFACE,
|
||||
in_signature='ss', out_signature='v')
|
||||
def Get(self, interface_name, property_name):
|
||||
if interface_name in self._prop_getters \
|
||||
and property_name in self._prop_getters[interface_name]:
|
||||
return self._prop_getters[interface_name][property_name]()
|
||||
else:
|
||||
logging.debug('InvalidArgument')
|
||||
|
||||
@dbus.service.method(dbus_interface=dbus.PROPERTIES_IFACE,
|
||||
in_signature='ssv', out_signature='')
|
||||
def Set(self, interface_name, property_name, value):
|
||||
if interface_name in self._prop_setters \
|
||||
and property_name in self._prop_setters[interface_name]:
|
||||
self._prop_setters[interface_name][property_name](value)
|
||||
else:
|
||||
logging.debug('PermissionDenied')
|
||||
|
||||
@dbus.service.method(dbus_interface=dbus.PROPERTIES_IFACE,
|
||||
in_signature='s', out_signature='a{sv}')
|
||||
def GetAll(self, interface_name):
|
||||
if interface_name in self._prop_getters:
|
||||
r = {}
|
||||
for k, v in self._prop_getters[interface_name].items():
|
||||
r[k] = v()
|
||||
return r
|
||||
else:
|
||||
logging.debug('InvalidArgument')
|
||||
|
||||
_session = None
|
||||
|
||||
|
||||
Reference in New Issue
Block a user