NotificationData.java revision e345fff2f80947b0a821f6674c197a02b7bff08e
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; 33e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato public StatusBarIconView icon; 34e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato public View expanded; 35e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato } 36e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato private final ArrayList<Entry> mEntries = new ArrayList<Entry>(); 37e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato 38e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato public int size() { 39e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato return mEntries.size(); 40e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato } 41e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato 42e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato public Entry getEntryAt(int index) { 43e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato return mEntries.get(index); 44e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato } 45e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato 46e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato public int add(IBinder key, StatusBarNotification notification, View expanded) { 47e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato Entry entry = new Entry(); 48e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato entry.key = key; 49e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato entry.notification = notification; 50e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato entry.expanded = expanded; 51e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato final int index = chooseIndex(notification.notification.when); 52e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato mEntries.add(index, entry); 53e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato return index; 54e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato } 55e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato 56e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato private int chooseIndex(final long when) { 57e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato final int N = mEntries.size(); 58e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato for (int i=0; i<N; i++) { 59e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato Entry entry = mEntries.get(i); 60e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato if (entry.notification.notification.when > when) { 61e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato return i; 62e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato } 63e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato } 64e345fff2f80947b0a821f6674c197a02b7bff08eJoe Onorato return N; 65503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato } 66503007dd023668b1e45de948d3673e594d7f5a82Joe Onorato} 67