Pie design update

Change-Id: Ifb0d50938332bdae50e45523850605d0aafed7fb
diff --git a/src/com/android/camera/PieController.java b/src/com/android/camera/PieController.java
index 8202fca..2145fd8 100644
--- a/src/com/android/camera/PieController.java
+++ b/src/com/android/camera/PieController.java
@@ -37,6 +37,10 @@
     protected static final int MODE_PHOTO = 0;
     protected static final int MODE_VIDEO = 1;
 
+    protected static float CENTER = (float) Math.PI / 2;
+    protected static final float SWEEP = 0.06f;
+
+
     protected CameraActivity mActivity;
     protected PreferenceGroup mPreferenceGroup;
     protected OnPreferenceChangedListener mListener;
@@ -84,10 +88,10 @@
         return new PieItem(drawable, 0);
     }
 
-    public void addItem(String prefKey, float center, float sweep) {
+    public PieItem makeItem(String prefKey, float center, float sweep) {
         final IconListPreference pref =
                 (IconListPreference) mPreferenceGroup.findPreference(prefKey);
-        if (pref == null) return;
+        if (pref == null) return null;
         int[] iconIds = pref.getLargeIconIds();
         int resid = -1;
         if (!pref.getUseSingleIcon() && iconIds != null) {
@@ -101,7 +105,6 @@
         PieItem item = makeItem(resid);
         // use center and sweep to determine layout
         item.setFixedSlice(center, sweep);
-        mRenderer.addItem(item);
         mPreferences.add(pref);
         mPreferenceMap.put(pref, item);
         int nOfEntries = pref.getEntries().length;
@@ -113,6 +116,7 @@
                 } else {
                     inner = makeItem(pref.getEntries()[i]);
                 }
+                layoutInner(inner, i, nOfEntries);
                 item.addItem(inner);
                 final int index = i;
                 inner.setOnClickListener(new OnClickListener() {
@@ -125,6 +129,23 @@
                 });
             }
         }
+        return item;
+    }
+
+    public PieItem makeDialItem(ListPreference pref, int iconId, float center, float sweep) {
+        PieItem item = makeItem(iconId);
+        return item;
+    }
+
+    protected void layoutInner(PieItem item, int ix, int n) {
+        float sweep = (float) (SWEEP * Math.PI);//FLOAT_PI_DIVIDED_BY_TWO / Math.max(n, 5);
+        float start = CENTER + (n - 1) * (sweep / 2f);
+        item.setFixedSlice(start - ix * sweep, sweep);
+    }
+
+    public void addItem(String prefKey, float center, float sweep) {
+        PieItem item = makeItem(prefKey, center, sweep);
+        mRenderer.addItem(item);
     }
 
     public void setPreferenceGroup(PreferenceGroup group) {