package Ġcom . k raft werk 2 8 . po cket cms . fragments Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . activity . add Callback Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġcom . k raft werk 2 8 . po cket cms . dialogs . Confirm Action Ċ import Ġcom . k raft werk 2 8 . po cket cms . Database Ċ import Ġcom . k raft werk 2 8 . po cket cms . Item Swipe Helper Ċ import Ġcom . k raft werk 2 8 . po cket cms . R Ċ import Ġcom . k raft werk 2 8 . po cket cms . adapters . DB Tables Adapter Ċ import Ġcom . k raft werk 2 8 . po cket cms . dialogs . CreateTable Dialog Ċ import Ġcom . k raft werk 2 8 . po cket cms . dialogs . MessageType Ċ import Ġcom . k raft werk 2 8 . po cket cms . dialogs . Text Dialog Ċ import Ġcom . k raft werk 2 8 . po cket cms . view models . DB Tables ViewModel Ċ import Ġkotlinx . android . synt hetic . main . db view _ item . view .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ db tables _ view . view .* Ċ Ċ class ĠDB Tables View Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠDB Tables Adapter ĊĠĠĠ Ġlateinit Ġvar ĠviewModel : ĠDB Tables ViewModel ĊĠĠĠ Ġprivate Ġval Ġitem Touch Helper Callback Ġ= ĠItem Swipe Helper Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtableName Ġ= Ġit . item View . dbname Text . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġpos Ġ= ĠviewModel . tables . value ?. indexOf ( tableName ) Ġ?: Ġ- 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( pos Ġ== Ġ- 1 ) Ġreturn @ Item Swipe Helper ĊĠĠĠĠĠĠĠ ĠConfirm Action ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Remove Ġtable Ġ$ tableName ?", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . remove Table ( tableName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify Item Changed ( pos ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ). invoke () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġinfl ated Ġ= Ġinflater . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . fragment _ db tables _ view , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠDB Tables ViewModel () ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠDB Tables Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Table Item Click Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDatabase . current Table Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. navigate ( R . id . action _ DB Tables _ to _ TableView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrequire Activity (). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Pressed Dispatcher . add Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. navigate ( R . id . action _ DB Tables _ to _ DB Connect ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinfl ated . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb Tables View . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem Touch Helper ( item Touch Helper Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. attach To RecyclerView ( db Tables View ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . fetch Tables () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Text . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Dialog ( context , ĠMessageType . ERROR , Ġit ). invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . error Text . value Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtables . observe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Lifecycle Owner , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . submit List ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . set Navigation OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate Up () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Table FAB . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCreate Table Dialog ( context ) Ġ{ ĠtableName , Ġcolumns Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . createTable ( tableName , Ġcolumns ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġinfl ated ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . fetch Tables () ĊĠĠĠ Ġ} Ċ } Ċ