Commit graph libervia-backend/frontends/src/quick_frontend/quick_app.py
Author SHA1 Message Date
Goffi
be8d681be7 quick_frontend(QuickApp): added onBridgeConnected method 2016-12-18 16:28:46 +01:00
Goffi
34cec8fe14 bridge, quick_frontend: preparation for async bridge
bridge can currently have sync and async methods. This commit prepare the transition to fully async bridges:
    - a new bridgeConnect method must be called to prepare the bridge
    - quick app, quick profile manager: changed sync calls to async ones
    - quick app: bridgeConnect can be called automatically or manually depending on connect_bridge parameter of QuickApp
2016-12-13 22:27:48 +01:00
Goffi
2618d48e7b core, quick_frontends: android compatibility hacks:
a couple of hacks have been used so backend can be launched on android using kivy
    - config file (sat.conf) is been read on a specific dir, using a detection of Cagou domains in constants.py
    - fixed crash when using sys.stdout.isatty in log_config.py
    - Q&D fix for logging encoding issue on android
    - when android is detected, the path/pattern to load plugins is modified
    - SRV is not working at the moment on android. If the platform is detected, the host is used directly with default port. A hosts_dir configuration can be used in [android] section to map a specific ip to a host
    - getRepositoryData in tools/utils return constant string on android. Proper repository data need to be copied during package building.
    - [quick app] more robust failure handling on asyncConnect error
    - [quick chat] default to utf-8 when getlocale doesn't return the actual locale.
2016-12-04 18:16:48 +01:00
Goffi
372f54ec2a bridge (D-Bus): bad design fixes:
- renamed outputed module to dbus_bridge (to avoid uppercase and conflict with dbus module)
    - class name is now Bridge for both frontend and core (make discovery/import more easy)
    - register renamed to register_method in core, and register_signal in frontend
2016-10-03 21:15:39 +02:00
Goffi
78750cb265 quich frontend, primivius (chat): better avatar handling:
- new getAvatar method in QuickApp which request vCard if avatar if needed and return default avatar is no avatar is found
    - frontends based on quick frontend can now specify if they handle avatar or not using AVATARS_HANDLER
    - when avatar is updated, occupant widget(s) and all message widget(s) of the concerned entity are updated
2016-09-09 23:54:33 +02:00
Goffi
42167b6ae9 plugin XEP-0045, quick frontend (app,chat): various chat improvments:
- (XEP-0045): join defered is now fired when room is full joined and history is available
    - (XEP-0045): mucJOIN signature has changed, it now returns the same arguments as mucRoomJoined and a boolean which is True if the room was alread joined
    - quick frontend (app, chat): adapted code to new changes
2016-09-09 23:54:33 +02:00
Goffi
f992739212 quick frontend (contat list/cache): workaround for avatar issue in MUC. Need to be reworked properly in the future (TODO) 2016-09-09 23:54:33 +02:00
Goffi
1b01409238 quick app(app): call entityDataUpdateHandler on profile plug instead of setCache directly 2016-09-09 23:54:33 +02:00
Goffi
948c569dfe quick frontend(QuickApp): added getDefaultAvatar method:
this method (not implemented in quick frontend) should facilitate handling of entities without avatar
2016-08-29 01:21:45 +02:00
Goffi
55357178ef core, bridge, frontends: removed deprecated bridge method askConfirmation, confirmationAnswer, actionResult, actionResultExt and getWaitingConf 2016-08-28 19:23:58 +02:00
Goffi
fb827ad023 quick frontend (app): avatar filename is not requested anymore if value is empty 2016-08-28 18:24:45 +02:00
Goffi
c9c15849d7 quick frontend (quick_app): fixed user_action from action coming from backend 2016-08-21 20:39:43 +02:00
Goffi
caaa753d80 quick frontend (chat): fixed messageNew signal dispatching when several widgets are handling the target 2016-08-21 17:04:33 +02:00
Goffi
0c83d13b7c frontends (xmlui): added a user_action attribute:
this attribute indicate if the data is a result of a user interaction or an event from the backend (in the later case, the frontend can choose to avoid interrupting the user).
Internally (in XMLUI), "FROM_BACKEND" is added to XMLUI.flags if the UI result from a backend event.
2016-08-21 12:07:31 +02:00
Goffi
4518afa0fb quick frontend (app): fixed regression in groups handling 2016-08-10 23:23:48 +02:00
Goffi
3f83911645 quick frontend (QuickApp): unicode string fix 2016-08-09 01:08:59 +02:00
Goffi
2d468f9e94 quick frontends, primitivus: messageState signal handling 2016-08-02 23:11:44 +02:00
Goffi
e32bd443a3 quick_frontend, primitivus: better notifications handling 2016-07-24 17:56:14 +02:00
Goffi
73a8db4e64 primitivus, quick_frontends: show global notifications counter in contact_list + method to get these notifications in QuickApp 2016-07-17 17:32:46 +02:00
Goffi
cc160e03d7 plugin XEP-0085, quick_frontends, primitivus: chat states are working again 2016-07-17 16:47:33 +02:00
Goffi
b388d2b172 quick_frontend, primitivus: notifications refactoring
replaced old "alerts" system by a more generic one which use listeners and can activate callbacks on notification click.
2016-06-27 22:36:22 +02:00
Goffi
04515e5013 plugin XEP-0045, quick_frontend + primitivus (chat): cleaning of XEP-0045 (first pass):
- bridge methods/signals now all start with "muc" to follow new convention
    - internal method use client instead of profile to follow new convention
    - removed excetpions from plugin XEP-0045 in favor of core.exceptions, NotReady added
    - cleaned/simplified several part of the code. checkClient removed as it is not needed anymore
    - self.clients map removed, muc data are now stored directly in client
    - getRoomEntityNick and getRoomNicksOfUsers are removed as they don't look sane.
        /!\ This break all room game plugins for the moment
    - use of uuid4 instead of uuid1 for getUniqueName, as host ID and current time are used for uuid1
