summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/status/IconData.java
blob: 9aaaba1c770b08e82232a19c87f2702ba6f4d89d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
/*
 * Copyright (C) 2008 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.server.status;

import android.provider.Settings;
import android.util.Slog;

public class IconData {
    /**
     * Indicates ths item represents a piece of text.
     */
    public static final int TEXT = 1;
    
    /**
     * Indicates ths item represents an icon.
     */
    public static final int ICON = 2;

    /**
      * Indicates ths item represents an integer displayed on top of an icon.
      */
    public static final int ICON_NUMBER = 3;

    /**
     * Default colors to use for any text appearing on each type of icon.
     */
    private static final int DEFAULT_TEXT_COLOR = 0xff000000;
    private static final int DEFAULT_ICON_COLOR = 0xffffffff;
    private static final int DEFAULT_ICON_NUMBER_COLOR = 0xffffffff;

    /**
      * The type of this item. One of TEXT, ICON, or LEVEL_ICON.
      */
    public int type;

    /**
     * The slot that this icon will be in if it is not a notification
     */
    public String slot;

    /**
     * The package containting the icon to draw for this item. Valid if this is
     * an ICON type.
     */
    public String iconPackage;
    
    /**
     * The icon to draw for this item. Valid if this is an ICON type.
     */
    public int iconId;
    
    /**
     * The level associated with the icon. Valid if this is a LEVEL_ICON type.
     */
    public int iconLevel;
    
    /**
     * The "count" number.
     */
    public int number;

    /**
     * The text associated with the icon. Valid if this is a TEXT type.
     */
    public CharSequence text;

    /**
     * The default color of any text associated with this icon.
     */
    public int textColor;

    /**
     * The system setting that holds the text color for this icon.
     */
    public String colorSetting;

    /**
     * The system setting that determines whether the icon is visible or not.
     * Currently this only applies to the TEXT type.
     */
    public String visibleSetting;
    public boolean defVisibility;

    private IconData() {
    }

    public static IconData makeIcon(String slot,
            String iconPackage, int iconId, int iconLevel, int number) {
        IconData data = new IconData();
        data.type = ICON;
        data.slot = slot;
        data.iconPackage = iconPackage;
        data.iconId = iconId;
        data.iconLevel = iconLevel;
        data.number = number;
        data.textColor = DEFAULT_ICON_COLOR;
        data.colorSetting = Settings.System.NOTIF_COUNT_COLOR;
        return data;
    }
    
    public static IconData makeText(String slot, CharSequence text, String colorSetting,
            String visibleSetting, boolean defVisibility) {
        IconData data = new IconData();
        data.type = TEXT;
        data.slot = slot;
        data.text = text;
        data.textColor = DEFAULT_TEXT_COLOR;
        data.colorSetting = colorSetting;
        data.visibleSetting = visibleSetting;
        data.defVisibility = defVisibility;
        return data;
    }

    public static IconData makeIconNumber(String slot,
            String iconPackage, int iconId, int iconLevel, int number, String colorSetting) {
        IconData data = new IconData();
        data.type = ICON_NUMBER;
        data.slot = slot;
        data.iconPackage = iconPackage;
        data.iconId = iconId;
        data.iconLevel = iconLevel;
        data.number = number;
        data.textColor = DEFAULT_ICON_NUMBER_COLOR;
        data.colorSetting = colorSetting;
        return data;
    }

    public void copyFrom(IconData that) {
        this.type = that.type;
        this.slot = that.slot;
        this.iconPackage = that.iconPackage;
        this.iconId = that.iconId;
        this.iconLevel = that.iconLevel;
        this.number = that.number;
        this.text = that.text; // should we clone this?
        this.textColor = that.textColor;
        this.colorSetting = that.colorSetting;
        this.visibleSetting = that.visibleSetting;
        this.defVisibility = that.defVisibility;
    }

    public IconData clone() {
        IconData that = new IconData();
        that.copyFrom(this);
        return that;
    }

    public String toString() {
        if (this.type == TEXT) {
            return "IconData(slot=" + (this.slot != null ? "'" + this.slot + "'" : "null")
                    + " text='" + this.text + "')"; 
        }
        else if (this.type == ICON) {
            return "IconData(slot=" + (this.slot != null ? "'" + this.slot + "'" : "null")
                    + " package=" + this.iconPackage
                    + " iconId=" + Integer.toHexString(this.iconId)
                    + " iconLevel=" + this.iconLevel + ")"; 
        }

        else if (this.type == ICON_NUMBER) {
            return "IconData(slot=" + (this.slot != null ? "'" + this.slot + "'" : "null")
                    + " package=" + this.iconPackage
                    + " iconId=" + Integer.toHexString(this.iconId)
                    + " iconLevel=" + this.iconLevel
                    + " number='" + this.number + "')"; 
        }
        else {
            return "IconData(type=" + type + ")";
        }
    }
}