/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 - 2 0 1 9 ĠH az uki Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġjp . h az uki . y uz ub rowser . legacy . toolbar . main Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġjp . h az uki . y uz ub rowser . core . utility . extensions . convert Dp To Px Ċ import Ġjp . h az uki . y uz ub rowser . legacy . R Ċ import Ġjp . h az uki . y uz ub rowser . legacy . action . manager . Action Controller Ċ import Ġjp . h az uki . y uz ub rowser . legacy . action . manager . Action Icon Manager Ċ import Ġjp . h az uki . y uz ub rowser . legacy . action . manager . Soft Button Action Array Manager Ċ import Ġjp . h az uki . y uz ub rowser . legacy . databinding . Toolbar Tab Binding Ċ import Ġjp . h az uki . y uz ub rowser . legacy . tab . manager . Main Tab Data Ċ import Ġjp . h az uki . y uz ub rowser . legacy . toolbar . Button Toolbar Controller Ċ import Ġjp . h az uki . y uz ub rowser . legacy . utils . view . tab . Full Tab Layout Ċ import Ġjp . h az uki . y uz ub rowser . legacy . utils . view . tab . Scroll able Tab Layout Ċ import Ġjp . h az uki . y uz ub rowser . legacy . utils . view . tab . Tab Layout Ċ import Ġjp . h az uki . y uz ub rowser . ui . settings . App Prefs Ċ import Ġjp . h az uki . y uz ub rowser . ui . theme . Theme Data Ċ Ċ class ĠTab Bar ( context : ĠContext , Ġcontroller : ĠAction Controller , Ġicon Manager : ĠAction Icon Manager , Ġrequest _ callback : ĠRequest Callback ) Ġ: ĠToolbar Base ( context , ĠApp Prefs . toolbar _ tab , Ġrequest _ callback ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġbinding Ġ= ĠToolbar Tab Binding . inflate ( LayoutInflater . from ( context ), Ġthis , Ġtrue ) ĊĠĠĠ Ġprivate Ġval Ġtab Size X Ġ= Ġcontext . convert Dp To Px ( App Prefs . tab _ size _ x . get ()) ĊĠĠĠ Ġprivate Ġval Ġtab Size Y Ġ= Ġcontext . convert Dp To Px ( App Prefs . toolbar _ tab . size . get ()) ĊĠĠĠ Ġprivate Ġval Ġtab FontSize Ġ= ĠApp Prefs . tab _ font _ size . get () ĊĠĠĠ Ġprivate Ġval Ġm Tab Layout : ĠTab Layout ĊĠĠĠ Ġprivate Ġval Ġm Left Button Controller Ġ= ĠButton Toolbar Controller ( binding . left LinearLayout , Ġcontroller , Ġicon Manager , Ġtab Size Y ) ĊĠĠĠ Ġprivate Ġval Ġm Right Button Controller Ġ= ĠButton Toolbar Controller ( binding . right LinearLayout , Ġcontroller , Ġicon Manager , Ġtab Size Y ) ĊĊĠĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠĠĠ Ġm Tab Layout Ġ= Ġwhen Ġ( App Prefs . tab _ type . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAB _ TYPE _ SCROLL ABLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScroll able Tab Layout ( context ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tab Layout Base . addView ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAB _ TYPE _ FULL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFull Tab Layout ( context ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tab Layout Base . addView ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd Buttons () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnotify Change Web State ( data : ĠMain Tab Data ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . notify Change Web State ( data ) ĊĠĠĠĠĠĠĠ Ġm Left Button Controller . notify Change State () ĊĠĠĠĠĠĠĠ Ġm Right Button Controller . notify Change State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreset ToolBar () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Left Button Controller . reset Icon () ĊĠĠĠĠĠĠĠ Ġm Right Button Controller . reset Icon () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply Theme ( theme Data : ĠTheme Data ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . apply Theme ( theme Data ) ĊĠĠĠĠĠĠĠ Ġapply Theme ( m Left Button Controller ) ĊĠĠĠĠĠĠĠ Ġapply Theme ( m Right Button Controller ) ĊĠĠĠĠĠĠĠ Ġm Tab Layout . apply Theme ( theme Data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Buttons () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= ĠSoft Button Action Array Manager . getInstance ( context ) ĊĠĠĠĠĠĠĠ Ġm Left Button Controller . add Buttons ( manager . btn _ tab _ left . list ) ĊĠĠĠĠĠĠĠ Ġm Right Button Controller . add Buttons ( manager . btn _ tab _ right . list ) ĊĠĠĠĠĠĠĠ Ġon Theme Changed ( Theme Data . getInstance ()) // ĠTODO ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd New Tab View (): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( context ). inflate ( R . layout . tab _ item , Ġnull , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġview . findViewById < TextView >( R . id . textView ). text Size Ġ= Ġtab FontSize . toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠLinearLayout . LayoutParams ( tab Size X , Ġtab Size Y ) ĊĠĠĠĠĠĠĠ Ġm Tab Layout . add Tab View ( view , Ġparams ) ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Preference Reset () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Preference Reset () ĊĠĠĠĠĠĠĠ Ġadd Buttons () ĊĊĠĠĠĠĠĠĠ Ġm Tab Layout . on Preference Reset () ĊĠĠĠĠĠĠĠ Ġm Tab Layout . set Sense ( App Prefs . tab _ action _ s ensitivity . get ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Tab ( no : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Tab Layout . remove Tab At ( no ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Tab ( id : ĠInt , Ġview : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠLinearLayout . LayoutParams ( tab Size X , Ġtab Size Y ) ĊĠĠĠĠĠĠĠ Ġm Tab Layout . add Tab View ( id , Ġview , Ġparams ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Tab ClickListener ( l : ĠTab Layout . On Tab ClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Tab Layout . setOn Tab ClickListener ( l ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġchange Current Tab ( to : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Tab Layout . setCurrent Tab ( to ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfull Scroll Right () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Tab Layout . full Scroll Right () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfull Scroll Left () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Tab Layout . full Scroll Left () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġscroll To Position ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Tab Layout . scrollTo Position ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġswap Tab ( a : ĠInt , Ġb : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Tab Layout . swap Tab ( a , Ġb ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmove Tab ( from : ĠInt , Ġto : ĠInt , Ġnew _ cur er nt : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Tab Layout . move Tab ( from , Ġto , Ġnew _ cur er nt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAB _ TYPE _ SCROLL ABLE Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAB _ TYPE _ FULL Ġ= Ġ 1 ĊĠĠĠ Ġ} Ċ } Ċ