From 460f878b691421df7b5d7adc15092ceedbf599be Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 22 Jun 2012 10:35:23 +0200 Subject: [PATCH] Wizard's working + possibility to add detailled user-agent --- res/layout/setup_wizard_confirm.xml | 37 ++++++++-- res/values/strings.xml | 5 +- .../linphone/setup/LinphoneLoginFragment.java | 3 +- src/org/linphone/setup/SetupActivity.java | 12 +++- .../linphone/setup/WizardConfirmFragment.java | 72 ++++++++++++++++--- src/org/linphone/setup/WizardFragment.java | 4 +- 6 files changed, 114 insertions(+), 19 deletions(-) diff --git a/res/layout/setup_wizard_confirm.xml b/res/layout/setup_wizard_confirm.xml index e6e7b43c1..757cf1d9a 100644 --- a/res/layout/setup_wizard_confirm.xml +++ b/res/layout/setup_wizard_confirm.xml @@ -2,12 +2,41 @@ + + + android:paddingTop="40dp" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/setup_validate_account" + android:textColor="@android:color/black" /> + + + + + + + + \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 45db0103e..f32437652 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -307,5 +307,8 @@ confirm password email Create Account -Waiting for account activation +An email has been sent to the address you gave. In order to activate your account, you need to click on the link inside it. Once it is done, come back here and click on the button above. +Check +Your account has not been validated yet. +Your account has been validated. diff --git a/src/org/linphone/setup/LinphoneLoginFragment.java b/src/org/linphone/setup/LinphoneLoginFragment.java index 5f00d8c6c..8f5c3b98b 100644 --- a/src/org/linphone/setup/LinphoneLoginFragment.java +++ b/src/org/linphone/setup/LinphoneLoginFragment.java @@ -53,8 +53,7 @@ public class LinphoneLoginFragment extends Fragment implements OnClickListener { int id = v.getId(); if (id == R.id.setup_apply) { - if (login.getText() == null || login.length() == 0 - || password.getText() == null || password.length() == 0) { + if (login.getText() == null || login.length() == 0 || password.getText() == null || password.length() == 0) { Toast.makeText(getActivity().getApplicationContext(), getString(R.string.first_launch_no_login_password), Toast.LENGTH_LONG).show(); return; } diff --git a/src/org/linphone/setup/SetupActivity.java b/src/org/linphone/setup/SetupActivity.java index 679f464aa..013564aef 100644 --- a/src/org/linphone/setup/SetupActivity.java +++ b/src/org/linphone/setup/SetupActivity.java @@ -187,13 +187,23 @@ public class SetupActivity extends FragmentActivity implements OnClickListener { } } - public void displayWizardConfirm() { + public void displayWizardConfirm(String username) { WizardConfirmFragment fragment = new WizardConfirmFragment(); + + Bundle extras = new Bundle(); + extras.putString("Username", username); + fragment.setArguments(extras); changeFragment(fragment); + currentFragment = SetupFragments.WIZARD_CONFIRM; next.setVisibility(View.VISIBLE); next.setEnabled(false); back.setVisibility(View.GONE); } + + public void isAccountVerified() { + next.setEnabled(true); + Toast.makeText(this, getString(R.string.setup_account_validated), Toast.LENGTH_LONG).show(); + } } diff --git a/src/org/linphone/setup/WizardConfirmFragment.java b/src/org/linphone/setup/WizardConfirmFragment.java index bad6ea4e9..66f2a1434 100644 --- a/src/org/linphone/setup/WizardConfirmFragment.java +++ b/src/org/linphone/setup/WizardConfirmFragment.java @@ -22,34 +22,88 @@ import java.net.URL; import org.linphone.R; import android.os.Bundle; +import android.os.Handler; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; +import android.view.View.OnClickListener; import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.Toast; +import de.timroes.axmlrpc.XMLRPCCallback; import de.timroes.axmlrpc.XMLRPCClient; +import de.timroes.axmlrpc.XMLRPCException; +import de.timroes.axmlrpc.XMLRPCServerException; /** * @author Sylvain Berfini */ public class WizardConfirmFragment extends Fragment { - + private String username; + private Handler mHandler = new Handler(); + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.setup_wizard_confirm, container, false); + username = getArguments().getString("Username"); + + ImageView checkAccount = (ImageView) view.findViewById(R.id.setup_check); + checkAccount.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + isAccountVerified(username); + } + }); + return view; - } + } - private boolean isAccountVerified(String username) { + private void isAccountVerified(String username) { + final Runnable runNotReachable = new Runnable() { + public void run() { + Toast.makeText(getActivity(), getString(R.string.wizard_server_unavailable), Toast.LENGTH_LONG); + } + }; + try { XMLRPCClient client = new XMLRPCClient(new URL(getString(R.string.wizard_url))); - Object resultO = client.call("check_account_validated", "sip:" + username + "@" + getString(R.string.default_domain)); - Integer result = Integer.parseInt(resultO.toString()); - - return result == 1; - } catch(Exception ex) { + + XMLRPCCallback listener = new XMLRPCCallback() { + Runnable runNotOk = new Runnable() { + public void run() { + Toast.makeText(getActivity(), getString(R.string.setup_account_not_validated), Toast.LENGTH_LONG).show(); + } + }; + + Runnable runOk = new Runnable() { + public void run() { + SetupActivity.instance().isAccountVerified(); + } + }; + + public void onResponse(long id, Object result) { + int answer = (Integer) result; + if (answer != 1) { + mHandler.post(runNotOk); + } else { + mHandler.post(runOk); + } + } + + public void onError(long id, XMLRPCException error) { + mHandler.post(runNotReachable); + } + + public void onServerError(long id, XMLRPCServerException error) { + mHandler.post(runNotReachable); + } + }; + client.callAsync(listener, "check_account_validated", "sip:" + username + "@" + getString(R.string.default_domain)); + } + catch(Exception ex) { + mHandler.post(runNotReachable); } - return false; } } diff --git a/src/org/linphone/setup/WizardFragment.java b/src/org/linphone/setup/WizardFragment.java index edb45e752..0989bc21e 100644 --- a/src/org/linphone/setup/WizardFragment.java +++ b/src/org/linphone/setup/WizardFragment.java @@ -172,7 +172,7 @@ public class WizardFragment extends Fragment { Runnable runOk = new Runnable() { public void run() { SetupActivity.instance().saveCreatedAccount(username, password, getString(R.string.default_domain)); - SetupActivity.instance().displayWizardConfirm(); + SetupActivity.instance().displayWizardConfirm(username); } }; @@ -194,7 +194,7 @@ public class WizardFragment extends Fragment { } }; - client.callAsync(listener, "create_account", username, password, email, suscribe ? 1 : 0); + client.callAsync(listener, "create_account_with_useragent", username, password, email, "linphone-wizard-android"); } catch(Exception ex) { mHandler.post(runNotReachable);