NotificationData.java revision 0e26dffd6cfcb09b08a94a857b891fdef7fe2b1e
1503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato/* 2503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato * Copyright (C) 2008 The Android Open Source Project 3503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato * 4503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato * Licensed under the Apache License, Version 2.0 (the "License"); 5503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato * you may not use this file except in compliance with the License. 6503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato * You may obtain a copy of the License at 7503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato * 8503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato * http://www.apache.org/licenses/LICENSE-2.0 9503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato * 10503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato * Unless required by applicable law or agreed to in writing, software 11503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato * distributed under the License is distributed on an "AS IS" BASIS, 12503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato * See the License for the specific language governing permissions and 14503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato * limitations under the License. 15503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato */ 16503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato 17503007dd023668b1e45de948d3673e594d7f5a82Joe Onoratopackage com.android.policy.statusbar.phone; 18503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato 19e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onoratoimport android.os.IBinder; 20e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onoratoimport android.view.View; 21503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato 22e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onoratoimport com.android.internal.statusbar.StatusBarNotification; 23e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato 24e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onoratoimport java.util.ArrayList; 25e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato 26e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato/** 27e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato * The list of currently displaying notifications. 28e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato */ 29503007dd023668b1e45de948d3673e594d7f5a82Joe Onoratopublic class NotificationData { 30e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato public static final class Entry { 31e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato public IBinder key; 32e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato public StatusBarNotification notification; 3366b4c5bb36f57a9d83bb7f34288235b82f9be407Joe Onorato public StatusBarIconView icon; 340e26dffd6cfcb09b08a94a857b891fdef7fe2b1eJoe Onorato public View expanded; // the outer expanded view 350e26dffd6cfcb09b08a94a857b891fdef7fe2b1eJoe Onorato public View contents; // the inflated RemoteViews 36e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato } 37e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato private final ArrayList<Entry> mEntries = new ArrayList<Entry>(); 38e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato 39e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato public int size() { 40e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato return mEntries.size(); 41e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato } 42e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato 43e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato public Entry getEntryAt(int index) { 44e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato return mEntries.get(index); 45e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato } 46e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato 470e26dffd6cfcb09b08a94a857b891fdef7fe2b1eJoe Onorato public int findEntry(IBinder key) { 480e26dffd6cfcb09b08a94a857b891fdef7fe2b1eJoe Onorato final int N = mEntries.size(); 490e26dffd6cfcb09b08a94a857b891fdef7fe2b1eJoe Onorato for (int i=0; i<N; i++) { 500e26dffd6cfcb09b08a94a857b891fdef7fe2b1eJoe Onorato Entry entry = mEntries.get(i); 510e26dffd6cfcb09b08a94a857b891fdef7fe2b1eJoe Onorato if (entry.key == key) { 520e26dffd6cfcb09b08a94a857b891fdef7fe2b1eJoe Onorato return i; 530e26dffd6cfcb09b08a94a857b891fdef7fe2b1eJoe Onorato } 540e26dffd6cfcb09b08a94a857b891fdef7fe2b1eJoe Onorato } 550e26dffd6cfcb09b08a94a857b891fdef7fe2b1eJoe Onorato return -1; 560e26dffd6cfcb09b08a94a857b891fdef7fe2b1eJoe Onorato } 570e26dffd6cfcb09b08a94a857b891fdef7fe2b1eJoe Onorato 5866b4c5bb36f57a9d83bb7f34288235b82f9be407Joe Onorato public int add(IBinder key, StatusBarNotification notification, View expanded, 5966b4c5bb36f57a9d83bb7f34288235b82f9be407Joe Onorato StatusBarIconView icon) { 60e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato Entry entry = new Entry(); 61e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato entry.key = key; 62e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato entry.notification = notification; 63e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato entry.expanded = expanded; 6466b4c5bb36f57a9d83bb7f34288235b82f9be407Joe Onorato entry.icon = icon; 65e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato final int index = chooseIndex(notification.notification.when); 66e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato mEntries.add(index, entry); 67e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato return index; 68e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato } 69e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato 7066b4c5bb36f57a9d83bb7f34288235b82f9be407Joe Onorato public Entry remove(IBinder key) { 7166b4c5bb36f57a9d83bb7f34288235b82f9be407Joe Onorato final int N = mEntries.size(); 7266b4c5bb36f57a9d83bb7f34288235b82f9be407Joe Onorato for (int i=0; i<N; i++) { 7366b4c5bb36f57a9d83bb7f34288235b82f9be407Joe Onorato Entry entry = mEntries.get(i); 7466b4c5bb36f57a9d83bb7f34288235b82f9be407Joe Onorato if (entry.key == key) { 7566b4c5bb36f57a9d83bb7f34288235b82f9be407Joe Onorato mEntries.remove(i); 7666b4c5bb36f57a9d83bb7f34288235b82f9be407Joe Onorato return entry; 7766b4c5bb36f57a9d83bb7f34288235b82f9be407Joe Onorato } 7866b4c5bb36f57a9d83bb7f34288235b82f9be407Joe Onorato } 7966b4c5bb36f57a9d83bb7f34288235b82f9be407Joe Onorato return null; 8066b4c5bb36f57a9d83bb7f34288235b82f9be407Joe Onorato } 8166b4c5bb36f57a9d83bb7f34288235b82f9be407Joe Onorato 82e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato private int chooseIndex(final long when) { 83e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato final int N = mEntries.size(); 84e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato for (int i=0; i<N; i++) { 85e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato Entry entry = mEntries.get(i); 86e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato if (entry.notification.notification.when > when) { 87e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato return i; 88e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato } 89e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato } 90e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato return N; 91503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato } 92503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato} 93