package Ġcom . github . pre mn irm al . ticker . widget Ċ Ċ import Ġandroid . app widget . App Widget Manager Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . ViewGroup . Margin LayoutParams Ċ import Ġandroid . widget . Adapter View Ċ import Ġandroid . widget . Adapter View . On ItemSelected Listener Ċ import Ġandroid . widget . Base Adapter Ċ import Ġandroid . widget . TextView Ċ import Ġcom . github . pre mn irm al . ticker . base . Base Fragment Ċ import Ġcom . github . pre mn irm al . ticker . components . Injector Ċ import Ġcom . github . pre mn irm al . ticker . getStatus Bar Height Ċ import Ġcom . github . pre mn irm al . ticker . home . Child Fragment Ċ import Ġcom . github . pre mn irm al . ticker . settings . Widget Settings Fragment Ċ import Ġcom . github . pre mn irm al . ticker widget . R Ċ import Ġkotlinx . android . synt hetic . main . fragment _ widgets . toolbar Ċ import Ġkotlinx . android . synt hetic . main . fragment _ widgets . widget _ selection _ spinner Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠWidget s Fragment Ġ: ĠBase Fragment (), ĠChild Fragment , ĠOn ItemSelected Listener Ġ{ ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠARG _ WIDGET _ ID Ġ= ĠApp Widget Manager . EXTRA _ APP WIDGET _ ID ĊĠ Ġ} ĊĊĠ Ġ@ Inject Ġinternal Ġlateinit Ġvar Ġwidget DataProvider : ĠWidget DataProvider ĊĠ Ġprivate Ġlateinit Ġvar Ġwidget DataList : ĠList < Widget Data > ĊĠ Ġprivate Ġvar Ġcurrent Widget Id Ġ= ĠApp Widget Manager . INVALID _ APP WIDGET _ ID ĊĠ Ġoverride Ġval Ġsimple Name : ĠString Ġ= Ġ" Widgets Fragment " ĊĊĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ ĠInject or . app Component . inject ( this ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠ Ġ): ĠView ? Ġ{ ĊĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ widgets , Ġcontainer , Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon View Created ( ĊĠĠĠ Ġview : ĠView , ĊĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠ Ġ( toolbar . layout Params Ġas ĠMargin LayoutParams ). top Margin Ġ= Ġrequire Context (). getStatus Bar Height () ĊĠĠĠ Ġwidget DataList Ġ= Ġwidget DataProvider . getApp Widget Ids () ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġwidget DataProvider . data For Widget Id ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġit . widget Name () Ġ} ĊĠĠĠ Ġwidget _ selection _ spinner . adapter Ġ= ĠWidget Spinner Adapter ( widget DataList ) ĊĠĠĠ Ġwidget _ selection _ spinner . on ItemSelected Listener Ġ= Ġthis ĊĊĠĠĠ Ġarguments ?. let Ġ{ ĊĠĠĠĠĠ Ġselect Widget From Bundle ( it ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠsavedInstanceState ?. let Ġ{ ĊĠĠĠĠĠ Ġselect Widget From Bundle ( it ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġselect Widget From Bundle ( bundle : ĠBundle ) Ġ{ ĊĠĠĠ Ġval Ġwidget Id Ġ= Ġbundle . getInt ( ARG _ WIDGET _ ID ) ĊĠĠĠ Ġif Ġ( widget Id Ġ!= ĠApp Widget Manager . INVALID _ APP WIDGET _ ID ) Ġ{ ĊĠĠĠĠĠ Ġval Ġposition Ġ= Ġwidget DataList . indexOf First Ġ{ Ġit . widget Id Ġ== Ġwidget Id Ġ} ĊĠĠĠĠĠ Ġwidget _ selection _ spinner . setSelection ( position ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠ Ġout State . put Int ( ARG _ WIDGET _ ID , Ġcurrent Widget Id ) ĊĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġset Widget Fragment ( widget Id : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġfragment Ġ= ĠWidget Settings Fragment . newInstance ( widget Id , Ġfalse ) ĊĠĠĠ Ġchild FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠ Ġ. replace ( R . id . child _ fragment _ container , Ġfragment ) ĊĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġcurrent Widget Id Ġ= Ġwidget Id ĊĠ Ġ} ĊĊĠ Ġ// ĠChild Fragment ĊĊĠ Ġoverride Ġfun ĠsetData ( bundle : ĠBundle ) Ġ{ ĊĠĠĠ Ġif Ġ( isVisible ) Ġ{ ĊĠĠĠĠĠ Ġval Ġwidget Id Ġ= Ġbundle . getInt ( ARG _ WIDGET _ ID ) ĊĠĠĠĠĠ Ġset Widget Fragment ( widget Id ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġarguments Ġ= Ġbundle ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ// ĠOn ItemSelected Listener ĊĊĠ Ġoverride Ġfun Ġon Nothing Selected ( parent : ĠAdapter View < *> ?) Ġ{ ĊĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon ItemSelected ( ĊĠĠĠ Ġparent : ĠAdapter View < *> ?, ĊĠĠĠ Ġview : ĠView ?, ĊĠĠĠ Ġposition : ĠInt , ĊĠĠĠ Ġid : ĠLong ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġset Widget Fragment ( widget DataList [ position ]. widget Id ) ĊĠ Ġ} ĊĊĠ Ġclass ĠWidget Spinner Adapter ( private Ġval Ġdata : ĠList < Widget Data >) Ġ: ĠBase Adapter () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget View ( ĊĠĠĠĠĠ Ġposition : ĠInt , ĊĠĠĠĠĠ ĠconvertView : ĠView ?, ĊĠĠĠĠĠ Ġparent : ĠViewGroup ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠ Ġval Ġwidget Data Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠ Ġval Ġview Ġ= ĊĠĠĠĠĠĠĠ ĠconvertView Ġ?: ĠLayoutInflater . from ( parent . context ). inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ widget , Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġval Ġname TextView Ġ= Ġview . findViewById < TextView >( R . id . widget _ name _ text ) ĊĠĠĠĠĠ Ġname TextView . text Ġ= Ġwidget Data . widget Name () ĊĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ( position : ĠInt ): ĠWidget Data Ġ= Ġdata [ position ] ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Id ( position : ĠInt ): ĠLong Ġ= Ġposition . to Long () ĊĊĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ= Ġdata . size ĊĠ Ġ} Ċ }