Ejemplo n.º 1
0
    def run(self, parent, standalone=False):

        ##set edje file to be used
        ##TODO: make one edje file per plugin
        self.edje_file = join(dirname(__file__), 'messages.edj')

        ##get message service and list of all messages
        self.contact_service = Service.get('Contacts')
        self.contacts = self.contact_service.contacts

        ##sort contact by date
        def comp2(m1, m2):
            return cmp(str(m1.name).lower(), str(m2.name).lower())

        self.contacts.sort(comp2)

        ##get message service and list of all messages
        self.msgs_service = Service.get('Messages')

        self.messages = self.msgs_service.messages

        self.window = ElementaryListWindow(self.edje_file, "main", "list",
                                           None, None, True)
        self.edje_obj = self.window.main_layout

        ##sort messages by date
        def comp(m1, m2):
            return cmp(m2.timestamp, m1.timestamp)

        self.list_label = [('label', 'peer'), ('label-number', 'text'),
                           ('status', 'status'), ('direction', 'direction')]

        self.item_list = ElementaryList(self.messages, self.window,
                                        self.edje_file, "item",
                                        self.list_label, comp)

        self.edje_obj.add_callback("*", "messaging", self.create_msg)
        self.item_list.add_callback("*", "messaging", self.adv_msg)
        self.item_list.add_callback("save", "*", self.create_contact)

        ## close the Tele app, with the back button (signal, source, method)
        self.edje_obj.add_callback("back", "edje", self.signal)

        self.oid = self.contacts.connect('inserted',
                                         self.item_list._redraw_view)

        self.item_list.add_callback("details", "*", self.msg_details)

        parent.emit("unblock")

        i, args = yield WaitFirst(Wait(self.window, 'delete_request'),
                                  Wait(self.window, 'back'),
                                  Wait(self.window.window, 'closing'))
        logger.info('Messages closing')

        if i != 2:
            self.contacts.disconnect(self.oid)
            self.window.delete()
            del self.item_list
Ejemplo n.º 2
0
class SettingsSublist(Application):

    name = 'SettingsSublist'

    def run(self, parent, edje_file, group, layout, *args, **kargs):

        layout.elm_obj.hide()

        self.parent = parent

        self.window = ElementaryListSubwindow(parent, edje_file, "main",
                                              "list")
        self.edje_obj = self.window.main_layout

        self.edje_obj.edje.signal_emit("sublist_mode", "*")

        self.settings = List()
        self.cb_list = List()

        for i in Setting.groups[group]:
            o = Setting.groups[group][i]
            self.settings.append(o)

        def comp(m1, m2):
            return cmp(m2.name, m1.name)

        self.list_label = [('title', 'name'), ('subtitle', 'value')]
        self.item_list = ElementaryList(self.settings, self.window, edje_file,
                                        "item", self.list_label, comp)

        for i in self.settings:
            if hasattr(i, 'options'):
                oid = i.options.connect('updated', self.item_list._redraw_view)
                self.cb_list.append([i.options, oid])

        self.item_list.add_callback("*", "sublist", self.action)

        yield WaitFirst(Wait(self.window, 'delete_request'),
                        Wait(self.edje_obj, 'back'))

        for i in self.cb_list:
            i[0].disconnect(i[1])

        self.edje_obj.elm_obj.visible_set(False)
        self.edje_obj.delete()
        parent.restore_orig()
        layout.elm_obj.show()

    def action(self, emission, signal, source, item):
        item[0].rotate(self.parent, self.edje_obj)
