From 065c9a4138c613801abd3ece8d7a276332fc8eb1 Mon Sep 17 00:00:00 2001 From: calderwoodra Date: Wed, 10 Jan 2018 13:51:31 -0800 Subject: Added Search Bar to NUI. This change only adds the views but doesn't implement any logic or functionality. That will come in a future CL. A decision was made here about whether to create a new search bar or reuse the old one. I opted to make a new one to avoid breaking the old one while it's still being used. Bug: 64655802 Test: n/a PiperOrigin-RevId: 181512198 Change-Id: Ib377b1d99f4eb8100204ac9a110dc5899bced392 --- .../res/drawable/quantum_ic_mic_vd_theme_24.xml | 25 ++++++ .../com/android/dialer/main/impl/MainActivity.java | 28 +------ .../dialer/main/impl/res/layout/main_activity.xml | 9 +- .../dialer/main/impl/res/menu/main_menu.xml | 40 --------- .../dialer/main/impl/res/values/strings.xml | 5 -- .../dialer/main/impl/toolbar/AndroidManifest.xml | 17 ++++ .../dialer/main/impl/toolbar/MainToolbar.java | 62 ++++++++++++++ .../dialer/main/impl/toolbar/MainToolbarMenu.java | 39 +++++++++ .../dialer/main/impl/toolbar/SearchBarView.java | 31 +++++++ .../impl/toolbar/res/drawable/custom_cursor.xml | 20 +++++ .../impl/toolbar/res/drawable/rounded_corner.xml | 21 +++++ .../toolbar/res/layout/expanded_search_bar.xml | 62 ++++++++++++++ .../impl/toolbar/res/layout/toolbar_layout.xml | 96 ++++++++++++++++++++++ .../main/impl/toolbar/res/menu/main_menu.xml | 28 +++++++ .../main/impl/toolbar/res/values/strings.xml | 42 ++++++++++ packages.mk | 1 + 16 files changed, 447 insertions(+), 79 deletions(-) create mode 100644 assets/quantum/res/drawable/quantum_ic_mic_vd_theme_24.xml delete mode 100644 java/com/android/dialer/main/impl/res/menu/main_menu.xml create mode 100644 java/com/android/dialer/main/impl/toolbar/AndroidManifest.xml create mode 100644 java/com/android/dialer/main/impl/toolbar/MainToolbar.java create mode 100644 java/com/android/dialer/main/impl/toolbar/MainToolbarMenu.java create mode 100644 java/com/android/dialer/main/impl/toolbar/SearchBarView.java create mode 100644 java/com/android/dialer/main/impl/toolbar/res/drawable/custom_cursor.xml create mode 100644 java/com/android/dialer/main/impl/toolbar/res/drawable/rounded_corner.xml create mode 100644 java/com/android/dialer/main/impl/toolbar/res/layout/expanded_search_bar.xml create mode 100644 java/com/android/dialer/main/impl/toolbar/res/layout/toolbar_layout.xml create mode 100644 java/com/android/dialer/main/impl/toolbar/res/menu/main_menu.xml create mode 100644 java/com/android/dialer/main/impl/toolbar/res/values/strings.xml diff --git a/assets/quantum/res/drawable/quantum_ic_mic_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_mic_vd_theme_24.xml new file mode 100644 index 000000000..6220e39bd --- /dev/null +++ b/assets/quantum/res/drawable/quantum_ic_mic_vd_theme_24.xml @@ -0,0 +1,25 @@ + + + + diff --git a/java/com/android/dialer/main/impl/MainActivity.java b/java/com/android/dialer/main/impl/MainActivity.java index 87bd8dd58..0884c117b 100644 --- a/java/com/android/dialer/main/impl/MainActivity.java +++ b/java/com/android/dialer/main/impl/MainActivity.java @@ -23,12 +23,8 @@ import android.os.Bundle; import android.provider.ContactsContract.QuickContact; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.Menu; -import android.view.MenuItem; import android.view.View; import android.widget.ImageView; -import android.widget.Toast; import com.android.dialer.calllog.ui.NewCallLogFragment; import com.android.dialer.common.LogUtil; import com.android.dialer.contactsfragment.ContactsFragment; @@ -62,32 +58,10 @@ public final class MainActivity extends AppCompatActivity private void initLayout() { findViewById(R.id.fab).setOnClickListener(this); - + setSupportActionBar(findViewById(R.id.toolbar)); BottomNavBar navBar = findViewById(R.id.bottom_nav_bar); navBar.setOnTabSelectedListener(new MainBottomNavBarBottomNavTabListener()); navBar.selectTab(BottomNavBar.TabIndex.SPEED_DIAL); - - Toolbar toolbar = findViewById(R.id.toolbar); - toolbar.setPopupTheme(android.R.style.Theme_Material_Light); - setSupportActionBar(toolbar); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.main_menu, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - Toast.makeText(this, "Not yet implemented", Toast.LENGTH_SHORT).show(); - if (item.getItemId() == R.id.search) { - // open search - return true; - } else { - // TODO(calderwoodra) handle other menu items - return super.onOptionsItemSelected(item); - } } @Override diff --git a/java/com/android/dialer/main/impl/res/layout/main_activity.xml b/java/com/android/dialer/main/impl/res/layout/main_activity.xml index 969bbe413..31ff19dd3 100644 --- a/java/com/android/dialer/main/impl/res/layout/main_activity.xml +++ b/java/com/android/dialer/main/impl/res/layout/main_activity.xml @@ -21,14 +21,9 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - + layout="@layout/toolbar_layout"/> - - - - - - - - - - \ No newline at end of file diff --git a/java/com/android/dialer/main/impl/res/values/strings.xml b/java/com/android/dialer/main/impl/res/values/strings.xml index abf44ddae..ff136e877 100644 --- a/java/com/android/dialer/main/impl/res/values/strings.xml +++ b/java/com/android/dialer/main/impl/res/values/strings.xml @@ -43,9 +43,4 @@ Voicemail Contacts - - - Settings - - Send feedback diff --git a/java/com/android/dialer/main/impl/toolbar/AndroidManifest.xml b/java/com/android/dialer/main/impl/toolbar/AndroidManifest.xml new file mode 100644 index 000000000..a5f93830b --- /dev/null +++ b/java/com/android/dialer/main/impl/toolbar/AndroidManifest.xml @@ -0,0 +1,17 @@ + + + \ No newline at end of file diff --git a/java/com/android/dialer/main/impl/toolbar/MainToolbar.java b/java/com/android/dialer/main/impl/toolbar/MainToolbar.java new file mode 100644 index 000000000..19c763cf6 --- /dev/null +++ b/java/com/android/dialer/main/impl/toolbar/MainToolbar.java @@ -0,0 +1,62 @@ +/* + * 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 + */ + +package com.android.dialer.main.impl.toolbar; + +import android.content.Context; +import android.support.v7.widget.PopupMenu.OnMenuItemClickListener; +import android.support.v7.widget.Toolbar; +import android.util.AttributeSet; +import android.view.MenuItem; +import android.widget.ImageButton; +import android.widget.Toast; + +/** Toolbar for {@link com.android.dialer.main.impl.MainActivity}. */ +public final class MainToolbar extends Toolbar implements OnMenuItemClickListener { + + public MainToolbar(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + protected void onFinishInflate() { + super.onFinishInflate(); + ImageButton optionsMenuButton = findViewById(R.id.main_options_menu_button); + MainToolbarMenu overflowMenu = new MainToolbarMenu(getContext(), optionsMenuButton); + overflowMenu.inflate(R.menu.main_menu); + overflowMenu.setOnMenuItemClickListener(this); + optionsMenuButton.setOnClickListener(v -> overflowMenu.show()); + optionsMenuButton.setOnTouchListener(overflowMenu.getDragToOpenListener()); + + findViewById(R.id.voice_search_button).setOnClickListener(v -> onVoiceIconClicked()); + findViewById(R.id.search_box_collapsed).setOnClickListener(v -> onSearchBarClicked()); + } + + @Override + public boolean onMenuItemClick(MenuItem menuItem) { + Toast.makeText(getContext(), "Not yet implemented", Toast.LENGTH_SHORT).show(); + // TODO(calderwoodra): implement menu item clicks + return false; + } + + private void onVoiceIconClicked() { + // TODO(calderwoodra): take voice input + } + + private void onSearchBarClicked() { + // TODO(calderwoodra): open search UI + } +} diff --git a/java/com/android/dialer/main/impl/toolbar/MainToolbarMenu.java b/java/com/android/dialer/main/impl/toolbar/MainToolbarMenu.java new file mode 100644 index 000000000..f4dfeef23 --- /dev/null +++ b/java/com/android/dialer/main/impl/toolbar/MainToolbarMenu.java @@ -0,0 +1,39 @@ +/* + * 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 + */ + +package com.android.dialer.main.impl.toolbar; + +import android.content.Context; +import android.support.v7.widget.PopupMenu; +import android.view.Gravity; +import android.view.View; + +/** Popup menu accessible from the search bar */ +final class MainToolbarMenu extends PopupMenu { + + public MainToolbarMenu(Context context, View anchor) { + super(context, anchor, Gravity.TOP); + // TODO(calderwoodra): menu should open from the top, not the bottom + } + + @Override + public void show() { + super.show(); + // TODO(calderwoodra): show/hide clear frequents + // TODO(calderwoodra): only show call history item if we have phone permission + // TODO(calderwoodra): show simulator buttons + } +} diff --git a/java/com/android/dialer/main/impl/toolbar/SearchBarView.java b/java/com/android/dialer/main/impl/toolbar/SearchBarView.java new file mode 100644 index 000000000..b3b27efc2 --- /dev/null +++ b/java/com/android/dialer/main/impl/toolbar/SearchBarView.java @@ -0,0 +1,31 @@ +/* + * 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 + */ + +package com.android.dialer.main.impl.toolbar; + +import android.content.Context; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.util.AttributeSet; +import android.widget.FrameLayout; + +/** */ +final class SearchBarView extends FrameLayout { + + public SearchBarView(@NonNull Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + } +} diff --git a/java/com/android/dialer/main/impl/toolbar/res/drawable/custom_cursor.xml b/java/com/android/dialer/main/impl/toolbar/res/drawable/custom_cursor.xml new file mode 100644 index 000000000..008b0a3cc --- /dev/null +++ b/java/com/android/dialer/main/impl/toolbar/res/drawable/custom_cursor.xml @@ -0,0 +1,20 @@ + + + + + + \ No newline at end of file diff --git a/java/com/android/dialer/main/impl/toolbar/res/drawable/rounded_corner.xml b/java/com/android/dialer/main/impl/toolbar/res/drawable/rounded_corner.xml new file mode 100644 index 000000000..58cdabe8b --- /dev/null +++ b/java/com/android/dialer/main/impl/toolbar/res/drawable/rounded_corner.xml @@ -0,0 +1,21 @@ + + + + + + diff --git a/java/com/android/dialer/main/impl/toolbar/res/layout/expanded_search_bar.xml b/java/com/android/dialer/main/impl/toolbar/res/layout/expanded_search_bar.xml new file mode 100644 index 000000000..f814a766d --- /dev/null +++ b/java/com/android/dialer/main/impl/toolbar/res/layout/expanded_search_bar.xml @@ -0,0 +1,62 @@ + + + + + + + + + + \ No newline at end of file diff --git a/java/com/android/dialer/main/impl/toolbar/res/layout/toolbar_layout.xml b/java/com/android/dialer/main/impl/toolbar/res/layout/toolbar_layout.xml new file mode 100644 index 000000000..27b37e80f --- /dev/null +++ b/java/com/android/dialer/main/impl/toolbar/res/layout/toolbar_layout.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java/com/android/dialer/main/impl/toolbar/res/menu/main_menu.xml b/java/com/android/dialer/main/impl/toolbar/res/menu/main_menu.xml new file mode 100644 index 000000000..5b09fca8c --- /dev/null +++ b/java/com/android/dialer/main/impl/toolbar/res/menu/main_menu.xml @@ -0,0 +1,28 @@ + + + + + + + \ No newline at end of file diff --git a/java/com/android/dialer/main/impl/toolbar/res/values/strings.xml b/java/com/android/dialer/main/impl/toolbar/res/values/strings.xml new file mode 100644 index 000000000..c1d153f1f --- /dev/null +++ b/java/com/android/dialer/main/impl/toolbar/res/values/strings.xml @@ -0,0 +1,42 @@ + + + + + stop searching + + + Clear search + + + More options + + + Start voice search + + + Search contacts + + + Settings + + Send feedback + \ No newline at end of file diff --git a/packages.mk b/packages.mk index d01b3f15a..d06b02878 100644 --- a/packages.mk +++ b/packages.mk @@ -36,6 +36,7 @@ LOCAL_AAPT_FLAGS := \ com.android.dialer.lettertile \ com.android.dialer.location \ com.android.dialer.main.impl \ + com.android.dialer.main.impl.toolbar \ com.android.dialer.notification \ com.android.dialer.oem \ com.android.dialer.phonelookup.database \ -- cgit v1.2.3