diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 14d6d45..cb01712 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -24,8 +24,6 @@
     <uses-permission
         android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
     <uses-permission
-        android:name="android.permission.INTERNET" />
-    <uses-permission
         android:name="android.permission.BLUETOOTH"></uses-permission>
     <application
         android:icon="@drawable/icon"
diff --git a/res/drawable-hdpi/progress_vertical_bg_holo_dark.9.png b/res/drawable-hdpi/progress_vertical_bg_holo_dark.9.png
deleted file mode 100644
index 92e34bf..0000000
--- a/res/drawable-hdpi/progress_vertical_bg_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/progress_vertical_primary_holo_dark.9.png b/res/drawable-hdpi/progress_vertical_primary_holo_dark.9.png
deleted file mode 100644
index cbd537b..0000000
--- a/res/drawable-hdpi/progress_vertical_primary_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/progress_vertical_secondary_holo_dark.9.png b/res/drawable-hdpi/progress_vertical_secondary_holo_dark.9.png
deleted file mode 100644
index 73a0e40..0000000
--- a/res/drawable-hdpi/progress_vertical_secondary_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/scrubber_vertical_primary_holo.9.png b/res/drawable-hdpi/scrubber_vertical_primary_holo.9.png
deleted file mode 100644
index 03930e2..0000000
--- a/res/drawable-hdpi/scrubber_vertical_primary_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/scrubber_vertical_secondary_holo.9.png b/res/drawable-hdpi/scrubber_vertical_secondary_holo.9.png
deleted file mode 100644
index a19365c..0000000
--- a/res/drawable-hdpi/scrubber_vertical_secondary_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/scrubber_vertical_track_holo_dark.9.png b/res/drawable-hdpi/scrubber_vertical_track_holo_dark.9.png
deleted file mode 100644
index 9f12c60..0000000
--- a/res/drawable-hdpi/scrubber_vertical_track_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/scrubber_vertical_track_holo_light.9.png b/res/drawable-hdpi/scrubber_vertical_track_holo_light.9.png
deleted file mode 100644
index 325b86a..0000000
--- a/res/drawable-hdpi/scrubber_vertical_track_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/progress_vertical_bg_holo_dark.9.png b/res/drawable-mdpi/progress_vertical_bg_holo_dark.9.png
deleted file mode 100644
index 662e59b..0000000
--- a/res/drawable-mdpi/progress_vertical_bg_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/progress_vertical_primary_holo_dark.9.png b/res/drawable-mdpi/progress_vertical_primary_holo_dark.9.png
deleted file mode 100644
index e7e32cb..0000000
--- a/res/drawable-mdpi/progress_vertical_primary_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/progress_vertical_secondary_holo_dark.9.png b/res/drawable-mdpi/progress_vertical_secondary_holo_dark.9.png
deleted file mode 100644
index 2fee3a8..0000000
--- a/res/drawable-mdpi/progress_vertical_secondary_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/scrubber_vertical_primary_holo.9.png b/res/drawable-mdpi/scrubber_vertical_primary_holo.9.png
deleted file mode 100644
index ecea48d..0000000
--- a/res/drawable-mdpi/scrubber_vertical_primary_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/scrubber_vertical_secondary_holo.9.png b/res/drawable-mdpi/scrubber_vertical_secondary_holo.9.png
deleted file mode 100644
index 35bf199..0000000
--- a/res/drawable-mdpi/scrubber_vertical_secondary_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/scrubber_vertical_track_holo_dark.9.png b/res/drawable-mdpi/scrubber_vertical_track_holo_dark.9.png
deleted file mode 100644
index 8a7fbde..0000000
--- a/res/drawable-mdpi/scrubber_vertical_track_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/scrubber_vertical_track_holo_light.9.png b/res/drawable-mdpi/scrubber_vertical_track_holo_light.9.png
deleted file mode 100644
index 097d05e..0000000
--- a/res/drawable-mdpi/scrubber_vertical_track_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/progress_vertical_primary_holo_dark.9.png b/res/drawable-xhdpi/progress_vertical_primary_holo_dark.9.png
deleted file mode 100644
index 27c8647..0000000
--- a/res/drawable-xhdpi/progress_vertical_primary_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/progress_vertical_secondary_holo_dark.9.png b/res/drawable-xhdpi/progress_vertical_secondary_holo_dark.9.png
deleted file mode 100644
index 5c622d8..0000000
--- a/res/drawable-xhdpi/progress_vertical_secondary_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/scrubber_vertical_primary_holo.9.png b/res/drawable-xhdpi/scrubber_vertical_primary_holo.9.png
deleted file mode 100644
index 2e4a44b..0000000
--- a/res/drawable-xhdpi/scrubber_vertical_primary_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/scrubber_vertical_secondary_holo.9.png b/res/drawable-xhdpi/scrubber_vertical_secondary_holo.9.png
deleted file mode 100644
index a5b1461..0000000
--- a/res/drawable-xhdpi/scrubber_vertical_secondary_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/scrubber_vertical_track_holo_dark.9.png b/res/drawable-xhdpi/scrubber_vertical_track_holo_dark.9.png
deleted file mode 100644
index 5f0fc26..0000000
--- a/res/drawable-xhdpi/scrubber_vertical_track_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/scrubber_vertical_track_holo_light.9.png b/res/drawable-xhdpi/scrubber_vertical_track_holo_light.9.png
deleted file mode 100644
index fc89474..0000000
--- a/res/drawable-xhdpi/scrubber_vertical_track_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/progress_vertical.xml b/res/drawable/progress_vertical.xml
deleted file mode 100644
index 1ee031d..0000000
--- a/res/drawable/progress_vertical.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-    
-    <item android:id="@android:id/background">
-        <shape>
-            <corners android:radius="5dip" />
-            <gradient
-                    android:startColor="#ff9d9e9d"
-                    android:centerColor="#ff5a5d5a"
-                    android:centerY="0.75"
-                    android:endColor="#ff747674"
-                    android:angle="180"
-            />
-        </shape>
-    </item>
-    
-    <item android:id="@android:id/secondaryProgress">
-        <clip>
-            <shape>
-                <corners android:radius="5dip" />
-                <gradient
-                        android:startColor="#80ffd300"
-                        android:centerColor="#80ffb600"
-                        android:centerY="0.75"
-                        android:endColor="#a0ffcb00"
-                        android:angle="180"
-                />
-            </shape>
-        </clip>
-    </item>
-    
-    <item android:id="@android:id/progress">
-        <clip
-            android:clipOrientation="vertical"
-            android:gravity="bottom">
-            <shape>
-                <corners android:radius="5dip" />
-                <gradient
-                        android:startColor="#ffffd300"
-                        android:centerColor="#ffffb600"
-                        android:centerY="0.75"
-                        android:endColor="#ffffcb00"
-                        android:angle="180"
-                />
-            </shape>
-        </clip>
-    </item>
-    
-</layer-list>
-
diff --git a/res/drawable/progress_vertical_holo_dark.xml b/res/drawable/progress_vertical_holo_dark.xml
deleted file mode 100644
index 9eb54b7..0000000
--- a/res/drawable/progress_vertical_holo_dark.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 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.
--->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <item android:id="@android:id/background"
-          android:drawable="@drawable/progress_vertical_bg_holo_dark" />
-
-    <item android:id="@android:id/secondaryProgress">
-        <scale android:scaleHeight="100%" android:scaleGravity="bottom"
-               android:drawable="@drawable/progress_vertical_secondary_holo_dark" />
-    </item>
-
-    <item android:id="@android:id/progress">
-        <scale android:scaleHeight="100%" android:scaleGravity="bottom"
-               android:drawable="@drawable/progress_vertical_primary_holo_dark" />
-    </item>
-
-</layer-list>
diff --git a/res/drawable/scrubber_progress_vertical_holo_dark.xml b/res/drawable/scrubber_progress_vertical_holo_dark.xml
deleted file mode 100644
index 0cc56bf..0000000
--- a/res/drawable/scrubber_progress_vertical_holo_dark.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 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.
--->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:id="@android:id/background"
-            android:drawable="@drawable/scrubber_vertical_track_holo_dark" />
-    <item android:id="@android:id/secondaryProgress">
-        <scale android:scaleHeight="100%" android:scaleGravity="bottom"
-                android:drawable="@drawable/scrubber_vertical_secondary_holo" />
-    </item>
-    <item android:id="@android:id/progress">
-        <scale android:scaleHeight="100%" android:scaleGravity="bottom"
-                android:drawable="@drawable/scrubber_vertical_primary_holo" />
-    </item>
-</layer-list>
diff --git a/res/drawable/scrubber_progress_vertical_holo_light.xml b/res/drawable/scrubber_progress_vertical_holo_light.xml
deleted file mode 100644
index 8a54edf..0000000
--- a/res/drawable/scrubber_progress_vertical_holo_light.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 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.
--->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:id="@android:id/background"
-            android:drawable="@drawable/scrubber_vertical_track_holo_light" />
-    <item android:id="@android:id/secondaryProgress">
-        <scale android:scaleHeight="100%" android:scaleGravity="bottom"
-                android:drawable="@drawable/scrubber_vertical_secondary_holo" />
-    </item>
-    <item android:id="@android:id/progress">
-        <scale android:scaleHeight="100%" android:scaleGravity="bottom"
-                android:drawable="@drawable/scrubber_vertical_primary_holo" />
-    </item>
-</layer-list>
diff --git a/res/layout-land/music_main.xml b/res/layout-land/music_main.xml
index 905a602..5153d87 100644
--- a/res/layout-land/music_main.xml
+++ b/res/layout-land/music_main.xml
@@ -86,7 +86,7 @@
                             android:ellipsize="marquee"
                             android:fadingEdge="horizontal"
                             android:text="@string/bass_boost_strength" />
-                        <com.android.musicfx.seekbar.SeekBar
+                        <SeekBar
                             android:id="@+id/bBStrengthSeekBar"
                             android:layout_width="170dip"
                             android:layout_height="wrap_content"
@@ -117,7 +117,7 @@
                             android:ellipsize="marquee"
                             android:fadingEdge="horizontal"
                             android:text="@string/virtualizer_strength" />
-                        <com.android.musicfx.seekbar.SeekBar
+                        <SeekBar
                             android:id="@+id/vIStrengthSeekBar"
                             android:layout_width="170dip"
                             android:layout_height="wrap_content"
diff --git a/res/layout/music_eq.xml b/res/layout/music_eq.xml
index 1af4c9d..309a34d 100644
--- a/res/layout/music_eq.xml
+++ b/res/layout/music_eq.xml
@@ -55,12 +55,15 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:gravity="center_vertical">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand0SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand0SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand0TextView"
             android:layout_width="50dip"
@@ -71,12 +74,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand1SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand1SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand1TextView"
             android:layout_width="50dip"
@@ -87,12 +93,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand2SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand2SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand2TextView"
             android:layout_width="50dip"
@@ -103,12 +112,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand3SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand3SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand3TextView"
             android:layout_width="50dip"
@@ -119,12 +131,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand4SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand4SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand4TextView"
             android:layout_width="50dip"
@@ -135,12 +150,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand5SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand5SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand5TextView"
             android:layout_width="50dip"
@@ -151,12 +169,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand6SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand6SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand6TextView"
             android:layout_width="50dip"
@@ -167,12 +188,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand7SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand7SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand7TextView"
             android:layout_width="50dip"
@@ -183,12 +207,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand8SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand8SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand8TextView"
             android:layout_width="50dip"
@@ -199,12 +226,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand9SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand9SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand9TextView"
             android:layout_width="50dip"
@@ -215,12 +245,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand10SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand10SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand10TextView"
             android:layout_width="50dip"
@@ -231,12 +264,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand11SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand11SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand11TextView"
             android:layout_width="50dip"
@@ -247,12 +283,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand12SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand12SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand12TextView"
             android:layout_width="50dip"
@@ -263,12 +302,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand13SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand13SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand13TextView"
             android:layout_width="50dip"
@@ -279,12 +321,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand14SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand14SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand14TextView"
             android:layout_width="50dip"
@@ -295,12 +340,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand15SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand15SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand15TextView"
             android:layout_width="50dip"
@@ -311,12 +359,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand16SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand16SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand16TextView"
             android:layout_width="50dip"
@@ -327,12 +378,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand17SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand17SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand17TextView"
             android:layout_width="50dip"
@@ -343,12 +397,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand18SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand18SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand18TextView"
             android:layout_width="50dip"
@@ -359,12 +416,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand19SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand19SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand19TextView"
             android:layout_width="50dip"
@@ -375,12 +435,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand20SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand20SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand20TextView"
             android:layout_width="50dip"
@@ -391,12 +454,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand21SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand21SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand21TextView"
             android:layout_width="50dip"
@@ -407,12 +473,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand22SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand22SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand22TextView"
             android:layout_width="50dip"
@@ -423,12 +492,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand23SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand23SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand23TextView"
             android:layout_width="50dip"
@@ -439,12 +511,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand24SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand24SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand24TextView"
             android:layout_width="50dip"
@@ -455,12 +530,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand25SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand25SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand25TextView"
             android:layout_width="50dip"
@@ -471,12 +549,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand26SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand26SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand26TextView"
             android:layout_width="50dip"
@@ -487,12 +568,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand27SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand27SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand27TextView"
             android:layout_width="50dip"
@@ -503,12 +587,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand28SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand28SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand28TextView"
             android:layout_width="50dip"
@@ -519,12 +606,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand29SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand29SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand29TextView"
             android:layout_width="50dip"
@@ -535,12 +625,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand30SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand30SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand30TextView"
             android:layout_width="50dip"
@@ -551,12 +644,15 @@
         android:orientation="vertical"
         android:layout_width="wrap_content"
         android:layout_height="match_parent">
-        <com.android.musicfx.seekbar.SeekBar
-            android:id="@+id/EQBand31SeekBar"
-            style="@style/Widget.Holo.SeekBar.Vertical"
-            android:layout_margin="@dimen/eq_slider_margin"
+        <com.android.musicfx.SeekBarRotator
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/eq_slider_height" />
+            android:layout_height="@dimen/eq_slider_height">
+            <SeekBar
+                android:id="@+id/EQBand31SeekBar"
+                android:layout_margin="@dimen/eq_slider_margin"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.android.musicfx.SeekBarRotator>
         <TextView
             android:id="@+id/EQBand31TextView"
             android:layout_width="50dip"
diff --git a/res/layout/music_main.xml b/res/layout/music_main.xml
index eabe8d9..701b675 100644
--- a/res/layout/music_main.xml
+++ b/res/layout/music_main.xml
@@ -76,7 +76,7 @@
                     android:ellipsize="marquee"
                     android:fadingEdge="horizontal"
                     android:text="@string/bass_boost_strength" />
-                <com.android.musicfx.seekbar.SeekBar
+                <SeekBar
                     android:id="@+id/bBStrengthSeekBar"
                     android:layout_width="170dip"
                     android:layout_height="wrap_content"
@@ -107,7 +107,7 @@
                     android:ellipsize="marquee"
                     android:fadingEdge="horizontal"
                     android:text="@string/virtualizer_strength" />
-                <com.android.musicfx.seekbar.SeekBar
+                <SeekBar
                     android:id="@+id/vIStrengthSeekBar"
                     android:layout_width="170dip"
                     android:layout_height="wrap_content"
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 9d1fd7d..f65a01a 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Effekte nie beskikbaar nie."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Oudio-effekte"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Effenaar"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Prop oorfone in vir hierdie effekte."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Basversterker"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Omringklank"</string>
-    <string name="pr_title" msgid="873875523196045130">"Eggo:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Bykomende kamer-eggo-effekte"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Verstek-eggo"</string>
     <string name="setup" msgid="1103677904576339192">"Stel op"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX-versterker"</string>
     <string name="user" msgid="3949460956502898057">"Gebruiker"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 34f777e..d6eca43 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"ኢፌክት አልተገኘም"</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"የድም ፅ ተፅዕኖች"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"ማመጣጠኛ"</string>
     <string name="headset_plug" msgid="4505819850289423141">"እባክህ ለእነዚህ ኢፌክቶች የጆሮ ማዳመጫዎች ሰካ፡፡"</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"ወፍራም ደምጽ መጨመር"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"የዙሪያ ድምጽ"</string>
-    <string name="pr_title" msgid="873875523196045130">"አስተጋባ"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"ተጨማሪ የማስተጋቢያ ተፅዕኖዎች"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"የአስተጋባ ቅድመ ቅምጥ"</string>
     <string name="setup" msgid="1103677904576339192">"አዋቅር"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"የኢፌክት መጨመሪያ"</string>
     <string name="user" msgid="3949460956502898057">"ተጠቃሚ"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 9e2aa66..cbb43da 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"التأثيرات غير متاحة."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"تأثيرات الصوت"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"المعادل"</string>
     <string name="headset_plug" msgid="4505819850289423141">"يمكنك توصيل سماعات الرأس للاستماع إلى هذه التأثيرات"</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"تحسين الجهير"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"الصوت المحيطي"</string>
-    <string name="pr_title" msgid="873875523196045130">"الصدى:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"التأثيرات الإضافية لصدى الغرفة"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"الإعداد المسبق للصدى"</string>
     <string name="setup" msgid="1103677904576339192">"الإعداد"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX Booster"</string>
     <string name="user" msgid="3949460956502898057">"المستخدم"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index bb58711..16aafc1 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Ефектите не са налични."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Аудиоефекти"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Еквалайзър"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Включете слушалки за тези ефекти."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Усилване на ниските честоти"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Съраунд звук"</string>
-    <string name="pr_title" msgid="873875523196045130">"Реверберация:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Допълнителни ефекти за реверберацията в стая"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Предварително задаване на реверберация"</string>
     <string name="setup" msgid="1103677904576339192">"Настройка"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX Booster"</string>
     <string name="user" msgid="3949460956502898057">"Потребител"</string>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index a87a624..c5e919a 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -18,15 +18,11 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Effekter er ikke tilgjengelige."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Lydeffekter"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Equalizer"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Sett inn hodetelefoner for å oppleve disse effektene."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Bassforsterking"</string>
     <!-- no translation found for virtualizer_strength (106561253469770096) -->
     <skip />
-    <string name="pr_title" msgid="873875523196045130">"Romklang:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Ytterligere effekter for romklang"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Forhåndsinnstilling for romklang"</string>
     <string name="setup" msgid="1103677904576339192">"Konfigurering"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX booster"</string>
     <string name="user" msgid="3949460956502898057">"Bruker"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 043dd5b..be4ea87 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Efectes no disponibles."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Efectes d\'àudio"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Equalitzador"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Connecta els auriculars per a aquests efectes."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Accentuació de baixos"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"So envoltant"</string>
-    <string name="pr_title" msgid="873875523196045130">"Reverberació:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Efectes addicionals de reverberació ambiental"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Reverberació predefinida"</string>
     <string name="setup" msgid="1103677904576339192">"Configura"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX booster"</string>
     <string name="user" msgid="3949460956502898057">"Usuari"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 7e275a0..16b55df 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -18,16 +18,12 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Efekty nejsou k dispozici."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Zvukové efekty"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Ekvalizér"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Tyto efekty lze aktivovat pouze se zapojenými sluchátky."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Zvýraznění basů"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Prostorový zvuk"</string>
-    <string name="pr_title" msgid="873875523196045130">"Dozvuk:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Efekty dozvuku v místnosti"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Dozvuk (předvolba)"</string>
     <string name="setup" msgid="1103677904576339192">"Konfigurace"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX Booster"</string>
-    <string name="user" msgid="3949460956502898057">"Uživatel"</string>
+    <string name="user" msgid="3949460956502898057">"Vlastní"</string>
     <string name="picker_title" msgid="8464126693702817261">"Ovládací panel hudebních efektů"</string>
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index ed144d9..85a0094 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -18,16 +18,12 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Effekterne er ikke tilgængelige."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Lydeffekter"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Equalizer"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Tilslut hovedtelefoner for at få disse effekter."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Bass boost"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Surroundsound"</string>
-    <string name="pr_title" msgid="873875523196045130">"Reverb"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Ekstra rumklangseffekter"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Forudindstilling af rumklang"</string>
     <string name="setup" msgid="1103677904576339192">"Opsætning"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX booster"</string>
-    <string name="user" msgid="3949460956502898057">"Bruger"</string>
+    <string name="user" msgid="3949460956502898057">"Tilpasset"</string>
     <string name="picker_title" msgid="8464126693702817261">"Kontrolpanel for musikeffekter"</string>
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index b453881..031e2aa 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Effekte nicht verfügbar"</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Audio-Effekte"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Equalizer"</string>
-    <string name="headset_plug" msgid="4505819850289423141">"Für diese Effekte benötigen Sie Kopfhörer."</string>
+    <string name="headset_plug" msgid="4505819850289423141">"Für diese Effekte brauchst du Kopfhörer."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Bassverstärkung"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Surround-Sound"</string>
-    <string name="pr_title" msgid="873875523196045130">"Hall:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Zusätzliche Nachhalleffekte"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Voreinstellung für Hall"</string>
     <string name="setup" msgid="1103677904576339192">"Einrichtung"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX-Verstärker"</string>
     <string name="user" msgid="3949460956502898057">"Nutzer"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 96c284b..5775f22 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Τα εφέ δεν είναι διαθέσιμα."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Εφέ ήχου"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Ισοσταθμιστής"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Συνδέστε τα ακουστικά για αυτά τα εφέ."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Ενίσχυση μπάσων"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Περιφερειακός ήχος"</string>
-    <string name="pr_title" msgid="873875523196045130">"Αντήχηση:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Πρόσθετα εφέ αντήχησης δωματίου"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Προεπιλογή αντήχησης"</string>
     <string name="setup" msgid="1103677904576339192">"Ρύθμιση"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX Booster"</string>
     <string name="user" msgid="3949460956502898057">"Xρήστης"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
new file mode 100644
index 0000000..842d7e0
--- /dev/null
+++ b/res/values-en-rAU/strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2010-2011 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
+    <string name="no_effects" msgid="5067916002004255814">"Effects not available."</string>
+    <string name="eq_dialog_title" msgid="2020244436368289652">"Equaliser"</string>
+    <string name="headset_plug" msgid="4505819850289423141">"Plug in headphones for these effects."</string>
+    <string name="bass_boost_strength" msgid="882301530007752270">"Bass boost"</string>
+    <string name="virtualizer_strength" msgid="106561253469770096">"Surround sound"</string>
+    <string name="setup" msgid="1103677904576339192">"Setup"</string>
+    <string name="ci_extreme" msgid="1736938429763948084">"FX booster"</string>
+    <string name="user" msgid="3949460956502898057">"User"</string>
+    <string name="picker_title" msgid="8464126693702817261">"Music effects control panel"</string>
+</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 2cec2c9..842d7e0 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Effects not available."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Audio effects"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Equaliser"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Plug in headphones for these effects."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Bass boost"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Surround sound"</string>
-    <string name="pr_title" msgid="873875523196045130">"Reverb:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Additional room reverberation effects"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Reverb preset"</string>
     <string name="setup" msgid="1103677904576339192">"Setup"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX booster"</string>
     <string name="user" msgid="3949460956502898057">"User"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 2cec2c9..842d7e0 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Effects not available."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Audio effects"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Equaliser"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Plug in headphones for these effects."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Bass boost"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Surround sound"</string>
-    <string name="pr_title" msgid="873875523196045130">"Reverb:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Additional room reverberation effects"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Reverb preset"</string>
     <string name="setup" msgid="1103677904576339192">"Setup"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX booster"</string>
     <string name="user" msgid="3949460956502898057">"User"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 2cb9482..757293d 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Efectos no disponibles"</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Efectos de audio"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Ecualizador"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Conecta los auriculares para usar estos efectos."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Refuerzo de graves"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Sonido envolvente"</string>
-    <string name="pr_title" msgid="873875523196045130">"Reverberación:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Otros efectos de reverberación de sala"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Ajustes predeterminados de reverberación"</string>
     <string name="setup" msgid="1103677904576339192">"Configuración"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX booster"</string>
     <string name="user" msgid="3949460956502898057">"Usuario"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index ceb7e33..05bfea3 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Efectos no disponibles"</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Efectos de audio"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Ecualizador"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Para disfrutar de los efectos, debes conectar los auriculares."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Refuerzo de graves"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Sonido envolvente"</string>
-    <string name="pr_title" msgid="873875523196045130">"Reverberación:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Otros efectos de reverberación de sala"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Ajustes predeterminados de reverberación"</string>
     <string name="setup" msgid="1103677904576339192">"Configuración"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX booster"</string>
     <string name="user" msgid="3949460956502898057">"Usuario"</string>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index 60c7fb7..779e0e1 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Efektid pole saadaval"</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Heliefektid"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Ekvalaiser"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Nende efektide jaoks ühendage kõrvaklapid"</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Bassivõimendi"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Ruumiline heli"</string>
-    <string name="pr_title" msgid="873875523196045130">"Järelkõla:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Täiendavad ruumi järelkõla efektid"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Järelkõla eelseade"</string>
     <string name="setup" msgid="1103677904576339192">"Seadista"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX-võimendi"</string>
     <string name="user" msgid="3949460956502898057">"Kasutaja"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index f0a41fc..c5a4e19 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"جلوه‌ها در دسترس نیستند."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"جلوه‌های صوتی"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"اکولایزر"</string>
     <string name="headset_plug" msgid="4505819850289423141">"برای این جلوه‌ها هدفون را وصل کنید."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"تقویت باس"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"صدای فراگیر"</string>
-    <string name="pr_title" msgid="873875523196045130">"طنین:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"جلوه‌های طنین اضافی اتاق"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"پیش‌تنظیم طنین"</string>
     <string name="setup" msgid="1103677904576339192">"تنظیم"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"تقویت‌کننده FX"</string>
     <string name="user" msgid="3949460956502898057">"کاربر"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 193357e..4678d71 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Tehosteet eivät ole käytettävissä."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Äänitehosteet"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Taajuuskorjain"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Liitä kuulokkeet kuullaksesi tehosteet."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Basson tehostus"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Surround-ääni"</string>
-    <string name="pr_title" msgid="873875523196045130">"Kaiku:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Muut kaikutehosteet"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Kaiku"</string>
     <string name="setup" msgid="1103677904576339192">"Alkutoimet"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX booster"</string>
     <string name="user" msgid="3949460956502898057">"Käyttäjä"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 9e28a50..22ddc94 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Effets indisponibles."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Effets audio"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Égaliseur"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Veuillez brancher un casque pour ces effets."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Amplification des basses"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Son ambiophonique"</string>
-    <string name="pr_title" msgid="873875523196045130">"Réverbération :"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Autres effets de réverbération de la pièce"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Préréglage de la réverbération"</string>
     <string name="setup" msgid="1103677904576339192">"Configuration"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX booster"</string>
     <string name="user" msgid="3949460956502898057">"Utilisateur"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index d88c993..720fd65 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Effets indisponibles."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Effets audio"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Égaliseur"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Veuillez brancher un casque pour ces effets."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Amplification des basses"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Son surround"</string>
-    <string name="pr_title" msgid="873875523196045130">"Réverbération :"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Autres effets de réverbération de la pièce"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Préréglage de la réverbération"</string>
     <string name="setup" msgid="1103677904576339192">"Configuration"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX booster"</string>
     <string name="user" msgid="3949460956502898057">"Utilisateur"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index b730358..4e0d247 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"प्रभाव उपलब्ध नहीं."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"ऑडियो प्रभाव"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"इक्वलाइज़र"</string>
     <string name="headset_plug" msgid="4505819850289423141">"इन प्रभावों के लिए हेडफ़ोन प्‍लग इन करें."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"बेस बढ़ाएं"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"सराउंड साउंड"</string>
-    <string name="pr_title" msgid="873875523196045130">"गूंज:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"अतिरिक्‍त कक्ष अनुगूंज प्रभाव"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"गूंज प्रीसेट"</string>
     <string name="setup" msgid="1103677904576339192">"सेटअप"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX बूस्‍टर"</string>
     <string name="user" msgid="3949460956502898057">"उपयोगकर्ता"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index cd86a6d..711893b 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Efekti nisu dostupni."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Zvučni efekti"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Ekvalizator"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Priključite slušalice za ove efekte."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Pojačanje basova"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Okružujući zvuk"</string>
-    <string name="pr_title" msgid="873875523196045130">"Odjek:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Dodatni efekti odjeka u prostoriji"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Unaprijed definirani odjek"</string>
     <string name="setup" msgid="1103677904576339192">"Postavljanje"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX booster"</string>
     <string name="user" msgid="3949460956502898057">"Korisnik"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 9d3cc38..26ed027 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Nem állnak rendelkezésre effektek."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Hangeffektusok"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Hangszín"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Dugd be a fejhallgatót ezekhez az effektekhez."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Mélyhangkiemelő"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Térhatású hangzás"</string>
-    <string name="pr_title" msgid="873875523196045130">"Visszhang:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"További visszhang hatások"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Előre beállított visszhang"</string>
     <string name="setup" msgid="1103677904576339192">"Beállítás"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX booster"</string>
     <string name="user" msgid="3949460956502898057">"Felhasználó"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index af87ab1..2d91dbf 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Efek tidak tersedia."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Efek audio"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Ekualizer"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Pasang headphone untuk efek ini."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Peningkatan bass"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Suara surround"</string>
-    <string name="pr_title" msgid="873875523196045130">"Gema:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Efek gema ruangan tambahan"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Prasetel gema"</string>
     <string name="setup" msgid="1103677904576339192">"Penyiapan"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"Penguat FX"</string>
     <string name="user" msgid="3949460956502898057">"Pengguna"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 07aa5b0..e66bb44 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Effetti non disponibili."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Effetti audio"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Equalizzatore"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Collega le cuffie per questi effetti."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Bassi più intensi"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Audio surround"</string>
