/
personalinfo_manager.py
96 lines (76 loc) · 3.76 KB
/
personalinfo_manager.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
from amsn2.views import PersonalInfoView
class aMSNPersonalInfoManager:
def __init__(self, core):
"""
@type core: aMSNCore
"""
self._core = core
self._backend_manager = core._backend_manager
self._em = core._event_manager
self._personalinfoview = PersonalInfoView(self)
self._papyon_profile = None
def set_account(self, amsn_account):
self._papyon_profile = amsn_account.client.profile
# set nickname at login
# could be overriden by the one set in the saved account
# TODO: add setting display picture
nick = unicode(amsn_account.view.nick)
if not nick or nick == amsn_account.view.email:
nick = self._papyon_profile.display_name
self._personalinfoview.nick = nick
# TODO: The psm doesn't seem to get fetched from server. Papyon issue?
psm = unicode(amsn_account.view.psm)
self._personalinfoview.psm = psm
# set login presence, from this moment the client appears to the others
self._personalinfoview.presence = self._core.p2s[amsn_account.view.presence]
""" Actions from ourselves """
def _on_nick_changed(self, new_nick):
# TODO: parsing
self._papyon_profile.display_name = new_nick
def _on_PSM_changed(self, new_psm):
# TODO: parsing
self._papyon_profile.personal_message = new_psm
def _on_presence_changed(self, new_presence):
# TODO: manage custom presence
for key in self._core.p2s:
if self._core.p2s[key] == new_presence:
self._papyon_profile.presence = key
return
def _on_DP_change_request(self):
self._core._ui_manager.load_DP_chooser_window()
def _on_DP_changed(self, dp_msnobj):
self._papyon_profile.msn_object = dp_msnobj
""" Actions from the core """
def _on_CM_changed(self, new_media):
self._papyon_profile.current_media = new_media
""" Notifications from the server """
def on_nick_updated(self, nick):
# TODO: parse fields for smileys, format, etc
self._personalinfoview._nickname.reset()
self._personalinfoview._nickname.append_text(nick.decode('utf-8'))
self._em.emit(self._em.events.PERSONALINFO_UPDATED, self._personalinfoview)
def on_PSM_updated(self, psm):
# TODO: parse fields for smileys, format, etc
self._personalinfoview._psm.reset()
self._personalinfoview._psm.append_text(psm.decode('utf-8'))
self._em.emit(self._em.events.PERSONALINFO_UPDATED, self._personalinfoview)
def on_DP_updated(self, dp_msnobj):
self._personalinfoview._image.reset()
path = self._backend_manager.get_file_location_DP(self._papyon_profile.account,
self._papyon_profile.id,
dp_msnobj._data_sha)
self._personalinfoview._image.load('Filename', path)
self._em.emit(self._em.events.PERSONALINFO_UPDATED, self._personalinfoview)
def on_presence_updated(self, presence):
self._personalinfoview._presence = self._core.p2s[presence]
self._em.emit(self._em.events.PERSONALINFO_UPDATED, self._personalinfoview)
def on_CM_updated(self, cm):
self._personalinfoview._current_media.reset()
#TODO: insert separators
self._personalinfoview._current_media.append_text(cm[0])
self._personalinfoview._current_media.append_text(cm[1])
self._em.emit(self._em.events.PERSONALINFO_UPDATED, self._personalinfoview)
# TODO: connect to papyon event, maybe build a mailbox_manager
""" Actions from outside """
def _on_new_mail(self, info):
self._em.emit(self._em.events.PERSONALINFO_UPDATED, self._personalinfoview)