package Ġs oko . ek ib un . tiles box . service Ċ Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . graphics . drawable . Icon Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . service . quick settings . Tile Ċ import Ġandroid . service . quick settings . Tile Service Ċ import Ġandroid . widget . Toast Ċ import Ġs oko . ek ib un . tiles box . R Ċ import Ġs oko . ek ib un . tiles box . util . App Util Ċ import Ġs oko . ek ib un . tiles box . util . Orientation Util Ċ import Ġs oko . ek ib un . tiles box . util . Permission Util Ċ Ċ class ĠRotation Quick Tile Service Ġ: ĠTile Service () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Listening () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart Listening () ĊĠĠĠĠĠĠĠ Ġrefresh State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġreceiver Ġ= Ġobject : ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext ?, Ġintent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh State () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĠĠĠĠĠĠĠ Ġregister Receiver ( receiver , ĠIntent Filter ( ACTION _ UP DAT ET ILE )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġunregister Receiver ( receiver ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Settings . System . can Write ( application Context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Orientation Ġ= Ġtoggle Orientation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Quick Settings Tile ( new Orientation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSettings . Setting NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , ĠR . string . toast _ no _ permit , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtoggle Orientation (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġold Orientation Ġ= ĠOrientation Util . getCurrent Orientation ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġnew Orientation Ġ= ĠOrientation Util . get Opp osite Orientation ( old Orientation , ĠPreference Manager . getDefault SharedPreferences ( this ). getBoolean (" rotation _ reverse _ land scape ", Ġfalse )) ĊĊĠĠĠĠĠĠĠ ĠSettings . System . put Int ( content Resolver , ĠSettings . System . AC CEL ERO METER _ ROT ATION , Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠSettings . System . put Int ( content Resolver , ĠSettings . System . USER _ ROT ATION , Ġnew Orientation ) ĊĠĠĠĠĠĠĠ Ġif ( App Util . is Service Running ( this , ĠRotation Lock Service :: class . java . name )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠRotation Lock Service :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" rotation ", Ġnew Orientation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Service ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnew Orientation ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrefresh State () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Quick Settings Tile ( Orientation Util . getCurrent Orientation ( this )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSettings . Setting NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Quick Settings Tile ( orientation : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġqs Tile . state Ġ= Ġwhen Ġ( Permission Util . check Write System Settings ( this )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> ĠTile . STATE _ ACTIVE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠTile . STATE _ IN ACTIVE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlock Ġ= ĠApp Util . is Service Running ( this , ĠRotation Lock Service :: class . java . name ) ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOrientation Util . is Land scape ( orientation ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqs Tile . icon Ġ= ĠIcon . create With Resource ( application Context , Ġif ( lock ) ĠR . drawable . ic _ screen _ lock _ land scape Ġelse ĠR . drawable . ic _ screen _ land scape ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqs Tile . label Ġ= ĠgetString ( R . string . rotation _ land scape ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOrientation Util . is Por trait ( orientation ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqs Tile . icon Ġ= ĠIcon . create With Resource ( application Context , Ġif ( lock ) ĠR . drawable . ic _ screen _ lock _ portrait Ġelse ĠR . drawable . ic _ screen _ portrait ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqs Tile . label Ġ= ĠgetString ( R . string . rotation _ portrait ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqs Tile . icon Ġ= ĠIcon . create With Resource ( application Context , ĠR . drawable . ic _ screen _ rotation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqs Tile . label Ġ= ĠgetString ( R . string . rotation _ auto ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġqs Tile . update Tile () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠACTION _ UP DAT ET ILE Ġ= Ġ" so ko . ek ib un . tiles box . rotation . update tile " ĊĠĠĠ Ġ} Ċ } Ċ