mirror of
https://github.com/geometer/FBReaderJ.git
synced 2025-10-05 02:39:23 +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;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import android.app.*;
|
||||
import android.os.Bundle;
|
||||
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.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 CUSTOM_AUTHENTICATION_CODE = 2;
|
||||
protected static final int SIGNUP_CODE = 3;
|
||||
|
||||
public BookDownloaderServiceConnection Connection;
|
||||
|
||||
private FBTree myCurrentTree;
|
||||
|
||||
protected FBTree getCurrentTree() {
|
||||
return myCurrentTree;
|
||||
}
|
||||
|
||||
protected void setCurrentTree(FBTree tree) {
|
||||
myCurrentTree = tree;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle icicle) {
|
||||
super.onCreate(icicle);
|
||||
Thread.setDefaultUncaughtExceptionHandler(new org.geometerplus.zlibrary.ui.android.library.UncaughtExceptionHandler(this));
|
||||
|
||||
OLD_STYLE_FLAG = true;
|
||||
|
||||
SQLiteCookieDatabase.init(this);
|
||||
|
||||
|
|
|
@ -21,7 +21,6 @@ package org.geometerplus.android.fbreader.network;
|
|||
|
||||
import android.os.Bundle;
|
||||
import android.view.*;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.content.Intent;
|
||||
|
||||
import org.geometerplus.zlibrary.core.network.ZLNetworkManager;
|
||||
|
@ -60,8 +59,8 @@ public class NetworkCatalogActivity extends NetworkBaseActivity implements UserR
|
|||
|
||||
setForTree((NetworkTree)getCurrentTree(), this);
|
||||
|
||||
setListAdapter(new CatalogAdapter());
|
||||
getListView().invalidateViews();
|
||||
setListAdapter(new NetworkLibraryAdapter(this, getCurrentTree().subTrees()));
|
||||
|
||||
setupTitle();
|
||||
}
|
||||
|
||||
|
@ -131,37 +130,6 @@ public class NetworkCatalogActivity extends NetworkBaseActivity implements UserR
|
|||
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) {
|
||||
while (tree instanceof NetworkAuthorTree || tree instanceof NetworkSeriesTree) {
|
||||
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
|
||||
* 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();
|
||||
}
|
||||
|
|
|
@ -101,7 +101,7 @@ class NetworkInitializer extends Handler {
|
|||
if (myActivity instanceof NetworkLibraryActivity) {
|
||||
final NetworkLibraryActivity a = (NetworkLibraryActivity)myActivity;
|
||||
a.startService(new Intent(a.getApplicationContext(), LibraryInitializationService.class));
|
||||
a.prepareView(); // initialization is complete successfully
|
||||
a.onModelChanged(); // initialization is complete successfully
|
||||
}
|
||||
} else {
|
||||
showTryAgainDialog(myActivity, (String)message.obj); // handle initialization error
|
||||
|
|
|
@ -29,7 +29,6 @@ import android.os.Bundle;
|
|||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.view.*;
|
||||
import android.widget.BaseAdapter;
|
||||
|
||||
import org.geometerplus.zlibrary.core.resources.ZLResource;
|
||||
import org.geometerplus.zlibrary.core.network.ZLNetworkException;
|
||||
|
@ -54,6 +53,24 @@ public class NetworkLibraryActivity extends NetworkBaseActivity {
|
|||
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
|
||||
|
||||
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
|
||||
|
@ -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
|
||||
public void onDestroy() {
|
||||
if (!NetworkView.Instance().isInitialized() && NetworkInitializer.Instance != null) {
|
||||
|
@ -122,29 +112,6 @@ public class NetworkLibraryActivity extends NetworkBaseActivity {
|
|||
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) {
|
||||
final String label = NetworkLibrary.resource().getResource("menu").getResource(resourceKey).getValue();
|
||||
return menu.add(0, index, Menu.NONE, label).setIcon(iconId);
|
||||
|
@ -253,6 +220,7 @@ public class NetworkLibraryActivity extends NetworkBaseActivity {
|
|||
@Override
|
||||
public void onModelChanged() {
|
||||
getListView().invalidateViews();
|
||||
((NetworkLibraryAdapter)getListAdapter()).replaceAll(getCurrentTree().subTrees());
|
||||
}
|
||||
|
||||
private void refreshCatalogsList() {
|
||||
|
|
|
@ -53,8 +53,14 @@ public abstract class BaseActivity extends ListActivity {
|
|||
|
||||
public abstract boolean isTreeSelected(FBTree tree);
|
||||
|
||||
protected boolean OLD_STYLE_FLAG = false;
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||
if (OLD_STYLE_FLAG) {
|
||||
return super.onKeyDown(keyCode, event);
|
||||
}
|
||||
|
||||
if (keyCode == KeyEvent.KEYCODE_BACK && myCurrentTree.Parent != null) {
|
||||
final FBTree oldTree = myCurrentTree;
|
||||
openTree(myCurrentTree.Parent);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue