Mercurial > libervia-desktop-kivy
diff cagou/plugins/plugin_wid_file_sharing.py @ 237:059c5b39032d
plugin file sharing: moved common discovery widgets to new core.common_widgets module
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 31 Aug 2018 16:59:38 +0200 |
parents | a676cb07c1cb |
children | 7918a5668304 |
line wrap: on
line diff
--- a/cagou/plugins/plugin_wid_file_sharing.py Fri Aug 31 16:58:15 2018 +0200 +++ b/cagou/plugins/plugin_wid_file_sharing.py Fri Aug 31 16:59:38 2018 +0200 @@ -27,15 +27,14 @@ from sat_frontends.tools import jid from cagou.core.constants import Const as C from cagou.core import cagou_widget -from cagou.core.menu import (EntitiesSelectorMenu, TouchMenuBehaviour, - TouchMenuItemBehaviour) +from cagou.core.menu import EntitiesSelectorMenu, TouchMenuBehaviour from cagou.core.utils import FilterBehavior +from cagou.core.common_widgets import (Identities, ItemWidget, DeviceWidget, + CategorySeparator) from cagou import G from kivy import properties from kivy.uix.label import Label from kivy.uix.button import Button -from kivy.uix.boxlayout import BoxLayout -from kivy.metrics import dp from kivy import utils as kivy_utils from functools import partial import os.path @@ -80,36 +79,6 @@ exceptions.InternalError(u"Unknown mode: {mode}".format(mode=new_mode)) -class Identities(object): - - def __init__(self, entity_ids): - identities = {} - for cat, type_, name in entity_ids: - identities.setdefault(cat, {}).setdefault(type_, []).append(name) - client = identities.get('client', {}) - if 'pc' in client: - self.type = 'desktop' - elif 'phone' in client: - self.type = 'phone' - elif 'web' in client: - self.type = 'web' - elif 'console' in client: - self.type = 'console' - else: - self.type = 'desktop' - - self.identities = identities - - @property - def name(self): - return self.identities.values()[0].values()[0][0] - - -class ItemWidget(TouchMenuItemBehaviour, BoxLayout): - name = properties.StringProperty() - base_width = properties.NumericProperty(dp(100)) - - class PathWidget(ItemWidget): def __init__(self, filepath, main_wid, **kw): @@ -171,46 +140,13 @@ self.main_wid.request_item(self) return True - -class DeviceWidget(ItemWidget): - - def __init__(self, main_wid, entity_jid, identities, **kw): - self.entity_jid = entity_jid - self.identities = identities - own_jid = next(G.host.profiles.itervalues()).whoami - self.own_device = entity_jid.bare == own_jid - if self.own_device: - name = self.identities.name - elif self.entity_jid.node: - name = self.entity_jid.node - elif self.entity_jid.domain.endswith(own_jid.domain): - name = _(u"your server") - else: - name = _(u"sharing component") - - super(DeviceWidget, self).__init__(name=name, main_wid=main_wid, **kw) - - def getSymbol(self): - if self.identities.type == 'desktop': - return 'desktop' - elif self.identities.type == 'phone': - return 'mobile' - elif self.identities.type == 'web': - return 'globe' - elif self.identities.type == 'console': - return 'terminal' - else: - return 'desktop' +class SharingDeviceWidget(DeviceWidget): def do_item_action(self, touch): self.main_wid.remote_entity = self.entity_jid self.main_wid.remote_dir = u'' -class CategorySeparator(Label): - pass - - class FileSharing(quick_widgets.QuickWidget, cagou_widget.CagouWidget, FilterBehavior, TouchMenuBehaviour): SINGLE=False @@ -302,9 +238,8 @@ self.layout.add_widget(CategorySeparator(text=title)) for entity_str, entity_ids in entities_map.iteritems(): entity_jid = jid.JID(entity_str) - item = DeviceWidget(self, - entity_jid, - Identities(entity_ids)) + item = SharingDeviceWidget( + self, entity_jid, Identities(entity_ids)) self.layout.add_widget(item) if not entities_services and not entities_own and not entities_roster: self.layout.add_widget(Label(