~osomon/buteo-syncfw-qml/run-ut-at-build-time

« back to all changes in this revision

Viewing changes to tests/qml/buteo-syncfw.py

  • Committer: Renato Araujo Oliveira Filho
  • Date: 2015-07-09 15:35:12 UTC
  • mfrom: (1.1.5 wip)
  • Revision ID: renato.filho@canonical.com-20150709153512-ckle3yebmsbdx0c0
Implemented QML bindings for buteo syncfw DBUS service.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/python3
 
2
 
 
3
'''buteo syncfw mock template
 
4
 
 
5
This creates the expected methods and properties of the main
 
6
com.meego.msyncd object. You can specify D-BUS property values
 
7
'''
 
8
 
 
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
 
13
# of the license.
 
14
 
 
15
__author__ = 'Renato Araujo Oliveira Filho'
 
16
__email__ = 'renatofilho@canonical.com'
 
17
__copyright__ = '(c) 2015 Canonical Ltd.'
 
18
__license__ = 'LGPL 3+'
 
19
 
 
20
import dbus
 
21
from gi.repository import GObject
 
22
 
 
23
import dbus
 
24
import dbus.service
 
25
import dbus.mainloop.glib
 
26
 
 
27
BUS_NAME = 'com.meego.msyncd'
 
28
MAIN_OBJ = '/synchronizer'
 
29
MAIN_IFACE = 'com.meego.msyncd'
 
30
SYSTEM_BUS = False
 
31
 
 
32
class ButeoSyncFw(dbus.service.Object):
 
33
    PROFILES = [
 
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\"/>
 
45
    </profile>
 
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\"/>
 
48
    </schedule>
 
49
</profile>""",
 
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=\"\"/>
 
55
    </schedule>
 
56
</profile>""",
 
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\"/>
 
76
    </profile>
 
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\"/>
 
79
    </schedule>
 
80
</profile>""",
 
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=\"\"/>
 
87
    </schedule>
 
88
</profile>"""
 
89
    ]
 
90
 
 
91
    def __init__(self, object_path):
 
92
        dbus.service.Object.__init__(self, dbus.SessionBus(), object_path)
 
93
        self._activeSync = []
 
94
        self._profiles = ButeoSyncFw.PROFILES
 
95
 
 
96
    @dbus.service.method(dbus_interface=MAIN_IFACE,
 
97
                         in_signature='', out_signature='as')
 
98
    def allVisibleSyncProfiles(self):
 
99
        return self._profiles
 
100
 
 
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]]
 
110
        return []
 
111
 
 
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)
 
118
        return
 
119
 
 
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)
 
126
            return True
 
127
        return False
 
128
 
 
129
    @dbus.service.method(dbus_interface=MAIN_IFACE,
 
130
                         in_signature='', out_signature='as')
 
131
    def runningSyncs(self):
 
132
        return self._activeSync
 
133
 
 
134
    @dbus.service.signal(dbus_interface=MAIN_IFACE,
 
135
                         signature='sisi')
 
136
    def syncStatus(self, profileId, status, message, statusDetails):
 
137
        print("SyncStatus called")
 
138
 
 
139
    @dbus.service.signal(dbus_interface=MAIN_IFACE,
 
140
                         signature='sis')
 
141
    def signalProfileChanged(self, profileId, status, changedProfile):
 
142
        print("profileChanged called")
 
143
 
 
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')
 
150
            return True
 
151
        else:
 
152
            return False
 
153
 
 
154
 
 
155
 
 
156
if __name__ == '__main__':
 
157
    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
 
158
 
 
159
    name = dbus.service.BusName(BUS_NAME)
 
160
    mainloop = GObject.MainLoop()
 
161
    buteo = ButeoSyncFw(MAIN_OBJ)
 
162
    mainloop.run()
 
163