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}