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  */
16 
17 package com.android.messaging.ui.conversationlist;
18 
19 import android.graphics.drawable.ColorDrawable;
20 import android.os.Bundle;
21 import androidx.appcompat.app.ActionBar;
22 import android.view.Menu;
23 import android.view.MenuItem;
24 
25 import com.android.messaging.R;
26 import com.android.messaging.ui.UIIntents;
27 import com.android.messaging.util.DebugUtils;
28 import com.android.messaging.util.Trace;
29 
30 public class ConversationListActivity extends AbstractConversationListActivity {
31     @Override
onCreate(final Bundle savedInstanceState)32     protected void onCreate(final Bundle savedInstanceState) {
33         Trace.beginSection("ConversationListActivity.onCreate");
34         super.onCreate(savedInstanceState);
35         setContentView(R.layout.conversation_list_activity);
36         Trace.endSection();
37         invalidateActionBar();
38     }
39 
40     @Override
updateActionBar(final ActionBar actionBar)41     protected void updateActionBar(final ActionBar actionBar) {
42         actionBar.setTitle(getString(R.string.app_name));
43         actionBar.setDisplayShowTitleEnabled(true);
44         actionBar.setDisplayHomeAsUpEnabled(false);
45         actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
46         actionBar.setBackgroundDrawable(new ColorDrawable(
47                 getResources().getColor(R.color.action_bar_background_color)));
48         actionBar.show();
49         super.updateActionBar(actionBar);
50     }
51 
52     @Override
onResume()53     public void onResume() {
54         super.onResume();
55         // Invalidate the menu as items that are based on settings may have changed
56         // while not in the app (e.g. Talkback enabled/disable affects new conversation
57         // button)
58         supportInvalidateOptionsMenu();
59     }
60 
61     @Override
onBackPressed()62     public void onBackPressed() {
63         if (isInConversationListSelectMode()) {
64             exitMultiSelectState();
65         } else {
66             super.onBackPressed();
67         }
68     }
69 
70     @Override
onCreateOptionsMenu(final Menu menu)71     public boolean onCreateOptionsMenu(final Menu menu) {
72         if (super.onCreateOptionsMenu(menu)) {
73             return true;
74         }
75         getMenuInflater().inflate(R.menu.conversation_list_fragment_menu, menu);
76         final MenuItem item = menu.findItem(R.id.action_debug_options);
77         if (item != null) {
78             final boolean enableDebugItems = DebugUtils.isDebugEnabled();
79             item.setVisible(enableDebugItems).setEnabled(enableDebugItems);
80         }
81         return true;
82     }
83 
84     @Override
onOptionsItemSelected(final MenuItem menuItem)85     public boolean onOptionsItemSelected(final MenuItem menuItem) {
86         switch(menuItem.getItemId()) {
87             case R.id.action_start_new_conversation:
88                 onActionBarStartNewConversation();
89                 return true;
90             case R.id.action_settings:
91                 onActionBarSettings();
92                 return true;
93             case R.id.action_debug_options:
94                 onActionBarDebug();
95                 return true;
96             case R.id.action_show_archived:
97                 onActionBarArchived();
98                 return true;
99             case R.id.action_show_blocked_contacts:
100                 onActionBarBlockedParticipants();
101                 return true;
102         }
103         return super.onOptionsItemSelected(menuItem);
104     }
105 
106     @Override
onActionBarHome()107     public void onActionBarHome() {
108         exitMultiSelectState();
109     }
110 
onActionBarStartNewConversation()111     public void onActionBarStartNewConversation() {
112         UIIntents.get().launchCreateNewConversationActivity(this, null);
113     }
114 
onActionBarSettings()115     public void onActionBarSettings() {
116         UIIntents.get().launchSettingsActivity(this);
117     }
118 
onActionBarBlockedParticipants()119     public void onActionBarBlockedParticipants() {
120         UIIntents.get().launchBlockedParticipantsActivity(this);
121     }
122 
onActionBarArchived()123     public void onActionBarArchived() {
124         UIIntents.get().launchArchivedConversationsActivity(this);
125     }
126 
127     @Override
isSwipeAnimatable()128     public boolean isSwipeAnimatable() {
129         return !isInConversationListSelectMode();
130     }
131 
132     @Override
onWindowFocusChanged(final boolean hasFocus)133     public void onWindowFocusChanged(final boolean hasFocus) {
134         super.onWindowFocusChanged(hasFocus);
135         final ConversationListFragment conversationListFragment =
136                 (ConversationListFragment) getFragmentManager().findFragmentById(
137                         R.id.conversation_list_fragment);
138         // When the screen is turned on, the last used activity gets resumed, but it gets
139         // window focus only after the lock screen is unlocked.
140         if (hasFocus && conversationListFragment != null) {
141             conversationListFragment.setScrolledToNewestConversationIfNeeded();
142         }
143     }
144 }
145