2016-06-27 21:45:11 +02:00
Goffi
a7de473107 backend, frontends: message refactoring (huge commit):
/!\ several features are temporarily disabled, like notifications in frontends

next step in refactoring, with the following changes:
    - jp: updated jp message to follow changes in backend/bridge
    - jp: added --lang, --subject, --subject_lang, and --type options to jp message + fixed unicode handling for jid
    - quick_frontend (QuickApp, QuickChat):
        - follow backend changes
        - refactored chat, message are now handled in OrderedDict and uid are kept so they can be updated
        - Message and Occupant classes handle metadata, so frontend just have to display them
    - Primitivus (Chat):
        - follow backend/QuickFrontend changes
        - info & standard messages are handled in the same MessageWidget class
        - improved/simplified handling of messages, removed update() method
        - user joined/left messages are merged when next to each other
        - a separator is shown when message is received while widget is out of focus, so user can quickly see the new messages
        - affiliation/role are shown (in a basic way for now) in occupants panel
        - removed "/me" messages handling, as it will be done by a backend plugin
        - message language is displayed when available (only one language per message for now)
        - fixed :history and :search commands
    - core (constants): new constants for messages type, XML namespace, entity type
    - core: *Message methods renamed to follow new code sytle (e.g. sendMessageToBridge => messageSendToBridge)
    - core (messages handling): fixed handling of language
    - core (messages handling): mes_data['from'] and ['to'] are now jid.JID
    - core (core.xmpp): reorganised message methods, added getNick() method to client.roster
    - plugin text commands: fixed plugin and adapted to new messages behaviour. client is now used in arguments instead of profile
    - plugins: added information for cancellation reason in CancelError calls
    - plugin XEP-0045: various improvments, but this plugin still need work:
        - trigger is used to avoid message already handled by the plugin to be handled a second time
        - changed the way to handle history, the last message from DB is checked and we request only messages since this one, in seconds (thanks Poezio folks :))
        - subject reception is waited before sending the roomJoined signal, this way we are sure that everything including history is ready
        - cmd_* method now follow the new convention with client instead of profile
        - roomUserJoined and roomUserLeft messages are removed, the events are now handled with info message with a "ROOM_USER_JOINED" info subtype
    - probably other forgotten stuffs :p
2016-06-20 18:41:53 +02:00
Goffi
f12803fa65 backend, frontend: messages refactoring (huge commit, not finished):
/!\ database schema has been modified, do a backup before updating

    message have been refactored, here are the main changes:

    - languages are now handled
    - all messages have an uid (internal to SàT)
    - message updating is anticipated
    - subject is now first class
    - new naming scheme is used newMessage => messageNew, getHistory => historyGet, sendMessage => messageSend
    - minimal compatibility refactoring in quick_frontend/Primitivus, better refactoring should follow
    - threads handling
    - delayed messages are saved into history
    - info messages may also be saved in history (e.g. to keep track of people joining/leaving a room)
    - duplicate messages should be avoided
    - historyGet return messages in right order, no need to sort again
    - plugins have been updated to follow new features, some of them need to be reworked (e.g. OTR)
    - XEP-0203 (Delayed Delivery) is now fully handled in core, the plugin just handle disco and creation of a delay element
    - /!\ jp and Libervia are currently broken, as some features of Primitivus

    It has been put in one huge commit to avoid breaking messaging between changes.
    This is the main part of message refactoring, other commits will follow to take profit of the new features/behaviour.
