package Ġid . ps w . v sh launcher Ċ Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . net . Uri Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . InputType Ċ import Ġandroid . text . method . Digits Key Listener Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . Toast Ċ import Ġid . ps w . v sh launcher . custom types . Hex Input Filter Ċ import Ġid . ps w . v sh launcher . ic ont ypes . X MB Icon Ċ import Ġid . ps w . v sh launcher . ic ont ypes . create Menu Ċ import Ġid . ps w . v sh launcher . medi ap layer . X MB Audio Player Service Ċ import Ġid . ps w . v sh launcher . views . V sh View Ċ Ċ /** Ċ Ġ* ĠA Ġfile Ġthat Ġcontains Ġextensions Ġfor Ġthe Ġmain ĠV SH ĠActivity Ċ Ġ* ĠDue Ġto Ġthe Ġmain Ġclass Ġis Ġtoo Ġblo ated Ġfor Ġmy ĠPC Ġto Ġload Ċ Ġ*/ Ċ val ĠNO PE Ġ= Ġ 0 Ċ Ċ val ĠUN INSTALL _ REQ _ CODE Ġ: ĠInt Ġget () Ġ= Ġ 2 9 7 3 4 Ċ Ċ fun ĠV SH . uninstall App ( packageName : String ){ ĊĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ DELETE ) ĊĠĠĠĠĠĠĠ Ġintent . data Ġ= ĠUri . from Parts (" package ", ĠpackageName , Ġnull ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Intent . EXTRA _ RETURN _ RESULT , Ġtrue ) ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠUN INSTALL _ REQ _ CODE ) ĊĠĠĠ Ġ} catch ( e : Exception ){ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Failed Ġto Ġuninstall Ġapp : Ġ${ e . message }", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠV SH . run On Other Thread ( what Ġ: Ġ() Ġ-> ĠUnit ) Ġ: ĠThread Ġ{ ĊĠĠĠ Ġval Ġthr Ġ= ĠThread Ġ{ ĊĠĠĠĠĠĠĠ Ġwhat . invoke () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġthr . start () ĊĠĠĠ Ġreturn Ġthr Ċ } Ċ Ċ fun ĠV SH . launch URL ( url : String ){ ĊĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( Intent . ACTION _ VIEW , ĠUri . parse ( url ))) ĊĠĠĠ Ġ} catch ( e : ĠPackage Manager . Name NotFoundException ){ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" No Ġdefault Ġbrowser Ġfound Ġin Ġdevice .", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** ĠTODO : ĠExtend Ġto Ġuse ĠX MB - like Ġdialog Ġinstead Ġ*/ Ċ fun ĠV SH . show BackgroundColor Dialog (){ ĊĠĠĠ Ġval ĠtextView Ġ= ĠEditText ( this ) ĊĠĠĠ Ġval Ġcurrent Color Ġ= ĠV sh View . menu BackgroundColor . toString ( 1 6 ) ĊĠĠĠ ĠtextView . input Type = ĠInput Type . TYPE _ TEXT _ FLAG _ CAP _ CHAR ACT ERS ĊĠĠĠ ĠtextView . filters Ġ= ĠarrayOf ( Hex Input Filter ()) ĊĠĠĠ ĠtextView . text . clear () ĊĠĠĠ ĠtextView . text . append ("# $ currentColor ") ĊĠĠĠ ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠ Ġ. setView ( textView ) ĊĠĠĠĠĠĠĠ Ġ. set Positive Button (" Set "){ Ġdialog ,_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠV sh View . menu BackgroundColor Ġ= ĠtextView . text . toString (). hex Color ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprefs . edit (). put Int ( V SH . PRE F _ BACKGROUND _ COLOR , ĠV sh View . menu BackgroundColor ). apply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch ( e : Exception ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġe . message , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. set Negative Button (" Cancel "){ Ġdialog ,_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. setTitle (" Set ĠMenu ĠBackground ĠColor ") ĊĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠ Ġ. show () Ċ } Ċ Ċ fun ĠV SH . set Hidden Clock ( boolean : ĠBoolean ){ ĠV sh View . hide Clock Ġ= Ġboolean ; Ġprefs . edit (). put Boolean ( V SH . PRE F _ HIDE _ CLOCK , Ġboolean ). apply () Ġ} Ċ fun ĠV SH . set Hidden Clock (){ Ġset Hidden Clock (! V sh View . hide Clock ) Ġ} Ċ Ċ fun ĠV SH . set Separator Line ( boolean : ĠBoolean ){ ĠV sh View . description Separator Ġ= Ġboolean ; Ġprefs . edit (). put Boolean ( V SH . PRE F _ SHOW _ SEPARATOR , Ġboolean ). apply () Ġ} Ċ fun ĠV SH . set Separator Line (){ Ġset Separator Line ( Ġ! V sh View . description Separator ) Ġ} Ċ Ċ fun ĠV SH . set BackgroundColor ( a : Int , r : Int , g : Int , b : Int ){ ĊĠĠĠ Ġval Ġf Color Ġ= ĠColor . arg b ( a , r , g , b ) ĊĠĠĠ ĠV sh View . menu BackgroundColor Ġ= Ġf Color ĊĠĠĠ Ġprefs . edit (). put Int ( V SH . PRE F _ BACKGROUND _ COLOR , ĠV sh View . menu BackgroundColor ). apply () Ċ } Ċ Ċ fun ĠV SH . pre Made Colors ( icon : X MB Icon ) Ġ: ĠX MB Icon . Menu Entry Builder Ġ{ ĊĊĠĠĠ Ġreturn Ġicon . create Menu () ĊĠĠĠĠĠĠĠ Ġ. add (" Clear "){ ĠĠĠĠĠĠĠĠĠ Ġset BackgroundColor ( ĠĠĠ 0 , Ġ 2 5 5 , Ġ 2 5 5 , Ġ 2 5 5 )} ĊĠĠĠĠĠĠĠ Ġ. add (" 5 0 % ĠRed "){ ĠĠĠĠĠĠĠ Ġset BackgroundColor ( Ġ 1 2 8 , Ġ 2 5 5 , ĠĠĠ 0 , ĠĠĠ 0 )} ĊĠĠĠĠĠĠĠ Ġ. add (" 5 0 % ĠGreen "){ ĠĠĠĠĠ Ġset BackgroundColor ( Ġ 1 2 8 , ĠĠĠ 0 , Ġ 2 5 5 , ĠĠĠ 0 )} ĊĠĠĠĠĠĠĠ Ġ. add (" 5 0 % ĠBlue "){ ĠĠĠĠĠĠ Ġset BackgroundColor ( Ġ 1 2 8 , ĠĠĠ 0 , ĠĠĠ 0 , Ġ 2 5 5 )} ĊĠĠĠĠĠĠĠ Ġ. add (" 5 0 % ĠBlack "){ ĠĠĠĠĠ Ġset BackgroundColor ( Ġ 1 2 8 , ĠĠĠ 0 , ĠĠĠ 0 , ĠĠĠ 0 )} ĊĠĠĠĠĠĠĠ Ġ. add (" 5 0 % ĠWhite "){ ĠĠĠĠĠ Ġset BackgroundColor ( Ġ 1 2 8 , Ġ 2 5 5 , Ġ 2 5 5 , Ġ 2 5 5 )} ĊĠĠĠĠĠĠĠ Ġ. add (" Opaque ĠRed "){ ĠĠĠĠ Ġset BackgroundColor ( Ġ 2 5 5 , Ġ 2 5 5 , ĠĠĠ 0 , ĠĠĠ 0 )} ĊĠĠĠĠĠĠĠ Ġ. add (" Opaque ĠGreen "){ ĠĠ Ġset BackgroundColor ( Ġ 2 5 5 , ĠĠĠ 0 , Ġ 2 5 5 , ĠĠĠ 0 )} ĊĠĠĠĠĠĠĠ Ġ. add (" Opaque ĠBlue "){ ĠĠĠ Ġset BackgroundColor ( Ġ 2 5 5 , ĠĠĠ 0 , ĠĠĠ 0 , Ġ 2 5 5 )} ĊĠĠĠĠĠĠĠ Ġ. add (" Opaque ĠBlack "){ ĠĠ Ġset BackgroundColor ( Ġ 2 5 5 , ĠĠĠ 0 , ĠĠĠ 0 , ĠĠĠ 0 )} ĊĠĠĠĠĠĠĠ Ġ. add (" Opaque ĠWhite "){ ĠĠ Ġset BackgroundColor ( Ġ 2 5 5 , Ġ 2 5 5 , Ġ 2 5 5 , Ġ 2 5 5 )} Ċ } Ċ Ċ fun ĠV SH . try Connect To Music Player Service (){ ĊĠĠĠ Ġbind Service ( Intent ( this , ĠX MB Audio Player Service :: class . java ), Ġaudio Player Connector , ĠContext . BIND _ AUTO _ CREATE ) Ċ }