Skip to content

Commit 4e07317

Browse files
author
surbhi
committed
code-quality: Update code quality in addressbook
1 parent 9e4b117 commit 4e07317

File tree

2 files changed

+93
-75
lines changed

2 files changed

+93
-75
lines changed

src/bitmessagekivy/baseclass/addressbook.py

Lines changed: 45 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,7 @@
1313
import logging
1414
from functools import partial
1515

16-
from kivy.properties import (
17-
ListProperty,
18-
StringProperty
19-
)
16+
from kivy.properties import ListProperty, StringProperty
2017
from kivy.uix.screenmanager import Screen
2118
from kivy.app import App
2219

@@ -32,9 +29,17 @@
3229

3330
logger = logging.getLogger('default')
3431

32+
INITIAL_SCROLL_POSITION = 1.0
33+
SCROLL_THRESHOLD = -0.0
34+
SCROLL_RESET_POSITION = 0.06
35+
INITIAL_LOAD_COUNT = 20
36+
ADDRESS_INCREMENT = 5
37+
POPUP_WIDTH_ANDROID = 0.9
38+
POPUP_WIDTH_OTHER = 0.8
39+
3540

3641
class AddressBook(Screen, HelperAddressBook):
37-
"""AddressBook Screen class for kivy Ui"""
42+
"""AddressBook Screen class for kivy UI"""
3843

3944
queryreturn = ListProperty()
4045
has_refreshed = True
@@ -45,77 +50,74 @@ class AddressBook(Screen, HelperAddressBook):
4550

4651
def __init__(self, *args, **kwargs):
4752
"""Getting AddressBook Details"""
48-
super(AddressBook, self).__init__(*args, **kwargs)
53+
super().__init__(*args, **kwargs) # pylint: disable=missing-super-argument
4954
self.addbook_popup = None
5055
self.kivy_state = kivy_state_variables()
5156

5257
def loadAddresslist(self, account, where="", what=""):
53-
"""Clock Schdule for method AddressBook"""
58+
"""Load address list with optional search filters"""
5459
if self.kivy_state.searching_text:
55-
self.ids.scroll_y.scroll_y = 1.0
60+
self.ids.scroll_y.scroll_y = INITIAL_SCROLL_POSITION
5661
where = ['label', 'address']
5762
what = self.kivy_state.searching_text
63+
5864
xAddress = ''
5965
self.ids.tag_label.text = ''
60-
self.queryreturn = kivy_helper_search.search_sql(
61-
xAddress, account, "addressbook", where, what, False)
62-
self.queryreturn = [obj for obj in reversed(self.queryreturn)]
66+
self.queryreturn = list(reversed(
67+
kivy_helper_search.search_sql(xAddress, account, "addressbook", where, what, False)
68+
))
69+
6370
if self.queryreturn:
6471
self.ids.tag_label.text = 'Address Book'
6572
self.has_refreshed = True
66-
self.set_mdList(0, 20)
73+
self.set_mdList(0, INITIAL_LOAD_COUNT)
6774
self.ids.scroll_y.bind(scroll_y=self.check_scroll_y)
6875
else:
6976
self.ids.ml.add_widget(empty_screen_label(self.label_str, self.no_search_res_found))
7077

7178
def set_mdList(self, start_index, end_index):
72-
"""Creating the mdList"""
79+
"""Create the mdList"""
7380
for item in self.queryreturn[start_index:end_index]:
74-
message_row = SwipeToDeleteItem(
75-
text=item[0],
76-
)
81+
message_row = SwipeToDeleteItem(text=item[0])
7782
listItem = message_row.ids.content
7883
listItem.secondary_text = item[1]
7984
listItem.theme_text_color = "Custom"
8085
listItem.text_color = ThemeClsColor
8186
image = os.path.join(
82-
self.kivy_state.imageDir, "text_images", "{}.png".format(avatar_image_first_letter(item[0].strip()))
87+
self.kivy_state.image_dir, "text_images",
88+
f"{avatar_image_first_letter(item[0].strip())}.png" # noqa: E999
8389
)
8490
message_row.ids.avater_img.source = image
85-
listItem.bind(on_release=partial(
86-
self.addBook_detail, item[1], item[0], message_row))
91+
listItem.bind(on_release=partial(self.addBook_detail, item[1], item[0], message_row))
8792
message_row.ids.delete_msg.bind(on_press=partial(self.delete_address, item[1]))
8893
self.ids.ml.add_widget(message_row)
8994

