diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 49c18abc4..e3059f007 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -133,7 +133,7 @@
-
+
diff --git a/AndroidManifest.xml.pattern b/AndroidManifest.xml.pattern
index 721a44cbe..c268abf1a 100644
--- a/AndroidManifest.xml.pattern
+++ b/AndroidManifest.xml.pattern
@@ -133,7 +133,7 @@
-
+
diff --git a/src/org/geometerplus/android/fbreader/network/NetworkCatalogActions.java b/src/org/geometerplus/android/fbreader/network/NetworkCatalogActions.java
index c3c31eb24..f236441f3 100644
--- a/src/org/geometerplus/android/fbreader/network/NetworkCatalogActions.java
+++ b/src/org/geometerplus/android/fbreader/network/NetworkCatalogActions.java
@@ -25,6 +25,7 @@ import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.content.DialogInterface;
+import android.content.ActivityNotFoundException;
import android.net.Uri;
import android.view.Menu;
import android.view.ContextMenu;
@@ -376,15 +377,17 @@ class NetworkCatalogActions extends NetworkTreeActions {
NetworkView.Instance().tryResumeLoading(activity, tree, new Runnable() {
public void run() {
if (tree instanceof NetworkCatalogRootTree) {
- /*
- activity.startActivityForResult(
- new Intent(
- Util.TOPUP_ACTION,
- Uri.parse(tree.Item.Link.getUrl(UrlInfo.Type.Catalog))
- ),
- NetworkLibraryActivity.LIST_TOPUP_METHODS_CODE
- );
- */
+ try {
+ activity.startActivityForResult(
+ new Intent(
+ Util.TOPUP_ACTION,
+ Uri.parse(tree.Item.Link.getUrl(UrlInfo.Type.Catalog))
+ ),
+ NetworkLibraryActivity.LIST_TOPUP_METHODS_CODE
+ );
+ } catch (ActivityNotFoundException e) {
+ // ignore
+ }
}
boolean resumeNotLoad = false;
diff --git a/src/org/geometerplus/android/fbreader/network/NetworkInitializer.java b/src/org/geometerplus/android/fbreader/network/NetworkInitializer.java
index 84b9d442d..724aac862 100644
--- a/src/org/geometerplus/android/fbreader/network/NetworkInitializer.java
+++ b/src/org/geometerplus/android/fbreader/network/NetworkInitializer.java
@@ -19,6 +19,7 @@
package org.geometerplus.android.fbreader.network;
+import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
diff --git a/src/org/geometerplus/android/fbreader/network/NetworkLibraryActivity.java b/src/org/geometerplus/android/fbreader/network/NetworkLibraryActivity.java
index 0b1db78ab..8c50cb48f 100644
--- a/src/org/geometerplus/android/fbreader/network/NetworkLibraryActivity.java
+++ b/src/org/geometerplus/android/fbreader/network/NetworkLibraryActivity.java
@@ -72,8 +72,7 @@ public class NetworkLibraryActivity extends BaseActivity implements NetworkView.
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
-
- OLD_STYLE_FLAG = true;
+ System.err.println("NetworkLibraryActivity.onCreate");
SQLiteCookieDatabase.init(this);
@@ -189,6 +188,11 @@ public class NetworkLibraryActivity extends BaseActivity implements NetworkView.
return false;
}
+ @Override
+ protected boolean isTreeInvisible(FBTree tree) {
+ return tree instanceof RootTree && ((RootTree)tree).IsFake;
+ }
+
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
@@ -286,14 +290,14 @@ public class NetworkLibraryActivity extends BaseActivity implements NetworkView.
Util.processSignup(((NetworkCatalogTree)getCurrentTree()).Item.Link, resultCode, data);
break;
case LIST_TOPUP_METHODS_CODE:
- {
- final Bundle bundle = data.getExtras();
- final ArrayList infos =
- bundle != null
- ? bundle.getParcelableArrayList(PluginApi.PluginInfo.KEY)
- : null;
- System.err.println("infos: " + infos);
- }
+ if (data != null) {
+ final Bundle bundle = data.getExtras();
+ final ArrayList infos =
+ bundle != null
+ ? bundle.getParcelableArrayList(PluginApi.PluginInfo.KEY)
+ : null;
+ System.err.println("infos: " + infos);
+ }
}
}
diff --git a/src/org/geometerplus/android/fbreader/network/Util.java b/src/org/geometerplus/android/fbreader/network/Util.java
index 3c3b63c14..44a792a47 100644
--- a/src/org/geometerplus/android/fbreader/network/Util.java
+++ b/src/org/geometerplus/android/fbreader/network/Util.java
@@ -242,10 +242,14 @@ abstract class Util implements UserRegistrationConstants {
static void openTree(Context context, NetworkTree tree) {
final Class> clz = tree instanceof NetworkBookTree
? NetworkBookInfoActivity.class : NetworkLibraryActivity.class;
- context.startActivity(
- new Intent(context.getApplicationContext(), clz)
- .putExtra(NetworkLibraryActivity.TREE_KEY_KEY, tree.getUniqueKey())
- );
+ if (context instanceof NetworkLibraryActivity && clz == NetworkLibraryActivity.class) {
+ ((NetworkLibraryActivity)context).openTree(tree);
+ } else {
+ context.startActivity(
+ new Intent(context.getApplicationContext(), clz)
+ .putExtra(NetworkLibraryActivity.TREE_KEY_KEY, tree.getUniqueKey())
+ );
+ }
}
public static NetworkTree getTreeFromIntent(Intent intent) {
diff --git a/src/org/geometerplus/android/fbreader/tree/BaseActivity.java b/src/org/geometerplus/android/fbreader/tree/BaseActivity.java
index cad4b927c..beb54e5f5 100644
--- a/src/org/geometerplus/android/fbreader/tree/BaseActivity.java
+++ b/src/org/geometerplus/android/fbreader/tree/BaseActivity.java
@@ -71,14 +71,12 @@ public abstract class BaseActivity extends ListActivity {
protected abstract FBTree getTreeByKey(FBTree.Key key);
public abstract boolean isTreeSelected(FBTree tree);
- protected boolean OLD_STYLE_FLAG = false;
+ protected boolean isTreeInvisible(FBTree tree) {
+ return false;
+ }
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (OLD_STYLE_FLAG) {
- return super.onKeyDown(keyCode, event);
- }
-
if (keyCode == KeyEvent.KEYCODE_BACK) {
FBTree parent = null;
while (parent == null && !myHistory.isEmpty()) {
@@ -87,7 +85,7 @@ public abstract class BaseActivity extends ListActivity {
if (parent == null) {
parent = myCurrentTree.Parent;
}
- if (parent != null) {
+ if (parent != null && !isTreeInvisible(parent)) {
openTree(parent, myCurrentTree, false);
return true;
}
@@ -96,7 +94,8 @@ public abstract class BaseActivity extends ListActivity {
return super.onKeyDown(keyCode, event);
}
- protected void openTree(final FBTree tree) {
+ // TODO: change to protected
+ public void openTree(final FBTree tree) {
openTree(tree, null, true);
}
@@ -157,7 +156,7 @@ public abstract class BaseActivity extends ListActivity {
if (storeInHistory && !myCurrentKey.equals(tree.getUniqueKey())) {
myHistory.add(myCurrentKey);
}
- startActivity(new Intent(this, getClass())
+ onNewIntent(new Intent(this, getClass())
.setAction(OPEN_TREE_ACTION)
.putExtra(TREE_KEY_KEY, tree.getUniqueKey())
.putExtra(
diff --git a/src/org/geometerplus/fbreader/network/NetworkLibrary.java b/src/org/geometerplus/fbreader/network/NetworkLibrary.java
index 9aeb2ed7c..a2bffc5cf 100644
--- a/src/org/geometerplus/fbreader/network/NetworkLibrary.java
+++ b/src/org/geometerplus/fbreader/network/NetworkLibrary.java
@@ -124,8 +124,8 @@ public class NetworkLibrary {
return filteredList;
}
- private final RootTree myRootTree = new RootTree("@Root");
- private final RootTree myFakeRootTree = new RootTree("@FakeRoot");
+ private final RootTree myRootTree = new RootTree("@Root", false);
+ private final RootTree myFakeRootTree = new RootTree("@FakeRoot", true);
private SearchItemTree mySearchItemTree;
private boolean myChildrenAreInvalid = true;
diff --git a/src/org/geometerplus/fbreader/network/tree/RootTree.java b/src/org/geometerplus/fbreader/network/tree/RootTree.java
index da9dbca46..d91eb592f 100644
--- a/src/org/geometerplus/fbreader/network/tree/RootTree.java
+++ b/src/org/geometerplus/fbreader/network/tree/RootTree.java
@@ -22,9 +22,12 @@ package org.geometerplus.fbreader.network.tree;
import org.geometerplus.fbreader.network.*;
public final class RootTree extends NetworkTree {
+ public final boolean IsFake;
+
private final String myId;
- public RootTree(String id) {
+ public RootTree(String id, boolean isFake) {
+ IsFake = isFake;
myId = id;
}