public override void OnCreate(Bundle savedInstanceState)
            {
                base.OnCreate(savedInstanceState);
                AddPreferencesFromResource(Resource.Xml.pref_general);

                apiCategory = (PreferenceCategory)FindPreference(CATEGORY_API);

                FindPreference(KEY_ABOUTAPP).PreferenceClick += (object sender, Preference.PreferenceClickEventArgs e) =>
                {
                    // Display the fragment as the main content.
                    FragmentManager.BeginTransaction()
                    .Replace(Android.Resource.Id.Content, new AboutAppFragment())
                    .AddToBackStack(null)
                    .Commit();
                };

                followGps = (SwitchPreference)FindPreference(KEY_FOLLOWGPS);
                followGps.PreferenceChange += (object sender, Preference.PreferenceChangeEventArgs e) =>
                {
                    SwitchPreference pref = e.Preference as SwitchPreference;
                    if ((bool)e.NewValue)
                    {
                        if (Activity.CheckSelfPermission(Manifest.Permission.AccessFineLocation) != Permission.Granted &&
                            Activity.CheckSelfPermission(Manifest.Permission.AccessCoarseLocation) != Permission.Granted)
                        {
                            RequestPermissions(new String[] { Manifest.Permission.AccessCoarseLocation, Manifest.Permission.AccessFineLocation },
                                               PERMISSION_LOCATION_REQUEST_CODE);
                            return;
                        }
                    }
                };

                keyEntry = (KeyEntryPreference)FindPreference(KEY_APIKEY);
                keyEntry.BeforeDialogCreated += (object sender, EventArgs e) =>
                {
                    keyEntry?.UpdateAPI(providerPref.Value);
                };

                keyEntry.PositiveButtonClick += async(sender, e) =>
                {
                    String key = keyEntry.APIKey;

                    String API = providerPref.Value;
                    if (await WeatherData.WeatherManager.IsKeyValid(key, API))
                    {
                        Settings.API_KEY = key;
                        Settings.API     = API;

                        Settings.KeyVerified = true;
                        UpdateKeySummary();

                        keyEntry.Dialog.Dismiss();
                    }
                };

                personalKeyPref = (SwitchPreference)FindPreference(KEY_USEPERSONALKEY);
                personalKeyPref.PreferenceChange += (object sender, Preference.PreferenceChangeEventArgs e) =>
                {
                    var pref = e.Preference as SwitchPreference;
                    if ((bool)e.NewValue)
                    {
                        if (apiCategory.FindPreference(KEY_APIKEY) == null)
                        {
                            apiCategory.AddPreference(keyEntry);
                        }
                        if (apiCategory.FindPreference(KEY_APIREGISTER) == null)
                        {
                            apiCategory.AddPreference(registerPref);
                        }
                        keyEntry.Enabled = true;
                    }
                    else
                    {
                        var selectedWProv = WeatherData.WeatherManager.GetProvider(providerPref.Value);

                        if (!String.IsNullOrWhiteSpace(selectedWProv.GetAPIKey()))
                        {
                            // We're using our own (verified) keys
                            Settings.KeyVerified = true;
                            Settings.API         = providerPref.Value;
                        }

                        keyEntry.Enabled = false;
                        apiCategory.RemovePreference(keyEntry);
                        apiCategory.RemovePreference(registerPref);
                    }
                };

                var providers = WeatherData.WeatherAPI.APIs;

                providerPref = (ListPreference)FindPreference(KEY_API);
                providerPref.SetEntries(providers.Select(provider => provider.Display).ToArray());
                providerPref.SetEntryValues(providers.Select(provider => provider.Value).ToArray());
                providerPref.Persistent        = false;
                providerPref.PreferenceChange += (object sender, Preference.PreferenceChangeEventArgs e) =>
                {
                    var pref          = e.Preference as ListPreference;
                    var selectedWProv = WeatherData.WeatherManager.GetProvider(e.NewValue.ToString());

                    if (selectedWProv.KeyRequired)
                    {
                        if (String.IsNullOrWhiteSpace(selectedWProv.GetAPIKey()))
                        {
                            personalKeyPref.Checked = Settings.UsePersonalKey = true;
                            personalKeyPref.Enabled = false;
                            keyEntry.Enabled        = false;
                            apiCategory.RemovePreference(keyEntry);
                            apiCategory.RemovePreference(registerPref);
                        }
                        else
                        {
                            personalKeyPref.Enabled = true;
                        }

                        if (!Settings.UsePersonalKey)
                        {
                            // We're using our own (verified) keys
                            Settings.KeyVerified = true;
                            keyEntry.Enabled     = false;
                            apiCategory.RemovePreference(keyEntry);
                            apiCategory.RemovePreference(registerPref);
                        }
                        else
                        {
                            keyEntry.Enabled = true;

                            if (apiCategory.FindPreference(KEY_APIKEY) == null)
                            {
                                apiCategory.AddPreference(keyEntry);
                            }
                            if (apiCategory.FindPreference(KEY_APIREGISTER) == null)
                            {
                                apiCategory.AddPreference(registerPref);
                            }
                        }

                        if (apiCategory.FindPreference(KEY_USEPERSONALKEY) == null)
                        {
                            apiCategory.AddPreference(personalKeyPref);
                        }

                        // Reset to old value if not verified
                        if (!Settings.KeyVerified)
                        {
                            Settings.API = pref.Value;
                        }
                        else
                        {
                            Settings.API = e.NewValue.ToString();
                        }

                        var providerEntry = providers.Find(provider => provider.Value == e.NewValue.ToString());
                        UpdateKeySummary(providerEntry.Display);
                        UpdateRegisterLink(providerEntry.Value);
                    }
                    else
                    {
                        Settings.KeyVerified    = false;
                        keyEntry.Enabled        = false;
                        personalKeyPref.Enabled = false;

                        Settings.API = e.NewValue.ToString();
                        // Clear API KEY entry to avoid issues
                        Settings.API_KEY = String.Empty;

                        apiCategory.RemovePreference(personalKeyPref);
                        apiCategory.RemovePreference(keyEntry);
                        apiCategory.RemovePreference(registerPref);
                        UpdateKeySummary();
                        UpdateRegisterLink();
                    }
                };

                registerPref = FindPreference(KEY_APIREGISTER);
                registerPref.PreferenceClick += RegisterPref_PreferenceClick;

                // Set key as verified if API Key is req for API and its set
                if (WeatherData.WeatherManager.GetInstance().KeyRequired)
                {
                    keyEntry.Enabled = true;

                    if (!String.IsNullOrWhiteSpace(Settings.API_KEY) && !Settings.KeyVerified)
                    {
                        Settings.KeyVerified = true;
                    }

                    if (String.IsNullOrWhiteSpace(WeatherData.WeatherManager.GetInstance().GetAPIKey()))
                    {
                        personalKeyPref.Checked = Settings.UsePersonalKey = true;
                        personalKeyPref.Enabled = false;
                        keyEntry.Enabled        = false;
                        apiCategory.RemovePreference(keyEntry);
                        apiCategory.RemovePreference(registerPref);
                    }
                    else
                    {
                        personalKeyPref.Enabled = true;
                    }

                    if (!Settings.UsePersonalKey)
                    {
                        // We're using our own (verified) keys
                        Settings.KeyVerified = true;
                        keyEntry.Enabled     = false;
                        apiCategory.RemovePreference(keyEntry);
                        apiCategory.RemovePreference(registerPref);
                    }
                    else
                    {
                        keyEntry.Enabled = true;

                        if (apiCategory.FindPreference(KEY_APIKEY) == null)
                        {
                            apiCategory.AddPreference(keyEntry);
                        }
                        if (apiCategory.FindPreference(KEY_APIREGISTER) == null)
                        {
                            apiCategory.AddPreference(registerPref);
                        }
                    }
                }
                else
                {
                    keyEntry.Enabled        = false;
                    personalKeyPref.Enabled = false;
                    apiCategory.RemovePreference(personalKeyPref);
                    apiCategory.RemovePreference(keyEntry);
                    apiCategory.RemovePreference(registerPref);
                    Settings.KeyVerified = false;
                }

                UpdateKeySummary();
                UpdateRegisterLink();

                syncPreference = (ListPreference)FindPreference(KEY_DATASYNC);
                syncPreference.PreferenceChange += (object sender, Preference.PreferenceChangeEventArgs e) =>
                {
                    int newValue = int.Parse(e.NewValue.ToString());

                    ListPreference pref = e.Preference as ListPreference;
                    pref.Summary = pref.GetEntries()[newValue];

                    EnableSyncedSettings((WearableDataSync)newValue == WearableDataSync.Off);
                };
                syncPreference.Summary = syncPreference.GetEntries()[int.Parse(syncPreference.Value)];
                EnableSyncedSettings(Settings.DataSync == WearableDataSync.Off);

                connStatusPref     = FindPreference(KEY_CONNSTATUS);
                connStatusReceiver = new ConnectionStatusReceiver();
                connStatusReceiver.ConnectionStatusChanged += (status) =>
                {
                    switch (status)
                    {
                    case WearConnectionStatus.Disconnected:
                        connStatusPref.Summary          = GetString(Resource.String.status_disconnected);
                        connStatusPref.PreferenceClick -= ConnStatusPref_PreferenceClick;
                        break;

                    case WearConnectionStatus.Connecting:
                        connStatusPref.Summary          = GetString(Resource.String.status_connecting);
                        connStatusPref.PreferenceClick -= ConnStatusPref_PreferenceClick;
                        break;

                    case WearConnectionStatus.AppNotInstalled:
                        connStatusPref.Summary          = GetString(Resource.String.status_notinstalled);
                        connStatusPref.PreferenceClick += ConnStatusPref_PreferenceClick;
                        break;

                    case WearConnectionStatus.Connected:
                        connStatusPref.Summary          = GetString(Resource.String.status_connected);
                        connStatusPref.PreferenceClick -= ConnStatusPref_PreferenceClick;
                        break;

                    default:
                        break;
                    }
                };
            }
