3
'''buteo syncfw mock template
5
This creates the expected methods and properties of the main
6
com.meego.msyncd object. You can specify D-BUS property values
9
# This program is free software; you can redistribute it and/or modify it under
10
# the terms of the GNU Lesser General Public License as published by the Free
11
# Software Foundation; either version 3 of the License, or (at your option) any
12
# later version. See http://www.gnu.org/copyleft/lgpl.html for the full text
15
__author__ = 'Renato Araujo Oliveira Filho'
16
__email__ = 'renatofilho@canonical.com'
17
__copyright__ = '(c) 2015 Canonical Ltd.'
18
__license__ = 'LGPL 3+'
21
from gi.repository import GObject
25
import dbus.mainloop.glib
27
BUS_NAME = 'com.meego.msyncd'
28
MAIN_OBJ = '/synchronizer'
29
MAIN_IFACE = 'com.meego.msyncd'
32
class ButeoSyncFw(dbus.service.Object):
34
"""<?xml version=\"1.0\" encoding=\"UTF-8\"?>
35
<profile type=\"sync\" name=\"test-profile\">
36
<key value=\"45\" name=\"accountid\"/>
37
<key value=\"contacts\" name=\"category\"/>
38
<key value=\"google.Contacts-\" name=\"displayname\"/>
39
<key value=\"true\" name=\"enabled\"/>
40
<key value=\"true\" name=\"hidden\"/>
41
<key value=\"30\" name=\"sync_since_days_past\"/>
42
<key value=\"true\" name=\"use_accounts\"/>
43
<profile type=\"client\" name=\"googlecontacts\">
44
<key value=\"two-way\" name=\"Sync Direction\"/>
46
<schedule time=\"05:00:00\" days=\"4,5,2,3,1,6,7\" syncconfiguredtime=\"\" interval=\"0\" enabled=\"true\">
47
<rush end=\"\" externalsync=\"false\" days=\"\" interval=\"15\" begin=\"\" enabled=\"false\"/>
50
"""<?xml version=\"1.0\" encoding=\"UTF-8\"?>
51
<profile type=\"sync\" name=\"testsync-ovi\">
52
<key value=\"calendar\" name=\"category\"/>
53
<schedule syncconfiguredtime=\"\" interval=\"0\" days=\"\" externalsync=\"true\" time=\"\" enabled=\"false\">
54
<rush interval=\"0\" days=\"\" externalsync=\"false\" begin=\"\" enabled=\"false\" end=\"\"/>
57
"""<?xml version=\"1.0\" encoding=\"UTF-8\"?>
58
<profile name=\"63807467\" type=\"sync\">
59
<key value=\"110\" name=\"accountid\"/>
60
<key value=\"contacts\" name=\"category\"/>
61
<key value=\"online\" name=\"destinationtype\"/>
62
<key value=\"google-contacts-renato.teste2@gmail.com\" name=\"displayname\"/>
63
<key value=\"true\" name=\"enabled\"/>
64
<key value=\"true\" name=\"hidden\"/>
65
<key value=\"false\" name=\"scheduled\"/>
66
<key value=\"true\" name=\"sync_always_up_to_date\"/>
67
<key value=\"true\" name=\"sync_on_change\"/>
68
<key value=\"30\" name=\"sync_since_days_past\"/>
69
<key value=\"true\" name=\"use_accounts\"/>
70
<profile name=\"googlecontacts\" type=\"client\">
71
<key value=\"two-way\" name=\"Sync Direction\"/>
72
<key value=\"gdata\" name=\"Sync Protocol\"/>
73
<key value=\"HTTP\" name=\"Sync Transport\"/>
74
<key value=\"prefer remote\" name=\"conflictpolicy\"/>
75
<key value=\"true\" name=\"sync_on_change\"/>
77
<schedule syncconfiguredtime=\"\" days=\"5,4,7,6,1,3,2\" interval=\"60\" enabled=\"false\" time=\"\">
78
<rush begin=\"00:00:00\" end=\"00:00:00\" days=\"\" interval=\"60\" enabled=\"false\" externalsync=\"false\"/>
81
"""<?xml version=\"1.0\" encoding=\"UTF-8\"?>
82
<profile type=\"sync\" name=\"template-profile\">
83
<key value=\"contacts\" name=\"category\"/>
84
<key value=\"false\" name=\"enabled\"/>
85
<schedule syncconfiguredtime=\"\" interval=\"0\" days=\"\" externalsync=\"true\" time=\"\" enabled=\"false\">
86
<rush interval=\"0\" days=\"\" externalsync=\"false\" begin=\"\" enabled=\"false\" end=\"\"/>
91
def __init__(self, object_path):
92
dbus.service.Object.__init__(self, dbus.SessionBus(), object_path)
94
self._profiles = ButeoSyncFw.PROFILES
96
@dbus.service.method(dbus_interface=MAIN_IFACE,
97
in_signature='', out_signature='as')
98
def allVisibleSyncProfiles(self):
101
@dbus.service.method(dbus_interface=MAIN_IFACE,
102
in_signature='ss', out_signature='as')
103
def syncProfilesByKey(self, key, value):
104
print ("syncProfilesByKey:", key, value)
105
if key == 'category':
106
if value == 'contacts':
107
return [ButeoSyncFw.PROFILES[0], ButeoSyncFw.PROFILES[2], ButeoSyncFw.PROFILES[3]]
108
if value == 'calendar':
109
return [ButeoSyncFw.PROFILES[1]]
112
@dbus.service.method(dbus_interface=MAIN_IFACE,
113
in_signature='s', out_signature='')
114
def abortSync(self, profileId):
115
if profileId in self._activeSync:
116
self._activeSync.remove(profileId)
117
self.syncStatus(profileId, 5, 'aborted by the user', 0)
120
@dbus.service.method(dbus_interface=MAIN_IFACE,
121
in_signature='s', out_signature='b')
122
def startSync(self, profileId):
123
if profileId in ['63807467', 'testsync-ovi', 'test-profile']:
124
self._activeSync.append(profileId)
125
self.syncStatus(profileId, 1, '', 0)
129
@dbus.service.method(dbus_interface=MAIN_IFACE,
130
in_signature='', out_signature='as')
131
def runningSyncs(self):
132
return self._activeSync
134
@dbus.service.signal(dbus_interface=MAIN_IFACE,
136
def syncStatus(self, profileId, status, message, statusDetails):
137
print("SyncStatus called")
139
@dbus.service.signal(dbus_interface=MAIN_IFACE,
141
def signalProfileChanged(self, profileId, status, changedProfile):
142
print("profileChanged called")
144
@dbus.service.method(dbus_interface=MAIN_IFACE,
145
in_signature='s', out_signature='b')
146
def removeProfile(self, profileId):
147
if int(profileId) < len(self._profiles):
148
self._profiles.remove(self._profiles[int(profileId)])
149
self.signalProfileChanged(profileId, 2, 'deleted')
156
if __name__ == '__main__':
157
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
159
name = dbus.service.BusName(BUS_NAME)
160
mainloop = GObject.MainLoop()
161
buteo = ButeoSyncFw(MAIN_OBJ)