From 1f37df03b9fcff5db35c93004610324077ab8853 Mon Sep 17 00:00:00 2001 From: Guillaume Beraudo Date: Wed, 5 Jun 2013 11:19:56 +0200 Subject: [PATCH] Setup activity: customize for direct config + forced proxy Also: - replace deprecated use of onKeyDown - custom for moveToBack Limitations: - still no checking of proper registration before exiting wizard. --- .classpath | 3 +- res/values/non_localizable_custom.xml | 3 + src/org/linphone/setup/SetupActivity.java | 91 ++++++++++++------- ...SetupFragments.java => SetupFragment.java} | 2 +- 4 files changed, 65 insertions(+), 34 deletions(-) rename src/org/linphone/setup/{SetupFragments.java => SetupFragment.java} (97%) diff --git a/.classpath b/.classpath index b95f2cc1d..b6af78b2d 100644 --- a/.classpath +++ b/.classpath @@ -11,6 +11,7 @@ - + + diff --git a/res/values/non_localizable_custom.xml b/res/values/non_localizable_custom.xml index 4b9a5905a..74b725c2b 100644 --- a/res/values/non_localizable_custom.xml +++ b/res/values/non_localizable_custom.xml @@ -19,6 +19,9 @@ false false false + + false + false false false false diff --git a/src/org/linphone/setup/SetupActivity.java b/src/org/linphone/setup/SetupActivity.java index 3c0e5bde8..cac1aa150 100644 --- a/src/org/linphone/setup/SetupActivity.java +++ b/src/org/linphone/setup/SetupActivity.java @@ -30,7 +30,7 @@ import android.preference.PreferenceManager; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; -import android.view.KeyEvent; +import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.view.inputmethod.InputMethodManager; @@ -42,8 +42,9 @@ import android.widget.Toast; public class SetupActivity extends FragmentActivity implements OnClickListener { private static SetupActivity instance; private RelativeLayout back, next, cancel; - private SetupFragments currentFragment; + private SetupFragment currentFragment; private SharedPreferences mPref; + private SetupFragment firstFragment; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -53,14 +54,13 @@ public class SetupActivity extends FragmentActivity implements OnClickListener { } setContentView(R.layout.setup); - + firstFragment = getResources().getBoolean(R.bool.setup_use_linphone_as_first_fragment) ? + SetupFragment.LINPHONE_LOGIN : SetupFragment.WELCOME; if (findViewById(R.id.fragmentContainer) != null) { if (savedInstanceState == null) { - WelcomeFragment welcomeFragment = new WelcomeFragment(); - getSupportFragmentManager().beginTransaction().add(R.id.fragmentContainer, welcomeFragment).commit(); - currentFragment = SetupFragments.WELCOME; + display(firstFragment); } else { - currentFragment = (SetupFragments) savedInstanceState.getSerializable("CurrentFragment"); + currentFragment = (SetupFragment) savedInstanceState.getSerializable("CurrentFragment"); } } @@ -103,36 +103,48 @@ public class SetupActivity extends FragmentActivity implements OnClickListener { int id = v.getId(); if (id == R.id.setup_cancel) { - finish(); + if (getResources().getBoolean(R.bool.setup_cancel_move_to_back)) { + moveTaskToBack(true); + } else { + finish(); + } } else if (id == R.id.setup_next) { - if (currentFragment == SetupFragments.WELCOME) { + if (currentFragment == SetupFragment.WELCOME) { MenuFragment fragment = new MenuFragment(); changeFragment(fragment); - currentFragment = SetupFragments.MENU; + currentFragment = SetupFragment.MENU; next.setVisibility(View.GONE); back.setVisibility(View.VISIBLE); - } else if (currentFragment == SetupFragments.WIZARD_CONFIRM) { + } else if (currentFragment == SetupFragment.WIZARD_CONFIRM) { finish(); } } else if (id == R.id.setup_back) { - handleBackEvent(); + onBackPressed(); } } - - private void handleBackEvent() { - if (currentFragment == SetupFragments.MENU) { + + @Override + public void onBackPressed() { + if (currentFragment == firstFragment) { + if (getResources().getBoolean(R.bool.setup_cancel_move_to_back)) { + moveTaskToBack(true); + } else { + finish(); + } + } + if (currentFragment == SetupFragment.MENU) { WelcomeFragment fragment = new WelcomeFragment(); changeFragment(fragment); - currentFragment = SetupFragments.WELCOME; + currentFragment = SetupFragment.WELCOME; next.setVisibility(View.VISIBLE); back.setVisibility(View.GONE); - } else if (currentFragment == SetupFragments.GENERIC_LOGIN || currentFragment == SetupFragments.LINPHONE_LOGIN || currentFragment == SetupFragments.WIZARD) { + } else if (currentFragment == SetupFragment.GENERIC_LOGIN || currentFragment == SetupFragment.LINPHONE_LOGIN || currentFragment == SetupFragment.WIZARD) { MenuFragment fragment = new MenuFragment(); changeFragment(fragment); - currentFragment = SetupFragments.MENU; - } else if (currentFragment == SetupFragments.WELCOME) { + currentFragment = SetupFragment.MENU; + } else if (currentFragment == SetupFragment.WELCOME) { finish(); } } @@ -142,7 +154,7 @@ public class SetupActivity extends FragmentActivity implements OnClickListener { EchoCancellerCalibrationFragment fragment = new EchoCancellerCalibrationFragment(); fragment.enableEcCalibrationResultSending(sendEcCalibrationResult); changeFragment(fragment); - currentFragment = SetupFragments.ECHO_CANCELLER_CALIBRATION; + currentFragment = SetupFragment.ECHO_CANCELLER_CALIBRATION; back.setVisibility(View.VISIBLE); next.setVisibility(View.GONE); next.setEnabled(false); @@ -197,22 +209,40 @@ public class SetupActivity extends FragmentActivity implements OnClickListener { mPref.edit().putBoolean(getString(key), value).commit(); } + private void display(SetupFragment fragment) { + switch (fragment) { + case WELCOME: + displayWelcome(); + break; + case LINPHONE_LOGIN: + displayLoginLinphone(); + break; + default: + throw new IllegalStateException("Can't handle " + fragment); + } + } + + public void displayWelcome() { + changeFragment(new WelcomeFragment()); + currentFragment = SetupFragment.WELCOME; + } + public void displayLoginGeneric() { GenericLoginFragment fragment = new GenericLoginFragment(); changeFragment(fragment); - currentFragment = SetupFragments.GENERIC_LOGIN; + currentFragment = SetupFragment.GENERIC_LOGIN; } public void displayLoginLinphone() { LinphoneLoginFragment fragment = new LinphoneLoginFragment(); changeFragment(fragment); - currentFragment = SetupFragments.LINPHONE_LOGIN; + currentFragment = SetupFragment.LINPHONE_LOGIN; } public void displayWizard() { WizardFragment fragment = new WizardFragment(); changeFragment(fragment); - currentFragment = SetupFragments.WIZARD; + currentFragment = SetupFragment.WIZARD; } public void saveCreatedAccount(String username, String password, String domain) { @@ -248,6 +278,11 @@ public class SetupActivity extends FragmentActivity implements OnClickListener { writePreference(getString(R.string.pref_passwd_key) + newAccountId, password); writePreference(getString(R.string.pref_domain_key) + newAccountId, domain); } + String forcedProxy=getResources().getString(R.string.setup_forced_proxy); + if (!TextUtils.isEmpty(forcedProxy)) { + writePreference(R.string.pref_enable_outbound_proxy_key, true); + writePreference(R.string.pref_proxy_key, forcedProxy); + } } public void displayWizardConfirm(String username) { @@ -258,7 +293,7 @@ public class SetupActivity extends FragmentActivity implements OnClickListener { fragment.setArguments(extras); changeFragment(fragment); - currentFragment = SetupFragments.WIZARD_CONFIRM; + currentFragment = SetupFragment.WIZARD_CONFIRM; next.setVisibility(View.VISIBLE); next.setEnabled(false); @@ -284,14 +319,6 @@ public class SetupActivity extends FragmentActivity implements OnClickListener { success(); } - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK) { - handleBackEvent(); - return true; - } - return super.onKeyDown(keyCode, event); - } - public void success() { writePreference(R.string.first_launch_suceeded_once_key, true); setResult(Activity.RESULT_OK); diff --git a/src/org/linphone/setup/SetupFragments.java b/src/org/linphone/setup/SetupFragment.java similarity index 97% rename from src/org/linphone/setup/SetupFragments.java rename to src/org/linphone/setup/SetupFragment.java index afd878dc4..52e9f990a 100644 --- a/src/org/linphone/setup/SetupFragments.java +++ b/src/org/linphone/setup/SetupFragment.java @@ -20,7 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /** * @author Sylvain Berfini */ -public enum SetupFragments { +public enum SetupFragment { WELCOME, MENU, WIZARD,