1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-05 02:39:23 +02:00

code simplification: openInBrowser is now a static method in Util; sms account refilling (in progress)

This commit is contained in:
Nikolay Pultsin 2010-12-23 20:00:17 +00:00
parent 3309fe02ab
commit 15b1e282a6
6 changed files with 51 additions and 33 deletions

View file

@ -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);
}
}

View file

@ -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()
);

View file

@ -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

View file

@ -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;
}
return false;
refillRunnable = browserRefillRunnable(activity, link);
break;
}
private void doRefill(final NetworkBaseActivity activity, final RefillAccountTree tree) {
final NetworkAuthenticationManager mgr = tree.Link.authenticationManager();
if (mgr.mayBeAuthorised(false)) {
NetworkView.Instance().openInBrowser(
if (refillRunnable == null) {
return false;
}
doRefill(activity, link, refillRunnable);
return true;
}
private Runnable browserRefillRunnable(final NetworkBaseActivity activity, final INetworkLink link) {
return new Runnable() {
public void run() {
Util.openInBrowser(
activity,
tree.Link.authenticationManager().refillAccountLink()
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)) {
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();
}
}
});

View file

@ -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)));
}
}
}

View file

@ -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"))) {