diff --git a/src/org/geometerplus/android/fbreader/network/NetworkBookActions.java b/src/org/geometerplus/android/fbreader/network/NetworkBookActions.java index 682ebf89b..2d46b9abe 100644 --- a/src/org/geometerplus/android/fbreader/network/NetworkBookActions.java +++ b/src/org/geometerplus/android/fbreader/network/NetworkBookActions.java @@ -442,7 +442,7 @@ class NetworkBookActions extends NetworkTreeActions { private static void doBuyInBrowser(Activity activity, final NetworkBookItem book) { BookReference reference = book.reference(BookReference.Type.BUY_IN_BROWSER); if (reference != null) { - NetworkView.Instance().openInBrowser(activity, reference.URL); + Util.openInBrowser(activity, reference.URL); } } diff --git a/src/org/geometerplus/android/fbreader/network/NetworkCatalogActions.java b/src/org/geometerplus/android/fbreader/network/NetworkCatalogActions.java index f81611f1a..6f95cd239 100644 --- a/src/org/geometerplus/android/fbreader/network/NetworkCatalogActions.java +++ b/src/org/geometerplus/android/fbreader/network/NetworkCatalogActions.java @@ -238,7 +238,7 @@ class NetworkCatalogActions extends NetworkTreeActions { doExpandCatalog(activity, (NetworkCatalogTree)tree); return true; case OPEN_IN_BROWSER_ITEM_ID: - NetworkView.Instance().openInBrowser( + Util.openInBrowser( activity, ((NetworkCatalogTree)tree).Item.URLByType.get(NetworkCatalogItem.URL_HTML_PAGE) ); @@ -256,7 +256,7 @@ class NetworkCatalogActions extends NetworkTreeActions { doSignOut(activity, (NetworkCatalogTree)tree); return true; case REFILL_ACCOUNT_ITEM_ID: - NetworkView.Instance().openInBrowser( + Util.openInBrowser( activity, ((NetworkCatalogTree)tree).Item.Link.authenticationManager().refillAccountLink() ); diff --git a/src/org/geometerplus/android/fbreader/network/NetworkView.java b/src/org/geometerplus/android/fbreader/network/NetworkView.java index 622fae9cd..10c046f4e 100644 --- a/src/org/geometerplus/android/fbreader/network/NetworkView.java +++ b/src/org/geometerplus/android/fbreader/network/NetworkView.java @@ -191,17 +191,6 @@ class NetworkView { } } - /* - * Open Network URL in browser - */ - - public void openInBrowser(Context context, String url) { - if (url != null) { - url = NetworkLibrary.Instance().rewriteUrl(url, true); - context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); - } - } - /* * Notifying view's components from services diff --git a/src/org/geometerplus/android/fbreader/network/RefillAccountActions.java b/src/org/geometerplus/android/fbreader/network/RefillAccountActions.java index 0eadf627e..f9dd5dd44 100644 --- a/src/org/geometerplus/android/fbreader/network/RefillAccountActions.java +++ b/src/org/geometerplus/android/fbreader/network/RefillAccountActions.java @@ -82,32 +82,52 @@ class RefillAccountActions extends NetworkTreeActions { @Override public boolean runAction(NetworkBaseActivity activity, NetworkTree tree, int actionCode) { + final INetworkLink link = ((RefillAccountTree)tree).Link; + Runnable refillRunnable = null; switch (actionCode) { case REFILL_VIA_SMS_ITEM_ID: - //doRefill(activity, (RefillAccountTree) tree); - return true; + refillRunnable = smsRefillRunnable(activity, link); + break; case REFILL_VIA_BROWSER_ITEM_ID: - doRefill(activity, (RefillAccountTree) tree); - return true; + refillRunnable = browserRefillRunnable(activity, link); + break; } - return false; + + if (refillRunnable == null) { + return false; + } + doRefill(activity, link, refillRunnable); + return true; } - private void doRefill(final NetworkBaseActivity activity, final RefillAccountTree tree) { - final NetworkAuthenticationManager mgr = tree.Link.authenticationManager(); + private Runnable browserRefillRunnable(final NetworkBaseActivity activity, final INetworkLink link) { + return new Runnable() { + public void run() { + Util.openInBrowser( + activity, + link.authenticationManager().refillAccountLink() + ); + } + }; + } + + private Runnable smsRefillRunnable(final NetworkBaseActivity activity, final INetworkLink link) { + return new Runnable() { + public void run() { + // TODO: implement + } + }; + } + + private void doRefill(final NetworkBaseActivity activity, final INetworkLink link, final Runnable refiller) { + final NetworkAuthenticationManager mgr = link.authenticationManager(); if (mgr.mayBeAuthorised(false)) { - NetworkView.Instance().openInBrowser( - activity, - tree.Link.authenticationManager().refillAccountLink() - ); + refiller.run(); } else { - NetworkDialog.show(activity, NetworkDialog.DIALOG_AUTHENTICATION, tree.Link, new Runnable() { + NetworkDialog.show(activity, NetworkDialog.DIALOG_AUTHENTICATION, link, new Runnable() { public void run() { if (mgr.mayBeAuthorised(false)) { - NetworkView.Instance().openInBrowser( - activity, - tree.Link.authenticationManager().refillAccountLink() - ); + refiller.run(); } } }); diff --git a/src/org/geometerplus/android/fbreader/network/Util.java b/src/org/geometerplus/android/fbreader/network/Util.java index 2649baf80..4756803fd 100644 --- a/src/org/geometerplus/android/fbreader/network/Util.java +++ b/src/org/geometerplus/android/fbreader/network/Util.java @@ -22,10 +22,12 @@ package org.geometerplus.android.fbreader.network; import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.Intent; +import android.content.Context; import android.net.Uri; import org.geometerplus.zlibrary.core.network.ZLNetworkException; +import org.geometerplus.fbreader.network.NetworkLibrary; import org.geometerplus.fbreader.network.INetworkLink; import org.geometerplus.fbreader.network.authentication.NetworkAuthenticationManager; @@ -90,4 +92,11 @@ abstract class Util implements UserRegistrationConstants { static boolean isBrowserAccountRefillingSupported(Activity activity, INetworkLink link) { return link.getLink(INetworkLink.URL_REFILL_ACCOUNT) != null; } + + static void openInBrowser(Context context, String url) { + if (url != null) { + url = NetworkLibrary.Instance().rewriteUrl(url, true); + context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); + } + } } diff --git a/src/org/geometerplus/fbreader/formats/FormatPlugin.java b/src/org/geometerplus/fbreader/formats/FormatPlugin.java index 1ae52d5cc..1b5fbc95c 100644 --- a/src/org/geometerplus/fbreader/formats/FormatPlugin.java +++ b/src/org/geometerplus/fbreader/formats/FormatPlugin.java @@ -36,7 +36,7 @@ public abstract class FormatPlugin { String language = book.getLanguage(); String encoding = book.getEncoding(); if (encoding.length() == 0 || language.length() == 0) { - PluginCollection collection = PluginCollection.instance(); + PluginCollection collection = PluginCollection.Instance(); if (language.length() == 0) { language = collection.DefaultLanguageOption.getValue(); } @@ -67,7 +67,7 @@ public abstract class FormatPlugin { public static void detectEncodingAndLanguage(Book book, InputStream stream) { String encoding = book.getEncoding(); if (encoding.length() == 0) { - encoding = EncodingDetector.detect(stream, PluginCollection.instance().DefaultLanguageOption.getValue()); + encoding = EncodingDetector.detect(stream, PluginCollection.Instance().DefaultLanguageOption.getValue()); if (encoding == "unknown") { encoding = "windows-1252"; } @@ -84,7 +84,7 @@ public abstract class FormatPlugin { (encoding.equals("IBM866"))) { book.setLanguage("ru"); } /*else if ( - (PluginCollection.instance().DefaultLanguageOption.getValue() == EncodingDetector.Language.CZECH) && + (PluginCollection.Instance().DefaultLanguageOption.getValue() == EncodingDetector.Language.CZECH) && ((encoding == "windows-1250") || (encoding == "ISO-8859-2") || (encoding == "IBM852"))) {