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.
This commit is contained in:
Guillaume Beraudo 2013-06-05 11:19:56 +02:00
parent e4d6abc4a2
commit 1f37df03b9
4 changed files with 65 additions and 34 deletions

View file

@ -11,6 +11,7 @@
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/> <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry kind="lib" path="libs/android-support-v4.jar"/> <classpathentry kind="lib" path="libs/android-support-v4.jar"/>
<classpathentry kind="lib" path="libs/gcm.jar"/> <classpathentry exported="true" kind="lib" path="libs/gcm.jar"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry kind="output" path="bin/classes"/> <classpathentry kind="output" path="bin/classes"/>
</classpath> </classpath>

View file

@ -19,6 +19,9 @@
<bool name="hide_camera_settings">false</bool> <bool name="hide_camera_settings">false</bool>
<bool name="replace_wizard_with_old_interface">false</bool> <bool name="replace_wizard_with_old_interface">false</bool>
<bool name="hide_wizard">false</bool> <bool name="hide_wizard">false</bool>
<string name="setup_forced_proxy"></string>
<bool name="setup_cancel_move_to_back">false</bool>
<bool name="setup_use_linphone_as_first_fragment">false</bool>
<bool name="hide_linphone_accounts_wizard">false</bool> <bool name="hide_linphone_accounts_wizard">false</bool>
<bool name="hide_generic_accounts_wizard">false</bool> <bool name="hide_generic_accounts_wizard">false</bool>
<bool name="hide_accounts">false</bool> <bool name="hide_accounts">false</bool>

View file

