protected override void OnDestroy() { _settings = null; _widgetId = null; //AppSettings.GcCollect(log: _log); //HARDCODE: base.OnDestroy(); }
protected override void UpdateWeatherPart(Context context, RemoteViews view, AppWidgetSettings settings, bool isDemoMode) { if (!AppSettings.Default.LandOrientation) { var topId = settings.WidgetIconStyle == IconStyles.FancyWidgets ? Resource.Dimension.wgviewImgConditionPaddingFancyWidgets : Resource.Dimension.wgviewImgConditionPadding; view.SetViewPadding(Resource.Id.viewImgCondition, 0, (int)context.Resources.GetDimension(topId), 0, 0); } base.UpdateWeatherPart(context, view, settings, isDemoMode); }
protected override void OnUpdateCustomPart(Context context, AppWidgetSettings settings, RemoteViews view) { var use12HourFormat = settings.Use12HourFormat; var offset = use12HourFormat ? 1 : 0; var format = settings.GetHourFormat(ApPmFormat); var clockLength = format.Length; var dateformat = Environment.NewLine + settings.GetDateFormat(); //var lengthdate = dateformat.Length; format += dateformat + Environment.NewLine; var spannable = new SpannableString(format); spannable.SetSpan(new AbsoluteSizeSpan(settings.ClockTextSizeSp, true), offset, clockLength, SpanTypes.ExclusiveExclusive); spannable.SetSpan(new TextAppearanceSpan(context, Resource.Style.wgClockTextStyle), offset, clockLength, SpanTypes.ExclusiveExclusive); spannable.SetSpan(new AlignmentSpanStandard(Layout.Alignment.AlignCenter), 0, clockLength, SpanTypes.ExclusiveExclusive); SetClockProperties(view, Resource.Id.txtDateTime, spannable); }
protected virtual void OnUpdateCustomPart(Context context, AppWidgetSettings settings, RemoteViews view) { }
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); }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); try { SetContentView(Resource.Layout.activity_settings); var toolbar = FindViewById <Toolbar>(Resource.Id.toolbar); SetSupportActionBar(toolbar); var extraTitleId = Intent.GetIntExtra(ExtraToolbarTitleId, -1); var extraTitle = Intent.GetStringExtra(ExtraToolbarTitle); if (extraTitleId > 0) { SupportActionBar.SetTitle(extraTitleId); } else if (!string.IsNullOrEmpty(extraTitle)) { SupportActionBar.Title = extraTitle; } else { SupportActionBar.SetTitle(Resource.String.PreferencesTitle); } var widgetId = Intent.GetIntExtra(AppWidgetManager.ExtraAppwidgetId, AppWidgetManager.InvalidAppwidgetId); var validWidgetId = widgetId != AppWidgetManager.InvalidAppwidgetId; _isActionAppwidGetConfigure = Intent.Action == AppWidgetManager.ActionAppwidgetConfigure; if (_isActionAppwidGetConfigure) { if (!validWidgetId) { Finish(); return; } Intent.PutExtra(SettingsFragment.ExtraPreferenceXmlId, Resource.Xml.preferences_appwidget); AppSettings.Default.DeleteAppWidgetSettings(new[] { widgetId }); _settings = AppSettings.Default.CreateAppWidgetSettings(widgetId); AppSettings.Default.SaveAppWidgetSettings(_settings); var intent = new Intent(); intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, _settings.WidgetId); SetResult(Result.Canceled, intent); } else { if (Intent.GetBooleanExtra(ExtraWidget, false) && validWidgetId) { _widgetId = widgetId; } } if (savedInstanceState == null) { var fragment = new SettingsFragment(); using (var transaction = SupportFragmentManager.BeginTransaction()) { transaction.Replace(Resource.Id.settingsContent, fragment); transaction.Commit(); } } var usehomemenu = !_isActionAppwidGetConfigure; SupportActionBar.SetDisplayHomeAsUpEnabled(usehomemenu); SupportActionBar.SetHomeButtonEnabled(usehomemenu); } catch (Exception ex) { Log.Error(ex); } }