90-
def check_scroll_y(self, instance, somethingelse):
91-
"""Load data on scroll"""
92-
if self.ids.scroll_y.scroll_y <= -0.0 and self.has_refreshed:
93-
self.ids.scroll_y.scroll_y = 0.06
95+
def check_scroll_y(self, instance, _):
96+
"""Load more data on scroll down"""
97+
if self.ids.scroll_y.scroll_y <= SCROLL_THRESHOLD and self.has_refreshed:
98+
self.ids.scroll_y.scroll_y = SCROLL_RESET_POSITION
9499
exist_addresses = len(self.ids.ml.children)
95100
if exist_addresses != len(self.queryreturn):
96101
self.update_addressBook_on_scroll(exist_addresses)
97-
self.has_refreshed = (
98-
True if exist_addresses != len(self.queryreturn) else False
99-
)
102+
self.has_refreshed = exist_addresses != len(self.queryreturn)
100103

101104
def update_addressBook_on_scroll(self, exist_addresses):
102-
"""Load more data on scroll down"""
103-
self.set_mdList(exist_addresses, exist_addresses + 5)
105+
"""Load more data on scroll"""
106+
self.set_mdList(exist_addresses, exist_addresses + ADDRESS_INCREMENT)
104107

105108
@staticmethod
106109
def refreshs(*args):
107110
"""Refresh the Widget"""
108111

109-
# @staticmethod
110112
def addBook_detail(self, address, label, instance, *args):
111-
"""Addressbook details"""
113+
"""Display Addressbook details"""
112114
if instance.state == 'closed':
113115
instance.ids.delete_msg.disabled = True
114116
if instance.open_progress == 0.0:
115117
obj = SavedAddressDetailPopup()
116118
self.address_label = obj.address_label = label
117119
self.address = obj.address = address
118-
width = .9 if platform == 'android' else .8
120+
width = POPUP_WIDTH_ANDROID if platform == 'android' else POPUP_WIDTH_OTHER
119121
self.addbook_popup = self.address_detail_popup(
120122
obj, self.send_message_to, self.update_addbook_label,
121123
self.close_pop, width)
@@ -125,40 +127,42 @@ def addBook_detail(self, address, label, instance, *args):
125127
instance.ids.delete_msg.disabled = False
126128

127129
def delete_address(self, address, instance, *args):
128-
"""Delete inbox mail from inbox listing"""
130+
"""Delete address from the address book"""
129131
self.ids.ml.remove_widget(instance.parent.parent)
130-
# if len(self.ids.ml.children) == 0:
131-
if self.ids.ml.children is not None:
132+
if self.ids.ml.children:
132133
self.ids.tag_label.text = ''
133-
sqlExecute(
134-
"DELETE FROM addressbook WHERE address = ?", address)
134+
sqlExecute("DELETE FROM addressbook WHERE address = ?", address)
135135
toast('Address Deleted')
136136

137137
def close_pop(self, instance):
138-
"""Pop is Canceled"""
138+
"""Cancel and close the popup"""
139139
self.addbook_popup.dismiss()
140140
toast('Canceled')
141141

142142
def update_addbook_label(self, instance):
143-
"""Updating the label of address book address"""
143+
"""Update the label of the address book"""
144144
address_list = kivy_helper_search.search_sql(folder="addressbook")
145145
stored_labels = [labels[0] for labels in address_list]
146146
add_dict = dict(address_list)
147147
label = str(self.addbook_popup.content_cls.ids.add_label.text)
148+
148149
if label in stored_labels and self.address == add_dict[label]:
149150
stored_labels.remove(label)
151+
150152
if label and label not in stored_labels:
151153
sqlExecute("""
152154
UPDATE addressbook
153155
SET label = ?
154156
WHERE address = ?""", label, self.addbook_popup.content_cls.address)
155-
App.get_running_app().root.ids.id_addressbook.ids.ml.clear_widgets()
156-
App.get_running_app().root.ids.id_addressbook.loadAddresslist(None, 'All', '')
157+
158+
app = App.get_running_app()
159+
app.root.ids.id_addressbook.ids.ml.clear_widgets()
160+
app.root.ids.id_addressbook.loadAddresslist(None, 'All', '')
157161
self.addbook_popup.dismiss()
158162
toast('Saved')
159163

