Adding fragment and listener for answering calls.

Created mvp pattern for answer fragment.

Change-Id: Ibe0c3b5ce2b61a098c2237aab549238fd4518e9b
diff --git a/InCallUI/InCallUI.iml b/InCallUI/InCallUI.iml
new file mode 100644
index 0000000..2dc7d7e
--- /dev/null
+++ b/InCallUI/InCallUI.iml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="android" name="Android">
+      <configuration>
+        <option name="GEN_FOLDER_RELATIVE_PATH_APT" value="../../../out/target/common/obj/APPS/InCallUI_intermediates/src" />
+        <option name="GEN_FOLDER_RELATIVE_PATH_AIDL" value="../../../out/target/common/obj/APPS/InCallUI_intermediates/src" />
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$/../../../out/target/common/obj/APPS/InCallUI_intermediates/src">
+      <sourceFolder url="file://$MODULE_DIR$/../../../out/target/common/obj/APPS/InCallUI_intermediates/src" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
+    </content>
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="module" module-name="libcore" />
+    <orderEntry type="module" module-name="base" />
+    <orderEntry type="module" module-name="common" />
+    <orderEntry type="jdk" jdkName="Android 4.2.2" jdkType="Android SDK" />
+  </component>
+</module>
+
diff --git a/InCallUI/res/layout/answer_fragment.xml b/InCallUI/res/layout/answer_fragment.xml
new file mode 100644
index 0000000..bfe2303
--- /dev/null
+++ b/InCallUI/res/layout/answer_fragment.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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.
+-->
+
+<!-- TODO(klp): move out to separate file -->
+<com.android.incallui.AnswerUi
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:dc="http://schemas.android.com/apk/res-auto"
+
+        android:id="@+id/glow_pad_view"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/glowpadview_margin_bottom"
+        android:focusable="true"
+        android:layout_alignParentBottom="true"
+        android:layout_centerHorizontal="true"
+        android:gravity="center"
+        android:layout_gravity="center_vertical"
+
+        dc:targetDrawables="@array/incoming_call_widget_3way_targets"
+        dc:targetDescriptions="@array/incoming_call_widget_3way_target_descriptions"
+        dc:directionDescriptions="@array/incoming_call_widget_3way_direction_descriptions"
+        dc:handleDrawable="@drawable/ic_in_call_touch_handle"
+        dc:outerRingDrawable="@*android:drawable/ic_lockscreen_outerring"
+        dc:outerRadius="@dimen/glowpadview_target_placement_radius"
+        dc:innerRadius="@dimen/glowpadview_inner_radius"
+        dc:snapMargin="@dimen/glowpadview_snap_margin"
+        dc:feedbackCount="1"
+        dc:vibrationDuration="20"
+        dc:glowRadius="@dimen/glowpadview_glow_radius"
+        dc:pointDrawable="@*android:drawable/ic_lockscreen_glowdot"
+        />
diff --git a/InCallUI/res/layout/incall_screen.xml b/InCallUI/res/layout/incall_screen.xml
index 32159a6..01180ee 100644
--- a/InCallUI/res/layout/incall_screen.xml
+++ b/InCallUI/res/layout/incall_screen.xml
@@ -26,30 +26,6 @@
           android:layout_weight="1"
           android:background="#ddd"/>
 
-    <!-- TODO(klp): move out to separate file -->
-    <com.android.incallui.widget.multiwaveview.GlowPadView
-            android:id="@+id/glow_pad_view"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginBottom="@dimen/glowpadview_margin_bottom"
-            android:focusable="true"
-            android:layout_alignParentBottom="true"
-            android:layout_centerHorizontal="true"
-            android:gravity="center"
-            android:layout_gravity="center_vertical"
 
