public RemoteViews GetViewAt(int position) { var view = new RemoteViews(context.PackageName, Resource.Layout.SuggestionsWidgetItem); var item = items[position]; var hasDescription = !string.IsNullOrEmpty(item.Description); var hasProject = !string.IsNullOrEmpty(item.ProjectName); view.SetViewVisibility(Resource.Id.DescriptionTextView, hasDescription.ToVisibility()); if (hasDescription) { view.SetTextViewText(Resource.Id.DescriptionTextView, item.Description); } view.SetViewVisibility(Resource.Id.ProjectClientRow, hasProject.ToVisibility()); if (hasProject) { view.SetTextViewText(Resource.Id.ProjectNameTextView, item.ProjectName); view.SetTextColor(Resource.Id.ProjectNameTextView, Color.ParseColor(item.ProjectColor)); view.SetTextViewText(Resource.Id.ClientNameTextView, item.ClientName); } var bottomBorderVisibility = (position != Count - 1).ToVisibility(); view.SetViewVisibility(Resource.Id.BottomSeparator, bottomBorderVisibility); var intent = new Intent(); intent.PutExtra(TappedSuggestionIndex, position); view.SetOnClickFillInIntent(Resource.Id.RootLayout, intent); return(view); }
public override RemoteViews Setup(Context context, TimeEntryWidgetInfo widgetInfo) { var view = new RemoteViews(context.PackageName, Resource.Layout.TimeEntryWidgetSmall); SetupActionsForStartAndStopButtons(context, view); view.SetViewVisibility(Resource.Id.StartButton, (!widgetInfo.IsRunning).ToVisibility()); view.SetViewVisibility(Resource.Id.StopButton, widgetInfo.IsRunning.ToVisibility()); return(view); }
public RemoteViews GetViewAt(int position) { var remoteView = new RemoteViews(context.PackageName, Resource.Layout.widget_list_item); var rowData = itemList [position]; // set if is running if (rowData.IsRunning) { remoteView.SetImageViewResource(Resource.Id.WidgetContinueImageButton, Resource.Drawable.IcWidgetStop); remoteView.SetViewVisibility(Resource.Id.DurationChronometer, Android.Views.ViewStates.Visible); remoteView.SetViewVisibility(Resource.Id.DurationTextView, Android.Views.ViewStates.Gone); } else { remoteView.SetImageViewResource(Resource.Id.WidgetContinueImageButton, Resource.Drawable.IcWidgetPlay); remoteView.SetViewVisibility(Resource.Id.DurationChronometer, Android.Views.ViewStates.Gone); remoteView.SetViewVisibility(Resource.Id.DurationTextView, Android.Views.ViewStates.Visible); } // set color remoteView.SetInt(Resource.Id.WidgetColorView, "setColorFilter", Color.ParseColor(rowData.Color)); remoteView.SetOnClickFillInIntent(Resource.Id.WidgetContinueImageButton, ConstructFillIntent(rowData)); // set content remoteView.SetTextViewText( Resource.Id.DescriptionTextView, String.IsNullOrWhiteSpace(rowData.Description) ? context.Resources.GetString(Resource.String.RunningWidgetNoDescription) : rowData.Description); remoteView.SetTextViewText( Resource.Id.ProjectTextView, String.IsNullOrWhiteSpace(rowData.ProjectName) ? context.Resources.GetString(Resource.String.RunningWidgetNoProject) : rowData.ProjectName); remoteView.SetTextViewText(Resource.Id.DurationTextView, rowData.TimeValue); var time = (long)rowData.Duration.TotalMilliseconds; // Format chronometer correctly. string format = "00:%s"; if (time >= 3600000 && time < 36000000) { format = "0%s"; } else if (time >= 36000000) { format = "%s"; } var baseTime = SystemClock.ElapsedRealtime(); remoteView.SetChronometer(Resource.Id.DurationChronometer, baseTime - (long)rowData.Duration.TotalMilliseconds, format, true); return(remoteView); }
private void SetupRunningBtn(Context ctx, RemoteViews views) { var entry = new WidgetSyncManager.WidgetEntryData(); var isRunning = false; // Check if an entry is running. foreach (var item in UpdateService.LastEntries) { if (item.IsRunning) { entry = item; isRunning = true; } } var baseTime = SystemClock.ElapsedRealtime(); if (isRunning) { views.SetInt(Resource.Id.WidgetActionButton, "setBackgroundColor", ctx.Resources.GetColor(Resource.Color.bright_red)); views.SetInt(Resource.Id.WidgetActionButton, "setText", Resource.String.TimerStopButtonText); views.SetInt(Resource.Id.WidgetColorView, "setColorFilter", Color.ParseColor(entry.Color)); views.SetViewVisibility(Resource.Id.WidgetRunningEntry, ViewStates.Visible); views.SetTextViewText( Resource.Id.WidgetRunningDescriptionTextView, String.IsNullOrWhiteSpace(entry.Description) ? ctx.Resources.GetString(Resource.String.RunningWidgetNoDescription) : entry.Description); var time = (long)entry.Duration.TotalMilliseconds; // Format chronometer correctly. string format = "00:%s"; if (time >= 3600000 && time < 36000000) { format = "0%s"; } else if (time >= 36000000) { format = "%s"; } views.SetChronometer(Resource.Id.Chronometer, baseTime - (long)entry.Duration.TotalMilliseconds, format, true); } else { views.SetInt(Resource.Id.WidgetActionButton, "setBackgroundColor", ctx.Resources.GetColor(Resource.Color.bright_green)); views.SetInt(Resource.Id.WidgetActionButton, "setText", Resource.String.TimerStartButtonText); views.SetViewVisibility(Resource.Id.WidgetRunningEntry, ViewStates.Invisible); views.SetChronometer(Resource.Id.Chronometer, baseTime, "00:%s", false); views.SetTextViewText(Resource.Id.Chronometer, "00:00:00"); } }
protected RemoteViews Setup(Context context) { var view = new RemoteViews(context.PackageName, Resource.Layout.WidgetNotLoggedIn); view.SetOnClickPendingIntent(Resource.Id.RootLayout, getOpenAppToLoginPendingIntent(context)); view.SetTextViewText(Resource.Id.NotLoggedInLabel, LabelText); view.SetViewVisibility(Resource.Id.NotLoggedInLabel, isFullView.ToVisibility()); view.SetViewVisibility(Resource.Id.TogglLogo, isFullView.ToVisibility()); view.SetViewVisibility(Resource.Id.PadLock, isFullView.ToVisibility()); view.SetViewVisibility(Resource.Id.PadLockBig, (!isFullView).ToVisibility()); return(view); }
public void UpdateWidgets(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds, string updateMessage, string totalVal, string profitVal, Color profCol, bool updating, bool setIntents = false) { for (int i = 0; i < appWidgetIds.Length; i++) { int widgetId = appWidgetIds[i]; RemoteViews remoteViews = new RemoteViews(context.PackageName, Resource.Layout.Widget); remoteViews.SetViewVisibility(Resource.Id.widgetButton, (updating)? Android.Views.ViewStates.Gone : Android.Views.ViewStates.Visible); remoteViews.SetViewVisibility(Resource.Id.widgetLoading, (updating)? Android.Views.ViewStates.Visible : Android.Views.ViewStates.Gone); if (!string.IsNullOrWhiteSpace(profitVal)) { remoteViews.SetTextViewText(Resource.Id.widgetProfit, profitVal); remoteViews.SetTextColor(Resource.Id.widgetProfit, profCol); } if (!string.IsNullOrWhiteSpace(totalVal)) { remoteViews.SetTextViewText(Resource.Id.widgetTotal, totalVal); } if (!string.IsNullOrWhiteSpace(updateMessage)) { remoteViews.SetTextViewText(Resource.Id.widgetTime, updateMessage); } if (setIntents) { Intent intent = new Intent(context, typeof(HodlrWidgetProvider)); intent.SetAction(AppWidgetManager.ActionAppwidgetUpdate); intent.PutExtra(AppWidgetManager.ExtraAppwidgetIds, appWidgetIds); PendingIntent pendingIntent = PendingIntent.GetBroadcast( context, 0, intent, PendingIntentFlags.UpdateCurrent); remoteViews.SetOnClickPendingIntent(Resource.Id.widgetButton, pendingIntent); Intent activityIntent = new Intent(context, typeof(MainActivity)); PendingIntent pendingAct = PendingIntent.GetActivity(context, 0, activityIntent, 0); remoteViews.SetOnClickPendingIntent(Resource.Id.widgetImage, pendingAct); } appWidgetManager.UpdateAppWidget(widgetId, remoteViews); } }
protected void ShowRefresh(Context context, int[] appWidgetIds) { var appWidgetManager = AppWidgetManager.GetInstance(context); var componentname = new ComponentName(context.PackageName, ClassName); if (appWidgetIds == null || appWidgetIds.Length == 0) { appWidgetIds = appWidgetManager.GetAppWidgetIds(componentname); } var views = new RemoteViews(context.PackageName, WidgetLayoutId); views.SetViewVisibility(Resource.Id.refresh_button, ViewStates.Gone); views.SetViewVisibility(Resource.Id.refresh_progress, ViewStates.Visible); appWidgetManager.PartiallyUpdateAppWidget(appWidgetIds, views); }
public static void Update(Context context, AppWidgetManager appWidgetManager, params int[] appWidgetIds) { foreach (int appWidgetId in appWidgetIds) { Step step; if (!TramUrWayApplication.Config.StepWidgets.TryGetValue(appWidgetId, out step)) { return; } RemoteViews remoteViews = new RemoteViews(context.PackageName, Resource.Layout.StepWidget); Intent intent = new Intent(context, typeof(StopActivity)); intent.PutExtra("Stop", step.Stop.Id); intent.PutExtra("Route", step.Route.Id); int code = Util.Hash(step.Stop.Id, step.Route.Id); PendingIntent pendingIntent = PendingIntent.GetActivity(context, code, intent, 0); remoteViews.SetOnClickPendingIntent(Resource.Id.StepWidget_Button, pendingIntent); // Update widget UI remoteViews.SetTextViewText(Resource.Id.StepWidget_Name, step.Stop.Name); remoteViews.SetViewVisibility(Resource.Id.StepWidget_Description, TramUrWayApplication.Config.EnableWidgetRefresh ? ViewStates.Visible : ViewStates.Gone); Bitmap bitmap = Utils.GetTransportIconForLine(context, step.Route.Line, 48); remoteViews.SetImageViewBitmap(Resource.Id.StepWidget_Icon, bitmap); // Get step information if (TramUrWayApplication.Config.EnableWidgetRefresh) { DateTime now = DateTime.Now; TimeStep[] timeSteps = null; try { timeSteps = TramUrWayApplication.Service.GetLiveTimeSteps(step.Route.Line).Where(t => t.Step.Stop == step.Stop).OrderBy(t => t.Date).Take(2).ToArray(); } catch (Exception e) { timeSteps = TramUrWayApplication.Lines.SelectMany(l => l.Routes) .SelectMany(r => r.Steps.Where(s => s.Stop.Name == step.Stop.Name)) .SelectMany(s => s.Route.TimeTable?.GetStepsFromStep(s, now)?.Take(3) ?? Enumerable.Empty <TimeStep>()) .Take(2) .ToArray(); } remoteViews.SetTextViewText(Resource.Id.StepWidget_Description, timeSteps == null ? "???" : Utils.GetReadableTimes(timeSteps, now, false)); } try { appWidgetManager.UpdateAppWidget(appWidgetId, remoteViews); } catch (Exception e) { Toast.MakeText(context, "Exception while updating widget: " + e, ToastLength.Long).Show(); } } }
/// <summary> /// Renders the visual contents of a specific widget contents into a RemoteViews object /// </summary> /// <param name="widgetContext">Widget context.</param> /// <param name="widgetId">Widget identifier.</param> private RemoteViews RenderWidgetContents(Context context, int widgetId) { // Initialise the persistent storage PersistentStorage.StorageMechanism = new StorageMechanism(context); PersistentStorage.UseCache = false; // Create a RemoteView for the widget RemoteViews widgetView = new RemoteViews(context.PackageName, Resource.Layout.widget); // Extract the current trip details and display them. // The trip details and selected trip can be changed independently by the main app so a new set of train trip details need to be read TrainTrips.Reset(); TrainTrip selectedTrip = TrainTrips.SelectedTrip; if (selectedTrip != null) { widgetView.SetTextViewText(Resource.Id.widgetTrip, string.Format("{0}:{1}", selectedTrip.FromCode, selectedTrip.ToCode)); } // Extract the next departure time and display it DateTime departureTime = NextDeparture.DepartureTime; widgetView.SetTextViewText(Resource.Id.widgetDeparture, departureTime.ToString("HH:mm")); // Register pending intents for clicking on the displayed fields RegisterClicks(context, widgetView); // Show the correct image for the running state of the update service if (PersistentStorage.GetBoolItem(UpdateInProgressName, false) == true) { // An update is actually in progress, so show the progress indicator and hide // the service status flags widgetView.SetViewVisibility(Resource.Id.layoutProgressBar, Android.Views.ViewStates.Visible); widgetView.SetViewVisibility(Resource.Id.imageStart, Android.Views.ViewStates.Gone); widgetView.SetViewVisibility(Resource.Id.imageStop, Android.Views.ViewStates.Gone); } else { // Hide the progress indicator and show the servide state widgetView.SetViewVisibility(Resource.Id.layoutProgressBar, Android.Views.ViewStates.Gone); if (PersistentStorage.GetBoolItem(UpdateServiceRunningName, false) == true) { widgetView.SetViewVisibility(Resource.Id.imageStart, Android.Views.ViewStates.Gone); widgetView.SetViewVisibility(Resource.Id.imageStop, Android.Views.ViewStates.Visible); } else { widgetView.SetViewVisibility(Resource.Id.imageStart, Android.Views.ViewStates.Visible); widgetView.SetViewVisibility(Resource.Id.imageStop, Android.Views.ViewStates.Gone); } } return(widgetView); }
public RemoteViews GetViewAt (int position) { var remoteView = new RemoteViews (context.PackageName, Resource.Layout.widget_list_item); var rowData = itemList [position]; // set if is running if (rowData.IsRunning) { remoteView.SetImageViewResource (Resource.Id.WidgetContinueImageButton, Resource.Drawable.IcWidgetStop); remoteView.SetViewVisibility (Resource.Id.DurationChronometer, Android.Views.ViewStates.Visible); remoteView.SetViewVisibility (Resource.Id.DurationTextView, Android.Views.ViewStates.Gone); } else { remoteView.SetImageViewResource (Resource.Id.WidgetContinueImageButton, Resource.Drawable.IcWidgetPlay); remoteView.SetViewVisibility (Resource.Id.DurationChronometer, Android.Views.ViewStates.Gone); remoteView.SetViewVisibility (Resource.Id.DurationTextView, Android.Views.ViewStates.Visible); } // set color remoteView.SetInt (Resource.Id.WidgetColorView, "setColorFilter", Color.ParseColor (rowData.Color)); remoteView.SetOnClickFillInIntent (Resource.Id.WidgetContinueImageButton, ConstructFillIntent (rowData)); // set content remoteView.SetTextViewText ( Resource.Id.DescriptionTextView, String.IsNullOrWhiteSpace (rowData.Description) ? context.Resources.GetString (Resource.String.RunningWidgetNoDescription) : rowData.Description); remoteView.SetTextViewText ( Resource.Id.ProjectTextView, String.IsNullOrWhiteSpace (rowData.ProjectName) ? context.Resources.GetString (Resource.String.RunningWidgetNoProject) : rowData.ProjectName); remoteView.SetTextViewText (Resource.Id.DurationTextView, rowData.TimeValue); var time = (long)rowData.Duration.TotalMilliseconds; // Format chronometer correctly. string format = "00:%s"; if (time >= 3600000 && time < 36000000) { format = "0%s"; } else if (time >= 36000000) { format = "%s"; } var baseTime = SystemClock.ElapsedRealtime (); remoteView.SetChronometer (Resource.Id.DurationChronometer, baseTime - (long)rowData.Duration.TotalMilliseconds, format, true); return remoteView; }
/// <summary> /// Update the notification. /// </summary> /// <param name="context"> /// The context. /// </param> /// <returns> /// The updated notification. /// </returns> public Notification UpdateNotification(Context context) { bool hasPausedText = this.PausedText != null; bool mustUpdate = this.lastHasPausedText != hasPausedText; // Build the RemoteView object if (expandedView == null) { expandedView = new RemoteViews(context.PackageName, Resource.Layout.status_bar_ongoing_event_progress_bar); expandedView.SetImageViewResource(Resource.Id.appIcon, this.Icon); expandedView.SetTextViewText(Resource.Id.paused_text, this.PausedText); expandedView.SetTextViewText(Resource.Id.title, this.Title); this.notification.ContentView = expandedView; mustUpdate = true; } if (mustUpdate) { expandedView.SetViewVisibility(Resource.Id.progress_bar_frame, hasPausedText ? ViewStates.Gone : ViewStates.Visible); expandedView.SetViewVisibility(Resource.Id.description, hasPausedText ? ViewStates.Gone : ViewStates.Visible); expandedView.SetViewVisibility(Resource.Id.time_remaining, hasPausedText ? ViewStates.Gone : ViewStates.Visible); expandedView.SetViewVisibility(Resource.Id.paused_text, hasPausedText ? ViewStates.Visible : ViewStates.Gone); } if (!hasPausedText) { expandedView.SetTextViewText(Resource.Id.progress_text, Helpers.GetDownloadProgressPercent(this.CurrentBytes, this.TotalBytes)); expandedView.SetTextViewText(Resource.Id.description, Helpers.GetDownloadProgressString(this.CurrentBytes, this.TotalBytes)); expandedView.SetProgressBar( Resource.Id.progress_bar, (int)(this.TotalBytes >> 8), (int)(this.CurrentBytes >> 8), this.TotalBytes <= 0); expandedView.SetTextViewText(Resource.Id.time_remaining, string.Format("Time remaining: {0}", Helpers.GetTimeRemaining(this.TimeRemaining))); } this.lastHasPausedText = hasPausedText; return(this.notification); }
public RemoteViews GetViewAt(int position) { var views = new RemoteViews(_applicationContext.PackageName, Resource.Layout.CalendarWidgetItem); var vm = _items[position]; var intent = new Intent(_applicationContext, typeof(MainActivity)); intent.PutExtra("launchArgs", $"https://myanimelist.net/anime/{vm.Id}"); views.SetOnClickFillInIntent(Resource.Id.Image, intent); if (ResourceLocator.AiringInfoProvider.TryGetCurrentEpisode(vm.Id, out int ep, DateTime.Today)) { views.SetTextViewText(Resource.Id.EpisodeCount, $"ep. {ep}"); views.SetViewVisibility(Resource.Id.EpisodeCount, ViewStates.Visible); }
protected virtual void UpdateWeatherPart(Context context, RemoteViews view, AppWidgetSettings settings, bool isDemoMode) { var weather = settings.Weather; var utcNow = DateTime.UtcNow; if (isDemoMode && weather == null) { var weatherDataPoint = new WeatherDataPoint { Date = utcNow, Temperature = 0, MinTemperature = -1, MaxTemperature = 1, WeatherCode = WeatherCodes.ClearSky, Condition = context.GetString(Resource.String.DemoCondition) }; weather = new WeatherForecast(providerId: settings.WeatherProviderId, latitude: null, longitude: null, units: AppSettings.Default.Units, languageCode: AppSettings.Default.Language, link: null, hasIcons: false) { Currently = weatherDataPoint, Daily = new[] { weatherDataPoint } }; } if (weather?.MaxPublishedDate == null) { return; } var actualUtcDate = utcNow > weather.MaxPublishedDate ? weather.MaxPublishedDate.Value : utcNow; var currently = weather.FindActualCurrentlyAsync(actualUtcDate).Result; if (currently == null) { return; } var temperature = string.Empty; using (var weatherTools = new WeatherTools { ProviderUnits = weather.Units, }) { var degree = weatherTools.DegreeString; if (currently.Temperature.HasValue) { temperature = weatherTools.ConvertTemperatureToString(currently.Temperature.Value, "{0:f0}{1}", degree); } SetTextFormatted(view, Resource.Id.txtTemp, temperature, weatherTools.IsTemperatureAlerted(currently.Temperature)); var minTempText = string.Empty; var maxTempText = string.Empty; var visibility = ViewStates.Gone; var minTemp = weatherTools .CalculateMinTemperatureAsync(actualUtcDate, weather, currently.MinTemperature).Result; var maxTemp = weatherTools .CalculateMaxTemperatureAsync(actualUtcDate, weather, currently.MaxTemperature).Result; if (minTemp.HasValue && maxTemp.HasValue) { minTempText = weatherTools.ConvertTemperatureToString(minTemp.Value, "{0:f0}{1}", degree); maxTempText = weatherTools.ConvertTemperatureToString(maxTemp.Value, "{0:f0}{1}", degree); visibility = ViewStates.Visible; } SetTextFormatted(view, Resource.Id.txtLow, minTempText, weatherTools.IsTemperatureAlerted(minTemp)); view.SetViewVisibility(Resource.Id.txtLowIndicator, visibility); SetTextFormatted(view, Resource.Id.txtHigh, maxTempText, weatherTools.IsTemperatureAlerted(maxTemp)); view.SetViewVisibility(Resource.Id.txtHighIndicator, visibility); var conditionIconId = weatherTools.GetConditionIconId(WidgetTypes.AppWidget, settings.WidgetIconStyle, currently, true, true); view.SetImageViewResource(Resource.Id.imgCondition, conditionIconId); //"Небольшой снегопад " SetTextFormatted(view, Resource.Id.txtCondition, (currently.Condition ?? string.Empty).Trim().ToCapital(), weatherTools.IsConditionExtreme(currently.WeatherCode)); } var locality = (settings.LocationAddress?.GetDisplayLocality() ?? string.Empty).Trim(); if (string.IsNullOrEmpty(locality) && isDemoMode) { locality = context.GetString(settings.UseTrackCurrentLocation ? Resource.String.CurrentLocationEmpty : Resource.String.DemoLocality); } view.SetTextViewText(Resource.Id.txtLocation, locality); }
private void ShowError(RemoteViews widgetView, ErrorType error) { switch (error) { case ErrorType.None: widgetView.SetViewVisibility(Resource.Id.MainLayout, ViewStates.Visible); widgetView.SetViewVisibility(Resource.Id.PlaceName, ViewStates.Visible); widgetView.SetViewVisibility(Resource.Id.Description, ViewStates.Visible); widgetView.SetViewVisibility(Resource.Id.ErrorConnection, ViewStates.Gone); break; case ErrorType.LocalizationError: widgetView.SetViewVisibility(Resource.Id.MainLayout, ViewStates.Gone); widgetView.SetViewVisibility(Resource.Id.PlaceName, ViewStates.Gone); widgetView.SetViewVisibility(Resource.Id.Description, ViewStates.Gone); widgetView.SetTextViewText(Resource.Id.ErrorConnection, Resources.Translations.GetMissingLocalizationPermissionsText()); widgetView.SetViewVisibility(Resource.Id.ErrorConnection, ViewStates.Visible); break; case ErrorType.InternetConnectionError: widgetView.SetViewVisibility(Resource.Id.MainLayout, ViewStates.Gone); widgetView.SetViewVisibility(Resource.Id.PlaceName, ViewStates.Gone); widgetView.SetViewVisibility(Resource.Id.Description, ViewStates.Gone); widgetView.SetTextViewText(Resource.Id.ErrorConnection, Resources.Translations.GetNoInternetConnectionText()); widgetView.SetViewVisibility(Resource.Id.ErrorConnection, ViewStates.Visible); break; } }
public static void UpdateNotification(Weather weather) { // Gets an instance of the NotificationManager service NotificationManager mNotifyMgr = (NotificationManager)App.Context.GetSystemService(App.NotificationService); InitChannel(mNotifyMgr); var wm = WeatherManager.GetInstance(); // Build update RemoteViews updateViews = new RemoteViews(App.Context.PackageName, Resource.Layout.notification_layout); string temp = (Settings.IsFahrenheit ? Math.Round(weather.condition.temp_f) : Math.Round(weather.condition.temp_c)) + "º"; string condition = weather.condition.weather; string hitemp = (Settings.IsFahrenheit ? Math.Round(double.Parse(weather.forecast[0].high_f)) : Math.Round(double.Parse(weather.forecast[0].high_c))) + "º"; string lotemp = (Settings.IsFahrenheit ? Math.Round(double.Parse(weather.forecast[0].low_f)) : Math.Round(double.Parse(weather.forecast[0].low_c))) + "º"; // Weather icon updateViews.SetImageViewResource(Resource.Id.weather_icon, wm.GetWeatherIconResource(weather.condition.icon)); // Location Name updateViews.SetTextViewText(Resource.Id.location_name, weather.location.name); // Condition text updateViews.SetTextViewText(Resource.Id.condition_weather, string.Format("{0} - {1}", temp, condition)); // Details updateViews.SetTextViewText(Resource.Id.condition_details, string.Format("{0} / {1}", hitemp, lotemp)); // Update Time string timeformat = DateTime.Now.ToString("h:mm tt"); if (DateFormat.Is24HourFormat(App.Context)) { timeformat = DateTime.Now.ToString("HH:mm"); } updateViews.SetTextViewText(Resource.Id.update_time, timeformat); // Progress bar updateViews.SetViewVisibility(Resource.Id.refresh_button, ViewStates.Visible); updateViews.SetViewVisibility(Resource.Id.refresh_progress, ViewStates.Gone); Intent refreshClickIntent = new Intent(App.Context, typeof(Widgets.WeatherWidgetBroadcastReceiver)) .SetAction(Widgets.WeatherWidgetService.ACTION_REFRESHNOTIFICATION); PendingIntent prgPendingIntent = PendingIntent.GetBroadcast(App.Context, 0, refreshClickIntent, 0); updateViews.SetOnClickPendingIntent(Resource.Id.refresh_button, prgPendingIntent); if (!int.TryParse(temp.Replace("º", ""), out int level)) { level = 0; } int resId = level < 0 ? Resource.Drawable.notification_temp_neg : Resource.Drawable.notification_temp_pos; NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(App.Context, NOT_CHANNEL_ID) .SetContent(updateViews) .SetPriority(NotificationCompat.PriorityLow) .SetOngoing(true) as NotificationCompat.Builder; if (Settings.NotificationIcon == Settings.TEMPERATURE_ICON) { mBuilder.SetSmallIcon(resId, Math.Abs(level)); } else if (Settings.NotificationIcon == Settings.CONDITION_ICON) { mBuilder.SetSmallIcon(wm.GetWeatherIconResource(weather.condition.icon)); } Intent onClickIntent = new Intent(App.Context, typeof(MainActivity)) .SetFlags(ActivityFlags.ClearTop | ActivityFlags.NewTask | ActivityFlags.ClearTask); PendingIntent clickPendingIntent = PendingIntent.GetActivity(App.Context, 0, onClickIntent, 0); mBuilder.SetContentIntent(clickPendingIntent); // Builds the notification and issues it. mNotification = mBuilder.Build(); mNotifyMgr.Notify(PERSISTENT_NOT_ID, mNotification); IsShowing = true; }
private Notification BuildNotification() { _notificationBuilder = new NotificationCompat.Builder(ApplicationContext); _notificationBuilder.SetOngoing(true); _notificationBuilder.SetAutoCancel(false); _notificationBuilder.SetSmallIcon(Resource.Drawable.NotifIcon); //Open up the player screen when the user taps on the notification. var launchNowPlayingIntent = new Intent(); launchNowPlayingIntent.SetAction(LaunchNowPlayingAction); var launchNowPlayingPendingIntent = PendingIntent.GetBroadcast(ApplicationContext, 0, launchNowPlayingIntent, 0); _notificationBuilder.SetContentIntent(launchNowPlayingPendingIntent); //Grab the notification layouts. var notificationView = new RemoteViews(ApplicationContext.PackageName, Resource.Layout.notification_custom_layout); var expNotificationView = new RemoteViews(ApplicationContext.PackageName, Resource.Layout.notification_custom_expanded_layout); //Initialize the notification layout buttons. var previousTrackIntent = new Intent(); previousTrackIntent.SetAction(PrevAction); var previousTrackPendingIntent = PendingIntent.GetBroadcast(ApplicationContext, 0, previousTrackIntent, 0); var playPauseTrackIntent = new Intent(); playPauseTrackIntent.SetAction(PlayPauseAction); var playPauseTrackPendingIntent = PendingIntent.GetBroadcast(ApplicationContext, 0, playPauseTrackIntent, 0); var nextTrackIntent = new Intent(); nextTrackIntent.SetAction(NextAction); var nextTrackPendingIntent = PendingIntent.GetBroadcast(ApplicationContext, 0, nextTrackIntent, 0); var stopServiceIntent = new Intent(); stopServiceIntent.SetAction(StopAction); var stopServicePendingIntent = PendingIntent.GetBroadcast(ApplicationContext, 0, stopServiceIntent, 0); //Check if audio is playing and set the appropriate play/pause button. if (App.Current.AudioServiceConnection.GetPlaybackService().IsPlayingMusic) { notificationView.SetImageViewResource(Resource.Id.notification_base_play, Resource.Drawable.btn_playback_pause_light); expNotificationView.SetImageViewResource(Resource.Id.notification_expanded_base_play, Resource.Drawable.btn_playback_pause_light); } else { notificationView.SetImageViewResource(Resource.Id.notification_base_play, Resource.Drawable.btn_playback_play_light); expNotificationView.SetImageViewResource(Resource.Id.notification_expanded_base_play, Resource.Drawable.btn_playback_play_light); } var song = AudioPlayerHelper.CurrentQueueSong.Song; //Set the notification content. expNotificationView.SetTextViewText(Resource.Id.notification_expanded_base_line_one, song.Name); expNotificationView.SetTextViewText(Resource.Id.notification_expanded_base_line_two, song.ArtistName); expNotificationView.SetTextViewText(Resource.Id.notification_expanded_base_line_three, song.Album.Name); notificationView.SetTextViewText(Resource.Id.notification_base_line_one, song.Name); notificationView.SetTextViewText(Resource.Id.notification_base_line_two, song.ArtistName); //the previous and next buttons, always enabled. expNotificationView.SetViewVisibility(Resource.Id.notification_expanded_base_previous, ViewStates.Visible); expNotificationView.SetViewVisibility(Resource.Id.notification_expanded_base_next, ViewStates.Visible); expNotificationView.SetOnClickPendingIntent(Resource.Id.notification_expanded_base_play, playPauseTrackPendingIntent); expNotificationView.SetOnClickPendingIntent(Resource.Id.notification_expanded_base_next, nextTrackPendingIntent); expNotificationView.SetOnClickPendingIntent(Resource.Id.notification_expanded_base_previous, previousTrackPendingIntent); notificationView.SetViewVisibility(Resource.Id.notification_base_previous, ViewStates.Visible); notificationView.SetViewVisibility(Resource.Id.notification_base_next, ViewStates.Visible); notificationView.SetOnClickPendingIntent(Resource.Id.notification_base_play, playPauseTrackPendingIntent); notificationView.SetOnClickPendingIntent(Resource.Id.notification_base_next, nextTrackPendingIntent); notificationView.SetOnClickPendingIntent(Resource.Id.notification_base_previous, previousTrackPendingIntent); //Set the "Stop Service" pending intents. expNotificationView.SetOnClickPendingIntent(Resource.Id.notification_expanded_base_collapse, stopServicePendingIntent); notificationView.SetOnClickPendingIntent(Resource.Id.notification_base_collapse, stopServicePendingIntent); //Set the album art. if (song.Album.Artwork != null) { if (song.Album.Artwork.Image != null) { expNotificationView.SetImageViewBitmap(Resource.Id.notification_expanded_base_image, song.Album.Artwork.Image as Bitmap); notificationView.SetImageViewBitmap(Resource.Id.notification_base_image, song.Album.Artwork.Image as Bitmap); } else { ((PclBitmapImage)song.Album.Artwork).PropertyChanged += OnPropertyChanged; } } else { song.Album.PropertyChanged += OnPropertyChanged; } //Attach the shrunken layout to the notification. _notificationBuilder.SetContent(notificationView); //Build the notification object. var notification = _notificationBuilder.Build(); //Attach the expanded layout to the notification and set its flags. notification.BigContentView = expNotificationView; notification.Flags = NotificationFlags.ForegroundService | NotificationFlags.NoClear | NotificationFlags.OngoingEvent; return(notification); }
protected override async void OnHandleIntent(Intent intent) { var manager = AppWidgetManager.GetInstance(this); int[] allWidgetIds = intent .GetIntArrayExtra(AppWidgetManager.ExtraAppwidgetIds); var layoutId = intent.GetIntExtra("ResourceId", Resource.Layout.CalendarWidgetLight); _views = new List <Tuple <RemoteViews, int> >(); try { ResourceLocator.RegisterBase(); ResourceLocator.RegisterAppDataServiceAdapter(new ApplicationDataServiceService()); ResourceLocator.RegisterPasswordVaultAdapter(new PasswordVaultProvider()); ResourceLocator.RegisterMessageDialogAdapter(new MessageDialogProvider()); ResourceLocator.RegisterDataCacheAdapter(new Adapters.DataCache(null)); Credentials.Init(); } catch (Exception e) { } bool running = ResourceLocator.AnimeLibraryDataStorage.AllLoadedAuthAnimeItems?.Any() ?? false; foreach (var widgetId in allWidgetIds) { var view = new RemoteViews(PackageName, layoutId); _views.Add(new Tuple <RemoteViews, int>(view, widgetId)); view.SetViewVisibility(Resource.Id.LoadingSpinner, ViewStates.Visible); view.SetViewVisibility(Resource.Id.EmptyNotice, ViewStates.Gone); //view.SetViewVisibility(Resource.Id.RefreshButton, ViewStates.Gone); view.SetViewVisibility(Resource.Id.GridView, ViewStates.Gone); manager.UpdateAppWidget(widgetId, view); } CalendarPivotPage shows = null; try { if (Credentials.Authenticated) { if (!running) { await ResourceLocator.AiringInfoProvider.Init(false); ViewModelLocator.AnimeList.ListSource = Credentials.UserName; await ViewModelLocator.AnimeList.FetchData(true, AnimeListWorkModes.Anime); } if (ResourceLocator.AiringInfoProvider.InitializationSuccess && (ResourceLocator.AnimeLibraryDataStorage.AllLoadedAuthAnimeItems?.Any() ?? false)) { await ViewModelLocator.CalendarPage.Init(true); shows = ViewModelLocator.CalendarPage.CalendarData.FirstOrDefault( page => page.DayOfWeek == DateTime.Now.DayOfWeek); } } } catch (Exception e) { //we have failed very very badly } await Task.Delay(1000); // give visual feedback if (shows != null && shows.Items.Any()) { foreach (var view in _views) { view.Item1.SetViewVisibility(Resource.Id.LoadingSpinner, ViewStates.Gone); view.Item1.SetViewVisibility(Resource.Id.EmptyNotice, ViewStates.Gone); view.Item1.SetViewVisibility(Resource.Id.GridView, ViewStates.Visible); view.Item1.SetRemoteAdapter(Resource.Id.GridView, new Intent(ApplicationContext, typeof(CalendarWidgetRemoteViewsService))); var intentTemplate = new Intent(ApplicationContext, typeof(MainActivity)); view.Item1.SetPendingIntentTemplate(Resource.Id.GridView, PendingIntent.GetActivity(ApplicationContext, 0, intentTemplate, 0)); var refreshIntent = new Intent(ApplicationContext, typeof(CalendarWidgetUpdateService)); refreshIntent.PutExtra(AppWidgetManager.ExtraAppwidgetIds, new[] { view.Item2 }); refreshIntent.PutExtra("ResourceId", layoutId); view.Item1.SetOnClickPendingIntent(Resource.Id.RefreshButton, PendingIntent.GetService(ApplicationContext, 0, refreshIntent, 0)); var preferences = PreferenceManager.GetDefaultSharedPreferences(ApplicationContext); var ids = preferences.GetStringSet("lastWidgetItems", new List <string>()).Select(int.Parse).ToList(); if (!ids.OrderBy(i => i).SequenceEqual(shows.Items.Select(model => model.Id).OrderBy(i => i))) { manager.NotifyAppWidgetViewDataChanged(view.Item2, Resource.Id.GridView); var edit = preferences.Edit(); edit.PutStringSet("lastWidgetItems", shows.Items.Select(model => model.Id.ToString()).ToList()); edit.Commit(); } manager.UpdateAppWidget(view.Item2, view.Item1); } } else { foreach (var view in _views) { view.Item1.SetViewVisibility(Resource.Id.LoadingSpinner, ViewStates.Gone); view.Item1.SetViewVisibility(Resource.Id.EmptyNotice, ViewStates.Visible); view.Item1.SetViewVisibility(Resource.Id.GridView, ViewStates.Gone); var refreshIntent = new Intent(ApplicationContext, typeof(CalendarWidgetUpdateService)); refreshIntent.PutExtra(AppWidgetManager.ExtraAppwidgetIds, new[] { view.Item2 }); refreshIntent.PutExtra("ResourceId", layoutId); view.Item1.SetOnClickPendingIntent(Resource.Id.RefreshButton, PendingIntent.GetService(ApplicationContext, 0, refreshIntent, 0)); manager.UpdateAppWidget(view.Item2, view.Item1); } } await Task.Delay(6000); //let the widget update in peace... }
private void UpdateNowPlayingNotification() { Application.SynchronizationContext.Post(_ => { try { if (isNotifyPlayerActive) { var nm = GetNotifyManager(); var remoteViewExp = new RemoteViews(PackageName, Resource.Layout.layout_notifi_player_exp); remoteViewExp.SetImageViewResource(Resource.Id.ibNotifiAction3, netStatus.StatusPlay == CmdHelper.NetStatus.Status.PAUSE ? Resource.Drawable.play_100_black : Resource.Drawable.pause_100_black); Intent itAction = new Intent(BROAD_NOTIFY_PLAYER); itAction.PutExtra("ACT", 0); PendingIntent piAction = PendingIntent.GetBroadcast(this, IntentHelper.GetId(), itAction, 0); remoteViewExp.SetOnClickPendingIntent(Resource.Id.ibNotifiAction1, piAction); itAction = new Intent(BROAD_NOTIFY_PLAYER); itAction.PutExtra("ACT", 1); piAction = PendingIntent.GetBroadcast(this, IntentHelper.GetId(), itAction, 0); remoteViewExp.SetOnClickPendingIntent(Resource.Id.ibNotifiAction2, piAction); itAction = new Intent(BROAD_NOTIFY_PLAYER); itAction.PutExtra("ACT", 2); piAction = PendingIntent.GetBroadcast(this, IntentHelper.GetId(), itAction, 0); remoteViewExp.SetOnClickPendingIntent(Resource.Id.ibNotifiAction3, piAction); itAction = new Intent(BROAD_NOTIFY_PLAYER); itAction.PutExtra("ACT", 3); piAction = PendingIntent.GetBroadcast(this, IntentHelper.GetId(), itAction, 0); remoteViewExp.SetOnClickPendingIntent(Resource.Id.ibNotifiAction4, piAction); var titleName = netTitleName?.TitleName; var artistName = netArtistName?.ArtistName; if (cmdInputState?.Parameter == "2E") { artistName = netTitleName?.TitleName; titleName = "Bluetooth"; } if (titleName != null) { remoteViewExp.SetTextViewText(Resource.Id.tvNotifiTitle1, titleName); remoteViewExp.SetViewVisibility(Resource.Id.tvNotifiTitle1, ViewStates.Visible); } if (artistName != null) { remoteViewExp.SetTextViewText(Resource.Id.tvNotifiTitle2, artistName); remoteViewExp.SetViewVisibility(Resource.Id.tvNotifiTitle2, ViewStates.Visible); } if (netAlbumName?.AlbumName != null) { remoteViewExp.SetTextViewText(Resource.Id.tvNotifiTitle3, netAlbumName.AlbumName); remoteViewExp.SetViewVisibility(Resource.Id.tvNotifiTitle3, ViewStates.Visible); } if (netArt?.bmArt != null) { remoteViewExp.SetImageViewBitmap(Resource.Id.ivNotifiCover, netArt.bmArt); remoteViewExp.SetViewVisibility(Resource.Id.ivNotifiCover, ViewStates.Visible); } else { remoteViewExp.SetImageViewResource(Resource.Id.ivNotifiCover, Resource.Drawable.app_icon); remoteViewExp.SetViewVisibility(Resource.Id.ivNotifiCover, ViewStates.Visible); } NotificationCompat.Builder nb = new NotificationCompat.Builder(ApplicationContext); Intent intent = new Intent(this, typeof(HomeActivity)); intent.PutExtra(INTENT_HOME_TAB, 0); intent.AddFlags(ActivityFlags.ClearTop); intent.AddFlags(ActivityFlags.SingleTop); PendingIntent pendingIntent = PendingIntent.GetActivity(this, IntentHelper.GetId(), intent, 0); nb.SetContentIntent(pendingIntent); nb.SetCustomBigContentView(remoteViewExp); var x = remoteViewExp.Clone(); x.SetViewVisibility(Resource.Id.llNotifyExp, ViewStates.Gone); nb.SetCustomContentView(x); nb.SetSmallIcon(Resource.Drawable.av_receiver_100_black); nb.SetOngoing(true); nm.Notify(notifyIdPlayer, nb.Build()); } } catch (Exception e) { Console.WriteLine(e); } }, null); }
private void SetupRunningBtn (Context ctx, RemoteViews views) { var entry = new WidgetSyncManager.WidgetEntryData(); var isRunning = false; // Check if an entry is running. foreach (var item in UpdateService.LastEntries) if (item.IsRunning) { entry = item; isRunning = true; } var baseTime = SystemClock.ElapsedRealtime (); if (isRunning) { views.SetInt (Resource.Id.WidgetActionButton, "setBackgroundColor", ctx.Resources.GetColor (Resource.Color.bright_red)); views.SetInt (Resource.Id.WidgetActionButton, "setText", Resource.String.TimerStopButtonText); views.SetInt (Resource.Id.WidgetColorView, "setColorFilter", Color.ParseColor (entry.Color)); views.SetViewVisibility (Resource.Id.WidgetRunningEntry, ViewStates.Visible); views.SetTextViewText ( Resource.Id.WidgetRunningDescriptionTextView, String.IsNullOrWhiteSpace (entry.Description) ? ctx.Resources.GetString (Resource.String.RunningWidgetNoDescription) : entry.Description); var time = (long)entry.Duration.TotalMilliseconds; // Format chronometer correctly. string format = "00:%s"; if (time >= 3600000 && time < 36000000) { format = "0%s"; } else if (time >= 36000000) { format = "%s"; } views.SetChronometer (Resource.Id.Chronometer, baseTime - (long)entry.Duration.TotalMilliseconds, format, true); } else { views.SetInt (Resource.Id.WidgetActionButton, "setBackgroundColor", ctx.Resources.GetColor (Resource.Color.bright_green)); views.SetInt (Resource.Id.WidgetActionButton, "setText", Resource.String.TimerStartButtonText); views.SetViewVisibility (Resource.Id.WidgetRunningEntry, ViewStates.Invisible); views.SetChronometer (Resource.Id.Chronometer, baseTime, "00:%s", false); views.SetTextViewText (Resource.Id.Chronometer, "00:00:00"); } }
public static void Update(Context context, NextAlarm nextAlarm, int[] appWidgetIds = null) { AppWidgetManager appWidgetManager = AppWidgetManager.GetInstance(context); ComponentName thisWidget = new ComponentName(context, Class.FromType(typeof(Widget)).Name); if (appWidgetIds == null) { appWidgetIds = appWidgetManager.GetAppWidgetIds(thisWidget); } var prefs = PrefsKeys.GetPrefs(context); foreach (var appWidgetId in appWidgetIds) { var timeOffset = prefs.GetInt(PrefsKeys.TimeOffset + appWidgetId, 0); nextAlarm.RefreshDisplay(context, timeOffset); RemoteViews updateViews = new RemoteViews(context.PackageName, Resource.Layout.widget); var useTodDom = prefs.GetBoolean(PrefsKeys.DateUseTodTom + appWidgetId, true); if (useTodDom) { updateViews.SetTextViewText(Resource.Id.alarm_date, nextAlarm.DayAbbreviated); } else { updateViews.SetTextViewText(Resource.Id.alarm_date, nextAlarm.Day); } if (nextAlarm.Time.Length > 5) { updateViews.SetTextViewText(Resource.Id.alarm_time_12, nextAlarm.Time); updateViews.SetViewVisibility(Resource.Id.alarm_time_12, ViewStates.Visible); updateViews.SetViewVisibility(Resource.Id.alarm_time_24, ViewStates.Gone); } else { updateViews.SetTextViewText(Resource.Id.alarm_time_24, nextAlarm.Time); updateViews.SetViewVisibility(Resource.Id.alarm_time_24, ViewStates.Visible); updateViews.SetViewVisibility(Resource.Id.alarm_time_12, ViewStates.Gone); } var dateColor = new Color(prefs.GetInt(PrefsKeys.DateColor + appWidgetId, context.GetCompatColor(Resource.Color.date))); updateViews.SetTextColor(Resource.Id.alarm_date, dateColor); var dateTextSize = prefs.GetInt(PrefsKeys.DateTextSize + appWidgetId, -1); if (dateTextSize != -1) { updateViews.SetTextViewTextSize(Resource.Id.alarm_date, (int)ComplexUnitType.Dip, dateTextSize); } var timeColor = new Color(prefs.GetInt(PrefsKeys.TimeColor + appWidgetId, context.GetCompatColor(Resource.Color.time))); updateViews.SetTextColor(Resource.Id.alarm_time_24, timeColor); updateViews.SetTextColor(Resource.Id.alarm_time_12, timeColor); var timeTextSize = prefs.GetInt(PrefsKeys.TimeTextSize + appWidgetId, -1); if (timeTextSize != -1) { updateViews.SetTextViewTextSize(Resource.Id.alarm_time_24, (int)ComplexUnitType.Dip, timeTextSize); updateViews.SetTextViewTextSize(Resource.Id.alarm_time_12, (int)ComplexUnitType.Dip, timeTextSize); } var iconColor = new Color(prefs.GetInt(PrefsKeys.IconColor + appWidgetId, context.GetCompatColor(Resource.Color.icon))); Bitmap sourceBitmap = BitmapFactory.DecodeResource(context.Resources, Resource.Drawable.ic_alarm_white_18dp); Bitmap resultBitmap = Bitmap.CreateBitmap(sourceBitmap.Width, sourceBitmap.Height, Bitmap.Config.Argb8888); Paint p = new Paint(); float[] matrix = { 0, 0, 0, iconColor.R / 255f, 0, 0, 0, 0, iconColor.G / 255f, 0, 0, 0, 0, iconColor.B / 255f, 0, 0, 0, 0, iconColor.A / 255f, 0 }; ColorFilter filter = new ColorMatrixColorFilter(matrix); p.SetColorFilter(filter); Canvas canvas = new Canvas(resultBitmap); canvas.DrawBitmap(sourceBitmap, 0, 0, p); updateViews.SetImageViewBitmap(Resource.Id.alarm_icon, resultBitmap); var backgroundColor = new Color(prefs.GetInt(PrefsKeys.BackgroundColor + appWidgetId, context.GetCompatColor(Resource.Color.background))); updateViews.SetInt(Resource.Id.background, "setColorFilter", backgroundColor.ToArgb()); updateViews.SetInt(Resource.Id.background, "setAlpha", backgroundColor.A); updateViews.SetOnClickPendingIntent(Resource.Id.widget_root, nextAlarm.RelayIntent); appWidgetManager.UpdateAppWidget(appWidgetId, updateViews); } ScheduleMidnightUpdate(context); }
private void SetView(Context context, int appWidgetId, RemoteViews widgetView, WidgetLargeAltParams widgetLargeAltParams) { if (!widgetLargeAltParams.IsRefreshing) { Realm realm = Realm.GetInstance(DB.RealmConfiguration); // Bind the RemoteViewsService (adapter) for the Chapters list Intent intent = new Intent(context, typeof(RemoteChapterAdapter)); intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); intent.PutExtra(RemoteChapterAdapter.ExtraBookId, widgetLargeAltParams.Book); intent.PutExtra(RemoteChapterAdapter.ExtraSortOrder, widgetLargeAltParams.Descending); intent.SetData(Uri.Parse(intent.ToUri(IntentUriType.Scheme))); widgetView.SetRemoteAdapter(Resource.Id.list_chapters, intent); // Set Chapter list click intent template Intent chapterClickIntentTemplate = new Intent(Intent.ActionView); PendingIntent chapterClickPendingIntentTemplate = TaskStackBuilder.Create(context) .AddNextIntentWithParentStack(chapterClickIntentTemplate) .GetPendingIntent(appWidgetId, PendingIntentFlags.UpdateCurrent); widgetView.SetPendingIntentTemplate(Resource.Id.list_chapters, chapterClickPendingIntentTemplate); // Bind the click intent for the refresh button on the widget Intent refreshIntent = new Intent(context, typeof(WidgetLargeAlt)); refreshIntent.SetAction(RefreshClick); refreshIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent refreshPendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, refreshIntent, PendingIntentFlags.UpdateCurrent); widgetView.SetOnClickPendingIntent(Resource.Id.btn_refresh, refreshPendingIntent); realm.Dispose(); } if (widgetLargeAltParams.OpenMenu) { widgetView.SetViewVisibility(Resource.Id.menu, Android.Views.ViewStates.Visible); // Bind the click intent for the reverse button on the widget Intent CloseIntent = new Intent(context, typeof(WidgetLargeAlt)); CloseIntent.SetAction(MenuOutsideClick); CloseIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent closePendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, CloseIntent, PendingIntentFlags.UpdateCurrent); widgetView.SetOnClickPendingIntent(Resource.Id.menu_outside, closePendingIntent); if (!widgetLargeAltParams.IsRefreshing) { // Bind the RemoteViewsService (adapter) for the Book list Intent intent = new Intent(context, typeof(RemoteBookAdapter)); intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); intent.PutExtra(RemoteBookAdapter.ExtraBookId, widgetLargeAltParams.Book); intent.SetData(Uri.Parse(intent.ToUri(IntentUriType.Scheme))); widgetView.SetRemoteAdapter(Resource.Id.list_books, intent); // Set Book list click intent template Intent bookClickIntentTemplate = new Intent(context, typeof(WidgetLargeAlt)); PendingIntent bookClickPendingIntentTemplate = PendingIntent.GetBroadcast(context, appWidgetId, bookClickIntentTemplate, PendingIntentFlags.UpdateCurrent); widgetView.SetPendingIntentTemplate(Resource.Id.list_books, bookClickPendingIntentTemplate); } } else { widgetView.SetViewVisibility(Resource.Id.menu, Android.Views.ViewStates.Invisible); } // Bind the click intent for the menu button on the widget Intent menuIntent = new Intent(context, typeof(WidgetLargeAlt)); menuIntent.SetAction(MenuClick); menuIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent menuPendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, menuIntent, PendingIntentFlags.UpdateCurrent); widgetView.SetOnClickPendingIntent(Resource.Id.btn_menu, menuPendingIntent); // Bind the click intent for the reverse button on the widget Intent reverseIntent = new Intent(context, typeof(WidgetLargeAlt)); reverseIntent.SetAction(ReverseClick); reverseIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); PendingIntent reversePendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, reverseIntent, PendingIntentFlags.UpdateCurrent); widgetView.SetOnClickPendingIntent(Resource.Id.btn_reverse, reversePendingIntent); }
// Build a widget update to show the current Wiktionary // "Word of the day." Will block until the online API returns. public RemoteViews BuildUpdate(Context context) { // var entry = WordEntry.GetWordOfTheDay(); // Build an update that holds the updated widget contents var updateViews = new RemoteViews(context.PackageName, Resource.Layout.taskwidget); try { var launchAppIntent = new Intent(this, typeof (MainActivity)); launchAppIntent.AddFlags(ActivityFlags.SingleTop); launchAppIntent.AddFlags(ActivityFlags.ClearTop); launchAppIntent.PutExtra("CameFromWidget", true); var pendingIntent = PendingIntent.GetActivity(context, 0, launchAppIntent, 0); updateViews.SetOnClickPendingIntent(Resource.Id.widget_top_action_bar, pendingIntent); var launchAppIntent2 = new Intent(this, typeof(MainActivity)); launchAppIntent2.AddFlags(ActivityFlags.SingleTop); launchAppIntent2.AddFlags(ActivityFlags.ClearTop); var pendingIntent2 = PendingIntent.GetActivity(context, 0, launchAppIntent, 0); updateViews.SetOnClickPendingIntent(Resource.Id.widget_main_area, pendingIntent2); var newTasks = new List<string>(); var newTasksChecked = new List<bool>(); var lineVisibility = new List<ViewStates>(); for(int i = 0; i < 15; i++) { newTasks.Add(string.Empty); newTasksChecked.Add(false); lineVisibility.Add(ViewStates.Gone); } var tasks = DataManager.GetTasks(SortOption.Newest); var count = tasks.Count(); count = count > m_TextViews.Length ? m_TextViews.Length : count; for (int i = 0; i < count; i++) { var task = tasks.ElementAt(i); newTasks[i] = task.Task; newTasksChecked[i] = task.Checked; if (i != 0) lineVisibility[i - 1] = ViewStates.Visible; } if (newTasks[0] == string.Empty) newTasks[0] = "No Tasks Added."; for(int i = 0; i < m_TextViews.Length; i++) { updateViews.SetTextViewText(m_TextViews[i], newTasks[i]); updateViews.SetTextColor(m_TextViews[i], newTasksChecked[i] ? Android.Graphics.Color.DarkGray : Android.Graphics.Color.Black ); } for(int i = 0; i < m_TextViewsLines.Length; i++) updateViews.SetViewVisibility(m_TextViewsLines[i], lineVisibility[i]); } catch (Exception ex) { updateViews.SetTextViewText(Resource.Id.widget_task_1, "Error loading widget"); } return updateViews; }
private Notification BuildNotification() { _notificationBuilder = new NotificationCompat.Builder(ApplicationContext); _notificationBuilder.SetOngoing(true); _notificationBuilder.SetAutoCancel(false); _notificationBuilder.SetSmallIcon(Resource.Drawable.NotifIcon); //Open up the player screen when the user taps on the notification. var launchNowPlayingIntent = new Intent(); launchNowPlayingIntent.SetAction(LaunchNowPlayingAction); var launchNowPlayingPendingIntent = PendingIntent.GetBroadcast(ApplicationContext, 0, launchNowPlayingIntent, 0); _notificationBuilder.SetContentIntent(launchNowPlayingPendingIntent); //Grab the notification layouts. var notificationView = new RemoteViews(ApplicationContext.PackageName, Resource.Layout.notification_custom_layout); var expNotificationView = new RemoteViews(ApplicationContext.PackageName, Resource.Layout.notification_custom_expanded_layout); //Initialize the notification layout buttons. var previousTrackIntent = new Intent(); previousTrackIntent.SetAction(PrevAction); var previousTrackPendingIntent = PendingIntent.GetBroadcast(ApplicationContext, 0, previousTrackIntent, 0); var playPauseTrackIntent = new Intent(); playPauseTrackIntent.SetAction(PlayPauseAction); var playPauseTrackPendingIntent = PendingIntent.GetBroadcast(ApplicationContext, 0, playPauseTrackIntent, 0); var nextTrackIntent = new Intent(); nextTrackIntent.SetAction(NextAction); var nextTrackPendingIntent = PendingIntent.GetBroadcast(ApplicationContext, 0, nextTrackIntent, 0); var stopServiceIntent = new Intent(); stopServiceIntent.SetAction(StopAction); var stopServicePendingIntent = PendingIntent.GetBroadcast(ApplicationContext, 0, stopServiceIntent, 0); //Check if audio is playing and set the appropriate play/pause button. if (App.Current.AudioServiceConnection.GetPlaybackService().IsPlayingMusic) { notificationView.SetImageViewResource(Resource.Id.notification_base_play, Resource.Drawable.btn_playback_pause_light); expNotificationView.SetImageViewResource(Resource.Id.notification_expanded_base_play, Resource.Drawable.btn_playback_pause_light); } else { notificationView.SetImageViewResource(Resource.Id.notification_base_play, Resource.Drawable.btn_playback_play_light); expNotificationView.SetImageViewResource(Resource.Id.notification_expanded_base_play, Resource.Drawable.btn_playback_play_light); } var song = AudioPlayerHelper.CurrentQueueSong.Song; //Set the notification content. expNotificationView.SetTextViewText(Resource.Id.notification_expanded_base_line_one, song.Name); expNotificationView.SetTextViewText(Resource.Id.notification_expanded_base_line_two, song.ArtistName); expNotificationView.SetTextViewText(Resource.Id.notification_expanded_base_line_three, song.Album.Name); notificationView.SetTextViewText(Resource.Id.notification_base_line_one, song.Name); notificationView.SetTextViewText(Resource.Id.notification_base_line_two, song.ArtistName); //the previous and next buttons, always enabled. expNotificationView.SetViewVisibility(Resource.Id.notification_expanded_base_previous, ViewStates.Visible); expNotificationView.SetViewVisibility(Resource.Id.notification_expanded_base_next, ViewStates.Visible); expNotificationView.SetOnClickPendingIntent(Resource.Id.notification_expanded_base_play, playPauseTrackPendingIntent); expNotificationView.SetOnClickPendingIntent(Resource.Id.notification_expanded_base_next, nextTrackPendingIntent); expNotificationView.SetOnClickPendingIntent(Resource.Id.notification_expanded_base_previous, previousTrackPendingIntent); notificationView.SetViewVisibility(Resource.Id.notification_base_previous, ViewStates.Visible); notificationView.SetViewVisibility(Resource.Id.notification_base_next, ViewStates.Visible); notificationView.SetOnClickPendingIntent(Resource.Id.notification_base_play, playPauseTrackPendingIntent); notificationView.SetOnClickPendingIntent(Resource.Id.notification_base_next, nextTrackPendingIntent); notificationView.SetOnClickPendingIntent(Resource.Id.notification_base_previous, previousTrackPendingIntent); //Set the "Stop Service" pending intents. expNotificationView.SetOnClickPendingIntent(Resource.Id.notification_expanded_base_collapse, stopServicePendingIntent); notificationView.SetOnClickPendingIntent(Resource.Id.notification_base_collapse, stopServicePendingIntent); //Set the album art. if (song.Album.Artwork != null) { if (song.Album.Artwork.Image != null) { expNotificationView.SetImageViewBitmap(Resource.Id.notification_expanded_base_image, song.Album.Artwork.Image as Bitmap); notificationView.SetImageViewBitmap(Resource.Id.notification_base_image, song.Album.Artwork.Image as Bitmap); } else ((PclBitmapImage) song.Album.Artwork).PropertyChanged += OnPropertyChanged; } else song.Album.PropertyChanged += OnPropertyChanged; //Attach the shrunken layout to the notification. _notificationBuilder.SetContent(notificationView); //Build the notification object. var notification = _notificationBuilder.Build(); //Attach the expanded layout to the notification and set its flags. notification.BigContentView = expNotificationView; notification.Flags = NotificationFlags.ForegroundService | NotificationFlags.NoClear | NotificationFlags.OngoingEvent; return notification; }
public override RemoteViews Setup(Context context, TimeEntryWidgetInfo widgetInfo) { var view = new RemoteViews(context.PackageName, Resource.Layout.TimeEntryWidget); SetupActionsForStartAndStopButtons(context, view); view.SetOnClickPendingIntent(Resource.Id.RootLayout, getOpenAppToLoginPendingIntent(context)); if (widgetInfo.IsRunning) { view.SetViewVisibility(Resource.Id.StartButton, Gone); view.SetViewVisibility(Resource.Id.StopButton, Visible); var duration = (DateTimeOffset.Now - widgetInfo.StartTime).TotalMilliseconds; view.SetChronometer(Resource.Id.DurationTextView, SystemClock.ElapsedRealtime() - (long)duration, "%s", true); if (string.IsNullOrEmpty(widgetInfo.Description)) { view.SetTextViewText(Resource.Id.DescriptionTextView, Resources.NoDescription); view.SetTextColor(Resource.Id.DescriptionTextView, context.SafeGetColor(Resource.Color.secondaryText)); } else { view.SetTextViewText(Resource.Id.DescriptionTextView, widgetInfo.Description); view.SetTextColor(Resource.Id.DescriptionTextView, context.SafeGetColor(Resource.Color.primaryText)); } view.SetViewVisibility(Resource.Id.DotView, widgetInfo.HasProject.ToVisibility()); view.SetViewVisibility(Resource.Id.ProjectTextView, widgetInfo.HasProject.ToVisibility()); if (widgetInfo.HasProject) { // Project var projectColor = widgetInfo.ProjectColor != null ? Color.ParseColor(widgetInfo.ProjectColor) : Color.Black; view.SetInt(Resource.Id.DotView, "setBackgroundColor", projectColor); view.SetTextViewText(Resource.Id.ProjectTextView, widgetInfo.ProjectName ?? ""); view.SetTextColor(Resource.Id.ProjectTextView, projectColor); // Client view.SetViewVisibility(Resource.Id.ClientTextView, widgetInfo.HasClient.ToVisibility()); if (widgetInfo.HasClient) view.SetTextViewText(Resource.Id.ClientTextView, widgetInfo.ClientName); } } else { view.SetViewVisibility(Resource.Id.StartButton, Visible); view.SetViewVisibility(Resource.Id.StopButton, Gone); view.SetChronometer(Resource.Id.DurationTextView, SystemClock.ElapsedRealtime(), "%s", false); view.SetTextViewText(Resource.Id.DescriptionTextView, Resources.NoDescription); view.SetTextColor(Resource.Id.DescriptionTextView, context.SafeGetColor(Resource.Color.secondaryText)); view.SetViewVisibility(Resource.Id.DotView, false.ToVisibility()); view.SetViewVisibility(Resource.Id.ProjectTextView, false.ToVisibility()); view.SetViewVisibility(Resource.Id.ClientTextView, false.ToVisibility()); } return view; }
private void SetTextViewText(RemoteViews widgetView) { // if (listTeamName.Count==0) // { // team1 = "1"; // team1points = "2"; // } // else // { // //team1 = listTeamName[0]; // //team1points = listTeamPoints[0]; // team1 = "3"; // team1points = "4"; // } //team2 = MainActivity.listTeamName[1]; //team2points = MainActivity.listTeamPoints[1]; //team3 = MainActivity.listTeamName[2]; //team3points = MainActivity.listTeamPoints[2]; //team4 = MainActivity.listTeamName[3]; //team4points = MainActivity.listTeamPoints[3]; //team5 = MainActivity.listTeamName[4]; //team5points = MainActivity.listTeamPoints[4]; ////Typeface tf = Typeface.CreateFromAsset(Context, "epl.ttf"); //widgetView.SetTextViewText(Resource.Id.widget_team1, string.Format(team1)); //widgetView.SetTextViewText(Resource.Id.widget_team1points, string.Format(team1points)); //widgetView.SetTextViewText(Resource.Id.widget_team2, string.Format(team2)); //widgetView.SetTextViewText(Resource.Id.widget_team2points, string.Format(team2points)); //widgetView.SetTextViewText(Resource.Id.widget_team3, string.Format(team3)); //widgetView.SetTextViewText(Resource.Id.widget_team3points, string.Format(team3points)); //widgetView.SetTextViewText(Resource.Id.widget_team4, string.Format(team4)); //widgetView.SetTextViewText(Resource.Id.widget_team4points, string.Format(team4points)); //widgetView.SetTextViewText(Resource.Id.widget_team5, string.Format(team5)); //widgetView.SetTextViewText(Resource.Id.widget_team5points, string.Format(team5points)); if (listTeamName.Count == 0) { widgetView.SetViewVisibility(Resource.Id.eplNeedRefresh, ViewStates.Visible); widgetView.SetViewVisibility(Resource.Id.eplTeamsGrid, ViewStates.Gone); //team1 = "Refresh Needed"; //team1points = "6"; //widgetView.SetTextViewText(Resource.Id.widget_team1, string.Format(team1)); //widgetView.SetTextViewText(Resource.Id.widget_team1points, string.Format(team1points)); widgetView.SetTextViewText(Resource.Id.updateTime, string.Format("Last updated on: Update Needed")); } else { widgetView.SetViewVisibility(Resource.Id.eplNeedRefresh, ViewStates.Gone); widgetView.SetViewVisibility(Resource.Id.eplTeamsGrid, ViewStates.Visible); team1 = listTeamName[0]; team1points = listTeamPoints[0]; team2 = listTeamName[1]; team2points = listTeamPoints[1]; team3 = listTeamName[2]; team3points = listTeamPoints[2]; team4 = listTeamName[3]; team4points = listTeamPoints[3]; team5 = listTeamName[4]; team5points = listTeamPoints[4]; widgetView.SetTextViewText(Resource.Id.widget_team1, string.Format(team1)); widgetView.SetTextViewText(Resource.Id.widget_team1points, string.Format(team1points)); widgetView.SetTextViewText(Resource.Id.widget_team2, string.Format(team2)); widgetView.SetTextViewText(Resource.Id.widget_team2points, string.Format(team2points)); widgetView.SetTextViewText(Resource.Id.widget_team3, string.Format(team3)); widgetView.SetTextViewText(Resource.Id.widget_team3points, string.Format(team3points)); widgetView.SetTextViewText(Resource.Id.widget_team4, string.Format(team4)); widgetView.SetTextViewText(Resource.Id.widget_team4points, string.Format(team4points)); widgetView.SetTextViewText(Resource.Id.widget_team5, string.Format(team5)); widgetView.SetTextViewText(Resource.Id.widget_team5points, string.Format(team5points)); widgetView.SetTextViewText(Resource.Id.updateTime, string.Format("Last updated on: {0:H:mm:ss}", DateTime.Now)); } }
public static RemoteViews UpdateWidget(Context context, int appWidgetId, int[] appWidgetIds) { var remoteViews = new RemoteViews(context.PackageName, Resource.Layout.task_widget); var intent = new Intent(Intent.ActionMain); intent.AddCategory(Intent.CategoryLauncher); intent.SetComponent(new ComponentName(context, Java.Lang.Class.FromType(typeof(MainActivity)))); var pending = PendingIntent.GetActivity(context, 0, intent, 0); remoteViews.SetOnClickPendingIntent(Resource.Id.widget_layout, pending); remoteViews.SetOnClickPendingIntent(Resource.Id.previous_button, GetPendingSelfIntent(context, ACTION_WIDGET_PREVIOUS)); remoteViews.SetOnClickPendingIntent(Resource.Id.forward_button, GetPendingSelfIntent(context, ACTION_WIDGET_FORWARD)); remoteViews.SetOnClickPendingIntent(Resource.Id.refresh_button, GetPendingSelfIntent(context, ACTION_WIDGET_REFRESH)); var svcIntent = new Intent(context, typeof(TaskWidgetService)); svcIntent.SetPackage(context.PackageName); svcIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId); svcIntent.SetData(Android.Net.Uri.Parse(svcIntent.ToUri(IntentUriType.AndroidAppScheme))); var itemIntent = new Intent(context, typeof(TaskWidget)); itemIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetIds); itemIntent.SetData(Android.Net.Uri.Parse(svcIntent.ToUri(IntentUriType.AndroidAppScheme))); itemIntent.SetAction(ACTION_WIDGET_LIST_ITEM); var itemPending = PendingIntent.GetBroadcast(context, 0, itemIntent, 0); remoteViews.SetPendingIntentTemplate(Resource.Id.task_listview, itemPending); var task = ""; switch (CurrentTask) { case 0: task = context.GetText(Resource.String.daily_task); break; case 1: task = context.GetText(Resource.String.weekly_task); break; case 2: task = context.GetText(Resource.String.one_time_task); break; } remoteViews.SetInt(Resource.Id.widget_layout, "setBackgroundColor", (int)(Opacity * 0xFF) << 24 | Theme); // 어두운 테마 if (Theme == Convert.ToInt32(0x000000)) { remoteViews.SetTextColor(Resource.Id.task, Android.Graphics.Color.White); remoteViews.SetInt(Resource.Id.divider, "setBackgroundColor", Android.Graphics.Color.White); } // 밝은 테마 else { remoteViews.SetTextColor(Resource.Id.task, Android.Graphics.Color.Black); remoteViews.SetInt(Resource.Id.divider, "setBackgroundColor", Android.Graphics.Color.Black); } remoteViews.SetTextViewText(Resource.Id.task, task); remoteViews.SetEmptyView(Resource.Id.task_listview, Resource.Id.empty_view); remoteViews.SetRemoteAdapter(Resource.Id.task_listview, svcIntent); if (Progress) { remoteViews.SetViewVisibility(Resource.Id.progress_layout, Android.Views.ViewStates.Visible); } else { remoteViews.SetViewVisibility(Resource.Id.progress_layout, Android.Views.ViewStates.Gone); } return(remoteViews); }
// Build a widget update to show the current Wiktionary // "Word of the day." Will block until the online API returns. public RemoteViews BuildUpdate(Context context) { // var entry = WordEntry.GetWordOfTheDay(); // Build an update that holds the updated widget contents var updateViews = new RemoteViews(context.PackageName, Resource.Layout.taskwidget); try { var launchAppIntent = new Intent(this, typeof(MainActivity)); launchAppIntent.AddFlags(ActivityFlags.SingleTop); launchAppIntent.AddFlags(ActivityFlags.ClearTop); launchAppIntent.PutExtra("CameFromWidget", true); var pendingIntent = PendingIntent.GetActivity(context, 0, launchAppIntent, 0); updateViews.SetOnClickPendingIntent(Resource.Id.widget_top_action_bar, pendingIntent); var launchAppIntent2 = new Intent(this, typeof(MainActivity)); launchAppIntent2.AddFlags(ActivityFlags.SingleTop); launchAppIntent2.AddFlags(ActivityFlags.ClearTop); var pendingIntent2 = PendingIntent.GetActivity(context, 0, launchAppIntent, 0); updateViews.SetOnClickPendingIntent(Resource.Id.widget_main_area, pendingIntent2); var newTasks = new List <string>(); var newTasksChecked = new List <bool>(); var lineVisibility = new List <ViewStates>(); for (int i = 0; i < 15; i++) { newTasks.Add(string.Empty); newTasksChecked.Add(false); lineVisibility.Add(ViewStates.Gone); } var tasks = DataManager.GetTasks(SortOption.Newest); var count = tasks.Count(); count = count > m_TextViews.Length ? m_TextViews.Length : count; for (int i = 0; i < count; i++) { var task = tasks.ElementAt(i); newTasks[i] = task.Task; newTasksChecked[i] = task.Checked; if (i != 0) { lineVisibility[i - 1] = ViewStates.Visible; } } if (newTasks[0] == string.Empty) { newTasks[0] = "No Tasks Added."; } for (int i = 0; i < m_TextViews.Length; i++) { updateViews.SetTextViewText(m_TextViews[i], newTasks[i]); updateViews.SetTextColor(m_TextViews[i], newTasksChecked[i] ? Android.Graphics.Color.DarkGray : Android.Graphics.Color.Black); } for (int i = 0; i < m_TextViewsLines.Length; i++) { updateViews.SetViewVisibility(m_TextViewsLines[i], lineVisibility[i]); } } catch (Exception ex) { updateViews.SetTextViewText(Resource.Id.widget_task_1, "Error loading widget"); } return(updateViews); }