1592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux/*
2592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux * Copyright (C) 2015 The Android Open Source Project
3592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux *
4592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux * Licensed under the Apache License, Version 2.0 (the "License");
5592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux * you may not use this file except in compliance with the License.
6592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux * You may obtain a copy of the License at
7592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux *
8592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux *      http://www.apache.org/licenses/LICENSE-2.0
9592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux *
10592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux * Unless required by applicable law or agreed to in writing, software
11592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux * distributed under the License is distributed on an "AS IS" BASIS,
12592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux * See the License for the specific language governing permissions and
14592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux * limitations under the License.
15592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux */
16592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux
17592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieuxpackage com.android.deskclock.data;
18592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux
19ff62e7fa903e3b6b11d0443543725c1351ab289dJames Lemieuximport android.content.SharedPreferences;
20592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieuximport android.support.annotation.StringRes;
21592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux
22592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieuximport com.android.deskclock.R;
23592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieuximport com.android.deskclock.events.Events;
24592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux
25592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux/**
26592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux * All widget data is accessed via this model.
27592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux */
28592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieuxfinal class WidgetModel {
29592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux
30ff62e7fa903e3b6b11d0443543725c1351ab289dJames Lemieux    private final SharedPreferences mPrefs;
31ff62e7fa903e3b6b11d0443543725c1351ab289dJames Lemieux
32ff62e7fa903e3b6b11d0443543725c1351ab289dJames Lemieux    WidgetModel(SharedPreferences prefs) {
33ff62e7fa903e3b6b11d0443543725c1351ab289dJames Lemieux        mPrefs = prefs;
34ff62e7fa903e3b6b11d0443543725c1351ab289dJames Lemieux    }
35ff62e7fa903e3b6b11d0443543725c1351ab289dJames Lemieux
36592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux    /**
37592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux     * @param widgetClass indicates the type of widget being counted
38592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux     * @param count the number of widgets of the given type
39592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux     * @param eventCategoryId identifies the category of event to send
40592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux     */
41592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux    void updateWidgetCount(Class widgetClass, int count, @StringRes int eventCategoryId) {
42ff62e7fa903e3b6b11d0443543725c1351ab289dJames Lemieux        int delta = WidgetDAO.updateWidgetCount(mPrefs, widgetClass, count);
43592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux        for (; delta > 0; delta--) {
44592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux            Events.sendEvent(eventCategoryId, R.string.action_create, 0);
45592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux        }
46592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux        for (; delta < 0; delta++) {
47592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux            Events.sendEvent(eventCategoryId, R.string.action_delete, 0);
48592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux        }
49592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux    }
50592c66b3eb497d24d1528fb2597059c6e4ec6620James Lemieux}