void Set <T>(string key, T value) { lock (locker) { switch (value) { case string s: UserDefaults.SetString(s, key); break; case int i: UserDefaults.SetInt(i, key); break; case bool b: UserDefaults.SetBool(b, key); break; case long l: var valueString = Convert.ToString(value, CultureInfo.InvariantCulture); UserDefaults.SetString(valueString, key); break; case double d: UserDefaults.SetDouble(d, key); break; case float f: UserDefaults.SetFloat(f, key); break; } } }
public override void ViewDidLoad() { base.ViewDidLoad(); const string prefix = "com.toggl.timer"; source.OnStartStop += (sender, e) => { if (WidgetDisabled) { return; } WidgetDisabled = true; UIApplication.SharedApplication.OpenUrl(new NSUrl(prefix + "://" + TodayUrlPrefix + "/" + StartEntryUrlPrefix)); }; source.OnContinue += (sender, e) => { if (WidgetDisabled) { return; } WidgetDisabled = true; var id = string.IsNullOrEmpty(source.SelectedCellId) ? new Guid().ToString() : source.SelectedCellId; UserDefaults.SetString(id, StartedEntryKey); UIApplication.SharedApplication.OpenUrl(new NSUrl(prefix + "://" + TodayUrlPrefix + "/" + ContinueEntryUrlPrefix)); }; source.Controller = this; tableView.Source = source; tableView.RegisterClassForCellReuse(typeof(WidgetCell), WidgetCell.WidgetProjectCellId); tableView.Delegate = new TableViewDelegate(); openAppBtn.TouchUpInside += (sender, e) => { if (WidgetDisabled) { return; } WidgetDisabled = true; openAppBtn.IsActive = false; UIApplication.SharedApplication.OpenUrl(new NSUrl(prefix + "://" + TodayUrlPrefix + "/")); }; UpdateContent(); UpdateTimeValue(); if (isRunning) { // Start to check time Timer.Elapsed += (sender, e) => InvokeOnMainThread(UpdateTimeValue); Timer.Start(); } }
public void Set(string key, string value) => Set(key, () => UserDefaults.SetString(value, MakeKey(key)));