package Ġeu . kan ade . t ach iy omi . ui . reader . viewer Ċ Ċ import Ġcom . tf cp or ci unc ula . flow . Preference Ċ import Ġeu . kan ade . t ach iy omi . data . preference . Preference Values . T apping Invert Mode Ċ import Ġeu . kan ade . t ach iy omi . data . preference . Preferences Helper Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . flow . distinct Until Changed Ċ import Ġkotlinx . coroutines . flow . launch In Ċ import Ġkotlinx . coroutines . flow . on Each Ċ Ċ /** Ċ Ġ* ĠCommon Ġconfiguration Ġfor Ġall Ġview ers . Ċ Ġ*/ Ċ abstract Ġclass ĠViewer Config ( preferences : ĠPreferences Helper , Ġprivate Ġval Ġscope : ĠCor outine Scope ) Ġ{ ĊĊĠĠĠ Ġvar Ġimage PropertyChanged Listener : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġt apping Enabled Ġ= Ġtrue ĊĠĠĠ Ġvar Ġt apping In verted Ġ= ĠT apping Invert Mode . NONE ĊĠĠĠ Ġvar Ġlong Tap Enabled Ġ= Ġtrue ĊĠĠĠ Ġvar Ġuse Page Transitions Ġ= Ġfalse ĊĠĠĠ Ġvar Ġdouble Tap Anim Duration Ġ= Ġ 5 0 0 ĊĠĠĠ Ġvar Ġvolume Keys Enabled Ġ= Ġfalse ĊĠĠĠ Ġvar Ġvolume Keys In verted Ġ= Ġfalse ĊĠĠĠ Ġvar Ġtrue Color Ġ= Ġfalse ĊĠĠĠ Ġvar Ġalways Show Chapter Transition Ġ= Ġtrue ĊĠĠĠ Ġvar Ġnavigation Mode Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġabstract Ġvar Ġnavigator : ĠViewer Navigation ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġpreferences . read With T apping () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. register ({ Ġt apping Enabled Ġ= Ġit Ġ}) ĊĊĠĠĠĠĠĠĠ Ġpreferences . read With Long Tap () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. register ({ Ġlong Tap Enabled Ġ= Ġit Ġ}) ĊĊĠĠĠĠĠĠĠ Ġpreferences . page Transitions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. register ({ Ġuse Page Transitions Ġ= Ġit Ġ}) ĊĊĠĠĠĠĠĠĠ Ġpreferences . double Tap Anim Speed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. register ({ Ġdouble Tap Anim Duration Ġ= Ġit Ġ}) ĊĊĠĠĠĠĠĠĠ Ġpreferences . read With Volume Keys () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. register ({ Ġvolume Keys Enabled Ġ= Ġit Ġ}) ĊĊĠĠĠĠĠĠĠ Ġpreferences . read With Volume Keys In verted () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. register ({ Ġvolume Keys In verted Ġ= Ġit Ġ}) ĊĊĠĠĠĠĠĠĠ Ġpreferences . true Color () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. register ({ Ġtrue Color Ġ= Ġit Ġ}, Ġ{ Ġimage PropertyChanged Listener ?. invoke () Ġ}) ĊĊĠĠĠĠĠĠĠ Ġpreferences . always Show Chapter Transition () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. register ({ Ġalways Show Chapter Transition Ġ= Ġit Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġdefault Navigation (): ĠViewer Navigation ĊĊĠĠĠ Ġabstract Ġfun Ġupdate Navigation ( navigation Mode : ĠInt ) ĊĊĠĠĠ Ġfun Ġ< T > ĠPreference < T >. register ( ĊĠĠĠĠĠĠĠ Ġvalue Assignment : Ġ( T ) Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠ ĠonChanged : Ġ( T ) Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġas Flow () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Each Ġ{ Ġvalue Assignment ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. distinct Until Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Each Ġ{ ĠonChanged ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. launch In ( scope ) ĊĠĠĠ Ġ} Ċ } Ċ