Get data from database
This commit is contained in:
parent
9302ecfb92
commit
8b6bdfdfdc
18 changed files with 378 additions and 59 deletions
|
@ -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>
|
||||||
|
|
Reference in a new issue