package Ġcom . nk ming . power menu Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . widget . Toast Ċ import Ġcom . af ol le st ad . material dialogs . Material Dialog Ċ import Ġcom . af ol le st ad . material dialogs . Theme Ċ Ċ abstract Ġclass ĠAction ( app Context : ĠContext ) Ċ { Ċ ĉ abstract Ġoperator Ġfun Ġinvoke () ĊĊ ĉ var Ġon Successful : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull Ċ ĉ var Ġon Failed : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull Ċ ĉ var Ġon Done : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĊ ĉ protected Ġval Ġ_ context Ġ= Ġapp Context Ċ } Ċ Ċ abstract Ġclass ĠD angerous Action ( app Context : ĠContext , Ġactivity : ĠActivity , Ċĉ ĉ is Explicit The ming : ĠBoolean ) Ċĉ ĉ : ĠAction ( app Context ) Ċ { Ċ ĉ override Ġfun Ġinvoke () Ċ ĉ { Ċĉ ĉ if Ġ( should Confirm ) Ċĉ ĉ { Ċĉĉ ĉ val Ġdialog Ġ= Ġbuild Confirm Dialog { on Post Confirm ()} Ċĉĉ ĉ dialog . show () Ċĉĉ ĉ _ dialog Ġ= Ġdialog Ċĉ ĉ } Ċĉ ĉ else Ċĉ ĉ { Ċĉĉ ĉ on Post Confirm () Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ fun Ġdismiss Confirm () Ċ ĉ { Ċĉ ĉ _ dialog ?. dismiss () Ċĉ ĉ _ dialog Ġ= Ġnull Ċ ĉ } ĊĊ ĉ open Ġval Ġshould Confirm : ĠBoolean Ċĉ ĉ get () Ċĉ ĉ { Ċĉĉ ĉ val Ġpref Ġ= ĠPreference . from (_ context ) Ċĉĉ ĉ return Ġpref . is Confirm Action Ċĉ ĉ } ĊĊ ĉ var Ġon Cancel : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĊ ĉ /** Ċĉ Ġ* ĠReturn Ġthe Ġconfirmation Ġdialog . ĠOverride Ġmethod Ġto Ġreturn Ġcustom Ġdialog Ċĉ Ġ* Ċĉ Ġ* Ġ@ param Ġon Positive ĠCallback Ġon Ġpositive Ġbutton Ġclick Ċĉ Ġ* Ġ@ return Ċĉ Ġ*/ Ċ ĉ protected Ġopen Ġfun Ġbuild Confirm Dialog ( on Positive : Ġ() Ġ-> ĠUnit ): ĠDialog Ċ ĉ { Ċĉ ĉ val Ġbuilder Ġ= ĠMaterial Dialog . Builder (_ activity ) Ċĉĉĉ ĉ . title (_ dialog Title ) Ċĉĉĉ ĉ . content (_ dialog Content ) Ċĉĉĉ ĉ . theme ( if Ġ(_ pref . is Dark Theme ) ĠTheme . DARK Ġelse ĠTheme . LIGHT ) Ċĉĉĉ ĉ . positive Text ( android . R . string . yes ) Ċĉĉĉ ĉ . on Positive { _, Ġ_ Ġ-> Ġon Positive ()} Ċĉĉĉ ĉ . negative Text ( android . R . string . no ) Ċĉĉĉ ĉ . on Negative { _, Ġ_ Ġ-> Ġon Cancel ?. invoke ()} Ċĉĉĉ ĉ . cancel Listener { on Cancel ?. invoke ()} Ċĉ ĉ if Ġ(_ is Explicit The ming ) Ċĉ ĉ { Ċĉĉ ĉ if Ġ(_ pref . is Dark Theme ) Ċĉĉ ĉ { Ċĉĉĉ ĉ builder . positive Color Res ( R . color . accent _ dark ) Ċĉĉĉ ĉ builder . negative Color Res ( R . color . accent _ dark ) Ċĉĉ ĉ } Ċĉĉ ĉ else Ċĉĉ ĉ { Ċĉĉĉ ĉ builder . positive Color Res ( R . color . accent _ light ) Ċĉĉĉ ĉ builder . negative Color Res ( R . color . accent _ light ) Ċĉĉ ĉ } Ċĉ ĉ } Ċĉ ĉ return Ġbuilder . build () Ċ ĉ } ĊĊ ĉ /** Ċĉ Ġ* ĠCalled Ġwhen Ġthe Ġaction Ġis Ġbeing Ġconfirmed Ġby Ġthe Ġuser Ċĉ Ġ*/ Ċ ĉ protected Ġabstract Ġfun Ġon Post Confirm () ĊĊ ĉ /** Ċĉ Ġ* ĠTitle Ġres Ġused Ġin Ġthe Ġdefault Ġconfirmation Ġdialog , Ġif Ġcustom Ġdialog Ġis Ċĉ Ġ* Ġused Ġinstead , Ġthis Ġvalue Ġneed Ġnot Ġto Ġbe Ġoverridden Ċĉ Ġ*/ Ċ ĉ protected Ġopen Ġval Ġ_ dialog Title : ĠInt Ġ= Ġ 0 Ċ ĉ protected Ġopen Ġval Ġ_ dialog Content : ĠInt Ġ= Ġ 0 Ċ ĉ protected Ġval Ġ_ activity Ġ= Ġactivity ĊĊ ĉ private Ġval Ġ_ is Explicit The ming Ġ= Ġis Explicit The ming Ċ ĉ private Ġval Ġ_ pref Ġby Ġlazy { Preference . from (_ context )} Ċ ĉ private Ġvar Ġ_ dialog : ĠDialog ? Ġ= Ġnull Ċ } Ċ Ċ open Ġclass ĠShutdown Action ( app Context : ĠContext , Ġactivity : ĠActivity , Ċĉ ĉ is Explicit The ming : ĠBoolean Ġ= Ġfalse ) Ċĉ ĉ : ĠD angerous Action ( app Context , Ġactivity , Ġis Explicit The ming ) Ċ { Ċ ĉ override Ġfun Ġon Post Confirm () Ċ ĉ { Ċĉ ĉ System Helper . shutdown (_ context , Ċĉ ĉ { Ċĉĉ ĉ if Ġ(! it ) Ċĉĉ ĉ { Ċĉĉĉ ĉ Toast . makeText (_ context , ĠR . string . shutdown _ fail , Ċĉĉĉĉĉ ĉ Toast . LENGTH _ LONG ). show () Ċĉĉĉ ĉ on Failed ?. invoke () Ċĉĉ ĉ } Ċĉĉ ĉ else Ċĉĉ ĉ { Ċĉĉĉ ĉ on Successful ?. invoke () Ċĉĉ ĉ } Ċĉĉ ĉ on Done ?. invoke () Ċĉ ĉ }) Ċ ĉ } ĊĊ ĉ protected Ġoverride Ġval Ġ_ dialog Title : ĠInt Ġ= ĠR . string . shutdown _ confirm _ title Ċ ĉ protected Ġoverride Ġval Ġ_ dialog Content : ĠInt Ġ= Ċĉĉ ĉ R . string . shutdown _ confirm _ content Ċ } Ċ Ċ open Ġclass ĠRe boot Action ( app Context : ĠContext , Ġactivity : ĠActivity , Ċĉ ĉ reboot Mode : ĠSystem Helper . Reboot Mode , Ġis Explicit The ming : ĠBoolean Ġ= Ġfalse ) Ċĉ ĉ : ĠD angerous Action ( app Context , Ġactivity , Ġis Explicit The ming ) Ċ { Ċ ĉ override Ġfun Ġon Post Confirm () Ċ ĉ { Ċĉ ĉ System Helper . reboot (_ reboot Mode , Ġ_ context , Ċĉ ĉ { Ċĉĉ ĉ if Ġ(! it ) Ċĉĉ ĉ { Ċĉĉĉ ĉ Toast . makeText (_ context , ĠR . string . restart _ fail , Ċĉĉĉĉĉ ĉ Toast . LENGTH _ LONG ). show () Ċĉĉĉ ĉ on Failed ?. invoke () Ċĉĉ ĉ } Ċĉĉ ĉ else Ċĉĉ ĉ { Ċĉĉĉ ĉ on Successful ?. invoke () Ċĉĉ ĉ } Ċĉĉ ĉ on Done ?. invoke () Ċĉ ĉ }) Ċ ĉ } ĊĊ ĉ protected Ġoverride Ġval Ġ_ dialog Title : ĠInt Ġ= ĠR . string . restart _ confirm _ title Ċ ĉ protected Ġoverride Ġval Ġ_ dialog Content : ĠInt Ġ= Ċĉĉ ĉ R . string . restart _ confirm _ content ĊĊ ĉ private Ġval Ġ_ reboot Mode Ġ= Ġreboot Mode Ċ } Ċ Ċ open Ġclass ĠSoft Reboot Action ( app Context : ĠContext , Ġactivity : ĠActivity , Ċĉ ĉ is Explicit The ming : ĠBoolean Ġ= Ġfalse ) Ċĉ ĉ : ĠD angerous Action ( app Context , Ġactivity , Ġis Explicit The ming ) Ċ { Ċ ĉ override Ġfun Ġon Post Confirm () Ċ ĉ { Ċĉ ĉ System Helper . kill Z yg ote (_ context , Ċĉ ĉ { Ċĉĉ ĉ if Ġ(! it ) Ċĉĉ ĉ { Ċĉĉĉ ĉ Toast . makeText (_ context , ĠR . string . soft _ reboot _ fail , Ċĉĉĉĉĉ ĉ Toast . LENGTH _ LONG ). show () Ċĉĉĉ ĉ on Failed ?. invoke () Ċĉĉ ĉ } Ċĉĉ ĉ else Ċĉĉ ĉ { Ċĉĉĉ ĉ on Successful ?. invoke () Ċĉĉ ĉ } Ċĉĉ ĉ on Done ?. invoke () Ċĉ ĉ }) Ċ ĉ } ĊĊ ĉ protected Ġoverride Ġval Ġ_ dialog Title : ĠInt Ġ= ĠR . string . restart _ confirm _ title Ċ ĉ protected Ġoverride Ġval Ġ_ dialog Content : ĠInt Ġ= Ċĉĉ ĉ R . string . restart _ confirm _ content Ċ } Ċ Ċ open Ġclass ĠSleep Action ( app Context : ĠContext ) Ġ: ĠAction ( app Context ) Ċ { Ċ ĉ override Ġfun Ġinvoke () Ċ ĉ { Ċĉ ĉ System Helper . sleep (_ context , Ċĉ ĉ { Ċĉĉ ĉ if Ġ(! it ) Ċĉĉ ĉ { Ċĉĉĉ ĉ Toast . makeText (_ context , ĠR . string . sleep _ fail , ĠToast . LENGTH _ LONG ) Ċĉĉĉĉĉ ĉ . show () Ċĉĉĉ ĉ on Failed ?. invoke () Ċĉĉ ĉ } Ċĉĉ ĉ else Ċĉĉ ĉ { Ċĉĉĉ ĉ on Successful ?. invoke () Ċĉĉ ĉ } Ċĉĉ ĉ on Done ?. invoke () Ċĉ ĉ }) Ċ ĉ } Ċ } Ċ Ċ open Ġclass ĠScreen shot Action ( app Context : ĠContext ) Ġ: ĠAction ( app Context ) Ċ { Ċ ĉ comp anion Ġobject Ċ ĉ { Ċĉ ĉ val ĠLOG _ TAG Ġ= ĠScreen shot Action :: class . java . canonical Name Ċ ĉ } ĊĊ ĉ override Ġfun Ġinvoke () Ċ ĉ { Ċĉ ĉ if Ġ(!_ pref . is Native Screenshot ) Ċĉ ĉ { Ċĉĉ ĉ invoke Legacy () Ċĉ ĉ } Ċĉ ĉ else Ċĉ ĉ { Ċĉĉ ĉ invoke Native () Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ private Ġfun Ġinvoke Legacy () Ċ ĉ { Ċĉ ĉ val Ġwm Ġ= Ġ_ context . getSystem Service ( Context . WINDOW _ SERVICE ) Ċĉĉĉ ĉ as ĠWindow Manager Ċĉ ĉ val Ġrotation Ġ= Ġwm . default Display . rotation Ċĉ ĉ val Ġscreenshot Handler Ġ= ĠScreen shot Handler (_ context ) Ċĉ ĉ System Helper . screenshot (_ context , Ġ{ error , Ġfilepath Ġ-> Ċĉ ĉ run { Ċĉĉ ĉ if Ġ( error Ġ== ĠSystem Helper . Screenshot Error . NO _ ERROR ) Ċĉĉ ĉ { Ċĉĉĉ ĉ screenshot Handler . on Screenshot Success ( filepath , Ġrotation ) Ċĉĉĉ ĉ on Successful ?. invoke () Ċĉĉĉ ĉ on Done ?. invoke () Ċĉĉ ĉ } Ċĉĉ ĉ else Ċĉĉ ĉ { Ċĉĉĉ ĉ // ĠNow Ġtry Ġour Ġnew Ġsh iny Ġmethod Ċĉĉĉ ĉ Log . i ("$ LOG _ TAG . invoke Legacy ", Ċĉĉĉĉĉ ĉ " Legacy Ġscreenshot Ġfailed , Ġswitching Ġto Ġnative ") Ċĉĉĉ ĉ _ pref . is Native Screenshot Ġ= Ġtrue Ċĉĉĉ ĉ _ pref . apply () Ċĉĉĉ ĉ invoke Native () Ċĉĉ ĉ } Ċĉ ĉ }}) Ċ ĉ } ĊĊ ĉ private Ġfun Ġinvoke Native () Ċ ĉ { Ċĉ ĉ System Helper . screenshot Native (_ context , Ċĉ ĉ { Ċĉĉ ĉ if Ġ( it ) Ċĉĉ ĉ { Ċĉĉĉ ĉ on Successful ?. invoke () Ċĉĉ ĉ } Ċĉĉ ĉ else Ċĉĉ ĉ { Ċĉĉĉ ĉ Toast . makeText (_ context , ĠR . string . screenshot _ fail _ scre enc ap , Ċĉĉĉĉĉ ĉ Toast . LENGTH _ LONG ). show () Ċĉĉĉ ĉ on Failed ?. invoke () Ċĉĉ ĉ } Ċĉĉ ĉ on Done ?. invoke () Ċĉ ĉ }) Ċ ĉ } ĊĊ ĉ private Ġval Ġ_ pref Ġby Ġlazy { Preference . from (_ context )} Ċ } Ċ