package Ġcom . dit ron ic . secure zip notes . dialogs Ċ Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . InputType Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroid . widget . EditText Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġcom . dit ron ic . secure zip notes . password . Pw Manager Ċ import Ġcom . dit ron ic . secure zip notes . password . Pw Request Ċ import Ġcom . dit ron ic . secure zip notes . password . Pw Result Ċ import Ġcom . dit ron ic . secure zip notes . zip . Crypto Zip ĊĊ Ċ class ĠP w Dialog : ĠShort Life Dialog Fragment < Pw Request >() Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= ĠFragment Tag (" Pw Dialog ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġedit Text : ĠEditText ĊĊĠĠĠ Ġoverride Ġfun Ġget Fragment Tag () Ġ= ĠTAG ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Dialog ( savedInstanceState : ĠBundle ?, Ġstate : ĠP w Request ): ĠDialog Ġ{ ĊĠĠĠĠĠĠĠ Ġedit Text Ġ= ĠEditText ( require Context ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( require Context ()) ĊĠĠĠĠĠĠĠ Ġbuilder . setTitle (" Master Ġpassword :") ĊĠĠĠĠĠĠĠ Ġedit Text . input Type Ġ= ĠInput Type . TYPE _ CLASS _ TEXT Ġor ĠInput Type . TYPE _ TEXT _ VARI ATION _ PASSWORD ĊĠĠĠĠĠĠĠ Ġedit Text . hint Ġ= Ġ" Master Ġpassword " ĊĠĠĠĠĠĠĠ Ġbuilder . setView ( edit Text ) ĊĠĠĠĠĠĠĠ Ġbuilder . set Positive Button ( android . R . string . ok , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Neutral Button ( android . R . string . cancel ) Ġ{ Ġdialog , Ġ_ Ġ-> Ġdialog . cancel () Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġbuilder . create () ĊĠĠĠĠĠĠĠ Ġedit Text . setOn Editor ActionListener Ġ{ Ġ_, Ġaction Id , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Id Ġ== ĠEditor Info . IME _ ACTION _ DONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Positive Button Click () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn Editor ActionListener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġdialog . window ĊĠĠĠĠĠĠĠ Ġwindow ?. set Soft Input Mode ( WindowManager . LayoutParams . SOFT _ INPUT _ STATE _ ALWAYS _ VISIBLE ) ĊĠĠĠĠĠĠĠ Ġedit Text . request Focus () ĊĠĠĠĠĠĠĠ Ġreturn Ġdialog ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġval Ġpositive Button Ġ= Ġ( dialog Ġas ĠAlertDialog ). get Button ( AlertDialog . BUTTON _ POSITIVE ) ĊĠĠĠĠĠĠĠ Ġpositive Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Positive Button Click () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Positive Button Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpw Request Ġ= Ġfetch State Or Die () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġtyped Password Ġ= Ġedit Text . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġzip Stream Ġ= ĠCrypto Zip . instance ( require Activity ()). is Password Valid ( pw Request . file Header , Ġtyped Password ) ĊĠĠĠĠĠĠĠ Ġif Ġ( zip Stream Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . error Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP w Manager . save User Provided Password ( require Activity (), ĠP w Result . Success ( inputStream Ġ= Ġzip Stream , Ġpassword Ġ= Ġtyped Password ), Ġpw Request . continu ation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . error Ġ= Ġ" Wrong Ġpassword " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