package Ġde . ka . rg reed . utils Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroid . widget .* Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . graphics . drawable . Drawable Compat Ċ import Ġde . ka . rg reed . R ĊĊ Ċ /** Ċ Ġ* ĠA Ġcustom Ġlayout Ġfor Ġshowing Ġa Ġtoolbar . Ċ Ġ*/ Ċ class ĠApp Toolbar Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style Attr : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠToolbar ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLists Ġall Ġpossible Ġapp Ġtoolbar Ġstates . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġenum Ġclass ĠApp Toolbar State Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠShows Ġthe Ġapp Ġaction Ġon Ġthe Ġright , Ġreplaced Ġ Ġwith Ġa Ġloading Ġindicator ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠLO ADING , ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠShows Ġthe Ġapp Ġaction Ġon Ġthe Ġright ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠACTION _ VISIBLE , ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDoes Ġnot Ġdisplay Ġthe Ġaction Ġon Ġthe Ġright ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠNO _ ACTION ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġnav Text : ĠTextView ĊĠĠĠ Ġprivate Ġvar Ġnav Button : ĠImageView ĊĠĠĠ Ġprivate Ġvar Ġnav ActionButton : ĠImage Button ĊĠĠĠ Ġprivate Ġvar Ġnav Action Progress : ĠProgress Bar ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinf late ( context , ĠR . layout . layout _ ap pt ool bar , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġnav Button Ġ= ĠfindViewById ( R . id . nav Image ) ĊĠĠĠĠĠĠĠ Ġnav Text Ġ= ĠfindViewById ( R . id . nav Text ) ĊĠĠĠĠĠĠĠ Ġnav ActionButton Ġ= ĠfindViewById ( R . id . nav ActionButton ) ĊĠĠĠĠĠĠĠ Ġnav Action Progress Ġ= ĠfindViewById ( R . id . nav Action Progress ) ĊĊĠĠĠĠĠĠĠ Ġhide Action () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġa Ġclick Ġlistener Ġfor Ġthe Ġnavigation Ġbutton Ġon Ġthe Ġleft . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Nav Button ClickListener ( listener : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnav Button . setOnClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . close Attached Keyboard () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠL ets Ġthe Ġaction Ġbutton Ġbackground Ġbe Ġtransparent , Ġif Ġset Ġto Ġtrue . ĠSetting Ġto Ġfalse Ġwill Ġhave Ġno Ġeffect , Ġbut ĊĠĠĠĠ Ġ* Ġresults Ġin Ġthe Ġdefault Ġbackground Ġof Ġthe Ġbutton . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset ActionButton Has Transparent Background ( has Transparent Background : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( has Transparent Background ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav ActionButton . setBackground Resource ( R . drawable . rect _ button _ transparent _ selector ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠDrawable Compat . set Tint ( nav ActionButton . drawable , ĠContext Compat . getColor ( context , ĠR . color . font Default )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġa Ġtext Ġfor Ġthe Ġnavigation Ġbar Ġon Ġthe Ġtop . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Nav Text ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnav Text . text Ġ= Ġtext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġtext Ġof Ġthe Ġaction Ġbutton . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset ActionButton Drawable Res ( drawable Res : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnav ActionButton . setImage Resource ( drawable Res ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġclick Ġlistener Ġ Ġof Ġthe Ġaction Ġbutton . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset ActionButton ClickListener ( listener : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnav ActionButton . setOnClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . close Attached Keyboard () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUpdates Ġthe Ġstate Ġof Ġthe Ġtoolbar . ĠMain ly Ġfoc uses Ġon Ġdisplaying Ġ/ Ġhiding Ġ/ Ġupdating Ġthe Ġaction Ġon Ġthe Ġright . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupdate State ( state : ĠApp Toolbar State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Toolbar State . LOADING Ġ-> Ġshow Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Toolbar State . ACTION _ VISIBLE Ġ-> Ġshow Action () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Toolbar State . NO _ ACTION Ġ-> Ġhide Action () ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġnav ActionButton . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġnav Action Progress . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġnav ActionButton . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġnav Action Progress . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġnav ActionButton . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġnav Action Progress . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊ Ċ }