diff --git a/ChangeLog b/ChangeLog
index 0263d398e..5fd8a65c8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
===== 1.0.10 (??? ??, 2011) =====
* Fixed book downloading service (book-by-link-downloading works again)
+* Old authentication dialog has gone
===== 1.0.9 (Apr 23, 2011) =====
* HttpConnection => HttpClient (that fixes a bug in SSL connection)
diff --git a/default.properties b/default.properties
index 401f269ca..513f21f10 100644
--- a/default.properties
+++ b/default.properties
@@ -10,4 +10,4 @@
# Project target.
target=android-8
java.encoding=utf-8
-#proguard.config=proguard.cfg
+proguard.config=proguard.cfg
diff --git a/res/layout/network_authentication_dialog.xml b/res/layout/network_authentication_dialog.xml
deleted file mode 100644
index fc0c69fd1..000000000
--- a/res/layout/network_authentication_dialog.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/org/geometerplus/android/fbreader/network/AuthenticationActivity.java b/src/org/geometerplus/android/fbreader/network/AuthenticationActivity.java
index 8aaf036ca..5bf3a9971 100644
--- a/src/org/geometerplus/android/fbreader/network/AuthenticationActivity.java
+++ b/src/org/geometerplus/android/fbreader/network/AuthenticationActivity.java
@@ -39,9 +39,7 @@ public class AuthenticationActivity extends Activity {
final static String ERROR_KEY = "error";
final static String SHOW_SIGNUP_LINK_KEY = "showSignupLink";
- final static int CANCEL_RESULT_CODE = 0;
- final static int OK_RESULT_CODE = 1;
- final static int SIGNUP_RESULT_CODE = 2;
+ final static int RESULT_SIGNUP = RESULT_FIRST_USER;
private ZLResource myResource;
@@ -49,7 +47,7 @@ public class AuthenticationActivity extends Activity {
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
Thread.setDefaultUncaughtExceptionHandler(new org.geometerplus.zlibrary.ui.android.library.UncaughtExceptionHandler(this));
- setResult(CANCEL_RESULT_CODE);
+ setResult(RESULT_CANCELED);
setContentView(R.layout.authentication);
final Intent intent = getIntent();
@@ -98,7 +96,7 @@ public class AuthenticationActivity extends Activity {
signupView.setText(myResource.getResource("register").getValue());
signupView.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
- setResult(SIGNUP_RESULT_CODE);
+ setResult(RESULT_SIGNUP);
finish();
}
});
@@ -121,7 +119,7 @@ public class AuthenticationActivity extends Activity {
PASSWORD_KEY,
findTextView(R.id.authentication_password).getText().toString()
);
- setResult(OK_RESULT_CODE, data);
+ setResult(RESULT_OK, data);
finish();
}
});
diff --git a/src/org/geometerplus/android/fbreader/network/AuthenticationDialog.java b/src/org/geometerplus/android/fbreader/network/AuthenticationDialog.java
deleted file mode 100644
index c1ffc68e3..000000000
--- a/src/org/geometerplus/android/fbreader/network/AuthenticationDialog.java
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Copyright (C) 2010-2011 Geometer Plus
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- */
-
-package org.geometerplus.android.fbreader.network;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.os.Handler;
-import android.os.Message;
-import android.view.View;
-import android.widget.TextView;
-
-import org.geometerplus.zlibrary.core.resources.ZLResource;
-import org.geometerplus.zlibrary.core.network.ZLNetworkException;
-
-import org.geometerplus.zlibrary.ui.android.R;
-
-import org.geometerplus.fbreader.network.INetworkLink;
-import org.geometerplus.fbreader.network.NetworkLibrary;
-import org.geometerplus.fbreader.network.authentication.NetworkAuthenticationManager;
-
-import org.geometerplus.android.util.UIUtil;
-
-class AuthenticationDialog {
- private static AuthenticationDialog ourDialog;
-
- public static AuthenticationDialog getDialog() {
- if (ourDialog == null) {
- ourDialog = new AuthenticationDialog();
- }
- return ourDialog;
- }
-
- private class DialogHandler extends Handler {
- @Override
- public void handleMessage(Message message) {
- if (!NetworkView.Instance().isInitialized()) {
- return;
- }
- final NetworkLibrary library = NetworkLibrary.Instance();
- library.invalidateVisibility();
- library.synchronize();
- NetworkView.Instance().fireModelChanged();
- if (message.what == -1) {
- myErrorMessage = (String)message.obj;
- myActivity.showDialog(0);
- } else if (message.what == 1) {
- if (myOnSuccessRunnable != null) {
- myOnSuccessRunnable.run();
- }
- }
- }
- };
-
-
- private final ZLResource myResource =
- ZLResource.resource("dialog").getResource("AuthenticationDialog");
-
- private INetworkLink myLink;
- private String myErrorMessage;
- private Runnable myOnSuccessRunnable;
- private Activity myActivity;
-
- private final DialogHandler myHandler = new DialogHandler();
-
- public static void show(Activity activity, INetworkLink link, Runnable onSuccessRunnable) {
- final NetworkAuthenticationManager mgr = link.authenticationManager();
-
- final Intent intent = new Intent(activity, AuthenticationActivity.class);
- intent.putExtra(AuthenticationActivity.USERNAME_KEY, mgr.UserNameOption.getValue());
- if (Util.isRegistrationSupported(activity, link)) {
- intent.putExtra(AuthenticationActivity.SHOW_SIGNUP_LINK_KEY, true);
- }
- //getDialog().showInternal(activity, link, onSuccessRunnable);
- activity.startActivityForResult(intent, NetworkBaseActivity.CUSTOM_AUTHENTICATION_CODE);
- }
-
- private void showInternal(Activity activity, INetworkLink link, Runnable onSuccessRunnable) {
- myLink = link;
- myErrorMessage = null;
- myOnSuccessRunnable = onSuccessRunnable;
- activity.showDialog(0);
- }
-
- private void sendSuccess() {
- myHandler.sendMessage(myHandler.obtainMessage(1, null));
- }
-
- private void sendCancel() {
- myHandler.sendMessage(myHandler.obtainMessage(0, null));
- }
-
- private void sendError(String message) {
- myHandler.sendMessage(myHandler.obtainMessage(-1, message));
- }
-
- private View createLayout() {
- final View layout = myActivity.getLayoutInflater().inflate(R.layout.network_authentication_dialog, null);
-
- ((TextView)layout.findViewById(R.id.network_authentication_login_text)).setText(myResource.getResource("login").getValue());
- ((TextView)layout.findViewById(R.id.network_authentication_password_text)).setText(myResource.getResource("password").getValue());
-
- final TextView registerText = (TextView)layout.findViewById(R.id.network_authentication_register);
- registerText.setText(myResource.getResource("register").getValue());
- registerText.setOnClickListener(new View.OnClickListener() {
- public void onClick(View view) {
- if (Util.isRegistrationSupported(myActivity, myLink)) {
- myActivity.dismissDialog(0);
- Util.runRegistrationDialog(myActivity, myLink);
- }
- }
- });
- return layout;
- }
-
- private void onPositive(DialogInterface dialog) {
- AlertDialog alert = (AlertDialog)dialog;
- final String login = ((TextView)alert.findViewById(R.id.network_authentication_login)).getText().toString().trim();
- final String password = ((TextView)alert.findViewById(R.id.network_authentication_password)).getText().toString();
-
- if (login.length() == 0) {
- final String err = myResource.getResource("loginIsEmpty").getValue();
- sendError(err);
- return;
- }
-
- final NetworkAuthenticationManager mgr = myLink.authenticationManager();
- mgr.UserNameOption.setValue(login);
- final Runnable runnable = new Runnable() {
- public void run() {
- try {
- mgr.authorise(password);
- if (mgr.needsInitialization()) {
- mgr.initialize();
- }
- } catch (ZLNetworkException e) {
- mgr.logOut();
- sendError(e.getMessage());
- return;
- }
- sendSuccess();
- }
- };
- UIUtil.wait("authentication", runnable, myActivity);
- }
-
- private void onNegative(DialogInterface dialog) {
- final NetworkAuthenticationManager mgr = myLink.authenticationManager();
- final Runnable runnable = new Runnable() {
- public void run() {
- if (mgr.mayBeAuthorised(false)) {
- mgr.logOut();
- sendCancel();
- }
- }
- };
- UIUtil.wait("signOut", runnable, myActivity);
- }
-
- public final Dialog createDialog(final Activity activity) {
- myActivity = activity;
- final DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- if (which == DialogInterface.BUTTON_POSITIVE) {
- onPositive(dialog);
- } else {
- onNegative(dialog);
- }
- }
- };
-
- final View layout = createLayout();
- final ZLResource buttonResource = ZLResource.resource("dialog").getResource("button");
- return new AlertDialog.Builder(activity)
- .setView(layout)
- .setTitle(myResource.getResource("title").getValue())
- .setPositiveButton(buttonResource.getResource("ok").getValue(), listener)
- .setNegativeButton(buttonResource.getResource("cancel").getValue(), listener)
- .setOnCancelListener(new DialogInterface.OnCancelListener() {
- public void onCancel(DialogInterface dialog) {
- onNegative(dialog);
- }
- })
- .create();
- }
-
- public final void prepareDialog(final Activity activity, Dialog dialog) {
- myActivity = activity;
-
- final NetworkAuthenticationManager mgr = myLink.authenticationManager();
-
- ((TextView)dialog.findViewById(R.id.network_authentication_login)).setText(mgr.UserNameOption.getValue());
- ((TextView)dialog.findViewById(R.id.network_authentication_password)).setText("");
-
- final TextView error = (TextView)dialog.findViewById(R.id.network_authentication_error);
- if (myErrorMessage == null) {
- error.setVisibility(View.GONE);
- error.setText("");
- } else {
- error.setVisibility(View.VISIBLE);
- error.setText(myErrorMessage);
- }
-
- dialog.findViewById(R.id.network_authentication_register).setVisibility(Util.isRegistrationSupported(myActivity, myLink) ? View.VISIBLE : View.GONE);
-
- View dlgView = dialog.findViewById(R.id.network_authentication_dialog);
- dlgView.invalidate();
- dlgView.requestLayout();
- }
-}
diff --git a/src/org/geometerplus/android/fbreader/network/NetworkBookActions.java b/src/org/geometerplus/android/fbreader/network/NetworkBookActions.java
index 4e847e66e..4a53eccce 100644
--- a/src/org/geometerplus/android/fbreader/network/NetworkBookActions.java
+++ b/src/org/geometerplus/android/fbreader/network/NetworkBookActions.java
@@ -456,6 +456,11 @@ class NetworkBookActions extends NetworkTreeActions {
.create().show();
}
};
+ final Runnable buyOnUiRunnable = new Runnable() {
+ public void run() {
+ activity.runOnUiThread(buyRunnable);
+ }
+ };
try {
if (mgr.isAuthorised(true)) {
@@ -464,7 +469,7 @@ class NetworkBookActions extends NetworkTreeActions {
}
} catch (ZLNetworkException e) {
}
- AuthenticationDialog.show(activity, book.Link, buyRunnable);
+ Util.runAuthenticationDialog(activity, book.Link, null, buyOnUiRunnable);
}
private static void doBuyInBrowser(Activity activity, final NetworkBookItem book) {
diff --git a/src/org/geometerplus/android/fbreader/network/NetworkBookInfoActivity.java b/src/org/geometerplus/android/fbreader/network/NetworkBookInfoActivity.java
index 272921036..13addfd63 100644
--- a/src/org/geometerplus/android/fbreader/network/NetworkBookInfoActivity.java
+++ b/src/org/geometerplus/android/fbreader/network/NetworkBookInfoActivity.java
@@ -347,28 +347,22 @@ public class NetworkBookInfoActivity extends Activity implements NetworkView.Eve
}
public void onModelChanged() {
- updateView();
+ runOnUiThread(new Runnable() {
+ public void run() {
+ updateView();
+ }
+ });
}
@Override
- protected Dialog onCreateDialog(int id) {
- if (!NetworkView.Instance().isInitialized()) {
- return null;
- }
- final AuthenticationDialog dlg = AuthenticationDialog.getDialog();
- if (dlg != null) {
- return dlg.createDialog(this);
- }
- return null;
- }
-
- @Override
- protected void onPrepareDialog(int id, Dialog dialog) {
- super.onPrepareDialog(id, dialog);
-
- final AuthenticationDialog dlg = AuthenticationDialog.getDialog();
- if (dlg != null) {
- dlg.prepareDialog(this, dialog);
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ switch (requestCode) {
+ case NetworkBaseActivity.CUSTOM_AUTHENTICATION_CODE:
+ Util.processCustomAuthentication(this, myBook.Link, resultCode, data);
+ break;
+ case NetworkBaseActivity.SIGNUP_CODE:
+ Util.processSignup(myBook.Link, resultCode, data);
+ break;
}
}
}
diff --git a/src/org/geometerplus/android/fbreader/network/NetworkCatalogActions.java b/src/org/geometerplus/android/fbreader/network/NetworkCatalogActions.java
index e37d0feff..dcfb31726 100644
--- a/src/org/geometerplus/android/fbreader/network/NetworkCatalogActions.java
+++ b/src/org/geometerplus/android/fbreader/network/NetworkCatalogActions.java
@@ -213,7 +213,7 @@ class NetworkCatalogActions extends NetworkTreeActions {
case B3_TRUE:
return false;
case B3_UNDEFINED:
- AuthenticationDialog.show(activity, item.Link, new Runnable() {
+ Util.runAuthenticationDialog(activity, item.Link, null, new Runnable() {
public void run() {
if (item.getVisibility() != ZLBoolean3.B3_TRUE) {
return;
@@ -258,7 +258,7 @@ class NetworkCatalogActions extends NetworkTreeActions {
doReloadCatalog(activity, catalogTree);
return true;
case SIGNIN_ITEM_ID:
- AuthenticationDialog.show(activity, item.Link, null);
+ Util.runAuthenticationDialog(activity, item.Link, null, null);
return true;
case SIGNUP_ITEM_ID:
Util.runRegistrationDialog(activity, item.Link);
diff --git a/src/org/geometerplus/android/fbreader/network/NetworkCatalogActivity.java b/src/org/geometerplus/android/fbreader/network/NetworkCatalogActivity.java
index 128bcdcc0..f9ef3186d 100644
--- a/src/org/geometerplus/android/fbreader/network/NetworkCatalogActivity.java
+++ b/src/org/geometerplus/android/fbreader/network/NetworkCatalogActivity.java
@@ -32,15 +32,12 @@ import org.apache.http.auth.UsernamePasswordCredentials;
import org.geometerplus.zlibrary.core.network.ZLNetworkException;
import org.geometerplus.zlibrary.core.network.ZLNetworkManager;
import org.geometerplus.zlibrary.core.options.ZLStringOption;
-import org.geometerplus.zlibrary.core.resources.ZLResource;
import org.geometerplus.fbreader.network.*;
import org.geometerplus.fbreader.network.authentication.NetworkAuthenticationManager;
import org.geometerplus.fbreader.network.tree.*;
import org.geometerplus.fbreader.tree.FBTree;
-import org.geometerplus.android.util.UIUtil;
-
public class NetworkCatalogActivity extends NetworkBaseActivity implements UserRegistrationConstants {
private NetworkTree myTree;
private volatile boolean myInProgress;
@@ -144,7 +141,7 @@ public class NetworkCatalogActivity extends NetworkBaseActivity implements UserR
switch (requestCode) {
case BASIC_AUTHENTICATION_CODE:
synchronized (myCredentialsCreator) {
- if (resultCode == AuthenticationActivity.OK_RESULT_CODE && data != null) {
+ if (resultCode == AuthenticationActivity.RESULT_OK && data != null) {
myCredentialsCreator.myUsername =
data.getStringExtra(AuthenticationActivity.USERNAME_KEY);
myCredentialsCreator.myPassword =
@@ -154,103 +151,16 @@ public class NetworkCatalogActivity extends NetworkBaseActivity implements UserR
}
break;
case CUSTOM_AUTHENTICATION_CODE:
- processCustomAuthentication(
+ Util.processCustomAuthentication(
this, ((NetworkCatalogTree)myTree).Item.Link, resultCode, data
);
break;
case SIGNUP_CODE:
- processSignup(((NetworkCatalogTree)myTree).Item.Link, resultCode, data);
+ Util.processSignup(((NetworkCatalogTree)myTree).Item.Link, resultCode, data);
break;
}
}
- static void runAuthenticationDialog(Activity activity, INetworkLink link, String error) {
- final NetworkAuthenticationManager mgr = link.authenticationManager();
-
- final Intent intent = new Intent(activity, AuthenticationActivity.class);
- intent.putExtra(AuthenticationActivity.USERNAME_KEY, mgr.UserNameOption.getValue());
- if (Util.isRegistrationSupported(activity, link)) {
- intent.putExtra(AuthenticationActivity.SHOW_SIGNUP_LINK_KEY, true);
- }
- intent.putExtra(AuthenticationActivity.ERROR_KEY, error);
- activity.startActivityForResult(intent, NetworkBaseActivity.CUSTOM_AUTHENTICATION_CODE);
- }
-
- static void processCustomAuthentication(final Activity activity, final INetworkLink link, int resultCode, Intent data) {
- switch (resultCode) {
- case AuthenticationActivity.CANCEL_RESULT_CODE:
- UIUtil.wait(
- "signOut",
- new Runnable() {
- public void run() {
- final NetworkAuthenticationManager mgr =
- link.authenticationManager();
- if (mgr.mayBeAuthorised(false)) {
- mgr.logOut();
- }
- final NetworkLibrary library = NetworkLibrary.Instance();
- library.invalidateVisibility();
- library.synchronize();
- NetworkView.Instance().fireModelChanged();
- }
- },
- activity
- );
- break;
- case AuthenticationActivity.OK_RESULT_CODE:
- {
- final ZLResource resource =
- ZLResource.resource("dialog").getResource("AuthenticationDialog");
- final String username =
- data.getStringExtra(AuthenticationActivity.USERNAME_KEY);
- final String password =
- data.getStringExtra(AuthenticationActivity.PASSWORD_KEY);
- if (username.length() == 0) {
- runAuthenticationDialog(
- activity, link,
- resource.getResource("loginIsEmpty").getValue()
- );
- }
- final NetworkAuthenticationManager mgr = link.authenticationManager();
- mgr.UserNameOption.setValue(username);
- final Runnable runnable = new Runnable() {
- public void run() {
- try {
- mgr.authorise(password);
- if (mgr.needsInitialization()) {
- mgr.initialize();
- }
- } catch (ZLNetworkException e) {
- mgr.logOut();
- runAuthenticationDialog(activity, link, e.getMessage());
- return;
- }
- final NetworkLibrary library = NetworkLibrary.Instance();
- library.invalidateVisibility();
- library.synchronize();
- NetworkView.Instance().fireModelChanged();
- }
- };
- UIUtil.wait("authentication", runnable, activity);
- break;
- }
- case AuthenticationActivity.SIGNUP_RESULT_CODE:
- Util.runRegistrationDialog(activity, link);
- break;
- }
- }
-
-
- static void processSignup(INetworkLink link, int resultCode, Intent data) {
- if (resultCode == RESULT_OK && data != null) {
- try {
- Util.runAfterRegistration(link.authenticationManager(), data);
- } catch (ZLNetworkException e) {
- // TODO: show an error message
- }
- }
- }
-
private final void setupTitle() {
String title = null;
final NetworkView networkView = NetworkView.Instance();
diff --git a/src/org/geometerplus/android/fbreader/network/TopupActions.java b/src/org/geometerplus/android/fbreader/network/TopupActions.java
index b6cb41e5c..f38ef3c05 100644
--- a/src/org/geometerplus/android/fbreader/network/TopupActions.java
+++ b/src/org/geometerplus/android/fbreader/network/TopupActions.java
@@ -159,10 +159,10 @@ class TopupActions extends NetworkTreeActions {
if (mgr.mayBeAuthorised(false)) {
action.run();
} else {
- AuthenticationDialog.show(activity, link, new Runnable() {
+ Util.runAuthenticationDialog(activity, link, null, new Runnable() {
public void run() {
if (mgr.mayBeAuthorised(false)) {
- action.run();
+ activity.runOnUiThread(action);
}
}
});
diff --git a/src/org/geometerplus/android/fbreader/network/Util.java b/src/org/geometerplus/android/fbreader/network/Util.java
index 327867e9e..901ddcf67 100644
--- a/src/org/geometerplus/android/fbreader/network/Util.java
+++ b/src/org/geometerplus/android/fbreader/network/Util.java
@@ -19,7 +19,7 @@
package org.geometerplus.android.fbreader.network;
-import java.util.Map;
+import java.util.*;
import android.app.Activity;
import android.content.ActivityNotFoundException;
@@ -28,12 +28,14 @@ import android.content.Context;
import android.net.Uri;
import org.geometerplus.zlibrary.core.network.ZLNetworkException;
+import org.geometerplus.zlibrary.core.resources.ZLResource;
import org.geometerplus.fbreader.network.*;
import org.geometerplus.fbreader.network.authentication.NetworkAuthenticationManager;
import org.geometerplus.fbreader.network.tree.NetworkBookTree;
import org.geometerplus.fbreader.network.urlInfo.UrlInfo;
+import org.geometerplus.android.util.UIUtil;
import org.geometerplus.android.util.PackageUtil;
abstract class Util implements UserRegistrationConstants {
@@ -74,16 +76,109 @@ abstract class Util implements UserRegistrationConstants {
}
}
- static void runAfterRegistration(NetworkAuthenticationManager mgr, Intent data) throws ZLNetworkException {
- final String userName = data.getStringExtra(USER_REGISTRATION_USERNAME);
- final String litresSid = data.getStringExtra(USER_REGISTRATION_LITRES_SID);
- mgr.initUser(userName, litresSid);
- if (userName.length() > 0 && litresSid.length() > 0) {
+ private static final Map myAfterRegisrationMap =
+ new HashMap();
+
+ static void runAuthenticationDialog(Activity activity, INetworkLink link, String error, Runnable onSuccess) {
+ final NetworkAuthenticationManager mgr = link.authenticationManager();
+
+ final Intent intent = new Intent(activity, AuthenticationActivity.class);
+ intent.putExtra(AuthenticationActivity.USERNAME_KEY, mgr.UserNameOption.getValue());
+ if (isRegistrationSupported(activity, link)) {
+ intent.putExtra(AuthenticationActivity.SHOW_SIGNUP_LINK_KEY, true);
+ }
+ intent.putExtra(AuthenticationActivity.ERROR_KEY, error);
+ if (onSuccess != null) {
+ myAfterRegisrationMap.put(activity, onSuccess);
+ }
+ activity.startActivityForResult(intent, NetworkBaseActivity.CUSTOM_AUTHENTICATION_CODE);
+ }
+
+ static void processCustomAuthentication(final Activity activity, final INetworkLink link, int resultCode, Intent data) {
+ final Runnable onSuccess = myAfterRegisrationMap.get(activity);
+ myAfterRegisrationMap.remove(activity);
+ switch (resultCode) {
+ case AuthenticationActivity.RESULT_CANCELED:
+ UIUtil.wait(
+ "signOut",
+ new Runnable() {
+ public void run() {
+ final NetworkAuthenticationManager mgr =
+ link.authenticationManager();
+ if (mgr.mayBeAuthorised(false)) {
+ mgr.logOut();
+ }
+ final NetworkLibrary library = NetworkLibrary.Instance();
+ library.invalidateVisibility();
+ library.synchronize();
+ NetworkView.Instance().fireModelChanged();
+ }
+ },
+ activity
+ );
+ break;
+ case AuthenticationActivity.RESULT_OK:
+ {
+ final ZLResource resource =
+ ZLResource.resource("dialog").getResource("AuthenticationDialog");
+ final String username =
+ data.getStringExtra(AuthenticationActivity.USERNAME_KEY);
+ final String password =
+ data.getStringExtra(AuthenticationActivity.PASSWORD_KEY);
+ if (username.length() == 0) {
+ runAuthenticationDialog(
+ activity, link,
+ resource.getResource("loginIsEmpty").getValue(),
+ onSuccess
+ );
+ }
+ final NetworkAuthenticationManager mgr = link.authenticationManager();
+ mgr.UserNameOption.setValue(username);
+ final Runnable runnable = new Runnable() {
+ public void run() {
+ try {
+ mgr.authorise(password);
+ if (mgr.needsInitialization()) {
+ mgr.initialize();
+ }
+ onSuccess.run();
+ } catch (ZLNetworkException e) {
+ mgr.logOut();
+ runAuthenticationDialog(activity, link, e.getMessage(), onSuccess);
+ return;
+ }
+ final NetworkLibrary library = NetworkLibrary.Instance();
+ library.invalidateVisibility();
+ library.synchronize();
+ NetworkView.Instance().fireModelChanged();
+ }
+ };
+ UIUtil.wait("authentication", runnable, activity);
+ break;
+ }
+ case AuthenticationActivity.RESULT_SIGNUP:
+ Util.runRegistrationDialog(activity, link);
+ break;
+ }
+ }
+
+ static void processSignup(INetworkLink link, int resultCode, Intent data) {
+ if (resultCode == Activity.RESULT_OK && data != null) {
try {
- mgr.initialize();
+ final NetworkAuthenticationManager mgr = link.authenticationManager();
+ final String userName = data.getStringExtra(USER_REGISTRATION_USERNAME);
+ final String litresSid = data.getStringExtra(USER_REGISTRATION_LITRES_SID);
+ mgr.initUser(userName, litresSid);
+ if (userName.length() > 0 && litresSid.length() > 0) {
+ try {
+ mgr.initialize();
+ } catch (ZLNetworkException e) {
+ mgr.logOut();
+ throw e;
+ }
+ }
} catch (ZLNetworkException e) {
- mgr.logOut();
- throw e;
+ // TODO: show an error message
}
}
}