diff --git a/res/drawable-hdpi/btn_circle_disable.png b/res/drawable-hdpi/btn_circle_disable.png
deleted file mode 100644
index 39652a8..0000000
--- a/res/drawable-hdpi/btn_circle_disable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/btn_circle_disable_focused.png b/res/drawable-hdpi/btn_circle_disable_focused.png
deleted file mode 100644
index 1aa7ffe..0000000
--- a/res/drawable-hdpi/btn_circle_disable_focused.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/btn_circle_normal.png b/res/drawable-hdpi/btn_circle_normal.png
deleted file mode 100644
index 6011219..0000000
--- a/res/drawable-hdpi/btn_circle_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/btn_circle_pressed.png b/res/drawable-hdpi/btn_circle_pressed.png
deleted file mode 100644
index 4942e50..0000000
--- a/res/drawable-hdpi/btn_circle_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/btn_circle_selected.png b/res/drawable-hdpi/btn_circle_selected.png
deleted file mode 100644
index fe49a40..0000000
--- a/res/drawable-hdpi/btn_circle_selected.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldpi/btn_circle_disable.png b/res/drawable-ldpi/btn_circle_disable.png
deleted file mode 100644
index 87a51c5..0000000
--- a/res/drawable-ldpi/btn_circle_disable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldpi/btn_circle_disable_focused.png b/res/drawable-ldpi/btn_circle_disable_focused.png
deleted file mode 100644
index cc28e3b..0000000
--- a/res/drawable-ldpi/btn_circle_disable_focused.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldpi/btn_circle_normal.png b/res/drawable-ldpi/btn_circle_normal.png
deleted file mode 100644
index b25ad81..0000000
--- a/res/drawable-ldpi/btn_circle_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldpi/btn_circle_pressed.png b/res/drawable-ldpi/btn_circle_pressed.png
deleted file mode 100644
index abeedad..0000000
--- a/res/drawable-ldpi/btn_circle_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldpi/btn_circle_selected.png b/res/drawable-ldpi/btn_circle_selected.png
deleted file mode 100644
index e3e8d13..0000000
--- a/res/drawable-ldpi/btn_circle_selected.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/btn_circle_disable.png b/res/drawable-mdpi/btn_circle_disable.png
deleted file mode 100644
index 29e227c..0000000
--- a/res/drawable-mdpi/btn_circle_disable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/btn_circle_disable_focused.png b/res/drawable-mdpi/btn_circle_disable_focused.png
deleted file mode 100644
index c5aa3c5..0000000
--- a/res/drawable-mdpi/btn_circle_disable_focused.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/btn_circle_normal.png b/res/drawable-mdpi/btn_circle_normal.png
deleted file mode 100644
index 6358351..0000000
--- a/res/drawable-mdpi/btn_circle_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/btn_circle_pressed.png b/res/drawable-mdpi/btn_circle_pressed.png
deleted file mode 100644
index dc07a61..0000000
--- a/res/drawable-mdpi/btn_circle_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/btn_circle_selected.png b/res/drawable-mdpi/btn_circle_selected.png
deleted file mode 100644
index 6eb2ff5..0000000
--- a/res/drawable-mdpi/btn_circle_selected.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/btn_circle.xml b/res/drawable/btn_circle.xml
deleted file mode 100644
index 243f506..0000000
--- a/res/drawable/btn_circle.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_window_focused="false" android:state_enabled="true"
-        android:drawable="@drawable/btn_circle_normal" />
-    <item android:state_window_focused="false" android:state_enabled="false"
-        android:drawable="@drawable/btn_circle_disable" />
-    <item android:state_pressed="true" android:state_enabled="false"
-        android:drawable="@drawable/btn_circle_disable" />
-    <item android:state_pressed="true" 
-        android:drawable="@drawable/btn_circle_pressed" />
-    <item android:state_focused="true" android:state_enabled="true"
-        android:drawable="@drawable/btn_circle_selected" />
-    <item android:state_enabled="true"
-        android:drawable="@drawable/btn_circle_normal" />
-    <item android:state_focused="true"
-        android:drawable="@drawable/btn_circle_disable_focused" />
-    <item
-         android:drawable="@drawable/btn_circle_disable" />
-</selector>
diff --git a/res/layout-land/music_main.xml b/res/layout-land/music_main.xml
index fcfe530..fc3eacb 100644
--- a/res/layout-land/music_main.xml
+++ b/res/layout-land/music_main.xml
@@ -47,7 +47,7 @@
             android:layout_marginLeft="15dip"
             android:layout_alignParentLeft="true"
             android:textAppearance="?android:attr/textAppearanceLarge"
-            android:text="@string/main_toggle_effects_title" />
+            android:text="@string/eq_dialog_title" />
         <Switch
             android:id="@+id/mainToggleEffectsCheckBox"
             android:layout_width="wrap_content"
@@ -64,56 +64,15 @@
         <LinearLayout
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:minHeight="?android:attr/listPreferredItemHeight"
             android:gravity="center_vertical"
             android:layout_gravity="center"
             android:orientation="vertical">
 
-            <LinearLayout
-                android:id="@+id/eqLayout"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="horizontal"
-                android:minHeight="?android:attr/listPreferredItemHeight"
-                android:gravity="center_vertical"
-                android:paddingRight="?android:attr/scrollbarSize"
-                android:focusable="true"
-                android:background="@android:drawable/list_selector_background">
-
-                <RelativeLayout
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="15dip"
-                    android:layout_marginRight="6dip"
-                    android:layout_marginTop="6dip"
-                    android:layout_marginBottom="6dip"
-                    android:layout_weight="1">
-                    <TextView
-                        android:id="@+id/eqPresetsTitleTextView"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:textAppearance="?android:attr/textAppearanceLarge"
-                        android:ellipsize="marquee"
-                        android:fadingEdge="horizontal"
-                        android:text="@string/eq_title" />
-                    <TextView
-                        android:id="@+id/eqPresetsSummaryTextView"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_below="@+id/eqPresetsTitleTextView"
-                        android:layout_alignLeft="@+id/eqPresetsTitleTextView"
-                        android:textAppearance="?android:attr/textAppearanceSmall"
-                        android:maxLines="4" />
-                </RelativeLayout>
-                <ImageView
-                    android:id="@+id/eqPresetsImageView"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginRight="4dip"
-                    android:layout_gravity="center_vertical"
-                    android:background="@drawable/btn_circle"
-                    android:src="@drawable/ic_btn_round_more" />
-            </LinearLayout>
+            <Spinner android:id="@+id/eqSpinner"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:drawSelectorOnTop="true"
+            />
 
             <LinearLayout
                 android:layout_width="wrap_content"
@@ -189,51 +148,13 @@
                             android:paddingRight="20dip" />
                     </LinearLayout>
 
-                    <LinearLayout
-                        android:id="@+id/eRLayout"
-                        android:layout_width="match_parent"
+                    <Spinner android:id="@+id/prSpinner"
+                        android:layout_width="fill_parent"
                         android:layout_height="wrap_content"
                         android:minHeight="?android:attr/listPreferredItemHeight"
-                        android:gravity="center_vertical"
-                        android:paddingRight="?android:attr/scrollbarSize"
-                        android:focusable="true"
-                        android:background="@android:drawable/list_selector_background"
-                        android:visibility="gone">
-                        <RelativeLayout
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:layout_marginLeft="15dip"
-                            android:layout_marginRight="6dip"
-                            android:layout_marginTop="6dip"
-                            android:layout_marginBottom="6dip"
-                            android:layout_weight="1">
-                            <TextView
-                                android:id="@+id/eRPresetsTitleTextView"
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:textAppearance="?android:attr/textAppearanceLarge"
-                                android:ellipsize="marquee"
-                                android:fadingEdge="horizontal"
-                                android:text="@string/pr_title" />
-                            <TextView
-                                android:id="@+id/eRPresetsSummaryTextView"
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:layout_below="@+id/eRPresetsTitleTextView"
-                                android:layout_alignLeft="@+id/eRPresetsTitleTextView"
-                                android:textAppearance="?android:attr/textAppearanceSmall"
-                                android:maxLines="4"
-                                android:text="@string/pr_summary" />
-                        </RelativeLayout>
-                        <ImageView
-                            android:id="@+id/eRPresetsImageView"
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:layout_marginRight="4dip"
-                            android:layout_gravity="center_vertical"
-                            android:background="@drawable/btn_circle"
-                            android:src="@drawable/ic_btn_round_more" />
-                    </LinearLayout>
+                        android:drawSelectorOnTop="true"
+                        android:visibility="gone"
+                    />
 
                 </LinearLayout>
             </LinearLayout>
diff --git a/res/layout/music_main.xml b/res/layout/music_main.xml
index 8993309..90c23ff 100644
--- a/res/layout/music_main.xml
+++ b/res/layout/music_main.xml
@@ -47,7 +47,7 @@
             android:layout_marginLeft="15dip"
             android:layout_alignParentLeft="true"
             android:textAppearance="?android:attr/textAppearanceLarge"
-            android:text="@string/main_toggle_effects_title" />
+            android:text="@string/eq_dialog_title" />
         <Switch
             android:id="@+id/mainToggleEffectsCheckBox"
             android:layout_width="wrap_content"
@@ -64,55 +64,15 @@
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:minHeight="?android:attr/listPreferredItemHeight"
             android:gravity="center_vertical"
             android:orientation="vertical">
 
-            <LinearLayout
-                android:id="@+id/eqLayout"
-                android:layout_width="match_parent"
+            <Spinner android:id="@+id/eqSpinner"
+                android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:orientation="horizontal">
                 android:minHeight="?android:attr/listPreferredItemHeight"
-                android:gravity="center_vertical"
-                android:paddingRight="?android:attr/scrollbarSize"
-                android:focusable="true"
-                android:background="@android:drawable/list_selector_background">
-
-                <RelativeLayout
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="15dip"
-                    android:layout_marginRight="6dip"
-                    android:layout_marginTop="6dip"
-                    android:layout_marginBottom="6dip"
-                    android:layout_weight="1">
-                    <TextView
-                        android:id="@+id/eqPresetsTitleTextView"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:textAppearance="?android:attr/textAppearanceLarge"
-                        android:ellipsize="marquee"
-                        android:fadingEdge="horizontal"
-                        android:text="@string/eq_title" />
-                    <TextView
-                        android:id="@+id/eqPresetsSummaryTextView"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_below="@+id/eqPresetsTitleTextView"
-                        android:layout_alignLeft="@+id/eqPresetsTitleTextView"
-                        android:textAppearance="?android:attr/textAppearanceSmall"
-                        android:maxLines="4" />
-                </RelativeLayout>
-                <ImageView
-                    android:id="@+id/eqPresetsImageView"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginRight="4dip"
-                    android:layout_gravity="center_vertical"
-                    android:background="@drawable/btn_circle"
-                    android:src="@drawable/ic_btn_round_more" />
-            </LinearLayout>
+                android:drawSelectorOnTop="true"
+            />
 
             <include layout="@layout/music_eq" />
 
@@ -178,51 +138,13 @@
                     android:paddingRight="20dip" />
             </LinearLayout>
 
-            <LinearLayout
-                android:id="@+id/eRLayout"
-                android:layout_width="match_parent"
+            <Spinner android:id="@+id/prSpinner"
+                android:layout_width="fill_parent"
                 android:layout_height="wrap_content"
                 android:minHeight="?android:attr/listPreferredItemHeight"
-                android:gravity="center_vertical"
-                android:paddingRight="?android:attr/scrollbarSize"
-                android:focusable="true"
-                android:background="@android:drawable/list_selector_background"
-                android:visibility="gone">
-                <RelativeLayout
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="15dip"
-                    android:layout_marginRight="6dip"
-                    android:layout_marginTop="6dip"
-                    android:layout_marginBottom="6dip"
-                    android:layout_weight="1">
-                    <TextView
-                        android:id="@+id/eRPresetsTitleTextView"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:textAppearance="?android:attr/textAppearanceLarge"
-                        android:ellipsize="marquee"
-                        android:fadingEdge="horizontal"
-                        android:text="@string/pr_title" />
-                    <TextView
-                        android:id="@+id/eRPresetsSummaryTextView"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_below="@+id/eRPresetsTitleTextView"
-                        android:layout_alignLeft="@+id/eRPresetsTitleTextView"
-                        android:textAppearance="?android:attr/textAppearanceSmall"
-                        android:maxLines="4"
-                        android:text="@string/pr_summary" />
-                </RelativeLayout>
-                <ImageView
-                    android:id="@+id/eRPresetsImageView"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginRight="4dip"
-                    android:layout_gravity="center_vertical"
-                    android:background="@drawable/btn_circle"
-                    android:src="@drawable/ic_btn_round_more" />
-            </LinearLayout>
+                android:drawSelectorOnTop="true"
+                android:visibility="gone"
+            />
 
         </LinearLayout>
     </ScrollView>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 8c048d5..c5507dd 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -20,7 +20,6 @@
     <!-- ControlPanelMusic strings -->
     <string name="no_effects">Effects not available</string>
     <string name="main_toggle_effects_title">Audio effects</string>
-    <string name="eq_title">Equalizer:</string>
     <string name="eq_dialog_title">Equalizer</string>
     <string name="headset_plug">Please plug headphones for these effects</string>
     <string name="bass_boost_strength">Bass boost</string>
diff --git a/src/com/android/musicfx/ActivityMusic.java b/src/com/android/musicfx/ActivityMusic.java
index b3c8e99..8e9dab2 100644
--- a/src/com/android/musicfx/ActivityMusic.java
+++ b/src/com/android/musicfx/ActivityMusic.java
@@ -43,11 +43,15 @@
 import android.view.View.OnClickListener;
 import android.view.View.OnTouchListener;
 import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemSelectedListener;
+import android.widget.ArrayAdapter;
 import android.widget.CompoundButton;
 import android.widget.CompoundButton.OnCheckedChangeListener;
 import android.widget.LinearLayout;
 import android.widget.ListView;
 import android.widget.RelativeLayout;
+import android.widget.Spinner;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -66,12 +70,6 @@
     private final static int EQUALIZER_MAX_BANDS = 32;
 
     /**
-     * Dialog IDS
-     */
-    static final int DIALOG_EQUALIZER = 0;
-    static final int DIALOG_PRESET_REVERB = 1;
-
-    /**
      * Indicates if Virtualizer effect is supported.
      */
     private boolean mVirtualizerSupported;
@@ -99,6 +97,7 @@
     private String[] mEQPresetNames;
 
     private int mPRPreset;
+    private int mPRPresetPrevious;
 
     private boolean mIsHeadsetOn = false;
 
@@ -404,28 +403,23 @@
 
             // Initialize the Equalizer elements.
             if (mEqualizerSupported) {
-                final View view = findViewById(R.id.eqLayout);
-                view.setOnClickListener(new OnClickListener() {
-
-                    @Override
-                    public void onClick(final View v) {
-                        showDialog(DIALOG_EQUALIZER);
-                    }
-                });
-                equalizerInit(findViewById(R.id.eqcontainer));
+                mEQPreset = ControlPanelEffect.getParameterInt(mContext, mCallingPackageName,
+                        mAudioSession, ControlPanelEffect.Key.eq_current_preset);
+                if (mEQPreset >= mEQPresetNames.length) {
+                    mEQPreset = 0;
+                }
+                mEQPresetPrevious = mEQPreset;
+                equalizerSpinnerInit((Spinner)findViewById(R.id.eqSpinner));
+                equalizerBandsInit(findViewById(R.id.eqcontainer));
             }
 
             // Initialize the Preset Reverb elements.
             // Set Spinner listeners.
             if (mPresetReverbSupported) {
-                final View view = findViewById(R.id.eRLayout);
-                view.setOnClickListener(new OnClickListener() {
-
-                    @Override
-                    public void onClick(final View v) {
-                        showDialog(DIALOG_PRESET_REVERB);
-                    }
-                });
+                mPRPreset = ControlPanelEffect.getParameterInt(mContext, mCallingPackageName,
+                        mAudioSession, ControlPanelEffect.Key.pr_current_preset);
+                mPRPresetPrevious = mPRPreset;
+                reverbSpinnerInit((Spinner)findViewById(R.id.prSpinner));
             }
 
         } else {
@@ -479,158 +473,51 @@
         unregisterReceiver(mReceiver);
     }
 
-    /*
-     * Create dialogs for about, EQ preset control, PR and reset to default (alert) dialogs
-     *
-     * (non-Javadoc)
-     *
-     * @see android.app.Activity#onCreateDialog(int)
-     */
-    @Override
-    protected Dialog onCreateDialog(final int id) {
-        final AlertDialog alertDialog;
-        switch (id) {
-        case DIALOG_EQUALIZER: {
-            final AlertDialog.Builder builder = new AlertDialog.Builder(this);
-            builder.setTitle(R.string.eq_dialog_title);
-            builder.setSingleChoiceItems(mEQPresetNames, -1,
-                    new DialogInterface.OnClickListener() {
-                        @Override
-                        public void onClick(final DialogInterface dialog, final int item) {
-                            if (item != mEQPresetPrevious) {
-                                equalizerSetPreset(item);
-                            }
-                            mEQPresetPrevious = item;
-                        }
-                    });
-            builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
-                @Override
-                public void onClick(final DialogInterface dialog, final int whichButton) {
-                    final ListView listView = ((AlertDialog) dialog).getListView();
-                    final int newPreset = listView.getCheckedItemPosition();
-                    equalizerSetPreset(newPreset);
-                }
-            });
-            builder.setNegativeButton(android.R.string.cancel,
-                    new DialogInterface.OnClickListener() {
-                        @Override
-                        public void onClick(final DialogInterface dialog, final int whichButton) {
-                            dialog.cancel();
-                        }
-                    });
-            builder.setOnCancelListener(new OnCancelListener() {
-                @Override
-                public void onCancel(final DialogInterface dialog) {
-                    equalizerSetPreset(mEQPreset);
-                    final int[] presetUserBandLevels = ControlPanelEffect.getParameterIntArray(
-                            mContext, mCallingPackageName, mAudioSession,
-                            ControlPanelEffect.Key.eq_preset_user_band_level);
-                    short band = 0;
-                    for (final int bandLevel : mEQPresetUserBandLevelsPrev) {
-                        if (bandLevel != presetUserBandLevels[band]) {
-                            if (!isEqualizerUserPreset(mEQPreset)) {
-                                ControlPanelEffect.setParameterInt(mContext, mCallingPackageName,
-                                        mAudioSession,
-                                        ControlPanelEffect.Key.eq_preset_user_band_level,
-                                        bandLevel, band);
-                            } else {
-                                equalizerBandUpdate(band, (short) bandLevel);
-                            }
-                        }
-                        band++;
-                    }
-                }
-            });
+    private void reverbSpinnerInit(Spinner spinner) {
+        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
+                android.R.layout.simple_spinner_item, PRESETREVERBPRESETSTRINGS);
+        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+        spinner.setAdapter(adapter);
+        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
 
-            alertDialog = builder.create();
-            final LayoutInflater factory = LayoutInflater.from(this);
-            break;
-        }
-        case DIALOG_PRESET_REVERB: {
-            final AlertDialog.Builder builder = new AlertDialog.Builder(this);
-            builder.setTitle(R.string.pr_dialog_title);
-            builder.setSingleChoiceItems(PRESETREVERBPRESETSTRINGS, -1,
-                    new DialogInterface.OnClickListener() {
-                        @Override
-                        public void onClick(final DialogInterface dialog, final int item) {
-                            presetReverbSetPreset(item);
-                        }
-                    });
-            builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
-                @Override
-                public void onClick(final DialogInterface dialog, final int whichButton) {
-                    final ListView listView = ((AlertDialog) dialog).getListView();
-                    final int newPreset = listView.getCheckedItemPosition();
-                    presetReverbSetPreset(newPreset);
-                    ((TextView) findViewById(R.id.eRPresetsTitleTextView))
-                            .setText(getString(R.string.pr_title) + " "
-                                    + listView.getItemAtPosition(newPreset).toString());
+            @Override
+            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+                if (position != mPRPresetPrevious) {
+                    presetReverbSetPreset(position);
                 }
-            });
-            builder.setNegativeButton(android.R.string.cancel,
-                    new DialogInterface.OnClickListener() {
-                        @Override
-                        public void onClick(final DialogInterface dialog, final int whichButton) {
-                            dialog.cancel();
-                        }
-                    });
-            builder.setOnCancelListener(new OnCancelListener() {
-                @Override
-                public void onCancel(final DialogInterface dialog) {
-                    presetReverbSetPreset(mPRPreset);
-                }
-            });
-
-            alertDialog = builder.create();
-            break;
-        }
-        default:
-            Log.e(TAG, "onCreateDialog invalid Dialog id: " + id);
-            alertDialog = null;
-            break;
-        }
-        return alertDialog;
-    }
-
-    /*
-     * Updates dialog (selections) before they are shown if necessary
-     *
-     * (non-Javadoc)
-     *
-     * @see android.app.Activity#onPrepareDialog(int, android.app.Dialog, android.os.Bundle)
-     */
-    @Override
-    protected void onPrepareDialog(final int id, final Dialog dialog, final Bundle args) {
-        switch (id) {
-        case DIALOG_EQUALIZER: {
-            mEQPreset = ControlPanelEffect.getParameterInt(mContext, mCallingPackageName,
-                    mAudioSession, ControlPanelEffect.Key.eq_current_preset);
-            if (mEQPreset >= mEQPresetNames.length) {
-                mEQPreset = 0;
+                mPRPresetPrevious = position;
             }
-            mEQPresetPrevious = mEQPreset;
-            mEQPresetUserBandLevelsPrev = ControlPanelEffect.getParameterIntArray(mContext,
-                    mCallingPackageName, mAudioSession,
-                    ControlPanelEffect.Key.eq_preset_user_band_level);
-            final ListView listView = ((AlertDialog) dialog).getListView();
-            listView.setItemChecked(mEQPreset, true);
-            listView.setSelection(mEQPreset);
-            break;
-        }
-        case DIALOG_PRESET_REVERB: {
-            mPRPreset = ControlPanelEffect.getParameterInt(mContext, mCallingPackageName,
-                    mAudioSession, ControlPanelEffect.Key.pr_current_preset);
-            final ListView listView = ((AlertDialog) dialog).getListView();
-            listView.setItemChecked(mPRPreset, true);
-            listView.setSelection(mPRPreset);
-            break;
-        }
-        default:
-            Log.e(TAG, "onPrepareDialog invalid Dialog id: " + id);
-            break;
-        }
+
+            @Override
+            public void onNothingSelected(AdapterView<?> parent) {
+            }
+        });
+        spinner.setSelection(mPRPreset);
     }
 
