package Ġcom . tern ary op . photos he lf . tum blr . dialog . editor . fragment Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Image Button Ċ import Ġandroid . widget . Spinner Ċ import Ġandroidx . appcompat . app . ActionBar Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . tern ary op . photos he lf . lifecycle . Event Observer Ċ import Ġcom . tern ary op . photos he lf . lifecycle . Status Ċ import Ġcom . tern ary op . photos he lf . m ru . adapter . MR U Holder Ċ import Ġcom . tern ary op . photos he lf . tum blr . dialog . Edit Post Editor Data Ċ import Ġcom . tern ary op . photos he lf . tum blr . dialog . New Post Editor Data Ċ import Ġcom . tern ary op . photos he lf . tum blr . dialog . Post Editor Data Ċ import Ġcom . tern ary op . photos he lf . tum blr . dialog . Post ViewModel Ċ import Ġcom . tern ary op . photos he lf . tum blr . dialog . R Ċ import Ġcom . tern ary op . photos he lf . tum blr . dialog . T um blr Post Dialog . Companion . ARG _ POST _ DATA Ċ import Ġcom . tern ary op . photos he lf . tum blr . dialog . T um blr Post Dialog . Companion . EXTRA _ MAX _ HIG HL IGHT ED _ TAGS _ MR U _ ITEMS Ċ import Ġcom . tern ary op . photos he lf . tum blr . dialog . T um blr Post Dialog . Companion . EXTRA _ MAX _ TAGS _ MR U _ ITEMS Ċ import Ġcom . tern ary op . photos he lf . tum blr . dialog . T um blr Post Dialog . Companion . EXTRA _ TH UMB NA IL S _ ITEMS Ċ import Ġcom . tern ary op . photos he lf . tum blr . dialog . T um blr Post Dialog . Companion . EXTRA _ TH UMB NA IL S _ SIZE Ċ import Ġcom . tern ary op . photos he lf . tum blr . dialog . T um blr Post Model Result Ċ import Ġcom . tern ary op . photos he lf . tum blr . dialog . editor . Abs T um blr Post Editor Ċ import Ġcom . tern ary op . photos he lf . tum blr . dialog . editor . Edit T um blr Post Editor Ċ import Ġcom . tern ary op . photos he lf . tum blr . dialog . editor . New T um blr Post Editor Ċ import Ġcom . tern ary op . photos he lf . tum blr . dialog . editor . adapter . Thumbnail Adapter Ċ import Ġcom . tern ary op . photos he lf . tum blr . dialog . editor . finish Activity Ċ import Ġcom . tern ary op . photos he lf . tum blr . dialog . editor . view holder . Tags Holder Ċ import Ġcom . tern ary op . photos he lf . tum blr . dialog . editor . view holder . Title Holder Ċ import Ġcom . tern ary op . photos he lf . util . menu . enable All Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ Ċ private Ġconst Ġval ĠB LOG _ VISIBLE _ PRE F _ NAME Ġ= Ġ" post Editor Is Blog Visible " Ċ private Ġconst Ġval ĠTH UMB NA IL _ VISIBLE _ PRE F _ NAME Ġ= Ġ" post Editor Is Thumbnail List Visible " Ċ private Ġconst Ġval ĠDEFAULT _ TH UMB NA IL _ SIZE Ġ= Ġ 7 5 Ċ Ċ fun ĠMap < String , ĠAny > ?. getInt ( preferences : ĠSharedPreferences , Ġkey : ĠString , ĠdefaultValue : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġthis ?. get ( key ) Ġas ? ĠInt Ġ?: Ġpreferences . getInt ( key , ĠdefaultValue ) Ċ } Ċ Ċ @ Android EntryPoint Ċ class ĠPost Editor Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġt um blr Post Action : ĠAbs T um blr Post Editor ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpreferences : ĠSharedPreferences ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠPost ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġblog Spinner : ĠSp inner ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrefresh Blog Button : ĠImage Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġthumb nails RecyclerView : ĠRecyclerView ĊĊĠĠĠ Ġval Ġsupport ActionBar : ĠAction Bar ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ( activity Ġas ĠAppCompatActivity ). support ActionBar ĊĊĠĠĠ Ġprivate Ġvar Ġis Options Menu Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (). invalidate Options Menu () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ tum blr _ post , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġpreferences Ġ= ĠPreference Manager . getDefault SharedPreferences ( require Context ()) ĊĊĠĠĠĠĠĠĠ ĠviewModel . result . observe ( require Activity (), ĠEvent Observer Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠT um blr Post Model Result . Title Parsed Ġ-> Ġon Title Parsed ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠT um blr Post Model Result . Mis spel led Info Ġ-> Ġon Mis spel led Info ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġblog Spinner Ġ= Ġview . findViewById ( R . id . blog ) ĊĠĠĠĠĠĠĠ Ġrefresh Blog Button Ġ= Ġview . findViewById ( R . id . refresh Blog List ) ĊĠĠĠĠĠĠĠ Ġthumb nails RecyclerView Ġ= Ġview . findViewById ( R . id . thumbnail ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠcheckNotNull ( arguments ?. get Serializable ( ARG _ POST _ DATA ) Ġas ? ĠPost Editor Data ) ĊĠĠĠĠĠĠĠ Ġval Ġtags Holder Ġ= ĠTags Holder ( require Context (), Ġview . findViewById ( R . id . post _ tags ), Ġdata . blog Name ) ĊĠĠĠĠĠĠĠ Ġval Ġtitle Holder Ġ= ĠTitle Holder ( view . findViewById ( R . id . post _ title ), Ġdata . source Title , Ġdata . html Source Title ) ĊĠĠĠĠĠĠĠ Ġval Ġmax M ru Items Ġ= Ġdata . extras . getInt ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEX TRA _ MAX _ TAGS _ MR U _ ITEMS , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getInteger ( R . integer . post _ editor _ max _ m ru _ items )) ĊĠĠĠĠĠĠĠ Ġval Ġmax Highlight ed M ru Items Ġ= Ġdata . extras . getInt ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEX TRA _ MAX _ HIG HL IGHT ED _ TAGS _ MR U _ ITEMS , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getInteger ( R . integer . post _ editor _ max _ highlighted _ items )) ĊĊĠĠĠĠĠĠĠ Ġval Ġm ru Holder Ġ= ĠM RU Holder ( require Context (), Ġview . findViewById ( R . id . m ru _ list ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax M ru Items , Ġmax Highlight ed M ru Items , Ġtags Holder ) ĊĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġt um blr Post Action Ġ= Ġwhen Ġ( data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠEdit Post Editor Data Ġ-> ĠEdit T um blr Post Editor ( data , Ġtitle Holder , Ġtags Holder , Ġm ru Holder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNew Post Editor Data Ġ-> ĠNew T um blr Post Editor ( data , Ġtitle Holder , Ġtags Holder , Ġm ru Holder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġlifecycle . add Observer ( this ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException (" Unknown Ġpost Ġdata ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġshow Blog List () ĊĠĠĠĠĠĠĠ Ġshow Thumb nails () ĊĠĠĠĠĠĠĠ Ġsetup Thumb nails ( data ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. subtitle Ġ= Ġdata . blog Name ĊĠĠĠĠĠĠĠ Ġt um blr Post Action . setup UI ( support ActionBar , Ġview ) ĊĠĠĠĠĠĠĠ Ġis Options Menu Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġfill Tags ( data . tags ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Thumb nails () Ġ{ ĊĠĠĠĠĠĠĠ Ġthumb nails RecyclerView . visibility Ġ= Ġif Ġ( preferences . getBoolean ( TH UMB NA IL _ VISIBLE _ PRE F _ NAME , Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Blog List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvisibility Ġ= Ġif Ġ( preferences . getBoolean ( B LOG _ VISIBLE _ PRE F _ NAME , Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġblog Spinner . visibility Ġ= Ġvisibility ĊĠĠĠĠĠĠĠ Ġrefresh Blog Button . visibility Ġ= Ġvisibility ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġprivate Ġfun Ġsetup Thumb nails ( data : ĠPost Editor Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( data . extras ?. get ( EXTRA _ TH UMB NA IL S _ ITEMS ) Ġas ? ĠList < String >) ?. also Ġ{ Ġthumb nails Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġthumb nails RecyclerView . context ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġ( data . extras [ EXTRA _ TH UMB NA IL S _ SIZE ] Ġas ? ĠInt ) Ġ?: ĠDEFAULT _ TH UMB NA IL _ SIZE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠThumb nail Adapter ( context , Ġsize ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . addAll ( thumb nails ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthumb nails RecyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthumb nails RecyclerView . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthumb nails RecyclerView . layout Manager Ġ= ĠLinearLayoutManager ( context , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . tum blr _ post _ edit , Ġmenu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Prepare Options Menu ( menu : ĠMenu ) Ġ{ ĊĠĠĠĠĠĠĠ Ġt um blr Post Action . on Prepare Menu ( menu ) ĊĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . toggle _ blog _ list ). isChecked Ġ= Ġpreferences . getBoolean ( B LOG _ VISIBLE _ PRE F _ NAME , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . toggle _ thumb nails ). isChecked Ġ= Ġpreferences . getBoolean ( TH UMB NA IL _ VISIBLE _ PRE F _ NAME , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġmenu . enable All ( is Options Menu Enabled ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . parse _ title Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . parse ( tum blr Post Action . title Holder . plain Title , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . parse _ title _ swap Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . parse ( tum blr Post Action . title Holder . plain Title , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . source _ title Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt um blr Post Action . title Holder . restore Source Title () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . toggle _ blog _ list Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . isChecked Ġ= Ġ! item . isChecked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . edit (). put Boolean ( B LOG _ VISIBLE _ PRE F _ NAME , Ġitem . isChecked ). apply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Blog List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . toggle _ thumb nails Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . isChecked Ġ= Ġ! item . isChecked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . edit (). put Boolean ( TH UMB NA IL _ VISIBLE _ PRE F _ NAME , Ġitem . isChecked ). apply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Thumb nails () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġt um blr Post Action . execute ( item ) Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . finish Activity ( require Activity ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Title Parsed ( result : ĠT um blr Post Model Result . Title Parsed ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( result . command . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġresult . command . data ?. also Ġ{ Ġdata Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt um blr Post Action . title Holder . html Title Ġ= Ġdata . html ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill Tags ( data . tags ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġresult . command . error ?. also Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( R . string . parsing _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( error . localized Message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . PROGRESS Ġ-> Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Mis spel led Info ( result : ĠT um blr Post Model Result . Mis spel led Info ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis Options Menu Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġwhen Ġ( result . command . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġresult . command . data ?. also Ġ{ Ġt um blr Post Action . tags Holder . highlight TagName ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . PROGRESS Ġ-> Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfill Tags ( tags : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġis Options Menu Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġfirst Tag Ġ= Ġif Ġ( tags . isEmpty ()) Ġ"" Ġelse Ġtags [ 0 ] ĊĠĠĠĠĠĠĠ Ġt um blr Post Action . tags Holder . tags Ġ= Ġtags . join ToString (", Ġ") ĊĊĠĠĠĠĠĠĠ ĠviewModel . search Mis spel led Name ( first Tag ) ĊĠĠĠ Ġ} Ċ } Ċ