blob: 8a6a4cd9599181542161b06bb65e345bd911d4c1 [file] [log] [blame]
Robert Snoeberger00257512019-02-27 16:44:04 -05001/*
2 * Copyright (C) 2019 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package com.android.keyguard.clock;
17
Robert Snoeberger9ad03f42019-02-28 14:47:49 -050018import android.content.res.Resources;
19import android.graphics.Bitmap;
20import android.graphics.BitmapFactory;
Robert Snoeberger00257512019-02-27 16:44:04 -050021import android.graphics.Paint.Style;
22import android.view.LayoutInflater;
23import android.view.View;
24import android.widget.TextView;
25
26import com.android.keyguard.R;
27import com.android.systemui.plugins.ClockPlugin;
28
29import java.util.TimeZone;
30
31/**
32 * Plugin for the default clock face used only to provide a preview.
33 */
34public class DefaultClockController implements ClockPlugin {
35
36 /**
Robert Snoeberger9ad03f42019-02-28 14:47:49 -050037 * Resources used to get title and thumbnail.
38 */
39 private final Resources mResources;
40
41 /**
42 * LayoutInflater used to inflate custom clock views.
43 */
44 private final LayoutInflater mLayoutInflater;
45
46 /**
Robert Snoeberger00257512019-02-27 16:44:04 -050047 * Root view of preview.
48 */
49 private View mView;
Robert Snoeberger9ad03f42019-02-28 14:47:49 -050050
Robert Snoeberger00257512019-02-27 16:44:04 -050051 /**
52 * Text clock in preview view hierarchy.
53 */
54 private TextView mTextTime;
Robert Snoeberger00257512019-02-27 16:44:04 -050055
Robert Snoeberger9ad03f42019-02-28 14:47:49 -050056 /**
57 * Date showing below time in preview view hierarchy.
58 */
59 private TextView mTextDate;
Robert Snoeberger00257512019-02-27 16:44:04 -050060
61 /**
62 * Create a DefaultClockController instance.
63 *
64 * @param inflater Inflater used to inflate custom clock views.
65 */
Robert Snoeberger9ad03f42019-02-28 14:47:49 -050066 public DefaultClockController(Resources res, LayoutInflater inflater) {
67 mResources = res;
68 mLayoutInflater = inflater;
Robert Snoeberger00257512019-02-27 16:44:04 -050069 }
70
Robert Snoeberger9ad03f42019-02-28 14:47:49 -050071 private void createViews() {
72 mView = mLayoutInflater.inflate(R.layout.default_clock_preview, null);
Robert Snoeberger00257512019-02-27 16:44:04 -050073 mTextTime = mView.findViewById(R.id.time);
74 mTextDate = mView.findViewById(R.id.date);
75 }
76
77 @Override
Robert Snoeberger9ad03f42019-02-28 14:47:49 -050078 public String getName() {
79 return "default";
80 }
81
82 @Override
83 public String getTitle() {
84 return mResources.getString(R.string.clock_title_default);
85 }
86
87 @Override
88 public Bitmap getThumbnail() {
89 return BitmapFactory.decodeResource(mResources, R.drawable.default_thumbnail);
90 }
91
92 @Override
Robert Snoeberger00257512019-02-27 16:44:04 -050093 public View getView() {
94 return null;
95 }
96
97 @Override
98 public View getBigClockView() {
Robert Snoeberger9ad03f42019-02-28 14:47:49 -050099 if (mView == null) {
100 createViews();
101 }
Robert Snoeberger00257512019-02-27 16:44:04 -0500102 return mView;
103 }
104
105 @Override
106 public void setStyle(Style style) {}
107
108 @Override
109 public void setTextColor(int color) {
110 mTextTime.setTextColor(color);
111 mTextDate.setTextColor(color);
112 }
113
114 @Override
115 public void setColorPalette(boolean supportsDarkText, int[] colorPalette) {}
116
117 @Override
Robert Snoeberger9ad03f42019-02-28 14:47:49 -0500118 public void onTimeTick() {
Robert Snoeberger00257512019-02-27 16:44:04 -0500119 }
120
121 @Override
122 public void setDarkAmount(float darkAmount) {}
123
124 @Override
125 public void onTimeZoneChanged(TimeZone timeZone) {}
126
127 @Override
128 public boolean shouldShowStatusArea() {
129 return true;
130 }
131}