-    <string name="pr_title" msgid="873875523196045130">"Riverbero:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Altri effetti riverbero stanza"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Preimpostazione riverbero"</string>
     <string name="setup" msgid="1103677904576339192">"Configurazione"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX booster"</string>
     <string name="user" msgid="3949460956502898057">"Utente"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 29f6ed2..df98b75 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"האפקטים אינם זמינים."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"אפקטי אודיו"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Equalizer"</string>
     <string name="headset_plug" msgid="4505819850289423141">"חבר אוזניות כדי לשמוע אפקטים אלה."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"הגברת הבס"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"סראונד"</string>
-    <string name="pr_title" msgid="873875523196045130">"הדהוד:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"אפקטים נוספים של הדהוד בחדר"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"הגדרת הדהוד קבועה מראש"</string>
     <string name="setup" msgid="1103677904576339192">"התקן"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX Booster"</string>
     <string name="user" msgid="3949460956502898057">"משתמש"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 4976070..cbb2411 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"効果は利用できません。"</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"オーディオ効果"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"イコライザー"</string>
     <string name="headset_plug" msgid="4505819850289423141">"これらの効果はヘッドホンで聴いてください。"</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"バスブースト"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"サラウンドサウンド"</string>
-    <string name="pr_title" msgid="873875523196045130">"リバーブ:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"その他のルームリバーブ効果"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"リバーブプリセット"</string>
     <string name="setup" msgid="1103677904576339192">"セットアップ"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FXブースター"</string>
     <string name="user" msgid="3949460956502898057">"ユーザー"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 9683e08..ac5b4b5 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"효과를 사용할 수 없습니다."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"오디오 효과"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"이퀄라이저"</string>
     <string name="headset_plug" msgid="4505819850289423141">"이 효과를 사용하려면 헤드폰을 연결하시기 바랍니다."</string>
-    <string name="bass_boost_strength" msgid="882301530007752270">"Bass boost"</string>
+    <string name="bass_boost_strength" msgid="882301530007752270">"중저음 강화"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"서라운드 사운드"</string>
-    <string name="pr_title" msgid="873875523196045130">"반향:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"추가 실내 반향 효과"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"잔향 사전 설정"</string>
     <string name="setup" msgid="1103677904576339192">"설정"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX 부스터"</string>
     <string name="user" msgid="3949460956502898057">"사용자"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 2e87862..8d745ee 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Efektai nepasiekiami."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Garso efektai"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Vienodintuvas"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Įkiškite ausines, kad būtų pateikti šie efektai."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Žemų tonų išryškinimas"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Erdvinis garsas"</string>
-    <string name="pr_title" msgid="873875523196045130">"Dirbtinis garso fonas:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Papildomi aplinkos dirbtinio garso fono efektai"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Išankstinis dirbtinio garso fono nustatymas"</string>
     <string name="setup" msgid="1103677904576339192">"Sąranka"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX booster"</string>
     <string name="user" msgid="3949460956502898057">"Naudotojas"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 733d438..7b63d3c 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Efekti nav pieejami."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Audio efekti"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Ekvalaizers"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Pievienojiet austiņas, lai dzirdētu šos efektus."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Basu pastiprināšana"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Ieskaujošā skaņa"</string>
-    <string name="pr_title" msgid="873875523196045130">"Reverberācija:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Telpas reverberācijas papildu efekti"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Reverberācijas iepriekšēja iestatīšana"</string>
     <string name="setup" msgid="1103677904576339192">"Iestatīšana"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX Booster"</string>
     <string name="user" msgid="3949460956502898057">"Lietotājs"</string>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index 66bd3c1..7a94e00 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Kesan tidak tersedia."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Kesan audio"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Penyama"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Pasangkan fon kepala untuk kesan ini."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Galak bes"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Bunyi keliling"</string>
-    <string name="pr_title" msgid="873875523196045130">"Gema:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Kesan gema bilik tambahan"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Pratetap gema"</string>
     <string name="setup" msgid="1103677904576339192">"Persediaan"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"Penggalak FX"</string>
     <string name="user" msgid="3949460956502898057">"Pengguna"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 923af46..e9af104 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Effekter er ikke tilgjengelige."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Lydeffekter"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Equalizer"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Sett inn hodetelefoner for å oppleve disse effektene."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Bassforsterking"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Surround-lyd"</string>
-    <string name="pr_title" msgid="873875523196045130">"Romklang:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Ytterligere effekter for romklang"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Forhåndsinnstilling for romklang"</string>
     <string name="setup" msgid="1103677904576339192">"Konfigurering"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"Effekt"</string>
     <string name="user" msgid="3949460956502898057">"Bruker"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 9de8cd5..3426acf 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Effecten niet beschikbaar."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Audio-effecten"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Equalizer"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Gebruik een hoofdtelefoon om deze effecten te beluisteren."</string>
-    <string name="bass_boost_strength" msgid="882301530007752270">"Lage-tonenversterking"</string>
+    <string name="bass_boost_strength" msgid="882301530007752270">"Basversterking"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Surround sound"</string>
-    <string name="pr_title" msgid="873875523196045130">"Galm:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Extra ruimtelijke galmeffecten"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Galm vooraf ingesteld"</string>
     <string name="setup" msgid="1103677904576339192">"Instellen"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX Booster"</string>
     <string name="user" msgid="3949460956502898057">"Gebruiker"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 506a781..751bf1e 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Efekty niedostępne"</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Efekty dźwiękowe"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Equalizer"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Podłącz słuchawki, aby usłyszeć te efekty."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Basy"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Dźwięk przestrzenny"</string>
-    <string name="pr_title" msgid="873875523196045130">"Pogłos:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Dodatkowe efekty pogłosu w pomieszczeniu"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Gotowe ustawienie pogłosu"</string>
     <string name="setup" msgid="1103677904576339192">"Konfiguracja"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"Wzmocnienie"</string>
     <string name="user" msgid="3949460956502898057">"Własne"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 3f3a507..f604080 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Efeitos não disponíveis."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Efeitos de áudio"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Equalizador"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Ligue os auscultadores para estes efeitos."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Aumento de graves"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Som surround"</string>
-    <string name="pr_title" msgid="873875523196045130">"Repercussão:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Efeitos de repercussão da sala adicionais"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Predefinição de reverberação"</string>
     <string name="setup" msgid="1103677904576339192">"Configuração"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"Amplificador FX"</string>
     <string name="user" msgid="3949460956502898057">"Utilizador"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 4cda20f..e2b6661 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Efeitos não disponíveis."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Efeitos de áudio"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Equalizador"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Conecte fones de ouvido para ativar estes efeitos."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Realçar graves"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Sistema surround"</string>
-    <string name="pr_title" msgid="873875523196045130">"Reverberação:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Efeitos adicionais de reverberação do ambiente"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Predefinição de reverberação"</string>
     <string name="setup" msgid="1103677904576339192">"Configuração"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"Amplificador FX"</string>
     <string name="user" msgid="3949460956502898057">"Usuário"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 0e1c591..405f534 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -18,15 +18,11 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Efectele nu sunt disponibile."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Efecte audio"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Egalizator"</string>
-    <string name="headset_plug" msgid="4505819850289423141">"Pentru aceste efecte trebuie să conectaţi căştile."</string>
+    <string name="headset_plug" msgid="4505819850289423141">"Pentru aceste efecte trebuie să conectați căștile."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Amplificare bas"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Sunet surround"</string>
-    <string name="pr_title" msgid="873875523196045130">"Reverberaţii:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Efecte suplimentare de reverberaţie în încăpere"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Presetare pentru reverberaţii"</string>
-    <string name="setup" msgid="1103677904576339192">"Configuraţi"</string>
+    <string name="setup" msgid="1103677904576339192">"Configurați"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"Amplificator FX"</string>
     <string name="user" msgid="3949460956502898057">"Utilizator"</string>
     <string name="picker_title" msgid="8464126693702817261">"Pan. de cont. cu efecte muz."</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 2b7f2da..d40be0c 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Эффекты недоступны."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Аудиоэффекты"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Эквалайзер"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Чтобы услышать эти эффекты, подключите наушники."</string>
-    <string name="bass_boost_strength" msgid="882301530007752270">"Усиление нижних частот"</string>
+    <string name="bass_boost_strength" msgid="882301530007752270">"Усиление басов"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Объемный звук"</string>
-    <string name="pr_title" msgid="873875523196045130">"Реверберация:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Дополнительные эффекты реверберации в помещении"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Шаблон ревербератора"</string>
     <string name="setup" msgid="1103677904576339192">"Настройка"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"Усилитель FX"</string>
     <string name="user" msgid="3949460956502898057">"Своя настройка"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 62c2f31..2f72191 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -18,16 +18,12 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Efekty nie sú k dispozícii."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Zvukové efekty"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Ekvalizér"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Ak chcete počuť tieto efekty, pripojte slúchadlá"</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Zosilnenie basov"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Priestorový zvuk"</string>
-    <string name="pr_title" msgid="873875523196045130">"Ozvena:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Ďalšie efekty ozveny v miestnosti"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Preddefinované nastavenie ozveny"</string>
     <string name="setup" msgid="1103677904576339192">"Nastavenie"</string>
-    <string name="ci_extreme" msgid="1736938429763948084">"FX booster"</string>
-    <string name="user" msgid="3949460956502898057">"Používateľ"</string>
+    <string name="ci_extreme" msgid="1736938429763948084">"FX Booster"</string>
+    <string name="user" msgid="3949460956502898057">"Vlastné"</string>
     <string name="picker_title" msgid="8464126693702817261">"Ovládací panel hudobných efektov"</string>
 </resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index c836f47..49dfd1c 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Učinki niso na voljo."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Zvočni učinki"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Izenačevalnik"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Za te učinke priključite slušalke."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Povečanje nizkih tonov"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Prostorski zvok"</string>
-    <string name="pr_title" msgid="873875523196045130">"Odmev:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Dodatni učinki za odmev v prostoru"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Prednastavljen odmev"</string>
     <string name="setup" msgid="1103677904576339192">"Namestitev"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"Izboljšanje učinkov"</string>
     <string name="user" msgid="3949460956502898057">"Uporabnik"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 42ce27d..ac27ddb 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Ефекти нису доступни."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Аудио ефекти"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Еквилајзер"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Прикључите слушалице за ове ефекте."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Појачавање басова"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Звучни систем"</string>
-    <string name="pr_title" msgid="873875523196045130">"Одјек:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Додатни ефекти одјека у простору"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Претподешавање реверба"</string>
     <string name="setup" msgid="1103677904576339192">"Подешавање"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX booster"</string>
     <string name="user" msgid="3949460956502898057">"Корисник"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index e7b371f..031642c 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Effekter är inte tillgängliga."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Ljudeffekter"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Equalizer"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Du måste ansluta hörlurar för att kunna höra effekterna."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Basförstärkning"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Surroundljud"</string>
-    <string name="pr_title" msgid="873875523196045130">"Reverb:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Ytterligare effekter med rumsreverb"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Förinställning för reverb"</string>
     <string name="setup" msgid="1103677904576339192">"Konfiguration"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX Booster"</string>
     <string name="user" msgid="3949460956502898057">"Användare"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 77b2f48..dc070de 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MuzikiFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Athari hazipatikani"</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Athari za sauti"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Kisawazishi"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Kwa athari hizi weka vipokea sauti."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Kuongeza besi"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Sauti ya mzunguko"</string>
-    <string name="pr_title" msgid="873875523196045130">"Rivabu:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Athari za chumba cha ziada cha revabaresheni"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Seti upya Rivabu"</string>
     <string name="setup" msgid="1103677904576339192">"Weka"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"Nyongeza ya FX"</string>
     <string name="user" msgid="3949460956502898057">"Mtumiaji"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index b8cec19..725ae1b 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"ไม่มีเอฟเฟ็กต์"</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"เอฟเฟ็กต์เสียง"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"อีควอไลเซอร์"</string>
     <string name="headset_plug" msgid="4505819850289423141">"ใช้หูฟังสำหรับเอฟเฟ็กต์เหล่านี้"</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"เพิ่มเสียงเบส"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"เสียงเซอร์ราวด์"</string>
-    <string name="pr_title" msgid="873875523196045130">"เสียงก้อง:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"เอฟเฟ็กต์เสียงก้องในห้องเพิ่มเติม"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"เสียงก้องที่ตั้งล่วงหน้า"</string>
     <string name="setup" msgid="1103677904576339192">"ตั้งค่าระบบ"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX Booster"</string>
     <string name="user" msgid="3949460956502898057">"ผู้ใช้"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index b533ae5..befe07b 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Hindi available ang mga effect."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Mga effect ng audio"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Equalizer"</string>
     <string name="headset_plug" msgid="4505819850289423141">"I-plug in ang mga headphone para sa mga effect na ito."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Bass Boost"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Surround sound"</string>
-    <string name="pr_title" msgid="873875523196045130">"Reverb:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Karagdagang mga effect sa reverberation ng kuwarto"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Reverb na preset"</string>
     <string name="setup" msgid="1103677904576339192">"Setup"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX booster"</string>
     <string name="user" msgid="3949460956502898057">"User"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 1a54635..31e9f3a 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Efektler kullanılamıyor."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Ses efektleri"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Ekolayzer"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Bu efektler için kulaklığı takın."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Güçlü bas"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Surround ses"</string>
-    <string name="pr_title" msgid="873875523196045130">"Yankı:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Diğer oda yankısı efektleri"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Yankı ön ayarı"</string>
     <string name="setup" msgid="1103677904576339192">"Kurulum"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX booster"</string>
     <string name="user" msgid="3949460956502898057">"Kullanıcı"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index bfdee89..c9e05b8 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Ефекти не доступні"</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Аудіоефекти"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Еквалайзер"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Для цих ефектів підключіть гарнітуру."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Підсилення басів"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Об’ємний звук"</string>
-    <string name="pr_title" msgid="873875523196045130">"Акустика:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Додаткові акустичні ефекти в приміщенні"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Попередні налаштування акустики"</string>
     <string name="setup" msgid="1103677904576339192">"Налаштування"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX booster"</string>
     <string name="user" msgid="3949460956502898057">"Користувач"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 3f38126..d376596 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Không có hiệu ứng."</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Hiệu ứng âm thanh"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Bộ hiệu chỉnh"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Cắm tai nghe đối với những hiệu ứng này."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Tăng âm trầm"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Âm thanh vòm"</string>
-    <string name="pr_title" msgid="873875523196045130">"Âm vang:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Hiệu ứng âm vang trong phòng bổ sung"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Giá trị âm vang đặt trước"</string>
     <string name="setup" msgid="1103677904576339192">"Thiết lập"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"Bộ tăng FX"</string>
     <string name="user" msgid="3949460956502898057">"Người dùng"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index d27d00f..042476c 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"没有音效。"</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"音效"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"均衡器"</string>
     <string name="headset_plug" msgid="4505819850289423141">"插上耳机感受各种音效。"</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"低音增强"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"环绕声"</string>