Ejemplo n.º 3
0
    def run(self, parent=None, standalone=False):
        ##the edje file
        self.edje_file = join(dirname(__file__), 'settings.edj')

        ##import a parameter which tells the app about paroli's window's size
        self.standalone = config.getboolean('standalone', 'activated', False)

        ##generate app-window
        self.window = ElementaryListWindow(self.edje_file, "main", "list",
                                           None, None, True)
        self.edje_obj = self.window.main_layout

        self.groups = List()

        for i in Setting.groups:
            t = Text(i)
            self.groups.append(Text(i))

        def comp(m1, m2):
            return cmp(str(m2).lower(), str(m1).lower())

        self.list_label = [('title', 'value')]
        self.item_list = ElementaryList(self.groups, self.window,
                                        self.edje_file, "item",
                                        self.list_label, comp)

        self.item_list.add_callback("*", "sublist", self._show_sublist)

        ## close the Tele app, with the back button (signal, source, method)
        self.edje_obj.add_callback("back", "edje", self.signal)

        parent.emit("unblock")

        i, args = yield WaitFirst(Wait(self.window, 'delete_request'),
                                  Wait(self.window, 'back'),
                                  Wait(self.window.window, 'closing'))
        ##we write a logger message that the application is closing
        logger.info('Settings closing')

        ##we delete the window object (the class would also delete all children object)
        if i != 2:
            self.item_list._remove_cb()
            self.window.delete()
Ejemplo n.º 4
0
class Letters(Application):
    name = 'SMS'
    icon = 'icon.png'
    category = 'launcher'  # So that we see the app in the launcher
    launcher_info = ['Messages', "unread"]

    def run(self, parent, standalone=False):

        ##set edje file to be used
        ##TODO: make one edje file per plugin
        self.edje_file = join(dirname(__file__), 'messages.edj')

        ##get message service and list of all messages
        self.contact_service = Service.get('Contacts')
        self.contacts = self.contact_service.contacts

        ##sort contact by date
        def comp2(m1, m2):
            return cmp(str(m1.name).lower(), str(m2.name).lower())

        self.contacts.sort(comp2)

        ##get message service and list of all messages
        self.msgs_service = Service.get('Messages')

        self.messages = self.msgs_service.messages

        self.window = ElementaryListWindow(self.edje_file, "main", "list",
                                           None, None, True)
        self.edje_obj = self.window.main_layout

        ##sort messages by date
        def comp(m1, m2):
            return cmp(m2.timestamp, m1.timestamp)

        self.list_label = [('label', 'peer'), ('label-number', 'text'),
                           ('status', 'status'), ('direction', 'direction')]

        self.item_list = ElementaryList(self.messages, self.window,
                                        self.edje_file, "item",
                                        self.list_label, comp)

        self.edje_obj.add_callback("*", "messaging", self.create_msg)
        self.item_list.add_callback("*", "messaging", self.adv_msg)
        self.item_list.add_callback("save", "*", self.create_contact)

        ## close the Tele app, with the back button (signal, source, method)
        self.edje_obj.add_callback("back", "edje", self.signal)

        self.oid = self.contacts.connect('inserted',
                                         self.item_list._redraw_view)

        self.item_list.add_callback("details", "*", self.msg_details)

        parent.emit("unblock")

        i, args = yield WaitFirst(Wait(self.window, 'delete_request'),
                                  Wait(self.window, 'back'),
                                  Wait(self.window.window, 'closing'))
        logger.info('Messages closing')

        if i != 2:
            self.contacts.disconnect(self.oid)
            self.window.delete()
            del self.item_list

    def signal(self, emission, signal, source):
        """ Callback function. It invokes, when the "back" button clicked."""
        logger.info("msgs2.py:signal() emmision: %s, signal: %s, source: %s",
                    str(emission), str(signal), str(source))
        self.window.emit('back')

    ##DEBUG FUNCTIONS
    ## general output check
    def self_test(self, *args, **kargs):
        txt = "self test called with args: ", args, "and kargs: ", kargs
        logger.info(txt)

    def create_contact(self, emission, source, param, item):
        service = Service.get('ContactCreate')
        service.create(self.window, item[0].peer).start()

    def create_msg(self, emission, signal, source, item=None):
        service = Service.get('MessageCreate')
        service.write(self.window, signal).start()

    def msg_details(self, emission, signal, source, item):
        number = item[0].peer.get_text()
        text = item[0].text
        timestamp = item[0].timestamp.local_repr()

        detail_layout = ElementaryLayout(self.window.window, self.edje_file,
                                         "message_details")
        edje_obj = detail_layout.elm_obj.edje_get()
        edje_obj.part_text_set('name-text', unicode(number).encode('utf8'))
        edje_obj.part_text_set('name-info', unicode(timestamp).encode('utf8'))
        detail_layout.elm_obj.show()

        textbox = Entry(self.window.window.elm_obj)
        textbox.entry_set(unicode(text.value).replace('&', '&'))

        textbox.size_hint_weight_set(1.0, 1.0)
        textbox.scale_set(1.5)
        textbox.editable_set(False)
        textbox.line_wrap_set(True)
        textbox.show()

        sc = Scroller(self.window.window.elm_obj)
        sc.content_set(textbox)

        detail_layout.elm_obj.content_set('message', sc)
        sc.show()

        self.window.main_layout.elm_obj.hide()
        self.window.bg.elm_obj.content_set("content-swallow",
                                           detail_layout.elm_obj)

        ##add callback for delete button
        edje_obj.signal_callback_add("delete_message", "*", self.delete_msg,
                                     item[0], detail_layout)

        ##add callback for messaging buttons
        edje_obj.signal_callback_add("*", "messaging", self.adv_msg, item,
                                     detail_layout)

        ##add callbacks for back button
        edje_obj.signal_callback_add("close_details", "*",
                                     detail_layout.delete)
        edje_obj.signal_callback_add("close_details", "*",
                                     self.window.restore_orig)

        if item[0].direction == 'in' and item[0].status == 'unread':
            item[0].read()
            self.item_list._redraw_view()

    def adv_msg(self, emission, signal, source, item=None, layout=None):
        service = Service.get('MessageCreate')
        service.write(self.window, signal, item[0].peer, item[0].text,
                      layout).start()

    def delete_msg(self, emission, signal, source, item, layout):
        logger.info("delete message called")
        message = item
        try:
            messages_service = Service.get('Messages')
            messages_service.remove(message).start()
        except Exception, ex:
            logger.exception("Got error %s", ex)
        else:
Ejemplo n.º 5
0
    def run(self, parent=None, standalone=False):
        ##to be standardized
        self.edje_file = join(dirname(__file__), 'inout.edj')

        self.gsm_service = Service.get('GSM')
        self.callLogs = self.gsm_service.logs

        ##get message service and list of all messages
        self.contact_service = Service.get('Contacts')
        self.contacts = self.contact_service.contacts

        ##sort contact by date
        def comp2(m1, m2):
            return cmp(str(m1.name).lower(), str(m2.name).lower())

        self.contacts.sort(comp2)

        ##generate app-window
        self.window = ElementaryListWindow(self.edje_file, "main", "list",
                                           None, None, True)
        self.edje_obj = self.window.main_layout

        def comp(m1, m2):
            return cmp(m2.timestamp, m1.timestamp)

        #  We use the Call object to as items in the call log
        self.list_label = [('label', 'number'), ('subtext', 'description')]
        self.item_list = ElementaryList(self.callLogs, self.window,
                                        self.edje_file, "item",
                                        self.list_label, comp)

        self.edje_obj.add_callback("to_edit_mode", "*", self.to_edit_mode)
        self.edje_obj.add_callback("to_default_mode", "*",
                                   self.to_default_mode)

        ## close the Tele app, with the back button (signal, source, method)
        self.edje_obj.add_callback("back", "edje", self.signal)

        self.oid = self.contacts.connect('inserted',
                                         self.item_list._redraw_view)

        if len(self.callLogs) == 0:
            self.edje_obj.edje.signal_emit("ListEmpty", "python")
            self.oid2 = self.callLogs.connect('inserted', self.restore_edit)

        self.item_list.add_callback("new_call", "*", self.create_call)
        self.item_list.add_callback("new_msg", "*", self.create_msg)
        self.item_list.add_callback("save_number", "*", self.create_contact)

        self.item_list.elm_window = self.window.window

        parent.emit("unblock")

        i, args = yield WaitFirst(Wait(self.window, 'back'),
                                  Wait(self.window, 'delete_request'),
                                  Wait(self.window.window, 'closing'))

        for i in self.callLogs:
            i.missed = False
            i.check()

        self.callLogs.emit("modified")

        if i != 2:
            self.contacts.disconnect(self.oid)
            self.window.delete()
            del self.item_list
