1/* 2 * Copyright (C) 2015 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16package com.android.dialer.app.filterednumber; 17 18import android.os.Bundle; 19import android.support.v7.app.AppCompatActivity; 20import android.view.MenuItem; 21import com.android.dialer.app.R; 22import com.android.dialer.app.list.BlockedListSearchFragment; 23import com.android.dialer.app.list.SearchFragment; 24import com.android.dialer.logging.Logger; 25import com.android.dialer.logging.ScreenEvent; 26 27public class BlockedNumbersSettingsActivity extends AppCompatActivity 28 implements SearchFragment.HostInterface { 29 30 private static final String TAG_BLOCKED_MANAGEMENT_FRAGMENT = "blocked_management"; 31 private static final String TAG_BLOCKED_SEARCH_FRAGMENT = "blocked_search"; 32 private static final String TAG_VIEW_NUMBERS_TO_IMPORT_FRAGMENT = "view_numbers_to_import"; 33 34 @Override 35 protected void onCreate(Bundle savedInstanceState) { 36 super.onCreate(savedInstanceState); 37 setContentView(R.layout.blocked_numbers_activity); 38 39 // If savedInstanceState != null, the Activity will automatically restore the last fragment. 40 if (savedInstanceState == null) { 41 showManagementUi(); 42 } 43 } 44 45 /** Shows fragment with the list of currently blocked numbers and settings related to blocking. */ 46 public void showManagementUi() { 47 BlockedNumbersFragment fragment = 48 (BlockedNumbersFragment) 49 getFragmentManager().findFragmentByTag(TAG_BLOCKED_MANAGEMENT_FRAGMENT); 50 if (fragment == null) { 51 fragment = new BlockedNumbersFragment(); 52 } 53 54 getFragmentManager() 55 .beginTransaction() 56 .replace(R.id.blocked_numbers_activity_container, fragment, TAG_BLOCKED_MANAGEMENT_FRAGMENT) 57 .commit(); 58 59 Logger.get(this).logScreenView(ScreenEvent.Type.BLOCKED_NUMBER_MANAGEMENT, this); 60 } 61 62 /** Shows fragment with search UI for browsing/finding numbers to block. */ 63 public void showSearchUi() { 64 BlockedListSearchFragment fragment = 65 (BlockedListSearchFragment) 66 getFragmentManager().findFragmentByTag(TAG_BLOCKED_SEARCH_FRAGMENT); 67 if (fragment == null) { 68 fragment = new BlockedListSearchFragment(); 69 fragment.setHasOptionsMenu(false); 70 fragment.setShowEmptyListForNullQuery(true); 71 fragment.setDirectorySearchEnabled(false); 72 } 73 74 getFragmentManager() 75 .beginTransaction() 76 .replace(R.id.blocked_numbers_activity_container, fragment, TAG_BLOCKED_SEARCH_FRAGMENT) 77 .addToBackStack(null) 78 .commit(); 79 80 Logger.get(this).logScreenView(ScreenEvent.Type.BLOCKED_NUMBER_ADD_NUMBER, this); 81 } 82 83 /** 84 * Shows fragment with UI to preview the numbers of contacts currently marked as send-to-voicemail 85 * in Contacts. These numbers can be imported into Dialer's blocked number list. 86 */ 87 public void showNumbersToImportPreviewUi() { 88 ViewNumbersToImportFragment fragment = 89 (ViewNumbersToImportFragment) 90 getFragmentManager().findFragmentByTag(TAG_VIEW_NUMBERS_TO_IMPORT_FRAGMENT); 91 if (fragment == null) { 92 fragment = new ViewNumbersToImportFragment(); 93 } 94 95 getFragmentManager() 96 .beginTransaction() 97 .replace( 98 R.id.blocked_numbers_activity_container, fragment, TAG_VIEW_NUMBERS_TO_IMPORT_FRAGMENT) 99 .addToBackStack(null) 100 .commit(); 101 } 102 103 @Override 104 public boolean onOptionsItemSelected(MenuItem item) { 105 if (item.getItemId() == android.R.id.home) { 106 onBackPressed(); 107 return true; 108 } 109 return false; 110 } 111 112 @Override 113 public void onBackPressed() { 114 // TODO: Achieve back navigation without overriding onBackPressed. 115 if (getFragmentManager().getBackStackEntryCount() > 0) { 116 getFragmentManager().popBackStack(); 117 } else { 118 super.onBackPressed(); 119 } 120 } 121 122 @Override 123 public boolean isActionBarShowing() { 124 return false; 125 } 126 127 @Override 128 public boolean isDialpadShown() { 129 return false; 130 } 131 132 @Override 133 public int getDialpadHeight() { 134 return 0; 135 } 136 137 @Override 138 public int getActionBarHeight() { 139 return 0; 140 } 141} 142