1d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd/*
2d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Copyright (C) 2015 The Android Open Source Project
3d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
4d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Licensed under the Apache License, Version 2.0 (the "License");
5d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * you may not use this file except in compliance with the License.
6d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * You may obtain a copy of the License at
7d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
8d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *      http://www.apache.org/licenses/LICENSE-2.0
9d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
10d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Unless required by applicable law or agreed to in writing, software
11d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * distributed under the License is distributed on an "AS IS" BASIS,
12d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * See the License for the specific language governing permissions and
14d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * limitations under the License.
15d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */
16d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
17d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpackage com.android.messaging.ui.conversationlist;
18d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
19d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.graphics.drawable.ColorDrawable;
20d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.os.Bundle;
21d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.support.v7.app.ActionBar;
22d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.view.Menu;
23d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.view.MenuItem;
24d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
25d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.R;
26d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.ui.UIIntents;
27d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.util.DebugUtils;
28d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.util.Trace;
29d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
30d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpublic class ConversationListActivity extends AbstractConversationListActivity {
31d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    @Override
32d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    protected void onCreate(final Bundle savedInstanceState) {
33d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        Trace.beginSection("ConversationListActivity.onCreate");
34d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        super.onCreate(savedInstanceState);
35d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        setContentView(R.layout.conversation_list_activity);
36d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        Trace.endSection();
37d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        invalidateActionBar();
38d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
39d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
40d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    @Override
41d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    protected void updateActionBar(final ActionBar actionBar) {
42d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        actionBar.setTitle(getString(R.string.app_name));
43d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        actionBar.setDisplayShowTitleEnabled(true);
44d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        actionBar.setDisplayHomeAsUpEnabled(false);
45d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
46d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        actionBar.setBackgroundDrawable(new ColorDrawable(
47d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                getResources().getColor(R.color.action_bar_background_color)));
48d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        actionBar.show();
49d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        super.updateActionBar(actionBar);
50d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
51d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
52d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    @Override
53d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void onResume() {
54d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        super.onResume();
55d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        // Invalidate the menu as items that are based on settings may have changed
56d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        // while not in the app (e.g. Talkback enabled/disable affects new conversation
57d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        // button)
58d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        supportInvalidateOptionsMenu();
59d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
60d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
61d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    @Override
62d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void onBackPressed() {
63d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        if (isInConversationListSelectMode()) {
64d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            exitMultiSelectState();
65d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        } else {
66d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            super.onBackPressed();
67d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
68d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
69d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
70d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    @Override
71d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public boolean onCreateOptionsMenu(final Menu menu) {
72d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        if (super.onCreateOptionsMenu(menu)) {
73d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            return true;
74d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
75d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        getMenuInflater().inflate(R.menu.conversation_list_fragment_menu, menu);
76d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        final MenuItem item = menu.findItem(R.id.action_debug_options);
77d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        if (item != null) {
78d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            final boolean enableDebugItems = DebugUtils.isDebugEnabled();
79d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            item.setVisible(enableDebugItems).setEnabled(enableDebugItems);
80d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
81d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return true;
82d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
83d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
84d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    @Override
85d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public boolean onOptionsItemSelected(final MenuItem menuItem) {
86d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        switch(menuItem.getItemId()) {
87d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            case R.id.action_start_new_conversation:
88d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                onActionBarStartNewConversation();
89d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                return true;
90d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            case R.id.action_settings:
91d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                onActionBarSettings();
92d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                return true;
93d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            case R.id.action_debug_options:
94d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                onActionBarDebug();
95d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                return true;
96d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            case R.id.action_show_archived:
97d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                onActionBarArchived();
98d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                return true;
99d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            case R.id.action_show_blocked_contacts:
100d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                onActionBarBlockedParticipants();
101d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                return true;
102d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
103d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return super.onOptionsItemSelected(menuItem);
104d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
105d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
106d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    @Override
107d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void onActionBarHome() {
108d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        exitMultiSelectState();
109d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
110d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
111d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void onActionBarStartNewConversation() {
112d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        UIIntents.get().launchCreateNewConversationActivity(this, null);
113d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
114d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
115d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void onActionBarSettings() {
116d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        UIIntents.get().launchSettingsActivity(this);
117d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
118d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
119d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void onActionBarBlockedParticipants() {
120d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        UIIntents.get().launchBlockedParticipantsActivity(this);
121d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
122d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
123d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void onActionBarArchived() {
124d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        UIIntents.get().launchArchivedConversationsActivity(this);
125d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
126d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
127d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    @Override
128d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public boolean isSwipeAnimatable() {
129d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return !isInConversationListSelectMode();
130d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
131d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
132d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    @Override
133d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void onWindowFocusChanged(final boolean hasFocus) {
134d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        super.onWindowFocusChanged(hasFocus);
135d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        final ConversationListFragment conversationListFragment =
136d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                (ConversationListFragment) getFragmentManager().findFragmentById(
137d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        R.id.conversation_list_fragment);
138d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        // When the screen is turned on, the last used activity gets resumed, but it gets
139d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        // window focus only after the lock screen is unlocked.
140d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        if (hasFocus && conversationListFragment != null) {
141d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            conversationListFragment.setScrolledToNewestConversationIfNeeded();
142d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
143d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
144d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd}
145