-    <string name="pr_title" msgid="873875523196045130">"混响效果："</string>
-    <string name="pr_summary" msgid="7457279522425453515">"其他室内混响效果"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"混响效果预设"</string>
     <string name="setup" msgid="1103677904576339192">"设置"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"音效增强器"</string>
     <string name="user" msgid="3949460956502898057">"用户"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index e1adf42..973c185 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"無效果。"</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"音效"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"等化器"</string>
     <string name="headset_plug" msgid="4505819850289423141">"如要體驗這些效果，請插入耳機。"</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"重低音"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"環迴音響"</string>
-    <string name="pr_title" msgid="873875523196045130">"回音："</string>
-    <string name="pr_summary" msgid="7457279522425453515">"額外空間回音效果"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"回響預設"</string>
     <string name="setup" msgid="1103677904576339192">"設定"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX 輔助器"</string>
     <string name="user" msgid="3949460956502898057">"用戶"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 5df963e..db709e3 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"無法使用效果。"</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"音效"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"等化器"</string>
     <string name="headset_plug" msgid="4505819850289423141">"接上耳機即可體驗這些效果。"</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"低音加強"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"環繞音效"</string>
-    <string name="pr_title" msgid="873875523196045130">"回響："</string>
-    <string name="pr_summary" msgid="7457279522425453515">"額外空間回響效果"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"回響預設"</string>
     <string name="setup" msgid="1103677904576339192">"設定"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"FX 輔助器"</string>
     <string name="user" msgid="3949460956502898057">"使用者"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 9bf5df5..8d02bba 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -18,14 +18,10 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="5717136097222561957">"MusicFX"</string>
     <string name="no_effects" msgid="5067916002004255814">"Imiphumela ayitholakali"</string>
-    <string name="main_toggle_effects_title" msgid="612896145300512593">"Imphumelo Yomsindo"</string>
     <string name="eq_dialog_title" msgid="2020244436368289652">"Isilinganisi somsindo"</string>
     <string name="headset_plug" msgid="4505819850289423141">"Xhuma okwasekhanda kule miphumela."</string>
     <string name="bass_boost_strength" msgid="882301530007752270">"Bass boost"</string>
     <string name="virtualizer_strength" msgid="106561253469770096">"Umsindo ozungelezile"</string>
-    <string name="pr_title" msgid="873875523196045130">"Reverb:"</string>
-    <string name="pr_summary" msgid="7457279522425453515">"Ikamelo elengeziwe lemphumela elethwayo"</string>
-    <string name="pr_dialog_title" msgid="8080282254796293452">"Thumela i-Preset"</string>
     <string name="setup" msgid="1103677904576339192">"Isethaphu"</string>
     <string name="ci_extreme" msgid="1736938429763948084">"Ukulekelela kwe-FX"</string>
     <string name="user" msgid="3949460956502898057">"Umsebenzisi"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 20a871b..143efa5 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -19,14 +19,10 @@
 
     <!-- ControlPanelMusic strings -->
     <string name="no_effects">Effects not available.</string>
-    <string name="main_toggle_effects_title">Audio effects</string>
     <string name="eq_dialog_title">Equalizer</string>
     <string name="headset_plug">Plug in headphones for these effects.</string>
     <string name="bass_boost_strength">Bass boost</string>
     <string name="virtualizer_strength">Surround sound</string>
-    <string name="pr_title">Reverb:</string>
-    <string name="pr_summary">Additional room reverberation effects</string>
-    <string name="pr_dialog_title">Reverb preset</string>
     <string name="setup">Setup</string>
     <string name="ci_extreme">FX booster</string>
     <string name="user">User</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
deleted file mode 100644
index f92c230..0000000
--- a/res/values/styles.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<resources>
-    <style name="Widget.Holo.SeekBar.Vertical" parent="@android:Widget.Holo.SeekBar">
-        <item name="android:indeterminateOnly">false</item>
-        <item name="android:progressDrawable">@drawable/scrubber_progress_vertical_holo_dark</item>
-<!-- not public       <item name="android:indeterminateDrawable">@android:drawable/scrubber_progress_horizontal_holo_dark</item> -->
-        <item name="android:minWidth">33dip</item>
-        <item name="android:maxWidth">33dip</item>
-<!-- not public        <item name="android:thumb">@android:drawable/scrubber_control_selector_holo</item> -->
-        <item name="android:thumbOffset">16dip</item>
-        <item name="android:focusable">true</item>
-        <item name="android:paddingLeft">0dip</item>
-        <item name="android:paddingRight">0dip</item>
-        <item name="android:paddingTop">16dip</item>
-        <item name="android:paddingBottom">16dip</item>
-    </style>
-</resources>
diff --git a/src/com/android/musicfx/ActivityMusic.java b/src/com/android/musicfx/ActivityMusic.java
index 6f9718a..328a923 100644
--- a/src/com/android/musicfx/ActivityMusic.java
+++ b/src/com/android/musicfx/ActivityMusic.java
@@ -17,8 +17,6 @@
 package com.android.musicfx;
 
 import com.android.audiofx.OpenSLESConstants;
-import com.android.musicfx.seekbar.SeekBar;
-import com.android.musicfx.seekbar.SeekBar.OnSeekBarChangeListener;
 
 import android.app.ActionBar;
 import android.app.Activity;
@@ -52,6 +50,8 @@
 import android.widget.LinearLayout;
 import android.widget.ListView;
 import android.widget.RelativeLayout;
+import android.widget.SeekBar;
+import android.widget.SeekBar.OnSeekBarChangeListener;
 import android.widget.Spinner;
 import android.widget.Switch;
 import android.widget.TextView;
@@ -73,6 +73,16 @@
     private final static int EQUALIZER_MAX_BANDS = 32;
 
     /**
+     * Max levels per EQ band in millibels (1 dB = 100 mB)
+     */
+    private final static int EQUALIZER_MAX_LEVEL = 1000;
+
+    /**
+     * Min levels per EQ band in millibels (1 dB = 100 mB)
+     */
+    private final static int EQUALIZER_MIN_LEVEL = -1000;
+
+    /**
      * Indicates if Virtualizer effect is supported.
      */
     private boolean mVirtualizerSupported;
@@ -550,7 +560,7 @@
         final int count = viewGroup.getChildCount();
         for (int i = 0; i < count; i++) {
             final View view = viewGroup.getChildAt(i);
-            if ((view instanceof LinearLayout) || (view instanceof RelativeLayout)) {
+            if ((view instanceof ViewGroup)) {
                 final ViewGroup vg = (ViewGroup) view;
                 setEnabledAllChildren(vg, enabled);
             }
@@ -633,8 +643,8 @@
                 mCallingPackageName, mAudioSession, ControlPanelEffect.Key.eq_center_freq);
         final int[] bandLevelRange = ControlPanelEffect.getParameterIntArray(mContext,
                 mCallingPackageName, mAudioSession, ControlPanelEffect.Key.eq_level_range);
-        mEqualizerMinBandLevel = bandLevelRange[0];
-        final int mEqualizerMaxBandLevel = bandLevelRange[1];
+        mEqualizerMinBandLevel = (int) Math.max(EQUALIZER_MIN_LEVEL, bandLevelRange[0]);
+        final int mEqualizerMaxBandLevel = (int) Math.min(EQUALIZER_MAX_LEVEL, bandLevelRange[1]);
 
         for (int band = 0; band < mNumberEqualizerBands; band++) {
             // Unit conversion from mHz to Hz and use k prefix if necessary to display
@@ -661,13 +671,12 @@
             eqcontainer.findViewById(EQViewElementIds[band][1]).setVisibility(View.GONE);
         }
 
-        // TODO: get the actual values from somewhere
         TextView tv = (TextView) findViewById(R.id.maxLevelText);
-        tv.setText("+15 dB");
+        tv.setText(String.format("+%d dB", (int) Math.ceil(mEqualizerMaxBandLevel / 100)));
         tv = (TextView) findViewById(R.id.centerLevelText);
         tv.setText("0 dB");
         tv = (TextView) findViewById(R.id.minLevelText);
-        tv.setText("-15 dB");
+        tv.setText(String.format("%d dB", (int) Math.floor(mEqualizerMinBandLevel / 100)));
         equalizerUpdateDisplay();
     }
 
diff --git a/src/com/android/musicfx/ControlPanelEffect.java b/src/com/android/musicfx/ControlPanelEffect.java
index dde0a5e..3db4bc3 100644
--- a/src/com/android/musicfx/ControlPanelEffect.java
+++ b/src/com/android/musicfx/ControlPanelEffect.java
@@ -127,14 +127,14 @@
             14000000 };
     private final static short[] EQUALIZER_PRESET_CIEXTREME_BAND_LEVEL = { 0, 800, 400, 100, 1000 };
     private final static short[] EQUALIZER_PRESET_USER_BAND_LEVEL_DEFAULT = { 0, 0, 0, 0, 0 };
-    private final static short[][] EQUALIZER_PRESET_OPENSL_ES_BAND_LEVEL_DEFAULT = new short[EQUALIZER_NUMBER_PRESETS_DEFAULT][EQUALIZER_NUMBER_BANDS_DEFAULT];
 
     // EQ effect properties which are invariable over all EQ effects sessions
     private static short[] mEQBandLevelRange = EQUALIZER_BAND_LEVEL_RANGE_DEFAULT;
     private static short mEQNumBands = EQUALIZER_NUMBER_BANDS_DEFAULT;
     private static int[] mEQCenterFreq = EQUALIZER_CENTER_FREQ_DEFAULT;
     private static short mEQNumPresets = EQUALIZER_NUMBER_PRESETS_DEFAULT;
-    private static short[][] mEQPresetOpenSLESBandLevel = EQUALIZER_PRESET_OPENSL_ES_BAND_LEVEL_DEFAULT;
+    private static short[][] mEQPresetOpenSLESBandLevel =
+            new short[EQUALIZER_NUMBER_PRESETS_DEFAULT][EQUALIZER_NUMBER_BANDS_DEFAULT];
     private static String[] mEQPresetNames;
     private static boolean mIsEQInitialized = false;
     private final static Object mEQInitLock = new Object();
@@ -251,17 +251,16 @@
 
                         // When there was a failure set some good defaults
                         if (!mIsEQInitialized) {
+                            Log.e(TAG, "Error retrieving default EQ values, setting all presets"
+                                    + " to flat response");
                             mEQPresetOpenSLESBandLevel = new short[mEQNumPresets][mEQNumBands];
                             for (short preset = 0; preset < mEQNumPresets; preset++) {
                                 // Init preset names to a dummy name
                                 mEQPresetNames[preset] = prefs.getString(
                                         Key.eq_preset_name.toString() + preset,
                                         EQUALIZER_PRESET_NAME_DEFAULT + preset);
-                                if (preset < EQUALIZER_PRESET_OPENSL_ES_BAND_LEVEL_DEFAULT.length) {
-                                    mEQPresetOpenSLESBandLevel[preset] = Arrays.copyOf(
-                                            EQUALIZER_PRESET_OPENSL_ES_BAND_LEVEL_DEFAULT[preset],
-                                            mEQNumBands);
-                                }
+                                mEQPresetOpenSLESBandLevel[preset] = Arrays.copyOf(
+                                        EQUALIZER_PRESET_USER_BAND_LEVEL_DEFAULT, mEQNumBands);
                             }
                         }
                     }