Ejemplo n.º 6
0
class InOutCallLog(Application):
    name = 'CallLog'
    icon = 'icon.png'
    category = 'launcher'  # So that we see the app in the launcher
    launcher_info = ['GSM', "missed_call_count"]

    def run(self, parent=None, standalone=False):
        ##to be standardized
        self.edje_file = join(dirname(__file__), 'inout.edj')

        self.gsm_service = Service.get('GSM')
        self.callLogs = self.gsm_service.logs

        ##get message service and list of all messages
        self.contact_service = Service.get('Contacts')
        self.contacts = self.contact_service.contacts

        ##sort contact by date
        def comp2(m1, m2):
            return cmp(str(m1.name).lower(), str(m2.name).lower())

        self.contacts.sort(comp2)

        ##generate app-window
        self.window = ElementaryListWindow(self.edje_file, "main", "list",
                                           None, None, True)
        self.edje_obj = self.window.main_layout

        def comp(m1, m2):
            return cmp(m2.timestamp, m1.timestamp)

        #  We use the Call object to as items in the call log
        self.list_label = [('label', 'number'), ('subtext', 'description')]
        self.item_list = ElementaryList(self.callLogs, self.window,
                                        self.edje_file, "item",
                                        self.list_label, comp)

        self.edje_obj.add_callback("to_edit_mode", "*", self.to_edit_mode)
        self.edje_obj.add_callback("to_default_mode", "*",
                                   self.to_default_mode)

        ## close the Tele app, with the back button (signal, source, method)
        self.edje_obj.add_callback("back", "edje", self.signal)

        self.oid = self.contacts.connect('inserted',
                                         self.item_list._redraw_view)

        if len(self.callLogs) == 0:
            self.edje_obj.edje.signal_emit("ListEmpty", "python")
            self.oid2 = self.callLogs.connect('inserted', self.restore_edit)

        self.item_list.add_callback("new_call", "*", self.create_call)
        self.item_list.add_callback("new_msg", "*", self.create_msg)
        self.item_list.add_callback("save_number", "*", self.create_contact)

        self.item_list.elm_window = self.window.window

        parent.emit("unblock")

        i, args = yield WaitFirst(Wait(self.window, 'back'),
                                  Wait(self.window, 'delete_request'),
                                  Wait(self.window.window, 'closing'))

        for i in self.callLogs:
            i.missed = False
            i.check()

        self.callLogs.emit("modified")

        if i != 2:
            self.contacts.disconnect(self.oid)
            self.window.delete()
            del self.item_list

    def signal(self, emission, signal, source):
        """ Callback function. It invokes, when the "back" button clicked."""
        logger.info("i-o2.py:signal() emmision: %s, signal: %s, source: %s",
                    str(emission), str(signal), str(source))
        self.window.emit('back')

    def restore_edit(self, *args, **kargs):
        self.edje_obj.edje.signal_emit("ListFilled", "python")

    def to_edit_mode(self, emission, source, param):
        for item in self.item_list.items:
            item[1].signal_emit("to_edit_mode", "*")

    def to_default_mode(self, emission, source, param):

        deleting = []

        for i in range(len(self.item_list.items)):
            if self.item_list.items[i][1].part_text_get("delete-flag") == "1":
                deleting.append(self.item_list.items[i][0])
            else:
                logger.debug(
                    'to_default_mode %s',
                    self.item_list.items[i][1].part_text_get("delete-flag"))

        deleting.reverse()

        self.item_list.model.remove_group(deleting)

        for item in self.item_list.items:
            item[1].signal_emit("to_default_mode", "*")

        if len(self.callLogs) == 0:
            self.edje_obj.edje.signal_emit("ListEmpty", "python")

    def create_call(self, emission, source, param, callLog):
        number = callLog[0].number.value
        name = unicode(callLog[0])
        caller_service = Service.get('TeleCaller2')
        caller_service.call("window", number, name).start()

    def create_msg(self, emission, source, param, callLog):
        service = Service.get('MessageCreate')
        service.write(self.window, 'reply', callLog[0].number).start()

    def create_contact(self, emission, source, param, callLog):
        service = Service.get('ContactCreate')
        service.create(self.window, callLog[0].number).start()

    def printer(self, *args, **kargs):
        logger.debug('printer %s %s', args, kargs)
Ejemplo n.º 7
0
class Settings(Application):

    ##this name is used by paroli to find your application
    name = 'Settings'

    ##the icon attribute is currently unused
    icon = 'icon.png'

    ## the category is used by paroli when applications are to be grouped.
    ## Set it to 'launcher' if you want your application to appear
    ## on the launcher screen
    category = 'launcher'  # was 'settings'

    ##the run method of the app is called when the app is started
    def run(self, parent=None, standalone=False):
        ##the edje file
        self.edje_file = join(dirname(__file__), 'settings.edj')

        ##import a parameter which tells the app about paroli's window's size
        self.standalone = config.getboolean('standalone', 'activated', False)

        ##generate app-window
        self.window = ElementaryListWindow(self.edje_file, "main", "list",
                                           None, None, True)
        self.edje_obj = self.window.main_layout

        self.groups = List()

        for i in Setting.groups:
            t = Text(i)
            self.groups.append(Text(i))

        def comp(m1, m2):
            return cmp(str(m2).lower(), str(m1).lower())

        self.list_label = [('title', 'value')]
        self.item_list = ElementaryList(self.groups, self.window,
                                        self.edje_file, "item",
                                        self.list_label, comp)

        self.item_list.add_callback("*", "sublist", self._show_sublist)

        ## close the Tele app, with the back button (signal, source, method)
        self.edje_obj.add_callback("back", "edje", self.signal)

        parent.emit("unblock")

        i, args = yield WaitFirst(Wait(self.window, 'delete_request'),
                                  Wait(self.window, 'back'),
                                  Wait(self.window.window, 'closing'))
        ##we write a logger message that the application is closing
        logger.info('Settings closing')

        ##we delete the window object (the class would also delete all children object)
        if i != 2:
            self.item_list._remove_cb()
            self.window.delete()

    def signal(self, emission, signal, source):
        """ Callback function. It invokes, when the "back" button clicked."""
        logger.info(
            "settings.py:signal() emmision: %s, signal: %s, source: %s",
            str(emission), str(signal), str(source))
        self.window.emit('back')

    def _show_sublist(self, emission, signal, source, group):
        logger.info("showing sublist from group %s; source: %s, signal: %s",
                    str(group[0]), str(source), str(signal))
        SettingsSublist(self.window, self.edje_file, str(group[0]),
                        self.edje_obj).start()
Ejemplo n.º 8
0
    def run(self,
            setting,
            parent,
            model,
            list_label,
            layout,
            group="item",
            save_button=False,
            *args,
            **kargs):
        layout.elm_obj.hide()

        self.parent = parent
        self.setting = setting

        self.edje_file = join(dirname(__file__), 'settings.edj')

        self.window = ElementaryListSubwindow(parent, self.edje_file, "main",
                                              "list")

        self.edje_obj = self.window.main_layout

        self.edje_obj.edje.signal_emit("sublist_mode", "*")

        if save_button:
            self.edje_obj.edje.signal_emit("save_button", "*")

        self.ItemList = model
        self.cb_list = List()

        #for i in Setting.groups[group]:
        #o = Setting.groups[group][i]
        #self.settings.append(o)

        def comp(m1, m2):
            if m1.name == None or m1.name == "":
                return cmp(m2, m1)
            else:
                return cmp(m2.name, m1.name)

        item_group = group or "item"

        self.list_label = list_label
        self.item_list = ElementaryList(self.ItemList, self.window,
                                        self.edje_file, item_group, list_label,
                                        comp)

        for i in self.ItemList:
            if hasattr(i, 'connect'):
                oid = i.connect('updated', self.item_list._redraw_view)
                self.cb_list.append([i, oid])

        self.item_list.add_callback("*", "sublist", self.action)
        self.item_list.add_callback("pressed", "decrease", self.decrease)
        self.item_list.add_callback("pressed", "increase", self.increase)
        self.edje_obj.edje.signal_callback_add("pressed", "save", self.save)

        yield WaitFirst(Wait(self.window, 'delete_request'),
                        Wait(self.edje_obj, 'back'),
                        Wait(self.ItemList, 'save'))

        for i in self.cb_list:
            i[0].disconnect(i[1])

        self.edje_obj.elm_obj.visible_set(False)
        self.edje_obj.delete()
        self.item_list._remove_cb()
        layout.elm_obj.show()
