Convert catalogue to a fragment

This commit is contained in:
inorichi 2015-10-21 17:20:03 +02:00
parent 4c786077a8
commit 4966f1e15f
12 changed files with 103 additions and 97 deletions

View File

@ -28,15 +28,6 @@
android:label="@string/title_activity_manga_detail" android:label="@string/title_activity_manga_detail"
android:parentActivityName=".ui.activity.MainActivity" > android:parentActivityName=".ui.activity.MainActivity" >
</activity> </activity>
<activity
android:name=".ui.activity.CatalogueActivity"
android:label="@string/title_activity_catalogue_list"
android:parentActivityName=".ui.activity.MainActivity"
android:theme="@style/AppTheme" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="eu.kanade.mangafeed.ui.activity.MainActivity" />
</activity>
<activity <activity
android:name=".ui.activity.ReaderActivity" android:name=".ui.activity.ReaderActivity"
android:label="@string/title_activity_viewer" android:label="@string/title_activity_viewer"

View File

@ -12,8 +12,8 @@ import eu.kanade.mangafeed.presenter.MainPresenter;
import eu.kanade.mangafeed.presenter.MangaChaptersPresenter; import eu.kanade.mangafeed.presenter.MangaChaptersPresenter;
import eu.kanade.mangafeed.presenter.MangaDetailPresenter; import eu.kanade.mangafeed.presenter.MangaDetailPresenter;
import eu.kanade.mangafeed.presenter.MangaInfoPresenter; import eu.kanade.mangafeed.presenter.MangaInfoPresenter;
import eu.kanade.mangafeed.presenter.SourcePresenter;
import eu.kanade.mangafeed.presenter.ReaderPresenter; import eu.kanade.mangafeed.presenter.ReaderPresenter;
import eu.kanade.mangafeed.presenter.SourcePresenter;
@Singleton @Singleton
@Component( @Component(

View File

@ -14,7 +14,7 @@ import eu.kanade.mangafeed.data.helpers.DatabaseHelper;
import eu.kanade.mangafeed.data.helpers.SourceManager; import eu.kanade.mangafeed.data.helpers.SourceManager;
import eu.kanade.mangafeed.data.models.Manga; import eu.kanade.mangafeed.data.models.Manga;
import eu.kanade.mangafeed.sources.Source; import eu.kanade.mangafeed.sources.Source;
import eu.kanade.mangafeed.ui.activity.CatalogueActivity; import eu.kanade.mangafeed.ui.fragment.CatalogueFragment;
import eu.kanade.mangafeed.util.PageBundle; import eu.kanade.mangafeed.util.PageBundle;
import eu.kanade.mangafeed.util.RxPager; import eu.kanade.mangafeed.util.RxPager;
import icepick.State; import icepick.State;
@ -24,7 +24,7 @@ import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers; import rx.schedulers.Schedulers;
import rx.subjects.PublishSubject; import rx.subjects.PublishSubject;
public class CataloguePresenter extends BasePresenter<CatalogueActivity> { public class CataloguePresenter extends BasePresenter<CatalogueFragment> {
@Inject SourceManager sourceManager; @Inject SourceManager sourceManager;
@Inject DatabaseHelper db; @Inject DatabaseHelper db;
@ -67,7 +67,7 @@ public class CataloguePresenter extends BasePresenter<CatalogueActivity> {
} }
@Override @Override
protected void onTakeView(CatalogueActivity view) { protected void onTakeView(CatalogueFragment view) {
super.onTakeView(view); super.onTakeView(view);
view.setToolbarTitle(selectedSource.getName()); view.setToolbarTitle(selectedSource.getName());

View File

@ -24,11 +24,18 @@ public class BaseActivity<P extends Presenter> extends NucleusAppCompatActivity<
protected void setupToolbar(Toolbar toolbar) { protected void setupToolbar(Toolbar toolbar) {
setSupportActionBar(toolbar); setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true); if (getSupportActionBar() != null)
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
} }
public void setToolbarTitle(String title) { public void setToolbarTitle(String title) {
getSupportActionBar().setTitle(title); if (getSupportActionBar() != null)
getSupportActionBar().setTitle(title);
}
public void setToolbarTitle(int titleResource) {
if (getSupportActionBar() != null)
getSupportActionBar().setTitle(getString(titleResource));
} }
public Context getActivity() { public Context getActivity() {

View File

@ -82,7 +82,7 @@ public class MainActivity extends BaseActivity<MainPresenter> {
drawer.setSelection(R.id.nav_drawer_library); drawer.setSelection(R.id.nav_drawer_library);
} }
private void setFragment(Fragment fragment) { public void setFragment(Fragment fragment) {
try { try {
if (fragment != null && getSupportFragmentManager() != null) { if (fragment != null && getSupportFragmentManager() != null) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
@ -96,8 +96,4 @@ public class MainActivity extends BaseActivity<MainPresenter> {
} }
} }
public void setToolbarTitle(int titleResource) {
getSupportActionBar().setTitle(getString(titleResource));
}
} }

View File

@ -3,6 +3,7 @@ package eu.kanade.mangafeed.ui.fragment;
import android.os.Bundle; import android.os.Bundle;
import eu.kanade.mangafeed.App; import eu.kanade.mangafeed.App;
import eu.kanade.mangafeed.ui.activity.BaseActivity;
import nucleus.factory.PresenterFactory; import nucleus.factory.PresenterFactory;
import nucleus.presenter.Presenter; import nucleus.presenter.Presenter;
import nucleus.view.NucleusSupportFragment; import nucleus.view.NucleusSupportFragment;
@ -20,4 +21,12 @@ public class BaseFragment<P extends Presenter> extends NucleusSupportFragment<P>
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
} }
public void setToolbarTitle(String title) {
((BaseActivity)getActivity()).setToolbarTitle(title);
}
public void setToolbarTitle(int resourceId) {
((BaseActivity)getActivity()).setToolbarTitle(getString(resourceId));
}
} }

View File

@ -1,13 +1,14 @@
package eu.kanade.mangafeed.ui.activity; package eu.kanade.mangafeed.ui.fragment;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.widget.SearchView; import android.support.v7.widget.SearchView;
import android.support.v7.widget.Toolbar; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView; import android.widget.GridView;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.ProgressBar; import android.widget.ProgressBar;
@ -22,6 +23,7 @@ import butterknife.OnItemClick;
import eu.kanade.mangafeed.R; import eu.kanade.mangafeed.R;
import eu.kanade.mangafeed.data.models.Manga; import eu.kanade.mangafeed.data.models.Manga;
import eu.kanade.mangafeed.presenter.CataloguePresenter; import eu.kanade.mangafeed.presenter.CataloguePresenter;
import eu.kanade.mangafeed.ui.activity.MangaDetailActivity;
import eu.kanade.mangafeed.ui.adapter.CatalogueHolder; import eu.kanade.mangafeed.ui.adapter.CatalogueHolder;
import eu.kanade.mangafeed.util.PageBundle; import eu.kanade.mangafeed.util.PageBundle;
import eu.kanade.mangafeed.widget.EndlessScrollListener; import eu.kanade.mangafeed.widget.EndlessScrollListener;
@ -29,10 +31,7 @@ import nucleus.factory.RequiresPresenter;
import uk.co.ribot.easyadapter.EasyAdapter; import uk.co.ribot.easyadapter.EasyAdapter;
@RequiresPresenter(CataloguePresenter.class) @RequiresPresenter(CataloguePresenter.class)
public class CatalogueActivity extends BaseActivity<CataloguePresenter> { public class CatalogueFragment extends BaseFragment<CataloguePresenter> {
@Bind(R.id.toolbar)
Toolbar toolbar;
@Bind(R.id.gridView) @Bind(R.id.gridView)
GridView manga_list; GridView manga_list;
@ -49,34 +48,44 @@ public class CatalogueActivity extends BaseActivity<CataloguePresenter> {
public final static String SOURCE_ID = "source_id"; public final static String SOURCE_ID = "source_id";
public static Intent newIntent(Context context, int source_id) { public static CatalogueFragment newInstance(int source_id) {
Intent intent = new Intent(context, CatalogueActivity.class); CatalogueFragment fragment = new CatalogueFragment();
intent.putExtra(SOURCE_ID, source_id); Bundle args = new Bundle();
return intent; args.putInt(SOURCE_ID, source_id);
fragment.setArguments(args);
return fragment;
} }
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_catalogue); setHasOptionsMenu(true);
ButterKnife.bind(this); }
setupToolbar(toolbar); @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_catalogue, container, false);
ButterKnife.bind(this, view);
initializeAdapter(); initializeAdapter();
initializeScrollListener(); initializeScrollListener();
int source_id = getIntent().getIntExtra(SOURCE_ID, -1); int source_id = getArguments().getInt(SOURCE_ID, -1);
showProgressBar();
if (savedInstanceState == null) if (savedInstanceState == null)
getPresenter().startRequesting(source_id); getPresenter().startRequesting(source_id);
return view;
} }
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
getMenuInflater().inflate(R.menu.catalogue_list, menu); inflater.inflate(R.menu.catalogue_list, menu);
initializeSearch(menu); initializeSearch(menu);
return super.onCreateOptionsMenu(menu);
} }
private void initializeSearch(Menu menu) { private void initializeSearch(Menu menu) {
@ -107,7 +116,7 @@ public class CatalogueActivity extends BaseActivity<CataloguePresenter> {
} }
public void initializeAdapter() { public void initializeAdapter() {
adapter = new EasyAdapter<>(this, CatalogueHolder.class); adapter = new EasyAdapter<>(getActivity(), CatalogueHolder.class);
manga_list.setAdapter(adapter); manga_list.setAdapter(adapter);
} }
@ -115,7 +124,7 @@ public class CatalogueActivity extends BaseActivity<CataloguePresenter> {
public void onMangaClick(int position) { public void onMangaClick(int position) {
Manga selectedManga = adapter.getItem(position); Manga selectedManga = adapter.getItem(position);
Intent intent = MangaDetailActivity.newIntent(this, selectedManga); Intent intent = MangaDetailActivity.newIntent(getActivity(), selectedManga);
intent.putExtra(MangaDetailActivity.MANGA_ONLINE, true); intent.putExtra(MangaDetailActivity.MANGA_ONLINE, true);
startActivity(intent); startActivity(intent);
} }

View File

@ -1,6 +1,5 @@
package eu.kanade.mangafeed.ui.fragment; package eu.kanade.mangafeed.ui.fragment;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -15,7 +14,6 @@ import butterknife.OnItemClick;
import eu.kanade.mangafeed.R; import eu.kanade.mangafeed.R;
import eu.kanade.mangafeed.presenter.SourcePresenter; import eu.kanade.mangafeed.presenter.SourcePresenter;
import eu.kanade.mangafeed.sources.Source; import eu.kanade.mangafeed.sources.Source;
import eu.kanade.mangafeed.ui.activity.CatalogueActivity;
import eu.kanade.mangafeed.ui.activity.MainActivity; import eu.kanade.mangafeed.ui.activity.MainActivity;
import eu.kanade.mangafeed.ui.adapter.SourceHolder; import eu.kanade.mangafeed.ui.adapter.SourceHolder;
import nucleus.factory.RequiresPresenter; import nucleus.factory.RequiresPresenter;
@ -43,10 +41,10 @@ public class SourceFragment extends BaseFragment<SourcePresenter> {
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
// Inflate the layout for this fragment // Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_catalogue, container, false); View view = inflater.inflate(R.layout.fragment_source, container, false);
ButterKnife.bind(this, view); ButterKnife.bind(this, view);
activity.setToolbarTitle(R.string.catalogues_title); setToolbarTitle(R.string.catalogues_title);
createAdapter(); createAdapter();
@ -57,8 +55,8 @@ public class SourceFragment extends BaseFragment<SourcePresenter> {
public void onSourceClick(int position) { public void onSourceClick(int position) {
Source source = adapter.getItem(position); Source source = adapter.getItem(position);
Intent intent = CatalogueActivity.newIntent(activity, source.getSourceId()); CatalogueFragment fragment = CatalogueFragment.newInstance(source.getSourceId());
startActivity(intent); activity.setFragment(fragment);
} }
private void createAdapter() { private void createAdapter() {

View File

@ -1,45 +0,0 @@
<?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="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" android:fitsSystemWindows="true"
tools:context="eu.kanade.mangafeed.ui.activity.CatalogueActivity">
<include
android:id="@+id/toolbar"
layout="@layout/toolbar"/>
<ProgressBar
android:id="@+id/progress"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical|center_horizontal"
android:visibility="gone" />
<GridView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:id="@+id/gridView"
android:padding="10dp"
android:clipToPadding="false"
android:verticalSpacing="8dp"
android:horizontalSpacing="8dp"
android:columnWidth="96dp"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:fastScrollEnabled="true"
tools:listitem="@layout/item_catalogue" />
<ProgressBar
android:id="@+id/progress_grid"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:visibility="gone" />
</LinearLayout>

View File

@ -1,13 +1,41 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"
tools:context="eu.kanade.mangafeed.ui.fragment.SourceFragment"> tools:context="eu.kanade.mangafeed.ui.fragment.CatalogueFragment">
<ProgressBar
android:id="@+id/progress"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical|center_horizontal"
android:visibility="gone" />
<ListView <GridView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:id="@+id/gridView"
android:padding="10dp"
android:clipToPadding="false"
android:verticalSpacing="8dp"
android:horizontalSpacing="8dp"
android:columnWidth="96dp"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:fastScrollEnabled="true"
tools:listitem="@layout/item_catalogue" />
<ProgressBar
android:id="@+id/progress_grid"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:id="@+id/catalogue_list" /> android:layout_gravity="center_vertical|center_horizontal"
android:visibility="gone" />
</LinearLayout> </LinearLayout>

View File

@ -5,7 +5,7 @@
android:orientation="vertical" android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:fitsSystemWindows="true" android:layout_height="match_parent" android:fitsSystemWindows="true"
tools:context="eu.kanade.mangafeed.ui.activity.CatalogueActivity"> tools:context="eu.kanade.mangafeed.ui.fragment.CatalogueFragment">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@ -0,0 +1,13 @@
<LinearLayout 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"
tools:context="eu.kanade.mangafeed.ui.fragment.SourceFragment">
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/catalogue_list" />
</LinearLayout>