Пример #2
0
        private void SetDownloadSettings()
        {
            _PinCategory  = (PreferenceCategory)this.FindPreference("Pin");
            _PinEnable    = (SwitchPreference)this.FindPreference("PinActive");
            _DownCategory = (PreferenceCategory)this.FindPreference("Download");
            _DownEnable   = (SwitchPreference)this.FindPreference("DownActive");
            _DownUser     = (Preference)this.FindPreference("DownUsername");
            _DownLogout   = (Preference)this.FindPreference("DownLogout");
            _DownReset    = (Preference)this.FindPreference("DownReset");

            _NotifyCategory = (PreferenceCategory)this.FindPreference("Notifications");
            _NotifyTest     = (Preference)this.FindPreference("NotTest");


            //pin
            _PinCategory.Title = GetString(Resource.String.set_pin);

            //_PinEnable.WidgetLayoutResource = Resource.Layout.CustomSwitch;

            if (DataManager.Get <ISettingsManager>().Settings.PinEnabled)
            {
                _PinEnable.Title             = GetString(Resource.String.set_pinEnabled);
                _PinEnable.Checked           = DataManager.Get <IPreferencesManager>().Preferences.PinEnabled;
                _PinEnable.PreferenceChange += (sender, e) =>
                {
                    if (_PinEnable.Checked != (bool)e.NewValue)
                    {
                        ShowPinDialog((bool)e.NewValue);
                    }
                };
            }
            else
            {
                _PinCategory.RemovePreference(_PinEnable);
                _PinCategory.Enabled           = false;
                _PinCategory.ShouldDisableView = true;
                _PinCategory.Title             = "";
            }

            //download
            //_DownEnable.WidgetLayoutResource = Resource.Layout.CustomSwitch;
            _DownEnable.Title             = GetString(Resource.String.set_downEnabled);
            _DownEnable.Checked           = DataManager.Get <IPreferencesManager>().Preferences.DownloadEnabled;
            _DownEnable.PreferenceChange += (sender, e) =>
            {
                DataManager.Get <IPreferencesManager>().Preferences.DownloadEnabled = (bool)e.NewValue;
                DataManager.Get <IPreferencesManager>().Save();

                _DownUser.Enabled   = (bool)e.NewValue;
                _DownLogout.Enabled = (bool)e.NewValue;
                _DownReset.Enabled  = (bool)e.NewValue;
            };

            //in base al tipo di login setto le impostazioni disponibili
            if (DataManager.Get <ISettingsManager>().Settings.DownloadUtenti || DataManager.Get <ISettingsManager>().Settings.DownloadPassword)
            {
                if (DownloadManager.IsLogged())
                {
                    if (DataManager.Get <ISettingsManager>().Settings.DownloadUtenti)
                    {
                        _DownUser.Summary = DataManager.Get <IPreferencesManager>().Preferences.DownloadUsername;
                    }
                    else
                    {
                        _DownUser.Summary = GetString(Resource.String.set_logged);
                    }

                    _DownCategory.RemovePreference(_DownReset);
                }
                else
                {
                    _DownUser.Summary = GetString(Resource.String.set_notLogged);

                    _DownCategory.RemovePreference(_DownLogout);
                }

                //attivo il popup per il login
                _DownUser.PreferenceClick += (sender, e) =>
                {
                    ShowLoginDialog();
                };
            }
            else
            {
                _DownCategory.RemovePreference(_DownUser);
            }

            //pulsante logout
            if (DataManager.Get <ISettingsManager>().Settings.DownloadUtenti || DataManager.Get <ISettingsManager>().Settings.DownloadPassword)
            {
                _DownLogout.Title            = GetString(Resource.String.set_logout);
                _DownLogout.Summary          = GetString(Resource.String.set_publicAccess);
                _DownLogout.PreferenceClick += (sender, e) =>
                {
                    var dialog = new AlertDialog.Builder(Activity);
                    dialog.SetTitle(_DownCategory.Title);
                    dialog.SetMessage(GetString(Resource.String.set_logoutConfirm));

                    dialog.SetNegativeButton(GetString(Resource.String.gen_cancel), delegate
                    {
                        return;
                    });

                    dialog.SetPositiveButton(GetString(Resource.String.set_logout), delegate
                    {
                        DataManager.Get <IPreferencesManager>().Preferences.DownloadUsername = "";
                        DataManager.Get <IPreferencesManager>().Preferences.DownloadPassword = "";
                        DataManager.Get <IPreferencesManager>().Save();

                        _DownUser.Summary = GetString(Resource.String.set_notLogged);

                        _DownCategory.RemovePreference(_DownLogout);

                        if (DataManager.Get <ISettingsManager>().Settings.DownloadUtenti&& DataManager.Get <ISettingsManager>().Settings.PasswordReset)
                        {
                            _DownCategory.AddPreference(_DownReset);
                        }
                    });

                    dialog.Create();
                    dialog.Show().SetDivider();
                };
            }
            else
            {
                _DownCategory.RemovePreference(_DownLogout);
            }

            //reset password
            if (DataManager.Get <ISettingsManager>().Settings.PasswordReset)
            {
                if (DataManager.Get <ISettingsManager>().Settings.DownloadUtenti)
                {
                    _DownReset.Title            = GetString(Resource.String.set_forgot);
                    _DownReset.Summary          = GetString(Resource.String.set_reset);
                    _DownReset.PreferenceClick += (sender, e) =>
                    {
                        ShowResetDialog();
                    };
                }
            }
            else
            {
                _DownCategory.RemovePreference(_DownReset);
            }

            //notifiche
            if (!Utility.IsMediabookApp)
            {
                _NotifyCategory.RemovePreference(_NotifyTest);
                _NotifyCategory.Enabled           = false;
                _NotifyCategory.ShouldDisableView = true;
                _NotifyCategory.Title             = "";
            }
            else
            {
                _NotifyTest.PreferenceClick += (sender, e) =>
                {
                    Notification noti = new Notification();
                    noti.SendTest(Activity.BaseContext.DeviceInfo(), "Notifica di esempio");
                };
            }
        }
