Merge "Add the ActionBar trash and share icons."
diff --git a/proguard.flags b/proguard.flags
index 577144b..5a08b9f 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -2,6 +2,13 @@
public <init>(...);
}
+# Xml files containing onClick (menus and layouts) require that proguard not
+# remove their handlers.
+-keepclassmembers class * extends android.app.Activity {
+ public void *(android.view.View);
+ public void *(android.view.MenuItem);
+}
+
# TODO: Instead of keeping the following two functions we could as well just remove them completely
# as they are only used in test code
@@ -16,4 +23,4 @@
# Any methods whose name is '*ForTest' are preserved.
-keep class ** {
*** *ForTest(...);
-}
\ No newline at end of file
+}
diff --git a/res/drawable-hdpi/ic_share_holo_dark.png b/res/drawable-hdpi/ic_share_holo_dark.png
new file mode 100644
index 0000000..686da4c
--- /dev/null
+++ b/res/drawable-hdpi/ic_share_holo_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_share_holo_dark.png b/res/drawable-mdpi/ic_share_holo_dark.png
new file mode 100644
index 0000000..5c33eac
--- /dev/null
+++ b/res/drawable-mdpi/ic_share_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_share_holo_dark.png b/res/drawable-xhdpi/ic_share_holo_dark.png
new file mode 100644
index 0000000..b3e2f80
--- /dev/null
+++ b/res/drawable-xhdpi/ic_share_holo_dark.png
Binary files differ
diff --git a/res/layout/playback_layout.xml b/res/layout/playback_layout.xml
index 1fb36be..020c017 100644
--- a/res/layout/playback_layout.xml
+++ b/res/layout/playback_layout.xml
@@ -40,18 +40,6 @@
android:src="@drawable/ic_hold_pause_holo_dark"
android:layout_weight="1"
/>
- <ImageButton
- android:id="@+id/playback_trash"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:padding="5px"
- android:layout_marginTop="4dip"
- android:layout_marginLeft="4dip"
- android:layout_marginRight="4dip"
- android:background="@drawable/dialpad_background"
- android:src="@drawable/ic_trash_holo_dark"
- android:layout_weight="1"
- />
</LinearLayout>
<SeekBar
android:id="@+id/playback_seek"
diff --git a/res/menu/call_details_options.xml b/res/menu/call_details_options.xml
index 68e265c..0db32a4 100644
--- a/res/menu/call_details_options.xml
+++ b/res/menu/call_details_options.xml
@@ -15,15 +15,26 @@
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
- android:id="@+id/remove_from_call_log"
+ android:id="@+id/menu_share_voicemail"
+ android:icon="@drawable/ic_share_holo_dark"
+ android:showAsAction="ifRoom"
+ android:onClick="onMenuShareVoicemail"
+ />
+ <item
+ android:id="@+id/menu_trash"
+ android:icon="@drawable/ic_trash_holo_dark"
+ android:showAsAction="ifRoom"
+ android:onClick="onMenuTrashVoicemail"
+ />
+ <item
+ android:id="@+id/menu_remove_from_call_log"
android:icon="@android:drawable/ic_menu_close_clear_cancel"
android:title="@string/recentCalls_removeFromRecentList"
- android:showAsAction="withText"
+ android:onClick="onMenuRemoveFromCallLog"
/>
-
<item
- android:id="@+id/edit_number_before_call"
+ android:id="@+id/menu_edit_number_before_call"
android:title="@string/recentCalls_editNumberBeforeCall"
- android:showAsAction="withText"
+ android:onClick="onMenuEditNumberBeforeCall"
/>
</menu>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index dc22fd8..e267a19 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -58,7 +58,7 @@
<item name="favorites_padding_bottom">?android:attr/actionBarSize</item>
</style>
- <style name="CallDetailActivityTheme" parent="android:Theme.Holo.SplitActionBarWhenNarrow">
+ <style name="CallDetailActivityTheme" parent="android:Theme.Holo">
<item name="android:windowBackground">@android:color/black</item>
<item name="android:gravity">top</item>
<!-- CallLog -->
diff --git a/src/com/android/contacts/CallDetailActivity.java b/src/com/android/contacts/CallDetailActivity.java
index 614613c..d0eb817 100644
--- a/src/com/android/contacts/CallDetailActivity.java
+++ b/src/com/android/contacts/CallDetailActivity.java
@@ -102,8 +102,6 @@
private TextView mStatusMessageText;
private TextView mStatusMessageAction;
- /** Whether we should show "remove from call log" in the options menu. */
- private boolean mHasRemoveFromCallLog;
/** Whether we should show "edit number before call" in the options menu. */
private boolean mHasEditNumberBeforeCall;
@@ -353,9 +351,6 @@
getString(R.string.menu_sendTextMessage), smsIntent));
}
- // This action deletes all elements in the group from the call log.
- // We don't have this action for voicemails, because you can just use the trash button.
- mHasRemoveFromCallLog = !hasVoicemail();
mHasEditNumberBeforeCall = canPlaceCallsTo && !isSipNumber && !isVoicemailNumber;
if (actions.size() != 0) {
@@ -614,58 +609,65 @@
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.call_details_options, menu);
- return true;
+ return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// This action deletes all elements in the group from the call log.
// We don't have this action for voicemails, because you can just use the trash button.
- menu.findItem(R.id.remove_from_call_log).setVisible(mHasRemoveFromCallLog);
- menu.findItem(R.id.edit_number_before_call).setVisible(mHasEditNumberBeforeCall);
- return mHasRemoveFromCallLog || mHasEditNumberBeforeCall;
+ menu.findItem(R.id.menu_remove_from_call_log).setVisible(!hasVoicemail());
+ menu.findItem(R.id.menu_edit_number_before_call).setVisible(mHasEditNumberBeforeCall);
+ menu.findItem(R.id.menu_trash).setVisible(hasVoicemail());
+ menu.findItem(R.id.menu_share_voicemail).setVisible(hasVoicemail());
+ return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch (item.getItemId()) {
- case R.id.remove_from_call_log: {
- StringBuilder callIds = new StringBuilder();
- for (Uri callUri : getCallLogEntryUris()) {
- if (callIds.length() != 0) {
- callIds.append(",");
- }
- callIds.append(ContentUris.parseId(callUri));
- }
-
- getContentResolver().delete(Calls.CONTENT_URI_WITH_VOICEMAIL,
- Calls._ID + " IN (" + callIds + ")", null);
- // Also close the activity.
- finish();
- return true;
- }
-
- case R.id.edit_number_before_call:
- startActivity(
- new Intent(Intent.ACTION_DIAL, mPhoneNumberHelper.getCallUri(mNumber)));
- return true;
-
case android.R.id.home: {
onHomeSelected();
return true;
}
+ // All the options menu items are handled by onMenu... methods.
default:
throw new IllegalArgumentException();
}
}
+ public void onMenuRemoveFromCallLog(MenuItem menuItem) {
+ StringBuilder callIds = new StringBuilder();
+ for (Uri callUri : getCallLogEntryUris()) {
+ if (callIds.length() != 0) {
+ callIds.append(",");
+ }
+ callIds.append(ContentUris.parseId(callUri));
+ }
+
+ getContentResolver().delete(Calls.CONTENT_URI_WITH_VOICEMAIL,
+ Calls._ID + " IN (" + callIds + ")", null);
+ // Also close the activity.
+ finish();
+ }
+
+ public void onMenuEditNumberBeforeCall(MenuItem menuItem) {
+ startActivity(new Intent(Intent.ACTION_DIAL, mPhoneNumberHelper.getCallUri(mNumber)));
+ }
+
+ public void onMenuShareVoicemail(MenuItem menuItem) {
+ Log.w(TAG, "onMenuShareVoicemail not yet implemented");
+ }
+
+ public void onMenuTrashVoicemail(MenuItem menuItem) {
+ Log.w(TAG, "onMenuTrashVoicemail not yet implemented");
+ }
+
private void configureActionBar() {
ActionBar actionBar = getActionBar();
if (actionBar != null) {
- actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_HOME,
- ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_TITLE
- | ActionBar.DISPLAY_SHOW_HOME);
+ actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_HOME);
actionBar.setIcon(R.drawable.ic_ab_dialer_holo_dark);
}
}
diff --git a/src/com/android/contacts/voicemail/VoicemailPlaybackFragment.java b/src/com/android/contacts/voicemail/VoicemailPlaybackFragment.java
index edc1bb4..d306209 100644
--- a/src/com/android/contacts/voicemail/VoicemailPlaybackFragment.java
+++ b/src/com/android/contacts/voicemail/VoicemailPlaybackFragment.java
@@ -66,7 +66,6 @@
private SeekBar mPlaybackSeek;
private ImageButton mStartStopButton;
private ImageButton mPlaybackSpeakerphone;
- private ImageButton mPlaybackTrashButton;
private TextView mPlaybackPositionText;
private ImageButton mRateDecreaseButton;
private ImageButton mRateIncreaseButton;
@@ -80,7 +79,6 @@
mPlaybackSeek = (SeekBar) view.findViewById(R.id.playback_seek);
mStartStopButton = (ImageButton) view.findViewById(R.id.playback_start_stop);
mPlaybackSpeakerphone = (ImageButton) view.findViewById(R.id.playback_speakerphone);
- mPlaybackTrashButton = (ImageButton) view.findViewById(R.id.playback_trash);
mPlaybackPositionText = (TextView) view.findViewById(R.id.playback_position_text);
mRateDecreaseButton = (ImageButton) view.findViewById(R.id.rate_decrease_button);
mRateIncreaseButton = (ImageButton) view.findViewById(R.id.rate_increase_button);
@@ -188,11 +186,6 @@
}
@Override
- public void setDeleteButtonListener(View.OnClickListener listener) {
- mPlaybackTrashButton.setOnClickListener(listener);
- }
-
- @Override
public void setPositionSeekListener(SeekBar.OnSeekBarChangeListener listener) {
mPlaybackSeek.setOnSeekBarChangeListener(listener);
}
diff --git a/src/com/android/contacts/voicemail/VoicemailPlaybackPresenter.java b/src/com/android/contacts/voicemail/VoicemailPlaybackPresenter.java
index 0e7470a..eac502d 100644
--- a/src/com/android/contacts/voicemail/VoicemailPlaybackPresenter.java
+++ b/src/com/android/contacts/voicemail/VoicemailPlaybackPresenter.java
@@ -56,7 +56,6 @@
void setStartStopListener(View.OnClickListener listener);
void setPositionSeekListener(SeekBar.OnSeekBarChangeListener listener);
void setSpeakerphoneListener(View.OnClickListener listener);
- void setDeleteButtonListener(View.OnClickListener listener);
void setClipPosition(int clipPositionInMillis, int clipLengthInMillis);
int getDesiredClipPosition();
void playbackStarted();
@@ -138,7 +137,6 @@
mView.setPositionSeekListener(new PlaybackPositionListener());
mView.setStartStopListener(new StartStopButtonListener());
mView.setSpeakerphoneListener(new SpeakerphoneListener());
- mView.setDeleteButtonListener(new DeleteButtonListener());
mPlayer.setOnErrorListener(new MediaPlayerErrorListener());
mPlayer.setOnCompletionListener(new MediaPlayerCompletionListener());
mView.setSpeakerPhoneOn(mView.isSpeakerPhoneOn());
@@ -303,15 +301,6 @@
}
}
- private class DeleteButtonListener implements View.OnClickListener {
- @Override
- public void onClick(View v) {
- // TODO: Temporarily removed this whilst the team discuss the merits of porting
- // the VoicemailHelper class across vs just hard-coding the delete via cursor.
- mView.finish();
- }
- }
-
private class StartStopButtonListener implements View.OnClickListener {
@Override
public void onClick(View arg0) {
diff --git a/tests/src/com/android/contacts/CallDetailActivityTest.java b/tests/src/com/android/contacts/CallDetailActivityTest.java
index c1efa3f..cdb6e44 100644
--- a/tests/src/com/android/contacts/CallDetailActivityTest.java
+++ b/tests/src/com/android/contacts/CallDetailActivityTest.java
@@ -103,7 +103,7 @@
Menu menu = new ContextMenuBuilder(activity);
activity.onCreateOptionsMenu(menu);
activity.onPrepareOptionsMenu(menu);
- assertFalse(menu.findItem(R.id.remove_from_call_log).isVisible());
+ assertFalse(menu.findItem(R.id.menu_remove_from_call_log).isVisible());
}
/** Test to check that I haven't broken the remove-from-call-log entry from regular calls. */
@@ -113,7 +113,7 @@
Menu menu = new ContextMenuBuilder(activity);
activity.onCreateOptionsMenu(menu);
activity.onPrepareOptionsMenu(menu);
- assertTrue(menu.findItem(R.id.remove_from_call_log).isVisible());
+ assertTrue(menu.findItem(R.id.menu_remove_from_call_log).isVisible());
}
/**