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