package Ġnet . int bird . soft . lib . video . player . main . locker Ċ Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . view . View Ċ import Ġnet . int bird . soft . lib . video . player . main . locker . call . IL ock Callback Ċ import Ġnet . int bird . soft . lib . video . player . main . notify . IL ock Execute Ċ Ċ /** Ċ Ġ* Ġcreated Ġby Ġint bird Ċ Ġ* Ġon Ġ 2 0 2 0 / 5 / 1 Ċ Ġ* ĠD ing Talk Ġid : Ġint bird Ċ Ġ*/ Ċ class ĠLock Controller ( private Ġval Ġiv Pop Lock : ĠView ) Ġ: ĠI Lock Callback Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġlocked Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġhandler Ġ= ĠHandler ( Looper . get Main Looper ()) ĊĠĠĠ Ġprivate Ġval Ġdismiss Lock Time Ġ= Ġ 2 0 0 0 L ĊĊĠĠĠ Ġprivate Ġvar Ġdismiss Callback Ġ= ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠ Ġiv Pop Lock . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlock er Exec utes Ġ= Ġmutable ListOf < IL ock Execute >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġiv Pop Lock . setOnClickListener Ġ{ Ġneed Un Lock ( true ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Execute ( i Lock Execute : ĠI Lock Execute ?): ĠLock Controller Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġi Lock Execute ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlock er Exec utes . add ( i Lock Execute ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnotify Execute ( lock : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( lock Delegate Ġin Ġlock er Exec utes . iterator ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlock Delegate . execute Lock ( lock ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Lock View ( visible : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( visible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv Pop Lock . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . remove Callbacks ( dismiss Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Delayed ( dismiss Callback , Ġdismiss Lock Time ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . remove Callbacks ( dismiss Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv Pop Lock . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Locked () Ġ= Ġlocked ĊĊĠĠĠ Ġoverride Ġfun Ġneed Lock () Ġ{ ĊĠĠĠĠĠĠĠ Ġlocked Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġshow Lock View ( true ) ĊĠĠĠĠĠĠĠ Ġnotify Execute ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġneed Un Lock ( un Lock Immediate ly : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( un Lock Immediate ly ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Lock View ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Execute ( false ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Lock View ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdestroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġhandler . remove Callbacks ( dismiss Callback ) ĊĠĠĠĠĠĠĠ Ġlock er Exec utes . clear () ĊĠĠĠ Ġ} Ċ }