summaryrefslogtreecommitdiff
path: root/org.fox.ttcomics
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2017-05-31 10:14:29 +0300
committerAndrew Dolgov <[email protected]>2017-05-31 10:14:29 +0300
commit481e195e6a5f94425059a0a268dd9eca742f5593 (patch)
tree712ff160fa89f305ff5c53933550939b65c5beb7 /org.fox.ttcomics
parent3b90cadfacbd9d547faa8a4a90b55c2d44bae4dc (diff)
fix current fragment rescan after operation
Diffstat (limited to 'org.fox.ttcomics')
-rwxr-xr-xorg.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java4
-rwxr-xr-xorg.fox.ttcomics/src/main/java/org/fox/ttcomics2/MainActivity.java182
-rwxr-xr-xorg.fox.ttcomics/src/main/res/layout/activity_main.xml19
3 files changed, 109 insertions, 96 deletions
diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java
index d35643e..f87c1c7 100755
--- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java
+++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java
@@ -464,10 +464,6 @@ public class ComicListFragment extends Fragment implements OnItemClickListener {
Log.d(TAG, "baseDir=" + m_baseDirectory);
- if (m_activity.getMode() != m_mode) {
- m_mode = m_activity.getMode();
- }
-
if (m_activity.m_databaseHelper.getCachedItemCount(m_baseDirectory) == 0) {
rescan();
} else {
diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/MainActivity.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/MainActivity.java
index 2dd75d3..ddb1fb1 100755
--- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/MainActivity.java
+++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/MainActivity.java
@@ -14,13 +14,18 @@ import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.os.Bundle;
+import android.os.Handler;
import android.support.v4.app.ActivityCompat;
-import android.support.v4.app.FragmentTransaction;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.content.ContextCompat;
+import android.support.v4.view.ViewPager;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
+import android.view.ViewGroup;
import org.fox.ttcomics2.sync.SyncClient;
import org.fox.ttcomics2.sync.SyncFolderService;
@@ -32,10 +37,11 @@ import java.util.Arrays;
public class MainActivity extends CommonActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
private final String TAG = this.getClass().getSimpleName();
- private int m_selectedTab;
- //private MaterialTabHost tabHost;
private ProgressDialog m_progressDialog;
private boolean m_needRestart;
+ private ComicsPagerAdapter m_adapter;
+ private String m_baseDir;
+ private ViewPager m_pager;
private BroadcastReceiver m_serviceReceiver = new BroadcastReceiver() {
@Override
@@ -73,59 +79,56 @@ public class MainActivity extends CommonActivity implements SharedPreferences.On
m_progressDialog = new ProgressDialog(this);
- //tabHost = (MaterialTabHost) this.findViewById(R.id.materialTabHost);
+ m_adapter = new ComicsPagerAdapter(getSupportFragmentManager());
- if (savedInstanceState == null) {
- m_selectedTab = getIntent().getIntExtra("selectedTab", 0);
+ m_pager = (ViewPager) findViewById(R.id.comics_pager);
+ m_pager.setAdapter(m_adapter);
+ m_pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+ @Override
+ public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
- //Log.d(TAG, "selTab=" + m_selectedTab);
+ }
- ComicListFragment frag = new ComicListFragment();
- frag.setMode(m_selectedTab);
+ @Override
+ public void onPageSelected(final int position) {
- if (getIntent().getStringExtra("baseDir") != null) {
- frag.setBaseDirectory(getIntent().getStringExtra("baseDir"));
- } else {
- frag.setBaseDirectory(m_prefs.getString("comics_directory", ""));
- }
+ new Handler().postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ ComicListFragment frag = (ComicListFragment) m_adapter.getItem(position);
- FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
- ft.replace(R.id.comics_list, frag, FRAG_COMICS_LIST);
- ft.commit();
- } else {
- //m_baseDirectory = savedInstanceState.getString("baseDir");
- }
+ if (frag != null && frag.isAdded()) {
+ frag.refresh();
+ }
+ }
+ }, 100);
- m_selectedTab = -1;
- /*tabHost.addTab(tabHost.newTab()
- .setText(getString(R.string.tab_all_comics))
- .setTabListener(this));
+ }
- tabHost.addTab(tabHost.newTab()
- .setText(getString(R.string.tab_unread))
- .setTabListener(this));
+ @Override
+ public void onPageScrollStateChanged(int state) {
- tabHost.addTab(tabHost.newTab()
- .setText(getString(R.string.tab_unfinished))
- .setTabListener(this));
+ }
+ });
- tabHost.addTab(tabHost.newTab()
- .setText(getString(R.string.tab_read))
- .setTabListener(this));*/
+ if (savedInstanceState == null) {
+ int selectedTab = getIntent().getIntExtra("selectedTab", 0);
+ Log.d(TAG, "selTab=" + selectedTab);
+ m_pager.setCurrentItem(selectedTab);
+
+ if (getIntent().getStringExtra("baseDir") != null) {
+ m_baseDir = getIntent().getStringExtra("baseDir");
+ } else {
+ m_baseDir = m_prefs.getString("comics_directory", "");
+ }
- if (savedInstanceState != null) {
- m_selectedTab = savedInstanceState.getInt("selectedTab");
} else {
- m_selectedTab = getIntent().getIntExtra("selectedTab", 0);
+ m_baseDir = savedInstanceState.getString("baseDir");
}
- /*if (m_selectedTab != -1)
- tabHost.setSelectedNavigationItem(m_selectedTab);*/
-
-
String[] permissions;
if (isSyncEnabled()) {
@@ -263,11 +266,7 @@ public class MainActivity extends CommonActivity implements SharedPreferences.On
public void onSaveInstanceState(Bundle out) {
super.onSaveInstanceState(out);
- out.putInt("selectedTab", m_selectedTab);
- }
-
- public int getMode() {
- return m_selectedTab;
+ out.putString("baseDir", m_baseDir);
}
public boolean onOptionsItemSelected(MenuItem item) {
@@ -279,14 +278,7 @@ public class MainActivity extends CommonActivity implements SharedPreferences.On
.setCancelable(true)
.setPositiveButton("Continue", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
- ComicListFragment frag = (ComicListFragment) getSupportFragmentManager().findFragmentByTag(FRAG_COMICS_LIST);
-
- if (frag != null && frag.isAdded()) {
- String baseDir = frag.getBaseDirectory();
-
- updateLastRead(baseDir);
- }
-
+ updateLastRead(m_baseDir);
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@@ -326,7 +318,7 @@ public class MainActivity extends CommonActivity implements SharedPreferences.On
Intent intent = new Intent(MainActivity.this,
MainActivity.class);
- intent.putExtra("selectedTab", m_selectedTab);
+ intent.putExtra("selectedTab", m_pager.getCurrentItem());
intent.putExtra("baseDir", fileName);
startActivity(intent);
@@ -341,7 +333,7 @@ public class MainActivity extends CommonActivity implements SharedPreferences.On
} else {
toast(getString(R.string.error_cant_open_file, fileName));
- ComicListFragment frag = (ComicListFragment) getSupportFragmentManager().findFragmentByTag(FRAG_COMICS_LIST);
+ ComicListFragment frag = (ComicListFragment) m_adapter.getPrimaryItem();
if (frag != null && frag.isAdded()) {
frag.rescan();
@@ -368,40 +360,10 @@ public class MainActivity extends CommonActivity implements SharedPreferences.On
super.onActivityResult(requestCode, resultCode, intent);
}
- /*@Override
- public void onTabSelected(MaterialTab tab) {
-
- tabHost.setSelectedNavigationItem(tab.getPosition());
-
- FragmentTransaction sft = getSupportFragmentManager().beginTransaction();
-
- if (m_selectedTab != tab.getPosition() && m_selectedTab != -1) {
-
- ComicListFragment frag = (ComicListFragment) getSupportFragmentManager().findFragmentByTag(FRAG_COMICS_LIST);
-
- if (frag != null && frag.isAdded()) {
- frag.setMode(tab.getPosition());
- frag.refresh();
- }
- }
-
- m_selectedTab = tab.getPosition();
-
- sft.commit();
- }*/
-
- /*@Override
- public void onTabReselected(MaterialTab materialTab) {
-
- }
-
- @Override
- public void onTabUnselected(MaterialTab materialTab) {
-
- }*/
-
private void updateComicsList() {
- ComicListFragment frag = (ComicListFragment) getSupportFragmentManager().findFragmentByTag(FRAG_COMICS_LIST);
+ ComicListFragment frag = (ComicListFragment) m_adapter.getPrimaryItem();
+
+ Log.d(TAG, "CLF=" + frag + " " + frag.isAdded());
if (frag != null && frag.isAdded()) {
frag.refresh();
@@ -455,4 +417,48 @@ public class MainActivity extends CommonActivity implements SharedPreferences.On
m_needRestart = Arrays.asList(filter).indexOf(key) != -1;
}
+
+ private class ComicsPagerAdapter extends FragmentStatePagerAdapter{
+ private int[] m_pageTitles = {
+ R.string.tab_all_comics,
+ R.string.tab_unread,
+ R.string.tab_unfinished,
+ R.string.tab_read
+ };
+ private Fragment m_primaryItem;
+
+ public ComicsPagerAdapter(FragmentManager fm) {
+ super(fm);
+ }
+
+ @Override
+ public Fragment getItem(int position) {
+ ComicListFragment frag = new ComicListFragment();
+
+ frag.setMode(position);
+ frag.setBaseDirectory(m_baseDir);
+
+ return frag;
+ }
+
+ @Override
+ public int getCount() {
+ return 4;
+ }
+
+ @Override
+ public void setPrimaryItem(ViewGroup container, int position, Object object) {
+ m_primaryItem = ((Fragment) object);
+ super.setPrimaryItem(container, position, object);
+ }
+
+ @Override
+ public CharSequence getPageTitle(int position) {
+ return getString(m_pageTitles[position]);
+ }
+
+ public Fragment getPrimaryItem() {
+ return m_primaryItem;
+ }
+ }
}
diff --git a/org.fox.ttcomics/src/main/res/layout/activity_main.xml b/org.fox.ttcomics/src/main/res/layout/activity_main.xml
index 1c05df7..8d5203a 100755
--- a/org.fox.ttcomics/src/main/res/layout/activity_main.xml
+++ b/org.fox.ttcomics/src/main/res/layout/activity_main.xml
@@ -6,11 +6,22 @@
<include layout="@layout/toolbar" android:id="@+id/toolbar" />
- <FrameLayout
- android:id="@+id/comics_list"
+ <android.support.v4.view.ViewPager
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/comics_pager"
android:layout_width="match_parent"
- android:layout_height="match_parent" >
+ android:layout_height="match_parent">
- </FrameLayout>
+ <android.support.v4.view.PagerTitleStrip
+ android:id="@+id/comics_pager_title_strip"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="top"
+ android:background="?colorPrimaryDark"
+ android:textColor="@android:color/white"
+ android:paddingTop="4dp"
+ android:paddingBottom="4dp" />
+
+ </android.support.v4.view.ViewPager>
</LinearLayout> \ No newline at end of file