2016-05-24 22:11:04 +02:00
Goffi
e8783b42df quick app (contact list): when a new profile is plugged, updates are locked until the end of the process, this avoid many useless refreshes 2016-04-18 18:33:55 +02:00
Goffi
8851addc20 quick frontend, primitivus: quickContactList refactored to handle several profiles at once 2016-04-18 18:31:13 +02:00
Goffi
6bbcbaf522 use of /usr/bin/env instead of /usr/bin/python in shebang 2016-04-17 14:45:26 +02:00
Goffi
74409e5e64 quick frontend (QuickApp): added ui_show_cb in actionManager, so frontend can handle the display of the XMLUI itself 2016-03-26 16:15:23 +01:00
souliane
f16e277e8f quick_frontend, primitivus: mechanism to signal a new message reception when the window is hidden (even if the message is actually displayed):
- for now this is only used by Libervia
2016-01-12 17:54:38 +01:00
Goffi
348be27934 copyright update 2016-01-03 16:28:30 +01:00
souliane
54e9afe5a3 quick_frontend, primitivus: display the number of alerts for each contact and not only a symbol (*) 2015-11-24 13:31:28 +01:00
Goffi
ba295f1429 quick_frontend: getFeatures is called on profile plug, and saved in host.features 2015-11-23 23:30:41 +01:00
Goffi
4ffbce51c3 primitivus: fixed progress panel 2015-11-20 01:57:18 +01:00
Goffi
51a5b7c56f quick frontend: added progressIdHandler to managed progress id on action result + ignore meta_* action results 2015-11-20 01:57:16 +01:00
Goffi
fbbb081425 backend, bridge, frontends: actionNew has now a security_limit argument + added some docstring to explain data argument 2015-11-14 19:21:56 +01:00
Goffi
73139e59ba Primitivus: better popups handling:
- widget to remove can now be specified in removePopUp: if it is not the current one, it will be removed from queue
    - Primitivus.Alert method is a shortcut to display an Alert which will be removed on "OK" press
    - showDialog is now obsolete and removed, if generic dialog creation is needed, XMLUI can be used
2015-11-11 18:32:59 +01:00
souliane
3da283a698 plugin XEP-0277, quick_frontend: rename mbGetLast to mbGet and add it the parameter "item_ids" 2015-09-10 07:39:09 +02:00
Goffi
dd8462f07a frontends: callback are now always used in QuickApp launchAction (before it was only used if validated is present):
- actionManager is used by default (no callback provided)
    - in XMLUI, the dialog is closed before calling actionManager
    - if keys are not managed in resuling data, an exceptions is raised
2015-08-25 14:41:42 +02:00
Goffi
621221c16e QuickFrontend: removed old watched stuff as a new plugin now manages it properly 2015-08-20 18:44:39 +02:00
Goffi
3312c3bf97 quick_frontend, primitivus: handling of actionNew signal 2015-08-18 09:01:18 +02:00
Goffi
b747c1b733 quick_frontend (constants, quick_app, quick_contact_list): blogging refactoring (not finished):
- adaptation to backend modifications
    - moved common blogging parts from Libervia to quick frontend
    - QuickApp use a MB_HANDLE class variable to indicated if blogging is managed by the frontend (and avoid waste of resources if not)
    - comments are now managed inside parent entry, as a result a tree of comments is now possible
    - Entry.level indicate where in the tree we are (-1 mean parent QuickBlog, 0 mean main item, more means comment)
    - items + comments are requested in 1 shot, and RTDeferred are used to avoid blocking while waiting for them
    - in QuickBlog, id2entries allow to get Entry from it's item id, and node2entries allow to get Entry(ies) hosting a comments node
    - QuickBlog.new_message_target tell where a new message will be sent by default
2015-08-16 01:00:54 +02:00
souliane
252bf6bef3 quick_frontend: display over whole alerts counter 2015-07-20 10:23:58 +02:00
souliane
9062b2da02 quick_frontend: add a couple of TODOs 2015-07-13 13:33:54 +02:00
souliane
640537662a bridge, quick_frontend: the JID that is assigned by the server can differ from the one we asked for (resource) 2015-06-10 18:04:43 +02:00
Goffi
3c6a708966 quick_frontend (quick_app): properly fixed roster loss:
commit 6adf1b0be609 which was causing issues in Libervia or when a profile was already connected
2015-05-22 22:31:37 +02:00
souliane
4c25ec71ba quick_frontend: ask for the roster in connectedHandler instead of in ProfileManager, because we need it also when reconnecting after a disconnection whithout restarting the frontend 2015-04-20 16:46:17 +02:00
souliane
41b549f7ae core, plugin XEP-0045, frontends: change frontend method "setStatusOnline" for "setPresenceStatus":
- remove parameter "online" (can be guess from "presence" value)
    - process "statuses" dict in quick_frontend, so this method can get a simple unicode "status"
    - add C.PRESENCE_STATUSES_DEFAULT to define the key to use for fallback status
2015-04-20 16:39:38 +02:00
souliane
67ff77e5de massive (preventive) addition of 'u' (unicode) before the strings passed to logging functions 2015-04-16 14:57:57 +02:00
souliane
c1b7c3c027 quick_frontend (contact_list): rename QuickContactList.remove to QuickContactList.removeContact + remove the contact from _roster attribute (and not only from _cache) 2015-04-01 22:07:28 +02:00
Goffi
fbec02d396 2015 copyright dates update 2015-03-30 10:26:26 +02:00