mirror of
https://github.com/geometer/FBReaderJ.git
synced 2025-10-05 10:49:24 +02:00
common base activity/adapter for library and network library
This commit is contained in:
parent
2ab9bcf491
commit
7967269bcc
5 changed files with 53 additions and 99 deletions
|
@ -19,6 +19,8 @@
|
||||||
|
|
||||||
package org.geometerplus.android.fbreader.network;
|
package org.geometerplus.android.fbreader.network;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import android.app.*;
|
import android.app.*;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.*;
|
import android.view.*;
|
||||||
|
@ -41,27 +43,32 @@ import org.geometerplus.fbreader.network.tree.NetworkBookTree;
|
||||||
import org.geometerplus.fbreader.network.tree.AddCustomCatalogItemTree;
|
import org.geometerplus.fbreader.network.tree.AddCustomCatalogItemTree;
|
||||||
import org.geometerplus.fbreader.network.tree.SearchItemTree;
|
import org.geometerplus.fbreader.network.tree.SearchItemTree;
|
||||||
|
|
||||||
abstract class NetworkBaseActivity extends ListActivity implements NetworkView.EventListener {
|
import org.geometerplus.android.fbreader.tree.BaseActivity;
|
||||||
|
import org.geometerplus.android.fbreader.tree.ListAdapter;
|
||||||
|
|
||||||
|
abstract class NetworkBaseActivity extends BaseActivity implements NetworkView.EventListener {
|
||||||
|
protected static class NetworkLibraryAdapter extends ListAdapter {
|
||||||
|
NetworkLibraryAdapter(NetworkBaseActivity activity, List<FBTree> items) {
|
||||||
|
super(activity, items);
|
||||||
|
}
|
||||||
|
|
||||||
|
public View getView(int position, View convertView, final ViewGroup parent) {
|
||||||
|
final NetworkTree tree = (NetworkTree)getItem(position);
|
||||||
|
return ((NetworkBaseActivity)getActivity()).setupNetworkTreeItemView(convertView, parent, tree);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected static final int BASIC_AUTHENTICATION_CODE = 1;
|
protected static final int BASIC_AUTHENTICATION_CODE = 1;
|
||||||
protected static final int CUSTOM_AUTHENTICATION_CODE = 2;
|
protected static final int CUSTOM_AUTHENTICATION_CODE = 2;
|
||||||
protected static final int SIGNUP_CODE = 3;
|
protected static final int SIGNUP_CODE = 3;
|
||||||
|
|
||||||
public BookDownloaderServiceConnection Connection;
|
public BookDownloaderServiceConnection Connection;
|
||||||
|
|
||||||
private FBTree myCurrentTree;
|
|
||||||
|
|
||||||
protected FBTree getCurrentTree() {
|
|
||||||
return myCurrentTree;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void setCurrentTree(FBTree tree) {
|
|
||||||
myCurrentTree = tree;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle icicle) {
|
public void onCreate(Bundle icicle) {
|
||||||
super.onCreate(icicle);
|
super.onCreate(icicle);
|
||||||
Thread.setDefaultUncaughtExceptionHandler(new org.geometerplus.zlibrary.ui.android.library.UncaughtExceptionHandler(this));
|
|
||||||
|
OLD_STYLE_FLAG = true;
|
||||||
|
|
||||||
SQLiteCookieDatabase.init(this);
|
SQLiteCookieDatabase.init(this);
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,6 @@ package org.geometerplus.android.fbreader.network;
|
||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.*;
|
import android.view.*;
|
||||||
import android.widget.BaseAdapter;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
|
||||||
import org.geometerplus.zlibrary.core.network.ZLNetworkManager;
|
import org.geometerplus.zlibrary.core.network.ZLNetworkManager;
|
||||||
|
@ -60,8 +59,8 @@ public class NetworkCatalogActivity extends NetworkBaseActivity implements UserR
|
||||||
|
|
||||||
setForTree((NetworkTree)getCurrentTree(), this);
|
setForTree((NetworkTree)getCurrentTree(), this);
|
||||||
|
|
||||||
setListAdapter(new CatalogAdapter());
|
setListAdapter(new NetworkLibraryAdapter(this, getCurrentTree().subTrees()));
|
||||||
getListView().invalidateViews();
|
|
||||||
setupTitle();
|
setupTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,37 +130,6 @@ public class NetworkCatalogActivity extends NetworkBaseActivity implements UserR
|
||||||
ZLNetworkManager.Instance().setCredentialsCreator(myCredentialsCreator);
|
ZLNetworkManager.Instance().setCredentialsCreator(myCredentialsCreator);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final class CatalogAdapter extends BaseAdapter {
|
|
||||||
public final int getCount() {
|
|
||||||
return getCurrentTree().subTrees().size();
|
|
||||||
}
|
|
||||||
|
|
||||||
public final NetworkTree getItem(int position) {
|
|
||||||
if (position < 0 || position >= getCurrentTree().subTrees().size()) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return (NetworkTree)getCurrentTree().subTrees().get(position);
|
|
||||||
}
|
|
||||||
|
|
||||||
public final long getItemId(int position) {
|
|
||||||
return position;
|
|
||||||
}
|
|
||||||
|
|
||||||
public View getView(int position, View convertView, final ViewGroup parent) {
|
|
||||||
final NetworkTree tree = getItem(position);
|
|
||||||
return setupNetworkTreeItemView(convertView, parent, tree);
|
|
||||||
}
|
|
||||||
|
|
||||||
void onModelChanged() {
|
|
||||||
notifyDataSetChanged();
|
|
||||||
for (FBTree child : getCurrentTree().subTrees()) {
|
|
||||||
if (child instanceof TopUpTree) {
|
|
||||||
child.invalidateChildren();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static NetworkTree getLoadableNetworkTree(NetworkTree tree) {
|
private static NetworkTree getLoadableNetworkTree(NetworkTree tree) {
|
||||||
while (tree instanceof NetworkAuthorTree || tree instanceof NetworkSeriesTree) {
|
while (tree instanceof NetworkAuthorTree || tree instanceof NetworkSeriesTree) {
|
||||||
if (tree.Parent instanceof NetworkTree) {
|
if (tree.Parent instanceof NetworkTree) {
|
||||||
|
@ -189,7 +157,12 @@ public class NetworkCatalogActivity extends NetworkBaseActivity implements UserR
|
||||||
* addEventListener() is called). Therefore CatalogAdapter will be set as
|
* addEventListener() is called). Therefore CatalogAdapter will be set as
|
||||||
* adapter in onCreate() method before any calls to onModelChanged().
|
* adapter in onCreate() method before any calls to onModelChanged().
|
||||||
*/
|
*/
|
||||||
((CatalogAdapter)getListAdapter()).onModelChanged();
|
((NetworkLibraryAdapter)getListAdapter()).replaceAll(getCurrentTree().subTrees());
|
||||||
|
for (FBTree child : getCurrentTree().subTrees()) {
|
||||||
|
if (child instanceof TopUpTree) {
|
||||||
|
child.invalidateChildren();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
setupTitle();
|
setupTitle();
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,7 +101,7 @@ class NetworkInitializer extends Handler {
|
||||||
if (myActivity instanceof NetworkLibraryActivity) {
|
if (myActivity instanceof NetworkLibraryActivity) {
|
||||||
final NetworkLibraryActivity a = (NetworkLibraryActivity)myActivity;
|
final NetworkLibraryActivity a = (NetworkLibraryActivity)myActivity;
|
||||||
a.startService(new Intent(a.getApplicationContext(), LibraryInitializationService.class));
|
a.startService(new Intent(a.getApplicationContext(), LibraryInitializationService.class));
|
||||||
a.prepareView(); // initialization is complete successfully
|
a.onModelChanged(); // initialization is complete successfully
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
showTryAgainDialog(myActivity, (String)message.obj); // handle initialization error
|
showTryAgainDialog(myActivity, (String)message.obj); // handle initialization error
|
||||||
|
|
|
@ -29,7 +29,6 @@ import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
import android.view.*;
|
import android.view.*;
|
||||||
import android.widget.BaseAdapter;
|
|
||||||
|
|
||||||
import org.geometerplus.zlibrary.core.resources.ZLResource;
|
import org.geometerplus.zlibrary.core.resources.ZLResource;
|
||||||
import org.geometerplus.zlibrary.core.network.ZLNetworkException;
|
import org.geometerplus.zlibrary.core.network.ZLNetworkException;
|
||||||
|
@ -54,6 +53,24 @@ public class NetworkLibraryActivity extends NetworkBaseActivity {
|
||||||
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
|
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
|
||||||
|
|
||||||
myIntent = getIntent();
|
myIntent = getIntent();
|
||||||
|
|
||||||
|
setCurrentTree(NetworkLibrary.Instance().getRootTree());
|
||||||
|
setListAdapter(new NetworkLibraryAdapter(this, getCurrentTree().subTrees()));
|
||||||
|
|
||||||
|
if (!NetworkView.Instance().isInitialized()) {
|
||||||
|
if (NetworkInitializer.Instance == null) {
|
||||||
|
new NetworkInitializer(this);
|
||||||
|
NetworkInitializer.Instance.start();
|
||||||
|
} else {
|
||||||
|
NetworkInitializer.Instance.setActivity(this);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
onModelChanged();
|
||||||
|
if (myIntent != null) {
|
||||||
|
processIntent(myIntent);
|
||||||
|
myIntent = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -87,33 +104,6 @@ public class NetworkLibraryActivity extends NetworkBaseActivity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void prepareView() {
|
|
||||||
if (getCurrentTree() == null) {
|
|
||||||
setCurrentTree(NetworkLibrary.Instance().getRootTree());
|
|
||||||
setListAdapter(new LibraryAdapter());
|
|
||||||
getListView().invalidateViews();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onResume() {
|
|
||||||
super.onResume();
|
|
||||||
if (!NetworkView.Instance().isInitialized()) {
|
|
||||||
if (NetworkInitializer.Instance == null) {
|
|
||||||
new NetworkInitializer(this);
|
|
||||||
NetworkInitializer.Instance.start();
|
|
||||||
} else {
|
|
||||||
NetworkInitializer.Instance.setActivity(this);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
prepareView();
|
|
||||||
if (myIntent != null) {
|
|
||||||
processIntent(myIntent);
|
|
||||||
myIntent = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
if (!NetworkView.Instance().isInitialized() && NetworkInitializer.Instance != null) {
|
if (!NetworkView.Instance().isInitialized() && NetworkInitializer.Instance != null) {
|
||||||
|
@ -122,29 +112,6 @@ public class NetworkLibraryActivity extends NetworkBaseActivity {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
private final class LibraryAdapter extends BaseAdapter {
|
|
||||||
public final int getCount() {
|
|
||||||
if (!NetworkView.Instance().isInitialized()) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return getCurrentTree().subTrees().size();
|
|
||||||
}
|
|
||||||
|
|
||||||
public final NetworkTree getItem(int position) {
|
|
||||||
return (NetworkTree)getCurrentTree().subTrees().get(position);
|
|
||||||
}
|
|
||||||
|
|
||||||
public final long getItemId(int position) {
|
|
||||||
return position;
|
|
||||||
}
|
|
||||||
|
|
||||||
public View getView(int position, View convertView, final ViewGroup parent) {
|
|
||||||
final NetworkTree tree = getItem(position);
|
|
||||||
return setupNetworkTreeItemView(convertView, parent, tree);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
protected MenuItem addMenuItem(Menu menu, int index, String resourceKey, int iconId) {
|
protected MenuItem addMenuItem(Menu menu, int index, String resourceKey, int iconId) {
|
||||||
final String label = NetworkLibrary.resource().getResource("menu").getResource(resourceKey).getValue();
|
final String label = NetworkLibrary.resource().getResource("menu").getResource(resourceKey).getValue();
|
||||||
return menu.add(0, index, Menu.NONE, label).setIcon(iconId);
|
return menu.add(0, index, Menu.NONE, label).setIcon(iconId);
|
||||||
|
@ -253,6 +220,7 @@ public class NetworkLibraryActivity extends NetworkBaseActivity {
|
||||||
@Override
|
@Override
|
||||||
public void onModelChanged() {
|
public void onModelChanged() {
|
||||||
getListView().invalidateViews();
|
getListView().invalidateViews();
|
||||||
|
((NetworkLibraryAdapter)getListAdapter()).replaceAll(getCurrentTree().subTrees());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void refreshCatalogsList() {
|
private void refreshCatalogsList() {
|
||||||
|
|
|
@ -53,8 +53,14 @@ public abstract class BaseActivity extends ListActivity {
|
||||||
|
|
||||||
public abstract boolean isTreeSelected(FBTree tree);
|
public abstract boolean isTreeSelected(FBTree tree);
|
||||||
|
|
||||||
|
protected boolean OLD_STYLE_FLAG = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||||
|
if (OLD_STYLE_FLAG) {
|
||||||
|
return super.onKeyDown(keyCode, event);
|
||||||
|
}
|
||||||
|
|
||||||
if (keyCode == KeyEvent.KEYCODE_BACK && myCurrentTree.Parent != null) {
|
if (keyCode == KeyEvent.KEYCODE_BACK && myCurrentTree.Parent != null) {
|
||||||
final FBTree oldTree = myCurrentTree;
|
final FBTree oldTree = myCurrentTree;
|
||||||
openTree(myCurrentTree.Parent);
|
openTree(myCurrentTree.Parent);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue