package Ġcom . fin nm glas . launcher Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . AsyncTask Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . view .* Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . view . Gesture Detector Compat Ċ import Ġcom . fin nm glas . launcher . tutorial . Tutorial Activity Ċ import Ġkotlinx . android . synt hetic . main . home .* Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġkotlin . concurrent . fixed Rate Timer Ċ import Ġkotlin . math . abs Ċ import Ġcom . fin nm glas . launcher . Build Config . VERSION _ NAME Ċ Ċ /** Ċ Ġ* Ġ[ Home Activity ] Ġis Ġthe Ġactual Ġapplication ĠLaunch er , Ċ Ġ* Ġwhat Ġmakes Ġthis Ġapplication Ġspecial Ġ/ Ġunique . Ċ Ġ* Ċ Ġ* ĠIn Ġthis Ġactivity Ġwe Ġdisplay Ġthe Ġdate Ġand Ġtime , Ċ Ġ* Ġand Ġwe Ġlisten Ġfor Ġactions Ġlike Ġt apping , Ġsw ip ing Ġor Ġbutton Ġp resses . Ċ Ġ* Ċ Ġ* ĠAs Ġit Ġalso Ġis Ġthe Ġfirst Ġthing Ġthat Ġis Ġstarted Ġwhen Ġsomeone Ġopens ĠLaunch er , Ċ Ġ* Ġit Ġalso Ġcontains Ġsome Ġlogic Ġrelated Ġto Ġthe Ġoverall Ġapplication : Ċ Ġ* Ġ- ĠSetting Ġglobal Ġvariables Ġ( preferences Ġetc .) Ċ Ġ* Ġ- ĠOpen ing Ġthe Ġ[ Tutorial Activity ] Ġon Ġnew Ġinstall ations Ċ Ġ*/ Ċ class ĠHome Activity : ĠUI Object , ĠAppCompatActivity (), ĊĠĠĠ ĠGest ure Detector . On Gesture Listener , ĠGest ure Detector . On Double Tap Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġbuffered Pointer Count Ġ= Ġ 1 Ġ// Ġhow Ġmany Ġf ingers Ġon Ġscreen ĊĠĠĠ Ġprivate Ġvar Ġpointer Buffer Timer Ġ= ĠTimer () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Detector : ĠGest ure Detector Compat ĊĊĠĠĠ Ġ// Ġtimers ĊĠĠĠ Ġprivate Ġvar Ġclock Timer Ġ= ĠTimer () ĊĠĠĠ Ġprivate Ġvar Ġtooltip Timer Ġ= ĠTimer () ĊĊĠĠĠ Ġprivate Ġvar Ġsettings Icon Shown Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInitial ise Ġglobals ĊĠĠĠĠĠĠĠ Ġlauncher Preferences Ġ= Ġthis . get SharedPreferences ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . preference _ file _ key ), ĠContext . MODE _ PRIVATE ) ĊĊĠĠĠĠĠĠĠ Ġwindow Manager . default Display . get Metrics ( display Metrics ) ĊĊĠĠĠĠĠĠĠ Ġload Settings () ĊĊĠĠĠĠĠĠĠ Ġ// ĠFirst Ġtime Ġopening Ġthe Ġapp : Ġshow ĠTutorial , Ġelse : Ġcheck Ġversions ĊĠĠĠĠĠĠĠ Ġif Ġ(! launcher Preferences . getBoolean ( PRE F _ STARTED , Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠTutorial Activity :: class . java )) ĊĠĠĠĠĠĠĠ Ġelse Ġwhen Ġ( launcher Preferences . getString ( PRE F _ VERSION , Ġ"")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCheck Ġversions , Ġmake Ġsure Ġtransitions Ġbetween Ġversions Ġgo Ġwell ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠVERSION _ NAME Ġ-> Ġ{ Ġ/* Ġthe Ġversion Ġinstalled Ġand Ġused Ġpreviously Ġare Ġthe Ġsame Ġ*/ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" Ġ-> Ġ{ Ġ/* ĠThe Ġversion Ġused Ġbefore Ġwas Ġpre - Ġv 1 . 3 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġas Ġversion Ġtracking Ġstarted Ġthen Ġ*/ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġbefore , Ġthe Ġdom inant Ġand Ġvi br ant Ġcolor Ġof Ġthe Ġ` fin n ` Ġand Ġ` dark ` Ġtheme ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġwere Ġnot Ġstored Ġanywhere . ĠNow Ġthey Ġhave Ġto Ġbe Ġstored : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ-> Ġwe Ġjust Ġreset Ġthem Ġusing Ġnewly Ġimplemented Ġfunctions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( get Saved Theme ( this )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fin n " Ġ-> Ġreset To Default Theme ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" dark " Ġ-> Ġreset To Dark Theme ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlauncher Preferences . edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putString ( PRE F _ VERSION , ĠVERSION _ NAME ) Ġ// Ġsave Ġnew Ġversion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshow Ġthe Ġnew Ġtutorial ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠTutorial Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠPre load Ġapps Ġto Ġspeed Ġup Ġthe ĠApps ĠRe cycler ĊĠĠĠĠĠĠĠ ĠAsync Task . execute Ġ{ Ġload Apps ( package Manager ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠInitial ise Ġlayout ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . home ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart (){ ĊĠĠĠĠĠĠĠ Ġsuper < AppCompatActivity >. onStart () ĊĊĠĠĠĠĠĠĠ Ġm Detector Ġ= ĠGest ure Detector Compat ( this , Ġthis ) ĊĠĠĠĠĠĠĠ Ġm Detector . setOn Double Tap Listener ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġfor Ġif Ġthe Ġsettings Ġchanged ĊĠĠĠĠĠĠĠ Ġload Settings () ĊĠĠĠĠĠĠĠ Ġsuper < UI Object >. onStart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( home _ background _ image Ġ!= Ġnull Ġ&& Ġget Saved Theme ( this ) Ġ== Ġ" custom ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome _ background _ image . setImage Bitmap ( background ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠApply ing Ġthe Ġdate Ġ/ Ġtime Ġformat Ġ( change able Ġin Ġsettings ) ĊĠĠĠĠĠĠĠ Ġval Ġd Format Ġ= Ġlauncher Preferences . getInt ( PRE F _ DATE _ FORMAT , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġupper FMT Ġ= Ġresources . getString Array ( R . array . settings _ launcher _ time _ formats _ upper ) ĊĠĠĠĠĠĠĠ Ġval Ġlower FMT Ġ= Ġresources . getString Array ( R . array . settings _ launcher _ time _ formats _ lower ) ĊĊĠĠĠĠĠĠĠ Ġval ĠdateFormat Ġ= ĠSimpleDateFormat ( upper FMT [ d Format ], ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠ Ġval Ġtime Format Ġ= ĠSimpleDateFormat ( lower FMT [ d Format ], ĠLocale . getDefault ()) ĊĊĠĠĠĠĠĠĠ Ġclock Timer Ġ= Ġfixed Rate Timer (" clock Timer ", Ġtrue , Ġ 0 L , Ġ 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Home Activity . run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt Ġ= Ġtime Format . format ( Date ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( home _ lower _ view . text Ġ!= Ġt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhome _ lower _ view . text Ġ= Ġt ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Ġ= ĠdateFormat . format ( Date ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( home _ upper _ view . text Ġ!= Ġd ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhome _ upper _ view . text Ġ= Ġd ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġclock Timer . cancel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon KeyDown ( keyCode : ĠInt , Ġevent : ĠKeyEvent ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( keyCode Ġ== ĠKeyEvent . KEYCODE _ BACK ) Ġ{ Ġif Ġ( settings Icon Shown ) Ġhide Settings Icon () Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( keyCode Ġ== ĠKeyEvent . KEYCODE _ VOLUME _ UP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch ( volume Up App , Ġthis , 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( keyCode Ġ== ĠKeyEvent . KEYCODE _ VOLUME _ DOWN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch ( volume Down App , Ġthis , 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Fl ing ( e 1 : ĠMotion Event , Ġe 2 : ĠMotion Event , Ġd X : ĠFloat , Ġd Y : ĠFloat ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġdisplay Metrics . width Pixels ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġdisplay Metrics . height Pixels ĊĊĠĠĠĠĠĠĠ Ġval Ġdiff X Ġ= Ġe 1 . x Ġ- Ġe 2 . x ĊĠĠĠĠĠĠĠ Ġval Ġdiff Y Ġ= Ġe 1 . y Ġ- Ġe 2 . y ĊĊĠĠĠĠĠĠĠ Ġval Ġdouble Actions Ġ= Ġlauncher Preferences . getBoolean ( PRE F _ DOUBLE _ ACTION S _ ENABLED , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġhow Ġdistingu ished Ġthe Ġswipe Ġhas Ġto Ġbe Ġto Ġlaunch Ġsomething ĊĠĠĠĠĠĠĠ Ġ// Ġstrict ness Ġ= Ġopposite Ġof Ġsensitivity . ĠTODO Ġ- ĠMay Ġhave Ġto Ġbe Ġadjusted ĊĠĠĠĠĠĠĠ Ġval Ġstrict ness Ġ= Ġ( 4 Ġ/ Ġbuffered Pointer Count ) Ġ* Ġ(( 1 0 0 Ġ- Ġlauncher Preferences . getInt ( PRE F _ SL IDE _ S ENS IT IVITY , Ġ 5 0 )) Ġ/ Ġ 5 0 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠOnly Ġopen Ġif Ġthe Ġswipe Ġwas Ġnot Ġfrom Ġthe Ġph ones Ġtop Ġedge ĊĠĠĠĠĠĠĠ Ġif Ġ( diff Y Ġ< Ġ- height Ġ/ Ġ 8 Ġ&& Ġabs ( diff Y ) Ġ> Ġstrict ness Ġ* Ġabs ( diff X ) Ġ&& Ġe 1 . y Ġ> Ġ 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( buffered Pointer Count Ġ== Ġ 1 ) Ġlaunch ( down App , Ġthis , ĠR . anim . top _ down ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( buffered Pointer Count Ġ== Ġ 2 Ġ&& Ġdouble Actions ) Ġlaunch ( double Down App , Ġthis , ĠR . anim . top _ down ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( diff Y Ġ> Ġheight Ġ/ Ġ 8 Ġ&& Ġabs ( diff Y ) Ġ> Ġstrict ness Ġ* Ġabs ( diff X )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( buffered Pointer Count Ġ== Ġ 1 ) Ġlaunch ( up App , Ġthis , ĠR . anim . bottom _ up ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( buffered Pointer Count Ġ== Ġ 2 Ġ&& Ġdouble Actions ) Ġlaunch ( double Up App , Ġthis , ĠR . anim . bottom _ up ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( diff X Ġ> Ġwidth Ġ/ Ġ 4 Ġ&& Ġabs ( diff X ) Ġ> Ġstrict ness Ġ* Ġabs ( diff Y )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( buffered Pointer Count Ġ== Ġ 1 ) Ġlaunch ( left App , this , ĠR . anim . right _ left ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( buffered Pointer Count Ġ== Ġ 2 Ġ&& Ġdouble Actions ) Ġlaunch ( double Left App , this , ĠR . anim . right _ left ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( diff X Ġ< Ġ- width Ġ/ Ġ 4 Ġ&& Ġabs ( diff X ) Ġ> Ġstrict ness Ġ* Ġabs ( diff Y )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( buffered Pointer Count Ġ== Ġ 1 ) Ġlaunch ( right App , Ġthis , ĠR . anim . left _ right ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( buffered Pointer Count Ġ== Ġ 2 Ġ&& Ġdouble Actions ) Ġlaunch ( double Right App , Ġthis , ĠR . anim . left _ right ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Long Press ( event : ĠMotion Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch ( long Click App , Ġthis ) ĊĠĠĠĠĠĠĠ Ġoverride Pending Transition ( 0 , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Double Tap ( event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch ( double Click App , Ġthis ) ĊĠĠĠĠĠĠĠ Ġoverride Pending Transition ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTooltip ĊĠĠĠ Ġoverride Ġfun Ġon Single Tap Confirmed ( event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( settings Icon Shown ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Settings Icon () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġshow Settings Icon () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Settings Icon (){ ĊĠĠĠĠĠĠĠ Ġhome _ settings _ icon . fade Rotate In () ĊĠĠĠĠĠĠĠ Ġhome _ settings _ icon . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġsettings Icon Shown Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġtooltip Timer Ġ= Ġfixed Rate Timer (" tooltip Timer ", Ġtrue , Ġ 1 0 0 0 0 , Ġ 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Home Activity . run On Ui Thread Ġ{ Ġhide Settings Icon () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Settings Icon (){ ĊĠĠĠĠĠĠĠ Ġtooltip Timer . cancel () ĊĠĠĠĠĠĠĠ Ġhome _ settings _ icon . fade Rotate Out () ĊĠĠĠĠĠĠĠ Ġhome _ settings _ icon . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġsettings Icon Shown Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠBuffer Ġ/ ĠDe bounce Ġthe Ġpointer Ġcount ĊĠĠĠĠĠĠĠ Ġif Ġ( event . pointer Count Ġ> Ġbuffered Pointer Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffered Pointer Count Ġ= Ġevent . pointer Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpointer Buffer Timer Ġ= Ġfixed Rate Timer (" pointer Buffer Timer ", Ġtrue , Ġ 3 0 0 , Ġ 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffered Pointer Count Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . cancel () Ġ// Ġa Ġnon - recurring Ġtimer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( m Detector . on Touch Event ( event )) Ġ{ Ġfalse Ġ} Ġelse Ġ{ Ġsuper . on Touch Event ( event ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply Theme () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠStart Ġby Ġshowing Ġthe Ġsettings Ġicon ĊĠĠĠĠĠĠĠ Ġif Ġ(! settings Icon Shown ) Ġshow Settings Icon () ĊĊĠĠĠĠĠĠĠ Ġhome _ settings _ icon . setTextColor ( vi br ant Color ) ĊĠĠĠĠĠĠĠ Ġhome _ container . set BackgroundColor ( dom inant Color ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( launcher Preferences . getString ( PRE F _ WALL P AP ER , Ġ"") Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Ġ= ĠMedia Store . Images . Media . get Bitmap ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . content Resolver , ĠUri . parse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlauncher Preferences . getString ( PRE F _ WALL P AP ER , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBackground Ġimage Ġwas Ġdeleted Ġor Ġsomething Ġunexpected Ġhappened ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( background Ġ== Ġnull ) Ġreset To Default Theme ( this ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome _ background _ image . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome _ background _ image . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset OnClick s () Ġ{ ĊĠĠĠĠĠĠĠ Ġhome _ settings _ icon . setOnClickListener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch (" launcher : settings ", Ġthis , ĠR . anim . bottom _ up ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġhome _ upper _ view . setOnClickListener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( launcher Preferences . getInt ( PRE F _ DATE _ FORMAT , Ġ 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġlaunch ( date App , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġlaunch ( time App , this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġhome _ lower _ view . setOnClickListener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( launcher Preferences . getInt ( PRE F _ DATE _ FORMAT , Ġ 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġlaunch ( time App , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġlaunch ( date App , this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĠTODO : ĠRemove Ġthose . ĠFor Ġnow Ġthey Ġare Ġnecessary ĊĠĠĠĠ Ġ* Ġ Ġbecause Ġthis Ġinherits Ġfrom ĠGest ure Detector . On Gesture Listener Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Double Tap Event ( event : ĠMotion Event ): ĠBoolean Ġ{ Ġreturn Ġfalse Ġ} ĊĠĠĠ Ġoverride Ġfun Ġon Down ( event : ĠMotion Event ): ĠBoolean Ġ{ Ġreturn Ġfalse Ġ} ĊĠĠĠ Ġoverride Ġfun Ġon Scroll ( e 1 : ĠMotion Event , Ġe 2 : ĠMotion Event , Ġd X : ĠFloat , Ġd Y : ĠFloat ): ĠBoolean Ġ{ Ġreturn Ġfalse Ġ} ĊĠĠĠ Ġoverride Ġfun Ġon Show Press ( event : ĠMotion Event ) Ġ{} ĊĠĠĠ Ġoverride Ġfun Ġon Single Tap Up ( event : ĠMotion Event ): ĠBoolean Ġ{ Ġreturn Ġfalse Ġ} Ċ } Ċ