mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 06:17:57 +01:00 
			
		
		
		
	Update library when changes to the DB are made and open manga detail activity
This commit is contained in:
		| @@ -6,6 +6,7 @@ import javax.inject.Singleton; | ||||
|  | ||||
| import dagger.Component; | ||||
| import eu.kanade.mangafeed.data.DataModule; | ||||
| import eu.kanade.mangafeed.presenter.LibraryPresenter; | ||||
| import eu.kanade.mangafeed.ui.activity.MainActivity; | ||||
| import eu.kanade.mangafeed.ui.activity.MangaDetailActivity; | ||||
| import eu.kanade.mangafeed.ui.fragment.LibraryFragment; | ||||
| @@ -20,7 +21,7 @@ import eu.kanade.mangafeed.ui.fragment.LibraryFragment; | ||||
| public interface AppComponent { | ||||
|  | ||||
|     void inject(MainActivity mainActivity); | ||||
|     void inject(LibraryFragment libraryFragment); | ||||
|     void inject(LibraryPresenter libraryPresenter); | ||||
|     void inject(MangaDetailActivity mangaDetailActivity); | ||||
|  | ||||
|     Application application(); | ||||
|   | ||||
| @@ -0,0 +1,47 @@ | ||||
| package eu.kanade.mangafeed.presenter; | ||||
|  | ||||
| import android.content.Intent; | ||||
| import android.widget.GridView; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
|  | ||||
| import javax.inject.Inject; | ||||
|  | ||||
| import de.greenrobot.event.EventBus; | ||||
| import eu.kanade.mangafeed.App; | ||||
| import eu.kanade.mangafeed.data.helpers.DatabaseHelper; | ||||
| import eu.kanade.mangafeed.ui.activity.MangaDetailActivity; | ||||
| import eu.kanade.mangafeed.ui.adapter.LibraryAdapter; | ||||
| import eu.kanade.mangafeed.view.LibraryView; | ||||
|  | ||||
| import static rx.android.schedulers.AndroidSchedulers.mainThread; | ||||
|  | ||||
| public class LibraryPresenter { | ||||
|  | ||||
|     private LibraryView mLibraryView; | ||||
|  | ||||
|     @Inject | ||||
|     public DatabaseHelper db; | ||||
|  | ||||
|     public LibraryPresenter(LibraryView libraryView) { | ||||
|         mLibraryView = libraryView; | ||||
|         App.getComponent(libraryView.getActivity()).inject(this); | ||||
|     } | ||||
|  | ||||
|     public void onMangaClick(LibraryAdapter adapter, int position) { | ||||
|         Intent intent = new Intent(mLibraryView.getActivity(), MangaDetailActivity.class); | ||||
|         EventBus.getDefault().postSticky(adapter.getItem(position)); | ||||
|         mLibraryView.getActivity().startActivity(intent); | ||||
|     } | ||||
|  | ||||
|     public void initializeMangas() { | ||||
|         db.manga.get() | ||||
|                 .observeOn(mainThread()) | ||||
|                 .subscribe( | ||||
|                         mangas -> { | ||||
|                             mLibraryView.setMangas(new ArrayList<>(mangas)); | ||||
|                         } | ||||
|                 ); | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -11,6 +11,7 @@ import android.widget.TextView; | ||||
|  | ||||
| import com.bumptech.glide.Glide; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
|  | ||||
| import butterknife.Bind; | ||||
| @@ -28,9 +29,9 @@ public class LibraryAdapter extends ArrayAdapter<Manga> { | ||||
|  | ||||
|     Context context; | ||||
|     int layoutResourceId; | ||||
|     List<Manga> data; | ||||
|     ArrayList<Manga> data; | ||||
|  | ||||
|     public LibraryAdapter(Context context, int layoutResourceId, List<Manga> data) { | ||||
|     public LibraryAdapter(Context context, int layoutResourceId, ArrayList<Manga> data) { | ||||
|         super(context, layoutResourceId, data); | ||||
|         this.context = context; | ||||
|         this.layoutResourceId = layoutResourceId; | ||||
| @@ -63,6 +64,12 @@ public class LibraryAdapter extends ArrayAdapter<Manga> { | ||||
|         return row; | ||||
|     } | ||||
|  | ||||
|     public void setData(ArrayList<Manga> mangas) { | ||||
|         // Avoid calling dataSetChanged twice | ||||
|         data.clear(); | ||||
|         addAll(mangas); | ||||
|     } | ||||
|  | ||||
|     private String getImageUrl() { | ||||
|         return "http://img1.wikia.nocookie.net/__cb20090524204255/starwars/images/thumb/1/1a/R2d2.jpg/400px-R2d2.jpg"; | ||||
|     } | ||||
| @@ -78,4 +85,6 @@ public class LibraryAdapter extends ArrayAdapter<Manga> { | ||||
|             ButterKnife.bind(this, view); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -1,37 +1,29 @@ | ||||
| package eu.kanade.mangafeed.ui.fragment; | ||||
|  | ||||
| import android.app.Fragment; | ||||
| import android.content.Intent; | ||||
| import android.os.Bundle; | ||||
| import android.view.LayoutInflater; | ||||
| import android.view.View; | ||||
| import android.view.ViewGroup; | ||||
| import android.widget.GridView; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import javax.inject.Inject; | ||||
| import java.util.ArrayList; | ||||
|  | ||||
| import butterknife.Bind; | ||||
| import butterknife.ButterKnife; | ||||
| import de.greenrobot.event.EventBus; | ||||
| import eu.kanade.mangafeed.App; | ||||
| import eu.kanade.mangafeed.R; | ||||
| import eu.kanade.mangafeed.data.helpers.DatabaseHelper; | ||||
| import eu.kanade.mangafeed.data.models.Manga; | ||||
| import eu.kanade.mangafeed.presenter.LibraryPresenter; | ||||
| import eu.kanade.mangafeed.ui.activity.BaseActivity; | ||||
| import eu.kanade.mangafeed.ui.adapter.LibraryAdapter; | ||||
| import rx.functions.Action1; | ||||
| import eu.kanade.mangafeed.view.LibraryView; | ||||
|  | ||||
| public class LibraryFragment extends Fragment { | ||||
|  | ||||
|     @Bind(R.id.gridView) | ||||
|     GridView grid; | ||||
| public class LibraryFragment extends Fragment implements LibraryView { | ||||
|  | ||||
|     @Inject | ||||
|     DatabaseHelper db; | ||||
|  | ||||
|     List<Manga> mangas; | ||||
|     @Bind(R.id.gridView) GridView grid; | ||||
|     LibraryPresenter mLibraryPresenter; | ||||
|     LibraryAdapter mAdapter; | ||||
|  | ||||
|     public static LibraryFragment newInstance() { | ||||
|         LibraryFragment fragment = new LibraryFragment(); | ||||
| @@ -40,34 +32,45 @@ public class LibraryFragment extends Fragment { | ||||
|         return fragment; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onCreate(Bundle savedInstanceState) { | ||||
|         super.onCreate(savedInstanceState); | ||||
|  | ||||
|         mLibraryPresenter = new LibraryPresenter(this); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public View onCreateView(LayoutInflater inflater, ViewGroup container, | ||||
|                              Bundle savedInstanceState) { | ||||
|         // Inflate the layout for this fragment | ||||
|         View view = inflater.inflate(R.layout.fragment_library, container, false); | ||||
|         App.getComponent(getActivity()).inject(this); | ||||
|         ((BaseActivity) getActivity()).getSupportActionBar().setTitle(R.string.library_title); | ||||
|         ButterKnife.bind(this, view); | ||||
|  | ||||
|         db.manga.get().subscribe( | ||||
|                 result -> { | ||||
|                     mangas = result; | ||||
|  | ||||
|                     LibraryAdapter adapter = new LibraryAdapter(getActivity(), | ||||
|                             R.layout.item_library, mangas); | ||||
|  | ||||
|                     grid.setAdapter(adapter); | ||||
|                     grid.setOnItemClickListener( | ||||
|                             (parent, v, position, id) -> { | ||||
|                                 Intent intent = new Intent(".ui.activity.MangaDetailActivity"); | ||||
|                                 EventBus.getDefault().postSticky(adapter.getItem(position)); | ||||
|                                 startActivity(intent); | ||||
|                             } | ||||
|                     ); | ||||
|                 } | ||||
|         ); | ||||
|         mLibraryPresenter.initializeMangas(); | ||||
|         setMangaClickListener(); | ||||
|  | ||||
|         return view; | ||||
|     } | ||||
|  | ||||
|     public void setMangas(ArrayList<Manga> mangas) { | ||||
|         if (mAdapter == null) { | ||||
|             mAdapter = new LibraryAdapter( | ||||
|                     getActivity(), | ||||
|                     R.layout.item_library, | ||||
|                     mangas); | ||||
|             grid.setAdapter(mAdapter); | ||||
|         } else { | ||||
|             mAdapter.setData(mangas); | ||||
|         } | ||||
|  | ||||
|     } | ||||
|  | ||||
|     private void setMangaClickListener() { | ||||
|         grid.setOnItemClickListener( | ||||
|                 (parent, view, position, id) -> | ||||
|                     mLibraryPresenter.onMangaClick(mAdapter, position) | ||||
|         ); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
							
								
								
									
										7
									
								
								app/src/main/java/eu/kanade/mangafeed/view/BaseView.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/src/main/java/eu/kanade/mangafeed/view/BaseView.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| package eu.kanade.mangafeed.view; | ||||
|  | ||||
| import android.content.Context; | ||||
|  | ||||
| public interface BaseView { | ||||
|     Context getActivity(); | ||||
| } | ||||
							
								
								
									
										10
									
								
								app/src/main/java/eu/kanade/mangafeed/view/LibraryView.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								app/src/main/java/eu/kanade/mangafeed/view/LibraryView.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| package eu.kanade.mangafeed.view; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
|  | ||||
| import eu.kanade.mangafeed.data.models.Manga; | ||||
|  | ||||
| public interface LibraryView extends BaseView { | ||||
|  | ||||
|     void setMangas(ArrayList<Manga> mangas); | ||||
| } | ||||
		Reference in New Issue
	
	Block a user