private RemoteViews BuildRemoteView(Context context, int appWidgetId, WidgetParams widgetParams) { RemoteViews widgetView; int layout = widgetParams.IsRefreshing ? LayoutsRefreshing[widgetParams.Cells] : Layouts[widgetParams.Cells]; widgetView = new RemoteViews(context.PackageName, layout); if (!widgetParams.IsRefreshing) { SetView(context, appWidgetId, widgetView); } return(widgetView); }
public override void OnRestored(Context context, int[] oldWidgetIds, int[] newWidgetIds) { base.OnRestored(context, oldWidgetIds, newWidgetIds); Realm realm = Realm.GetInstance(DB.RealmConfiguration); realm.Write(() => { for (int i = 0; i < oldWidgetIds.Length; i++) { WidgetParams widgetParams = realm.Find <WidgetParams>(oldWidgetIds[i]); widgetParams.ID = newWidgetIds[i]; } }); realm.Dispose(); }
public override void OnDeleted(Context context, int[] appWidgetIds) { base.OnDeleted(context, appWidgetIds); Realm realm = Realm.GetInstance(DB.RealmConfiguration); realm.Write(() => { foreach (int appWidgetId in appWidgetIds) { WidgetParams widgetParams = realm.Find <WidgetParams>(appWidgetId); realm.Remove(widgetParams); } }); realm.Dispose(); }
public override void OnAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newOptions) { Realm realm = Realm.GetInstance(DB.RealmConfiguration); Bundle options = appWidgetManager.GetAppWidgetOptions(appWidgetId); // Get min width and height. int minWidth = options.GetInt(AppWidgetManager.OptionAppwidgetMinWidth); //int minHeight = options.GetInt(AppWidgetManager.OptionAppwidgetMinHeight); WidgetParams widgetParams = realm.Find <WidgetParams>(appWidgetId); int cells = GetCellsForSize(minWidth); realm.Write(() => widgetParams.Cells = cells >= 1 && cells <= 3 ? cells : 0); // Obtain appropriate widget and update it. appWidgetManager.UpdateAppWidget(appWidgetId, BuildRemoteView(context, appWidgetId, widgetParams)); base.OnAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId, newOptions); realm.Dispose(); }
public override void OnUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { Realm realm = Realm.GetInstance(DB.RealmConfiguration); foreach (int appWidgetId in appWidgetIds) { WidgetParams widgetParams = realm.Find <WidgetParams>(appWidgetId); if (widgetParams == null) { // Widget created realm.Write(() => { widgetParams = new WidgetParams() { ID = appWidgetId, IsRefreshing = true, Cells = 3, }; realm.Add <WidgetParams>(widgetParams); }); } else if (widgetParams.IsRefreshing) { // Already updating continue; } else { realm.Write(() => widgetParams.IsRefreshing = true); } bool isFirstUpdate = Data.Instance.ReadBoolean(context, Data.IsFirstUpdate, true); DBController.Instance.ParseBooks(context, !isFirstUpdate); ComponentName appWidgetComponentName = new ComponentName(context, Java.Lang.Class.FromType(typeof(Widget)).Name); appWidgetManager.UpdateAppWidget(appWidgetComponentName, BuildRemoteView(context, appWidgetId, widgetParams)); } base.OnUpdate(context, appWidgetManager, appWidgetIds); realm.Dispose(); }