Ejemplo n.º 9
0
class ListSettingApp(Application):

    name = 'ListSetting'

    def run(self,
            setting,
            parent,
            model,
            list_label,
            layout,
            group="item",
            save_button=False,
            *args,
            **kargs):
        layout.elm_obj.hide()

        self.parent = parent
        self.setting = setting

        self.edje_file = join(dirname(__file__), 'settings.edj')

        self.window = ElementaryListSubwindow(parent, self.edje_file, "main",
                                              "list")

        self.edje_obj = self.window.main_layout

        self.edje_obj.edje.signal_emit("sublist_mode", "*")

        if save_button:
            self.edje_obj.edje.signal_emit("save_button", "*")

        self.ItemList = model
        self.cb_list = List()

        #for i in Setting.groups[group]:
        #o = Setting.groups[group][i]
        #self.settings.append(o)

        def comp(m1, m2):
            if m1.name == None or m1.name == "":
                return cmp(m2, m1)
            else:
                return cmp(m2.name, m1.name)

        item_group = group or "item"

        self.list_label = list_label
        self.item_list = ElementaryList(self.ItemList, self.window,
                                        self.edje_file, item_group, list_label,
                                        comp)

        for i in self.ItemList:
            if hasattr(i, 'connect'):
                oid = i.connect('updated', self.item_list._redraw_view)
                self.cb_list.append([i, oid])

        self.item_list.add_callback("*", "sublist", self.action)
        self.item_list.add_callback("pressed", "decrease", self.decrease)
        self.item_list.add_callback("pressed", "increase", self.increase)
        self.edje_obj.edje.signal_callback_add("pressed", "save", self.save)

        yield WaitFirst(Wait(self.window, 'delete_request'),
                        Wait(self.edje_obj, 'back'),
                        Wait(self.ItemList, 'save'))

        for i in self.cb_list:
            i[0].disconnect(i[1])

        self.edje_obj.elm_obj.visible_set(False)
        self.edje_obj.delete()
        self.item_list._remove_cb()
        layout.elm_obj.show()

    def action(self, emission, signal, source, item):
        item[0].action(item, self.parent, self.edje_obj)
        logger.info("action called")

    def EnableSaveButton(self, *args, **kargs):
        self.edje_obj.edje.signal_emit("EnableSave", "*")

    def save(self, *args, **kargs):
        logger.info("save triggered")
        self.ItemList.emit('save')

    def increase(self, emission, signal, source, item):
        if item[0].val_type == "int":
            current = item[0].val_range.index(
                int(emission.part_text_get('value')))
        else:
            current = item[0].val_range.index(emission.part_text_get('value'))
        if len(item[0].val_range) - 1 > current:
            new = item[0].val_range[current + 1]
        else:
            new = item[0].val_range[0]

        item[0].value = new

        emission.part_text_set('value', str(new))

    def decrease(self, emission, signal, source, item):

        if item[0].val_type == "int":
            current = item[0].val_range.index(
                int(emission.part_text_get('value')))
        else:
            current = item[0].val_range.index(emission.part_text_get('value'))
        if current < 0:
            new = item[0].val_range[len(item[0].val_range) - 1]
        else:
            new = item[0].val_range[current - 1]

        item[0].value = new

        emission.part_text_set('value', str(new))