Beispiel #1
0
        protected override void OnDestroy()
        {
            _settings = null;
            _widgetId = null;
            //AppSettings.GcCollect(log: _log); //HARDCODE:

            base.OnDestroy();
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #6
0
        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);
            }
        }