+    private void equalizerSpinnerInit(Spinner spinner) {
+        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
+                android.R.layout.simple_spinner_item, mEQPresetNames);
+        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+        spinner.setAdapter(adapter);
+        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
+
+            @Override
+            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+                if (position != mEQPresetPrevious) {
+                    equalizerSetPreset(position);
+                }
+                mEQPresetPrevious = position;
+            }
+
+            @Override
+            public void onNothingSelected(AdapterView<?> parent) {
+            }
+        });
+        spinner.setSelection(mEQPreset);
+    }
+
+
     /**
      * En/disables all children for a given view. For linear and relative layout children do this
      * recursively
@@ -671,24 +558,13 @@
                             ControlPanelEffect.Key.bb_strength));
         }
         if (mEqualizerSupported) {
-            final String [] presets = mEQPresetNames;
-            int idx = ControlPanelEffect.getParameterInt(mContext,
-                                    mCallingPackageName, mAudioSession,
-                                    ControlPanelEffect.Key.eq_current_preset);
-            if (idx >= presets.length) {
-                idx = 0;
-            }
-            ((TextView) findViewById(R.id.eqPresetsSummaryTextView))
-                    .setText(presets[idx]);
             equalizerUpdateDisplay();
         }
         if (mPresetReverbSupported) {
-            ((TextView) findViewById(R.id.eRPresetsTitleTextView))
-                    .setText(getString(R.string.pr_title)
-                            + " "
-                            + PRESETREVERBPRESETSTRINGS[ControlPanelEffect.getParameterInt(
+            int reverb = ControlPanelEffect.getParameterInt(
                                     mContext, mCallingPackageName, mAudioSession,
-                                    ControlPanelEffect.Key.pr_current_preset)]);
+                                    ControlPanelEffect.Key.pr_current_preset);
+            ((Spinner)findViewById(R.id.prSpinner)).setSelection(reverb);
         }
     }
 
@@ -711,7 +587,7 @@
     /**
      * Initializes the equalizer elements. Set the SeekBars and Spinner listeners.
      */
-    private void equalizerInit(View eqcontainer) {
+    private void equalizerBandsInit(View eqcontainer) {
         // Initialize the N-Band Equalizer elements.
         mNumberEqualizerBands = ControlPanelEffect.getParameterInt(mContext, mCallingPackageName,
                 mAudioSession, ControlPanelEffect.Key.eq_num_bands);
@@ -860,26 +736,6 @@
         ControlPanelEffect.setParameterInt(mContext, mCallingPackageName, mAudioSession,
                 ControlPanelEffect.Key.eq_current_preset, preset);
         equalizerUpdateDisplay();
-        ((TextView) findViewById(R.id.eqPresetsSummaryTextView))
-        .setText(mEQPresetNames[preset]);
-    }
-
-    /**
-     * Checks if an User EQ preset is set.
-     */
-    private boolean isEqualizerUserPreset(final int preset) {
-        return (preset == mEQPresetUserPos);
-    }
-
-    /**
-     * Sets the given PR preset.
-     *
-     * @param preset
-     *            PR preset id.
-     */
-    private void presetReverbSetPreset(final short preset) {
-        ControlPanelEffect.setParameterInt(mContext, mCallingPackageName, mAudioSession,
-                ControlPanelEffect.Key.pr_current_preset, preset);
     }
 
     /**
@@ -889,7 +745,8 @@
      *            PR preset id.
      */
     private void presetReverbSetPreset(final int preset) {
-        presetReverbSetPreset((short) preset);
+        ControlPanelEffect.setParameterInt(mContext, mCallingPackageName, mAudioSession,
+                ControlPanelEffect.Key.pr_current_preset, preset);
     }
 
     /**