@ -30,7 +30,7 @@ import android.preference.PreferenceManager;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction; import android.support.v4.app.FragmentTransaction;
import android.view.KeyEvent; import android.text.TextUtils;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
@ -42,8 +42,9 @@ import android.widget.Toast;
public class SetupActivity extends FragmentActivity implements OnClickListener { public class SetupActivity extends FragmentActivity implements OnClickListener {
private static SetupActivity instance; private static SetupActivity instance;
private RelativeLayout back, next, cancel; private RelativeLayout back, next, cancel;
private SetupFragments currentFragment; private SetupFragment currentFragment;
private SharedPreferences mPref; private SharedPreferences mPref;
private SetupFragment firstFragment;
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -53,14 +54,13 @@ public class SetupActivity extends FragmentActivity implements OnClickListener {
} }
setContentView(R.layout.setup); 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 (findViewById(R.id.fragmentContainer) != null) {
if (savedInstanceState == null) { if (savedInstanceState == null) {
WelcomeFragment welcomeFragment = new WelcomeFragment(); display(firstFragment);
getSupportFragmentManager().beginTransaction().add(R.id.fragmentContainer, welcomeFragment).commit();
currentFragment = SetupFragments.WELCOME;
} else { } 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(); int id = v.getId();
if (id == R.id.setup_cancel) { 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) { } else if (id == R.id.setup_next) {
if (currentFragment == SetupFragments.WELCOME) { if (currentFragment == SetupFragment.WELCOME) {
MenuFragment fragment = new MenuFragment(); MenuFragment fragment = new MenuFragment();
changeFragment(fragment); changeFragment(fragment);
currentFragment = SetupFragments.MENU; currentFragment = SetupFragment.MENU;
next.setVisibility(View.GONE); next.setVisibility(View.GONE);
back.setVisibility(View.VISIBLE); back.setVisibility(View.VISIBLE);
} else if (currentFragment == SetupFragments.WIZARD_CONFIRM) { } else if (currentFragment == SetupFragment.WIZARD_CONFIRM) {
finish(); finish();
} }
} else if (id == R.id.setup_back) { } else if (id == R.id.setup_back) {
handleBackEvent(); onBackPressed();
} }
} }
private void handleBackEvent() { @Override
if (currentFragment == SetupFragments.MENU) { 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(); WelcomeFragment fragment = new WelcomeFragment();
changeFragment(fragment); changeFragment(fragment);
currentFragment = SetupFragments.WELCOME; currentFragment = SetupFragment.WELCOME;
next.setVisibility(View.VISIBLE); next.setVisibility(View.VISIBLE);
back.setVisibility(View.GONE); 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(); MenuFragment fragment = new MenuFragment();
changeFragment(fragment); changeFragment(fragment);
currentFragment = SetupFragments.MENU; currentFragment = SetupFragment.MENU;
} else if (currentFragment == SetupFragments.WELCOME) { } else if (currentFragment == SetupFragment.WELCOME) {
finish(); finish();
} }
} }
@ -142,7 +154,7 @@ public class SetupActivity extends FragmentActivity implements OnClickListener {
EchoCancellerCalibrationFragment fragment = new EchoCancellerCalibrationFragment(); EchoCancellerCalibrationFragment fragment = new EchoCancellerCalibrationFragment();
fragment.enableEcCalibrationResultSending(sendEcCalibrationResult); fragment.enableEcCalibrationResultSending(sendEcCalibrationResult);
changeFragment(fragment); changeFragment(fragment);
currentFragment = SetupFragments.ECHO_CANCELLER_CALIBRATION; currentFragment = SetupFragment.ECHO_CANCELLER_CALIBRATION;
back.setVisibility(View.VISIBLE); back.setVisibility(View.VISIBLE);
next.setVisibility(View.GONE); next.setVisibility(View.GONE);
next.setEnabled(false); next.setEnabled(false);
@ -197,22 +209,40 @@ public class SetupActivity extends FragmentActivity implements OnClickListener {
mPref.edit().putBoolean(getString(key), value).commit(); 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() { public void displayLoginGeneric() {
GenericLoginFragment fragment = new GenericLoginFragment(); GenericLoginFragment fragment = new GenericLoginFragment();
changeFragment(fragment); changeFragment(fragment);
currentFragment = SetupFragments.GENERIC_LOGIN; currentFragment = SetupFragment.GENERIC_LOGIN;
} }
public void displayLoginLinphone() { public void displayLoginLinphone() {
LinphoneLoginFragment fragment = new LinphoneLoginFragment(); LinphoneLoginFragment fragment = new LinphoneLoginFragment();
changeFragment(fragment); changeFragment(fragment);
currentFragment = SetupFragments.LINPHONE_LOGIN; currentFragment = SetupFragment.LINPHONE_LOGIN;
} }
public void displayWizard() { public void displayWizard() {
WizardFragment fragment = new WizardFragment(); WizardFragment fragment = new WizardFragment();
changeFragment(fragment); changeFragment(fragment);
currentFragment = SetupFragments.WIZARD; currentFragment = SetupFragment.WIZARD;
} }
public void saveCreatedAccount(String username, String password, String domain) { 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_passwd_key) + newAccountId, password);
writePreference(getString(R.string.pref_domain_key) + newAccountId, domain); 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) { public void displayWizardConfirm(String username) {
@ -258,7 +293,7 @@ public class SetupActivity extends FragmentActivity implements OnClickListener {
fragment.setArguments(extras); fragment.setArguments(extras);
changeFragment(fragment); changeFragment(fragment);
currentFragment = SetupFragments.WIZARD_CONFIRM; currentFragment = SetupFragment.WIZARD_CONFIRM;
next.setVisibility(View.VISIBLE); next.setVisibility(View.VISIBLE);
next.setEnabled(false); next.setEnabled(false);
@ -284,14 +319,6 @@ public class SetupActivity extends FragmentActivity implements OnClickListener {
success(); success();
} }
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
handleBackEvent();
return true;
}
return super.onKeyDown(keyCode, event);
}
public void success() { public void success() {
writePreference(R.string.first_launch_suceeded_once_key, true); writePreference(R.string.first_launch_suceeded_once_key, true);
setResult(Activity.RESULT_OK); setResult(Activity.RESULT_OK);

View file

@ -20,7 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
/** /**
* @author Sylvain Berfini * @author Sylvain Berfini
*/ */
public enum SetupFragments { public enum SetupFragment {
WELCOME, WELCOME,
MENU, MENU,
WIZARD, WIZARD,