diff --git a/src/bitmessagekivy/baseclass/draft.py b/src/bitmessagekivy/baseclass/draft.py index cf31599e..c1108907 100644 --- a/src/bitmessagekivy/baseclass/draft.py +++ b/src/bitmessagekivy/baseclass/draft.py @@ -1,41 +1,60 @@ -import time +# pylint: disable=unused-argument, import-error, too-many-arguments +# pylint: disable=unnecessary-comprehension, no-member + +""" +draft.py +============== + +Draft screen + +""" -from bitmessagekivy import kivy_helper_search -from bmconfigparser import BMConfigParser -from helper_sql import sqlExecute from functools import partial -from addresses import decodeAddress +import time +import os + + from kivy.clock import Clock from kivy.properties import ( ListProperty, StringProperty ) from kivy.uix.screenmanager import Screen -from kivymd.uix.label import MDLabel + +from bitmessagekivy import kivy_helper_search +from bitmessagekivy.baseclass.common import ( + showLimitedCnt, toast, ThemeClsColor, mdlist_message_content, + SwipeToDeleteItem, ShowTimeHistoy, empty_screen_label +) +from kivy.app import App + +from bitmessagekivy.baseclass.maildetail import MailDetail +from bitmessagekivy.baseclass.draft_widgets import HelperDraft + +from bmconfigparser import BMConfigParser +from addresses import decodeAddress import state +from helper_sql import sqlExecute +import helper_sent -from bitmessagekivy.baseclass.common import ( - showLimitedCnt, toast, ThemeClsColor, - SwipeToDeleteItem, ShowTimeHistoy -) -from bitmessagekivy.baseclass.maildetail import MailDetail - - -class Draft(Screen): +class Draft(Screen, HelperDraft): """Draft screen class for kivy Ui""" data = ListProperty() account = StringProperty() queryreturn = ListProperty() has_refreshed = True + label_str = "yet no message for this account!!!!!!!!!!!!!" def __init__(self, *args, **kwargs): """Method used for storing draft messages""" super(Draft, self).__init__(*args, **kwargs) - if state.association == '': + self.kivy_running_app = App.get_running_app() + self.kivy_state = self.kivy_running_app.kivy_state_obj + if self.kivy_state.association == '': if state.kivyapp.variable_1: - state.association = state.kivyapp.variable_1[0] + self.kivy_state.association = state.kivyapp.variable_1[0] Clock.schedule_once(self.init_ui, 0) def init_ui(self, dt=0): @@ -50,27 +69,28 @@ class Draft(Screen): def loadDraft(self, where="", what=""): """Load draft list for Draft messages""" - self.account = state.association + self.account = self.kivy_state.association xAddress = 'fromaddress' self.ids.tag_label.text = '' self.draftDataQuery(xAddress, where, what) + # state.msg_counter_objs.draft_cnt.children[0].children[0].text = showLimitedCnt(len(self.queryreturn)) # if state.msg_counter_objs: - # state.msg_counter_objs.draft_cnt.children[0].children[0].text = showLimitedCnt(len(self.queryreturn)) + if self.queryreturn: self.ids.tag_label.text = 'Draft' - self.set_draftCnt(state.draft_count) + self.set_draftCnt(self.kivy_state.draft_count) self.set_mdList() self.ids.scroll_y.bind(scroll_y=self.check_scroll_y) else: self.set_draftCnt('0') - content = MDLabel( - font_style='Caption', - theme_text_color='Primary', - text="yet no message for this account!!!!!!!!!!!!!", - halign='center', - size_hint_y=None, - valign='top') - self.ids.ml.add_widget(content) + # content = MDLabel( + # font_style='Caption', + # theme_text_color='Primary', + # text="yet no message for this account!!!!!!!!!!!!!", + # halign='center', + # size_hint_y=None, + # valign='top') + self.ids.ml.add_widget(empty_screen_label(self.label_str)) def draftDataQuery(self, xAddress, where, what, start_indx=0, end_indx=20): """This methosd is for retrieving draft messages""" @@ -78,7 +98,8 @@ class Draft(Screen): xAddress, self.account, "draft", where, what, False, start_indx, end_indx) - def set_draftCnt(self, Count): # pylint: disable=no-self-use + @staticmethod + def set_draftCnt(Count): """This method set the count of draft mails""" draftCnt_obj = state.kivyapp.root.ids.content_drawer.ids.draft_cnt draftCnt_obj.ids.badge_txt.text = showLimitedCnt(int(Count)) @@ -87,15 +108,7 @@ class Draft(Screen): """This method is used to create mdlist""" data = [] total_draft_msg = len(self.ids.ml.children) - for mail in self.queryreturn: - third_text = mail[3].replace('\n', ' ') - data.append({ - 'text': mail[1].strip(), - 'secondary_text': mail[2][:10] + '...........' if len( - mail[2]) > 10 else mail[2] + '\n' + " " + ( - third_text[:25] + '...!') if len( - third_text) > 25 else third_text, - 'ackdata': mail[5], 'senttime': mail[6]}) + mdlist_message_content(self.queryreturn,data=data) for item in data: message_row = SwipeToDeleteItem( text='Draft', @@ -104,7 +117,7 @@ class Draft(Screen): listItem.secondary_text = item["text"] listItem.theme_text_color = "Custom" listItem.text_color = ThemeClsColor - message_row.ids.avater_img.source = state.imageDir + '/avatar.png' + message_row.ids.avater_img.source = os.path.join(state.imageDir, 'avatar.png') listItem.bind(on_release=partial( self.draft_detail, item['ackdata'], message_row)) message_row.ids.time_tag.text = str(ShowTimeHistoy(item['senttime'])) @@ -130,8 +143,8 @@ class Draft(Screen): if instance.state == 'closed': instance.ids.delete_msg.disabled = True if instance.open_progress == 0.0: - state.detailPageType = 'draft' - state.mail_id = ackdata + self.kivy_state.detailPageType = 'draft' + self.kivy_state.mail_id = ackdata if self.manager: src_mng_obj = self.manager else: @@ -144,11 +157,11 @@ class Draft(Screen): def delete_draft(self, data_index, instance, *args): """Delete draft message permanently""" - sqlExecute("DELETE FROM sent WHERE ackdata = ?;", data_index) - if int(state.draft_count) > 0: - state.draft_count = str(int(state.draft_count) - 1) - self.set_draftCnt(state.draft_count) - if int(state.draft_count) <= 0: + helper_sent.delete(data_index) + if int(self.kivy_state.draft_count) > 0: + self.kivy_state.draft_count = str(int(self.kivy_state.draft_count) - 1) + self.set_draftCnt(self.kivy_state.draft_count) + if int(self.kivy_state.draft_count) <= 0: # self.ids.identi_tag.children[0].text = '' self.ids.tag_label.text = '' self.ids.ml.remove_widget(instance.parent.parent) @@ -190,9 +203,10 @@ class Draft(Screen): 'draft', encoding, BMConfigParser().safeGetInt('bitmessagesettings', 'ttl')) - state.msg_counter_objs = src_object.children[2].children[0].ids - state.draft_count = str(int(state.draft_count) + 1) \ - if state.association == fromAddress else state.draft_count + + # state.msg_counter_objs = src_object.children[2].children[0].ids + Draft().kivy_state.draft_count = str(int(Draft().kivy_state.draft_count) + 1) \ + if state.association == fromAddress else Draft().kivy_state.draft_count src_object.ids.sc16.clear_widgets() src_object.ids.sc16.add_widget(Draft()) toast('Save draft') diff --git a/src/bitmessagekivy/baseclass/draft_widgets.py b/src/bitmessagekivy/baseclass/draft_widgets.py new file mode 100644 index 00000000..a22981cd --- /dev/null +++ b/src/bitmessagekivy/baseclass/draft_widgets.py @@ -0,0 +1,30 @@ +# pylint: disable=no-member, too-many-arguments +""" +Draft screen widgets are here. +""" + + +from kivymd.uix.button import MDRaisedButton +from kivymd.uix.dialog import MDDialog +from kivymd.uix.label import MDLabel + +import state + + +class HelperDraft(object): + """Widget used in Draft screen are here""" + def __init__(self): + pass + + # @staticmethod + # def default_label_when_empty(): + # """This function returns default message while no address is there.""" + # empty_screen_msg = "yet no message for this account!!!!!!!!!!!!!" + # content = MDLabel( + # font_style='Caption', + # theme_text_color='Primary', + # text=empty_screen_msg, + # halign='center', + # size_hint_y=None, + # valign='top') + # return content diff --git a/src/bitmessagekivy/baseclass/myaddress.py b/src/bitmessagekivy/baseclass/myaddress.py index dbbceee8..b81b5b07 100644 --- a/src/bitmessagekivy/baseclass/myaddress.py +++ b/src/bitmessagekivy/baseclass/myaddress.py @@ -228,7 +228,7 @@ class MyAddress(Screen, HelperMyAddress): def disable_address_ui(self, address, instance): """This method is used to disable addresses from UI""" - BMConfigParser().enable_address(address) + BMConfigParser().disable_address(address) instance.parent.parent.theme_text_color = 'Primary' instance.parent.parent.canvas.children[3].rgba = [0.5, 0.5, 0.5, 0.5] # try: @@ -240,7 +240,7 @@ class MyAddress(Screen, HelperMyAddress): def enable_address_ui(self, address, instance): """This method is used to enable addresses from UI""" - BMConfigParser().disable_address(address) + BMConfigParser().enable_address(address) instance.parent.parent.theme_text_color = 'Custom' instance.parent.parent.canvas.children[3].rgba = [0, 0, 0, 0] # try: