From 2ae1d7fe291bfc112da9a8fb019f10c772b18cf4 Mon Sep 17 00:00:00 2001 From: Jimmy Shih Date: Mon, 25 Nov 2013 15:52:12 -0800 Subject: [PATCH] Set dialog title divider for preference dialogs --- MyTracks/res/xml/chart_settings.xml | 2 +- MyTracks/res/xml/google_settings.xml | 2 +- MyTracks/res/xml/map_settings.xml | 17 +++--- MyTracks/res/xml/recording_settings.xml | 2 +- MyTracks/res/xml/sensor_settings.xml | 4 +- MyTracks/res/xml/stats_settings.xml | 4 +- .../AbstractMyTracksDialogFragment.java | 2 +- .../ChooseActivityTypeDialogFragment.java | 2 +- .../settings/ActivityTypePreference.java | 8 +++ .../settings/IntegerListPreference.java | 3 +- .../settings/MyTracksEditTextPreference.java | 46 ++++++++++++++++ .../settings/MyTracksListPreference.java | 46 ++++++++++++++++ .../apps/mytracks/util/DialogUtils.java | 52 ++++++++++++++++--- 13 files changed, 162 insertions(+), 28 deletions(-) create mode 100644 MyTracks/src/com/google/android/apps/mytracks/settings/MyTracksEditTextPreference.java create mode 100644 MyTracks/src/com/google/android/apps/mytracks/settings/MyTracksListPreference.java diff --git a/MyTracks/res/xml/chart_settings.xml b/MyTracks/res/xml/chart_settings.xml index 8593c01cf..1f4495f26 100644 --- a/MyTracks/res/xml/chart_settings.xml +++ b/MyTracks/res/xml/chart_settings.xml @@ -16,7 +16,7 @@ limitations under the License. --> - diff --git a/MyTracks/res/xml/google_settings.xml b/MyTracks/res/xml/google_settings.xml index 2f6737a63..bcef69986 100644 --- a/MyTracks/res/xml/google_settings.xml +++ b/MyTracks/res/xml/google_settings.xml @@ -16,7 +16,7 @@ limitations under the License. --> - diff --git a/MyTracks/res/xml/map_settings.xml b/MyTracks/res/xml/map_settings.xml index de85d4b34..8ce420cde 100644 --- a/MyTracks/res/xml/map_settings.xml +++ b/MyTracks/res/xml/map_settings.xml @@ -16,33 +16,30 @@ limitations under the License. --> - - - - + - + android:title="@string/settings_map_medium" /> - - + android:title="@string/settings_map_percentage" /> \ No newline at end of file diff --git a/MyTracks/res/xml/recording_settings.xml b/MyTracks/res/xml/recording_settings.xml index 40a2a3bf7..d087b949a 100644 --- a/MyTracks/res/xml/recording_settings.xml +++ b/MyTracks/res/xml/recording_settings.xml @@ -24,7 +24,7 @@ limitations under the License. android:defaultValue="0" android:key="@string/split_frequency_key" android:title="@string/menu_split_frequency" /> - diff --git a/MyTracks/res/xml/sensor_settings.xml b/MyTracks/res/xml/sensor_settings.xml index 40d1d4335..13aaebb53 100644 --- a/MyTracks/res/xml/sensor_settings.xml +++ b/MyTracks/res/xml/sensor_settings.xml @@ -17,7 +17,7 @@ limitations under the License. - @@ -29,7 +29,7 @@ limitations under the License. android:persistent="false" android:summary="@string/settings_sensor_bluetooth_pairing_summary" android:title="@string/settings_sensor_bluetooth_pairing" /> - diff --git a/MyTracks/res/xml/stats_settings.xml b/MyTracks/res/xml/stats_settings.xml index 6288de43d..affcee983 100644 --- a/MyTracks/res/xml/stats_settings.xml +++ b/MyTracks/res/xml/stats_settings.xml @@ -16,11 +16,11 @@ limitations under the License. --> - - diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/AbstractMyTracksDialogFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/AbstractMyTracksDialogFragment.java index f8d3a6d83..5053c2ae7 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/AbstractMyTracksDialogFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/AbstractMyTracksDialogFragment.java @@ -37,7 +37,7 @@ public abstract class AbstractMyTracksDialogFragment extends DialogFragment { @Override public void onShow(DialogInterface dialogInterface) { - DialogUtils.setTitleDivier(getActivity(), dialog); + DialogUtils.setDialogTitleDivider(getActivity(), dialog); } }); return dialog; diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseActivityTypeDialogFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseActivityTypeDialogFragment.java index ed522904b..3bd8f002b 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseActivityTypeDialogFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseActivityTypeDialogFragment.java @@ -173,7 +173,7 @@ public class ChooseActivityTypeDialogFragment extends DialogFragment { } updateWeightContainer(weightContainer, position); weight.setText(weightValue); - DialogUtils.setTitleDivier(activity, alertDialog); + DialogUtils.setDialogTitleDivider(activity, alertDialog); } }); diff --git a/MyTracks/src/com/google/android/apps/mytracks/settings/ActivityTypePreference.java b/MyTracks/src/com/google/android/apps/mytracks/settings/ActivityTypePreference.java index 8eed4f769..f67c1fdbf 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/settings/ActivityTypePreference.java +++ b/MyTracks/src/com/google/android/apps/mytracks/settings/ActivityTypePreference.java @@ -16,11 +16,13 @@ package com.google.android.apps.mytracks.settings; +import com.google.android.apps.mytracks.util.DialogUtils; import com.google.android.apps.mytracks.util.PreferencesUtils; import com.google.android.apps.mytracks.util.TrackIconUtils; import com.google.android.maps.mytracks.R; import android.content.Context; +import android.os.Bundle; import android.os.Parcelable; import android.preference.DialogPreference; import android.util.AttributeSet; @@ -107,6 +109,12 @@ public class ActivityTypePreference extends DialogPreference { return view; } + @Override + protected void showDialog(Bundle state) { + super.showDialog(state); + DialogUtils.setDialogTitleDivider(getContext(), getDialog()); + } + @Override protected void onDialogClosed(boolean positiveResult) { if (positiveResult) { diff --git a/MyTracks/src/com/google/android/apps/mytracks/settings/IntegerListPreference.java b/MyTracks/src/com/google/android/apps/mytracks/settings/IntegerListPreference.java index 249f1e243..4fe0af3a0 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/settings/IntegerListPreference.java +++ b/MyTracks/src/com/google/android/apps/mytracks/settings/IntegerListPreference.java @@ -17,7 +17,6 @@ package com.google.android.apps.mytracks.settings; import android.content.Context; -import android.preference.ListPreference; import android.util.AttributeSet; /** @@ -29,7 +28,7 @@ import android.util.AttributeSet; * * @author Rodrigo Damazio */ -public class IntegerListPreference extends ListPreference { +public class IntegerListPreference extends MyTracksListPreference { public IntegerListPreference(Context context) { super(context); diff --git a/MyTracks/src/com/google/android/apps/mytracks/settings/MyTracksEditTextPreference.java b/MyTracks/src/com/google/android/apps/mytracks/settings/MyTracksEditTextPreference.java new file mode 100644 index 000000000..a6fb85c8e --- /dev/null +++ b/MyTracks/src/com/google/android/apps/mytracks/settings/MyTracksEditTextPreference.java @@ -0,0 +1,46 @@ +/* + * Copyright 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.google.android.apps.mytracks.settings; + +import com.google.android.apps.mytracks.util.DialogUtils; + +import android.content.Context; +import android.os.Bundle; +import android.preference.EditTextPreference; +import android.util.AttributeSet; + +/** + * My Tracks edit text preference. + * + * @author Jimmy Shih + */ +public class MyTracksEditTextPreference extends EditTextPreference { + + public MyTracksEditTextPreference(Context context) { + super(context); + } + + public MyTracksEditTextPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + protected void showDialog(Bundle state) { + super.showDialog(state); + DialogUtils.setDialogTitleDivider(getContext(), getDialog()); + } +} diff --git a/MyTracks/src/com/google/android/apps/mytracks/settings/MyTracksListPreference.java b/MyTracks/src/com/google/android/apps/mytracks/settings/MyTracksListPreference.java new file mode 100644 index 000000000..be72f9a6d --- /dev/null +++ b/MyTracks/src/com/google/android/apps/mytracks/settings/MyTracksListPreference.java @@ -0,0 +1,46 @@ +/* + * Copyright 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.google.android.apps.mytracks.settings; + +import com.google.android.apps.mytracks.util.DialogUtils; + +import android.content.Context; +import android.os.Bundle; +import android.preference.ListPreference; +import android.util.AttributeSet; + +/** + * My Tracks list preference. + * + * @author Jimmy Shih + */ +public class MyTracksListPreference extends ListPreference { + + public MyTracksListPreference(Context context) { + super(context); + } + + public MyTracksListPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + protected void showDialog(Bundle state) { + super.showDialog(state); + DialogUtils.setDialogTitleDivider(getContext(), getDialog()); + } +} diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/DialogUtils.java b/MyTracks/src/com/google/android/apps/mytracks/util/DialogUtils.java index a71fec673..1b6b2e960 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/util/DialogUtils.java +++ b/MyTracks/src/com/google/android/apps/mytracks/util/DialogUtils.java @@ -46,15 +46,22 @@ public class DialogUtils { * @param okListener the listener when OK is clicked */ public static Dialog createConfirmationDialog( - Context context, int titleId, String message, DialogInterface.OnClickListener okListener) { - AlertDialog.Builder builder = new AlertDialog.Builder(context) + final Context context, int titleId, String message, DialogInterface.OnClickListener okListener) { + final AlertDialog alertDialog = new AlertDialog.Builder(context) .setCancelable(true) .setIcon(android.R.drawable.ic_dialog_alert) .setMessage(message) .setNegativeButton(R.string.generic_no, null) .setPositiveButton(R.string.generic_yes, okListener) - .setTitle(titleId); - return builder.create(); + .setTitle(titleId).create(); + alertDialog.setOnShowListener(new DialogInterface.OnShowListener() { + + @Override + public void onShow(DialogInterface dialog) { + setDialogTitleDivider(context, alertDialog); + } + }); + return alertDialog; } /** @@ -91,9 +98,9 @@ public class DialogUtils { * @param onCancelListener the cancel listener * @param formatArgs the format arguments for the message id */ - private static ProgressDialog createProgressDialog(boolean spinner, Context context, + private static ProgressDialog createProgressDialog(boolean spinner, final Context context, int messageId, DialogInterface.OnCancelListener onCancelListener, Object... formatArgs) { - ProgressDialog progressDialog = new ProgressDialog(context); + final ProgressDialog progressDialog = new ProgressDialog(context); progressDialog.setCancelable(true); progressDialog.setCanceledOnTouchOutside(false); progressDialog.setIcon(android.R.drawable.ic_dialog_info); @@ -103,18 +110,49 @@ public class DialogUtils { progressDialog.setProgressStyle(spinner ? ProgressDialog.STYLE_SPINNER : ProgressDialog.STYLE_HORIZONTAL); progressDialog.setTitle(R.string.generic_progress_title); + progressDialog.setOnShowListener(new DialogInterface.OnShowListener() { + + @Override + public void onShow(DialogInterface dialog) { + setDialogTitleDivider(context, progressDialog); + } + }); return progressDialog; } - public static void setTitleDivier(Context context, Dialog dialog) { + /** + * Sets the dialog title divider. + * + * @param context the context + * @param dialog the dialog + */ + public static void setDialogTitleDivider(Context context, Dialog dialog) { if (ApiAdapterFactory.getApiAdapter().hasDialogTitleDivider()) { try { ViewGroup decorView = (ViewGroup) dialog.getWindow().getDecorView(); + if (decorView == null) { + return; + } FrameLayout windowContentView = (FrameLayout) decorView.getChildAt(0); + if (windowContentView == null) { + return; + } FrameLayout contentView = (FrameLayout) windowContentView.getChildAt(0); + if (contentView == null) { + return; + } LinearLayout parentPanel = (LinearLayout) contentView.getChildAt(0); + if (parentPanel == null) { + return; + } LinearLayout topPanel = (LinearLayout) parentPanel.getChildAt(0); + if (topPanel == null) { + return; + } View titleDivider = topPanel.getChildAt(2); + if (titleDivider == null) { + return; + } titleDivider.setBackgroundColor(context.getResources().getColor(R.color.holo_orange_dark)); } catch (Exception e) { // Can safely ignore