160164
def send_message_to(self, instance):
161-
"""Method used to fill to_address of composer autofield"""
165+
"""Fill the to_address of the composer autofield"""
162166
App.get_running_app().set_navbar_for_composer()
163167
self.compose_message(None, self.address)
164168
self.addbook_popup.dismiss()
Lines changed: 48 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,64 @@
1-
# pylint: disable=no-member, too-many-arguments, too-few-public-methods
2-
"""
3-
Addressbook widgets are here.
4-
"""
1+
# pylint: disable=no-member, too-many-arguments, too-few-public-methods, no-init
2+
3+
"""Addressbook widgets are here."""
54

65
from kivy.app import App
76
from kivymd.uix.button import MDRaisedButton
87
from kivymd.uix.dialog import MDDialog
98

9+
POPUP_HEIGHT_PROPORTION = 0.25
10+
1011

1112
class HelperAddressBook(object):
12-
"""Widget used in Addressbook are here"""
13+
"""Widget utilities for Addressbook."""
1314

1415
@staticmethod
1516
def address_detail_popup(obj, send_message, update_address, close_popup, width):
16-
"""This function shows the address's details and opens the popup."""
17-
show_dialogue = MDDialog(
17+
"""
18+
Shows address details in a popup with clear actions.
19+
20+
Args:
21+
obj: The widget containing the address details to display.
22+
send_message: The function to call when the "Send message" button is pressed.
23+
update_address: The function to call when the "Save" button is pressed.
24+
close_popup: The function to call when the "Cancel" button is pressed or the popup is closed.
25+
width: The desired width of the popup as a proportion of the screen.
26+
"""
27+
28+
buttons = [
29+
MDRaisedButton(text="Send message", on_release=send_message),
30+
MDRaisedButton(text="Update Address", on_release=update_address),
31+
MDRaisedButton(text="Cancel", on_release=close_popup),
32+
]
33+
34+
return MDDialog(
1835
type="custom",
19-
size_hint=(width, .25),
36+
size_hint=(width, POPUP_HEIGHT_PROPORTION),
2037
content_cls=obj,
21-
buttons=[
22-
MDRaisedButton(
23-
text="Send message to",
24-
on_release=send_message,
25-
),
26-
MDRaisedButton(
27-
text="Save",
28-
on_release=update_address,
29-
),
30-
MDRaisedButton(
31-
text="Cancel",
32-
on_release=close_popup,
33-
),
34-
],
38+
buttons=buttons,
3539
)
36-
return show_dialogue
3740

3841
@staticmethod
3942
def compose_message(from_addr=None, to_addr=None):
40-
"""This UI independent method for message sending to reciever"""
41-
window_obj = App.get_runnint_app().root.ids
42-
if to_addr:
43-
window_obj.id_create.children[1].ids.txt_input.text = to_addr
44-
if from_addr:
45-
window_obj.id_create.children[1].ids.txt_input.text = from_addr
46-
window_obj.id_create.children[1].ids.ti.text = ''
47-
window_obj.id_create.children[1].ids.composer_dropdown.text = 'Select'
48-
window_obj.id_create.children[1].ids.subject.text = ''
49-
window_obj.id_create.children[1].ids.body.text = ''
50-
window_obj.scr_mngr.current = 'create'
43+
"""
44+
Composes a new message (UI-independent).
45+
46+
Args:
47+
from_addr (str, optional): The address to set in the "From" field. Defaults to None.
48+
to_addr (str, optional): The address to set in the "To" field. Defaults to None.
49+
"""
50+
51+
app = App.get_running_app()
52+
53+
ids = app.root.ids
54+
create_screen = ids.id_create.children[1].ids
55+
56+
# Reset fields
57+
create_screen.txt_input.text = to_addr if to_addr else from_addr
58+
create_screen.ti.text = ""
59+
create_screen.composer_dropdown.text = "Select"
60+
create_screen.subject.text = ""
61+
create_screen.body.text = ""
62+
63+
# Navigate to create screen
64+
ids.scr_mngr.current = "create"

0 commit comments

Comments
 (0)