OSDN Git Service

Single volume control when config_useMasterVolume is true
authorJaewan Kim <jaewan@google.com>
Thu, 11 Apr 2013 04:18:03 +0000 (13:18 +0900)
committerJaewan Kim <jaewan@google.com>
Thu, 16 May 2013 17:43:12 +0000 (02:43 +0900)
If config_useMasterVolume is true, all streams are considered as the
STREAM_MASTER. Hide all volume sections except a stream because they
are actually the same in this case.

Bug: 8505295
Change-Id: I9822feaad2d43468ceb4c7fdb97da4b677995992

res/layout/preference_dialog_ringervolume.xml
src/com/android/settings/RingerVolumePreference.java

index 1643cab..2af1ba9 100644 (file)
 
         <!-- Used for the media volume -->
         <LinearLayout
+                android:id="@+id/media_section"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:paddingStart="8dip"
-                android:orientation="horizontal"
-                android:gravity="center_vertical">
+                android:orientation="vertical">
 
-                <ImageView android:id="@+id/media_mute_button"
-                        android:layout_width="wrap_content"
+                <LinearLayout
+                        android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:padding="16dip"
-                        android:background="?android:attr/selectableItemBackground"
-                        android:contentDescription="@string/volume_media_mute"
-                    />
+                        android:paddingStart="8dip"
+                        android:orientation="horizontal"
+                        android:gravity="center_vertical">
+
+                        <ImageView android:id="@+id/media_mute_button"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:padding="16dip"
+                                android:background="?android:attr/selectableItemBackground"
+                                android:contentDescription="@string/volume_media_mute"
+                            />
+
+                        <SeekBar android:id="@+id/media_volume_seekbar"
+                                android:layout_width="0dip"
+                                android:layout_height="wrap_content"
+                                android:layout_weight="1"
+                                android:paddingTop="2dip"
+                                android:layout_marginEnd="@dimen/volume_seekbar_side_margin" />
+                </LinearLayout>
 
-                <SeekBar android:id="@+id/media_volume_seekbar"
-                        android:layout_width="0dip"
-                        android:layout_height="wrap_content"
-                        android:layout_weight="1"
-                        android:paddingTop="2dip"
-                        android:layout_marginEnd="@dimen/volume_seekbar_side_margin" />
         </LinearLayout>
 
         <!-- Used for the ringer/notification volume -->
 
         </LinearLayout>
 
-        <TextView
-                android:textAppearance="?android:attr/textAppearanceSmall"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="16dip"
-                android:paddingStart="16dip"
-                android:layout_gravity="start"
-                android:text="@string/volume_alarm_description"
-            />
-
         <!-- Used for the alarm volume -->
         <LinearLayout
+                android:id="@+id/alarm_section"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:paddingStart="8dip"
-                android:orientation="horizontal"
-                android:gravity="center_vertical">
+                android:orientation="vertical">
 
-                <ImageView android:id="@+id/alarm_mute_button"
+                <TextView
+                        android:textAppearance="?android:attr/textAppearanceSmall"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:padding="16dip"
-                        android:background="?android:attr/selectableItemBackground"
-                        android:contentDescription="@string/volume_alarm_mute" />
-                <SeekBar android:id="@+id/alarm_volume_seekbar"
-                        android:layout_width="0dip"
+                        android:layout_marginTop="16dip"
+                        android:paddingStart="16dip"
+                        android:layout_gravity="start"
+                        android:text="@string/volume_alarm_description"
+                    />
+
+                <!-- Used for the alarm volume -->
+                <LinearLayout
+                        android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:layout_weight="1"
-                        android:paddingTop="2dip"
-                        android:layout_marginEnd="@dimen/volume_seekbar_side_margin" />
+                        android:paddingStart="8dip"
+                        android:orientation="horizontal"
+                        android:gravity="center_vertical">
+
+                        <ImageView android:id="@+id/alarm_mute_button"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:padding="16dip"
+                                android:background="?android:attr/selectableItemBackground"
+                                android:contentDescription="@string/volume_alarm_mute" />
+                        <SeekBar android:id="@+id/alarm_volume_seekbar"
+                                android:layout_width="0dip"
+                                android:layout_height="wrap_content"
+                                android:layout_weight="1"
+                                android:paddingTop="2dip"
+                                android:layout_marginEnd="@dimen/volume_seekbar_side_margin" />
+                </LinearLayout>
+
         </LinearLayout>
 
     </LinearLayout>
index 56393e0..dd81ded 100644 (file)
@@ -80,6 +80,13 @@ public class RingerVolumePreference extends VolumePreference {
         R.id.alarm_mute_button
     };
 
+    private static final int[] SEEKBAR_SECTION_ID = new int[] {
+        R.id.media_section,
+        R.id.ringer_section,
+        R.id.notification_section,
+        R.id.alarm_section
+    };
+
     private static final int[] SEEKBAR_MUTED_RES_ID = new int[] {
         com.android.internal.R.drawable.ic_audio_vol_mute,
         com.android.internal.R.drawable.ic_audio_ring_notif_mute,
@@ -198,15 +205,33 @@ public class RingerVolumePreference extends VolumePreference {
             getContext().registerReceiver(mRingModeChangedReceiver, filter);
         }
 
-        // Disable either ringer+notifications or notifications
-        int id;
-        if (!Utils.isVoiceCapable(getContext())) {
-            id = R.id.ringer_section;
+        boolean useMasterVolume = getContext().getResources().
+                getBoolean(com.android.internal.R.bool.config_useMasterVolume);
+        if (useMasterVolume) {
+            // If config_useMasterVolume is true, all streams are treated as STREAM_MASTER.
+            // So hide all except a stream.
+            int id;
+            if (Utils.isVoiceCapable(getContext())) {
+                id = R.id.ringer_section;
+            } else {
+                id = R.id.media_section;
+            }
+            for (int i = 0; i < SEEKBAR_SECTION_ID.length; i++) {
+                if (SEEKBAR_SECTION_ID[i] != id) {
+                    view.findViewById(SEEKBAR_SECTION_ID[i]).setVisibility(View.GONE);
+                }
+            }
         } else {
-            id = R.id.notification_section;
+            // Disable either ringer+notifications or notifications
+            int id;
+            if (!Utils.isVoiceCapable(getContext())) {
+                id = R.id.ringer_section;
+            } else {
+                id = R.id.notification_section;
+            }
+            View hideSection = view.findViewById(id);
+            hideSection.setVisibility(View.GONE);
         }
-        View hideSection = view.findViewById(id);
-        hideSection.setVisibility(View.GONE);
     }
 
     private Uri getMediaVolumeUri(Context context) {