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
2849fa016a98cef9940c883b3f620a0e90537a204eJason Monkpublic abstract class SystemUI implements SysUiServiceProvider {
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
54037d80887917b11cbb7445c8835a5ad57080b452Julia Reynolds    public static void overrideNotificationAppName(Context context, Notification.Builder n,
55037d80887917b11cbb7445c8835a5ad57080b452Julia Reynolds            boolean system) {
56e25c18da7d2cc3e02620dadfcb976521821bc9d8Adrian Roos        final Bundle extras = new Bundle();
57037d80887917b11cbb7445c8835a5ad57080b452Julia Reynolds        String appName = system
58037d80887917b11cbb7445c8835a5ad57080b452Julia Reynolds                ? context.getString(com.android.internal.R.string.notification_app_name_system)
59037d80887917b11cbb7445c8835a5ad57080b452Julia Reynolds                : context.getString(com.android.internal.R.string.notification_app_name_settings);
60037d80887917b11cbb7445c8835a5ad57080b452Julia Reynolds        extras.putString(Notification.EXTRA_SUBSTITUTE_APP_NAME, appName);
61e25c18da7d2cc3e02620dadfcb976521821bc9d8Adrian Roos
62e25c18da7d2cc3e02620dadfcb976521821bc9d8Adrian Roos        n.addExtras(extras);
63e25c18da7d2cc3e02620dadfcb976521821bc9d8Adrian Roos    }
64f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato}
65