Пример #3
0
            public override void OnCreatePreferences(Bundle savedInstanceState, string rootKey)
            {
                SetPreferencesFromResource(Resource.Xml.pref_general, null);
                HasOptionsMenu = false;

                notCategory = (PreferenceCategory)FindPreference(CATEGORY_NOTIFICATION);
                apiCategory = (PreferenceCategory)FindPreference(CATEGORY_API);

                FindPreference(KEY_ABOUTAPP).PreferenceClick += (object sender, Preference.PreferenceClickEventArgs e) =>
                {
                    // Display the fragment as the main content.
                    FragmentManager.BeginTransaction()
                    .Replace(Android.Resource.Id.Content, new AboutAppFragment())
                    .AddToBackStack(null)
                    .Commit();
                };

                followGps = (SwitchPreferenceCompat)FindPreference(KEY_FOLLOWGPS);
                followGps.PreferenceChange += (object sender, Preference.PreferenceChangeEventArgs e) =>
                {
                    var pref = e.Preference as SwitchPreferenceCompat;
                    if ((bool)e.NewValue)
                    {
                        if (ContextCompat.CheckSelfPermission(Activity, Manifest.Permission.AccessFineLocation) != Permission.Granted &&
                            ContextCompat.CheckSelfPermission(Activity, Manifest.Permission.AccessCoarseLocation) != Permission.Granted)
                        {
                            ActivityCompat.RequestPermissions(this.Activity, new String[] { Manifest.Permission.AccessCoarseLocation, Manifest.Permission.AccessFineLocation },
                                                              PERMISSION_LOCATION_REQUEST_CODE);
                            return;
                        }
                        else
                        {
                            // Reset home location data
                            //Settings.SaveLastGPSLocData(new WeatherData.LocationData());
                        }
                    }
                };

                keyEntry        = (EditTextPreference)FindPreference(KEY_APIKEY);
                personalKeyPref = (SwitchPreferenceCompat)FindPreference(KEY_USEPERSONALKEY);
                personalKeyPref.PreferenceChange += (object sender, Preference.PreferenceChangeEventArgs e) =>
                {
                    var pref = e.Preference as SwitchPreferenceCompat;
                    if ((bool)e.NewValue)
                    {
                        if (apiCategory.FindPreference(KEY_APIKEY) == null)
                        {
                            apiCategory.AddPreference(keyEntry);
                        }
                        if (apiCategory.FindPreference(KEY_APIREGISTER) == null)
                        {
                            apiCategory.AddPreference(registerPref);
                        }
                        keyEntry.Enabled = true;
                    }
                    else
                    {
                        var selectedWProv = WeatherData.WeatherManager.GetProvider(providerPref.Value);

                        if (!String.IsNullOrWhiteSpace(selectedWProv.GetAPIKey()))
                        {
                            // We're using our own (verified) keys
                            Settings.KeyVerified = true;
                            Settings.API         = providerPref.Value;
                        }

                        keyEntry.Enabled = false;
                        apiCategory.RemovePreference(keyEntry);
                        apiCategory.RemovePreference(registerPref);
                    }
                };

                var providers = WeatherData.WeatherAPI.APIs;

                providerPref = (DropDownPreference)FindPreference(KEY_API);
                providerPref.SetEntries(providers.Select(provider => provider.Display).ToArray());
                providerPref.SetEntryValues(providers.Select(provider => provider.Value).ToArray());
                providerPref.Persistent        = false;
                providerPref.PreferenceChange += (object sender, Preference.PreferenceChangeEventArgs e) =>
                {
                    var pref          = e.Preference as ListPreference;
                    var selectedWProv = WeatherData.WeatherManager.GetProvider(e.NewValue.ToString());

                    if (selectedWProv.KeyRequired)
                    {
                        if (String.IsNullOrWhiteSpace(selectedWProv.GetAPIKey()))
                        {
                            personalKeyPref.Checked = Settings.UsePersonalKey = true;
                            personalKeyPref.Enabled = false;
                            keyEntry.Enabled        = false;
                            apiCategory.RemovePreference(keyEntry);
                            apiCategory.RemovePreference(registerPref);
                        }
                        else
                        {
                            personalKeyPref.Enabled = true;
                        }

                        if (!Settings.UsePersonalKey)
                        {
                            // We're using our own (verified) keys
                            Settings.KeyVerified = true;
                            keyEntry.Enabled     = false;
                            apiCategory.RemovePreference(keyEntry);
                            apiCategory.RemovePreference(registerPref);
                        }
                        else
                        {
                            keyEntry.Enabled = true;

                            if (apiCategory.FindPreference(KEY_APIKEY) == null)
                            {
                                apiCategory.AddPreference(keyEntry);
                            }
                            if (apiCategory.FindPreference(KEY_APIREGISTER) == null)
                            {
                                apiCategory.AddPreference(registerPref);
                            }
                        }

                        if (apiCategory.FindPreference(KEY_USEPERSONALKEY) == null)
                        {
                            apiCategory.AddPreference(personalKeyPref);
                        }

                        // Reset to old value if not verified
                        if (!Settings.KeyVerified)
                        {
                            Settings.API = pref.Value;
                        }
                        else
                        {
                            Settings.API = e.NewValue.ToString();
                        }

                        var providerEntry = providers.Find(provider => provider.Value == e.NewValue.ToString());
                        UpdateKeySummary(providerEntry.Display);
                        UpdateRegisterLink(providerEntry.Value);
                    }
                    else
                    {
                        Settings.KeyVerified    = false;
                        keyEntry.Enabled        = false;
                        personalKeyPref.Enabled = false;

                        Settings.API = e.NewValue.ToString();
                        // Clear API KEY entry to avoid issues
                        Settings.API_KEY = String.Empty;

                        apiCategory.RemovePreference(personalKeyPref);
                        apiCategory.RemovePreference(keyEntry);
                        apiCategory.RemovePreference(registerPref);
                        UpdateKeySummary();
                        UpdateRegisterLink();
                    }

                    UpdateAlertPreference(WeatherData.WeatherManager.GetInstance().SupportsAlerts);
                };

                registerPref = FindPreference(KEY_APIREGISTER);

                // Set key as verified if API Key is req for API and its set
                if (WeatherData.WeatherManager.GetInstance().KeyRequired)
                {
                    keyEntry.Enabled = true;

                    if (!String.IsNullOrWhiteSpace(Settings.API_KEY) && !Settings.KeyVerified)
                    {
                        Settings.KeyVerified = true;
                    }

                    if (String.IsNullOrWhiteSpace(WeatherData.WeatherManager.GetInstance().GetAPIKey()))
                    {
                        personalKeyPref.Checked = Settings.UsePersonalKey = true;
                        personalKeyPref.Enabled = false;
                        keyEntry.Enabled        = false;
                        apiCategory.RemovePreference(keyEntry);
                        apiCategory.RemovePreference(registerPref);
                    }
                    else
                    {
                        personalKeyPref.Enabled = true;
                    }

                    if (!Settings.UsePersonalKey)
                    {
                        // We're using our own (verified) keys
                        Settings.KeyVerified = true;
                        keyEntry.Enabled     = false;
                        apiCategory.RemovePreference(keyEntry);
                        apiCategory.RemovePreference(registerPref);
                    }
                    else
                    {
                        keyEntry.Enabled = true;

                        if (apiCategory.FindPreference(KEY_APIKEY) == null)
                        {
                            apiCategory.AddPreference(keyEntry);
                        }
                        if (apiCategory.FindPreference(KEY_APIREGISTER) == null)
                        {
                            apiCategory.AddPreference(registerPref);
                        }
                    }
                }
                else
                {
                    keyEntry.Enabled        = false;
                    personalKeyPref.Enabled = false;
                    apiCategory.RemovePreference(personalKeyPref);
                    apiCategory.RemovePreference(keyEntry);
                    apiCategory.RemovePreference(registerPref);
                    Settings.KeyVerified = false;
                }

                UpdateKeySummary();
                UpdateRegisterLink();

                onGoingNotification = (SwitchPreferenceCompat)FindPreference(KEY_ONGOINGNOTIFICATION);
                onGoingNotification.PreferenceChange += (object sender, Preference.PreferenceChangeEventArgs e) =>
                {
                    var pref    = e.Preference as SwitchPreferenceCompat;
                    var context = App.Context;

                    // On-going notification
                    if ((bool)e.NewValue)
                    {
                        WeatherWidgetService.EnqueueWork(context, new Intent(context, typeof(WeatherWidgetService))
                                                         .SetAction(WeatherWidgetService.ACTION_REFRESHNOTIFICATION));

                        if (notCategory.FindPreference(KEY_NOTIFICATIONICON) == null)
                        {
                            notCategory.AddPreference(notificationIcon);
                        }
                    }
                    else
                    {
                        WeatherWidgetService.EnqueueWork(context, new Intent(context, typeof(WeatherWidgetService))
                                                         .SetAction(WeatherWidgetService.ACTION_REMOVENOTIFICATION));

                        notCategory.RemovePreference(notificationIcon);
                    }
                };

                notificationIcon = (DropDownPreference)FindPreference(KEY_NOTIFICATIONICON);
                notificationIcon.PreferenceChange += (object sender, Preference.PreferenceChangeEventArgs e) =>
                {
                    var context = App.Context;
                    WeatherWidgetService.EnqueueWork(context, new Intent(context, typeof(WeatherWidgetService))
                                                     .SetAction(WeatherWidgetService.ACTION_REFRESHNOTIFICATION));
                };

                // Remove preferences
                if (!onGoingNotification.Checked)
                {
                    notCategory.RemovePreference(notificationIcon);
                }

                alertNotification = (SwitchPreferenceCompat)FindPreference(KEY_USEALERTS);
                alertNotification.PreferenceChange += (object sender, Preference.PreferenceChangeEventArgs e) =>
                {
                    var pref    = e.Preference as SwitchPreferenceCompat;
                    var context = App.Context;

                    // Alert notification
                    if ((bool)e.NewValue)
                    {
                        WeatherWidgetService.EnqueueWork(context, new Intent(context, typeof(WeatherWidgetService))
                                                         .SetAction(WeatherWidgetService.ACTION_STARTALARM));
                    }
                    else
                    {
                        WeatherWidgetService.EnqueueWork(context, new Intent(context, typeof(WeatherWidgetService))
                                                         .SetAction(WeatherWidgetService.ACTION_CANCELALARM));
                    }
                };
                UpdateAlertPreference(WeatherData.WeatherManager.GetInstance().SupportsAlerts);
            }
