diff options
Diffstat (limited to 'java/com/android/dialer')
13 files changed, 394 insertions, 52 deletions
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"> - <android.support.v7.widget.Toolbar + <include android:id="@+id/toolbar" - android:layout_height="wrap_content" - android:layout_width="match_parent" - android:minHeight="?attr/actionBarSize" - android:background="@color/dialer_theme_color" - app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" - app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> + layout="@layout/toolbar_layout"/> <FrameLayout android:id="@+id/fragment_container" 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 @@ <string name="tab_title_voicemail">Voicemail</string> <!-- Tab text to show users their contacts [CHAR LIMIT=10] --> <string name="tab_title_contacts">Contacts</string> - - <!-- Show users their settings [CHAR LIMIT=20] --> - <string name="settings">Settings</string> - <!-- Send feedback about the app [CHAR LIMIT=20] --> - <string name="main_send_feedback">Send feedback</string> </resources> 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 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2016 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 + --> +<manifest package="com.android.dialer.main.impl.toolbar"/>
\ 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 @@ +<?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 + --> +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <size android:width="2dp"/> + <solid android:color="@color/dialtacts_theme_color"/> +</shape>
\ 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 @@ +<?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 + --> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle"> + <solid android:color="@color/background_dialer_white"/> + <corners android:radius="2dp"/> +</shape> 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 @@ +<?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. +--> +<RelativeLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/search_box_expanded" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:visibility="gone"> + + <ImageButton + android:id="@+id/search_back_button" + android:layout_width="48dp" + android:layout_height="48dp" + android:layout_marginStart="16dp" + android:layout_centerVertical="true" + android:background="?attr/selectableItemBackgroundBorderless" + android:contentDescription="@string/action_menu_back_from_search" + android:src="@drawable/quantum_ic_arrow_back_vd_theme_24" + android:tint="@color/dialer_theme_color"/> + + <EditText + android:id="@+id/search_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_toEndOf="@+id/search_back_button" + android:layout_toStartOf="@+id/search_close_button" + android:layout_centerVertical="true" + android:layout_marginStart="8dp" + android:background="@null" + android:imeOptions="flagNoExtractUi" + android:inputType="textFilter" + android:maxLines="1" + android:textColor="@color/dialer_secondary_text_color" + android:textColorHint="@color/dialer_edit_text_hint_color" + android:textCursorDrawable="@drawable/custom_cursor" + android:textSize="16sp"/> + + <ImageView + android:id="@+id/search_close_button" + android:layout_width="48dp" + android:layout_height="48dp" + android:layout_alignParentEnd="true" + android:layout_centerVertical="true" + android:scaleType="center" + android:background="?attr/selectableItemBackgroundBorderless" + android:contentDescription="@string/description_clear_search" + android:src="@drawable/quantum_ic_close_vd_theme_24" + android:tint="@color/dialer_secondary_text_color"/> +</RelativeLayout>
\ 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 @@ +<?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.main.impl.toolbar.MainToolbar + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:minHeight="?attr/actionBarSize" + android:background="@color/dialer_theme_color" + app:contentInsetStart="0dp" + app:contentInsetEnd="0dp" + app:theme="@style/ThemeOverlay.AppCompat.Light"> + + <com.android.dialer.main.impl.toolbar.SearchBarView + android:id="@+id/search_view_container" + android:layout_width="match_parent" + android:layout_height="48dp" + android:layout_marginStart="8dp" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:layout_marginEnd="8dp" + android:background="@drawable/rounded_corner" + android:elevation="4dp" + android:theme="@style/Theme.AppCompat.Light"> + + <RelativeLayout + android:id="@+id/search_box_collapsed" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="?android:selectableItemBackground" + android:gravity="center_vertical"> + + <ImageView + android:id="@+id/search_magnifying_glass" + android:layout_width="48dp" + android:layout_height="48dp" + android:layout_marginStart="8dp" + android:layout_centerVertical="true" + android:importantForAccessibility="no" + android:scaleType="center" + android:src="@drawable/quantum_ic_search_vd_theme_24" + android:tint="@color/dialer_secondary_text_color"/> + + <TextView + android:id="@+id/search_box_start_search" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:layout_toEndOf="@+id/search_magnifying_glass" + android:layout_toStartOf="@+id/voice_search_button" + android:layout_marginStart="8dp" + android:fontFamily="sans-serif" + android:gravity="center_vertical" + android:hint="@string/dialer_hint_find_contact" + android:textColorHint="@color/dialer_secondary_text_color" + android:textSize="16dp"/> + + <ImageView + android:id="@+id/voice_search_button" + android:layout_width="48dp" + android:layout_height="48dp" + android:layout_toStartOf="@+id/main_options_menu_button" + android:background="?android:attr/selectableItemBackgroundBorderless" + android:contentDescription="@string/description_start_voice_search" + android:scaleType="center" + android:src="@drawable/quantum_ic_mic_vd_theme_24" + android:tint="@color/dialer_secondary_text_color"/> + + <ImageButton + android:id="@+id/main_options_menu_button" + android:layout_width="48dp" + android:layout_height="48dp" + android:layout_alignParentEnd="true" + android:background="?android:attr/selectableItemBackgroundBorderless" + android:contentDescription="@string/action_menu_overflow_description" + android:scaleType="center" + android:src="@drawable/quantum_ic_more_vert_vd_theme_24" + android:tint="@color/dialer_secondary_text_color"/> + </RelativeLayout> + + <include layout="@layout/expanded_search_bar"/> + </com.android.dialer.main.impl.toolbar.SearchBarView> +</com.android.dialer.main.impl.toolbar.MainToolbar>
\ No newline at end of file diff --git a/java/com/android/dialer/main/impl/res/menu/main_menu.xml b/java/com/android/dialer/main/impl/toolbar/res/menu/main_menu.xml index 08d711eb1..5b09fca8c 100644 --- a/java/com/android/dialer/main/impl/res/menu/main_menu.xml +++ b/java/com/android/dialer/main/impl/toolbar/res/menu/main_menu.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - ~ Copyright (C) 2017 The Android Open Source Project + ~ 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. @@ -17,18 +17,6 @@ <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item - android:id="@+id/search" - android:icon="@drawable/quantum_ic_search_white_24" - android:title="@string/search" - android:contentDescription="@string/description_search" - app:showAsAction="always"/> - - <item - android:id="@+id/call_history" - android:title="@string/tab_title_call_history" - app:showAsAction="collapseActionView"/> - - <item android:id="@+id/settings" android:title="@string/settings" app:showAsAction="collapseActionView"/> 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 @@ +<?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 + --> +<resources> + <!-- Content description for the fake action menu up button as used + inside search. [CHAR LIMIT=NONE] --> + <string name="action_menu_back_from_search">stop searching</string> + + <!-- String describing the icon used to clear the search field --> + <string name="description_clear_search">Clear search</string> + + <!-- Content description for the fake action menu overflow button. + This should be same as the description for the real action menu + overflow button available in ActionBar. + [CHAR LIMIT=NONE] --> + <string msgid="2295659037509008453" name="action_menu_overflow_description">More options</string> + + <!-- String describing the icon used to start a voice search --> + <string name="description_start_voice_search">Start voice search</string> + + <!-- Hint displayed in dialer search box when there is no query that is currently typed. + [CHAR LIMIT=30] --> + <string name="dialer_hint_find_contact">Search contacts</string> + + <!-- Show users their settings [CHAR LIMIT=20] --> + <string name="settings">Settings</string> + <!-- Send feedback about the app [CHAR LIMIT=20] --> + <string name="main_send_feedback">Send feedback</string> +</resources>
\ No newline at end of file |