@@ -728,7 +727,7 @@
                             EQUALIZER_NUMBER_PRESETS_DEFAULT);
 
                     final short[][] eQPresetOpenSLESBandLevelDefault = Arrays.copyOf(
-                            EQUALIZER_PRESET_OPENSL_ES_BAND_LEVEL_DEFAULT, numBands);
+                            mEQPresetOpenSLESBandLevel, numPresets);
                     final short[] eQPresetCIExtremeBandLevelDefault = Arrays.copyOf(
                             EQUALIZER_PRESET_CIEXTREME_BAND_LEVEL, numBands);
                     final short[] eQPresetUserBandLevelDefault = Arrays.copyOf(
diff --git a/src/com/android/musicfx/SeekBarRotator.java b/src/com/android/musicfx/SeekBarRotator.java
new file mode 100644
index 0000000..d4ef0ca
--- /dev/null
+++ b/src/com/android/musicfx/SeekBarRotator.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2015 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.
+ */
+
+package com.android.musicfx;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+
+
+/*
+ *  This ViewGroup contains a single view, which will be rotated by 90 degrees counterclockwise.
+ */
+
+public class SeekBarRotator extends ViewGroup {
+
+
+    public SeekBarRotator(Context context) {
+        super(context);
+    }
+
+    public SeekBarRotator(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public SeekBarRotator(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    public SeekBarRotator(Context context, AttributeSet attrs, int defStyleAttr,
+            int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        final View child = getChildAt(0);
+
+        if (child.getVisibility() != GONE) {
+            // swap width and height for child
+            measureChild(child, heightMeasureSpec, widthMeasureSpec);
+            setMeasuredDimension(
+                    child.getMeasuredHeightAndState(),
+                    child.getMeasuredWidthAndState());
+        } else {
+            setMeasuredDimension(
+                    resolveSizeAndState(0, widthMeasureSpec, 0),
+                    resolveSizeAndState(0, heightMeasureSpec, 0));
+        }
+    }
+
+    @Override
+    protected void onLayout(boolean changed, int l, int t, int r, int b) {
+        final View child = getChildAt(0);
+
+        if (child.getVisibility() != GONE) {
+            // rotate the child 90 degrees counterclockwise around its upper-left
+            child.setPivotX(0);
+            child.setPivotY(0);
+            child.setRotation(-90);
+
+            // place the child below this view, so it rotates into view
+            int mywidth = r - l;
+            int myheight = b - t;
+            int childwidth = myheight;
+            int childheight = mywidth;
+
+            child.layout(0, myheight, childwidth, myheight + childheight);
+        }
+    }
+
+}
diff --git a/src/com/android/musicfx/seekbar/AbsSeekBar.java b/src/com/android/musicfx/seekbar/AbsSeekBar.java
deleted file mode 100644
index 00ad580..0000000
--- a/src/com/android/musicfx/seekbar/AbsSeekBar.java
+++ /dev/null
@@ -1,561 +0,0 @@
-/*
- * Copyright (C) 2007 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.
- */
-
-package com.android.musicfx.seekbar;
-
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.graphics.Canvas;
-import android.graphics.Rect;
-import android.graphics.drawable.Drawable;
-import android.util.AttributeSet;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-import android.view.ViewConfiguration;
-
-public abstract class AbsSeekBar extends ProgressBar {
-    private Drawable mThumb;
-    private int mThumbOffset;
-    
-    /**
-     * On touch, this offset plus the scaled value from the position of the
-     * touch will form the progress value. Usually 0.
-     */
-    float mTouchProgressOffset;
-
-    /**
-     * Whether this is user seekable.
-     */
-    boolean mIsUserSeekable = true;
-
-    boolean mIsVertical = false;
-    /**
-     * On key presses (right or left), the amount to increment/decrement the
-     * progress.
-     */
-    private int mKeyProgressIncrement = 1;
-    
-    private static final int NO_ALPHA = 0xFF;
-    private float mDisabledAlpha;
-    
-    private int mScaledTouchSlop;
-    private float mTouchDownX;
-    private float mTouchDownY;
-    private boolean mIsDragging;
-
-    public AbsSeekBar(Context context) {
-        super(context);
-    }
-
-    public AbsSeekBar(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    public AbsSeekBar(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-
-        TypedArray a = context.obtainStyledAttributes(attrs,
-                com.android.internal.R.styleable.SeekBar, defStyle, 0);
-        Drawable thumb = a.getDrawable(com.android.internal.R.styleable.SeekBar_thumb);
-        setThumb(thumb); // will guess mThumbOffset if thumb != null...
-        // ...but allow layout to override this
-        int thumbOffset = a.getDimensionPixelOffset(
-                com.android.internal.R.styleable.SeekBar_thumbOffset, getThumbOffset());
-        setThumbOffset(thumbOffset);
-        a.recycle();
-
-        a = context.obtainStyledAttributes(attrs,
-                com.android.internal.R.styleable.Theme, 0, 0);
-        mDisabledAlpha = a.getFloat(com.android.internal.R.styleable.Theme_disabledAlpha, 0.5f);
-        a.recycle();
-
-        mScaledTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
-    }
-
-    /**
-     * Sets the thumb that will be drawn at the end of the progress meter within the SeekBar.
-     * <p>
-     * If the thumb is a valid drawable (i.e. not null), half its width will be
-     * used as the new thumb offset (@see #setThumbOffset(int)).
-     * 
-     * @param thumb Drawable representing the thumb
-     */
-    public void setThumb(Drawable thumb) {
-        boolean needUpdate;
-        // This way, calling setThumb again with the same bitmap will result in
-        // it recalcuating mThumbOffset (if for example it the bounds of the
-        // drawable changed)
-        if (mThumb != null && thumb != mThumb) {
-            mThumb.setCallback(null);
-            needUpdate = true;
-        } else {
-            needUpdate = false;
-        }
-        if (thumb != null) {
-            thumb.setCallback(this);
-
-            // Assuming the thumb drawable is symmetric, set the thumb offset
-            // such that the thumb will hang halfway off either edge of the
-            // progress bar.
-            if (mIsVertical) {
-                mThumbOffset = thumb.getIntrinsicHeight() / 2;
-            } else {
-                mThumbOffset = thumb.getIntrinsicWidth() / 2;
-            }
-
-            // If we're updating get the new states
-            if (needUpdate &&
-                    (thumb.getIntrinsicWidth() != mThumb.getIntrinsicWidth()
-                        || thumb.getIntrinsicHeight() != mThumb.getIntrinsicHeight())) {
-                requestLayout();
-            }
-        }
-        mThumb = thumb;
-        invalidate();
-        if (needUpdate) {
-            updateThumbPos(getWidth(), getHeight());
-            if (thumb.isStateful()) {
-                // Note that if the states are different this won't work.
-                // For now, let's consider that an app bug.
-                int[] state = getDrawableState();
-                thumb.setState(state);
-            }
-        }
-    }
-
-    /**
-     * @see #setThumbOffset(int)
-     */
-    public int getThumbOffset() {
-        return mThumbOffset;
-    }
-
-    /**
-     * Sets the thumb offset that allows the thumb to extend out of the range of
-     * the track.
-     * 
-     * @param thumbOffset The offset amount in pixels.
-     */
-    public void setThumbOffset(int thumbOffset) {
-        mThumbOffset = thumbOffset;
-        invalidate();
-    }
-
-    /**
-     * Sets the amount of progress changed via the arrow keys.
-     * 
-     * @param increment The amount to increment or decrement when the user
-     *            presses the arrow keys.
-     */
-    public void setKeyProgressIncrement(int increment) {
-        mKeyProgressIncrement = increment < 0 ? -increment : increment;
-    }
-
-    /**
-     * Returns the amount of progress changed via the arrow keys.
-     * <p>
-     * By default, this will be a value that is derived from the max progress.
-     * 
-     * @return The amount to increment or decrement when the user presses the
-     *         arrow keys. This will be positive.
-     */
-    public int getKeyProgressIncrement() {
-        return mKeyProgressIncrement;
-    }
-    
-    @Override
-    public synchronized void setMax(int max) {
-        super.setMax(max);
-
-        if ((mKeyProgressIncrement == 0) || (getMax() / mKeyProgressIncrement > 20)) {
-            // It will take the user too long to change this via keys, change it
-            // to something more reasonable
-            setKeyProgressIncrement(Math.max(1, Math.round((float) getMax() / 20)));
-        }
-    }
-
-    @Override
-    protected boolean verifyDrawable(Drawable who) {
-        return who == mThumb || super.verifyDrawable(who);
-    }
-
-    @Override
-    public void jumpDrawablesToCurrentState() {
-        super.jumpDrawablesToCurrentState();
-        if (mThumb != null) mThumb.jumpToCurrentState();
-    }
-
-    @Override
-    protected void drawableStateChanged() {
-        super.drawableStateChanged();
-        
-        Drawable progressDrawable = getProgressDrawable();
-        if (progressDrawable != null) {
-            progressDrawable.setAlpha(isEnabled() ? NO_ALPHA : (int) (NO_ALPHA * mDisabledAlpha));
-        }
-        
-        if (mThumb != null && mThumb.isStateful()) {
-            int[] state = getDrawableState();
-            mThumb.setState(state);
-        }
-    }
-    
-    @Override
-    void onProgressRefresh(float scale, boolean fromUser) {
-        super.onProgressRefresh(scale, fromUser);
-        Drawable thumb = mThumb;
-        if (thumb != null) {
-            setThumbPos(getWidth(), getHeight(), thumb, scale, Integer.MIN_VALUE);
-            /*
-             * Since we draw translated, the drawable's bounds that it signals
-             * for invalidation won't be the actual bounds we want invalidated,
-             * so just invalidate this whole view.
-             */
-            invalidate();
-        }
-    }
-    
-    
-    @Override
-    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
-        updateThumbPos(w, h);
-    }
-
-    private void updateThumbPos(int w, int h) {
-        Drawable d = getCurrentDrawable();
-        Drawable thumb = mThumb;
-        if (mIsVertical) {
-            int thumbWidth = thumb == null ? 0 : thumb.getIntrinsicWidth();
-            // The max width does not incorporate padding, whereas the width
-            // parameter does
-            int trackWidth = Math.min(mMaxWidth, w - mPaddingLeft - mPaddingRight);
-
-            int max = getMax();
-            float scale = max > 0 ? (float) getProgress() / (float) max : 0;
-
-            if (thumbWidth > trackWidth) {
-                if (thumb != null) {
-                    setThumbPos(w, h, thumb, scale, 0);
-                }
-                int gapForCenteringTrack = (thumbWidth - trackWidth) / 2;
-                if (d != null) {
-                    // Canvas will be translated by the padding, so 0,0 is where we start drawing
-                    d.setBounds(gapForCenteringTrack, 0,
-                            w - mPaddingRight - gapForCenteringTrack - mPaddingLeft,
-                            h - mPaddingBottom - mPaddingTop);
-                }
-            } else {
-                if (d != null) {
-                    // Canvas will be translated by the padding, so 0,0 is where we start drawing
-                    d.setBounds(0, 0, w - mPaddingRight - mPaddingLeft, h - mPaddingBottom
-                            - mPaddingTop);
-                }
-                int gap = (trackWidth - thumbWidth) / 2;
-                if (thumb != null) {
-                    setThumbPos(w, h, thumb, scale, gap);
-                }
-            }
-        } else {
-            int thumbHeight = thumb == null ? 0 : thumb.getIntrinsicHeight();
-            // The max height does not incorporate padding, whereas the height
-            // parameter does
-            int trackHeight = Math.min(mMaxHeight, h - mPaddingTop - mPaddingBottom);
-
-            int max = getMax();
-            float scale = max > 0 ? (float) getProgress() / (float) max : 0;
-
-            if (thumbHeight > trackHeight) {
-                if (thumb != null) {
-                    setThumbPos(w, h, thumb, scale, 0);
-                }
-                int gapForCenteringTrack = (thumbHeight - trackHeight) / 2;
-                if (d != null) {
-                    // Canvas will be translated by the padding, so 0,0 is where we start drawing
-                    d.setBounds(0, gapForCenteringTrack,
-                            w - mPaddingRight - mPaddingLeft, h - mPaddingBottom - gapForCenteringTrack
-                            - mPaddingTop);
-                }
-            } else {
-                if (d != null) {
-                    // Canvas will be translated by the padding, so 0,0 is where we start drawing
-                    d.setBounds(0, 0, w - mPaddingRight - mPaddingLeft, h - mPaddingBottom
-                            - mPaddingTop);
-                }
-                int gap = (trackHeight - thumbHeight) / 2;
-                if (thumb != null) {
-                    setThumbPos(w, h, thumb, scale, gap);
-                }
-            }
-        }
-    }
-
-    /**
-     * @param gap If set to {@link Integer#MIN_VALUE}, this will be ignored and
-     */
-    private void setThumbPos(int w, int h, Drawable thumb, float scale, int gap) {
-        int available;
-        int thumbWidth = thumb.getIntrinsicWidth();
-        int thumbHeight = thumb.getIntrinsicHeight();
-        if (mIsVertical) {
-            available = h - mPaddingTop - mPaddingBottom - thumbHeight;
-        } else {
-            available = w - mPaddingLeft - mPaddingRight - thumbWidth;
-        }
-
-        // The extra space for the thumb to move on the track
-        available += mThumbOffset * 2;
-
-
-        if (mIsVertical) {
-            int thumbPos = (int) ((1.0f - scale) * available);
-            int leftBound, rightBound;
-            if (gap == Integer.MIN_VALUE) {
-                Rect oldBounds = thumb.getBounds();
-                leftBound = oldBounds.left;
-                rightBound = oldBounds.right;
-            } else {
-                leftBound = gap;
-                rightBound = gap + thumbWidth;
-            }
-
-            // Canvas will be translated, so 0,0 is where we start drawing
-            thumb.setBounds(leftBound, thumbPos, rightBound, thumbPos + thumbHeight);
-        } else {
-            int thumbPos = (int) (scale * available);
-            int topBound, bottomBound;
-            if (gap == Integer.MIN_VALUE) {
-                Rect oldBounds = thumb.getBounds();
-                topBound = oldBounds.top;
-                bottomBound = oldBounds.bottom;
-            } else {
-                topBound = gap;
-                bottomBound = gap + thumbHeight;
-            }
-
-            // Canvas will be translated, so 0,0 is where we start drawing
-            thumb.setBounds(thumbPos, topBound, thumbPos + thumbWidth, bottomBound);
-        }
-    }
-    
-    @Override
-    protected synchronized void onDraw(Canvas canvas) {
-        super.onDraw(canvas);
-        if (mThumb != null) {
-            canvas.save();
-            // Translate the padding. For the x/y, we need to allow the thumb to
-            // draw in its extra space
-            if (mIsVertical) {
-                canvas.translate(mPaddingLeft, mPaddingTop - mThumbOffset);
-                mThumb.draw(canvas);
-                canvas.restore();
-            } else {
-                canvas.translate(mPaddingLeft - mThumbOffset, mPaddingTop);
-                mThumb.draw(canvas);
-                canvas.restore();
-            }
-        }
-    }
-
-    @Override
-    protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-        Drawable d = getCurrentDrawable();
-
-        int thumbHeight = mThumb == null ? 0 : mThumb.getIntrinsicHeight();
-        int dw = 0;
-        int dh = 0;
-        if (d != null) {
-            dw = Math.max(mMinWidth, Math.min(mMaxWidth, d.getIntrinsicWidth()));
-            dh = Math.max(mMinHeight, Math.min(mMaxHeight, d.getIntrinsicHeight()));
-            dh = Math.max(thumbHeight, dh);
-        }
-        dw += mPaddingLeft + mPaddingRight;
-        dh += mPaddingTop + mPaddingBottom;
-        
-        setMeasuredDimension(resolveSizeAndState(dw, widthMeasureSpec, 0),
-                resolveSizeAndState(dh, heightMeasureSpec, 0));
-
-        // TODO should probably make this an explicit attribute instead of implicitly
-        // setting it based on the size
-        if (getMeasuredHeight() > getMeasuredWidth()) {
-            mIsVertical = true;
-        }
-    }
-    
-    @Override
-    public boolean onTouchEvent(MotionEvent event) {
-        if (!mIsUserSeekable || !isEnabled()) {
-            return false;
-        }
-        
-        switch (event.getAction()) {
-            case MotionEvent.ACTION_DOWN:
-                if (isInScrollingContainer()) {
-                    mTouchDownX = event.getX();
-                    mTouchDownY = event.getY();
-                } else {
-                    setPressed(true);
-                    if (mThumb != null) {
-                        invalidate(mThumb.getBounds()); // This may be within the padding region
-                    }
-                    onStartTrackingTouch();
-                    trackTouchEvent(event);
-                    attemptClaimDrag();
-                }
-                break;
-                
-            case MotionEvent.ACTION_MOVE:
-                if (mIsDragging) {
-                    trackTouchEvent(event);
-                } else {
-                    final float x = event.getX();
-                    final float y = event.getX();
-                    if (Math.abs(mIsVertical ?
-                            (y - mTouchDownY) : (x - mTouchDownX)) > mScaledTouchSlop) {
-                        setPressed(true);
-                        if (mThumb != null) {
-                            invalidate(mThumb.getBounds()); // This may be within the padding region
-                        }
-                        onStartTrackingTouch();
-                        trackTouchEvent(event);
-                        attemptClaimDrag();
-                    }
-                }
-                break;
-                
-            case MotionEvent.ACTION_UP:
-                if (mIsDragging) {
-                    trackTouchEvent(event);
-                    onStopTrackingTouch();
-                    setPressed(false);
-                } else {
-                    // Touch up when we never crossed the touch slop threshold should
-                    // be interpreted as a tap-seek to that location.
-                    onStartTrackingTouch();
-                    trackTouchEvent(event);
-                    onStopTrackingTouch();
-                }
-                // ProgressBar doesn't know to repaint the thumb drawable
-                // in its inactive state when the touch stops (because the
-                // value has not apparently changed)
-                invalidate();
-                break;
-                
-            case MotionEvent.ACTION_CANCEL:
-                if (mIsDragging) {
-                    onStopTrackingTouch();
-                    setPressed(false);
-                }
-                invalidate(); // see above explanation
-                break;
-        }
-        return true;
-    }
-
-    private void trackTouchEvent(MotionEvent event) {
-        float progress = 0;
-        if (mIsVertical) {
-            final int height = getHeight();
-            final int available = height - mPaddingTop - mPaddingBottom;
-            int y = (int)event.getY();
-            float scale;
-            if (y < mPaddingTop) {
-                scale = 1.0f;
-            } else if (y > height - mPaddingBottom) {
-                scale = 0.0f;
-            } else {
-                scale = 1.0f - (float)(y - mPaddingTop) / (float)available;
-                progress = mTouchProgressOffset;
-            }
-
-            final int max = getMax();
-            progress += scale * max;
-        } else {
-            final int width = getWidth();
-            final int available = width - mPaddingLeft - mPaddingRight;
-            int x = (int)event.getX();
-            float scale;
-            if (x < mPaddingLeft) {
-                scale = 0.0f;
-            } else if (x > width - mPaddingRight) {
-                scale = 1.0f;
-            } else {
-                scale = (float)(x - mPaddingLeft) / (float)available;
-                progress = mTouchProgressOffset;
-            }
-
-            final int max = getMax();
-            progress += scale * max;
-        }
-        
-        setProgress((int) progress, true);
-    }
-
-    /**
-     * Tries to claim the user's drag motion, and requests disallowing any
-     * ancestors from stealing events in the drag.
-     */
-    private void attemptClaimDrag() {
-        if (mParent != null) {
-            mParent.requestDisallowInterceptTouchEvent(true);
-        }
-    }
-    
-    /**
-     * This is called when the user has started touching this widget.
-     */
-    void onStartTrackingTouch() {
-        mIsDragging = true;
-    }
-
-    /**
-     * This is called when the user either releases his touch or the touch is
-     * canceled.
-     */
-    void onStopTrackingTouch() {
-        mIsDragging = false;
-    }
-
-    /**
-     * Called when the user changes the seekbar's progress by using a key event.
-     */
-    void onKeyChange() {
-    }
-
-    @Override
-    public boolean onKeyDown(int keyCode, KeyEvent event) {
-        if (isEnabled()) {
-            int progress = getProgress();
-            if ((keyCode == KeyEvent.KEYCODE_DPAD_LEFT && !mIsVertical)
-                    || (keyCode == KeyEvent.KEYCODE_DPAD_DOWN && mIsVertical)) {
-                if (progress > 0) {
-                    setProgress(progress - mKeyProgressIncrement, true);
-                    onKeyChange();
-                    return true;
-                }
-            } else if ((keyCode == KeyEvent.KEYCODE_DPAD_RIGHT && !mIsVertical)
-                    || (keyCode == KeyEvent.KEYCODE_DPAD_UP && mIsVertical)) {
-                if (progress < getMax()) {
-                    setProgress(progress + mKeyProgressIncrement, true);
-                    onKeyChange();
-                    return true;
-                }
-            }
-        }
-
-        return super.onKeyDown(keyCode, event);
-    }
-
-}
diff --git a/src/com/android/musicfx/seekbar/ProgressBar.java b/src/com/android/musicfx/seekbar/ProgressBar.java
deleted file mode 100644
index 9c4264d..0000000
--- a/src/com/android/musicfx/seekbar/ProgressBar.java
+++ /dev/null
@@ -1,1146 +0,0 @@
-/*
- * Copyright (C) 2006 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.
- */
-
-package com.android.musicfx.seekbar;
-
-import com.android.internal.R;
-
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.graphics.Bitmap;
-import android.graphics.BitmapShader;
-import android.graphics.Canvas;
-import android.graphics.Rect;
-import android.graphics.Shader;
-import android.graphics.drawable.Animatable;
-import android.graphics.drawable.AnimationDrawable;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.ClipDrawable;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.LayerDrawable;
-import android.graphics.drawable.ShapeDrawable;
-import android.graphics.drawable.StateListDrawable;
-import android.graphics.drawable.shapes.RoundRectShape;
-import android.graphics.drawable.shapes.Shape;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.os.SystemClock;
-import android.util.AttributeSet;
-import android.view.Gravity;
-import android.view.RemotableViewMethod;
-import android.view.View;
-import android.view.ViewDebug;
-import android.view.accessibility.AccessibilityEvent;
-import android.view.accessibility.AccessibilityManager;
-import android.view.animation.AlphaAnimation;
-import android.view.animation.Animation;
-import android.view.animation.AnimationUtils;
-import android.view.animation.Interpolator;
-import android.view.animation.LinearInterpolator;
-import android.view.animation.Transformation;
-import android.widget.RemoteViews.RemoteView;
-
-
-/**
- * <p>
- * Visual indicator of progress in some operation.  Displays a bar to the user
- * representing how far the operation has progressed; the application can 
- * change the amount of progress (modifying the length of the bar) as it moves 
- * forward.  There is also a secondary progress displayable on a progress bar
- * which is useful for displaying intermediate progress, such as the buffer
- * level during a streaming playback progress bar.
- * </p>
- *
- * <p>
- * A progress bar can also be made indeterminate. In indeterminate mode, the
- * progress bar shows a cyclic animation without an indication of progress. This mode is used by
- * applications when the length of the task is unknown. The indeterminate progress bar can be either
- * a spinning wheel or a horizontal bar.
- * </p>
- *
- * <p>The following code example shows how a progress bar can be used from
- * a worker thread to update the user interface to notify the user of progress:
- * </p>
- * 
- * <pre>
- * public class MyActivity extends Activity {
- *     private static final int PROGRESS = 0x1;
- *
- *     private ProgressBar mProgress;
- *     private int mProgressStatus = 0;
- *
- *     private Handler mHandler = new Handler();
- *
- *     protected void onCreate(Bundle icicle) {
- *         super.onCreate(icicle);
- *
- *         setContentView(R.layout.progressbar_activity);
- *
- *         mProgress = (ProgressBar) findViewById(R.id.progress_bar);
- *
- *         // Start lengthy operation in a background thread
- *         new Thread(new Runnable() {
- *             public void run() {
- *                 while (mProgressStatus &lt; 100) {
- *                     mProgressStatus = doWork();
- *
- *                     // Update the progress bar
- *                     mHandler.post(new Runnable() {
- *                         public void run() {
- *                             mProgress.setProgress(mProgressStatus);
- *                         }
- *                     });
- *                 }
- *             }
- *         }).start();
- *     }
- * }</pre>
- *
- * <p>To add a progress bar to a layout file, you can use the {@code &lt;ProgressBar&gt;} element.
- * By default, the progress bar is a spinning wheel (an indeterminate indicator). To change to a
- * horizontal progress bar, apply the {@link android.R.style#Widget_ProgressBar_Horizontal
- * Widget.ProgressBar.Horizontal} style, like so:</p>
- *
- * <pre>
- * &lt;ProgressBar
- *     style="@android:style/Widget.ProgressBar.Horizontal"
- *     ... /&gt;</pre>
- *
- * <p>If you will use the progress bar to show real progress, you must use the horizontal bar. You
- * can then increment the  progress with {@link #incrementProgressBy incrementProgressBy()} or
- * {@link #setProgress setProgress()}. By default, the progress bar is full when it reaches 100. If
- * necessary, you can adjust the maximum value (the value for a full bar) using the {@link
- * android.R.styleable#ProgressBar_max android:max} attribute. Other attributes available are listed
- * below.</p>
- *
- * <p>Another common style to apply to the progress bar is {@link
- * android.R.style#Widget_ProgressBar_Small Widget.ProgressBar.Small}, which shows a smaller
- * version of the spinning wheel&mdash;useful when waiting for content to load.
- * For example, you can insert this kind of progress bar into your default layout for
- * a view that will be populated by some content fetched from the Internet&mdash;the spinning wheel
- * appears immediately and when your application receives the content, it replaces the progress bar
- * with the loaded content. For example:</p>
- *
- * <pre>
- * &lt;LinearLayout
- *     android:orientation="horizontal"
- *     ... &gt;
- *     &lt;ProgressBar
- *         android:layout_width="wrap_content"
- *         android:layout_height="wrap_content"
- *         style="@android:style/Widget.ProgressBar.Small"
- *         android:layout_marginRight="5dp" /&gt;
- *     &lt;TextView
- *         android:layout_width="wrap_content"
- *         android:layout_height="wrap_content"
- *         android:text="@string/loading" /&gt;
- * &lt;/LinearLayout&gt;</pre>
- *
- * <p>Other progress bar styles provided by the system include:</p>
- * <ul>
- * <li>{@link android.R.style#Widget_ProgressBar_Horizontal Widget.ProgressBar.Horizontal}</li>
- * <li>{@link android.R.style#Widget_ProgressBar_Small Widget.ProgressBar.Small}</li>
- * <li>{@link android.R.style#Widget_ProgressBar_Large Widget.ProgressBar.Large}</li>
- * <li>{@link android.R.style#Widget_ProgressBar_Inverse Widget.ProgressBar.Inverse}</li>
- * <li>{@link android.R.style#Widget_ProgressBar_Small_Inverse
- * Widget.ProgressBar.Small.Inverse}</li>
- * <li>{@link android.R.style#Widget_ProgressBar_Large_Inverse
- * Widget.ProgressBar.Large.Inverse}</li>
- * </ul>
- * <p>The "inverse" styles provide an inverse color scheme for the spinner, which may be necessary
- * if your application uses a light colored theme (a white background).</p>
- *  
- * <p><strong>XML attributes</b></strong> 
- * <p> 
- * See {@link android.R.styleable#ProgressBar ProgressBar Attributes}, 
- * {@link android.R.styleable#View View Attributes}
- * </p>
- * 
- * @attr ref android.R.styleable#ProgressBar_animationResolution
- * @attr ref android.R.styleable#ProgressBar_indeterminate
- * @attr ref android.R.styleable#ProgressBar_indeterminateBehavior
- * @attr ref android.R.styleable#ProgressBar_indeterminateDrawable
- * @attr ref android.R.styleable#ProgressBar_indeterminateDuration
- * @attr ref android.R.styleable#ProgressBar_indeterminateOnly
- * @attr ref android.R.styleable#ProgressBar_interpolator
- * @attr ref android.R.styleable#ProgressBar_max
- * @attr ref android.R.styleable#ProgressBar_maxHeight
- * @attr ref android.R.styleable#ProgressBar_maxWidth
- * @attr ref android.R.styleable#ProgressBar_minHeight
- * @attr ref android.R.styleable#ProgressBar_minWidth
- * @attr ref android.R.styleable#ProgressBar_progress
- * @attr ref android.R.styleable#ProgressBar_progressDrawable
- * @attr ref android.R.styleable#ProgressBar_secondaryProgress
- */
-@RemoteView
-public class ProgressBar extends View {
-    private static final int MAX_LEVEL = 10000;
-    private static final int ANIMATION_RESOLUTION = 200;
-    private static final int TIMEOUT_SEND_ACCESSIBILITY_EVENT = 200;
-
-    int mMinWidth;
-    int mMaxWidth;
-    int mMinHeight;
-    int mMaxHeight;
-
-    private int mProgress;
-    private int mSecondaryProgress;
-    private int mMax;
-
-    private int mBehavior;
-    private int mDuration;
-    private boolean mIndeterminate;
-    private boolean mOnlyIndeterminate;
-    private Transformation mTransformation;
-    private AlphaAnimation mAnimation;
-    private Drawable mIndeterminateDrawable;
-    private Drawable mProgressDrawable;
-    private Drawable mCurrentDrawable;
-    Bitmap mSampleTile;
-    private boolean mNoInvalidate;
-    private Interpolator mInterpolator;
-    private RefreshProgressRunnable mRefreshProgressRunnable;
-    private long mUiThreadId;
-    private boolean mShouldStartAnimationDrawable;
-    private long mLastDrawTime;
-
-    private boolean mInDrawing;
-
-    private int mAnimationResolution;
-
-    private AccessibilityEventSender mAccessibilityEventSender;
-
-    /**
-     * Create a new progress bar with range 0...100 and initial progress of 0.
-     * @param context the application environment
-     */
-    public ProgressBar(Context context) {
-        this(context, null);
-    }
-    
-    public ProgressBar(Context context, AttributeSet attrs) {
-        this(context, attrs, com.android.internal.R.attr.progressBarStyle);
-    }
-
-    public ProgressBar(Context context, AttributeSet attrs, int defStyle) {
-        this(context, attrs, defStyle, 0);
-    }
-
-    /**
-     * @hide
-     */
-    public ProgressBar(Context context, AttributeSet attrs, int defStyle, int styleRes) {
-        super(context, attrs, defStyle);
-        mUiThreadId = Thread.currentThread().getId();
-        initProgressBar();
-
-        TypedArray a =
-            context.obtainStyledAttributes(attrs, R.styleable.ProgressBar, defStyle, styleRes);
-        
-        mNoInvalidate = true;
-        
-        Drawable drawable = a.getDrawable(R.styleable.ProgressBar_progressDrawable);
-        if (drawable != null) {
-            drawable = tileify(drawable, false);
-            // Calling this method can set mMaxHeight, make sure the corresponding
-            // XML attribute for mMaxHeight is read after calling this method
-            setProgressDrawable(drawable);
-        }
-
-
-        mDuration = a.getInt(R.styleable.ProgressBar_indeterminateDuration, mDuration);
-
-        mMinWidth = a.getDimensionPixelSize(R.styleable.ProgressBar_minWidth, mMinWidth);
-        mMaxWidth = a.getDimensionPixelSize(R.styleable.ProgressBar_maxWidth, mMaxWidth);
-        mMinHeight = a.getDimensionPixelSize(R.styleable.ProgressBar_minHeight, mMinHeight);
-        mMaxHeight = a.getDimensionPixelSize(R.styleable.ProgressBar_maxHeight, mMaxHeight);
-
-        mBehavior = a.getInt(R.styleable.ProgressBar_indeterminateBehavior, mBehavior);
-
-        final int resID = a.getResourceId(
-                com.android.internal.R.styleable.ProgressBar_interpolator, 
-                android.R.anim.linear_interpolator); // default to linear interpolator
-        if (resID > 0) {
-            setInterpolator(context, resID);
-        } 
-
-        setMax(a.getInt(R.styleable.ProgressBar_max, mMax));
-
-        setProgress(a.getInt(R.styleable.ProgressBar_progress, mProgress));
-
-        setSecondaryProgress(
-                a.getInt(R.styleable.ProgressBar_secondaryProgress, mSecondaryProgress));
-
-        drawable = a.getDrawable(R.styleable.ProgressBar_indeterminateDrawable);
-        if (drawable != null) {
-            drawable = tileifyIndeterminate(drawable);
-            setIndeterminateDrawable(drawable);
-        }
-
-        mOnlyIndeterminate = a.getBoolean(
-                R.styleable.ProgressBar_indeterminateOnly, mOnlyIndeterminate);
-
-        mNoInvalidate = false;
-
-        setIndeterminate(mOnlyIndeterminate || a.getBoolean(
-                R.styleable.ProgressBar_indeterminate, mIndeterminate));
-
-        mAnimationResolution = a.getInteger(R.styleable.ProgressBar_animationResolution,
-                ANIMATION_RESOLUTION);
-
-        a.recycle();
-    }
-
-    /**
-     * Converts a drawable to a tiled version of itself. It will recursively
-     * traverse layer and state list drawables.
-     */
-    private Drawable tileify(Drawable drawable, boolean clip) {
-        
-        if (drawable instanceof LayerDrawable) {
-            LayerDrawable background = (LayerDrawable) drawable;
-            final int N = background.getNumberOfLayers();
-            Drawable[] outDrawables = new Drawable[N];
-            
-            for (int i = 0; i < N; i++) {
-                int id = background.getId(i);
-                outDrawables[i] = tileify(background.getDrawable(i),
-                        (id == R.id.progress || id == R.id.secondaryProgress));
-            }
-
-            LayerDrawable newBg = new LayerDrawable(outDrawables);
-            
-            for (int i = 0; i < N; i++) {
-                newBg.setId(i, background.getId(i));
-            }
-            
-            return newBg;
-            
-        } else if (drawable instanceof StateListDrawable) {
-            StateListDrawable in = (StateListDrawable) drawable;
-            StateListDrawable out = new StateListDrawable();
-            int numStates = in.getStateCount();
-            for (int i = 0; i < numStates; i++) {
-                out.addState(in.getStateSet(i), tileify(in.getStateDrawable(i), clip));
-            }
-            return out;
-            
-        } else if (drawable instanceof BitmapDrawable) {
-            final Bitmap tileBitmap = ((BitmapDrawable) drawable).getBitmap();
-            if (mSampleTile == null) {
-                mSampleTile = tileBitmap;
-            }
-            
-            final ShapeDrawable shapeDrawable = new ShapeDrawable(getDrawableShape());
-
-            final BitmapShader bitmapShader = new BitmapShader(tileBitmap,
-                    Shader.TileMode.REPEAT, Shader.TileMode.CLAMP);
-            shapeDrawable.getPaint().setShader(bitmapShader);
-
-            return (clip) ? new ClipDrawable(shapeDrawable, Gravity.LEFT,
-                    ClipDrawable.HORIZONTAL) : shapeDrawable;
-        }
-        
-        return drawable;
-    }
-
-    Shape getDrawableShape() {
-        final float[] roundedCorners = new float[] { 5, 5, 5, 5, 5, 5, 5, 5 };
-        return new RoundRectShape(roundedCorners, null, null);
-    }
-    
-    /**
-     * Convert a AnimationDrawable for use as a barberpole animation.
-     * Each frame of the animation is wrapped in a ClipDrawable and
-     * given a tiling BitmapShader.
-     */
-    private Drawable tileifyIndeterminate(Drawable drawable) {
-        if (drawable instanceof AnimationDrawable) {
-            AnimationDrawable background = (AnimationDrawable) drawable;
-            final int N = background.getNumberOfFrames();
-            AnimationDrawable newBg = new AnimationDrawable();
-            newBg.setOneShot(background.isOneShot());
-            
-            for (int i = 0; i < N; i++) {
-                Drawable frame = tileify(background.getFrame(i), true);
-                frame.setLevel(10000);
-                newBg.addFrame(frame, background.getDuration(i));
-            }
-            newBg.setLevel(10000);
-            drawable = newBg;
-        }
-        return drawable;
-    }
-    
-    /**
-     * <p>
-     * Initialize the progress bar's default values:
-     * </p>
-     * <ul>
-     * <li>progress = 0</li>
-     * <li>max = 100</li>
-     * <li>animation duration = 4000 ms</li>
-     * <li>indeterminate = false</li>
-     * <li>behavior = repeat</li>
-     * </ul>
-     */
-    private void initProgressBar() {
-        mMax = 100;
-        mProgress = 0;
-        mSecondaryProgress = 0;
-        mIndeterminate = false;
-        mOnlyIndeterminate = false;
-        mDuration = 4000;
-        mBehavior = AlphaAnimation.RESTART;
-        mMinWidth = 24;
-        mMaxWidth = 48;
-        mMinHeight = 24;
-        mMaxHeight = 48;
-    }
-
-    /**
-     * <p>Indicate whether this progress bar is in indeterminate mode.</p>
-     *
-     * @return true if the progress bar is in indeterminate mode
-     */
-    @ViewDebug.ExportedProperty(category = "progress")
-    public synchronized boolean isIndeterminate() {
-        return mIndeterminate;
-    }
-
-    /**
-     * <p>Change the indeterminate mode for this progress bar. In indeterminate
-     * mode, the progress is ignored and the progress bar shows an infinite
-     * animation instead.</p>
-     * 
-     * If this progress bar's style only supports indeterminate mode (such as the circular
-     * progress bars), then this will be ignored.
-     *
-     * @param indeterminate true to enable the indeterminate mode
-     */
-    @android.view.RemotableViewMethod
-    public synchronized void setIndeterminate(boolean indeterminate) {
-        if ((!mOnlyIndeterminate || !mIndeterminate) && indeterminate != mIndeterminate) {
-            mIndeterminate = indeterminate;
-
-            if (indeterminate) {
-                // swap between indeterminate and regular backgrounds
-                mCurrentDrawable = mIndeterminateDrawable;
-                startAnimation();
-            } else {
-                mCurrentDrawable = mProgressDrawable;
-                stopAnimation();
-            }
-        }
-    }
-
-    /**
-     * <p>Get the drawable used to draw the progress bar in
-     * indeterminate mode.</p>
-     *
-     * @return a {@link android.graphics.drawable.Drawable} instance
-     *
-     * @see #setIndeterminateDrawable(android.graphics.drawable.Drawable)
-     * @see #setIndeterminate(boolean)
-     */
-    public Drawable getIndeterminateDrawable() {
-        return mIndeterminateDrawable;
-    }
-
-    /**
-     * <p>Define the drawable used to draw the progress bar in
-     * indeterminate mode.</p>
-     *
-     * @param d the new drawable
-     *
-     * @see #getIndeterminateDrawable()
-     * @see #setIndeterminate(boolean)
-     */
-    public void setIndeterminateDrawable(Drawable d) {
-        if (d != null) {
-            d.setCallback(this);
-        }
-        mIndeterminateDrawable = d;
-        if (mIndeterminate) {
-            mCurrentDrawable = d;
-            postInvalidate();
-        }
-    }
-    
-    /**
-     * <p>Get the drawable used to draw the progress bar in
-     * progress mode.</p>
-     *
-     * @return a {@link android.graphics.drawable.Drawable} instance
-     *
-     * @see #setProgressDrawable(android.graphics.drawable.Drawable)
-     * @see #setIndeterminate(boolean)
-     */
-    public Drawable getProgressDrawable() {
-        return mProgressDrawable;
-    }
-
-    /**
-     * <p>Define the drawable used to draw the progress bar in
-     * progress mode.</p>
-     *
-     * @param d the new drawable
-     *
-     * @see #getProgressDrawable()
-     * @see #setIndeterminate(boolean)
-     */
-    public void setProgressDrawable(Drawable d) {
-        boolean needUpdate;
-        if (mProgressDrawable != null && d != mProgressDrawable) {
-            mProgressDrawable.setCallback(null);
-            needUpdate = true;
-        } else {
-            needUpdate = false;
-        }
-
-        if (d != null) {
-            d.setCallback(this);
-
-            // Make sure the ProgressBar is always tall enough
-            int drawableHeight = d.getMinimumHeight();
-            if (mMaxHeight < drawableHeight) {
-                mMaxHeight = drawableHeight;
-                requestLayout();
-            }
-        }
-        mProgressDrawable = d;
-        if (!mIndeterminate) {
-            mCurrentDrawable = d;
-            postInvalidate();
-        }
-
-        if (needUpdate) {
-            updateDrawableBounds(getWidth(), getHeight());
-            updateDrawableState();
-            doRefreshProgress(R.id.progress, mProgress, false, false);
-            doRefreshProgress(R.id.secondaryProgress, mSecondaryProgress, false, false);
-        }
-    }
-    
-    /**
-     * @return The drawable currently used to draw the progress bar
-     */
-    Drawable getCurrentDrawable() {
-        return mCurrentDrawable;
-    }
-
-    @Override
-    protected boolean verifyDrawable(Drawable who) {
-        return who == mProgressDrawable || who == mIndeterminateDrawable
-                || super.verifyDrawable(who);
-    }
-
-    @Override
-    public void jumpDrawablesToCurrentState() {
-        super.jumpDrawablesToCurrentState();
-        if (mProgressDrawable != null) mProgressDrawable.jumpToCurrentState();
-        if (mIndeterminateDrawable != null) mIndeterminateDrawable.jumpToCurrentState();
-    }
-
-    @Override
-    public void postInvalidate() {
-        if (!mNoInvalidate) {
-            super.postInvalidate();
-        }
-    }
-
-    private class RefreshProgressRunnable implements Runnable {
-
-        private int mId;
-        private int mProgress;
-        private boolean mFromUser;
-        
-        RefreshProgressRunnable(int id, int progress, boolean fromUser) {
-            mId = id;
-            mProgress = progress;
-            mFromUser = fromUser;
-        }
-        
-        public void run() {
-            doRefreshProgress(mId, mProgress, mFromUser, true);
-            // Put ourselves back in the cache when we are done
-            mRefreshProgressRunnable = this;
-        }
-        
-        public void setup(int id, int progress, boolean fromUser) {
-            mId = id;
-            mProgress = progress;
-            mFromUser = fromUser;
-        }
-        
-    }
-    
-    private synchronized void doRefreshProgress(int id, int progress, boolean fromUser,
-            boolean callBackToApp) {
-        float scale = mMax > 0 ? (float) progress / (float) mMax : 0;
-        final Drawable d = mCurrentDrawable;
-        if (d != null) {
-            Drawable progressDrawable = null;
-
-            if (d instanceof LayerDrawable) {
-                progressDrawable = ((LayerDrawable) d).findDrawableByLayerId(id);
-            }
-
-            final int level = (int) (scale * MAX_LEVEL);
-            (progressDrawable != null ? progressDrawable : d).setLevel(level);
-        } else {
-            invalidate();
-        }
-        
-        if (callBackToApp && id == R.id.progress) {
-            onProgressRefresh(scale, fromUser);
-        }
-    }
-
-    void onProgressRefresh(float scale, boolean fromUser) {
-        if (AccessibilityManager.getInstance(mContext).isEnabled()) {
-            scheduleAccessibilityEventSender();
-        }
-    }
-
-    private synchronized void refreshProgress(int id, int progress, boolean fromUser) {
-        if (mUiThreadId == Thread.currentThread().getId()) {
-            doRefreshProgress(id, progress, fromUser, true);
-        } else {
-            RefreshProgressRunnable r;
-            if (mRefreshProgressRunnable != null) {
-                // Use cached RefreshProgressRunnable if available
-                r = mRefreshProgressRunnable;
-                // Uncache it
-                mRefreshProgressRunnable = null;
-                r.setup(id, progress, fromUser);
-            } else {
-                // Make a new one
-                r = new RefreshProgressRunnable(id, progress, fromUser);
-            }
-            post(r);
-        }
-    }
-    
-    /**
-     * <p>Set the current progress to the specified value. Does not do anything
-     * if the progress bar is in indeterminate mode.</p>
-     *
-     * @param progress the new progress, between 0 and {@link #getMax()}
-     *
-     * @see #setIndeterminate(boolean)
-     * @see #isIndeterminate()
-     * @see #getProgress()
-     * @see #incrementProgressBy(int) 
-     */
-    @android.view.RemotableViewMethod
-    public synchronized void setProgress(int progress) {
-        setProgress(progress, false);
-    }
-    
-    @android.view.RemotableViewMethod
-    synchronized void setProgress(int progress, boolean fromUser) {
-        if (mIndeterminate) {
-            return;
-        }
-
-        if (progress < 0) {
-            progress = 0;
-        }
-
-        if (progress > mMax) {
-            progress = mMax;
-        }
-
-        if (progress != mProgress) {
-            mProgress = progress;
-            refreshProgress(R.id.progress, mProgress, fromUser);
-        }
-    }
-
-    /**
-     * <p>
-     * Set the current secondary progress to the specified value. Does not do
-     * anything if the progress bar is in indeterminate mode.
-     * </p>
-     * 
-     * @param secondaryProgress the new secondary progress, between 0 and {@link #getMax()}
-     * @see #setIndeterminate(boolean)
-     * @see #isIndeterminate()
-     * @see #getSecondaryProgress()
-     * @see #incrementSecondaryProgressBy(int)
-     */
-    @android.view.RemotableViewMethod
-    public synchronized void setSecondaryProgress(int secondaryProgress) {
-        if (mIndeterminate) {
-            return;
-        }
-
-        if (secondaryProgress < 0) {
-            secondaryProgress = 0;
-        }
-
-        if (secondaryProgress > mMax) {
-            secondaryProgress = mMax;
-        }
-
-        if (secondaryProgress != mSecondaryProgress) {
-            mSecondaryProgress = secondaryProgress;
-            refreshProgress(R.id.secondaryProgress, mSecondaryProgress, false);
-        }
-    }
-
-    /**
-     * <p>Get the progress bar's current level of progress. Return 0 when the
-     * progress bar is in indeterminate mode.</p>
-     *
-     * @return the current progress, between 0 and {@link #getMax()}
-     *
-     * @see #setIndeterminate(boolean)
-     * @see #isIndeterminate()
-     * @see #setProgress(int)
-     * @see #setMax(int)
-     * @see #getMax()
-     */
-    @ViewDebug.ExportedProperty(category = "progress")
-    public synchronized int getProgress() {
-        return mIndeterminate ? 0 : mProgress;
-    }
-
-    /**
-     * <p>Get the progress bar's current level of secondary progress. Return 0 when the
-     * progress bar is in indeterminate mode.</p>
-     *
-     * @return the current secondary progress, between 0 and {@link #getMax()}
-     *
-     * @see #setIndeterminate(boolean)
-     * @see #isIndeterminate()
-     * @see #setSecondaryProgress(int)
-     * @see #setMax(int)
-     * @see #getMax()
-     */
-    @ViewDebug.ExportedProperty(category = "progress")
-    public synchronized int getSecondaryProgress() {
-        return mIndeterminate ? 0 : mSecondaryProgress;
-    }
-
-    /**
-     * <p>Return the upper limit of this progress bar's range.</p>
-     *
-     * @return a positive integer
-     *
-     * @see #setMax(int)
-     * @see #getProgress()
-     * @see #getSecondaryProgress()
-     */
-    @ViewDebug.ExportedProperty(category = "progress")
-    public synchronized int getMax() {
-        return mMax;
-    }
-
-    /**
-     * <p>Set the range of the progress bar to 0...<tt>max</tt>.</p>
-     *
-     * @param max the upper range of this progress bar
-     *
-     * @see #getMax()
-     * @see #setProgress(int) 
-     * @see #setSecondaryProgress(int) 
-     */
-    @android.view.RemotableViewMethod
-    public synchronized void setMax(int max) {
-        if (max < 0) {
-            max = 0;
-        }
-        if (max != mMax) {
-            mMax = max;
-            postInvalidate();
-
-            if (mProgress > max) {
-                mProgress = max;
-            }
-            refreshProgress(R.id.progress, mProgress, false);
-        }
-    }
-    
-    /**
-     * <p>Increase the progress bar's progress by the specified amount.</p>
-     *
-     * @param diff the amount by which the progress must be increased
-     *
-     * @see #setProgress(int) 
-     */
-    public synchronized final void incrementProgressBy(int diff) {
-        setProgress(mProgress + diff);
-    }
-
-    /**
-     * <p>Increase the progress bar's secondary progress by the specified amount.</p>
-     *
-     * @param diff the amount by which the secondary progress must be increased
-     *
-     * @see #setSecondaryProgress(int) 
-     */
-    public synchronized final void incrementSecondaryProgressBy(int diff) {
-        setSecondaryProgress(mSecondaryProgress + diff);
-    }
-
-    /**
-     * <p>Start the indeterminate progress animation.</p>
-     */
-    void startAnimation() {
-        if (getVisibility() != VISIBLE) {
-            return;
-        }
-
-        if (mIndeterminateDrawable instanceof Animatable) {
-            mShouldStartAnimationDrawable = true;
-            mAnimation = null;
-        } else {
-            if (mInterpolator == null) {
-                mInterpolator = new LinearInterpolator();
-            }
-    
-            mTransformation = new Transformation();
-            mAnimation = new AlphaAnimation(0.0f, 1.0f);
-            mAnimation.setRepeatMode(mBehavior);
-            mAnimation.setRepeatCount(Animation.INFINITE);
-            mAnimation.setDuration(mDuration);
-            mAnimation.setInterpolator(mInterpolator);
-            mAnimation.setStartTime(Animation.START_ON_FIRST_FRAME);
-        }
-        postInvalidate();
-    }
-
-    /**
-     * <p>Stop the indeterminate progress animation.</p>
-     */
-    void stopAnimation() {
-        mAnimation = null;
-        mTransformation = null;
-        if (mIndeterminateDrawable instanceof Animatable) {
-            ((Animatable) mIndeterminateDrawable).stop();
-            mShouldStartAnimationDrawable = false;
-        }
-        postInvalidate();
-    }
-
-    /**
-     * Sets the acceleration curve for the indeterminate animation.
-     * The interpolator is loaded as a resource from the specified context.
-     *
-     * @param context The application environment
-     * @param resID The resource identifier of the interpolator to load
-     */
-    public void setInterpolator(Context context, int resID) {
-        setInterpolator(AnimationUtils.loadInterpolator(context, resID));
-    }
-
-    /**
-     * Sets the acceleration curve for the indeterminate animation.
-     * Defaults to a linear interpolation.
-     *
-     * @param interpolator The interpolator which defines the acceleration curve
-     */
-    public void setInterpolator(Interpolator interpolator) {
-        mInterpolator = interpolator;
-    }
-
-    /**
-     * Gets the acceleration curve type for the indeterminate animation.
-     *
-     * @return the {@link Interpolator} associated to this animation
-     */
-    public Interpolator getInterpolator() {
-        return mInterpolator;
-    }
-
-    @Override
-    @RemotableViewMethod
-    public void setVisibility(int v) {
-        if (getVisibility() != v) {
-            super.setVisibility(v);
-
-            if (mIndeterminate) {
-                // let's be nice with the UI thread
-                if (v == GONE || v == INVISIBLE) {
-                    stopAnimation();
-                } else {
-                    startAnimation();
-                }
-            }
-        }
-    }
-
-    @Override
-    protected void onVisibilityChanged(View changedView, int visibility) {
-        super.onVisibilityChanged(changedView, visibility);
-
-        if (mIndeterminate) {
-            // let's be nice with the UI thread
-            if (visibility == GONE || visibility == INVISIBLE) {
-                stopAnimation();
-            } else {
-                startAnimation();
-            }
-        }
-    }
-
-    @Override
-    public void invalidateDrawable(Drawable dr) {
-        if (!mInDrawing) {
-            if (verifyDrawable(dr)) {
-                final Rect dirty = dr.getBounds();
-                final int scrollX = mScrollX + mPaddingLeft;
-                final int scrollY = mScrollY + mPaddingTop;
-
-                invalidate(dirty.left + scrollX, dirty.top + scrollY,
-                        dirty.right + scrollX, dirty.bottom + scrollY);
-            } else {
-                super.invalidateDrawable(dr);
-            }
-        }
-    }
-
-    @Override
-    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
-        updateDrawableBounds(w, h);
-    }
-
-    private void updateDrawableBounds(int w, int h) {
-        // onDraw will translate the canvas so we draw starting at 0,0
-        int right = w - mPaddingRight - mPaddingLeft;
-        int bottom = h - mPaddingBottom - mPaddingTop;
-        int top = 0;
-        int left = 0;
-
-        if (mIndeterminateDrawable != null) {
-            // Aspect ratio logic does not apply to AnimationDrawables
-            if (mOnlyIndeterminate && !(mIndeterminateDrawable instanceof AnimationDrawable)) {
-                // Maintain aspect ratio. Certain kinds of animated drawables
-                // get very confused otherwise.
-                final int intrinsicWidth = mIndeterminateDrawable.getIntrinsicWidth();
-                final int intrinsicHeight = mIndeterminateDrawable.getIntrinsicHeight();
-                final float intrinsicAspect = (float) intrinsicWidth / intrinsicHeight;
-                final float boundAspect = (float) w / h;
-                if (intrinsicAspect != boundAspect) {
-                    if (boundAspect > intrinsicAspect) {
-                        // New width is larger. Make it smaller to match height.
-                        final int width = (int) (h * intrinsicAspect);
-                        left = (w - width) / 2;
-                        right = left + width;
-                    } else {
-                        // New height is larger. Make it smaller to match width.
-                        final int height = (int) (w * (1 / intrinsicAspect));
-                        top = (h - height) / 2;
-                        bottom = top + height;
-                    }
-                }
-            }
-            mIndeterminateDrawable.setBounds(left, top, right, bottom);
-        }
-        
-        if (mProgressDrawable != null) {
-            mProgressDrawable.setBounds(0, 0, right, bottom);
-        }
-    }
-
-    @Override
-    protected synchronized void onDraw(Canvas canvas) {
-        super.onDraw(canvas);
-
-        Drawable d = mCurrentDrawable;
-        if (d != null) {
-            // Translate canvas so a indeterminate circular progress bar with padding
-            // rotates properly in its animation
-            canvas.save();
-            canvas.translate(mPaddingLeft, mPaddingTop);
-            long time = getDrawingTime();
-            if (mAnimation != null) {
-                mAnimation.getTransformation(time, mTransformation);
-                float scale = mTransformation.getAlpha();
-                try {
-                    mInDrawing = true;
-                    d.setLevel((int) (scale * MAX_LEVEL));
-                } finally {
-                    mInDrawing = false;
-                }
-                if (SystemClock.uptimeMillis() - mLastDrawTime >= mAnimationResolution) {
-                    mLastDrawTime = SystemClock.uptimeMillis();
-                    postInvalidateDelayed(mAnimationResolution);
-                }
-            }
-            d.draw(canvas);
-            canvas.restore();
-            if (mShouldStartAnimationDrawable && d instanceof Animatable) {
-                ((Animatable) d).start();
-                mShouldStartAnimationDrawable = false;
-            }
-        }
-    }
-
-    @Override
-    protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-        Drawable d = mCurrentDrawable;
-
-        int dw = 0;
-        int dh = 0;
-        if (d != null) {
-            dw = Math.max(mMinWidth, Math.min(mMaxWidth, d.getIntrinsicWidth()));
-            dh = Math.max(mMinHeight, Math.min(mMaxHeight, d.getIntrinsicHeight()));
-        }
-        updateDrawableState();
-        dw += mPaddingLeft + mPaddingRight;
-        dh += mPaddingTop + mPaddingBottom;
-
-        setMeasuredDimension(resolveSizeAndState(dw, widthMeasureSpec, 0),
-                resolveSizeAndState(dh, heightMeasureSpec, 0));
-    }
-    
-    @Override
-    protected void drawableStateChanged() {
-        super.drawableStateChanged();
-        updateDrawableState();
-    }
-        
-    private void updateDrawableState() {
-        int[] state = getDrawableState();
-        
-        if (mProgressDrawable != null && mProgressDrawable.isStateful()) {
-            mProgressDrawable.setState(state);
-        }
-        
-        if (mIndeterminateDrawable != null && mIndeterminateDrawable.isStateful()) {
-            mIndeterminateDrawable.setState(state);
-        }
-    }
-
-    static class SavedState extends BaseSavedState {
-        int progress;
-        int secondaryProgress;
-        
-        /**
-         * Constructor called from {@link ProgressBar#onSaveInstanceState()}
-         */
-        SavedState(Parcelable superState) {
-            super(superState);
-        }
-        
-        /**
-         * Constructor called from {@link #CREATOR}
-         */
-        private SavedState(Parcel in) {
-            super(in);
-            progress = in.readInt();
-            secondaryProgress = in.readInt();
-        }
-
-        @Override
-        public void writeToParcel(Parcel out, int flags) {
-            super.writeToParcel(out, flags);
-            out.writeInt(progress);
-            out.writeInt(secondaryProgress);
-        }
-
-        public static final Parcelable.Creator<SavedState> CREATOR
-                = new Parcelable.Creator<SavedState>() {
-            public SavedState createFromParcel(Parcel in) {
-                return new SavedState(in);
-            }
-
-            public SavedState[] newArray(int size) {
-                return new SavedState[size];
-            }
-        };
-    }
-
-    @Override
-    public Parcelable onSaveInstanceState() {
-        // Force our ancestor class to save its state
-        Parcelable superState = super.onSaveInstanceState();
-        SavedState ss = new SavedState(superState);
-        
-        ss.progress = mProgress;
-        ss.secondaryProgress = mSecondaryProgress;
-        
-        return ss;
-    }
-
-    @Override
-    public void onRestoreInstanceState(Parcelable state) {
-        SavedState ss = (SavedState) state;
-        super.onRestoreInstanceState(ss.getSuperState());
-        
-        setProgress(ss.progress);
-        setSecondaryProgress(ss.secondaryProgress);
-    }
-
-    @Override
-    protected void onAttachedToWindow() {
-        super.onAttachedToWindow();
-        if (mIndeterminate) {
-            startAnimation();
-        }
-    }
-
-    @Override
-    protected void onDetachedFromWindow() {
-        if (mIndeterminate) {
-            stopAnimation();
-        }
-        if(mRefreshProgressRunnable != null) {
-            removeCallbacks(mRefreshProgressRunnable);
-        }
-        if (mAccessibilityEventSender != null) {
-            removeCallbacks(mAccessibilityEventSender);
-        }
-        // This should come after stopAnimation(), otherwise an invalidate message remains in the
-        // queue, which can prevent the entire view hierarchy from being GC'ed during a rotation
-        super.onDetachedFromWindow();
-    }
-
-    @Override
-    public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
-        super.onInitializeAccessibilityEvent(event);
-        event.setItemCount(mMax);
-        event.setCurrentItemIndex(mProgress);
-    }
-
-    /**
-     * Schedule a command for sending an accessibility event.
-     * </br>
-     * Note: A command is used to ensure that accessibility events
-     *       are sent at most one in a given time frame to save
-     *       system resources while the progress changes quickly.
-     */
-    private void scheduleAccessibilityEventSender() {
-        if (mAccessibilityEventSender == null) {
-            mAccessibilityEventSender = new AccessibilityEventSender();
-        } else {
-            removeCallbacks(mAccessibilityEventSender);
-        }
-        postDelayed(mAccessibilityEventSender, TIMEOUT_SEND_ACCESSIBILITY_EVENT);
-    }
-
-    /**
-     * Command for sending an accessibility event.
-     */
-    private class AccessibilityEventSender implements Runnable {
-        public void run() {
-            sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED);
-        }
-    }
-}
diff --git a/src/com/android/musicfx/seekbar/SeekBar.java b/src/com/android/musicfx/seekbar/SeekBar.java
deleted file mode 100644
index 2be99ce..0000000
--- a/src/com/android/musicfx/seekbar/SeekBar.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) 2006 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.
- */
-
-package com.android.musicfx.seekbar;
-
-import android.content.Context;
-import android.util.AttributeSet;
-
-
-
-/**
- * A SeekBar is an extension of ProgressBar that adds a draggable thumb. The user can touch
- * the thumb and drag left or right to set the current progress level or use the arrow keys.
- * Placing focusable widgets to the left or right of a SeekBar is discouraged. 
- * <p>
- * Clients of the SeekBar can attach a {@link SeekBar.OnSeekBarChangeListener} to
- * be notified of the user's actions.
- *
- * @attr ref android.R.styleable#SeekBar_thumb
- */
-public class SeekBar extends AbsSeekBar {
-
-    /**
-     * A callback that notifies clients when the progress level has been
-     * changed. This includes changes that were initiated by the user through a
-     * touch gesture or arrow key/trackball as well as changes that were initiated
-     * programmatically.
-     */
-    public interface OnSeekBarChangeListener {
-        
-        /**
-         * Notification that the progress level has changed. Clients can use the fromUser parameter
-         * to distinguish user-initiated changes from those that occurred programmatically.
-         * 
-         * @param seekBar The SeekBar whose progress has changed
-         * @param progress The current progress level. This will be in the range 0..max where max
-         *        was set by {@link ProgressBar#setMax(int)}. (The default value for max is 100.)
-         * @param fromUser True if the progress change was initiated by the user.
-         */
-        void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser);
-    
-        /**
-         * Notification that the user has started a touch gesture. Clients may want to use this
-         * to disable advancing the seekbar. 
-         * @param seekBar The SeekBar in which the touch gesture began
-         */
-        void onStartTrackingTouch(SeekBar seekBar);
-        
-        /**
-         * Notification that the user has finished a touch gesture. Clients may want to use this
-         * to re-enable advancing the seekbar. 
-         * @param seekBar The SeekBar in which the touch gesture began
-         */
-        void onStopTrackingTouch(SeekBar seekBar);
-    }
-
-    private OnSeekBarChangeListener mOnSeekBarChangeListener;
-    
-    public SeekBar(Context context) {
-        this(context, null);
-    }
-    
-    public SeekBar(Context context, AttributeSet attrs) {
-        this(context, attrs, com.android.internal.R.attr.seekBarStyle);
-    }
-
-    public SeekBar(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-    }
-
-    @Override
-    void onProgressRefresh(float scale, boolean fromUser) {
-        super.onProgressRefresh(scale, fromUser);
-
-        if (mOnSeekBarChangeListener != null) {
-            mOnSeekBarChangeListener.onProgressChanged(this, getProgress(), fromUser);
-        }
-    }
-
-    /**
-     * Sets a listener to receive notifications of changes to the SeekBar's progress level. Also
-     * provides notifications of when the user starts and stops a touch gesture within the SeekBar.
-     * 
-     * @param l The seek bar notification listener
-     * 
-     * @see SeekBar.OnSeekBarChangeListener
-     */
-    public void setOnSeekBarChangeListener(OnSeekBarChangeListener l) {
-        mOnSeekBarChangeListener = l;
-    }
-    
-    @Override
-    void onStartTrackingTouch() {
-        super.onStartTrackingTouch();
-        if (mOnSeekBarChangeListener != null) {
-            mOnSeekBarChangeListener.onStartTrackingTouch(this);
-        }
-    }
-    
-    @Override
-    void onStopTrackingTouch() {
-        super.onStopTrackingTouch();
-        if (mOnSeekBarChangeListener != null) {
-            mOnSeekBarChangeListener.onStopTrackingTouch(this);
-        }
-    }
-    
-}
