main.kv
1 #:import get_color_from_hex kivy.utils.get_color_from_hex 2 #:import Factory kivy.factory.Factory 3 #:import Spinner kivy.uix.spinner.Spinner 4 5 #:import colors kivymd.color_definitions.colors 6 #:import images_path kivymd.images_path 7 8 #:import IconLeftWidget kivymd.uix.list.IconLeftWidget 9 #:import MDCard kivymd.uix.card.MDCard 10 #:import MDCheckbox kivymd.uix.selectioncontrol.MDCheckbox 11 #:import MDFloatingActionButton kivymd.uix.button.MDFloatingActionButton 12 #:import MDList kivymd.uix.list.MDList 13 #:import MDScrollViewRefreshLayout kivymd.uix.refreshlayout.MDScrollViewRefreshLayout 14 #:import MDSpinner kivymd.uix.spinner.MDSpinner 15 #:import MDTextField kivymd.uix.textfield.MDTextField 16 #:import MDTabs kivymd.uix.tab.MDTabs 17 #:import MDTabsBase kivymd.uix.tab.MDTabsBase 18 #:import OneLineListItem kivymd.uix.list.OneLineListItem 19 20 <Tab@BoxLayout+MDTabsBase> 21 22 #:set color_button (0.784, 0.443, 0.216, 1) # brown 23 #:set color_button_pressed (0.659, 0.522, 0.431, 1) # darker brown 24 #:set color_font (0.957, 0.890, 0.843, 1) # off white 25 26 <MySpinnerOption@SpinnerOption>: 27 font_size: '12.5sp' 28 background_normal: 'atlas://data/images/defaulttheme/textinput_active' 29 background_color: app.theme_cls.primary_color 30 color: color_font 31 32 <NavigationItem> 33 on_press: root.currentlyActive() 34 active_color: root.theme_cls.primary_color if root.active else root.theme_cls.text_color 35 36 IconLeftWidget: 37 icon: root.icon 38 theme_text_color: "Custom" 39 text_color: root.active_color 40 41 BadgeText: 42 id: badge_txt 43 text: f"{root.badge_text}" 44 theme_text_color: "Custom" 45 halign: 'right' 46 47 <NavigationDrawerDivider>: 48 canvas: 49 Color: 50 rgba: self.theme_cls.divider_color 51 Line: 52 points: root.x, root.y + dp(8), root.x + self.width, root.y + dp(8) 53 54 <ContentNavigationDrawer> 55 56 BoxLayout: 57 orientation: 'vertical' 58 59 FloatLayout: 60 size_hint_y: None 61 height: "200dp" 62 63 MDIconButton: 64 id: reset_image 65 icon: "refresh" 66 x: root.parent.x + dp(10) 67 pos_hint: {"top": 1, 'left': 1} 68 color: [1,0,0,1] 69 on_release: app.rest_default_avatar_img() 70 theme_text_color: "Custom" 71 text_color: app.theme_cls.primary_color 72 opacity: 1 if app.have_any_address() else 0 73 disabled: False if app.have_any_address() else True 74 75 MDIconButton: 76 id: file_manager 77 icon: "file-image" 78 x: root.parent.x + dp(10) 79 pos_hint: {"top": 1, 'right': 1} 80 color: [1,0,0,1] 81 on_release: app.file_manager_open() 82 theme_text_color: "Custom" 83 text_color: app.theme_cls.primary_color 84 opacity: 1 if app.have_any_address() else 0 85 disabled: False if app.have_any_address() else True 86 87 BoxLayout: 88 id: top_box 89 size_hint_y: None 90 height: "200dp" 91 x: root.parent.x 92 pos_hint: {"top": 1} 93 Image: 94 source: app.get_default_logo(self) 95 96 ScrollView: 97 id: scroll_y 98 pos_hint: {"top": 1} 99 100 GridLayout: 101 id: box_item 102 cols: 1 103 size_hint_y: None 104 height: self.minimum_height 105 NavigationDrawerDivider: 106 NavigationDrawerSubheader: 107 text: app.tr._('Accounts') 108 height:"35dp" 109 NavigationItem: 110 text: 'dropdown_nav_item' 111 height: dp(48) 112 IdentitySpinner: 113 id: identity_dropdown 114 pos_hint:{"x":0,"y":0} 115 name: "identity_dropdown" 116 option_cls: Factory.get("MySpinnerOption") 117 font_size: '12.5sp' 118 text: app.get_default_account_data(self) 119 color: color_font 120 background_normal: '' 121 background_color: app.theme_cls.primary_color 122 on_text: app.get_current_account_data(self.text) 123 ArrowImg: 124 NavigationItem: 125 id: inbox_cnt 126 text: app.tr._('Inbox') 127 icon: 'email-open' 128 divider: None 129 on_release: app.set_screen('inbox') 130 on_release: root.parent.set_state() 131 on_press: app.load_screen(self) 132 NavigationItem: 133 id: send_cnt 134 text: app.tr._('Sent') 135 icon: 'send' 136 divider: None 137 on_release: app.set_screen('sent') 138 on_release: root.parent.set_state() 139 NavigationItem: 140 id: draft_cnt 141 text: app.tr._('Draft') 142 icon: 'message-draw' 143 divider: None 144 on_release: app.set_screen('draft') 145 on_release: root.parent.set_state() 146 NavigationItem: 147 id: trash_cnt 148 text: app.tr._('Trash') 149 icon: 'delete' 150 divider: None 151 on_release: app.set_screen('trash') 152 on_press: root.parent.set_state() 153 on_press: app.load_screen(self) 154 NavigationItem: 155 id: allmail_cnt 156 text: app.tr._('All Mails') 157 icon: 'mailbox' 158 divider: None 159 on_release: app.set_screen('allmails') 160 on_release: root.parent.set_state() 161 on_press: app.load_screen(self) 162 NavigationDrawerDivider: 163 NavigationDrawerSubheader: 164 text: app.tr._('Chat') 165 NavigationItem: 166 id: draft_cnt 167 text: app.tr._('Chat') 168 icon: 'chat' 169 divider: None 170 on_release: app.set_screen('chat') 171 on_release: root.parent.set_state() 172 NavigationDrawerDivider: 173 NavigationDrawerSubheader: 174 text: app.tr._("All labels") 175 NavigationItem: 176 text: app.tr._('Address Book') 177 icon: 'book-multiple' 178 divider: None 179 on_release: app.set_screen('addressbook') 180 on_release: root.parent.set_state() 181 NavigationItem: 182 text: app.tr._('Settings') 183 icon: 'application-settings' 184 divider: None 185 on_release: app.set_screen('set') 186 on_release: root.parent.set_state() 187 NavigationItem: 188 text: app.tr._('Payment plan') 189 icon: 'shopping' 190 divider: None 191 on_release: app.set_screen('payment') 192 on_release: root.parent.set_state() 193 NavigationItem: 194 text: app.tr._('New address') 195 icon: 'account-plus' 196 divider: None 197 on_release: app.set_screen('login') 198 on_release: root.parent.set_state() 199 on_press: app.reset_login_screen() 200 NavigationItem: 201 text: app.tr._('Network status') 202 icon: 'server-network' 203 divider: None 204 on_release: app.set_screen('networkstat') 205 on_release: root.parent.set_state() 206 NavigationItem: 207 text: app.tr._('My addresses') 208 icon: 'account-multiple' 209 divider: None 210 on_release: app.set_screen('myaddress') 211 on_release: root.parent.set_state() 212 213 MDNavigationLayout: 214 id: nav_layout 215 216 MDTopAppBar: 217 id: toolbar 218 title: app.format_address_and_label() 219 opacity: 1 if app.have_any_address() else 0 220 disabled: False if app.have_any_address() else True 221 pos_hint: {"top": 1} 222 md_bg_color: app.theme_cls.primary_color 223 elevation: 10 224 left_action_items: [['menu', lambda x: nav_drawer.set_state("toggle")]] 225 right_action_items: [['account-plus', lambda x: app.addingtoaddressbook()]] 226 227 ScreenManager: 228 id: scr_mngr 229 size_hint_y: None 230 height: root.height - toolbar.height 231 Inbox: 232 id:id_inbox 233 Login: 234 id:sc6 235 Random: 236 id:id_newidentity 237 MyAddress: 238 id:id_myaddress 239 ScanScreen: 240 id:id_scanscreen 241 Payment: 242 id:id_payment 243 Create: 244 id:id_create 245 NetworkStat: 246 id:id_networkstat 247 Setting: 248 id:id_settings 249 Sent: 250 id:id_sent 251 Trash: 252 id:id_trash 253 AllMails: 254 id:id_allmail 255 Draft: 256 id:id_draft 257 AddressBook: 258 id:id_addressbook 259 ShowQRCode: 260 id:id_showqrcode 261 Chat: 262 id: id_chat 263 264 MDNavigationDrawer: 265 id: nav_drawer 266 267 ContentNavigationDrawer: 268 id: content_drawer 269 270 <ArrowImg@Image>: 271 source: app.image_path +('/down-arrow.png' if self.parent.is_open == True else '/right-arrow.png') 272 size: 15, 15 273 x: self.parent.x + self.parent.width - self.width - 5 274 y: self.parent.y + self.parent.height/2 - self.height + 5 275 276 277 <SearchBar@BoxLayout>: 278 size_hint_y: None 279 height: self.minimum_height 280 281 MDIconButton: 282 icon: 'magnify' 283 284 MDTextField: 285 id: search_field 286 hint_text: 'Search' 287 canvas.before: 288 Color: 289 rgba: (0,0,0,1) 290 291 292 <Loader@MDSpinner>: 293 id: spinner 294 size_hint: None, None 295 size: dp(46), dp(46) 296 pos_hint: {'center_x': 0.5, 'center_y': 0.5} 297 active: False 298 299 <ComposerButton@BoxLayout>: 300 size_hint_y: None 301 height: dp(56) 302 spacing: '10dp' 303 pos_hint: {'center_x':0.45, 'center_y': .1} 304 305 Widget: 306 307 MDFloatingActionButton: 308 icon: 'plus' 309 opposite_colors: True 310 elevation_normal: 8 311 md_bg_color: [0.941, 0, 0,1] 312 on_press: app.root.ids.scr_mngr.current = 'create' 313 on_press: app.clear_composer() 314 315 316 <SwipeToDeleteItem>: 317 size_hint_y: None 318 height: content.height 319 320 MDCardSwipeLayerBox: 321 padding: "8dp" 322 323 MDIconButton: 324 id: delete_msg 325 icon: "trash-can" 326 pos_hint: {"center_y": .5} 327 md_bg_color: (1, 0, 0, 1) 328 disabled: True 329 330 MDCardSwipeFrontBox: 331 332 TwoLineAvatarIconListItem: 333 id: content 334 text: root.text 335 _no_ripple_effect: True 336 337 AvatarSampleWidget: 338 id: avater_img 339 source: None 340 341 TimeTagRightSampleWidget: 342 id: time_tag 343 text: '' 344 font_size: "11sp" 345 font_style: "Caption" 346 size: [120, 140] if app.app_platform == "android" else [64, 80] 347 348 349 <CutsomSwipeToDeleteItem>: 350 size_hint_y: None 351 height: content.height 352 353 MDCardSwipeLayerBox: 354 padding: "8dp" 355 356 MDIconButton: 357 id: delete_msg 358 icon: "trash-can" 359 pos_hint: {"center_y": .5} 360 md_bg_color: (1, 0, 0, 1) 361 disabled: True 362 363 MDCardSwipeFrontBox: 364 365 TwoLineAvatarIconListItem: 366 id: content 367 text: root.text 368 _no_ripple_effect: True 369 370 AvatarSampleWidget: 371 id: avater_img 372 source: None 373 374 TimeTagRightSampleWidget: 375 id: time_tag 376 text: 'time' 377 font_size: "11sp" 378 font_style: "Caption" 379 size: [120, 140] if app.app_platform == "android" else [64, 80] 380 MDChip: 381 id: chip_tag 382 size_hint: (0.16 if app.app_platform == "android" else 0.08, None) 383 text: 'test' 384 icon: "" 385 pos_hint: {"center_x": 0.91 if app.app_platform == "android" else 0.94, "center_y": 0.3} 386 height: '18dp' 387 text_color: (1,1,1,1) 388 radius: [8]