-            dc:targetDrawables="@array/incoming_call_widget_3way_targets"
-            dc:targetDescriptions="@array/incoming_call_widget_3way_target_descriptions"
-            dc:directionDescriptions="@array/incoming_call_widget_3way_direction_descriptions"
-            dc:handleDrawable="@drawable/ic_in_call_touch_handle"
-            dc:outerRingDrawable="@*android:drawable/ic_lockscreen_outerring"
-            dc:outerRadius="@dimen/glowpadview_target_placement_radius"
-            dc:innerRadius="@dimen/glowpadview_inner_radius"
-            dc:snapMargin="@dimen/glowpadview_snap_margin"
-            dc:feedbackCount="1"
-            dc:vibrationDuration="20"
-            dc:glowRadius="@dimen/glowpadview_glow_radius"
-            dc:pointDrawable="@*android:drawable/ic_lockscreen_glowdot"
-            />
 
 </LinearLayout>
diff --git a/InCallUI/src/com/android/incallui/AnswerFragment.java b/InCallUI/src/com/android/incallui/AnswerFragment.java
new file mode 100644
index 0000000..a80fa93
--- /dev/null
+++ b/InCallUI/src/com/android/incallui/AnswerFragment.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2013 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.incallui;
+
+import android.app.Fragment;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+/**
+ *
+ */
+public class AnswerFragment extends Fragment {
+
+    AnswerPresenter mPresenter;
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        final AnswerUi ui = (AnswerUi) inflater.inflate(R.layout.answer_fragment, container,
+                false);
+        mPresenter = new AnswerPresenter(ui);
+        return ui;
+    }
+}
diff --git a/InCallUI/src/com/android/incallui/AnswerPresenter.java b/InCallUI/src/com/android/incallui/AnswerPresenter.java
new file mode 100644
index 0000000..2377195
--- /dev/null
+++ b/InCallUI/src/com/android/incallui/AnswerPresenter.java
@@ -0,0 +1,31 @@
+package com.android.incallui;
+
+/**
+ *
+ */
+public class AnswerPresenter {
+
+    private Ui mUi;
+
+    public AnswerPresenter(Ui ui) {
+        this.mUi = ui;
+
+        mUi.setPresenter(this);
+    }
+
+    public void onAnswer() {
+
+    }
+
+    public void onDecline() {
+
+    }
+
+    public void onText() {
+
+    }
+
+    public interface Ui {
+        void setPresenter(AnswerPresenter presenter);
+    }
+}
diff --git a/InCallUI/src/com/android/incallui/AnswerUi.java b/InCallUI/src/com/android/incallui/AnswerUi.java
new file mode 100644
index 0000000..f501153
--- /dev/null
+++ b/InCallUI/src/com/android/incallui/AnswerUi.java
@@ -0,0 +1,72 @@
+package com.android.incallui;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.View;
+
+import com.android.incallui.widget.multiwaveview.GlowPadView;
+
+/**
+ *
+ */
+public class AnswerUi extends GlowPadView implements AnswerPresenter.Ui,
+        GlowPadView.OnTriggerListener {
+
+    private static final String TAG = AnswerUi.class.getSimpleName();
+
+    private AnswerPresenter mPresenter;
+
+    public AnswerUi(Context context) {
+        super(context);
+    }
+
+    public AnswerUi(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    public void onGrabbed(View v, int handle) {
+
+    }
+
+    @Override
+    public void onReleased(View v, int handle) {
+
+    }
+
+    @Override
+    public void onTrigger(View v, int target) {
+        final int resId = getResourceIdForTarget(target);
+        switch (resId) {
+            case R.drawable.ic_lockscreen_answer:
+                mPresenter.onAnswer();
+                break;
+            case R.drawable.ic_lockscreen_decline:
+                mPresenter.onDecline();
+                break;
+            case R.drawable.ic_lockscreen_text:
+                mPresenter.onText();
+                break;
+            default:
+                // Code should never reach here.
+                Log.e(TAG, "Trigger detected on unhandled resource. Skipping.");
+        }
+    }
+
+    @Override
+    public void onGrabbedStateChange(View v, int handle) {
+
+    }
+
+    @Override
+    public void onFinishFinalAnimation() {
+
+    }
+
+    @Override
+    public void setPresenter(AnswerPresenter listener) {
+        mPresenter = listener;
+    }
+
+}