[solved]What is wrong with this toggle password fields code?
Posted: Fri Sep 25, 2020 8:51 pm
I have the following code to change a password in an app. The problem is that pressing the toggle buttons (to show/hide the password) their behavior is not the one it should be. Any ideas why?
The images are here:
http://users.sch.gr/arahiotis/other/hide.png
http://users.sch.gr/arahiotis/other/show.png
Code: Select all
UsePNGImageDecoder()
Enumeration
#PasswordWindow
#Pwd_txt_passwordCurrent
#Pwd_txt_passwordNew
#Pwd_txt_passwordNew2
#Pwd_str_Current
#Pwd_str_passwordNew
#Pwd_str_passwordNew2
#Pwd_frm
#Pwd_btn_show_pass_current
#Pwd_btn_show_pass_new
#Pwd_btn_save
#Pwd_btn_return
EndEnumeration
Global ShowPassIcon = CatchImage(#PB_Any, ?ShowPassStart, ?ShowPassEnd - ?ShowPassStart)
Global HidePassIcon = CatchImage(#PB_Any, ?HidePassStart, ?HidePassEnd - ?HidePassStart)
Procedure TogglePassword(Gdt.l, GdtToggle.l, ChangeToggle=0)
Protected tmppass.s, tmpx.l, tmpy.l, tmpw.l, tmph.l
tmppass.s = GetGadgetText(Gdt)
tmpx = GadgetX(Gdt)
tmpy = GadgetY(Gdt)
tmpw = GadgetWidth(Gdt)
tmph = GadgetHeight(Gdt)
If ChangeToggle > 0
tmpx2 = GadgetX(GdtToggle)
tmpy2 = GadgetY(GdtToggle)
tmpw2 = GadgetWidth(GdtToggle)
tmph2 = GadgetHeight(GdtToggle)
EndIf
FreeGadget(Gdt)
Debug GetGadgetState(GdtToggle)
If GetGadgetState(GdtToggle) = 0
StringGadget(Gdt, tmpx, tmpy, tmpw, tmph, tmppass, #PB_String_Password)
If ChangeToggle > 0
ButtonImageGadget(GdtToggle, tmpx2, tmpy2, tmpw2, tmph2,ImageID(ShowPassIcon),#PB_Button_Toggle)
SetGadgetState(GdtToggle,~GetGadgetState(GdtToggle))
EndIf
Else
StringGadget(Gdt, tmpx, tmpy, tmpw, tmph, tmppass)
If ChangeToggle > 0
ButtonImageGadget(GdtToggle, tmpx2, tmpy2, tmpw2, tmph2,ImageID(HidePassIcon),#PB_Button_Toggle)
SetGadgetState(GdtToggle,~GetGadgetState(GdtToggle))
EndIf
EndIf
Debug GetGadgetState(GdtToggle)
Debug "******"
;SetGadgetText(Gdt, tmppass)
EndProcedure
If OpenWindow(#PasswordWindow,0,0,480,180,"change password", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
FrameGadget(#Pwd_frm,10,5,460,135,"change current password")
TextGadget(#Pwd_txt_passwordCurrent, 15, 25, 220, 21, "give current password")
StringGadget(#Pwd_str_Current, 260, 25, 180, 22, "current", #PB_String_Password)
TextGadget(#Pwd_txt_passwordNew, 15, 55,230, 21, "give new password")
StringGadget(#Pwd_str_passwordNew, 260, 55, 180, 22, "pass 1", #PB_String_Password)
TextGadget(#Pwd_txt_passwordNew2, 15, 85, 240, 21, "confirm new password")
StringGadget(#Pwd_str_passwordNew2, 260, 85, 180, 22, "pass 2", #PB_String_Password)
ButtonImageGadget(#Pwd_btn_show_pass_current, 440, 24, 26, 24,ImageID(ShowPassIcon) , #PB_Button_Toggle)
ButtonImageGadget(#Pwd_btn_show_pass_new, 440, 54, 26, 24,ImageID(ShowPassIcon) , #PB_Button_Toggle)
ButtonGadget(#Pwd_btn_return, (WindowWidth(#PasswordWindow)-80)/2,WindowHeight(#PasswordWindow)-35 , 80, 25, "return")
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Gadget
Select EventGadget()
Case #Pwd_btn_show_pass_current
TogglePassword(#Pwd_str_Current,#Pwd_btn_show_pass_current,1)
Case #Pwd_btn_show_pass_new
TogglePassword(#Pwd_str_passwordNew,#Pwd_btn_show_pass_new,1)
TogglePassword(#Pwd_str_passwordNew2,#Pwd_btn_show_pass_new)
EndSelect
EndSelect
Until Quit = 1
EndIf
DataSection
ShowPassStart:
IncludeBinary "show.png"
ShowPassEnd:
HidePassStart:
IncludeBinary "hide.png"
HidePassEnd:
EndDataSection
End
http://users.sch.gr/arahiotis/other/hide.png
http://users.sch.gr/arahiotis/other/show.png