From f3f6715d462e2deef524dca920631c5d52310a48 Mon Sep 17 00:00:00 2001 From: Navjot Date: Thu, 3 Oct 2019 21:57:54 +0530 Subject: [PATCH 1/6] worked on implementing sql query for sent and inbox on the bases of unique id --- .gitignore | 3 +- src/bitmessagekivy/mpybit.py | 86 +++++++++++++++++------------------- src/state.py | 2 +- 3 files changed, 44 insertions(+), 47 deletions(-) diff --git a/.gitignore b/.gitignore index 90a31335..0ddedf04 100644 --- a/.gitignore +++ b/.gitignore @@ -19,4 +19,5 @@ docs/_*/* docs/autodoc/ pyan/ .buildozer/ -bin/ \ No newline at end of file +bin/ +src/images/default_identicon/ \ No newline at end of file diff --git a/src/bitmessagekivy/mpybit.py b/src/bitmessagekivy/mpybit.py index 7f3da132..7fd1b661 100644 --- a/src/bitmessagekivy/mpybit.py +++ b/src/bitmessagekivy/mpybit.py @@ -119,7 +119,7 @@ class Inbox(Screen): 'secondary_text': mail[5][:50] + '........' if len( mail[5]) >= 50 else ( mail[5] + ',' + mail[3].replace('\n', ''))[0:50] + '........', - 'receivedTime': mail[6]}) + 'msgid': mail[1]}) for item in data: meny = TwoLineAvatarIconListItem( text=item['text'], @@ -130,7 +130,7 @@ class Inbox(Screen): source='./images/text_images/{}.png'.format( avatarImageFirstLetter(item['secondary_text'].strip())))) meny.bind(on_press=partial( - self.inbox_detail, item['receivedTime'])) + self.inbox_detail, item['msgid'])) carousel = Carousel(direction='right') carousel.height = meny.height carousel.size_hint_y = None @@ -141,13 +141,13 @@ class Inbox(Screen): del_btn.background_normal = '' del_btn.background_color = (1, 0, 0, 1) del_btn.bind(on_press=partial( - self.delete, item['receivedTime'])) + self.delete, item['msgid'])) carousel.add_widget(del_btn) carousel.add_widget(meny) ach_btn = Button(text='Achieve') ach_btn.background_color = (0, 1, 0, 1) ach_btn.bind(on_press=partial( - self.archive, item['receivedTime'])) + self.archive, item['msgid'])) carousel.add_widget(ach_btn) carousel.index = 1 self.ids.ml.add_widget(carousel) @@ -163,10 +163,10 @@ class Inbox(Screen): valign='top') self.ids.ml.add_widget(content) - def inbox_detail(self, receivedTime, *args): + def inbox_detail(self, msg_id, *args): """Load inbox page details.""" state.detailPageType = 'inbox' - state.sentMailTime = receivedTime + state.mail_id = msg_id if self.manager: src_mng_obj = self.manager else: @@ -178,7 +178,7 @@ class Inbox(Screen): def delete(self, data_index, instance, *args): """Delete inbox mail from inbox listing.""" sqlExecute( - "UPDATE inbox SET folder = 'trash' WHERE received = {};".format( + "UPDATE inbox SET folder = 'trash' WHERE msgid = ?;",str( data_index)) try: msg_count_objs = \ @@ -207,7 +207,7 @@ class Inbox(Screen): def archive(self, data_index, instance, *args): """Archive inbox mail from inbox listing.""" sqlExecute( - "UPDATE inbox SET folder = 'trash' WHERE received = {};".format( + "UPDATE inbox SET folder = 'trash' WHERE msgid = ?;",str( data_index)) self.ids.ml.remove_widget(instance.parent.parent) self.update_trash() @@ -465,15 +465,15 @@ class DropDownWidget(BoxLayout): if status == 'success': if state.detailPageType == 'draft' and state.send_draft_mail: sqlExecute( - "UPDATE sent SET toaddress = '{0}' \ - , fromaddress ='{1}' , subject = '{2}'\ - , message = '{3}', folder = 'sent'\ - WHERE lastactiontime = '{4}';".format( + "UPDATE sent SET toaddress = ? \ + , fromaddress = ? , subject = ?\ + , message = ?, folder = 'sent'\ + WHERE ackdata = ?;", toAddress, fromAddress, subject, message, - state.send_draft_mail)) + str(state.send_draft_mail)) self.parent.parent.screens[15].clear_widgets() self.parent.parent.screens[15].add_widget(Draft()) state.detailPageType = '' @@ -690,12 +690,12 @@ class Random(Screen): label, 1, "", eighteenByteRipe, nonceTrialsPerByte, payloadLengthExtraBytes)) - self.manager.current = 'myaddress' self.ids.label.text = '' self.parent.parent.parent.parent.ids.toolbar.opacity = 1 self.parent.parent.parent.parent.ids.toolbar.disabled = False self.parent.parent.parent.parent.ids.sc10.ids.ml.clear_widgets() self.parent.parent.parent.parent.ids.sc10.init_ui() + self.manager.current = 'myaddress' toast('New address created') @@ -752,7 +752,7 @@ class Sent(Screen): 'secondary_text': mail[2][:50] + '........' if len( mail[2]) >= 50 else ( mail[2] + ',' + mail[3].replace('\n', ''))[0:50] + '........', - 'lastactiontime': mail[6]}) + 'ackdata': mail[5]}) for item in data: meny = TwoLineAvatarIconListItem( text=item['text'], @@ -763,7 +763,7 @@ class Sent(Screen): source='./images/text_images/{}.png'.format( avatarImageFirstLetter(item['secondary_text'].strip())))) meny.bind(on_press=partial( - self.sent_detail, item['lastactiontime'])) + self.sent_detail, item['ackdata'])) carousel = Carousel(direction='right') carousel.height = meny.height carousel.size_hint_y = None @@ -774,13 +774,13 @@ class Sent(Screen): del_btn.background_normal = '' del_btn.background_color = (1, 0, 0, 1) del_btn.bind(on_press=partial( - self.delete, item['lastactiontime'])) + self.delete, item['ackdata'])) carousel.add_widget(del_btn) carousel.add_widget(meny) ach_btn = Button(text='Achieve') ach_btn.background_color = (0, 1, 0, 1) ach_btn.bind(on_press=partial( - self.archive, item['lastactiontime'])) + self.archive, item['ackdata'])) carousel.add_widget(ach_btn) carousel.index = 1 self.ids.ml.add_widget(carousel) @@ -796,10 +796,10 @@ class Sent(Screen): valign='top') self.ids.ml.add_widget(content) - def sent_detail(self, lastsenttime, *args): + def sent_detail(self, ackdata, *args): """Load sent mail details.""" state.detailPageType = 'sent' - state.sentMailTime = lastsenttime + state.mail_id = ackdata if self.manager: src_mng_obj = self.manager else: @@ -828,7 +828,7 @@ class Sent(Screen): state.all_count = str(int(state.all_count) - 1) sqlExecute( "UPDATE sent SET folder = 'trash' \ - WHERE lastactiontime = {};".format(data_index)) + WHERE ackdata = ?;",str(data_index)) self.ids.ml.remove_widget(instance.parent.parent) toast('Deleted') self.update_trash() @@ -837,7 +837,7 @@ class Sent(Screen): """Archive sent mail from sent mail listing.""" sqlExecute( "UPDATE sent SET folder = 'trash' \ - WHERE lastactiontime = {};".format(data_index)) + WHERE ackdata = ?;",str(data_index)) self.ids.ml.remove_widget(instance.parent.parent) self.update_trash() @@ -1422,8 +1422,7 @@ class MailDetail(Screen): if state.detailPageType == 'sent' or state.detailPageType == 'draft': data = sqlQuery( "select toaddress, fromaddress, subject, message, status, \ - ackdata from sent where lastactiontime = {};".format( - state.sentMailTime)) + ackdata from sent where ackdata = ?;", state.mail_id) state.status = self state.ackdata = data[0][5] self.assign_mail_details(data) @@ -1431,7 +1430,7 @@ class MailDetail(Screen): elif state.detailPageType == 'inbox': data = sqlQuery( "select toaddress, fromaddress, subject, message from inbox \ - where received = {};".format(state.sentMailTime)) + where msgid = ?;",str(state.mail_id)) self.assign_mail_details(data) state.kivyapp.set_mail_detail_header() @@ -1455,7 +1454,7 @@ class MailDetail(Screen): if state.detailPageType == 'sent': sqlExecute( "UPDATE sent SET folder = 'trash' WHERE \ - lastactiontime = {};".format(state.sentMailTime)) + ackdata = ?;", str(state.mail_id)) msg_count_objs.send_cnt.badge_text = str(int(state.sent_count) - 1) state.sent_count = str(int(state.sent_count) - 1) self.parent.screens[3].ids.ml.clear_widgets() @@ -1463,15 +1462,12 @@ class MailDetail(Screen): elif state.detailPageType == 'inbox': sqlExecute( "UPDATE inbox SET folder = 'trash' WHERE \ - received = {};".format(state.sentMailTime)) - # msg_count_objs.inbox_cnt.badge_text = str( - # int(state.inbox_count) - 1) - # state.inbox_count = str(int(state.inbox_count) - 1) + msgid = ?;",str(state.mail_id)) self.parent.screens[0].ids.ml.clear_widgets() self.parent.screens[0].loadMessagelist(state.association) elif state.detailPageType == 'draft': - sqlExecute("DELETE FROM sent WHERE lastactiontime = '{}';".format( - state.sentMailTime)) + sqlExecute("DELETE FROM sent WHERE ackdata = ?;",str( + state.mail_id)) msg_count_objs.draft_cnt.badge_text = str(int(state.draft_count) - 1) state.draft_count = str(int(state.draft_count) - 1) self.parent.screens[15].clear_widgets() @@ -1494,7 +1490,7 @@ class MailDetail(Screen): """Method used for replying inbox messages.""" data = sqlQuery( "select toaddress, fromaddress, subject, message from inbox where \ - received = {};".format(state.sentMailTime)) + msgid = ?;",str(state.mail_id)) composer_obj = self.parent.screens[2].children[0].ids composer_obj.ti.text = data[0][0] composer_obj.btn.text = data[0][0] @@ -1511,7 +1507,7 @@ class MailDetail(Screen): def write_msg(self, navApp): """Method used to write on draft mail.""" - state.send_draft_mail = state.sentMailTime + state.send_draft_mail = state.mail_id composer_ids = \ self.parent.parent.parent.parent.ids.sc3.children[0].ids composer_ids.ti.text = state.write_msg['from_addr'] @@ -1662,7 +1658,7 @@ class Draft(Screen): mail[2]) > 10 else mail[2] + '\n' + " " + ( third_text[:25] + '...!') if len( third_text) > 25 else third_text, - 'lastactiontime': mail[6]}) + 'ackdata': mail[5]}) for item in self.data: meny = TwoLineAvatarIconListItem( text='Draft', @@ -1672,7 +1668,7 @@ class Draft(Screen): meny.add_widget(AvatarSampleWidget( source='./images/avatar.png')) meny.bind(on_press=partial( - self.draft_detail, item['lastactiontime'])) + self.draft_detail, item['ackdata'])) carousel = Carousel(direction='right') carousel.height = meny.height carousel.size_hint_y = None @@ -1683,7 +1679,7 @@ class Draft(Screen): del_btn.background_normal = '' del_btn.background_color = (1, 0, 0, 1) del_btn.bind(on_press=partial( - self.delete_draft, item['lastactiontime'])) + self.delete_draft, item['ackdata'])) carousel.add_widget(del_btn) carousel.add_widget(meny) carousel.index = 1 @@ -1699,10 +1695,10 @@ class Draft(Screen): valign='top') self.ids.ml.add_widget(content) - def draft_detail(self, lastsenttime, *args): + def draft_detail(self, ackdata, *args): """Method used to show draft Details.""" state.detailPageType = 'draft' - state.sentMailTime = lastsenttime + state.mail_id = ackdata if self.manager: src_mng_obj = self.manager else: @@ -1713,7 +1709,7 @@ class Draft(Screen): def delete_draft(self, data_index, instance, *args): """Method used to delete draft message permanently.""" - sqlExecute("DELETE FROM sent WHERE lastactiontime = '{}';".format( + sqlExecute("DELETE FROM sent WHERE ackdata = ?;",str( data_index)) try: msg_count_objs = \ @@ -1815,11 +1811,11 @@ class Allmails(Screen): def loadMessagelist(self, account, where="", what=""): """Load Inbox, Sent anf Draft list of messages.""" inbox = sqlQuery( - "SELECT toaddress, fromaddress, subject, message, folder, received from\ + "SELECT toaddress, fromaddress, subject, message, folder, msgid from\ inbox WHERE folder = 'inbox' and toaddress = '{}';".format( account)) sent_and_draft = sqlQuery( - "SELECT toaddress, fromaddress, subject, message, folder, lastactiontime from sent \ + "SELECT toaddress, fromaddress, subject, message, folder, ackdata from sent \ WHERE folder = 'sent' and fromaddress = '{}';".format( account)) @@ -1870,7 +1866,7 @@ class Allmails(Screen): """Load sent and inbox mail details.""" state.detailPageType = folder state.is_allmail = True - state.sentMailTime = unique_id + state.mail_id = unique_id if self.manager: src_mng_obj = self.manager else: @@ -1883,11 +1879,11 @@ class Allmails(Screen): """Delete inbox mail from all mail listing listing.""" if folder == 'inbox': sqlExecute( - "UPDATE inbox SET folder = 'trash' WHERE received = {};".format( + "UPDATE inbox SET folder = 'trash' WHERE msgid = ?;",str( unique_id)) else: sqlExecute( - "UPDATE sent SET folder = 'trash' WHERE lastactiontime = {};".format( + "UPDATE sent SET folder = 'trash' WHERE ackdata = ?;",str( unique_id)) self.ids.ml.remove_widget(instance.parent.parent) try: diff --git a/src/state.py b/src/state.py index 07cb687a..4baf5614 100644 --- a/src/state.py +++ b/src/state.py @@ -67,7 +67,7 @@ kivyapp = None navinstance = None -sentMailTime = 0 +mail_id = 0 myAddressObj = None From a46c81ad9b13aa716037abf4b607ce3af04f7b7f Mon Sep 17 00:00:00 2001 From: lakshyacis Date: Fri, 4 Oct 2019 19:24:58 +0530 Subject: [PATCH 2/6] mpybit flake and pylint fix --- src/bitmessagekivy/mpybit.py | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/src/bitmessagekivy/mpybit.py b/src/bitmessagekivy/mpybit.py index 7fd1b661..39005727 100644 --- a/src/bitmessagekivy/mpybit.py +++ b/src/bitmessagekivy/mpybit.py @@ -178,7 +178,7 @@ class Inbox(Screen): def delete(self, data_index, instance, *args): """Delete inbox mail from inbox listing.""" sqlExecute( - "UPDATE inbox SET folder = 'trash' WHERE msgid = ?;",str( + "UPDATE inbox SET folder = 'trash' WHERE msgid = ?;", str( data_index)) try: msg_count_objs = \ @@ -207,7 +207,7 @@ class Inbox(Screen): def archive(self, data_index, instance, *args): """Archive inbox mail from inbox listing.""" sqlExecute( - "UPDATE inbox SET folder = 'trash' WHERE msgid = ?;",str( + "UPDATE inbox SET folder = 'trash' WHERE msgid = ?;", str( data_index)) self.ids.ml.remove_widget(instance.parent.parent) self.update_trash() @@ -469,11 +469,11 @@ class DropDownWidget(BoxLayout): , fromaddress = ? , subject = ?\ , message = ?, folder = 'sent'\ WHERE ackdata = ?;", - toAddress, - fromAddress, - subject, - message, - str(state.send_draft_mail)) + toAddress, + fromAddress, + subject, + message, + str(state.send_draft_mail)) self.parent.parent.screens[15].clear_widgets() self.parent.parent.screens[15].add_widget(Draft()) state.detailPageType = '' @@ -828,7 +828,7 @@ class Sent(Screen): state.all_count = str(int(state.all_count) - 1) sqlExecute( "UPDATE sent SET folder = 'trash' \ - WHERE ackdata = ?;",str(data_index)) + WHERE ackdata = ?;", str(data_index)) self.ids.ml.remove_widget(instance.parent.parent) toast('Deleted') self.update_trash() @@ -837,7 +837,7 @@ class Sent(Screen): """Archive sent mail from sent mail listing.""" sqlExecute( "UPDATE sent SET folder = 'trash' \ - WHERE ackdata = ?;",str(data_index)) + WHERE ackdata = ?;", str(data_index)) self.ids.ml.remove_widget(instance.parent.parent) self.update_trash() @@ -1430,7 +1430,7 @@ class MailDetail(Screen): elif state.detailPageType == 'inbox': data = sqlQuery( "select toaddress, fromaddress, subject, message from inbox \ - where msgid = ?;",str(state.mail_id)) + where msgid = ?;", str(state.mail_id)) self.assign_mail_details(data) state.kivyapp.set_mail_detail_header() @@ -1462,11 +1462,11 @@ class MailDetail(Screen): elif state.detailPageType == 'inbox': sqlExecute( "UPDATE inbox SET folder = 'trash' WHERE \ - msgid = ?;",str(state.mail_id)) + msgid = ?;", str(state.mail_id)) self.parent.screens[0].ids.ml.clear_widgets() self.parent.screens[0].loadMessagelist(state.association) elif state.detailPageType == 'draft': - sqlExecute("DELETE FROM sent WHERE ackdata = ?;",str( + sqlExecute("DELETE FROM sent WHERE ackdata = ?;", str( state.mail_id)) msg_count_objs.draft_cnt.badge_text = str(int(state.draft_count) - 1) state.draft_count = str(int(state.draft_count) - 1) @@ -1490,7 +1490,7 @@ class MailDetail(Screen): """Method used for replying inbox messages.""" data = sqlQuery( "select toaddress, fromaddress, subject, message from inbox where \ - msgid = ?;",str(state.mail_id)) + msgid = ?;", str(state.mail_id)) composer_obj = self.parent.screens[2].children[0].ids composer_obj.ti.text = data[0][0] composer_obj.btn.text = data[0][0] @@ -1709,7 +1709,7 @@ class Draft(Screen): def delete_draft(self, data_index, instance, *args): """Method used to delete draft message permanently.""" - sqlExecute("DELETE FROM sent WHERE ackdata = ?;",str( + sqlExecute("DELETE FROM sent WHERE ackdata = ?;", str( data_index)) try: msg_count_objs = \ @@ -1724,7 +1724,6 @@ class Draft(Screen): self.ids.ml.remove_widget(instance.parent.parent) toast('Deleted') - # pylint: disable=unused-variable @staticmethod def draft_msg(src_object): """Method used for saving draft mails.""" @@ -1879,11 +1878,11 @@ class Allmails(Screen): """Delete inbox mail from all mail listing listing.""" if folder == 'inbox': sqlExecute( - "UPDATE inbox SET folder = 'trash' WHERE msgid = ?;",str( + "UPDATE inbox SET folder = 'trash' WHERE msgid = ?;", str( unique_id)) else: sqlExecute( - "UPDATE sent SET folder = 'trash' WHERE ackdata = ?;",str( + "UPDATE sent SET folder = 'trash' WHERE ackdata = ?;", str( unique_id)) self.ids.ml.remove_widget(instance.parent.parent) try: From 7298726ab7e029197992f77dd849577a4c58fa8c Mon Sep 17 00:00:00 2001 From: Navjot Date: Wed, 9 Oct 2019 22:04:42 +0530 Subject: [PATCH 3/6] worked on android devices toast issue --- src/bitmessagekivy/main.kv | 3 +-- src/bitmessagekivy/mpybit.py | 32 +++++++++++++--------------- src/bitmessagekivy/uikivysignaler.py | 5 +++-- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/bitmessagekivy/main.kv b/src/bitmessagekivy/main.kv index be6f76e9..7e246b58 100644 --- a/src/bitmessagekivy/main.kv +++ b/src/bitmessagekivy/main.kv @@ -55,8 +55,7 @@ : drawer_logo: app.address_identicon() NavigationDrawerDivider: - - NavigationDrawerTwoLineListItem: + NavigationDrawerSubheader: text: "Accounts" NavigationDrawerIconButton: CustomSpinner: diff --git a/src/bitmessagekivy/mpybit.py b/src/bitmessagekivy/mpybit.py index 39005727..3e21e761 100644 --- a/src/bitmessagekivy/mpybit.py +++ b/src/bitmessagekivy/mpybit.py @@ -61,9 +61,8 @@ import identiconGeneration def toast(text): """Method will display the toast message.""" - if platform == 'linux': - from kivymd.toast.kivytoast import toast # pylint: disable=redefined-outer-name - toast(text) + from kivymd.toast.kivytoast import toast # pylint: disable=redefined-outer-name + toast(text) return @@ -379,8 +378,9 @@ class AddressBook(Screen): @staticmethod def refreshs(*args): """Refresh the Widget.""" - state.navinstance.ids.sc11.ids.ml.clear_widgets() - state.navinstance.ids.sc11.loadAddresslist(None, 'All', '') + # state.navinstance.ids.sc11.ids.ml.clear_widgets() + # state.navinstance.ids.sc11.loadAddresslist(None, 'All', '') + pass @staticmethod def addBook_detail(address, label, *args): @@ -1094,7 +1094,7 @@ class NavigateApp(App): # pylint: disable=too-many-public-methods """Getting default image on address""" if BMConfigParser().addresses(): return './images/default_identicon/{}.png'.format(BMConfigParser().addresses()[0]) - return '' + return './images/no_identicons.png' @staticmethod def addressexist(): @@ -1299,10 +1299,12 @@ class GrashofPopup(Popup): stored_address = [addr[1] for addr in kivy_helper_search.search_sql( folder="addressbook")] if label and address and address not in stored_address: - state.navinstance = self.parent.children[1] + # state.navinstance = self.parent.children[1] queues.UISignalQueue.put(('rerenderAddressBook', '')) self.dismiss() sqlExecute("INSERT INTO addressbook VALUES(?,?)", label, address) + state.kivyapp.root.ids.sc11.ids.ml.clear_widgets() + state.kivyapp.root.ids.sc11.loadAddresslist(None, 'All', '') self.parent.children[1].ids.scr_mngr.current = 'addressbook' toast('Saved') @@ -1809,16 +1811,12 @@ class Allmails(Screen): def loadMessagelist(self, account, where="", what=""): """Load Inbox, Sent anf Draft list of messages.""" - inbox = sqlQuery( - "SELECT toaddress, fromaddress, subject, message, folder, msgid from\ - inbox WHERE folder = 'inbox' and toaddress = '{}';".format( - account)) - sent_and_draft = sqlQuery( - "SELECT toaddress, fromaddress, subject, message, folder, ackdata from sent \ - WHERE folder = 'sent' and fromaddress = '{}';".format( - account)) - - all_mails = inbox + sent_and_draft + all_mails = sqlQuery( + "SELECT toaddress, fromaddress, subject, message, folder, ackdata As id, DATE(lastactiontime) As actionTime \ + FROM sent \ + UNION \ + SELECT toaddress, fromaddress, subject, message, folder, msgid As id, DATE(received) As actionTime \ + FROM inbox ORDER BY actionTime DESC") if all_mails: state.kivyapp.root.children[2].children[0].ids.allmail_cnt.badge_text = str(len(all_mails)) state.all_count = str(len(all_mails)) diff --git a/src/bitmessagekivy/uikivysignaler.py b/src/bitmessagekivy/uikivysignaler.py index 5681d25d..cb9473e2 100644 --- a/src/bitmessagekivy/uikivysignaler.py +++ b/src/bitmessagekivy/uikivysignaler.py @@ -16,8 +16,9 @@ class UIkivySignaler(Thread): if command == 'writeNewAddressToTable': label, address, streamNumber = data state.kivyapp.variable_1.append(address) - elif command == 'rerenderAddressBook': - state.kivyapp.obj_1.refreshs() + # elif command == 'rerenderAddressBook': + # state.kivyapp.obj_1.refreshs() + # Need to discuss this elif command == 'updateSentItemStatusByAckdata': state.kivyapp.status_dispatching(data) From 1960e7c8a534ba2f4e6933f368cf45644ffed4fc Mon Sep 17 00:00:00 2001 From: Navjot Date: Thu, 10 Oct 2019 21:38:52 +0530 Subject: [PATCH 4/6] resolved all mail query bug or first time address creation slow response issue --- src/bitmessagekivy/main.kv | 37 +----------------------------------- src/bitmessagekivy/mpybit.py | 13 +++++++++---- 2 files changed, 10 insertions(+), 40 deletions(-) diff --git a/src/bitmessagekivy/main.kv b/src/bitmessagekivy/main.kv index 7e246b58..759bd71c 100644 --- a/src/bitmessagekivy/main.kv +++ b/src/bitmessagekivy/main.kv @@ -1,42 +1,18 @@ #:import Toolbar kivymd.toolbar.Toolbar -#:import ThemeManager kivymd.theming.ThemeManager -#:import MDNavigationDrawer kivymd.navigationdrawer.MDNavigationDrawer #:import NavigationLayout kivymd.navigationdrawer.NavigationLayout #:import NavigationDrawerDivider kivymd.navigationdrawer.NavigationDrawerDivider -#:import NavigationDrawerToolbar kivymd.navigationdrawer.NavigationDrawerToolbar #:import NavigationDrawerSubheader kivymd.navigationdrawer.NavigationDrawerSubheader #:import MDCheckbox kivymd.selectioncontrols.MDCheckbox -#:import MDSwitch kivymd.selectioncontrols.MDSwitch #:import MDList kivymd.list.MDList #:import OneLineListItem kivymd.list.OneLineListItem -#:import TwoLineListItem kivymd.list.TwoLineListItem -#:import ThreeLineListItem kivymd.list.ThreeLineListItem -#:import OneLineAvatarListItem kivymd.list.OneLineAvatarListItem -#:import OneLineIconListItem kivymd.list.OneLineIconListItem -#:import OneLineAvatarIconListItem kivymd.list.OneLineAvatarIconListItem #:import MDTextField kivymd.textfields.MDTextField -#:import MDSpinner kivymd.spinner.MDSpinner -#:import MDCard kivymd.card.MDCard -#:import MDSeparator kivymd.card.MDSeparator -#:import MDDropdownMenu kivymd.menu.MDDropdownMenu #:import get_color_from_hex kivy.utils.get_color_from_hex #:import colors kivymd.color_definitions.colors -#:import SmartTile kivymd.grid.SmartTile -#:import MDSlider kivymd.slider.MDSlider #:import MDTabbedPanel kivymd.tabs.MDTabbedPanel #:import MDTab kivymd.tabs.MDTab -#:import MDProgressBar kivymd.progressbar.MDProgressBar -#:import MDAccordion kivymd.accordion.MDAccordion -#:import MDAccordionItem kivymd.accordion.MDAccordionItem -#:import MDAccordionSubItem kivymd.accordion.MDAccordionSubItem -#:import MDThemePicker kivymd.theme_picker.MDThemePicker -#:import MDBottomNavigation kivymd.tabs.MDBottomNavigation -#:import MDBottomNavigationItem kivymd.tabs.MDBottomNavigationItem #:import MDFloatingActionButton kivymd.button.MDFloatingActionButton #:import Factory kivy.factory.Factory -#:import MDTextButton kivymd.button.MDTextButton -#:import FadeTransition kivy.uix.screenmanager.FadeTransition #:import MDScrollViewRefreshLayout kivymd.refreshlayout.MDScrollViewRefreshLayout #:set color_button (0.784, 0.443, 0.216, 1) # brown @@ -142,7 +118,7 @@ on_press: app.refreshScreen(self) NavigationDrawerIconButton: text: "Subscriptions/Payment" - icon:'wallet' + icon:'bell' on_release: app.root.ids.scr_mngr.current = 'payment' on_press: app.refreshScreen(self) NavigationDrawerIconButton: @@ -416,17 +392,6 @@ NavigationLayout: helper_text_mode: "on_error" BoxLayout: spacing:50 - AnchorLayout: - MDRaisedButton: - size_hint: 1, None - height: dp(40) - on_press: root.reset_composer() - MDLabel: - font_style: 'Title' - text: 'reset' - font_size: '13sp' - color: (1,1,1,1) - halign: 'center' : readonly: False diff --git a/src/bitmessagekivy/mpybit.py b/src/bitmessagekivy/mpybit.py index 3e21e761..9640de8c 100644 --- a/src/bitmessagekivy/mpybit.py +++ b/src/bitmessagekivy/mpybit.py @@ -558,6 +558,7 @@ class DropDownWidget(BoxLayout): self.ids.txt_input.text = '' self.ids.subject.text = '' self.ids.body.text = '' + toast("Reset message") def auto_fill_fromaddr(self): """Mehtod used to fill the text automatically From Address.""" @@ -694,6 +695,7 @@ class Random(Screen): self.parent.parent.parent.parent.ids.toolbar.opacity = 1 self.parent.parent.parent.parent.ids.toolbar.disabled = False self.parent.parent.parent.parent.ids.sc10.ids.ml.clear_widgets() + self.manager.current = 'myaddress' self.parent.parent.parent.parent.ids.sc10.init_ui() self.manager.current = 'myaddress' toast('New address created') @@ -1158,6 +1160,7 @@ class NavigateApp(App): # pylint: disable=too-many-public-methods self.root.ids.toolbar.left_action_items = [ ['arrow-left', lambda x: self.back_press()]] self.root.ids.toolbar.right_action_items = [ + ['refresh', lambda x: self.root.ids.sc3.children[0].reset_composer()], ['send', lambda x: self.root.ids.sc3.children[0].send(self)]] def back_press(self): @@ -1167,7 +1170,7 @@ class NavigateApp(App): # pylint: disable=too-many-public-methods self.root.ids.toolbar.left_action_items = \ [['menu', lambda x: self.root.toggle_nav_drawer()]] self.root.ids.scr_mngr.current = 'inbox' \ - if state.in_composer else 'allmails' if state.is_allmail else state.detailPageType + if state.in_composer else 'allmails' if state.is_allmail else state.detailPageType if state.detailPageType else 'inbox' self.root.ids.scr_mngr.transition.direction = 'right' self.root.ids.scr_mngr.transition.bind(on_complete=self.reset) if state.is_allmail or state.detailPageType == 'draft': @@ -1465,6 +1468,8 @@ class MailDetail(Screen): sqlExecute( "UPDATE inbox SET folder = 'trash' WHERE \ msgid = ?;", str(state.mail_id)) + msg_count_objs.inbox_cnt.badge_text = str(int(state.inbox_count) - 1) + state.inbox_count = str(int(state.inbox_count) - 1) self.parent.screens[0].ids.ml.clear_widgets() self.parent.screens[0].loadMessagelist(state.association) elif state.detailPageType == 'draft': @@ -1593,7 +1598,7 @@ class AddbookDetailPopup(Popup): window_obj = self.parent.children[1].ids window_obj.sc3.children[0].ids.txt_input.text = self.address window_obj.sc3.children[0].ids.ti.text = '' - window_obj.sc3.children[0].ids.btn.text = '' + window_obj.sc3.children[0].ids.btn.text = 'Select' window_obj.sc3.children[0].ids.subject.text = '' window_obj.sc3.children[0].ids.body.text = '' window_obj.scr_mngr.current = 'create' @@ -1813,10 +1818,10 @@ class Allmails(Screen): """Load Inbox, Sent anf Draft list of messages.""" all_mails = sqlQuery( "SELECT toaddress, fromaddress, subject, message, folder, ackdata As id, DATE(lastactiontime) As actionTime \ - FROM sent \ + FROM sent WHERE folder = 'sent'\ UNION \ SELECT toaddress, fromaddress, subject, message, folder, msgid As id, DATE(received) As actionTime \ - FROM inbox ORDER BY actionTime DESC") + FROM inbox WHERE folder = 'inbox' ORDER BY actionTime DESC") if all_mails: state.kivyapp.root.children[2].children[0].ids.allmail_cnt.badge_text = str(len(all_mails)) state.all_count = str(len(all_mails)) From 0bcaf8806ea22f1900c8165cc2575643e5963d49 Mon Sep 17 00:00:00 2001 From: lakshyacis Date: Fri, 11 Oct 2019 14:44:32 +0530 Subject: [PATCH 5/6] fixes after pull --- src/bitmessagekivy/mpybit.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/bitmessagekivy/mpybit.py b/src/bitmessagekivy/mpybit.py index 9640de8c..99578149 100644 --- a/src/bitmessagekivy/mpybit.py +++ b/src/bitmessagekivy/mpybit.py @@ -1170,7 +1170,9 @@ class NavigateApp(App): # pylint: disable=too-many-public-methods self.root.ids.toolbar.left_action_items = \ [['menu', lambda x: self.root.toggle_nav_drawer()]] self.root.ids.scr_mngr.current = 'inbox' \ - if state.in_composer else 'allmails' if state.is_allmail else state.detailPageType if state.detailPageType else 'inbox' + if state.in_composer else 'allmails'\ + if state.is_allmail else state.detailPageType\ + if state.detailPageType else 'inbox' self.root.ids.scr_mngr.transition.direction = 'right' self.root.ids.scr_mngr.transition.bind(on_complete=self.reset) if state.is_allmail or state.detailPageType == 'draft': @@ -1817,11 +1819,10 @@ class Allmails(Screen): def loadMessagelist(self, account, where="", what=""): """Load Inbox, Sent anf Draft list of messages.""" all_mails = sqlQuery( - "SELECT toaddress, fromaddress, subject, message, folder, ackdata As id, DATE(lastactiontime) As actionTime \ - FROM sent WHERE folder = 'sent'\ - UNION \ - SELECT toaddress, fromaddress, subject, message, folder, msgid As id, DATE(received) As actionTime \ - FROM inbox WHERE folder = 'inbox' ORDER BY actionTime DESC") + "SELECT toaddress, fromaddress, subject, message, folder, ackdata As id, DATE(lastactiontime)" + " As actionTime FROM sent WHERE folder = 'sent' UNION" + " SELECT toaddress, fromaddress, subject, message, folder, msgid As id, DATE(received) As" + " actionTime FROM inbox WHERE folder = 'inbox' ORDER BY actionTime DESC") if all_mails: state.kivyapp.root.children[2].children[0].ids.allmail_cnt.badge_text = str(len(all_mails)) state.all_count = str(len(all_mails)) From a2a1f3f0b5eff03f32ea17e9d87d0490c79489c4 Mon Sep 17 00:00:00 2001 From: lakshyacis Date: Fri, 11 Oct 2019 16:41:48 +0530 Subject: [PATCH 6/6] Quality issues fixed --- src/paths.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/paths.py b/src/paths.py index b203680a..92c49a85 100644 --- a/src/paths.py +++ b/src/paths.py @@ -46,7 +46,7 @@ def lookupAppdataFolder(): dataFolder = os.path.join( os.environ['HOME'], 'Library/Application Support/', APPNAME - ) + '/' # FIXME: should also be os.path.sep + ) + '/' # ..fixme:: should also be os.path.sep except KeyError: sys.exit( 'Could not find home folder, please report this message' @@ -78,6 +78,7 @@ def lookupAppdataFolder(): def codePath(): """Returns path to the program sources""" + # pylint: disable=protected-access if not frozen: return os.path.dirname(__file__) return ( @@ -85,7 +86,6 @@ def codePath(): if frozen == "macosx_app" else sys._MEIPASS) - def tail(f, lines=20): """Returns last lines in the f file object""" total_lines_wanted = lines @@ -132,4 +132,4 @@ def lastCommit(): ) except (IOError, AttributeError, TypeError): pass - return result \ No newline at end of file + return result