package Ġcom . lo o peer . coder e ader kt . ui . activity Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . databinding . Data Binding Util Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Activity Compat Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . View Animator Ċ import Ġcom . lo o peer . coder e ader kt . Code Reader Application Ċ import Ġcom . lo o peer . coder e ader kt . Navigator Ċ import Ġcom . lo o peer . coder e ader kt . R Ċ import Ġcom . lo o peer . coder e ader kt . databinding . Activity Main Binding Ċ import Ġcom . lo o peer . coder e ader kt . db . Co Reader Db Helper Ċ import Ġcom . lo o peer . coder e ader kt . event . Download Fail Delete Event Ċ import Ġcom . lo o peer . coder e ader kt . model . Repo Ċ import Ġcom . lo o peer . coder e ader kt . sync . Download Repo Service Ċ import Ġcom . lo o peer . coder e ader kt . ui . adapter . Item Touch Helper Callback Ċ import Ġcom . lo o peer . coder e ader kt . ui . adapter . Main Latest Adapter Ċ import Ġcom . lo o peer . coder e ader kt . ui . decoration . Divider Item Decoration Ċ import Ġcom . lo o peer . coder e ader kt . ui . decoration . Divider Item Decoration Main List Ċ import Ġcom . lo o peer . coder e ader kt . ui . loader . IL o ad Helper Ċ import Ġcom . lo o peer . coder e ader kt . ui . loader . Recycler Loader Ċ import Ġcom . lo o peer . coder e ader kt . utils . Rx Bus Ċ import Ġcom . lo o peer . directory cho oser . File N od Ċ import Ġcom . lo o peer . directory cho oser . Navigator Chooser Ċ import Ġcom . lo o peer . item touch helper extension . Item Touch Helper Extension Ċ import Ġrx . android . schedul ers . Android Schedulers ĊĊ Ċ class ĠMainActivity Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" MainActivity " ĊĠĠĠ Ġprivate Ġval ĠMY _ PERMISSION S _ REQUEST _ WRITE _ EXTERNAL _ STORAGE Ġ= Ġ 1 0 0 0 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Main Binding ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Recycler Loader : ĠI Load Helper ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Main Latest Adapter : ĠMain Latest Adapter ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Item Touch Helper : ĠItem Touch Helper Extension ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Callback : ĠItem Touch Helper Extension . Callback ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm RecyclerView : ĠRecyclerView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Animator Recycler Content : ĠView Animator ĊĠĠĠ Ġ@ SuppressWarnings (" unused ") ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ ĠNavigator (). start Download Repo Service ( this , ĠDownload Repo Service . DOWNLOAD _ PROGRESS ) ĊĊĠĠĠĠĠĠĠ Ġm RecyclerView Ġ= ĠfindViewById ( R . id . view _ recycler ) Ġas ĠRecyclerView ĊĠĠĠĠĠĠĠ Ġm Animator Recycler Content Ġ= ĠfindViewById ( R . id . anim ator _ recycler _ content ) Ġas ĠView Animator ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( false ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( this , ĠManifest . permission . WRITE _ EXTERNAL _ STORAGE ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Activity Compat . should Show Request Permission R ationale ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . WRITE _ EXTERNAL _ STORAGE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Manifest . permission . WRITE _ EXTERNAL _ STORAGE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMY _ PERMISSION S _ REQUEST _ WRITE _ EXTERNAL _ STORAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ repo _ add , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ settings , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ github , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ settings Ġ-> ĠNavigator (). start Setting Activity ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ repo _ add Ġ-> ĠNavigator (). start Add Repo Activity ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ github Ġ-> ĠNavigator (). start Login Activity ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Post Create ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Post Create ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetUp View () ĊĠĠĠĠĠĠĠ Ġregister Subscription ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRx Bus . instance ?. to Observable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . filter ({ Ġo Ġ-> Ġo Ġis ĠDownload Fail Delete Event Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . map ({ Ġo Ġ-> Ġ( o Ġas ĠDownload Fail Delete Event ). delete Repo Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . do On Next ({ Ġm Main Latest Adapter . delete Repo ( it ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . subscribe () !! ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġm Recycler Loader . show Progress () ĊĠĠĠĠĠĠĠ Ġload Local Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp View () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Recycler Loader Ġ= ĠRe cycler Loader ( m Animator Recycler Content ) ĊĠĠĠĠĠĠĠ Ġm RecyclerView . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġm Main Latest Adapter Ġ= ĠMain Latest Adapter ( this ) ĊĠĠĠĠĠĠĠ Ġm RecyclerView . adapter Ġ= Ġm Main Latest Adapter ĊĠĠĠĠĠĠĠ Ġm RecyclerView . addItem Decoration ( Divider Item Decoration Main List ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ider Item Decoration . VERTICAL _ LIST , Ġresources . get Dimension Pixel Size ( R . dim en . repo _ list _ divider _ start ), Ġ- 1 , Ġ- 1 )) ĊĠĠĠĠĠĠĠ Ġm Item Touch Helper Ġ= Ġcreate Item Touch Helper () ĊĠĠĠĠĠĠĠ Ġm Item Touch Helper . attach To RecyclerView ( m RecyclerView ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Item Touch Helper (): ĠItem Touch Helper Extension Ġ{ ĊĠĠĠĠĠĠĠ Ġm Callback Ġ= Ġcreate Callback () ĊĠĠĠĠĠĠĠ Ġreturn ĠItem Touch Helper Extension ( m Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Callback (): ĠItem Touch Helper Extension . Callback Ġ= ĠItem Touch Helper Callback () ĊĊĠĠĠ Ġprivate Ġfun Ġload Local Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrepos Ġ= ĠCo Reader Db Helper . getInstance ( Code Reader Application . app Context ). read Repos () ĊĠĠĠĠĠĠĠ ĠsetUp Content ( repos ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġre Create Refresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . re Create Refresh () ĊĠĠĠĠĠĠĠ Ġm RecyclerView . re cyc led View Pool . clear () ĊĠĠĠĠĠĠĠ Ġm Main Latest Adapter . notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Content ( repos : ĠList < Repo >) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Recycler Loader . show Content () ĊĠĠĠĠĠĠĠ Ġm Main Latest Adapter . update Data ( repos ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Fab Click ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Select File () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdo Select File () Ġ{ ĊĠĠĠĠĠĠĠ ĠNavigator Chooser . start Directory FileChooser Activity ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNavigator Chooser . DIRECTORY _ FILE _ SELECT _ CODE Ġ-> Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnode Ġ= Ġdata . get Serializable Extra ( Navigator Chooser . EXTRA _ FILE _ NODE ) Ġas ĠFile N od ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepo Ġ= ĠRepo (). parse ( node ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . id Ġ= ĠCo Reader Db Helper . getInstance ( this ). insert Repo ( repo ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNavigator (). start Code Read Activity ( this @ MainActivity , Ġrepo ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġm Main Latest Adapter . clear Subscription () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpermissions : ĠArray < String >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMY _ PERMISSION S _ REQUEST _ WRITE _ EXTERNAL _ STORAGE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grant Results . isNotEmpty () Ġ&& Ġgrant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }