From 05d061fe0a25dc8032ef0954f0535a939ec467fa Mon Sep 17 00:00:00 2001 From: navjot Date: Mon, 9 Mar 2020 13:24:10 +0530 Subject: [PATCH] worked on payment screen UI or qr code scanner feature --- src/bitmessagekivy/kv/composer.kv | 52 +++++++++++++-------- src/bitmessagekivy/kv/payment.kv | 6 +++ src/bitmessagekivy/kv/payment_method.kv | 57 ++++++++++++++++++++++++ src/bitmessagekivy/main.kv | 17 ++++--- src/bitmessagekivy/mpybit.py | 42 +++++++++++++---- src/images/paymode/111.webp | Bin 0 -> 11484 bytes src/images/paymode/bitcoin-logo.jpg | Bin 0 -> 8457 bytes src/images/paymode/download.png | Bin 0 -> 5678 bytes 8 files changed, 141 insertions(+), 33 deletions(-) create mode 100644 src/bitmessagekivy/kv/payment_method.kv create mode 100644 src/images/paymode/111.webp create mode 100644 src/images/paymode/bitcoin-logo.jpg create mode 100644 src/images/paymode/download.png diff --git a/src/bitmessagekivy/kv/composer.kv b/src/bitmessagekivy/kv/composer.kv index 25a47e3d..e108cb1d 100644 --- a/src/bitmessagekivy/kv/composer.kv +++ b/src/bitmessagekivy/kv/composer.kv @@ -13,7 +13,7 @@ hint_text: 'type or select sender address' size_hint_y: None height: 100 - font_size: '13sp' + font_size: '15sp' multiline: False required: True helper_text_mode: "on_error" @@ -26,34 +26,41 @@ background_color: app.theme_cls.primary_dark values: app.variable_1 on_text: root.auto_fill_fromaddr() if self.text != 'Select' else '' - option_cls: Factory.get("MySpinnerOption") + option_cls: Factory.get("ComposerSpinnerOption") #background_color: color_button if self.state == 'normal' else color_button_pressed #background_down: 'atlas://data/images/defaulttheme/spinner' background_normal: '' background_color: app.theme_cls.primary_color color: color_font - font_size: '12.5sp' + font_size: '13.5sp' ArrowImg: BoxLayout: - orientation: 'vertical' - txt_input: txt_input - rv: rv - size : (890, 60) - MyTextInput: - id: txt_input - size_hint_y: None - font_size: '13sp' - height: self.parent.height/2 - hint_text: 'type, select or scan QR code for recipients address' - RV: - id: rv + orientation: 'horizontal' + BoxLayout: + orientation: 'vertical' + txt_input: txt_input + rv: rv + size : (890, 60) + MyTextInput: + id: txt_input + size_hint_y: None + font_size: '15sp' + height: self.parent.height/2 + # hint_text: 'type, select or scan QR code for recipients address' + RV: + id: rv + MDIconButton: + icon: 'qrcode-scan' + pos_hint: {'center_x': 0, 'center_y': .8} + on_press: root.qrScanner() + MyMDTextField: id: subject hint_text: 'subject' required: True height: 100 - font_size: '13sp' + font_size: '15sp' size_hint_y: None multiline: False helper_text_mode: "on_error" @@ -63,7 +70,7 @@ multiline: True hint_text: 'body' size_hint_y: None - font_size: '13sp' + font_size: '15sp' required: True helper_text_mode: "on_error" BoxLayout: @@ -106,4 +113,13 @@ : canvas.before: Color: - rgba: (0,0,0,1) \ No newline at end of file + rgba: (0,0,0,1) + + +: + font_size: '13.5sp' + #background_color: color_button if self.state == 'down' else color_button_pressed + #background_down: 'atlas://data/images/defaulttheme/button' + background_normal: 'atlas://data/images/defaulttheme/textinput_active' + background_color: app.theme_cls.primary_color + color: color_font \ No newline at end of file diff --git a/src/bitmessagekivy/kv/payment.kv b/src/bitmessagekivy/kv/payment.kv index 2398817f..0d14e2ca 100644 --- a/src/bitmessagekivy/kv/payment.kv +++ b/src/bitmessagekivy/kv/payment.kv @@ -78,6 +78,7 @@ halign: 'center' color: 1,1,1,1 MDLabel: + id: py2 font_style: 'H5' theme_text_color: 'Primary' text: '€ 100.0' @@ -92,6 +93,8 @@ size: self.size size: dp(app.window_size[0] - 2*self.parent.parent.padding[0]) - 10 , 1 height: dp(40) + on_press: app.root.ids.scr_mngr.current = 'pay-options' + on_press: root.move_to_pay_option(py2.text) MDLabel: font_style: 'H6' text: 'Get Monthly Credits' @@ -122,6 +125,7 @@ halign: 'center' color: 1,1,1,1 MDLabel: + id: py3 font_style: 'H5' theme_text_color: 'Primary' text: '€ 500.0' @@ -136,6 +140,8 @@ size: self.size size: dp(app.window_size[0] - 2*self.parent.parent.padding[0]) - 10 , 1 height: dp(40) + on_press: app.root.ids.scr_mngr.current = 'pay-options' + on_press: root.move_to_pay_option(py3.text) MDLabel: font_style: 'H6' text: 'Get Yearly Credits' diff --git a/src/bitmessagekivy/kv/payment_method.kv b/src/bitmessagekivy/kv/payment_method.kv new file mode 100644 index 00000000..f304d00c --- /dev/null +++ b/src/bitmessagekivy/kv/payment_method.kv @@ -0,0 +1,57 @@ +: + name: 'pay-options' + ScrollView: + do_scroll_x: False + BoxLayout: + # canvas.before: + # Color: + # rgba: .5,.5,.5,.5 + # Rectangle: + # pos: self.pos + # size: self.size + orientation: 'vertical' + padding: [self.width/4, 20, self.width/4, 20] + size_hint_y: None + spacing: 20 + height: self.minimum_height + # GridLayout: + # cols: 1 + # rows: 3 + # size_hint_y: None + # # height: self.minimum_height + # # padding: dp(10), dp(10) + # spacing: dp(10) + SmartTileWithLabel: + # size_hint_y: None + size_hint: (None, None) + # pos_hint: {'x': .5, 'y': .5} + height: 180 + width: 400 + id: tile_2 + mipmap: True + source: './images/paymode/download.png' + # text: "[size=12]Paypal[/size]" + on_press: root.redirect_on_web(self) + font_style: 'Subtitle1' + SmartTileWithLabel: + # size_hint_y: None + size_hint: (None, None) + height: 180 + width: 400 + id: tile_2 + mipmap: True + # text: "[size=12]Crypto wallet[/size]" + font_style: 'Subtitle1' + source: './images/paymode/bitcoin-logo.jpg' + on_press: root.redirect_on_web(self) + SmartTileWithLabel: + # size_hint_y: None + size_hint: (None, None) + height: 180 + width: 400 + id: tile_2 + mipmap: True + # text: "[size=12]Googgle in app[/size]" + font_style: 'Subtitle1' + source: './images/paymode/111.webp' + on_press: root.redirect_on_web(self) \ No newline at end of file diff --git a/src/bitmessagekivy/main.kv b/src/bitmessagekivy/main.kv index c507eb49..92889b31 100644 --- a/src/bitmessagekivy/main.kv +++ b/src/bitmessagekivy/main.kv @@ -27,7 +27,8 @@ #background_color: color_button if self.state == 'down' else color_button_pressed #background_down: 'atlas://data/images/defaulttheme/button' background_normal: 'atlas://data/images/defaulttheme/textinput_active' - background_color: app.theme_cls.primary_color + background_color: app.theme_cls.primary_color + # text_autoupdate: True color: color_font @@ -101,7 +102,7 @@ id: btn pos_hint:{"x":0,"y":0} option_cls: Factory.get("MySpinnerOption") - font_size: '10.9sp' + font_size: '12.5sp' text: app.getDefaultAccData() #background_color: color_button if self.state == 'normal' else color_button_pressed #background_down: 'atlas://data/images/defaulttheme/spinner' @@ -111,11 +112,11 @@ #background_color: (0.62,0.67,0.72,1) values: app.variable_1 on_text:app.getCurrentAccountData(self.text) - Image: - source: app.get_default_image() - x: self.width/6 - y: self.parent.y + self.parent.height/4 - size: self.parent.height/2, self.parent.height/2 + # Image: + # source: app.get_default_image() + # x: self.width/6 + # y: self.parent.y + self.parent.height/4 + # size: self.parent.height/2, self.parent.height/2 ArrowImg: NavigationItem: id: inbox_cnt @@ -258,6 +259,8 @@ NavigationLayout: id:sc19 Archieve: id:sc20 + PaymentMethods: + id:sc21 MDNavigationDrawer: id: nav_drawer diff --git a/src/bitmessagekivy/mpybit.py b/src/bitmessagekivy/mpybit.py index a97eecc4..97a7fa89 100644 --- a/src/bitmessagekivy/mpybit.py +++ b/src/bitmessagekivy/mpybit.py @@ -73,7 +73,8 @@ KVFILES = [ 'settings', 'popup', 'allmails', 'draft', 'maildetail', 'common_widgets', 'addressbook', 'myaddress', 'composer', 'payment', 'sent', - 'network', 'login', 'credits', 'trash', 'inbox' + 'network', 'login', 'credits', 'trash', 'inbox', + 'payment_method' ] @@ -818,6 +819,10 @@ class DropDownWidget(BoxLayout): self.ids.ti.text = self.ids.btn.text self.ids.ti.focus = True + def qrScanner(self): + """This method is used for scanning Qr code""" + pass + class MyTextInput(TextInput): """Takes the text input in the field""" @@ -835,14 +840,14 @@ class MyTextInput(TextInput): def on_text(self, instance, value): """Find all the occurrence of the word""" - self.parent.parent.parent.parent.ids.rv.data = [] + self.parent.parent.parent.parent.parent.ids.rv.data = [] matches = [self.word_list[i] for i in range( len(self.word_list)) if self.word_list[ i][:self.starting_no] == value[:self.starting_no]] display_data = [] for i in matches: display_data.append({'text': i}) - self.parent.parent.parent.parent.ids.rv.data = display_data + self.parent.parent.parent.parent.parent.ids.rv.data = display_data if len(matches) <= 10: self.parent.height = (250 + (len(matches) * 20)) else: @@ -874,6 +879,9 @@ class Payment(Screen): state.kivyapp.root.ids.sc18.ids.cred.text = '{0}'.format( state.availabe_credit) + def move_to_pay_option(self, amount): + state.kivyapp.set_toolbar_for_QrCode() + class Credits(Screen): """Credits Method""" @@ -1579,6 +1587,9 @@ class NavigateApp(MDApp): self.root.ids.scr_mngr.current = 'myaddress' elif self.root.ids.scr_mngr.current == "random": self.root.ids.scr_mngr.current = 'login' + elif self.root.ids.scr_mngr.current == 'pay-options': + self.set_common_header() + self.root.ids.scr_mngr.current = 'payment' else: if state.kivyapp.variable_1: self.root.ids.scr_mngr.current = 'inbox' @@ -1704,7 +1715,8 @@ class NavigateApp(MDApp): if state.in_composer else 'allmails'\ if state.is_allmail else state.detailPageType\ if state.detailPageType else 'myaddress'\ - if self.root.ids.scr_mngr.current == 'showqrcode' else 'inbox' + if self.root.ids.scr_mngr.current == 'showqrcode' else 'payment'\ + if self.root.ids.scr_mngr.current == 'pay-options' 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': @@ -1842,7 +1854,7 @@ class NavigateApp(MDApp): def set_identicon(self, text): """Show identicon in address spinner""" img = identiconGeneration.generate(text) - self.root.children[0].children[0].ids.btn.children[1].texture = (img.texture) + # self.root.children[0].children[0].ids.btn.children[1].texture = (img.texture) # below line is for displaing logo self.root.ids.content_drawer.ids.top_box.children[0].texture = (img.texture) @@ -1941,10 +1953,11 @@ class NavigateApp(MDApp): def load_selected_Image(self, curerentAddr): """This method load the selected image on screen""" top_box_obj = self.root.ids.content_drawer.ids.top_box.children[0] - spinner_img_obj = self.root.ids.content_drawer.ids.btn.children[1] - spinner_img_obj.source = top_box_obj.source ='./images/default_identicon/{0}.png'.format(curerentAddr) + # spinner_img_obj = self.root.ids.content_drawer.ids.btn.children[1] + # spinner_img_obj.source = top_box_obj.source ='./images/default_identicon/{0}.png'.format(curerentAddr) + top_box_obj.source ='./images/default_identicon/{0}.png'.format(curerentAddr) top_box_obj.reload() - spinner_img_obj.reload() + # spinner_img_obj.reload() def copy_composer_text(self, text): """Copy the data from mail detail page""" @@ -2096,6 +2109,12 @@ class ToggleBtn(IRightBodyTouch, MDSwitch): pass +class CheckboxLeftSampleWidget(ILeftBodyTouch, MDCheckbox): + """Left icon sample widget""" + + pass + + class MailDetail(Screen): """MailDetail Screen uses to show the detail of mails""" @@ -2945,5 +2964,12 @@ class ToAddrBoxlayout(BoxLayout): to_addr = StringProperty() def set_toAddress(self, to_addr): + """This method is use to set to address""" self.to_addr = to_addr + + +class PaymentMethods(Screen): + """PaymentMethods Screen show widgets of page""" + + def redirect_on_web(self, instance): pass diff --git a/src/images/paymode/111.webp b/src/images/paymode/111.webp new file mode 100644 index 0000000000000000000000000000000000000000..7b38349ef0960b155561a9ee39f72662d008ff24 GIT binary patch literal 11484 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 CASsyu literal 0 HcmV?d00001 diff --git a/src/images/paymode/bitcoin-logo.jpg b/src/images/paymode/bitcoin-logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a5c5bdbb44d1a92e2ae294ff76a2ab37578ef704 GIT binary patch literal 8457 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 literal 0 HcmV?d00001 diff --git a/src/images/paymode/download.png b/src/images/paymode/download.png new file mode 100644 index 0000000000000000000000000000000000000000..68c7f0876f3eb457dc10e0f432b8f60a0b1740ff GIT binary patch literal 5678 zcmV+}7SZX6P)h}C|gtq4D^JRCh5I2#0jJu7S!viIEK(FU}!|hRLrUOThozwC= ztLD}2`nulr0gBKzPMNmA+9W}ggvjnzw&|Ow%UE!%00?UUGJOMm!~xO zqyZ^(7Cn?_zUw6iomC6!S?$K~#90?Oh8) z;>fa=*pP$lWuiw?AmCdY}Ij(Kw$t<$2&bN2AHz>(gni+s_!E9gWMX#f>O1 z_#vCbJ?_D>omREY?w-ywwr9k!tSDsOEi;f^X22bMm^|ohW88Aw_Resek)4jN%fWsH z&xB1z?3o$CBV-$%6U%9j&IYSKkhRC53!E}AU2&I5$HC-3yvH<}nK(HHZyi7NSA8gJ zj_r3W7o4s7xYiG^7BN@l2b4b`MJJj@sydVMJ?dl_$C>;H!_sY(#5ooFsHUcMRrNIu|wlUxS8PP4e`Lt8VPyKLH2F^ADiT)A-u4{J?FLwk>E zZPkaiW_WT8Hf5q(q@y-V_zp>KS{)HL?%}ErZOyP_k=zfw)sfn4U)e7(FbpQKVh*r`)%JLIt0q%6!On#&ig^HVR@? z4VxAI-wE4v%kP<<)GA4Mk(b(LaNmAgb;S zL$v9Un&t-WZLXxom&s5EzH1~Qh6Zt z7GnCVWI9*4U-eP01ElmYi1Hw^dLgDwU^=&b67%W3Aq!))bN6&!e9!E%_fnd|_4UL3 zueiNT!Y#Z*XD{Vb?@)RuyHH~bU ze9ANZ))wu_lH+A>FHUb#@$2K|2V@zPO?6fwhjhnUz=oIc#_?d{$Cx_Y2; z#4M%cAOw3Qcww5)DVFKgN?df{LEdiCW|-+HT|clf9INJT&0h}+Ja%*WO!t(VRucFl zwdxp28ifOVT|VVPcy!T_No2z4^k$R(8X`KH>HaZP#wn#|EhYBef$1A1@=O&xKIO^2 z&d&5LzS(xlGfy4jD^%hl%N}nHh`YasiH>Hv)`lyHb7d0Uw(3Q^1JfUo9Fvq|2>>hzu{pJGPq zq)1?NHPbpv4ksF#OhsgiNRL0m;m~LLW5lNq9S}Yak#mC@d-O0~P-DNK zYo&6IGTk9rV(;MNm519H@~<%|y)r5%hydpL&9YOEDln3?a zIpVyx{h$CP)`GB{8|86QlwqxGC@?KHvNvXk^&g+3h>qHmei=TM9h0)%CDDEXYsDQ` z%>wrAf>%##cs^YJwVunD)iGzNeMsZghWeHBp|3z(!iAD~@&x?qgtB%s|LHc5 z$0J_*3#%S!(&Ma!)MD)cI^=H~>rvmF5_rL$MO4VfO)PV?Rcso&c!lw{aMO=vo78fp z2Zs)Z!Jqvnb=!t?f!2fbOY$O9) zTSQYU1Ahb4^?D@H(Uq=q7e3M&;l|>KLv?@!Zu)VbgDS$Sx4(v`X-)XIwy{WZTpH5lm?uRgR zptNN_1zUQ>VcAj@a^XB4_YGpvs-XZ7a|UwuHKv2@NTW(GgOKK`_wylq4q1B z$5m_%+oZ3>=o%?vDfV%p2vvzkcQ`-O_01?B?IW_uwq-*Nkx#Z>U+*UTxap{X!Gxuc z_c>m7UWQ}a7H!8FxQs|2Bc^qyKH}7sFZA9la4M?4WOgntF0MPJN<~Y>I~$sd@i&RC zqlQ4X^iXL zFhI7PM?Xk^-h_yjFIy&y}S7>)^qqK5LFd; ztbz%Xf&g6XhBNVP^|S>$WKBp3q;ZGR!`gw3zHl}IR}?&Td~8UM&TVigSBb5yytwvA z(9{z14v`*0w%`*Z13tx_#q_HeJhj*~JJa?0@1NrhIu}!i6m>)l4?uG8i@RGsTa6J1 z)8$&Z17@pwXXFXbTv;k=Ru&1*Am}IgXybG}S{)6;%wPLN6IWi)+^=dtN@g+LNo#HO z94!k6PYHHDV?eC$?xygpn+9SFTU#VI6}P1`i`AYti zGzav@rWuOks+A=~>xrsWrAUu)J7m%jyn{RGEbspL|it$X>J?!r8{`mdF=bWNBUOq)PoBcdlIxG9G)(z0tEB_9c zemguIp#jZCy4KUcf|cQ0hZ~m;_(A2#Jy}7^(6y##< zoVBINEHrE5sJ^4oc{3Adt!XOC_-(KtuVjAFF-*>hdZ=h zO8Samv3v*@#>?D}o@gE>8-yEGTa!45~CaS^}7M>}yN zl>(;yA6p-x=lOVP7uqTCSKq<1iTuOW-dstKd|dVI0Q2)uDRd7X$p0labo2ljk3o~B zD&RCw)&B1vb21u-nBlI^7JOpt5@d>Lt`9rCbReZHYp;C*iH=5N>(y$Ne8e{Xl=m=m z+Qq2Ol4Q1!a)gL(Q%hOUK?i?ZKbOOEoJluq4jzlwlcVVO4vrEaWgW z7+%&MCrODJCxPj6=&rwnN917lCUqe2BbH>KU2CAL_I~0Dpz|WyOK)^ru#P)7Vn?L! z*sy~}c?j{nyW?UA4-Hf3wQ>AYkQ21^wOnq<;Q3fPB$B)E0v~#CP15*^IHX%Opf^o= zv>*Y4ghf?B7=K=tNyj9r<1*;?P&DcrA2yJ;olMgz& zfuIgtoaMTlJARKGgg;|e=-UX!ZDlcDW?2ml%puaF6Z@ezT4sN@KfhOoZi4^#)K{H6 zM7!YFXUSs-A52K!*D+)11acUgtnBJ64V`=cxOmfPV$dVLrM!XjikZKfoS?s^DQZ5A$6471FQckIh0YJKPQde zNTWL6S;^XugOLT5r}jE668z*q!$rkG9KN(b)x)f;YB9ns2MT8PPWrR|KHOQP?jQPL zZ;~Fq+b9$sR<)MtVHF}fe~+2DZ$=O54p`}+cuRfB)1BtU)mxS_S_(vkBuK=|YxOlU zeS@noh(Qse;w<$gZ3&}7p>*--c4ahsmLo)~*m?IU{po)rimvWC7_n>5Pp3%_vryWW z=v-gC+<#nx?pz49<6!2NWjT{|@*T1e57Gk}mhAJ<^dwmg`RiMM6#;?u5U%~5y8t_P zYqpTPKU|h6n^x*W6n*}kT%b*zx|>1a)h5+{@Y5iygwH}*+py*&~V;L>zpN4 zJ<>*@WuQ20L5Ehg!!c##&xz6_wa1Ww;L=g$e=4a3QtC_LISCn(FoIcTs&J}G)XDWF zGi{b*28w-53sp}X>5gq}1!_8NszC;VeiO7EQFmz7ne~P_4H;UvVBb!Z9%-{2 zGfH5szxr? zk_E&$VA1t(wbr=zVvai9J2aSCY)0(rE-Xo>HG}q$p|LrI?!CBC$wXn&lWYS|< z2$+@w({Tnfh-xc2AZGQYIWRcpT5XATY#ARVGM#-f+*~-{w`1WXi@da{1{rkJzHh}M zIUtr+z3cxVTqP`3l)ivxhS?FnR8cM)fUs0-Co!G6fMOG^X!7LF*Uv)0zqkSIOO_|=Ot z%!}Kk1)5X8wj{&sNU~`&a~{jYh5W`NH91TDl@&dfiIbP@7(AqWl}3gP8UDfef6a}~ Uz8pvD7XSbN07*qoM6N<$f=jCuaR2}S literal 0 HcmV?d00001