From c17eb9046b122ca315a30a5a81177d5a40bee584 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 8 Aug 2012 13:29:14 +0200 Subject: [PATCH] Even better main/settings layout for best display on every screen + fix crazy fragments issue --- res/drawable-hdpi/mark.png | Bin 0 -> 407 bytes res/drawable-mdpi/mark.png | Bin 0 -> 298 bytes res/drawable-xlarge-land-hdpi/mark.png | Bin 0 -> 601 bytes res/layout-hdpi/main.xml | 120 ------------------------- res/layout/main.xml | 60 ++++++++++++- res/layout/settings.xml | 59 +++++++++++- res/layout/status.xml | 22 ++--- res/values/strings.xml | 8 +- src/org/linphone/LinphoneActivity.java | 43 ++++----- src/org/linphone/NetworkManager.java | 4 +- src/org/linphone/StatusFragment.java | 4 +- 11 files changed, 158 insertions(+), 162 deletions(-) create mode 100644 res/drawable-hdpi/mark.png create mode 100644 res/drawable-mdpi/mark.png create mode 100644 res/drawable-xlarge-land-hdpi/mark.png delete mode 100644 res/layout-hdpi/main.xml diff --git a/res/drawable-hdpi/mark.png b/res/drawable-hdpi/mark.png new file mode 100644 index 0000000000000000000000000000000000000000..38aa8a2c5387aaffb8e6852a9eafa7106b707478 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^4M5z?!3HE{XE)7O>#4hILfgu$2UpmRVW$r9Iy66gHf z+|;}h2Ir#G#FEq$h4Rdj3bP0l+XkK DLH1dG literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/mark.png b/res/drawable-mdpi/mark.png new file mode 100644 index 0000000000000000000000000000000000000000..2abe401f21306c2f04beb2bc29402634a398ebbf GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^VL%+t!3HGfacu$#Fct^7J29*~C-V}>VN3FMcVYMs zf(!O8p9~b?EbxddW?*;9R~_YmbgZgIOpf) zrskC}I2WZRmZYXAlxLP?D7bt2281{Ai31h2db&7H7$;vjb?hIQv;UIIC6N#5=* z4F5rJ!QSPQfg+p*9+AZi4BWyX%*Zfnjs#GUy~NYkmHiF}2e*LOyY;cwKq1Kz*N775 z{M_8syb=cIqSVBa)D(sC%#sWRcTeAd@J2pypjBHuT^vIyZoR!~$jHFJad<;x{rLw? z?JiF9!zOVu6s%HZU|?ngAsz`3GDrZS0}YHo1eF-ca*#m59xk+#lZ%R(&&0}l<;XK& PBr|xr`njxgN@xNA!Ci7x literal 0 HcmV?d00001 diff --git a/res/layout-hdpi/main.xml b/res/layout-hdpi/main.xml deleted file mode 100644 index eacf13737..000000000 --- a/res/layout-hdpi/main.xml +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/res/layout/main.xml b/res/layout/main.xml index b908b461b..cefba495d 100644 --- a/res/layout/main.xml +++ b/res/layout/main.xml @@ -5,9 +5,65 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + + + + + + + + + + + + - + + diff --git a/res/layout/settings.xml b/res/layout/settings.xml index 107110dfc..c8cdcd0e4 100644 --- a/res/layout/settings.xml +++ b/res/layout/settings.xml @@ -3,11 +3,66 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + + + + + + + + + + + + + android:layout_height="match_parent" /> - - + + Chat Call Add to contacts - CONNECTED - NOT CONNECTED - CONNECTING - ERROR + Registered + Not Registered + Registration in progress + Registration failed Number or address diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index afda1cf01..dd66776d6 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -60,8 +60,8 @@ import android.support.v4.app.FragmentTransaction; import android.view.KeyEvent; import android.view.OrientationEventListener; import android.view.View; -import android.view.ViewGroup; import android.view.View.OnClickListener; +import android.view.ViewGroup; import android.view.WindowManager; import android.view.animation.AnimationUtils; import android.widget.AdapterView; @@ -107,6 +107,7 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene @Override protected void onCreate(Bundle savedInstanceState) { + FragmentManager.enableDebugLogging(true); super.onCreate(savedInstanceState); if (!LinphoneManager.isInstanciated()) { @@ -124,18 +125,19 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene } setContentView(R.layout.main); + instance = this; initButtons(); - - if (LinphoneManager.isInstanciated()) { - LinphoneManager.addListener(this); - } + + currentFragment = FragmentsAvailable.DIALER; + if (savedInstanceState != null) { + return; + } if (findViewById(R.id.fragmentContainer) != null) { dialerFragment = new DialerFragment(); dialerFragment.setArguments(getIntent().getExtras()); getSupportFragmentManager().beginTransaction() .add(R.id.fragmentContainer, dialerFragment).commit(); - currentFragment = FragmentsAvailable.DIALER; } int missedCalls = LinphoneManager.getLc().getMissedCallsCount(); @@ -150,8 +152,6 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene LinphoneManager.getLc().setDeviceRotation(rotation); mAlwaysChangingPhoneAngle = rotation; - - instance = this; } private void initButtons() { @@ -174,7 +174,7 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene changeCurrentFragment(newFragmentType, extras, false); } - private void changeCurrentFragment(FragmentsAvailable newFragmentType, Bundle extras, boolean withoutAnimation) { + private void changeCurrentFragment(FragmentsAvailable newFragmentType, Bundle extras, boolean withoutAnimation) { if (newFragmentType == currentFragment && newFragmentType != FragmentsAvailable.CHAT) { return; } @@ -241,15 +241,16 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene } } try { - getSupportFragmentManager().popBackStack(newFragmentType.toString(), FragmentManager.POP_BACK_STACK_INCLUSIVE); + getSupportFragmentManager().popBackStackImmediate(newFragmentType.toString(), FragmentManager.POP_BACK_STACK_INCLUSIVE); } catch (java.lang.IllegalStateException e) { } transaction.addToBackStack(newFragmentType.toString()); transaction.replace(R.id.fragmentContainer, newFragment); - transaction.commitAllowingStateLoss(); + getSupportFragmentManager().executePendingTransactions(); + currentFragment = newFragmentType; } @@ -266,9 +267,6 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene transaction.addToBackStack(newFragmentType.toString()); transaction.replace(R.id.fragmentContainer2, newFragment); - - transaction.commitAllowingStateLoss(); - } else { if (!withoutAnimation && !getResources().getBoolean(R.bool.disable_animations) && currentFragment.shouldAnimate()) { if (newFragmentType.isRightOf(currentFragment)) { @@ -282,16 +280,17 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene ll.setVisibility(View.GONE); try { - getSupportFragmentManager().popBackStack(newFragmentType.toString(), FragmentManager.POP_BACK_STACK_INCLUSIVE); + getSupportFragmentManager().popBackStackImmediate(newFragmentType.toString(), FragmentManager.POP_BACK_STACK_INCLUSIVE); } catch (java.lang.IllegalStateException e) { } transaction.addToBackStack(newFragmentType.toString()); transaction.replace(R.id.fragmentContainer, newFragment); - - transaction.commitAllowingStateLoss(); } + transaction.commitAllowingStateLoss(); + getSupportFragmentManager().executePendingTransactions(); + currentFragment = newFragmentType; } @@ -787,13 +786,14 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(resultCode, requestCode, data); if (resultCode == Activity.RESULT_FIRST_USER && requestCode == SETTINGS_ACTIVITY) { if (data.getExtras().getBoolean("Exit", false)) { exit(); } else { FragmentsAvailable newFragment = (FragmentsAvailable) data.getExtras().getSerializable("FragmentToDisplay"); - changeCurrentFragment(newFragment, null, true); selectMenu(newFragment); + changeCurrentFragment(newFragment, null, true); } } else if (requestCode == callActivity) { @@ -804,13 +804,14 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene resetClassicMenuLayoutAndGoBackToCallIfStillRunning(); } } - super.onActivityResult(resultCode, requestCode, data); } @Override - protected void onResume() { + protected void onResume() { super.onResume(); + LinphoneManager.addListener(this); + prepareContactsInBackground(); if (chatStorage != null) { @@ -832,6 +833,8 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene @Override protected void onDestroy() { + LinphoneManager.removeListener(this); + if (chatStorage != null) { chatStorage.close(); chatStorage = null; diff --git a/src/org/linphone/NetworkManager.java b/src/org/linphone/NetworkManager.java index 652f2c970..ae463d504 100644 --- a/src/org/linphone/NetworkManager.java +++ b/src/org/linphone/NetworkManager.java @@ -36,7 +36,9 @@ public class NetworkManager extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); Boolean lNoConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY,false); - LinphoneManager.getInstance().connectivityChanged(cm, lNoConnectivity); + if (LinphoneManager.isInstanciated()) { + LinphoneManager.getInstance().connectivityChanged(cm, lNoConnectivity); + } } } diff --git a/src/org/linphone/StatusFragment.java b/src/org/linphone/StatusFragment.java index a6c126807..79aea185a 100644 --- a/src/org/linphone/StatusFragment.java +++ b/src/org/linphone/StatusFragment.java @@ -175,7 +175,7 @@ public class StatusFragment extends Fragment { private int getStatusIconResource(LinphoneCore.RegistrationState state, boolean isDefaultAccount) { try { - boolean defaultAccountConnected = (isDefaultAccount && LinphoneManager.getLc().getDefaultProxyConfig().isRegistered()) || !isDefaultAccount; + boolean defaultAccountConnected = (isDefaultAccount && LinphoneManager.getLcIfManagerNotDestroyedOrNull().getDefaultProxyConfig().isRegistered()) || !isDefaultAccount; if (state == RegistrationState.RegistrationOk && defaultAccountConnected) { return R.drawable.led_connected; } else if (state == RegistrationState.RegistrationProgress) { @@ -194,7 +194,7 @@ public class StatusFragment extends Fragment { private String getStatusIconText(LinphoneCore.RegistrationState state) { try { - if (state == RegistrationState.RegistrationOk && LinphoneManager.getLc().getDefaultProxyConfig().isRegistered()) { + if (state == RegistrationState.RegistrationOk && LinphoneManager.getLcIfManagerNotDestroyedOrNull().getDefaultProxyConfig().isRegistered()) { return getString(R.string.status_connected); } else if (state == RegistrationState.RegistrationProgress) { return getString(R.string.status_in_progress);