Get data from database
This commit is contained in:
		
							parent
							
								
									9302ecfb92
								
							
						
					
					
						commit
						8b6bdfdfdc
					
				| @ -42,6 +42,7 @@ dependencies { | |||||||
|     final DAGGER_VERSION = '2.0.1' |     final DAGGER_VERSION = '2.0.1' | ||||||
|     final HAMCREST_VERSION = '1.3' |     final HAMCREST_VERSION = '1.3' | ||||||
|     final MOCKITO_VERSION = '1.10.19' |     final MOCKITO_VERSION = '1.10.19' | ||||||
|  |     final STORIO_VERSION = '1.4.0' | ||||||
| 
 | 
 | ||||||
|     compile fileTree(dir: 'libs', include: ['*.jar']) |     compile fileTree(dir: 'libs', include: ['*.jar']) | ||||||
| 
 | 
 | ||||||
| @ -54,8 +55,8 @@ dependencies { | |||||||
|     compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta1' |     compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta1' | ||||||
|     compile 'com.squareup.okhttp:okhttp-urlconnection:2.4.0' |     compile 'com.squareup.okhttp:okhttp-urlconnection:2.4.0' | ||||||
|     compile 'com.squareup.okhttp:okhttp:2.4.0' |     compile 'com.squareup.okhttp:okhttp:2.4.0' | ||||||
|     compile 'com.pushtorefresh.storio:sqlite:1.4.0' |     compile "com.pushtorefresh.storio:sqlite:$STORIO_VERSION" | ||||||
|     compile 'com.pushtorefresh.storio:sqlite-annotations:1.4.0' |     compile "com.pushtorefresh.storio:sqlite-annotations:$STORIO_VERSION" | ||||||
|     compile 'de.greenrobot:eventbus:2.4.0' |     compile 'de.greenrobot:eventbus:2.4.0' | ||||||
|     compile 'com.github.bumptech.glide:glide:3.6.1' |     compile 'com.github.bumptech.glide:glide:3.6.1' | ||||||
|     compile 'de.hdodenhof:circleimageview:1.3.0' |     compile 'de.hdodenhof:circleimageview:1.3.0' | ||||||
| @ -66,6 +67,7 @@ dependencies { | |||||||
| 
 | 
 | ||||||
|     compile "com.google.dagger:dagger:$DAGGER_VERSION" |     compile "com.google.dagger:dagger:$DAGGER_VERSION" | ||||||
|     apt "com.google.dagger:dagger-compiler:$DAGGER_VERSION" |     apt "com.google.dagger:dagger-compiler:$DAGGER_VERSION" | ||||||
|  |     apt "com.pushtorefresh.storio:sqlite-annotations-processor:$STORIO_VERSION" | ||||||
|     provided 'org.glassfish:javax.annotation:10.0-b28' |     provided 'org.glassfish:javax.annotation:10.0-b28' | ||||||
| 
 | 
 | ||||||
|     compile('com.mikepenz:materialdrawer:4.3.0@aar') { |     compile('com.mikepenz:materialdrawer:4.3.0@aar') { | ||||||
|  | |||||||
| @ -12,9 +12,9 @@ | |||||||
|         android:label="@string/app_name" |         android:label="@string/app_name" | ||||||
|         android:theme="@style/AppTheme" > |         android:theme="@style/AppTheme" > | ||||||
|         <activity |         <activity | ||||||
|             android:name="eu.kanade.mangafeed.ui.activity.MainActivity" |             android:name=".ui.activity.MainActivity" | ||||||
|             android:label="@string/label_main" |             android:label="@string/label_main" | ||||||
|             android:theme="@style/AppTheme.NoActionBar"> |             android:theme="@style/AppTheme.NoActionBar" > | ||||||
|             <intent-filter> |             <intent-filter> | ||||||
|                 <action android:name="android.intent.action.MAIN" /> |                 <action android:name="android.intent.action.MAIN" /> | ||||||
| 
 | 
 | ||||||
| @ -22,14 +22,14 @@ | |||||||
|             </intent-filter> |             </intent-filter> | ||||||
|         </activity> |         </activity> | ||||||
| 
 | 
 | ||||||
|         <receiver |         <activity | ||||||
|             android:name="eu.kanade.mangafeed.data.SyncService$SyncOnConnectionAvailable" |             android:name=".ui.activity.MangaDetailActivity" | ||||||
|             android:enabled="false"> |             android:label="@string/title_activity_manga_detail" | ||||||
|             <intent-filter> |             android:parentActivityName=".ui.activity.MainActivity" > | ||||||
|                 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> |             <meta-data | ||||||
|             </intent-filter> |                 android:name="android.support.PARENT_ACTIVITY" | ||||||
|         </receiver> |                 android:value="eu.kanade.mangafeed.ui.activity.MainActivity" /> | ||||||
| 
 |         </activity> | ||||||
|     </application> |     </application> | ||||||
| 
 | 
 | ||||||
| </manifest> | </manifest> | ||||||
|  | |||||||
| @ -27,6 +27,10 @@ public class App extends Application { | |||||||
|         return mApplicationComponent; |         return mApplicationComponent; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     public static AppComponent getComponent(Context context) { | ||||||
|  |         return get(context).getComponent(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     // Needed to replace the component with a test specific one |     // Needed to replace the component with a test specific one | ||||||
|     public void setComponent(AppComponent applicationComponent) { |     public void setComponent(AppComponent applicationComponent) { | ||||||
|         mApplicationComponent = applicationComponent; |         mApplicationComponent = applicationComponent; | ||||||
|  | |||||||
| @ -7,6 +7,8 @@ import javax.inject.Singleton; | |||||||
| import dagger.Component; | import dagger.Component; | ||||||
| import eu.kanade.mangafeed.data.DataModule; | import eu.kanade.mangafeed.data.DataModule; | ||||||
| import eu.kanade.mangafeed.ui.activity.MainActivity; | import eu.kanade.mangafeed.ui.activity.MainActivity; | ||||||
|  | import eu.kanade.mangafeed.ui.activity.MangaDetailActivity; | ||||||
|  | import eu.kanade.mangafeed.ui.fragment.LibraryFragment; | ||||||
| 
 | 
 | ||||||
| @Singleton | @Singleton | ||||||
| @Component( | @Component( | ||||||
| @ -18,6 +20,8 @@ import eu.kanade.mangafeed.ui.activity.MainActivity; | |||||||
| public interface AppComponent { | public interface AppComponent { | ||||||
| 
 | 
 | ||||||
|     void inject(MainActivity mainActivity); |     void inject(MainActivity mainActivity); | ||||||
|  |     void inject(LibraryFragment libraryFragment); | ||||||
|  |     void inject(MangaDetailActivity mangaDetailActivity); | ||||||
| 
 | 
 | ||||||
|     Application application(); |     Application application(); | ||||||
| } | } | ||||||
| @ -2,42 +2,44 @@ package eu.kanade.mangafeed.data.helpers; | |||||||
| 
 | 
 | ||||||
| import android.content.Context; | import android.content.Context; | ||||||
| 
 | 
 | ||||||
|  | import com.pushtorefresh.storio.sqlite.SQLiteTypeMapping; | ||||||
| import com.pushtorefresh.storio.sqlite.StorIOSQLite; | import com.pushtorefresh.storio.sqlite.StorIOSQLite; | ||||||
| import com.pushtorefresh.storio.sqlite.impl.DefaultStorIOSQLite; | import com.pushtorefresh.storio.sqlite.impl.DefaultStorIOSQLite; | ||||||
| import com.pushtorefresh.storio.sqlite.queries.Query; |  | ||||||
| 
 | 
 | ||||||
| import java.util.List; | import eu.kanade.mangafeed.data.managers.ChapterManager; | ||||||
|  | import eu.kanade.mangafeed.data.models.Chapter; | ||||||
|  | import eu.kanade.mangafeed.data.models.ChapterStorIOSQLiteDeleteResolver; | ||||||
|  | import eu.kanade.mangafeed.data.models.ChapterStorIOSQLiteGetResolver; | ||||||
|  | import eu.kanade.mangafeed.data.models.ChapterStorIOSQLitePutResolver; | ||||||
|  | import eu.kanade.mangafeed.data.models.Manga; | ||||||
|  | import eu.kanade.mangafeed.data.models.MangaStorIOSQLiteDeleteResolver; | ||||||
|  | import eu.kanade.mangafeed.data.models.MangaStorIOSQLiteGetResolver; | ||||||
|  | import eu.kanade.mangafeed.data.models.MangaStorIOSQLitePutResolver; | ||||||
|  | import eu.kanade.mangafeed.data.managers.MangaManager; | ||||||
| 
 | 
 | ||||||
| import eu.kanade.mangafeed.data.entities.Manga; |  | ||||||
| import eu.kanade.mangafeed.data.tables.MangasTable; |  | ||||||
| import rx.Observable; |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Created by len on 23/09/2015. |  | ||||||
|  */ |  | ||||||
| public class DatabaseHelper { | public class DatabaseHelper { | ||||||
| 
 | 
 | ||||||
|     private StorIOSQLite db; |     private StorIOSQLite db; | ||||||
|  |     public MangaManager manga; | ||||||
|  |     public ChapterManager chapter; | ||||||
| 
 | 
 | ||||||
|     public DatabaseHelper(Context context) { |     public DatabaseHelper(Context context) { | ||||||
|         db = DefaultStorIOSQLite.builder() |         db = DefaultStorIOSQLite.builder() | ||||||
|                 .sqliteOpenHelper(new DbOpenHelper(context)) |                 .sqliteOpenHelper(new DbOpenHelper(context)) | ||||||
|                 .build(); |                 .addTypeMapping(Manga.class, SQLiteTypeMapping.<Manga>builder() | ||||||
|     } |                         .putResolver(new MangaStorIOSQLitePutResolver()) | ||||||
| 
 |                         .getResolver(new MangaStorIOSQLiteGetResolver()) | ||||||
|     public StorIOSQLite getStorIODb() { |                         .deleteResolver(new MangaStorIOSQLiteDeleteResolver()) | ||||||
|         return db; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     public Observable<List<Manga>> getMangas() { |  | ||||||
|         return db.get() |  | ||||||
|                 .listOfObjects(Manga.class) |  | ||||||
|                 .withQuery(Query.builder() |  | ||||||
|                         .table(MangasTable.TABLE) |  | ||||||
|                         .build()) |                         .build()) | ||||||
|                 .prepare() |                 .addTypeMapping(Chapter.class, SQLiteTypeMapping.<Chapter>builder() | ||||||
|                 .createObservable(); |                         .putResolver(new ChapterStorIOSQLitePutResolver()) | ||||||
|  |                         .getResolver(new ChapterStorIOSQLiteGetResolver()) | ||||||
|  |                         .deleteResolver(new ChapterStorIOSQLiteDeleteResolver()) | ||||||
|  |                         .build()) | ||||||
|  |                 .build(); | ||||||
| 
 | 
 | ||||||
|  |         manga = new MangaManager(db); | ||||||
|  |         chapter = new ChapterManager(db); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  | |||||||
| @ -7,9 +7,6 @@ import android.support.annotation.NonNull; | |||||||
| 
 | 
 | ||||||
| import eu.kanade.mangafeed.data.tables.MangasTable; | import eu.kanade.mangafeed.data.tables.MangasTable; | ||||||
| 
 | 
 | ||||||
| /** |  | ||||||
|  * Created by len on 23/09/2015. |  | ||||||
|  */ |  | ||||||
| public class DbOpenHelper extends SQLiteOpenHelper { | public class DbOpenHelper extends SQLiteOpenHelper { | ||||||
| 
 | 
 | ||||||
|     public static final String DATABASE_NAME = "mangafeed.db"; |     public static final String DATABASE_NAME = "mangafeed.db"; | ||||||
|  | |||||||
| @ -0,0 +1,12 @@ | |||||||
|  | package eu.kanade.mangafeed.data.managers; | ||||||
|  | 
 | ||||||
|  | import com.pushtorefresh.storio.sqlite.StorIOSQLite; | ||||||
|  | 
 | ||||||
|  | public abstract class BaseManager { | ||||||
|  | 
 | ||||||
|  |     protected StorIOSQLite db; | ||||||
|  | 
 | ||||||
|  |     public BaseManager(StorIOSQLite db) { | ||||||
|  |         this.db = db; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,33 @@ | |||||||
|  | package eu.kanade.mangafeed.data.managers; | ||||||
|  | 
 | ||||||
|  | import com.pushtorefresh.storio.sqlite.StorIOSQLite; | ||||||
|  | import com.pushtorefresh.storio.sqlite.queries.Query; | ||||||
|  | 
 | ||||||
|  | import java.util.List; | ||||||
|  | 
 | ||||||
|  | import eu.kanade.mangafeed.data.models.Chapter; | ||||||
|  | import eu.kanade.mangafeed.data.models.Manga; | ||||||
|  | import eu.kanade.mangafeed.data.tables.ChaptersTable; | ||||||
|  | import rx.Observable; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Created by len on 26/09/2015. | ||||||
|  |  */ | ||||||
|  | public class ChapterManager extends BaseManager { | ||||||
|  | 
 | ||||||
|  |     public ChapterManager(StorIOSQLite db) { | ||||||
|  |         super(db); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public Observable<List<Chapter>> get(Manga manga) { | ||||||
|  |         return db.get() | ||||||
|  |                 .listOfObjects(Chapter.class) | ||||||
|  |                 .withQuery(Query.builder() | ||||||
|  |                         .table(ChaptersTable.TABLE) | ||||||
|  |                         .where(ChaptersTable.COLUMN_MANGA_ID + "=?") | ||||||
|  |                         .whereArgs(manga.id) | ||||||
|  |                         .build()) | ||||||
|  |                 .prepare() | ||||||
|  |                 .createObservable(); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,37 @@ | |||||||
|  | package eu.kanade.mangafeed.data.managers; | ||||||
|  | 
 | ||||||
|  | import com.pushtorefresh.storio.sqlite.StorIOSQLite; | ||||||
|  | import com.pushtorefresh.storio.sqlite.operations.put.PutResult; | ||||||
|  | import com.pushtorefresh.storio.sqlite.queries.Query; | ||||||
|  | 
 | ||||||
|  | import java.util.List; | ||||||
|  | 
 | ||||||
|  | import eu.kanade.mangafeed.data.models.Manga; | ||||||
|  | import eu.kanade.mangafeed.data.tables.MangasTable; | ||||||
|  | import rx.Observable; | ||||||
|  | 
 | ||||||
|  | public class MangaManager extends BaseManager { | ||||||
|  |     List<Manga> mangass; | ||||||
|  | 
 | ||||||
|  |     public MangaManager(StorIOSQLite db) { | ||||||
|  |         super(db); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public Observable<List<Manga>> get() { | ||||||
|  |         return db.get() | ||||||
|  |                 .listOfObjects(Manga.class) | ||||||
|  |                 .withQuery(Query.builder() | ||||||
|  |                         .table(MangasTable.TABLE) | ||||||
|  |                         .build()) | ||||||
|  |                 .prepare() | ||||||
|  |                 .createObservable(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public Observable<PutResult> insert(Manga manga) { | ||||||
|  |         return db.put() | ||||||
|  |                 .object(manga) | ||||||
|  |                 .prepare() | ||||||
|  |                 .createObservable(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
| @ -0,0 +1,67 @@ | |||||||
|  | package eu.kanade.mangafeed.data.models; | ||||||
|  | 
 | ||||||
|  | import android.support.annotation.NonNull; | ||||||
|  | import android.support.annotation.Nullable; | ||||||
|  | 
 | ||||||
|  | import com.pushtorefresh.storio.sqlite.annotations.StorIOSQLiteColumn; | ||||||
|  | import com.pushtorefresh.storio.sqlite.annotations.StorIOSQLiteType; | ||||||
|  | 
 | ||||||
|  | import eu.kanade.mangafeed.data.tables.ChaptersTable; | ||||||
|  | 
 | ||||||
|  | @StorIOSQLiteType(table = ChaptersTable.TABLE) | ||||||
|  | public class Chapter { | ||||||
|  | 
 | ||||||
|  |     @Nullable | ||||||
|  |     @StorIOSQLiteColumn(name = ChaptersTable.COLUMN_ID, key = true) | ||||||
|  |     public Long id; | ||||||
|  | 
 | ||||||
|  |     @NonNull | ||||||
|  |     @StorIOSQLiteColumn(name = ChaptersTable.COLUMN_MANGA_ID) | ||||||
|  |     public int manga_id; | ||||||
|  | 
 | ||||||
|  |     @NonNull | ||||||
|  |     @StorIOSQLiteColumn(name = ChaptersTable.COLUMN_URL) | ||||||
|  |     public String url; | ||||||
|  | 
 | ||||||
|  |     @NonNull | ||||||
|  |     @StorIOSQLiteColumn(name = ChaptersTable.COLUMN_NAME) | ||||||
|  |     public String name; | ||||||
|  | 
 | ||||||
|  |     @NonNull | ||||||
|  |     @StorIOSQLiteColumn(name = ChaptersTable.COLUMN_READ) | ||||||
|  |     public int read; | ||||||
|  | 
 | ||||||
|  |     @NonNull | ||||||
|  |     @StorIOSQLiteColumn(name = ChaptersTable.COLUMN_DATE_FETCH) | ||||||
|  |     public long date_fetch; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     public Chapter() {} | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public boolean equals(Object o) { | ||||||
|  |         if (this == o) return true; | ||||||
|  |         if (o == null || getClass() != o.getClass()) return false; | ||||||
|  | 
 | ||||||
|  |         Chapter chapter = (Chapter) o; | ||||||
|  | 
 | ||||||
|  |         if (manga_id != chapter.manga_id) return false; | ||||||
|  |         if (read != chapter.read) return false; | ||||||
|  |         if (date_fetch != chapter.date_fetch) return false; | ||||||
|  |         if (id != null ? !id.equals(chapter.id) : chapter.id != null) return false; | ||||||
|  |         if (!url.equals(chapter.url)) return false; | ||||||
|  |         return name.equals(chapter.name); | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public int hashCode() { | ||||||
|  |         int result = id != null ? id.hashCode() : 0; | ||||||
|  |         result = 31 * result + manga_id; | ||||||
|  |         result = 31 * result + url.hashCode(); | ||||||
|  |         result = 31 * result + name.hashCode(); | ||||||
|  |         result = 31 * result + read; | ||||||
|  |         result = 31 * result + (int) (date_fetch ^ (date_fetch >>> 32)); | ||||||
|  |         return result; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -1,8 +1,4 @@ | |||||||
| package eu.kanade.mangafeed.data.entities; | package eu.kanade.mangafeed.data.models; | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Created by len on 23/09/2015. |  | ||||||
|  */ |  | ||||||
| 
 | 
 | ||||||
| import android.support.annotation.NonNull; | import android.support.annotation.NonNull; | ||||||
| import android.support.annotation.Nullable; | import android.support.annotation.Nullable; | ||||||
| @ -74,7 +70,7 @@ public class Manga { | |||||||
|     @StorIOSQLiteColumn(name = MangasTable.COLUMN_CHAPTER_ORDER) |     @StorIOSQLiteColumn(name = MangasTable.COLUMN_CHAPTER_ORDER) | ||||||
|     public int chapter_order; |     public int chapter_order; | ||||||
| 
 | 
 | ||||||
|     Manga() {} |     public Manga() {} | ||||||
| 
 | 
 | ||||||
|     public Manga(String title) { |     public Manga(String title) { | ||||||
|         this.title = title; |         this.title = title; | ||||||
| @ -0,0 +1,56 @@ | |||||||
|  | package eu.kanade.mangafeed.ui.activity; | ||||||
|  | 
 | ||||||
|  | import android.support.v7.app.AppCompatActivity; | ||||||
|  | import android.os.Bundle; | ||||||
|  | import android.view.Menu; | ||||||
|  | import android.view.MenuItem; | ||||||
|  | 
 | ||||||
|  | import de.greenrobot.event.EventBus; | ||||||
|  | import eu.kanade.mangafeed.R; | ||||||
|  | import eu.kanade.mangafeed.data.models.Manga; | ||||||
|  | 
 | ||||||
|  | public class MangaDetailActivity extends AppCompatActivity { | ||||||
|  | 
 | ||||||
|  |     Manga manga; | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     protected void onCreate(Bundle savedInstanceState) { | ||||||
|  |         super.onCreate(savedInstanceState); | ||||||
|  |         setContentView(R.layout.activity_manga_detail); | ||||||
|  |         EventBus.getDefault().registerSticky(this); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public boolean onCreateOptionsMenu(Menu menu) { | ||||||
|  |         // Inflate the menu; this adds items to the action bar if it is present. | ||||||
|  |         getMenuInflater().inflate(R.menu.menu_manga_detail, menu); | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public boolean onOptionsItemSelected(MenuItem item) { | ||||||
|  |         // Handle action bar item clicks here. The action bar will | ||||||
|  |         // automatically handle clicks on the Home/Up button, so long | ||||||
|  |         // as you specify a parent activity in AndroidManifest.xml. | ||||||
|  |         int id = item.getItemId(); | ||||||
|  | 
 | ||||||
|  |         //noinspection SimplifiableIfStatement | ||||||
|  |         if (id == R.id.action_settings) { | ||||||
|  |             return true; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         return super.onOptionsItemSelected(item); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void onDestroy() { | ||||||
|  |         EventBus.getDefault().unregister(this); | ||||||
|  | 
 | ||||||
|  |         super.onDestroy(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void onEvent(Manga manga) { | ||||||
|  |         this.manga = manga; | ||||||
|  |         //loadChapters(); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -11,12 +11,12 @@ import android.widget.TextView; | |||||||
| 
 | 
 | ||||||
| import com.bumptech.glide.Glide; | import com.bumptech.glide.Glide; | ||||||
| 
 | 
 | ||||||
| import java.util.ArrayList; | import java.util.List; | ||||||
| 
 | 
 | ||||||
| import butterknife.Bind; | import butterknife.Bind; | ||||||
| import butterknife.ButterKnife; | import butterknife.ButterKnife; | ||||||
| import eu.kanade.mangafeed.R; | import eu.kanade.mangafeed.R; | ||||||
| import eu.kanade.mangafeed.data.entities.Manga; | import eu.kanade.mangafeed.data.models.Manga; | ||||||
| import uk.co.ribot.easyadapter.annotations.LayoutId; | import uk.co.ribot.easyadapter.annotations.LayoutId; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
| @ -28,9 +28,9 @@ public class LibraryAdapter extends ArrayAdapter<Manga> { | |||||||
| 
 | 
 | ||||||
|     Context context; |     Context context; | ||||||
|     int layoutResourceId; |     int layoutResourceId; | ||||||
|     ArrayList<Manga> data; |     List<Manga> data; | ||||||
| 
 | 
 | ||||||
|     public LibraryAdapter(Context context, int layoutResourceId, ArrayList<Manga> data) { |     public LibraryAdapter(Context context, int layoutResourceId, List<Manga> data) { | ||||||
|         super(context, layoutResourceId, data); |         super(context, layoutResourceId, data); | ||||||
|         this.context = context; |         this.context = context; | ||||||
|         this.layoutResourceId = layoutResourceId; |         this.layoutResourceId = layoutResourceId; | ||||||
|  | |||||||
| @ -1,26 +1,38 @@ | |||||||
| package eu.kanade.mangafeed.ui.fragment; | package eu.kanade.mangafeed.ui.fragment; | ||||||
| 
 | 
 | ||||||
| import android.os.Bundle; |  | ||||||
| import android.app.Fragment; | import android.app.Fragment; | ||||||
|  | import android.content.Intent; | ||||||
|  | import android.os.Bundle; | ||||||
| import android.view.LayoutInflater; | import android.view.LayoutInflater; | ||||||
| import android.view.View; | import android.view.View; | ||||||
| import android.view.ViewGroup; | import android.view.ViewGroup; | ||||||
| import android.widget.GridView; | import android.widget.GridView; | ||||||
| 
 | 
 | ||||||
| import java.util.ArrayList; | import java.util.List; | ||||||
|  | 
 | ||||||
|  | import javax.inject.Inject; | ||||||
| 
 | 
 | ||||||
| import butterknife.Bind; | import butterknife.Bind; | ||||||
| import butterknife.ButterKnife; | import butterknife.ButterKnife; | ||||||
|  | import de.greenrobot.event.EventBus; | ||||||
|  | import eu.kanade.mangafeed.App; | ||||||
| import eu.kanade.mangafeed.R; | import eu.kanade.mangafeed.R; | ||||||
| import eu.kanade.mangafeed.data.entities.Manga; | import eu.kanade.mangafeed.data.helpers.DatabaseHelper; | ||||||
|  | import eu.kanade.mangafeed.data.models.Manga; | ||||||
| import eu.kanade.mangafeed.ui.activity.BaseActivity; | import eu.kanade.mangafeed.ui.activity.BaseActivity; | ||||||
| import eu.kanade.mangafeed.ui.adapter.LibraryAdapter; | import eu.kanade.mangafeed.ui.adapter.LibraryAdapter; | ||||||
|  | import rx.functions.Action1; | ||||||
| 
 | 
 | ||||||
| public class LibraryFragment extends Fragment { | public class LibraryFragment extends Fragment { | ||||||
| 
 | 
 | ||||||
|     @Bind(R.id.gridView) |     @Bind(R.id.gridView) | ||||||
|     GridView grid; |     GridView grid; | ||||||
| 
 | 
 | ||||||
|  |     @Inject | ||||||
|  |     DatabaseHelper db; | ||||||
|  | 
 | ||||||
|  |     List<Manga> mangas; | ||||||
|  | 
 | ||||||
|     public static LibraryFragment newInstance() { |     public static LibraryFragment newInstance() { | ||||||
|         LibraryFragment fragment = new LibraryFragment(); |         LibraryFragment fragment = new LibraryFragment(); | ||||||
|         Bundle args = new Bundle(); |         Bundle args = new Bundle(); | ||||||
| @ -33,19 +45,27 @@ public class LibraryFragment extends Fragment { | |||||||
|                              Bundle savedInstanceState) { |                              Bundle savedInstanceState) { | ||||||
|         // Inflate the layout for this fragment |         // Inflate the layout for this fragment | ||||||
|         View view = inflater.inflate(R.layout.fragment_library, container, false); |         View view = inflater.inflate(R.layout.fragment_library, container, false); | ||||||
|  |         App.getComponent(getActivity()).inject(this); | ||||||
|         ((BaseActivity) getActivity()).getSupportActionBar().setTitle(R.string.library_title); |         ((BaseActivity) getActivity()).getSupportActionBar().setTitle(R.string.library_title); | ||||||
| 
 |  | ||||||
|         ButterKnife.bind(this, view); |         ButterKnife.bind(this, view); | ||||||
| 
 | 
 | ||||||
|         ArrayList<Manga> mangas = new ArrayList<>(); |         db.manga.get().subscribe( | ||||||
|         mangas.add(new Manga("One Piece")); |                 result -> { | ||||||
|         mangas.add(new Manga("Berserk")); |                     mangas = result; | ||||||
|         mangas.add(new Manga("Fate/stay night: Unlimited Blade Works")); |  | ||||||
| 
 | 
 | ||||||
|         LibraryAdapter adapter = new LibraryAdapter(getActivity(), |                     LibraryAdapter adapter = new LibraryAdapter(getActivity(), | ||||||
|                 R.layout.item_library, mangas); |                             R.layout.item_library, mangas); | ||||||
| 
 | 
 | ||||||
|         grid.setAdapter(adapter); |                     grid.setAdapter(adapter); | ||||||
|  |                     grid.setOnItemClickListener( | ||||||
|  |                             (parent, v, position, id) -> { | ||||||
|  |                                 Intent intent = new Intent(".ui.activity.MangaDetailActivity"); | ||||||
|  |                                 EventBus.getDefault().postSticky(adapter.getItem(position)); | ||||||
|  |                                 startActivity(intent); | ||||||
|  |                             } | ||||||
|  |                     ); | ||||||
|  |                 } | ||||||
|  |         ); | ||||||
| 
 | 
 | ||||||
|         return view; |         return view; | ||||||
|     } |     } | ||||||
|  | |||||||
							
								
								
									
										18
									
								
								app/src/main/res/layout/activity_manga_detail.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								app/src/main/res/layout/activity_manga_detail.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,18 @@ | |||||||
|  | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|  |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|  |     android:layout_width="match_parent" | ||||||
|  |     android:layout_height="match_parent" | ||||||
|  |     android:paddingLeft="@dimen/activity_horizontal_margin" | ||||||
|  |     android:paddingRight="@dimen/activity_horizontal_margin" | ||||||
|  |     android:paddingTop="@dimen/activity_vertical_margin" | ||||||
|  |     android:paddingBottom="@dimen/activity_vertical_margin" | ||||||
|  |     tools:context="eu.kanade.mangafeed.ui.activity.MangaDetailActivity"> | ||||||
|  | 
 | ||||||
|  |     <ListView | ||||||
|  |         android:layout_width="wrap_content" | ||||||
|  |         android:layout_height="wrap_content" | ||||||
|  |         android:id="@+id/manga_chapters_list" | ||||||
|  |         tools:listitem="@layout/item_chapter" | ||||||
|  |         android:height="?android:listPreferredItemHeight"/> | ||||||
|  | 
 | ||||||
|  | </RelativeLayout> | ||||||
							
								
								
									
										60
									
								
								app/src/main/res/layout/item_chapter.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								app/src/main/res/layout/item_chapter.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,60 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|  |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|  |     android:orientation="horizontal" | ||||||
|  |     android:layout_width="match_parent" | ||||||
|  |     android:layout_height="wrap_content" | ||||||
|  |     > | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     <CheckBox | ||||||
|  |         android:layout_width="wrap_content" | ||||||
|  |         android:layout_height="match_parent" | ||||||
|  |         android:id="@+id/chapter_selection" /> | ||||||
|  | 
 | ||||||
|  |     <ImageView | ||||||
|  |         android:layout_width="wrap_content" | ||||||
|  |         android:layout_height="wrap_content" | ||||||
|  |         android:id="@+id/chapter_download_image" | ||||||
|  |         tools:src="@mipmap/ic_launcher" | ||||||
|  |          /> | ||||||
|  | 
 | ||||||
|  |     <LinearLayout | ||||||
|  |         android:layout_width="0dp" | ||||||
|  |         android:layout_height="match_parent" | ||||||
|  |         android:orientation="vertical" | ||||||
|  |         android:layout_weight="1"> | ||||||
|  | 
 | ||||||
|  |         <TextView | ||||||
|  |             android:layout_width="wrap_content" | ||||||
|  |             android:layout_height="wrap_content" | ||||||
|  |             android:id="@+id/chapter_title" | ||||||
|  |             tools:text="Chapter 32" | ||||||
|  |             android:layout_weight="1" | ||||||
|  |             android:layout_gravity="center_vertical" | ||||||
|  |             android:gravity="center" | ||||||
|  |             android:textStyle="bold" | ||||||
|  |             android:textSize="16sp" /> | ||||||
|  | 
 | ||||||
|  |         <TextView | ||||||
|  |             android:layout_width="wrap_content" | ||||||
|  |             android:layout_height="wrap_content" | ||||||
|  |             android:id="@+id/chapter_pages" | ||||||
|  |             tools:text="Pages: 45" | ||||||
|  |             android:layout_weight="1" | ||||||
|  |             android:gravity="center" | ||||||
|  |             android:textSize="12sp" /> | ||||||
|  | 
 | ||||||
|  |     </LinearLayout> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     <TextView | ||||||
|  |         android:layout_width="wrap_content" | ||||||
|  |         android:layout_height="wrap_content" | ||||||
|  |         android:id="@+id/chapter_date" | ||||||
|  |         tools:text="22/02/2016" | ||||||
|  |         android:layout_gravity="bottom" | ||||||
|  |         android:layout_marginBottom="2dp" | ||||||
|  |         android:textSize="12sp" | ||||||
|  |         android:paddingRight="5dp" /> | ||||||
|  | </LinearLayout> | ||||||
							
								
								
									
										7
									
								
								app/src/main/res/menu/menu_manga_detail.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/src/main/res/menu/menu_manga_detail.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | |||||||
|  | <menu xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|  |     xmlns:app="http://schemas.android.com/apk/res-auto" | ||||||
|  |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|  |     tools:context="eu.kanade.mangafeed.ui.activity.MangaDetailActivity"> | ||||||
|  |     <item android:id="@+id/action_settings" android:title="@string/action_settings" | ||||||
|  |         android:orderInCategory="100" app:showAsAction="never" /> | ||||||
|  | </menu> | ||||||
| @ -26,5 +26,9 @@ | |||||||
|     <string name="recent_updates_title">Recent updates</string> |     <string name="recent_updates_title">Recent updates</string> | ||||||
|     <string name="catalogues_title">Catalogues</string> |     <string name="catalogues_title">Catalogues</string> | ||||||
|     <string name="settings_title">Settings</string> |     <string name="settings_title">Settings</string> | ||||||
|  |     <string name="title_activity_manga_detail">MangaDetailActivity</string> | ||||||
|  | 
 | ||||||
|  |     <string name="hello_world">Hello world!</string> | ||||||
|  |     <string name="action_settings">Settings</string> | ||||||
| 
 | 
 | ||||||
| </resources> | </resources> | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 inorichi
						inorichi