package Ġmat tec arra . acc app . services Ċ Ċ import Ġandroid . annotation . Target Api Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . graphics . drawable . Icon Ċ import Ġandroid . os . Build Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroid . service . quick settings . Tile Ċ import Ġandroid . service . quick settings . Tile Service Ċ import Ġcom . google . gson . Gson Ċ import Ġmat tec arra . acc app . R Ċ import Ġmat tec arra . acc app . data . Acc Config Ċ import Ġmat tec arra . acc app . utils . Profile Utils Ċ import Ġorg . jetbrains . ank o . do Async Ċ import Ġjava . io . File Ċ Ċ @ Target Api ( Build . VERSION _ CODES . N ) Ċ class ĠAcc Profile Tile Service : ĠTile Service () Ġ{ ĊĠĠĠ Ġprivate Ġval ĠLOG _ TAG Ġ= Ġ" Acc Profile Tile Service " ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Tile () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprofiles Ġ= ĠFile ( this . files Dir , Ġ" profiles ") ĊĠĠĠĠĠĠĠ Ġval Ġtile Ġ= Ġqs Tile ĊĊĠĠĠĠĠĠĠ Ġif (! profiles . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtile . label Ġ= ĠgetString ( R . string . no _ profiles ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtile . state Ġ= Ġ ĠTile . STATE _ UN AVAILABLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtile . icon Ġ= ĠIcon . create With Resource ( this , ĠR . drawable . ic _ battery _ ch arging _ full ) Ġ// use Ġacc Ġicon Ġonce Ġready ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Profile Ġ= ĠProfile Utils . getCurrent Profile ( Preference Manager . getDefault SharedPreferences ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( current Profile Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile . label Ġ= Ġ ĠgetString ( R . string . profile _ tile _ label , Ġcurrent Profile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile . state Ġ= Ġ ĠTile . STATE _ ACTIVE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile . label Ġ= ĠgetString ( R . string . profile _ not _ selected ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile . state Ġ= Ġ ĠTile . STATE _ IN ACTIVE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtile . icon Ġ= ĠIcon . create With Resource ( this , ĠR . drawable . ic _ battery _ ch arging _ 8 0 ) Ġ// use Ġacc Ġicon Ġonce Ġready ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtile . update Tile () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Tile Added () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Tile Added () ĊĠĠĠĠĠĠĠ Ġupdate Tile () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Listening () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart Listening () ĊĠĠĠĠĠĠĠ Ġupdate Tile () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onClick () ĊĊĠĠĠĠĠĠĠ Ġ// Get Ġprofiles Ġlist Ġand Ġincrement Ġcurrent Ġprofile Ġof Ġone Ġunit . ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson () ĊĠĠĠĠĠĠĠ Ġval Ġshared Prefs : ĠSharedPreferences Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġprofile List Ġ= ĠProfile Utils . list Profiles ( this , Ġgson ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcurrent Profile Ġ= ĠProfile Utils . getCurrent Profile ( shared Prefs ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ( current Profile ?. let Ġ{ Ġprofile List . indexOf ( it ) Ġ} Ġ?: Ġ- 1 ) Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġif ( index Ġ>= Ġprofile List . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġprofile To Apply Ġ= Ġprofile List [ index ] ĊĊĠĠĠĠĠĠĠ Ġ// apply Ġprofile ĊĠĠĠĠĠĠĠ Ġval Ġprofile Config Ġ= ĠProfile Utils . read Profile ( profile To Apply , Ġthis , Ġgson ) ĊĊĠĠĠĠĠĠĠ Ġdo Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprofile Config . update Acc () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Utils . save Current Profile ( profile To Apply , Ġshared Prefs ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Update Ġtile Ġinfos ĊĠĠĠĠĠĠĠ Ġqs Tile . state Ġ= Ġ ĠTile . STATE _ ACTIVE ĊĠĠĠĠĠĠĠ Ġqs Tile . label Ġ= Ġ ĠgetString ( R . string . profile _ tile _ label , Ġprofile To Apply ) ĊĠĠĠĠĠĠĠ Ġqs Tile . update Tile () ĊĠĠĠ Ġ} Ċ }