summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/layout/call_detail.xml29
-rw-r--r--res/layout/call_details_voicemail_header.xml47
-rw-r--r--src/com/android/dialer/CallDetailActivity.java52
3 files changed, 76 insertions, 52 deletions
diff --git a/res/layout/call_detail.xml b/res/layout/call_detail.xml
index 2e38e2d99..35c41c0b3 100644
--- a/res/layout/call_detail.xml
+++ b/res/layout/call_detail.xml
@@ -87,35 +87,6 @@
</LinearLayout>
</LinearLayout>
- <FrameLayout
- android:id="@+id/voicemail_status"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentStart="true"
- android:layout_alignParentTop="true"
- android:visibility="gone"
- >
- <include layout="@layout/call_log_voicemail_status"/>
- </FrameLayout>
- <TextView
- android:id="@+id/voicemail_transcription"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingStart="@dimen/call_detail_horizontal_margin"
- android:paddingEnd="@dimen/call_detail_horizontal_margin"
- android:paddingTop="@dimen/transcription_top_margin"
- android:paddingBottom="@dimen/transcription_bottom_margin" />
- <LinearLayout
- android:id="@+id/voicemail_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:paddingBottom="@dimen/call_detail_button_spacing"
- android:visibility="gone"
- >
- <!-- The voicemail fragment will be put here. -->
- </LinearLayout>
-
<!--
The list view is under everything.
It contains a first header element which is hidden under the controls UI.
diff --git a/res/layout/call_details_voicemail_header.xml b/res/layout/call_details_voicemail_header.xml
new file mode 100644
index 000000000..f2a016b22
--- /dev/null
+++ b/res/layout/call_details_voicemail_header.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical" >
+
+ <FrameLayout
+ android:id="@+id/voicemail_status"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:visibility="gone"
+ >
+ <include layout="@layout/call_log_voicemail_status"/>
+ </FrameLayout>
+ <TextView
+ android:id="@+id/voicemail_transcription"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingStart="@dimen/call_detail_horizontal_margin"
+ android:paddingEnd="@dimen/call_detail_horizontal_margin"
+ android:paddingTop="@dimen/transcription_top_margin"
+ android:paddingBottom="@dimen/transcription_bottom_margin" />
+ <LinearLayout
+ android:id="@+id/voicemail_container"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:paddingBottom="@dimen/call_detail_button_spacing"
+ android:visibility="gone"
+ >
+ <!-- The voicemail fragment will be put here. -->
+ </LinearLayout>
+</LinearLayout> \ No newline at end of file
diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
index e716719f4..5ef75dbea 100644
--- a/src/com/android/dialer/CallDetailActivity.java
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -43,6 +43,7 @@ import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
+import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.QuickContactBadge;
import android.widget.TextView;
@@ -135,6 +136,9 @@ public class CallDetailActivity extends AnalyticsActivity implements ProximitySe
private TextView mStatusMessageText;
private TextView mStatusMessageAction;
private TextView mVoicemailTranscription;
+ private LinearLayout mVoicemailHeader;
+
+ private Uri mVoicemailUri;
/** Whether we should show "edit number before call" in the options menu. */
private boolean mHasEditNumberBeforeCallOption;
@@ -239,10 +243,9 @@ public class CallDetailActivity extends AnalyticsActivity implements ProximitySe
mPhoneNumberHelper = new PhoneNumberDisplayHelper(mResources);
mVoicemailStatusHelper = new VoicemailStatusHelperImpl();
mAsyncQueryHandler = new CallDetailActivityQueryHandler(this);
- mStatusMessageView = findViewById(R.id.voicemail_status);
- mStatusMessageText = (TextView) findViewById(R.id.voicemail_status_message);
- mStatusMessageAction = (TextView) findViewById(R.id.voicemail_status_action);
- mVoicemailTranscription = (TextView) findViewById(R.id.voicemail_transcription);
+
+ mVoicemailUri = getIntent().getParcelableExtra(EXTRA_VOICEMAIL_URI);
+
mQuickContactBadge = (QuickContactBadge) findViewById(R.id.quick_contact_photo);
mQuickContactBadge.setOverlay(null);
mCallerName = (TextView) findViewById(R.id.caller_name);
@@ -253,6 +256,7 @@ public class CallDetailActivity extends AnalyticsActivity implements ProximitySe
mProximitySensorManager = new ProximitySensorManager(this, mProximitySensorListener);
mContactInfoHelper = new ContactInfoHelper(this, GeoUtil.getCurrentCountryIso(this));
getActionBar().setDisplayHomeAsUpEnabled(true);
+
optionallyHandleVoicemail();
if (getIntent().getBooleanExtra(EXTRA_FROM_NOTIFICATION, false)) {
closeSystemDialogs();
@@ -269,11 +273,25 @@ public class CallDetailActivity extends AnalyticsActivity implements ProximitySe
* Handle voicemail playback or hide voicemail ui.
* <p>
* If the Intent used to start this Activity contains the suitable extras, then start voicemail
- * playback. If it doesn't, then hide the voicemail ui.
+ * playback. If it doesn't, then don't inflate the voicemail ui.
*/
private void optionallyHandleVoicemail() {
- View voicemailContainer = findViewById(R.id.voicemail_container);
+
if (hasVoicemail()) {
+ LayoutInflater inflater =
+ (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ mVoicemailHeader =
+ (LinearLayout) inflater.inflate(R.layout.call_details_voicemail_header, null);
+ View voicemailContainer = mVoicemailHeader.findViewById(R.id.voicemail_container);
+ mStatusMessageView = mVoicemailHeader.findViewById(R.id.voicemail_status);
+ mStatusMessageText =
+ (TextView) mVoicemailHeader.findViewById(R.id.voicemail_status_message);
+ mStatusMessageAction =
+ (TextView) mVoicemailHeader.findViewById(R.id.voicemail_status_action);
+ mVoicemailTranscription = (
+ TextView) mVoicemailHeader.findViewById(R.id.voicemail_transcription);
+ ListView historyList = (ListView) findViewById(R.id.history);
+ historyList.addHeaderView(mVoicemailHeader);
// Has voicemail: add the voicemail fragment. Add suitable arguments to set the uri
// to play and optionally start the playback.
// Do a query to fetch the voicemail status messages.
@@ -285,7 +303,7 @@ public class CallDetailActivity extends AnalyticsActivity implements ProximitySe
if (playbackFragment == null) {
playbackFragment = new VoicemailPlaybackFragment();
Bundle fragmentArguments = new Bundle();
- fragmentArguments.putParcelable(EXTRA_VOICEMAIL_URI, getVoicemailUri());
+ fragmentArguments.putParcelable(EXTRA_VOICEMAIL_URI, mVoicemailUri);
if (getIntent().getBooleanExtra(EXTRA_VOICEMAIL_START_PLAYBACK, false)) {
fragmentArguments.putBoolean(EXTRA_VOICEMAIL_START_PLAYBACK, true);
}
@@ -296,21 +314,13 @@ public class CallDetailActivity extends AnalyticsActivity implements ProximitySe
}
voicemailContainer.setVisibility(View.VISIBLE);
- mAsyncQueryHandler.startVoicemailStatusQuery(getVoicemailUri());
- markVoicemailAsRead(getVoicemailUri());
- } else {
- // No voicemail uri: hide the status view.
- mStatusMessageView.setVisibility(View.GONE);
- voicemailContainer.setVisibility(View.GONE);
+ mAsyncQueryHandler.startVoicemailStatusQuery(mVoicemailUri);
+ markVoicemailAsRead(mVoicemailUri);
}
}
private boolean hasVoicemail() {
- return getVoicemailUri() != null;
- }
-
- private Uri getVoicemailUri() {
- return getIntent().getParcelableExtra(EXTRA_VOICEMAIL_URI);
+ return mVoicemailUri != null;
}
private void markVoicemailAsRead(final Uri voicemailUri) {
@@ -480,9 +490,6 @@ public class CallDetailActivity extends AnalyticsActivity implements ProximitySe
if (hasVoicemail() && !TextUtils.isEmpty(firstDetails.transcription)) {
mVoicemailTranscription.setText(firstDetails.transcription);
mVoicemailTranscription.setVisibility(View.VISIBLE);
- } else {
- mVoicemailTranscription.setText(null);
- mVoicemailTranscription.setVisibility(View.GONE);
}
loadContactPhotos(
@@ -720,12 +727,11 @@ public class CallDetailActivity extends AnalyticsActivity implements ProximitySe
}
public void onMenuTrashVoicemail(MenuItem menuItem) {
- final Uri voicemailUri = getVoicemailUri();
mAsyncTaskExecutor.submit(Tasks.DELETE_VOICEMAIL_AND_FINISH,
new AsyncTask<Void, Void, Void>() {
@Override
public Void doInBackground(Void... params) {
- getContentResolver().delete(voicemailUri, null, null);
+ getContentResolver().delete(mVoicemailUri, null, null);
return null;
}