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 Doddpackage com.android.messaging.ui.conversationlist;
17d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
18d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.support.v4.util.ArrayMap;
19d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.text.TextUtils;
20d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.view.ActionMode;
21d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.view.ActionMode.Callback;
22d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.view.Menu;
23d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.view.MenuItem;
24d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
25d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.R;
26d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.datamodel.data.ConversationListData;
27d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.datamodel.data.ConversationListItemData;
28d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.util.Assert;
29d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
30d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport java.util.Collection;
31d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport java.util.HashSet;
32d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
33d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpublic class MultiSelectActionModeCallback implements Callback {
34d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    private HashSet<String> mBlockedSet;
35d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
36d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public interface Listener {
37d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        void onActionBarDelete(Collection<SelectedConversation> conversations);
38d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        void onActionBarArchive(Iterable<SelectedConversation> conversations,
39d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                boolean isToArchive);
40d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        void onActionBarNotification(Iterable<SelectedConversation> conversations,
41d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                boolean isNotificationOn);
42d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        void onActionBarAddContact(final SelectedConversation conversation);
43d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        void onActionBarBlock(final SelectedConversation conversation);
44d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        void onActionBarHome();
45d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
46d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
47d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    static class SelectedConversation {
48d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public final String conversationId;
49d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public final long timestamp;
50d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public final String icon;
51d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public final String otherParticipantNormalizedDestination;
52d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public final CharSequence participantLookupKey;
53d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public final boolean isGroup;
54d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public final boolean isArchived;
55d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public final boolean notificationEnabled;
56d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public SelectedConversation(ConversationListItemData data) {
57d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            conversationId = data.getConversationId();
58d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            timestamp = data.getTimestamp();
59d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            icon = data.getIcon();
60d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            otherParticipantNormalizedDestination = data.getOtherParticipantNormalizedDestination();
61d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            participantLookupKey = data.getParticipantLookupKey();
62d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            isGroup = data.getIsGroup();
63d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            isArchived = data.getIsArchived();
64d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            notificationEnabled = data.getNotificationEnabled();
65d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
66d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
67d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
68d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    private final ArrayMap<String, SelectedConversation> mSelectedConversations;
69d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
70d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    private Listener mListener;
71d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    private MenuItem mArchiveMenuItem;
72d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    private MenuItem mUnarchiveMenuItem;
73d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    private MenuItem mAddContactMenuItem;
74d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    private MenuItem mBlockMenuItem;
75d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    private MenuItem mNotificationOnMenuItem;
76d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    private MenuItem mNotificationOffMenuItem;
77d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    private boolean mHasInflated;
78d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
79d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public MultiSelectActionModeCallback(final Listener listener) {
80d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mListener = listener;
81d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mSelectedConversations = new ArrayMap<>();
82d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
83d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
84d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
85d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    @Override
86d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
87d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        actionMode.getMenuInflater().inflate(R.menu.conversation_list_fragment_select_menu, menu);
88d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mArchiveMenuItem = menu.findItem(R.id.action_archive);
89d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mUnarchiveMenuItem = menu.findItem(R.id.action_unarchive);
90d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mAddContactMenuItem = menu.findItem(R.id.action_add_contact);
91d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mBlockMenuItem = menu.findItem(R.id.action_block);
92d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mNotificationOffMenuItem = menu.findItem(R.id.action_notification_off);
93d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mNotificationOnMenuItem = menu.findItem(R.id.action_notification_on);
94d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mHasInflated = true;
95d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        updateActionIconsVisiblity();
96d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return true;
97d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
98d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
99d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    @Override
100d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
101d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return true;
102d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
103d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
104d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    @Override
105d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
106d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        switch(menuItem.getItemId()) {
107d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            case R.id.action_delete:
108d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                mListener.onActionBarDelete(mSelectedConversations.values());
109d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                return true;
110d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            case R.id.action_archive:
111d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                mListener.onActionBarArchive(mSelectedConversations.values(), true);
112d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                return true;
113d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            case R.id.action_unarchive:
114d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                mListener.onActionBarArchive(mSelectedConversations.values(), false);
115d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                return true;
116d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            case R.id.action_notification_off:
117d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                mListener.onActionBarNotification(mSelectedConversations.values(), false);
118d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                return true;
119d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            case R.id.action_notification_on:
120d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                mListener.onActionBarNotification(mSelectedConversations.values(), true);
121d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                return true;
122d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            case R.id.action_add_contact:
123d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                Assert.isTrue(mSelectedConversations.size() == 1);
124d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                mListener.onActionBarAddContact(mSelectedConversations.valueAt(0));
125d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                return true;
126d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            case R.id.action_block:
127d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                Assert.isTrue(mSelectedConversations.size() == 1);
128d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                mListener.onActionBarBlock(mSelectedConversations.valueAt(0));
129d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                return true;
130d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            case android.R.id.home:
131d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                mListener.onActionBarHome();
132d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                return true;
133d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            default:
134d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                return false;
135d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
136d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
137d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
138d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    @Override
139d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void onDestroyActionMode(ActionMode actionMode) {
140d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mListener = null;
141d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mSelectedConversations.clear();
142d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mHasInflated = false;
143d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
144d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
145d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void toggleSelect(final ConversationListData listData,
146d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                             final ConversationListItemData conversationListItemData) {
147d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        Assert.notNull(conversationListItemData);
148d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mBlockedSet = listData.getBlockedParticipants();
149d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        final String id = conversationListItemData.getConversationId();
150d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        if (mSelectedConversations.containsKey(id)) {
151d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mSelectedConversations.remove(id);
152d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        } else {
153d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mSelectedConversations.put(id, new SelectedConversation(conversationListItemData));
154d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
155d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
156d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        if (mSelectedConversations.isEmpty()) {
157d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mListener.onActionBarHome();
158d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        } else {
159d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            updateActionIconsVisiblity();
160d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
161d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
162d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
163d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public boolean isSelected(final String selectedId) {
164d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return mSelectedConversations.containsKey(selectedId);
165d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
166d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
167d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    private void updateActionIconsVisiblity() {
168d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        if (!mHasInflated) {
169d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            return;
170d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
171d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
172d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        if (mSelectedConversations.size() == 1) {
173d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            final SelectedConversation conversation = mSelectedConversations.valueAt(0);
174d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // The look up key is a key given to us by contacts app, so if we have a look up key,
175d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // we know that the participant is already in contacts.
176d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            final boolean isInContacts = !TextUtils.isEmpty(conversation.participantLookupKey);
177d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mAddContactMenuItem.setVisible(!conversation.isGroup && !isInContacts);
178d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // ParticipantNormalizedDestination is always null for group conversations.
179d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            final String otherParticipant = conversation.otherParticipantNormalizedDestination;
180d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mBlockMenuItem.setVisible(otherParticipant != null
181d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    && !mBlockedSet.contains(otherParticipant));
182d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        } else {
183d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mBlockMenuItem.setVisible(false);
184d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mAddContactMenuItem.setVisible(false);
185d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
186d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
187d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        boolean hasCurrentlyArchived = false;
188d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        boolean hasCurrentlyUnarchived = false;
189d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        boolean hasCurrentlyOnNotification = false;
190d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        boolean hasCurrentlyOffNotification = false;
191d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        final Iterable<SelectedConversation> conversations = mSelectedConversations.values();
192d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        for (final SelectedConversation conversation : conversations) {
193d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            if (conversation.notificationEnabled) {
194d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                hasCurrentlyOnNotification = true;
195d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            } else {
196d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                hasCurrentlyOffNotification = true;
197d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            }
198d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
199d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            if (conversation.isArchived) {
200d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                hasCurrentlyArchived = true;
201d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            } else {
202d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                hasCurrentlyUnarchived = true;
203d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            }
204d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
205d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // If we found at least one of each example we don't need to keep looping.
206d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            if (hasCurrentlyOffNotification && hasCurrentlyOnNotification &&
207d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    hasCurrentlyArchived && hasCurrentlyUnarchived) {
208d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                break;
209d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            }
210d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
211d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        // If we have notification off conversations we show on button, if we have notification on
212d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        // conversation we show off button. We can show both if we have a mixture.
213d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mNotificationOffMenuItem.setVisible(hasCurrentlyOnNotification);
214d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mNotificationOnMenuItem.setVisible(hasCurrentlyOffNotification);
215d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
216d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mArchiveMenuItem.setVisible(hasCurrentlyUnarchived);
217d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mUnarchiveMenuItem.setVisible(hasCurrentlyArchived);
218d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
219d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd}
220