1f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato/*
2f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato * Copyright (C) 2010 The Android Open Source Project
3f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato *
4f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato * Licensed under the Apache License, Version 2.0 (the "License");
5f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato * you may not use this file except in compliance with the License.
6f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato * You may obtain a copy of the License at
7f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato *
8f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato *      http://www.apache.org/licenses/LICENSE-2.0
9f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato *
10f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato * Unless required by applicable law or agreed to in writing, software
11f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato * distributed under the License is distributed on an "AS IS" BASIS,
12f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato * See the License for the specific language governing permissions and
14f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato * limitations under the License.
15f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato */
16f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato
17f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onoratopackage com.android.systemui;
18f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato
19e25c18da7d2cc3e02620dadfcb976521821bc9d8Adrian Roosimport android.app.Notification;
20f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onoratoimport android.content.Context;
210ad460b087abbd4b523a2e61ff27b0bf6fb5be92Daniel Sandlerimport android.content.res.Configuration;
22e25c18da7d2cc3e02620dadfcb976521821bc9d8Adrian Roosimport android.os.Bundle;
23f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato
24de84f0e77ea2bf713d15c290264059a413c2486aJohn Spurlockimport java.io.FileDescriptor;
25de84f0e77ea2bf713d15c290264059a413c2486aJohn Spurlockimport java.io.PrintWriter;
26d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlockimport java.util.Map;
27de84f0e77ea2bf713d15c290264059a413c2486aJohn Spurlock
28f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onoratopublic abstract class SystemUI {
29f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato    public Context mContext;
30d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock    public Map<Class<?>, Object> mComponents;
31f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato
32f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato    public abstract void start();
33209bede6b9edb9171e5bee4077b48e35004a37b4John Spurlock
340ad460b087abbd4b523a2e61ff27b0bf6fb5be92Daniel Sandler    protected void onConfigurationChanged(Configuration newConfig) {
350ad460b087abbd4b523a2e61ff27b0bf6fb5be92Daniel Sandler    }
36f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato
37f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
38f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato    }
39d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock
40dc5f16bf096796d2f822bce8a720fc26e898da5eDan Sandler    protected void onBootCompleted() {
41dc5f16bf096796d2f822bce8a720fc26e898da5eDan Sandler    }
42dc5f16bf096796d2f822bce8a720fc26e898da5eDan Sandler
43d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock    @SuppressWarnings("unchecked")
44d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock    public <T> T getComponent(Class<T> interfaceType) {
45d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock        return (T) (mComponents != null ? mComponents.get(interfaceType) : null);
46d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock    }
47d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock
48d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock    public <T, C extends T> void putComponent(Class<T> interfaceType, C component) {
49d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock        if (mComponents != null) {
50d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock            mComponents.put(interfaceType, component);
51d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock        }
52d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock    }
53e25c18da7d2cc3e02620dadfcb976521821bc9d8Adrian Roos
54e25c18da7d2cc3e02620dadfcb976521821bc9d8Adrian Roos    public static void overrideNotificationAppName(Context context, Notification.Builder n) {
55e25c18da7d2cc3e02620dadfcb976521821bc9d8Adrian Roos        final Bundle extras = new Bundle();
56e25c18da7d2cc3e02620dadfcb976521821bc9d8Adrian Roos        extras.putString(Notification.EXTRA_SUBSTITUTE_APP_NAME,
57e25c18da7d2cc3e02620dadfcb976521821bc9d8Adrian Roos                context.getString(com.android.internal.R.string.android_system_label));
58e25c18da7d2cc3e02620dadfcb976521821bc9d8Adrian Roos
59e25c18da7d2cc3e02620dadfcb976521821bc9d8Adrian Roos        n.addExtras(extras);
60e25c18da7d2cc3e02620dadfcb976521821bc9d8Adrian Roos    }
61f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato}
62