Пример #4
0
        private void ShowLoginDialog()
        {
            var builder = new AlertDialog.Builder(Activity);

            builder.SetTitle(_DownCategory.Title);

            builder.SetView(Activity.LayoutInflater.Inflate(Resource.Layout.LoginDialog, null));

            builder.SetPositiveButton("Login", (EventHandler <DialogClickEventArgs>)null);
            builder.SetNegativeButton(GetString(Resource.String.gen_cancel), (EventHandler <DialogClickEventArgs>)null);

            builder.SetCancelable(true);

            var dialog = builder.Create();

            dialog.Show();
            dialog.SetDivider();

            EditText    txtUser    = dialog.FindViewById <EditText>(Resource.Id.txtUser);      //new EditText(Activity);
            EditText    txtPasswd  = dialog.FindViewById <EditText>(Resource.Id.txtPasswd);    //new EditText(Activity);
            TextView    lblSuccess = dialog.FindViewById <TextView>(Resource.Id.lblSuccess);
            ProgressBar prgLogin   = dialog.FindViewById <ProgressBar>(Resource.Id.prgLogin);

            txtUser.Background.Colorize(DataManager.Get <ISettingsManager>().Settings.ButtonColor);
            txtPasswd.Background.Colorize(DataManager.Get <ISettingsManager>().Settings.ButtonColor);

            //se è edicola con password nasconto il campo username
            if (!DataManager.Get <ISettingsManager>().Settings.DownloadUtenti)
            {
                txtUser.Visibility = ViewStates.Gone;
            }

            //pulsante login
            var btnLogin = dialog.GetButton((int)DialogButtonType.Positive);

            if (btnLogin == null)
            {
                return;
            }

            btnLogin.Click += (sender, e) =>
            {
                Activity.RunOnUiThread(() =>
                {
                    lblSuccess.Text       = "";
                    prgLogin.Visibility   = ViewStates.Visible;
                    lblSuccess.Visibility = ViewStates.Gone;
                });

                Uri host = new Uri(DataManager.Get <ISettingsManager>().Settings.DownloadUrl);
                if (!Reachability.IsHostReachable("http://" + host.Host))
                {
                    var alert = new AlertDialog.Builder(Activity);
                    alert.SetTitle(GetString(Resource.String.gen_error));
                    alert.SetMessage(GetString(Resource.String.gen_serverNotReachable));
                    alert.SetPositiveButton("Ok", (EventHandler <DialogClickEventArgs>)null);
                    alert.Show().SetDivider();

                    return;
                }

                var result = DownloadManager.CheckUser(txtUser.Text, txtPasswd.Text);

                if (result.Success)
                {
                    DataManager.Get <IPreferencesManager>().Preferences.DownloadUsername = txtUser.Text;
                    DataManager.Get <IPreferencesManager>().Preferences.DownloadPassword = txtPasswd.Text;
                    DataManager.Get <IPreferencesManager>().Save();

                    if (DataManager.Get <ISettingsManager>().Settings.DownloadUtenti)
                    {
                        _DownUser.Summary = txtUser.Text;
                    }
                    else if (DataManager.Get <ISettingsManager>().Settings.DownloadPassword)
                    {
                        _DownUser.Summary = GetString(Resource.String.set_logged);
                    }

                    //registro il device
                    Notification notif = new Notification();

                    string pushId = Activity.DevicePushId();

                    var data = Activity.BaseContext.DeviceInfo();
                    data.Add("deviceToken", Activity.DevicePushId());

                    notif.RegisterDevice(data);

                    if ((Preference)this.FindPreference("DownLogout") == null)
                    {
                        _DownCategory.AddPreference(_DownLogout);
                    }

                    if ((Preference)this.FindPreference("DownReset") != null)
                    {
                        _DownCategory.RemovePreference(_DownReset);
                    }

                    dialog.Dismiss();
                }
                else
                {
                    if (result.Message != null && result.Message != "")
                    {
                        _DownUser.Summary = result.Message;
                    }
                    else
                    {
                        _DownUser.Summary = GetString(Resource.String.set_notLogged);
                    }

                    Activity.RunOnUiThread(() =>
                    {
                        if (result.Message != null && result.Message != "")
                        {
                            lblSuccess.Text = result.Message;
                        }
                        else
                        {
                            lblSuccess.Text = GetString(Resource.String.set_loginFailed);
                        }

                        lblSuccess.Visibility = ViewStates.Visible;
                        prgLogin.Visibility   = ViewStates.Gone;
                    });

                    DataManager.Get <IPreferencesManager>().Preferences.DownloadUsername = "";
                    DataManager.Get <IPreferencesManager>().Preferences.DownloadPassword = "";
                    DataManager.Get <IPreferencesManager>().Save();

                    if ((Preference)this.FindPreference("DownLogout") != null)
                    {
                        _DownCategory.RemovePreference(_DownLogout);
                    }

                    if (DataManager.Get <ISettingsManager>().Settings.PasswordReset&& (Preference)this.FindPreference("DownReset") == null)
                    {
                        _DownCategory.AddPreference(_DownReset);
                    }
                }
            };
        }