diff options
author | android-build-prod (mdb) <android-build-team-robot@google.com> | 2018-05-04 19:28:30 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2018-05-04 19:28:30 +0000 |
commit | 4a0bf0749203eaa4509bedc55efbcc9a191a0b42 (patch) | |
tree | 6b417757830b1c4603ba28250c111693cb4d0b7c | |
parent | dd18cb13307866ec723992b327d1f6061b326313 (diff) | |
parent | 2cc1bfc10ab390d44c2fe7280cae787655ca8fcc (diff) |
Merge changes I481fbbc7,I57e48b5d,Ieb52489b,I2763ddd9
* changes:
Translation tweaks.
Migrated context menu to be a PopupMenu instead.
Add column for call mapping id to AnnotatedCallLog database.
Don't force open keyboard when RTT is active.
16 files changed, 221 insertions, 269 deletions
diff --git a/java/com/android/dialer/calldetails/CallDetailsCursorLoader.java b/java/com/android/dialer/calldetails/CallDetailsCursorLoader.java index 0e6eb76f5..9d55b9fda 100644 --- a/java/com/android/dialer/calldetails/CallDetailsCursorLoader.java +++ b/java/com/android/dialer/calldetails/CallDetailsCursorLoader.java @@ -42,7 +42,8 @@ public final class CallDetailsCursorLoader extends CursorLoader { AnnotatedCallLog.TIMESTAMP, AnnotatedCallLog.DURATION, AnnotatedCallLog.DATA_USAGE, - AnnotatedCallLog.PHONE_ACCOUNT_COMPONENT_NAME + AnnotatedCallLog.PHONE_ACCOUNT_COMPONENT_NAME, + AnnotatedCallLog.CALL_MAPPING_ID }; // Indexes for COLUMNS_FOR_CALL_DETAILS @@ -53,6 +54,7 @@ public final class CallDetailsCursorLoader extends CursorLoader { private static final int DURATION = 4; private static final int DATA_USAGE = 5; private static final int PHONE_ACCOUNT_COMPONENT_NAME = 6; + private static final int CALL_MAPPING_ID = 7; CallDetailsCursorLoader(Context context, CoalescedIds coalescedIds) { super( @@ -140,9 +142,7 @@ public final class CallDetailsCursorLoader extends CursorLoader { .setDate(cursor.getLong(TIMESTAMP)) .setDuration(cursor.getLong(DURATION)) .setDataUsage(cursor.getLong(DATA_USAGE)) - - .setCallMappingId(String.valueOf(cursor.getLong(TIMESTAMP))); - + .setCallMappingId(cursor.getString(CALL_MAPPING_ID)); String phoneAccountComponentName = cursor.getString(PHONE_ACCOUNT_COMPONENT_NAME); entry.setIsDuoCall(DuoComponent.get(context).getDuo().isDuoAccount(phoneAccountComponentName)); diff --git a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java index 61f7debf7..32f303fb4 100644 --- a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java +++ b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java @@ -45,7 +45,7 @@ public class AnnotatedCallLogDatabaseHelper extends SQLiteOpenHelper { @ApplicationContext Context appContext, @AnnotatedCallLogMaxRows int maxRows, @BackgroundExecutor ListeningExecutorService backgroundExecutor) { - super(appContext, FILENAME, null, 1); + super(appContext, FILENAME, null, 2); this.appContext = appContext; this.maxRows = maxRows; @@ -75,9 +75,24 @@ public class AnnotatedCallLogDatabaseHelper extends SQLiteOpenHelper { + (AnnotatedCallLog.NUMBER_ATTRIBUTES + " blob, ") + (AnnotatedCallLog.IS_VOICEMAIL_CALL + " integer, ") + (AnnotatedCallLog.VOICEMAIL_CALL_TAG + " text, ") - + (AnnotatedCallLog.TRANSCRIPTION_STATE + " integer") + + (AnnotatedCallLog.TRANSCRIPTION_STATE + " integer, ") + + (AnnotatedCallLog.CALL_MAPPING_ID + " text") + ");"; + private static final String ALTER_TABLE_SQL_ADD_CALL_MAPPING_ID_COLUMN = + "alter table " + + AnnotatedCallLog.TABLE + + " add column " + + AnnotatedCallLog.CALL_MAPPING_ID + + " text;"; + private static final String UPDATE_CALL_MAPPING_ID_COLUMN = + "update " + + AnnotatedCallLog.TABLE + + " set " + + AnnotatedCallLog.CALL_MAPPING_ID + + " = " + + AnnotatedCallLog.TIMESTAMP; + /** * Deletes all but the first maxRows rows (by timestamp, excluding voicemails) to keep the table a * manageable size. @@ -143,7 +158,12 @@ public class AnnotatedCallLogDatabaseHelper extends SQLiteOpenHelper { } @Override - public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {} + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + if (oldVersion == 1 && newVersion == 2) { + db.execSQL(ALTER_TABLE_SQL_ADD_CALL_MAPPING_ID_COLUMN); + db.execSQL(UPDATE_CALL_MAPPING_ID_COLUMN); + } + } /** Closes the database and deletes it. */ public ListenableFuture<Void> delete() { diff --git a/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java b/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java index 5e4e4afd3..ee888d196 100644 --- a/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java +++ b/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java @@ -221,6 +221,17 @@ public class AnnotatedCallLogContract { * <p>TYPE: TEXT */ public static final String VOICEMAIL_URI = "voicemail_uri"; + + /** + * An unique id to associate this call log row to a {@link android.telecom.Call}. + * + * <p>For pre-Q device, this is same as {@link TIMESTAMP}. + * + * <p>For Q+ device, this will be copied from {@link android.provider.CallLog.Calls}. + * + * <p>Type: TEXT + */ + public static final String CALL_MAPPING_ID = "call_mapping_id"; } /** diff --git a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java index 588e64c5c..b5067daac 100644 --- a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java +++ b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java @@ -370,6 +370,9 @@ public class SystemCallLogDataSource implements CallLogDataSource { contentValues.put(AnnotatedCallLog.DATA_USAGE, dataUsage); contentValues.put(AnnotatedCallLog.TRANSCRIPTION, transcription); contentValues.put(AnnotatedCallLog.VOICEMAIL_URI, voicemailUri); + + contentValues.put(AnnotatedCallLog.CALL_MAPPING_ID, String.valueOf(date)); + setTranscriptionState(cursor, contentValues); if (existingAnnotatedCallLogIds.contains(id)) { diff --git a/java/com/android/dialer/calllogutils/res/values/strings.xml b/java/com/android/dialer/calllogutils/res/values/strings.xml index 1c1f31446..e476bdd6c 100644 --- a/java/com/android/dialer/calllogutils/res/values/strings.xml +++ b/java/com/android/dialer/calllogutils/res/values/strings.xml @@ -66,28 +66,28 @@ This translation may require the variables to be rearranged for grammars different than english. [CHAR LIMIT=NONE] --> <string name="a11y_call_duration_format"> - <xliff:g id="minutes">%d</xliff:g> <xliff:g id="minutes_translation">%s</xliff:g> <xliff:g id="seconds">%d</xliff:g> <xliff:g id="seconds_translation">%s</xliff:g> + <xliff:g id="minutes">%1$d</xliff:g> <xliff:g id="minutes_translation">%2$s</xliff:g> <xliff:g id="seconds">%3$d</xliff:g> <xliff:g id="seconds_translation">%4$s</xliff:g> </string> <!-- A string to announce a call duration. For example, in english might say 15 seconds. This translation may require the variables to be rearranged for grammars different than english. [CHAR LIMIT=NONE] --> <string name="a11y_call_duration_short_format"> - <xliff:g id="seconds">%d</xliff:g> <xliff:g id="seconds_translation">%s</xliff:g> + <xliff:g id="seconds">%1$d</xliff:g> <xliff:g id="seconds_translation">%2$s</xliff:g> </string> <!-- A pattern to define the layout of a call duration string. for example, in english might say 2m 15s. Translation should only rearrange the inputs. minutes_translation and seconds_translation should remain in \'quotes\'. [CHAR LIMIT=NONE] --> <string name="call_duration_format_pattern"> - <xliff:g id="minutes_special_character">%s</xliff:g>\'<xliff:g id="minutes_translation">%s</xliff:g>\' <xliff:g id="seconds_special_character">%s</xliff:g>\'<xliff:g id="seconds_translation">%s</xliff:g>\' + <xliff:g id="minutes_special_character">%1$s</xliff:g>\'<xliff:g id="minutes_translation">%2$s</xliff:g>\' <xliff:g id="seconds_special_character">%3$s</xliff:g>\'<xliff:g id="seconds_translation">%4$s</xliff:g>\' </string> <!-- A pattern to define the layout of a call duration string. for example, in english might say 2m 15s. Translation should only rearrange the inputs. seconds_translation should remain in \'quotes\'. [CHAR LIMIT=NONE] --> <string name="call_duration_short_format_pattern"> - <xliff:g id="seconds_special_character">%s</xliff:g>\'<xliff:g id="seconds_translation">%s</xliff:g>\' + <xliff:g id="seconds_special_character">%1$s</xliff:g>\'<xliff:g id="seconds_translation">%2$s</xliff:g>\' </string> <!-- A full string for seconds (time). [CHAR LIMIT=NONE] --> diff --git a/java/com/android/dialer/common/UiUtil.java b/java/com/android/dialer/common/UiUtil.java index 4c4ebea11..20c93e190 100644 --- a/java/com/android/dialer/common/UiUtil.java +++ b/java/com/android/dialer/common/UiUtil.java @@ -32,7 +32,14 @@ public class UiUtil { } /** Opens the android keyboard. */ - public static void openKeyboardFrom(Context context, View view) { + public static void showKeyboardFrom(Context context, View view) { + InputMethodManager inputMethodManager = + (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); + inputMethodManager.showSoftInput(view, 0); + } + + /** Force open the android keyboard. */ + public static void forceOpenKeyboardFrom(Context context, View view) { InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.toggleSoftInputFromWindow( diff --git a/java/com/android/dialer/main/impl/toolbar/SearchBarView.java b/java/com/android/dialer/main/impl/toolbar/SearchBarView.java index 8ea94299e..60b067379 100644 --- a/java/com/android/dialer/main/impl/toolbar/SearchBarView.java +++ b/java/com/android/dialer/main/impl/toolbar/SearchBarView.java @@ -219,7 +219,7 @@ final class SearchBarView extends FrameLayout { } public void showKeyboard() { - UiUtil.openKeyboardFrom(getContext(), searchBox); + UiUtil.forceOpenKeyboardFrom(getContext(), searchBox); } public void setHint(@StringRes int hint) { diff --git a/java/com/android/dialer/speeddial/ContextMenu.java b/java/com/android/dialer/speeddial/ContextMenu.java index 09505ab99..e0a4551db 100644 --- a/java/com/android/dialer/speeddial/ContextMenu.java +++ b/java/com/android/dialer/speeddial/ContextMenu.java @@ -17,101 +17,107 @@ package com.android.dialer.speeddial; import android.content.Context; -import android.support.annotation.Nullable; +import android.support.annotation.NonNull; import android.support.annotation.VisibleForTesting; -import android.util.AttributeSet; +import android.support.v7.widget.PopupMenu; +import android.support.v7.widget.PopupMenu.OnMenuItemClickListener; +import android.text.TextUtils; +import android.view.Gravity; +import android.view.MenuItem; import android.view.View; -import android.widget.LinearLayout; -import android.widget.TextView; import com.android.dialer.common.Assert; import com.android.dialer.speeddial.database.SpeedDialEntry.Channel; import com.android.dialer.speeddial.loader.SpeedDialUiItem; -/** Floating menu which presents contact options available to the contact. */ -public class ContextMenu extends LinearLayout { - - private ContextMenuItemListener listener; - - private TextView voiceView; - private TextView videoView; - private TextView smsView; - - private SpeedDialUiItem speedDialUiItem; - private Channel voiceChannel; - private Channel videoChannel; - - public ContextMenu(Context context, @Nullable AttributeSet attrs) { - super(context, attrs); +/** {@link PopupMenu} which presents contact options for starred contacts. */ +public class ContextMenu extends PopupMenu implements OnMenuItemClickListener { + + private final ContextMenuItemListener listener; + + private final SpeedDialUiItem speedDialUiItem; + private final Channel voiceChannel; + private final Channel videoChannel; + + private boolean visible; + + /** + * Creates a new context menu and displays it. + * + * @see #show() + */ + public static ContextMenu show( + Context context, + View anchor, + ContextMenuItemListener contextMenuListener, + SpeedDialUiItem speedDialUiItem) { + ContextMenu menu = new ContextMenu(context, anchor, contextMenuListener, speedDialUiItem); + menu.show(); + menu.visible = true; + return menu; } - @Override - protected void onFinishInflate() { - super.onFinishInflate(); - - videoView = findViewById(R.id.video_call_container); - videoView.setOnClickListener(v -> placeVideoCall()); - - smsView = findViewById(R.id.send_message_container); - smsView.setOnClickListener(v -> listener.openSmsConversation(voiceChannel.number())); - - voiceView = findViewById(R.id.voice_call_container); - voiceView.setOnClickListener(v -> placeVoiceCall()); - - findViewById(R.id.remove_container) - .setOnClickListener(v -> listener.removeFavoriteContact(speedDialUiItem)); - findViewById(R.id.contact_info_container) - .setOnClickListener(v -> listener.openContactInfo(speedDialUiItem)); + /** + * Hides the context menu. + * + * @see #dismiss() + */ + public void hide() { + dismiss(); + visible = false; } - /** Shows the menu and updates the menu's position w.r.t. the view it's related to. */ - public void showMenu( - View parentLayout, - View childLayout, - SpeedDialUiItem speedDialUiItem, - ContextMenuItemListener listener) { - this.speedDialUiItem = speedDialUiItem; + private ContextMenu( + @NonNull Context context, + @NonNull View anchor, + ContextMenuItemListener listener, + SpeedDialUiItem speedDialUiItem) { + super(context, anchor, Gravity.CENTER); this.listener = listener; - - int[] childLocation = new int[2]; - int[] parentLocation = new int[2]; - childLayout.getLocationOnScreen(childLocation); - parentLayout.getLocationOnScreen(parentLocation); - - setX((float) (childLocation[0] + .5 * childLayout.getWidth() - .5 * getWidth())); - setY(childLocation[1] - parentLocation[1] + childLayout.getHeight()); - + this.speedDialUiItem = speedDialUiItem; voiceChannel = speedDialUiItem.getDefaultVoiceChannel(); videoChannel = speedDialUiItem.getDefaultVideoChannel(); - voiceView.setVisibility(videoChannel == null ? View.GONE : View.VISIBLE); - videoView.setVisibility(videoChannel == null ? View.GONE : View.VISIBLE); - smsView.setVisibility(voiceChannel == null ? View.GONE : View.VISIBLE); - - // TODO(calderwoodra): a11y - // TODO(calderwoodra): animate this similar to the bubble menu - setVisibility(View.VISIBLE); - } - /** Returns true if the view was hidden. */ - public void hideMenu() { - this.speedDialUiItem = null; - this.listener = null; - if (getVisibility() == View.VISIBLE) { - // TODO(calderwoodra): a11y - // TODO(calderwoodra): animate this similar to the bubble menu - setVisibility(View.INVISIBLE); + setOnMenuItemClickListener(this); + getMenuInflater().inflate(R.menu.starred_contact_context_menu, getMenu()); + getMenu().findItem(R.id.voice_call_container).setVisible(voiceChannel != null); + getMenu().findItem(R.id.video_call_container).setVisible(videoChannel != null); + getMenu().findItem(R.id.send_message_container).setVisible(voiceChannel != null); + if (voiceChannel != null) { + String secondaryInfo = + TextUtils.isEmpty(voiceChannel.label()) + ? voiceChannel.number() + : context.getString( + R.string.call_subject_type_and_number, + voiceChannel.label(), + voiceChannel.number()); + getMenu().findItem(R.id.starred_contact_context_menu_title).setTitle(secondaryInfo); + getMenu().findItem(R.id.starred_contact_context_menu_title).setVisible(true); + } else { + getMenu().findItem(R.id.starred_contact_context_menu_title).setVisible(false); } } - private void placeVoiceCall() { - listener.placeCall(Assert.isNotNull(voiceChannel)); - } - - private void placeVideoCall() { - listener.placeCall(Assert.isNotNull(videoChannel)); + @Override + public boolean onMenuItemClick(MenuItem menuItem) { + if (menuItem.getItemId() == R.id.voice_call_container) { + listener.placeCall(Assert.isNotNull(voiceChannel)); + } else if (menuItem.getItemId() == R.id.video_call_container) { + listener.placeCall(Assert.isNotNull(videoChannel)); + } else if (menuItem.getItemId() == R.id.send_message_container) { + listener.openSmsConversation(voiceChannel.number()); + } else if (menuItem.getItemId() == R.id.remove_container) { + listener.removeFavoriteContact(speedDialUiItem); + } else if (menuItem.getItemId() == R.id.contact_info_container) { + listener.openContactInfo(speedDialUiItem); + } else { + throw Assert.createIllegalStateFailException("Menu option click not handled"); + } + return true; } + @VisibleForTesting(otherwise = VisibleForTesting.NONE) public boolean isVisible() { - return getVisibility() == View.VISIBLE; + return visible; } /** Listener to report user clicks on menu items. */ diff --git a/java/com/android/dialer/speeddial/SpeedDialFragment.java b/java/com/android/dialer/speeddial/SpeedDialFragment.java index 526db09e3..db4c0245e 100644 --- a/java/com/android/dialer/speeddial/SpeedDialFragment.java +++ b/java/com/android/dialer/speeddial/SpeedDialFragment.java @@ -32,7 +32,6 @@ import android.support.v7.widget.helper.ItemTouchHelper; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.FrameLayout; import com.android.dialer.callintent.CallInitiationType; import com.android.dialer.callintent.CallIntentBuilder; import com.android.dialer.common.FragmentUtils; @@ -82,11 +81,9 @@ public class SpeedDialFragment extends Fragment { private final SpeedDialHeaderListener headerListener = new SpeedDialFragmentHeaderListener(); private final SpeedDialSuggestedListener suggestedListener = new SpeedDialSuggestedListener(); - private ContextMenu contextMenu; - private FrameLayout contextMenuBackground; - private SpeedDialAdapter adapter; private SupportUiListener<ImmutableList<SpeedDialUiItem>> speedDialLoaderListener; + private SpeedDialFavoritesListener favoritesListener; /** * We update the UI every time the fragment is resumed. This boolean suppresses that functionality @@ -109,25 +106,13 @@ public class SpeedDialFragment extends Fragment { DialerExecutorComponent.get(getContext()) .createUiListener(getChildFragmentManager(), "speed_dial_loader_listener"); - // Setup favorite contact context menu - contextMenu = rootLayout.findViewById(R.id.favorite_contact_context_menu); - contextMenuBackground = rootLayout.findViewById(R.id.context_menu_background); - contextMenuBackground.setOnClickListener( - v -> { - contextMenu.hideMenu(); - contextMenuBackground.setVisibility(View.GONE); - }); - // Setup our RecyclerView SpeedDialLayoutManager layoutManager = new SpeedDialLayoutManager(getContext(), 3 /* spanCount */); - FavoriteContactsListener favoritesListener = + favoritesListener = new SpeedDialFavoritesListener( getActivity(), getChildFragmentManager(), - rootLayout, - contextMenu, - contextMenuBackground, new SpeedDialContextMenuItemListener( getActivity(), new UpdateSpeedDialAdapterListener(), speedDialLoaderListener), layoutManager); @@ -198,8 +183,7 @@ public class SpeedDialFragment extends Fragment { @Override public void onPause() { super.onPause(); - contextMenu.hideMenu(); - contextMenuBackground.setVisibility(View.GONE); + favoritesListener.hideMenu(); Futures.addCallback( DialerExecutorComponent.get(getContext()) .backgroundExecutor() @@ -215,15 +199,6 @@ public class SpeedDialFragment extends Fragment { suggestedListener.onPause(); } - @Override - public void onHiddenChanged(boolean hidden) { - super.onHiddenChanged(hidden); - if (hidden) { - contextMenu.hideMenu(); - contextMenuBackground.setVisibility(View.GONE); - } - } - private class SpeedDialFragmentHeaderListener implements SpeedDialHeaderListener { @Override @@ -237,25 +212,18 @@ public class SpeedDialFragment extends Fragment { private final FragmentActivity activity; private final FragmentManager childFragmentManager; - private final View rootLayout; - private final ContextMenu contextMenu; - private final View contextMenuBackground; private final ContextMenuItemListener contextMenuListener; private final SpeedDialLayoutManager layoutManager; + private ContextMenu contextMenu; + SpeedDialFavoritesListener( FragmentActivity activity, FragmentManager childFragmentManager, - View rootLayout, - ContextMenu contextMenu, - View contextMenuBackground, ContextMenuItemListener contextMenuListener, SpeedDialLayoutManager layoutManager) { this.activity = activity; this.childFragmentManager = childFragmentManager; - this.rootLayout = rootLayout; - this.contextMenu = contextMenu; - this.contextMenuBackground = contextMenuBackground; this.contextMenuListener = contextMenuListener; this.layoutManager = layoutManager; } @@ -291,7 +259,7 @@ public class SpeedDialFragment extends Fragment { @Override public void showContextMenu(View view, SpeedDialUiItem speedDialUiItem) { layoutManager.setScrollEnabled(false); - contextMenu.showMenu(rootLayout, view, speedDialUiItem, contextMenuListener); + contextMenu = ContextMenu.show(activity, view, contextMenuListener, speedDialUiItem); } @Override @@ -299,14 +267,15 @@ public class SpeedDialFragment extends Fragment { layoutManager.setScrollEnabled(true); if (closeContextMenu) { - contextMenu.hideMenu(); - } else if (contextMenu.isVisible()) { - // If we're showing the context menu, show this background surface so that we can intercept - // touch events to close the menu - // Note: We call this in onTouchFinished because if we show the background before the user - // is done, they might try to drag the view and but won't be able to because this view would - // intercept all of the touch events. - contextMenuBackground.setVisibility(View.VISIBLE); + contextMenu.hide(); + contextMenu = null; + } + } + + public void hideMenu() { + if (contextMenu != null) { + contextMenu.hide(); + contextMenu = null; } } } diff --git a/java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java b/java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java index 731c8c641..365b88f8c 100644 --- a/java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java +++ b/java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java @@ -234,16 +234,29 @@ public abstract class SpeedDialUiItem { */ @Nullable public Channel getDefaultVoiceChannel() { - if (defaultChannel() != null && !defaultChannel().isVideoTechnology()) { - return defaultChannel(); - } - if (channels().size() == 1) { // If there is only a single channel, it must be a voice channel as per our defined // assumptions (detailed in comments on method channels()). return channels().get(0); } + if (defaultChannel() == null) { + return null; + } + + if (!defaultChannel().isVideoTechnology()) { + return defaultChannel(); + } + + // Default channel is a video channel, so find it's corresponding voice channel + Channel prevChannel = channels().get(0); + for (int i = 1; i < channels().size(); i++) { + Channel currentChannel = channels().get(i); + if (currentChannel.equals(defaultChannel())) { + return prevChannel; + } + prevChannel = currentChannel; + } return null; } diff --git a/java/com/android/dialer/speeddial/res/layout/context_menu_layout.xml b/java/com/android/dialer/speeddial/res/layout/context_menu_layout.xml deleted file mode 100644 index a59fa07c7..000000000 --- a/java/com/android/dialer/speeddial/res/layout/context_menu_layout.xml +++ /dev/null @@ -1,93 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ Copyright (C) 2018 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 - --> -<com.android.dialer.speeddial.ContextMenu - xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/contact_menu_container" - android:orientation="vertical" - android:layout_width="160dp" - android:layout_height="wrap_content" - android:clipChildren="true" - android:clipToPadding="false"> - - <FrameLayout - android:layout_width="12dp" - android:layout_height="12dp" - android:layout_marginTop="7dp" - android:layout_marginBottom="-6dp" - android:layout_gravity="center_horizontal" - android:background="@color/background_dialer_white" - android:rotation="45" - android:clipChildren="false" - android:clipToPadding="false"/> - - <LinearLayout - android:id="@+id/context_menu_items_container" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - android:background="@drawable/context_menu_background"> - - - <TextView - android:id="@+id/voice_call_container" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:text="@string/contact_menu_voice_call" - android:drawableStart="@drawable/quantum_ic_phone_vd_theme_24" - style="@style/SpeedDialContextMenuItem"/> - - <TextView - android:id="@+id/video_call_container" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:text="@string/contact_menu_video_call" - android:drawableStart="@drawable/quantum_ic_videocam_vd_theme_24" - style="@style/SpeedDialContextMenuItem"/> - - <TextView - android:id="@+id/send_message_container" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingBottom="4dp" - android:text="@string/contact_menu_message" - android:drawableStart="@drawable/quantum_ic_message_vd_theme_24" - style="@style/SpeedDialContextMenuItem"/> - - <View - android:id="@+id/divider" - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="@color/divider_line_color"/> - - <TextView - android:id="@+id/remove_container" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingTop="4dp" - android:text="@string/contact_menu_remove" - android:drawableStart="@drawable/quantum_ic_close_vd_theme_24" - style="@style/SpeedDialContextMenuItem"/> - - <TextView - android:id="@+id/contact_info_container" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:drawableStart="@drawable/context_menu_contact_icon" - android:text="@string/contact_menu_contact_info" - style="@style/SpeedDialContextMenuItem.NoDrawableTint"/> - </LinearLayout> -</com.android.dialer.speeddial.ContextMenu>
\ No newline at end of file diff --git a/java/com/android/dialer/speeddial/res/layout/fragment_speed_dial.xml b/java/com/android/dialer/speeddial/res/layout/fragment_speed_dial.xml index 080fba5d3..9a42377be 100644 --- a/java/com/android/dialer/speeddial/res/layout/fragment_speed_dial.xml +++ b/java/com/android/dialer/speeddial/res/layout/fragment_speed_dial.xml @@ -26,17 +26,5 @@ android:clipToPadding="false" android:background="@color/background_dialer_light" android:paddingBottom="@dimen/floating_action_button_list_bottom_padding"/> - - <FrameLayout - android:id="@+id/context_menu_background" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:visibility="invisible"/> - - <!-- This menu is visible when you long click on a favorite contact. --> - <include - android:id="@+id/favorite_contact_context_menu" - layout="@layout/context_menu_layout" - android:visibility="invisible"/> </FrameLayout> diff --git a/java/com/android/dialer/speeddial/res/menu/add_favorite_menu.xml b/java/com/android/dialer/speeddial/res/menu/add_favorite_menu.xml deleted file mode 100644 index b11c7f5d6..000000000 --- a/java/com/android/dialer/speeddial/res/menu/add_favorite_menu.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ Copyright (C) 2017 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 - --> -<menu xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <item - android:id="@+id/action_search" - android:title="@android:string/search_go" - app:showAsAction="always" - app:actionViewClass="android.support.v7.widget.SearchView"/> -</menu>
\ No newline at end of file diff --git a/java/com/android/dialer/speeddial/res/menu/starred_contact_context_menu.xml b/java/com/android/dialer/speeddial/res/menu/starred_contact_context_menu.xml new file mode 100644 index 000000000..0143498e1 --- /dev/null +++ b/java/com/android/dialer/speeddial/res/menu/starred_contact_context_menu.xml @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2018 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 + --> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:id="@+id/starred_contact_context_menu_title" + android:enabled="false" + android:title=""/> + + <item + android:id="@+id/voice_call_container" + android:title="@string/contact_menu_voice_call" + android:icon="@drawable/quantum_ic_phone_vd_theme_24" + android:iconTint="@color/secondary_text_color"/> + + <item + android:id="@+id/video_call_container" + android:title="@string/contact_menu_video_call" + android:icon="@drawable/quantum_ic_videocam_vd_theme_24" + android:iconTint="@color/secondary_text_color"/> + + <item + android:id="@+id/send_message_container" + android:title="@string/contact_menu_message" + android:icon="@drawable/quantum_ic_message_vd_theme_24" + android:iconTint="@color/secondary_text_color"/> + + <item + android:id="@+id/remove_container" + android:title="@string/contact_menu_remove" + android:icon="@drawable/quantum_ic_close_vd_theme_24" + android:iconTint="@color/secondary_text_color"/> + + <item + android:id="@+id/contact_info_container" + android:title="@string/contact_menu_contact_info" + android:icon="@drawable/context_menu_contact_icon" + android:iconTint="#FFFFFF"/> +</menu>
\ No newline at end of file diff --git a/java/com/android/dialer/theme/res/values/strings.xml b/java/com/android/dialer/theme/res/values/strings.xml index 36ff9413a..7d7209207 100644 --- a/java/com/android/dialer/theme/res/values/strings.xml +++ b/java/com/android/dialer/theme/res/values/strings.xml @@ -20,7 +20,7 @@ <!-- String to identify an unknown/restricted callers. ex. "Unknown 1", "Restricted 2", ect. --> <string name="unknown_counter"> - <xliff:g id="unknown">%s</xliff:g> <xliff:g id="id">%d</xliff:g> + <xliff:g id="unknown">%1$s</xliff:g> <xliff:g id="id">%2$d</xliff:g> </string> <!-- String used to display calls from pay phone in the call log --> diff --git a/java/com/android/incallui/rtt/impl/RttChatFragment.java b/java/com/android/incallui/rtt/impl/RttChatFragment.java index 1c43f512d..e56715981 100644 --- a/java/com/android/incallui/rtt/impl/RttChatFragment.java +++ b/java/com/android/incallui/rtt/impl/RttChatFragment.java @@ -465,7 +465,7 @@ public class RttChatFragment extends Fragment submitButton.setVisibility(View.VISIBLE); editText.setFocusableInTouchMode(true); if (editText.requestFocus()) { - UiUtil.openKeyboardFrom(getContext(), editText); + UiUtil.showKeyboardFrom(getContext(), editText); } adapter.showAdvisory(); } |