package Ġcom . github . pre mn irm al . ticker . home Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Animator Listener Adapter Ċ import Ġandroid . app . AlertDialog . Builder Ċ import Ġandroid . app widget . App Widget Manager Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Persist able Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . ViewGroup . Margin LayoutParams Ċ import Ġcom . github . pre mn irm al . ticker . App Preferences Ċ import Ġcom . github . pre mn irm al . ticker . base . Base Activity Ċ import Ġcom . github . pre mn irm al . ticker . components . In App Message Ċ import Ġcom . github . pre mn irm al . ticker . components . Injector Ċ import Ġcom . github . pre mn irm al . ticker . components . is Network Online Ċ import Ġcom . github . pre mn irm al . ticker . events . Refresh Event Ċ import Ġcom . github . pre mn irm al . ticker . model . IS to cks Provider Ċ import Ġcom . github . pre mn irm al . ticker . network . Simple Subscriber Ċ import Ġcom . github . pre mn irm al . ticker . network . data . Quote Ċ import Ġcom . github . pre mn irm al . ticker . portfolio . Portfolio Fragment Ċ import Ġcom . github . pre mn irm al . ticker . settings . Settings Activity Ċ import Ġcom . github . pre mn irm al . ticker . settings . Widget Settings Activity Ċ import Ġcom . github . pre mn irm al . ticker . widget . Widget DataProvider Ċ import Ġcom . github . pre mn irm al . ticker widget . Build Config Ċ import Ġcom . github . pre mn irm al . ticker widget . R Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġkotlinx . android . synt hetic . main . activity _ par an ormal . add _ stocks _ container Ċ import Ġkotlinx . android . synt hetic . main . activity _ par an ormal . coll ap sing Toolbar Layout Ċ import Ġkotlinx . android . synt hetic . main . activity _ par an ormal . edit _ widget _ container Ċ import Ġkotlinx . android . synt hetic . main . activity _ par an ormal . fab _ add _ stocks Ċ import Ġkotlinx . android . synt hetic . main . activity _ par an ormal . fab _ bg Ċ import Ġkotlinx . android . synt hetic . main . activity _ par an ormal . fab _ edit _ widget Ċ import Ġkotlinx . android . synt hetic . main . activity _ par an ormal . fab _ settings Ċ import Ġkotlinx . android . synt hetic . main . activity _ par an ormal . subtitle Ċ import Ġkotlinx . android . synt hetic . main . activity _ par an ormal . swipe _ container Ċ import Ġkotlinx . android . synt hetic . main . activity _ par an ormal . tabs Ċ import Ġkotlinx . android . synt hetic . main . activity _ par an ormal . toolbar Ċ import Ġkotlinx . android . synt hetic . main . activity _ par an ormal . view _ pager Ċ import Ġuk . co . chr is jen x . call ig raph y . Type face Utils Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġpre mn irm al Ġon Ġ 2 / 2 5 / 1 6 . Ċ Ġ*/ Ċ class ĠPar an ormal Activity Ġ: ĠBase Activity (), ĠPortfolio Fragment . Callback Ġ{ ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġconst Ġval ĠDIALOG _ SHO WN : ĠString Ġ= Ġ" DIALOG _ SHO WN " ĊĠĠĠ Ġconst Ġval ĠMAX _ FETCH _ COUNT Ġ= Ġ 3 ĊĠĠĠ Ġconst Ġval ĠF AB _ ANIM ATION _ DURATION Ġ= Ġ 2 0 0 L ĊĠ Ġ} ĊĊĠ Ġ@ Inject Ġinternal Ġlateinit Ġvar Ġpreferences : ĠSharedPreferences ĊĠ Ġ@ Inject Ġinternal Ġlateinit Ġvar Ġstock s Provider : ĠI Sto cks Provider ĊĠ Ġ@ Inject Ġinternal Ġlateinit Ġvar Ġwidget DataProvider : ĠWidget DataProvider ĊĠ Ġ@ Inject Ġinternal Ġlateinit Ġvar Ġapp Preferences : ĠApp Preferences ĊĊĠ Ġprivate Ġvar Ġdialog Shown Ġ= Ġfalse ĊĠ Ġprivate Ġvar Ġattempting Fetch Ġ= Ġfalse ĊĠ Ġprivate Ġvar Ġis FAB Open Ġ= Ġfalse ĊĠ Ġprivate Ġvar Ġfetch Count Ġ= Ġ 0 ĊĠ Ġprivate Ġval Ġadapter : ĠHome Pager Adapter Ġby Ġlazy Ġ{ ĊĠĠĠ ĠHome Pager Adapter ( support FragmentManager ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ ĠsetContentView ( R . layout . activity _ par an ormal ) ĊĠĠĠ ĠInject or . app Component . inject ( this ) ĊĠĠĠ ĠsavedInstanceState ?. let Ġ{ Ġdialog Shown Ġ= Ġit . getBoolean ( DIALOG _ SHO WN , Ġfalse ) Ġ} ĊĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠ Ġ( toolbar . layout Params Ġas ĠViewGroup . Margin LayoutParams ). top Margin Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġget StatusBar Height () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ(! has NavBar ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġmargin Ġ= Ġresources . get Dimension Pixel Size ( R . dim en . fab _ margin _ bottom _ without _ nav ) ĊĠĠĠĠĠ Ġ( fab _ settings . layout Params Ġas ĠMargin LayoutParams ). bottom Margin Ġ= Ġmargin ĊĠĠĠĠĠ Ġ( add _ stocks _ container . layout Params Ġas ĠMargin LayoutParams ). bottom Margin Ġ= Ġmargin ĊĠĠĠĠĠ Ġ( edit _ widget _ container . layout Params Ġas ĠMargin LayoutParams ). bottom Margin Ġ= Ġmargin ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcol lap sing Toolbar Layout . set Collapsed Title Type face ( ĊĠĠĠĠĠĠĠ ĠType face Utils . load ( assets , Ġ" fonts / Ubuntu - Regular . ttf ")) ĊĠĠĠ Ġcol lap sing Toolbar Layout . set Expanded Title Type face ( ĊĠĠĠĠĠĠĠ ĠType face Utils . load ( assets , Ġ" fonts / Ubuntu - Bold . ttf ")) ĊĊĠĠĠ Ġswipe _ container . setColor Scheme Resources ( R . color . color _ primary _ dark , ĠR . color . sp icy _ sal mon , ĊĠĠĠĠĠĠĠ ĠR . color . sea ) ĊĠĠĠ Ġswipe _ container . setOn Refresh Listener Ġ{ Ġfetch () Ġ} ĊĊĠĠĠ Ġview _ pager . adapter Ġ= Ġadapter ĊĠĠĠ Ġtabs ?. setup With ViewPager ( view _ pager ) ĊĠĠĠ Ġsubtitle ?. text Ġ= ĠgetString ( R . string . last _ fetch , Ġstock s Provider . last F etched ()) ĊĊĠĠĠ Ġval Ġtutorial Shown Ġ= Ġapp Preferences . tutorial Shown () ĊĠĠĠ Ġif Ġ(! tutorial Shown ) Ġ{ ĊĠĠĠĠĠ Ġshow Tutorial () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( app Preferences . getLast Saved Version Code () Ġ< ĠBuild Config . VERSION _ CODE ) Ġ{ ĊĠĠĠĠĠ Ġshow Wh ats New () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtoolbar . inflate Menu ( R . menu . menu _ par an ormal ) ĊĠĠĠ Ġtoolbar . setOn MenuItem ClickListener Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠ Ġval ĠitemId Ġ= Ġitem . itemId ĊĠĠĠĠĠ Ġwhen Ġ( itemId ) Ġ{ ĊĠĠĠĠĠĠĠ ĠR . id . action _ settings Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠSettings Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠR . id . action _ tutorial Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġshow Tutorial () ĊĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠR . id . action _ whats _ new Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġshow Wh ats New () ĊĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfab _ settings . setOnClickListener Ġ{ Ġv Ġ-> ĊĠĠĠĠĠ Ġif Ġ(! widget DataProvider . has Widget ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwidget Id Ġ= ĠApp Widget Manager . INVALID _ APP WIDGET _ ID ĊĠĠĠĠĠĠĠ Ġopen Ticker Selector ( v , Ġwidget Id ) ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is FAB Open ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġclose FAB Menu () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġshow FAB Menu () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfab _ add _ stocks . setOnClickListener Ġ{ Ġv Ġ-> ĊĠĠĠĠĠ Ġval Ġapp Widget Ids Ġ= Ġwidget DataProvider . getApp Widget Ids () ĊĠĠĠĠĠ Ġif Ġ( app Widget Ids . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwidget Id Ġ= Ġapp Widget Ids [ view _ pager !!. currentItem ] ĊĠĠĠĠĠĠĠ Ġopen Ticker Selector ( v , Ġwidget Id ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfab _ edit _ widget . setOnClickListener Ġ{ Ġv Ġ-> ĊĠĠĠĠĠ Ġval Ġapp Widget Ids Ġ= Ġwidget DataProvider . getApp Widget Ids () ĊĠĠĠĠĠ Ġif Ġ( app Widget Ids . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwidget Id Ġ= Ġapp Widget Ids [ view _ pager !!. currentItem ] ĊĠĠĠĠĠĠĠ Ġopen Widget Settings ( v , Ġwidget Id ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfab _ bg . setOnClickListener Ġ{ ĊĠĠĠĠĠ Ġclose FAB Menu () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠ Ġif Ġ(! maybe Ask To Rate ()) Ġ{ ĊĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġshow Tutorial () Ġ{ ĊĠĠĠ Ġshow Dialog ( getString ( R . string . how _ to _ title ), ĠgetString ( R . string . how _ to )) ĊĠĠĠ Ġapp Preferences . set Tutorial Shown ( true ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġshow Wh ats New () Ġ{ ĊĠĠĠ Ġapp Preferences . save Version Code ( Build Config . VERSION _ CODE ) ĊĠĠĠ Ġval ĠstringBuilder Ġ= ĠStringBuilder () ĊĠĠĠ Ġval Ġwh ats New Ġ= Ġresources . getString Array ( R . array . whats _ new ) ĊĠĠĠ Ġwh ats New . indices . forEach Ġ{ ĊĠĠĠĠĠ ĠstringBuilder . append ("- Ġ") ĊĠĠĠĠĠ ĠstringBuilder . append ( whats New [ it ]) ĊĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġwh ats New . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ ĠstringBuilder . append ("\ n ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġshow Dialog ( getString ( R . string . whats _ new _ in , ĠBuild Config . VERSION _ NAME ), ĊĠĠĠĠĠĠĠ ĠstringBuilder . toString ()) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġopen Widget Settings ( v : ĠView , Ġwidget Id : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġintent Ġ= ĠWidget Settings Activity . launch Intent ( this , Ġwidget Id ) ĊĠĠĠ Ġval Ġrect Ġ= ĠRect () ĊĠĠĠ Ġv . getGlobal Visible Rect ( rect ) ĊĠĠĠ Ġval Ġcenter X Ġ= Ġ( rect . right Ġ- Ġ(( rect . right Ġ- Ġrect . left ) Ġ/ Ġ 2 )) ĊĠĠĠ Ġval Ġcenter Y Ġ= Ġ( rect . bottom Ġ- Ġ(( rect . bottom Ġ- Ġrect . top ) Ġ/ Ġ 2 )) ĊĠĠĠ Ġintent . putExtra ( EXTRA _ CENTER _ X , Ġcenter X ) ĊĠĠĠ Ġintent . putExtra ( EXTRA _ CENTER _ Y , Ġcenter Y ) ĊĠĠĠ ĠstartActivity ( intent ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġshow FAB Menu () Ġ{ ĊĠĠĠ Ġif Ġ(! is FAB Open ) Ġ{ ĊĠĠĠĠĠ Ġis FAB Open Ġ= Ġtrue ĊĠĠĠĠĠ Ġfab _ settings . animate (). rotation By ( 4 5 f ). set Duration ( FAB _ ANIM ATION _ DURATION ). start () ĊĠĠĠĠĠ Ġadd _ stocks _ container . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠ Ġedit _ widget _ container . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠ Ġfab _ bg . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠ Ġfab _ bg . animate (). alpha ( 1 f ). set Duration ( FAB _ ANIM ATION _ DURATION ). set Listener ( null ). start () ĊĠĠĠĠĠ Ġadd _ stocks _ container . animate (). translation Y (- resources . get Dimension ( R . dim en . first _ fab _ margin )) ĊĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( FAB _ ANIM ATION _ DURATION ). start () ĊĠĠĠĠĠ Ġedit _ widget _ container . animate (). translation Y ( ĊĠĠĠĠĠĠĠĠĠ Ġ- resources . get Dimension ( R . dim en . second _ fab _ margin )) ĊĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( FAB _ ANIM ATION _ DURATION ). start () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġclose FAB Menu () Ġ{ ĊĠĠĠ Ġif Ġ( is FAB Open ) Ġ{ ĊĠĠĠĠĠ Ġis FAB Open Ġ= Ġfalse ĊĠĠĠĠĠ Ġfab _ settings . animate (). rotation By (- 4 5 f ). set Duration ( FAB _ ANIM ATION _ DURATION ). start () ĊĠĠĠĠĠ Ġfab _ bg . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠ Ġfab _ bg . animate (). alpha ( 0 f ). set Duration ( FAB _ ANIM ATION _ DURATION ) ĊĠĠĠĠĠĠĠĠĠ Ġ. set Listener ( object Ġ: ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfab _ bg . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ}). start () ĊĠĠĠĠĠ Ġadd _ stocks _ container . animate (). translation Y ( 0 f ). set Duration ( FAB _ ANIM ATION _ DURATION ). start () ĊĠĠĠĠĠ Ġedit _ widget _ container . animate (). translation Y ( 0 f ). set Duration ( ĊĠĠĠĠĠĠĠĠĠ ĠF AB _ ANIM ATION _ DURATION ). set Listener ( ĊĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( anim ator : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is FAB Open ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd _ stocks _ container . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ widget _ container . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ}). start () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠ Ġsuper . on Resume () ĊĠĠĠ Ġupdate () ĊĠĠĠ Ġclose FAB Menu () ĊĠĠĠ Ġbind ( bus . for EventType ( Refresh Event :: class . java )) ĊĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġupdate Header () Ġ{ ĊĠĠĠ Ġtabs . visibility Ġ= Ġif Ġ( widget DataProvider . has Widget ()) ĠView . VISIBLE Ġelse ĠView . IN VISIBLE ĊĠĠĠ Ġsubtitle ?. text Ġ= ĠgetString ( R . string . last _ fetch , Ġstock s Provider . last F etched ()) ĊĠĠĠ Ġif Ġ(! widget DataProvider . has Widget ()) Ġ{ ĊĠĠĠĠĠ Ġfab _ settings . setImage Resource ( R . drawable . ic _ add ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġfab _ settings . setImage Resource ( R . drawable . ic _ settings ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġfetch () Ġ{ ĊĠĠĠ Ġif Ġ(! at tempting Fetch ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( is Network Online ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġfetch Count ++ ĊĠĠĠĠĠĠĠ Ġ// ĠDon 't Ġattempt Ġto Ġmake Ġmany Ġrequests Ġin Ġa Ġrow Ġif Ġthe Ġstock s Ġdon 't Ġfetch . ĊĠĠĠĠĠĠĠ Ġif Ġ( fetch Count Ġ<= ĠMAX _ FETCH _ COUNT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġattempting Fetch Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠ Ġbind ( stocks Provider . fetch ()). subscribe ( object Ġ: ĠSimple Subscriber < List < Quote >>() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattempting Fetch Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe _ container ?. is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIn App Message . showMessage ( this @ Par an ormal Activity , ĠgetString ( R . string . refresh _ failed )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( result : ĠList < Quote >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattempting Fetch Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe _ container ?. is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġattempting Fetch Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠ ĠIn App Message . showMessage ( this , ĠgetString ( R . string . refresh _ failed )) ĊĠĠĠĠĠĠĠĠĠ Ġswipe _ container ?. is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġattempting Fetch Ġ= Ġfalse ĊĠĠĠĠĠĠĠ ĠIn App Message . showMessage ( this , ĠgetString ( R . string . no _ network _ message )) ĊĠĠĠĠĠĠĠ Ġswipe _ container ?. is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġupdate () Ġ{ ĊĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠ Ġupdate Header () ĊĠĠĠ Ġfetch Count Ġ= Ġ 0 ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ?, Ġout Persistent State : ĠPers ist able Bundle ?) Ġ{ ĊĠĠĠ Ġsuper . on Save InstanceState ( out State , Ġout Persistent State ) ĊĠĠĠ Ġout State ?. put Boolean ( DIALOG _ SHO WN , Ġdialog Shown ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġmaybe Ask To Rate (): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ(! dialog Shown Ġ&& Ġapp Preferences . should Prompt Rate ()) Ġ{ ĊĠĠĠĠĠ ĠBuilder ( this ). setTitle ( R . string . like _ our _ app ) ĊĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( R . string . please _ rate ) ĊĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . yes ) Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend To Play Store () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Preferences . user Did Rate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( R . string . later ) Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ. create (). show () ĊĠĠĠĠĠ Ġdialog Shown Ġ= Ġtrue ĊĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfalse ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġsend To Play Store () Ġ{ ĊĠĠĠ Ġval Ġmarket Uri : ĠUri Ġ= ĠUri . parse (" market :// details ? id =$ packageName ") ĊĠĠĠ Ġval Ġmarket Intent Ġ= ĠIntent ( Intent . ACTION _ VIEW , Ġmarket Uri ) ĊĠĠĠ Ġmarket Intent . resolve Activity ( package Manager )?. let Ġ{ ĊĠĠĠĠĠ ĠstartActivity ( market Intent ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ// ĠPortfolio Fragment . Callback ĊĊĠ Ġoverride Ġfun Ġon Drag Started () Ġ{ ĊĠĠĠ Ġswipe _ container . isEnabled Ġ= Ġfalse ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Drag Ended () Ġ{ ĊĠĠĠ Ġswipe _ container . isEnabled Ġ= Ġtrue ĊĠ Ġ} Ċ }