package Ġdev . dan jackson . noise cancel Ċ Ċ import Ġandroid . bluetooth . Bluetooth Adapter Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Adapter View . On ItemClickListener Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . content . pm . Shortcut Info Compat Ċ import Ġandroidx . core . content . pm . Shortcut Manager Compat Ċ import Ġandroidx . core . graphics . drawable . Icon Compat Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġkotlinx . android . synt hetic . main . content _ main .* ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsettings : ĠSettings ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġsettings Ġ= ĠSettings . getInstance ( application Context ) ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġsend . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun (" off ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdevice _ list . on ItemClickListener Ġ= ĠOn ItemClickListener Ġ{ Ġadapter , Ġ_, Ġposition , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdevice Ġ= Ġadapter . getItem At Position ( position ) Ġas ĠDevice ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprompt Remove Device ( device ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsettings . devices Data . observe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObserver Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠDon 't Ġrecreate Ġthe Ġadapter Ġon Ġupdate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter : ĠArray Adapter < Device > Ġ= Ġobject Ġ: ĠArray Adapter < Device >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . layout . simple _ list _ item _ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . text 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . devices Data . value . or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠconvertView : ĠView ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent : ĠViewGroup ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview : ĠView Ġ= Ġsuper . getView ( position , ĠconvertView , Ġparent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . findViewById < TextView >( android . R . id . text 1 ). text Ġ= Ġ"\ uD 8 3 C \ uD FA 7 Ġ Ġ${ settings . devices Data . value ?. get ( position )?. name }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . findViewById < TextView >( android . R . id . text 2 ). text Ġ= Ġ"${ settings . devices Data . value ?. get ( position )?. type ?. fullName }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice _ list . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// adapter . notify DataSet Changed () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel _ no _ devices . visibility Ġ= Ġif Ġ( it . isEmpty ()) ĠTextView . VISIBLE Ġelse ĠTextView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTODO : ĠChange ĠUI Ġso Ġadding Ġa Ġdevice Ġis Ġits Ġown Ġactivity Ġrather Ġthan Ġtwo Ġdialog Ġboxes ĊĠĠĠ Ġprivate Ġfun Ġadd Device () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! settings . ag reed Dis claimer ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Dis claimer 1 () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchoose DeviceType () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchoose DeviceType () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdevice Types Ġ= Ġmutable Map Of < String , ĠString >() ĊĠĠĠĠĠĠĠ Ġdevice Types [ DeviceType . NC 7 0 0 . toString ()] Ġ= ĠgetString ( R . string . settings _ device _ type _ 7 0 0 ) ĊĠĠĠĠĠĠĠ Ġdevice Types [ DeviceType . QC 3 5 . toString ()] Ġ= ĠgetString ( R . string . settings _ device _ type _ qc 3 5 ) ĊĠĠĠĠĠĠĠ Ġdevice Types [ DeviceType . Q CE . toString ()] Ġ= ĠgetString ( R . string . settings _ device _ type _ q ce ) ĊĠĠĠĠĠĠĠ Ġdevice Types [ DeviceType . QC 4 5 . toString ()] Ġ= ĠgetString ( R . string . settings _ device _ type _ qc 4 5 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdevice Types List Ġ= Ġdevice Types . keys . toList () ĊĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġdevice Types List . map Ġ{ Ġkey Ġ-> Ġdevice Types [ key ] Ġ}. to Typed Array () ĊĊĠĠĠĠĠĠĠ Ġ// ĠUser Ġch oo ses ĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( getString ( R . string . settings _ choose _ device _ type )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Single Choice Items ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdevice Type Ġ= ĠDevice Type . fromString ( device Types List [ which ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchoose Device ( device Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchoose Device ( device Type : ĠDevice Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠMap Ġof Ġaddresses Ġto Ġnames ĊĠĠĠĠĠĠĠ Ġval Ġdevices Ġ= Ġmutable Map Of < String , ĠString ?> () ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġbon ded Ġdevices ĊĠĠĠĠĠĠĠ Ġval Ġbon ded Devices Ġ= ĠBluetooth Adapter . getDefault Adapter ()?. bon ded Devices . or Empty () ĊĠĠĠĠĠĠĠ Ġbon ded Devices . forEach Ġ{ Ġbluetooth Device Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevices [ bluetooth Device . address ] Ġ= Ġbluetooth Device . name . or Empty () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdevice Address List Ġ= Ġdevices . keys . toList () ĊĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġdevice Address List . map Ġ{ Ġkey Ġ-> Ġ"${ devices [ key ]} Ġ< ${ key }> " Ġ}. to Typed Array () ĊĊĠĠĠĠĠĠĠ Ġ// ĠUser Ġch oo ses ĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( getString ( R . string . settings _ choose _ device )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Single Choice Items ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= Ġdevice Address List [ which ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġdevices [ address ]. or Empty () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . add Device ( device Type , Ġaddress , Ġname ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Dis claimer 1 () Ġ{ ĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( getString ( R . string . dis claimer 1 _ title )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( getString ( R . string . dis claimer 1 _ message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( getString ( R . string . dis claimer 1 _ accept ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Dis claimer 2 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( getString ( R . string . dis claimer 1 _ cancel )) Ġ{ Ġ_, Ġ_ Ġ-> Ġrun Ġ{} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Dis claimer 2 () Ġ{ ĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( getString ( R . string . dis claimer 2 _ title )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( getString ( R . string . dis claimer 2 _ message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( getString ( R . string . dis claimer 2 _ accept ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchoose DeviceType () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( getString ( R . string . dis claimer 2 _ cancel )) Ġ{ Ġ_, Ġ_ Ġ-> Ġrun Ġ{} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprompt Remove Device ( device : ĠDevice ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Remove ?") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage (" Remove Ġdevice : Ġ${ device . name }? ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button (" Remove ") Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . remove Device ( device . address ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button (" Cancel ") Ġ{ Ġ_, Ġ_ Ġ-> Ġrun Ġ{} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure () Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Device () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrun ( level : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( settings . devices . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠSend Service :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" level ", Ġlevel ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSend Service . enqueue Work ( application Context , Ġintent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpin Shortcut ( id : ĠString , Ġicon Id : ĠInt , Ġshort Label : ĠInt , Ġlong Label : ĠInt , Ġlevel : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Shortcut Manager Compat . is Request Pin Shortcut Supported ( application Context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Ġ= ĠIcon Compat . create With Resource ( application Context , Ġicon Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpin Shortcut Info Ġ= ĠShort cut Info Compat . Builder ( application Context , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIcon ( icon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Short Label ( getString ( short Label )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Long Label ( getString ( long Label )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Intent ( Intent ( application Context , ĠQuick Start :: class . java ). setAction ( Intent . ACTION _ VIEW ). putExtra (" level ", Ġlevel )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShort cut Manager Compat . request Pin Shortcut ( application Context , Ġpin Shortcut Info , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Shortcut Ġpin ning Ġnot Ġsupported ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . P ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . set Group Divider Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ nc _ off Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun (" off ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ settings Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ nc _ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun (" 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ nc _ 5 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun (" 5 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ nc _ 1 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun (" 1 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ pin _ shortcut _ nc _ off Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Shortcut (" nc _ off ", ĠR . mip map . ic _ quick _ launcher _ off , ĠR . string . nc _ off _ shortcut _ short _ label , ĠR . string . nc _ off _ shortcut _ long _ label , Ġ" off ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ pin _ shortcut _ nc _ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Shortcut (" nc _ 0 ", ĠR . mip map . ic _ quick _ launcher _ 0 , ĠR . string . nc _ 0 _ shortcut _ short _ label , ĠR . string . nc _ 0 _ shortcut _ long _ label , Ġ" 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ pin _ shortcut _ nc _ 5 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Shortcut (" nc _ 5 ", ĠR . mip map . ic _ quick _ launcher _ 5 , ĠR . string . nc _ 5 _ shortcut _ short _ label , ĠR . string . nc _ 5 _ shortcut _ long _ label , Ġ" 5 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ pin _ shortcut _ nc _ 1 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Shortcut (" nc _ 1 0 ", ĠR . mip map . ic _ quick _ launcher _ 1 0 , ĠR . string . nc _ 1 0 _ shortcut _ short _ label , ĠR . string . nc _ 1 0 _ shortcut _ long _ label , Ġ" 1 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }