package Ġcash . z . ecc . android . sdk . demo app Ċ Ċ import Ġandroid . content . Clipboard Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . core . content . getSystem Service Ċ import Ġandroidx . drawer layout . widget . Drawer Layout Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . navigation . ui . AppBar Configuration Ċ import Ġandroidx . navigation . ui . navigate Up Ċ import Ġandroidx . navigation . ui . setup ActionBar With Nav Controller Ċ import Ġandroidx . navigation . ui . setup With Nav Controller Ċ import Ġandroidx . view binding . View Binding Ċ import Ġcash . z . ecc . android . sdk . service . Light Wallet Grpc Service Ċ import Ġcash . z . ecc . android . sdk . service . Light Wallet Service Ċ import Ġcom . google . android . material . floating action button . Floating ActionButton Ċ import Ġcom . google . android . material . navigation . Navigation View Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠClip board Manager . On Primary Clip Changed Listener , ĊĠĠĠ ĠDraw er Layout . Drawer Listener Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġapp Bar Configuration : ĠApp Bar Configuration ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġclipboard : ĠClip board Manager ĊĠĠĠ Ġprivate Ġvar Ġclipboard Listener : Ġ(( String ?) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġvar Ġfab Listener : ĠBase Demo Fragment < out ĠView Binding >? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġservice Ġto Ġuse Ġfor Ġall Ġde mos Ġthat Ġinteract Ġdirectly Ġwith Ġthe Ġservice . ĠSince ĠgRPC Ġchannels ĊĠĠĠĠ Ġ* Ġare Ġexpensive Ġto Ġrecreate , Ġwe Ġset Ġthis Ġup Ġonce Ġper Ġdemo . ĠA Ġreal Ġapp Ġwould Ġhard ly Ġever Ġuse ĊĠĠĠĠ Ġ* Ġthis Ġobject Ġbecause Ġit Ġwould Ġutilize Ġthe Ġsynchron izer , Ġinstead , Ġwhich Ġexposes ĠAPIs Ġthat ĊĠĠĠĠ Ġ* Ġautomatically Ġsync Ġwith Ġthe Ġserver . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġlight wallet Service : ĠLight Wallet Service ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġclipboard Ġ= Ġget System Service ( Context . CLIP BOARD _ SERVICE ) Ġas ĠClip board Manager ĊĠĠĠĠĠĠĠ Ġclipboard . add Primary Clip Changed Listener ( this ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġval Ġtoolbar : ĠToolbar Ġ= ĠfindViewById ( R . id . toolbar ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfab : ĠFloating ActionButton Ġ= ĠfindViewById ( R . id . fab ) ĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Fab Clicked ( view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdrawer Layout : ĠDraw er Layout Ġ= ĠfindViewById ( R . id . drawer _ layout ) ĊĠĠĠĠĠĠĠ Ġval Ġnav View : ĠNavigation View Ġ= ĠfindViewById ( R . id . nav _ view ) ĊĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġfind Nav Controller ( R . id . nav _ host _ fragment ) ĊĠĠĠĠĠĠĠ Ġ// ĠPass ing Ġeach Ġmenu ĠID Ġas Ġa Ġset Ġof ĠI ds Ġbecause Ġeach ĊĠĠĠĠĠĠĠ Ġ// Ġmenu Ġshould Ġbe Ġconsidered Ġas Ġtop Ġlevel Ġdest inations . ĊĠĠĠĠĠĠĠ Ġapp Bar Configuration Ġ= ĠApp Bar Configuration ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ home , ĠR . id . nav _ address , ĠR . id . nav _ block , ĠR . id . nav _ private _ key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ latest _ height , ĠR . id . nav _ block _ range , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ transactions , ĠR . id . nav _ ut x os , ĠR . id . nav _ send ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġdrawer Layout ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsetup ActionBar With Nav Controller ( nav Controller , Ġapp Bar Configuration ) ĊĠĠĠĠĠĠĠ Ġnav View . setup With Nav Controller ( nav Controller ) ĊĠĠĠĠĠĠĠ Ġdrawer Layout . add Drawer Listener ( this ) ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġinit Service () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġlight wallet Service ?. shutdown () ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġmenu ; Ġthis Ġadds Ġitems Ġto Ġthe Ġaction Ġbar Ġif Ġit Ġis Ġpresent . ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( item . itemId Ġ== ĠR . id . action _ settings ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġfind Nav Controller ( R . id . nav _ host _ fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigate ( R . id . nav _ home ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Support Navigate Up (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġfind Nav Controller ( R . id . nav _ host _ fragment ) ĊĠĠĠĠĠĠĠ Ġreturn Ġnav Controller . navigate Up ( app Bar Configuration ) Ġ|| Ġsuper . on Support Navigate Up () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠPrivate Ġfunctions ĊĠĠĠ Ġ// ĊĠĠĠĠĊĠĠĠ Ġprivate Ġfun Ġinit Service () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( light wallet Service Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlight wallet Service ?. shutdown () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwith ( App . instance . default Config ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlight wallet Service Ġ= ĠLight Wallet Grpc Service ( App . instance , Ġhost , Ġport ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Fab Clicked ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfab Listener ?. on ActionButton Clicked () ĊĠĠĠ Ġ} ĊĊĠĠĠĠĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠHelpers ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġfun Ġget Clipboard Text (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwith ( clipboard ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! has Primary Clip ()) Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġprimary Clip !!. getItem At ( 0 )?. coerce ToText ( this @ MainActivity )?. toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Primary Clip Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġclipboard Listener ?. invoke ( get Clipboard Text ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Clipboard Listener ( block : Ġ( String ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclipboard Listener Ġ= Ġblock ĊĠĠĠĠĠĠĠ Ġblock ( get Clipboard Text ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Clipboard Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġclipboard Listener Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhide Keyboard () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwindow Token Ġ= Ġwindow . decor View . root View . window Token ĊĠĠĠĠĠĠĠ Ġget System Service < Input Method Manager >() ?. hide Soft Input From Window ( window Token , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/* ĠDraw er Listener Ġimplementation Ġ*/ ĊĊĠĠĠ Ġoverride Ġfun Ġon Drawer StateChanged ( newState : ĠInt ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Drawer Slide ( drawer View : ĠView , Ġslide Offset : ĠFloat ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Drawer Closed ( drawer View : ĠView ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Drawer Opened ( drawer View : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠ Ġ} Ċ } Ċ