diff --git a/assets/resources/application/cs.xml b/assets/resources/application/cs.xml
index c2c2d13f9..0eb67a823 100644
--- a/assets/resources/application/cs.xml
+++ b/assets/resources/application/cs.xml
@@ -78,6 +78,8 @@
+
+
diff --git a/assets/resources/application/de.xml b/assets/resources/application/de.xml
index a40edf8c3..027a657d6 100644
--- a/assets/resources/application/de.xml
+++ b/assets/resources/application/de.xml
@@ -79,6 +79,8 @@
+
+
diff --git a/assets/resources/application/en.xml b/assets/resources/application/en.xml
index 6e76d24ae..e4cafc757 100644
--- a/assets/resources/application/en.xml
+++ b/assets/resources/application/en.xml
@@ -77,6 +77,8 @@
+
+
diff --git a/assets/resources/application/fr.xml b/assets/resources/application/fr.xml
index 95fa0ce78..df2ba94b5 100644
--- a/assets/resources/application/fr.xml
+++ b/assets/resources/application/fr.xml
@@ -81,6 +81,8 @@
+
+
diff --git a/assets/resources/application/gl.xml b/assets/resources/application/gl.xml
index 1baf2f605..97e5e7a1f 100644
--- a/assets/resources/application/gl.xml
+++ b/assets/resources/application/gl.xml
@@ -78,6 +78,8 @@
+
+
diff --git a/assets/resources/application/hu.xml b/assets/resources/application/hu.xml
index 9243bb728..d437c9611 100644
--- a/assets/resources/application/hu.xml
+++ b/assets/resources/application/hu.xml
@@ -78,6 +78,8 @@
+
+
diff --git a/assets/resources/application/it.xml b/assets/resources/application/it.xml
index cb664f978..6925aea3a 100644
--- a/assets/resources/application/it.xml
+++ b/assets/resources/application/it.xml
@@ -78,6 +78,8 @@
+
+
diff --git a/assets/resources/application/nl.xml b/assets/resources/application/nl.xml
index 83eb27f48..476d6b91d 100644
--- a/assets/resources/application/nl.xml
+++ b/assets/resources/application/nl.xml
@@ -78,6 +78,8 @@
+
+
diff --git a/assets/resources/application/ru.xml b/assets/resources/application/ru.xml
index 6c31803c2..302f6300a 100644
--- a/assets/resources/application/ru.xml
+++ b/assets/resources/application/ru.xml
@@ -77,8 +77,10 @@
-
-
+
+
+
+
diff --git a/assets/resources/application/th.xml b/assets/resources/application/th.xml
index fcb07a137..f6ace5204 100644
--- a/assets/resources/application/th.xml
+++ b/assets/resources/application/th.xml
@@ -78,6 +78,8 @@
+
+
diff --git a/assets/resources/application/uk.xml b/assets/resources/application/uk.xml
index ab0643a90..ea1bf9e94 100644
--- a/assets/resources/application/uk.xml
+++ b/assets/resources/application/uk.xml
@@ -78,6 +78,8 @@
+
+
diff --git a/assets/resources/application/vi.xml b/assets/resources/application/vi.xml
index 6237ce480..297ec9b36 100644
--- a/assets/resources/application/vi.xml
+++ b/assets/resources/application/vi.xml
@@ -78,6 +78,8 @@
+
+
diff --git a/assets/resources/application/zh.xml b/assets/resources/application/zh.xml
index f78bef5e9..41a322754 100644
--- a/assets/resources/application/zh.xml
+++ b/assets/resources/application/zh.xml
@@ -78,6 +78,8 @@
+
+
diff --git a/src/org/geometerplus/android/fbreader/network/TopupActions.java b/src/org/geometerplus/android/fbreader/network/TopupActions.java
index 6cd29a950..b6cb41e5c 100644
--- a/src/org/geometerplus/android/fbreader/network/TopupActions.java
+++ b/src/org/geometerplus/android/fbreader/network/TopupActions.java
@@ -33,6 +33,7 @@ class TopupActions extends NetworkTreeActions {
public static final int TOPUP_VIA_SMS_ITEM_ID = 0;
public static final int TOPUP_VIA_BROWSER_ITEM_ID = 1;
public static final int TOPUP_VIA_CREDIT_CARD_ITEM_ID = 2;
+ public static final int TOPUP_VIA_SELF_SERVICE_ITEM_ID = 3;
@Override
public boolean canHandleTree(NetworkTree tree) {
@@ -47,12 +48,15 @@ class TopupActions extends NetworkTreeActions {
void buildContextMenu(Activity activity, ContextMenu menu, INetworkLink link) {
menu.setHeaderTitle(getTitleValue("topupTitle"));
- if (Util.isCreditCardTopupSupported(activity, link)) {
+ if (Util.isTopupSupported(activity, link, Util.CREDIT_CARD_TOPUP_ACTION)) {
addMenuItem(menu, TOPUP_VIA_CREDIT_CARD_ITEM_ID, "topupViaCreditCard");
}
- if (Util.isSmsTopupSupported(activity, link)) {
+ if (Util.isTopupSupported(activity, link, Util.SMS_TOPUP_ACTION)) {
addMenuItem(menu, TOPUP_VIA_SMS_ITEM_ID, "topupViaSms");
}
+ if (Util.isTopupSupported(activity, link, Util.SELF_SERVICE_KIOSK_TOPUP_ACTION)) {
+ addMenuItem(menu, TOPUP_VIA_SELF_SERVICE_ITEM_ID, "topupViaSelfServiceKiosk");
+ }
if (Util.isBrowserTopupSupported(activity, link)) {
addMenuItem(menu, TOPUP_VIA_BROWSER_ITEM_ID, "topupViaBrowser");
}
@@ -63,13 +67,15 @@ class TopupActions extends NetworkTreeActions {
return getDefaultActionCode(activity, ((TopUpTree)tree).Item.Link);
}
private int getDefaultActionCode(Activity activity, INetworkLink link) {
- final boolean sms = Util.isSmsTopupSupported(activity, link);
final boolean browser = Util.isBrowserTopupSupported(activity, link);
- final boolean creditCard = Util.isCreditCardTopupSupported(activity, link);
+ final boolean sms = Util.isTopupSupported(activity, link, Util.SMS_TOPUP_ACTION);
+ final boolean creditCard = Util.isTopupSupported(activity, link, Util.CREDIT_CARD_TOPUP_ACTION);
+ final boolean selfService = Util.isTopupSupported(activity, link, Util.SELF_SERVICE_KIOSK_TOPUP_ACTION);
final int count =
(sms ? 1 : 0) +
(browser ? 1 : 0) +
- (creditCard ? 1 : 0);
+ (creditCard ? 1 : 0) +
+ (selfService ? 1 : 0);
if (count > 1) {
return TREE_SHOW_CONTEXT_MENU;
@@ -77,6 +83,8 @@ class TopupActions extends NetworkTreeActions {
return TOPUP_VIA_SMS_ITEM_ID;
} else if (creditCard) {
return TOPUP_VIA_CREDIT_CARD_ITEM_ID;
+ } else if (selfService) {
+ return TOPUP_VIA_SELF_SERVICE_ITEM_ID;
} else /* if (browser) */ {
return TOPUP_VIA_BROWSER_ITEM_ID;
}
@@ -107,13 +115,16 @@ class TopupActions extends NetworkTreeActions {
Runnable topupRunnable = null;
switch (actionCode) {
case TOPUP_VIA_SMS_ITEM_ID:
- topupRunnable = smsTopupRunnable(activity, link);
+ topupRunnable = topupRunnable(activity, link, Util.SMS_TOPUP_ACTION);
break;
case TOPUP_VIA_BROWSER_ITEM_ID:
topupRunnable = browserTopupRunnable(activity, link);
break;
case TOPUP_VIA_CREDIT_CARD_ITEM_ID:
- topupRunnable = creditCardTopupRunnable(activity, link);
+ topupRunnable = topupRunnable(activity, link, Util.CREDIT_CARD_TOPUP_ACTION);
+ break;
+ case TOPUP_VIA_SELF_SERVICE_ITEM_ID:
+ topupRunnable = topupRunnable(activity, link, Util.SELF_SERVICE_KIOSK_TOPUP_ACTION);
break;
}
@@ -135,18 +146,10 @@ class TopupActions extends NetworkTreeActions {
};
}
- private static Runnable smsTopupRunnable(final Activity activity, final INetworkLink link) {
+ private static Runnable topupRunnable(final Activity activity, final INetworkLink link, final String action) {
return new Runnable() {
public void run() {
- Util.runSmsTopupDialog(activity, link);
- }
- };
- }
-
- private static Runnable creditCardTopupRunnable(final Activity activity, final INetworkLink link) {
- return new Runnable() {
- public void run() {
- Util.runCreditCardTopupDialog(activity, link);
+ Util.runTopupDialog(activity, link, action);
}
};
}
diff --git a/src/org/geometerplus/android/fbreader/network/Util.java b/src/org/geometerplus/android/fbreader/network/Util.java
index 60f243ce3..405190475 100644
--- a/src/org/geometerplus/android/fbreader/network/Util.java
+++ b/src/org/geometerplus/android/fbreader/network/Util.java
@@ -38,10 +38,12 @@ import org.geometerplus.android.util.PackageUtil;
abstract class Util implements UserRegistrationConstants {
private static final String REGISTRATION_ACTION =
"android.fbreader.action.NETWORK_LIBRARY_REGISTER";
- private static final String SMS_TOPUP_ACTION =
+ static final String SMS_TOPUP_ACTION =
"android.fbreader.action.NETWORK_LIBRARY_SMS_REFILLING";
- private static final String CREDIT_CARD_TOPUP_ACTION =
+ static final String CREDIT_CARD_TOPUP_ACTION =
"android.fbreader.action.NETWORK_LIBRARY_CREDIT_CARD_TOPUP";
+ static final String SELF_SERVICE_KIOSK_TOPUP_ACTION =
+ "android.fbreader.action.NETWORK_LIBRARY_SELF_SERVICE_KIOSK_TOPUP";
private static boolean testService(Activity activity, String action, String url) {
return url != null && PackageUtil.canBeStarted(activity, new Intent(action, Uri.parse(url)), true);
@@ -88,35 +90,20 @@ abstract class Util implements UserRegistrationConstants {
static boolean isTopupSupported(Activity activity, INetworkLink link) {
return
isBrowserTopupSupported(activity, link) ||
- isCreditCardTopupSupported(activity, link) ||
- isSmsTopupSupported(activity, link);
+ isTopupSupported(activity, link, SMS_TOPUP_ACTION) ||
+ isTopupSupported(activity, link, CREDIT_CARD_TOPUP_ACTION) ||
+ isTopupSupported(activity, link, SELF_SERVICE_KIOSK_TOPUP_ACTION);
}
- static boolean isSmsTopupSupported(Activity activity, INetworkLink link) {
+ static boolean isTopupSupported(Activity activity, INetworkLink link, String action) {
return testService(
activity,
- SMS_TOPUP_ACTION,
+ action,
link.getUrlInfo(INetworkLink.URL_MAIN).URL
);
}
- static boolean isCreditCardTopupSupported(Activity activity, INetworkLink link) {
- return testService(
- activity,
- CREDIT_CARD_TOPUP_ACTION,
- link.getUrlInfo(INetworkLink.URL_MAIN).URL
- );
- }
-
- static void runSmsTopupDialog(Activity activity, INetworkLink link) {
- runTopupDialog(activity, link, SMS_TOPUP_ACTION);
- }
-
- static void runCreditCardTopupDialog(Activity activity, INetworkLink link) {
- runTopupDialog(activity, link, CREDIT_CARD_TOPUP_ACTION);
- }
-
- private static void runTopupDialog(Activity activity, INetworkLink link, String action) {
+ static void runTopupDialog(Activity activity, INetworkLink link, String action) {
try {
final Intent intent = new Intent(
action,