public void SmartView() { // act var descriptor = LaunchArgumentsHelper.GetDescriptorFromArgument(this.workbook, "smartview-5"); // verify Assert.AreEqual(this.workbook.SmartViews[0], descriptor.Folder); Assert.AreEqual(LaunchArgumentType.Select, descriptor.Type); Assert.IsNull(descriptor.Task); }
public void Context() { // act var descriptor = LaunchArgumentsHelper.GetDescriptorFromArgument(this.workbook, "context-7"); // verify Assert.AreEqual(this.workbook.Contexts[0], descriptor.Folder); Assert.AreEqual(LaunchArgumentType.Select, descriptor.Type); Assert.IsNull(descriptor.Task); }
public void Tag() { // act var descriptor = LaunchArgumentsHelper.GetDescriptorFromArgument(this.workbook, "tag-12"); // verify Assert.AreEqual(this.workbook.Tags.ElementAt(0), descriptor.Folder); Assert.AreEqual(LaunchArgumentType.Select, descriptor.Type); Assert.IsNull(descriptor.Task); }
public void UnkownTask() { // act var descriptor = LaunchArgumentsHelper.GetDescriptorFromArgument(this.workbook, "task-100"); // verify Assert.AreEqual(LaunchArgumentType.Unknown, descriptor.Type); Assert.IsNull(descriptor.Task); Assert.IsNull(descriptor.Folder); }
public void Complete_Task() { // act var descriptor = LaunchArgumentsHelper.GetDescriptorFromArgument(this.workbook, "complete/task-9"); // verify Assert.AreEqual(this.workbook.Tasks[0], descriptor.Task); Assert.AreEqual(LaunchArgumentType.CompleteTask, descriptor.Type); Assert.IsNull(descriptor.Folder); }
public void Edit_Task_NoPrefix() { // act var descriptor = LaunchArgumentsHelper.GetDescriptorFromArgument(this.workbook, "task-9"); // verify Assert.AreEqual(this.workbook.Tasks[0], descriptor.Task); Assert.AreEqual(LaunchArgumentType.EditTask, descriptor.Type); Assert.IsNull(descriptor.Folder); }
public void WhitespaceArgs() { // act var descriptor = LaunchArgumentsHelper.GetDescriptorFromArgument(this.workbook, " "); // verify Assert.IsNotNull(descriptor); Assert.IsNull(descriptor.Task); Assert.IsNull(descriptor.Folder); Assert.AreEqual(LaunchArgumentType.Unknown, descriptor.Type); }
public async void Run(IBackgroundTaskInstance taskInstance) { var details = taskInstance.TriggerDetails as ToastNotificationActionTriggerDetail; if (details != null && !string.IsNullOrWhiteSpace(details.Argument)) { var persistenceLayer = new WinPersistenceLayer(automaticSave: false); var workbook = persistenceLayer.Open(tryUpgrade: true); workbook.Initialize(); var platformService = new PlatformService( ApplicationVersion.GetAppVersion(), workbook.Settings.GetValue <string>(CoreSettings.DeviceId), () => string.Empty); // important: load alarm manager so that we update reminders properly is a recurring task is created var alarmManager = new AlarmManager(workbook); LaunchArgumentDescriptor descriptor = LaunchArgumentsHelper.GetDescriptorFromArgument(workbook, details.Argument); if (descriptor.Task != null && descriptor.Type == LaunchArgumentType.CompleteTask) { descriptor.Task.IsCompleted = true; persistenceLayer.Save(); UpdateSyncMetadata(workbook, platformService, descriptor); var tileManager = new TileManager(workbook, new TrackingManager(false, DeviceFamily.Unkown), null, true); tileManager.LoadSecondaryTilesAsync().Wait(500); tileManager.UpdateTiles(); // signal changes (usefull if app is currently running) waitHandle.Set(); } } taskInstance.GetDeferral().Complete(); }
public void UpdateTiles() { try { // update main tile var todayView = this.workbook.Views.FirstOrDefault(v => v.ViewKind == ViewKind.Today); if (todayView != null) { var todayTasks = this.PickTasks(todayView); this.SetTileContent(StringResources.SystemView_TitleToday, todayTasks, TileUpdateManager.CreateTileUpdaterForApplication()); bool badgeSet = false; string badgeFolderValue = this.workbook.Settings.GetValue <string>(CoreSettings.BadgeValue); if (!string.IsNullOrWhiteSpace(badgeFolderValue)) { var descriptor = LaunchArgumentsHelper.GetDescriptorFromArgument(this.workbook, badgeFolderValue); if (descriptor != null && descriptor.Folder != null) { var folder = descriptor.Folder; this.SetBadgeValue(BadgeUpdateManager.CreateBadgeUpdaterForApplication(), this.PickTasks(folder).Count); badgeSet = true; } } if (!badgeSet) { this.SetBadgeValue(BadgeUpdateManager.CreateBadgeUpdaterForApplication(), 0); } } else { this.TrackEvent("Update main tile", "Could not find view today"); } } catch (Exception ex) { TrackingManagerHelper.Exception(ex, "Error while updating main tile"); } if (this.secondaryTiles == null) { this.TrackEvent("Update secondary tiles", "Secondary tiles are not loaded, skipping update"); return; } foreach (var secondaryTile in this.secondaryTiles) { try { TileUpdater tileUpdater = TileUpdateManager.CreateTileUpdaterForSecondaryTile(secondaryTile.TileId); IAbstractFolder folder = LaunchArgumentsHelper.GetDescriptorFromArgument(this.workbook, secondaryTile.TileId).Folder; ITask task = LaunchArgumentsHelper.GetDescriptorFromArgument(this.workbook, secondaryTile.TileId).Task; if (folder != null) { var title = folder.Name; var folderTasks = this.PickTasks(folder); this.SetTileContent(title, folderTasks, tileUpdater, folder); this.SetBadgeValue(BadgeUpdateManager.CreateBadgeUpdaterForSecondaryTile(secondaryTile.TileId), folderTasks.Count); } else if (task != null) { this.SetTileContent(task, tileUpdater); } else if (secondaryTile.TileId != quickAddTaskTileId) { // task that is linked to no folder and no task... this.SetTileContent(StringResources.Message_LiveTileRemoveMe, new List <ITask>(), tileUpdater); } } catch (Exception ex) { TrackingManagerHelper.Exception(ex, "Update secondary tiles"); } } }
public static void TryHandleArgs(object args) { try { if (!Ioc.HasType <IWorkbook>() || !Ioc.HasType <ITileManager>() || !Ioc.HasType <INavigationService>()) { return; } var workbook = Ioc.Resolve <IWorkbook>(); var platformService = Ioc.Resolve <IPlatformService>(); var navigationService = Ioc.Resolve <INavigationService>(); Frame rootFrame = Window.Current.Content as Frame; MainPage mainPage = null; MainPageViewModel viewModel = null; if (rootFrame != null && rootFrame.Content is MainPage) { mainPage = (MainPage)rootFrame.Content; } if (mainPage != null && mainPage.DataContext is MainPageViewModel) { viewModel = (MainPageViewModel)mainPage.DataContext; } string arguments = args as string; if (args is IActivatedEventArgs) { var activatedEventArgs = (IActivatedEventArgs)args; if (activatedEventArgs.Kind == ActivationKind.VoiceCommand) { var cortanaService = new CortanaRuntimeService(workbook); cortanaService.TryHandleActivation(new CortanaRuntimeAction(), activatedEventArgs); return; } } if (arguments == LaunchArgumentsHelper.QuickAddTask) { navigationService.FlyoutTo(typeof(TaskPage), null); return; } if (args is ToastNotificationActivatedEventArgs) { arguments = ((ToastNotificationActivatedEventArgs)args).Argument; if (!string.IsNullOrWhiteSpace(arguments) && arguments.ToLowerInvariant().StartsWith("http")) { platformService.OpenWebUri(arguments); } } var descriptor = LaunchArgumentsHelper.GetDescriptorFromArgument(workbook, arguments); if (descriptor.Task != null && descriptor.Type == LaunchArgumentType.EditTask) { navigationService.FlyoutTo(typeof(TaskPage), descriptor.Task); } else if (descriptor.Folder != null && descriptor.Type == LaunchArgumentType.Select && viewModel != null) { if (descriptor.Folder is IFolder) { SelectMenuItem <IFolder>(viewModel, descriptor.Folder.Id); } else if (descriptor.Folder is ITag) { SelectMenuItem <ITag>(viewModel, descriptor.Folder.Id); } else if (descriptor.Folder is ISmartView) { SelectMenuItem <ISmartView>(viewModel, descriptor.Folder.Id); } else if (descriptor.Folder is IView) { SelectMenuItem <IView>(viewModel, descriptor.Folder.Id); } else if (descriptor.Folder is IContext) { SelectMenuItem <IContext>(viewModel, descriptor.Folder.Id); } } else if (descriptor.Type == LaunchArgumentType.Sync && viewModel != null) { viewModel.SyncCommand.Execute(null); } } catch (Exception ex) { TrackingManagerHelper.Exception(ex, string.Format("LauncherHelper.TryHandleArgs: {0} {1}", args, ex)); } }
public void HandleException() { LaunchArgumentsHelper.GetDescriptorFromArgument(null, "test"); }
public GeneralSettingsPageViewModel(IWorkbook workbook, INavigationService navigationService, ITileManager tileManager) : base(workbook, navigationService) { if (tileManager == null) { throw new ArgumentNullException(nameof(tileManager)); } this.tileManager = tileManager; this.defaultContextChoices = new List <IContext>(this.Workbook.Contexts); this.defaultContextChoices.Insert(0, null); this.badgeValues = new List <IAbstractFolder> { new Folder { Name = StringResources.Settings_NoBadgeValue.ToLowerInvariant() } }; this.badgeValues.AddRange(this.Workbook.Views); this.badgeValues.AddRange(this.Workbook.SmartViews); this.badgeValues.AddRange(this.Workbook.Folders); this.badgeValues.AddRange(this.Workbook.Contexts); this.badgeValues.AddRange(this.Workbook.Tags); AutoDeleteFrequency frequency = this.Settings.GetValue <AutoDeleteFrequency>(CoreSettings.AutoDeleteFrequency); this.selectedAutoDelete = frequency.GetDescription(); TaskPriority priority = this.Settings.GetValue <TaskPriority>(CoreSettings.DefaultPriority); this.selectedDefaultPriority = priority.GetDescription(); string badgeValue = this.Settings.GetValue <string>(CoreSettings.BadgeValue); if (!string.IsNullOrWhiteSpace(badgeValue)) { var descriptor = LaunchArgumentsHelper.GetDescriptorFromArgument(this.Workbook, badgeValue); if (descriptor != null && descriptor.Folder != null) { this.originalSelectedBadgeValue = descriptor.Folder; this.selectedBadgeValue = descriptor.Folder; } } if (this.selectedBadgeValue == null) { this.selectedBadgeValue = this.badgeValues[0]; } int contextId = this.Settings.GetValue <int>(CoreSettings.DefaultContext); IContext defaultContext = this.Workbook.Contexts.FirstOrDefault(c => c.Id == contextId); if (defaultContext != null) { this.selectedDefaultContext = defaultContext; } DefaultDate defaultDueDate = this.Settings.GetValue <DefaultDate>(CoreSettings.DefaultDueDate); this.selectedDefaultDueDate = defaultDueDate.GetDescription(); DefaultDate defaultStartDate = this.Settings.GetValue <DefaultDate>(CoreSettings.DefaultStartDate); this.selectedDefaultStartDate = defaultStartDate.GetDescription(); CompletedTaskMode completedTaskMode = this.Settings.GetValue <CompletedTaskMode>(CoreSettings.CompletedTasksMode); this.selectedCompletedTaskMode = completedTaskMode.GetDescription(); this.useGroupedDates = this.Settings.GetValue <bool>(CoreSettings.UseGroupedDates); this.showNoDueWithOther = this.Settings.GetValue <bool>(CoreSettings.IncludeNoDateInViews); this.showFutureStartDates = this.Settings.GetValue <bool>(CoreSettings.ShowFutureStartDates); this.autoDeleteTags = this.Settings.GetValue <bool>(CoreSettings.AutoDeleteTags); this.completeTaskSetsProgress = this.Settings.GetValue <bool>(CoreSettings.CompleteTaskSetProgress); }