Esempio n. 1
0
        public bool RemoveItem(CollectionItem item)
        {
            using (IRepository <Template, long> repository = PersistentFactory.GetContext().GetRepository <Template, long>())
                repository.Remove(((TemplateItem)item.ItemContent).TaskTemplate);

            return(true);
        }
Esempio n. 2
0
        protected override void RunAction()
        {
            if (closedTasksGroup != null)
            {
                DateTime today = DateTime.Today;

                using (IRepository <Task, long> repository = PersistentFactory.GetContext().GetRepository <Task, long>())
                {
                    foreach (Task task in closedTasksGroup.AllTasks.ToList())
                    {
                        if ((today - task.Closed).TotalDays > 60)
                        {
                            task.State = TaskState.Archived;

                            closedTasksGroup.Dispatcher.Invoke(() => closedTasksGroup.RemoveTask(task));
                            repository.Update(task);

                            StatsHelper.Update(StatsData.TaskArchived);
                            NotificationHelper.Notify(NotificationType.TaskArchived, task.Name);

                            Log.Debug($"Background action archived {task.Name} task", this);
                        }
                    }
                }
            }
        }
Esempio n. 3
0
        public TemplatesAction()
            : base(3600)
        {
            DateTime lastRun = DateTime.Today, today = DateTime.Today;

            using (IRepository <Settings, long> repository = PersistentFactory.GetContext().GetRepository <Settings, long>())
            {
                Settings settings = SettingsFactory.GetSettings(repository);
                lastRun = settings.LastRun.GetDate();
            }

            if (lastRun < today)
            {
                using (IRepository <Template, long> repository = PersistentFactory.GetContext().GetRepository <Template, long>())
                {
                    while (lastRun < today)
                    {
                        foreach (Template template in repository.GetAll())
                        {
                            if (template.SatisfiesCondition(lastRun))
                            {
                                Task newTask = template.CreateTask(lastRun);
                                TaskCreated?.Invoke(newTask);

                                repository.Update(template);
                                Log.Info($"Task {newTask.Name} was created from template for day {lastRun.ToShortDateString()}", this);
                            }
                        }

                        lastRun = lastRun.AddDays(1);
                    }
                }
            }
        }
Esempio n. 4
0
        private void RefreshStats(object sender, SelectionChangedEventArgs e)
        {
            using (IRepository <StatsManager, long> repository = PersistentFactory.GetContext().GetRepository <StatsManager, long>())
            {
                StatsManager manager = repository.GetAll().FirstOrDefault();

                if (manager != null)
                {
                    StatsData result = new StatsData();

                    foreach (StatsData data in manager.GetData(((Period)cbPeriod.SelectedItem).Start, DateTime.Today))
                    {
                        result += data;
                    }

                    tbCreated.Text      = result.TasksCreated.ToString();
                    tbFromTemplate.Text = $"{result.TasksCreatedFromTemplate} ({(result.TasksCreated > 0 ? Math.Round((double)result.TasksCreatedFromTemplate / result.TasksCreated, 2) * 100 : 0)}%)";
                    tbClosed.Text       = $"{result.TasksClosed} ({(result.TasksCreated > 0 ? Math.Round((double)result.TasksClosed / result.TasksCreated, 2) * 100 : 0)}%)";
                    tbArchived.Text     = $"{result.TasksArchived} ({(result.TasksCreated > 0 ? Math.Round((double)result.TasksArchived / result.TasksCreated, 2) * 100 : 0)}%)";
                    tbRemoved.Text      = $"{result.TasksRemoved} ({(result.TasksCreated > 0 ? Math.Round((double)result.TasksRemoved / result.TasksCreated, 2) * 100 : 0)}%)";
                    tbVeryHigh.Text     = $"{result.TasksVeryHighPriority} ({(result.TasksClosed > 0 ? Math.Round((double)result.TasksVeryHighPriority / result.TasksClosed, 2) * 100 : 0)}%)";
                    tbHigh.Text         = $"{result.TasksHighPriority} ({(result.TasksClosed > 0 ? Math.Round((double)result.TasksHighPriority / result.TasksClosed, 2) * 100 : 0)}%)";
                    tbNormal.Text       = $"{result.TasksNormalPriority} ({(result.TasksClosed > 0 ? Math.Round((double)result.TasksNormalPriority / result.TasksClosed, 2) * 100 : 0)}%)";
                    tbLow.Text          = $"{result.TasksLowPriority} ({(result.TasksClosed > 0 ? Math.Round((double)result.TasksLowPriority / result.TasksClosed, 2) * 100 : 0)}%)";
                    tbVeryLow.Text      = $"{result.TasksVeryLowPriority} ({(result.TasksClosed > 0 ? Math.Round((double)result.TasksVeryLowPriority / result.TasksClosed, 2) * 100 : 0)}%)";
                }
            }
        }
        public static void Notify(NotificationType type, params string[] parameters)
        {
            Notification notification = NotificationManager.Instance.Notify(type, parameters);

            using (IRepository <Notification, long> repository = PersistentFactory.GetContext().GetRepository <Notification, long>())
                repository.Add(notification);

            Log.Debug($"Notification {type} was created.", null);
        }
Esempio n. 6
0
        protected override void RunAction()
        {
            using (IRepository <Settings, long> repository = PersistentFactory.GetContext().GetRepository <Settings, long>())
            {
                Settings settings = SettingsFactory.GetSettings(repository);
                settings.LastRun = DateTime.Now;
                repository.Update(settings);
            }

            Log.Debug("Last run in user settings was updated", this);
        }
Esempio n. 7
0
        public void UpdateItem(CollectionItem item, Window owner)
        {
            EditTemplateWindow window = new EditTemplateWindow(owner, ((TemplateItem)item.ItemContent).TaskTemplate);

            if (window.ShowDialog() ?? false)
            {
                using (IRepository <Template, long> repository = PersistentFactory.GetContext().GetRepository <Template, long>())
                    repository.Update(window.EditedTemplate);

                ((TemplateItem)item.ItemContent).Update();
            }
        }
Esempio n. 8
0
        public CollectionItem AddItem(Window owner)
        {
            EditTemplateWindow window = new EditTemplateWindow(owner);

            if (window.ShowDialog() ?? false)
            {
                using (IRepository <Template, long> repository = PersistentFactory.GetContext().GetRepository <Template, long>())
                    repository.Add(window.EditedTemplate);

                return(new CollectionItem(new TemplateItem(window.EditedTemplate)));
            }

            return(null);
        }
        public NotificationsWindow(Window owner)
        {
            Owner = owner;

            InitializeComponent();

            NotificationManager.Instance.Targets.Add(this);
            Closing += (sender, e) => NotificationManager.Instance.Targets.Remove(this);

            using (IRepository <Notification, long> repository = PersistentFactory.GetContext().GetRepository <Notification, long>())
                foreach (Notification notification in repository.GetAll().OrderByDescending(x => x.Created).Take(VISIBLE_NOTIFICATIONS_NUMBER).Reverse())
                {
                    AddNotification(notification);
                }
        }
Esempio n. 10
0
        private void Command_PostponeTask(object sender, ExecutedRoutedEventArgs e)
        {
            if (groupOpen.SelectedTask != null)
            {
                Task selectedTask = groupOpen.SelectedTask;
                selectedTask.State   = TaskState.Postponed;
                selectedTask.Updated = DateTime.Now;

                groupOpen.RemoveTask(selectedTask);
                groupPostponed.AddTask(selectedTask);

                using (IRepository <Task, long> repository = PersistentFactory.GetContext().GetRepository <Task, long>())
                    repository.Update(selectedTask);

                NotificationHelper.Notify(NotificationType.TaskDeferred, selectedTask.Name);
            }
        }
Esempio n. 11
0
        protected override void RunAction()
        {
            using (IRepository <Template, long> repository = PersistentFactory.GetContext().GetRepository <Template, long>())
            {
                foreach (Template template in repository.GetAll())
                {
                    if (template.SatisfiesCondition())
                    {
                        Task newTask = template.CreateTask();
                        TaskCreated?.Invoke(newTask);

                        repository.Update(template);
                        Log.Info($"Task {newTask.Name} was created from template", this);
                    }
                }
            }
        }
Esempio n. 12
0
        private void Command_NewTask(object sender, ExecutedRoutedEventArgs e)
        {
            EditTaskWindow window = new EditTaskWindow(this);

            if (window.ShowDialog() ?? false)
            {
                groupOpen.AddTask(window.EditedTask);

                using (IRepository <Task, long> repository = PersistentFactory.GetContext().GetRepository <Task, long>())
                    repository.Add(window.EditedTask);

                StatsHelper.Update(StatsData.TaskCreated);
                NotificationHelper.Notify(NotificationType.TaskCreated, window.EditedTask.Name);

                ActionsCollection.Instance.Add(new TaskDeadlineAction(window.EditedTask));
            }
        }
Esempio n. 13
0
        private PersistentFactory CreateTestFactory(bool cleanOldDataStore = true)
        {
            var dataStorePath = Path.Combine(TestContext.TestRunDirectory, "persistent40liteDatastore");

            if (cleanOldDataStore)
            {
                var dirinfo = new DirectoryInfo(dataStorePath);
                if (dirinfo.Exists) dirinfo.Delete(true);
            }

            var logger = new TestLogger();
            var storage = new PlainFilePersistentStorage(logger, dataStorePath);
            var serializer = new JsonPersistentSerializer(logger);

            var factory = new PersistentFactory(storage, serializer, logger);

            return factory;
        }
Esempio n. 14
0
        public static void Update(UpdateStatsData update)
        {
            using (IRepository <StatsManager, long> repository = PersistentFactory.GetContext().GetRepository <StatsManager, long>())
            {
                StatsManager manager = repository.GetAll().FirstOrDefault();

                if (manager == null)
                {
                    manager = new StatsManager();
                    repository.Add(manager);

                    Log.Debug("Stats manager created", null);
                }

                manager.Update(update);
                repository.Update(manager);
            }
        }
Esempio n. 15
0
        private void Command_RemoveTask(object sender, ExecutedRoutedEventArgs e)
        {
            TasksGroupControl selectedGroup = groups.FirstOrDefault(x => x.SelectedTask != null);

            if (selectedGroup != null)
            {
                Task selectedTask = selectedGroup.SelectedTask;
                selectedTask.State = TaskState.Removed;

                selectedGroup.RemoveTask(selectedTask);
                ActionsCollection.Instance.Remove(ActionsCollection.Instance.Actions.OfType <TaskDeadlineAction>().FirstOrDefault(x => x.Task == selectedTask));

                using (IRepository <Task, long> repository = PersistentFactory.GetContext().GetRepository <Task, long>())
                    repository.Update(selectedTask);

                StatsHelper.Update(StatsData.TaskRemoved);
                NotificationHelper.Notify(NotificationType.TaskRemoved, selectedTask.Name);
            }
        }
Esempio n. 16
0
        private void Command_EditTask(object sender, ExecutedRoutedEventArgs e)
        {
            deselect = false;
            TasksGroupControl selectedGroup = groups.FirstOrDefault(x => x.SelectedTask != null);

            if (selectedGroup != null && (selectedGroup.SelectedTask.State == TaskState.Open || selectedGroup.SelectedTask.State == TaskState.Postponed))
            {
                EditTaskWindow window = new EditTaskWindow(this, selectedGroup.SelectedTask);

                if (window.ShowDialog() ?? false)
                {
                    selectedGroup.UpdateTask(window.EditedTask);

                    using (IRepository <Task, long> repository = PersistentFactory.GetContext().GetRepository <Task, long>())
                        repository.Update(window.EditedTask);

                    NotificationHelper.Notify(NotificationType.TaskUpdated, window.EditedTask.Name);
                }
            }
        }
Esempio n. 17
0
        private void ActivityClick(BaseTask task, Image image)
        {
            if (task.IsActive)
            {
                task.CloseActivity();
                image.Source = new BitmapImage(new Uri("/Resources/rec.png", UriKind.Relative));

                NotificationHelper.Notify(NotificationType.TaskActivityStopped, task.Name);
            }
            else
            {
                task.StartActivity();
                image.Source = new BitmapImage(new Uri("/Resources/recActive.png", UriKind.Relative));

                NotificationHelper.Notify(NotificationType.TaskActivityStarted, task.Name);
            }

            using (IRepository <Task, long> repository = PersistentFactory.GetContext().GetRepository <Task, long>())
                repository.Update(Task);
        }
Esempio n. 18
0
        public static void AppStart()
        {
            CultureInfo culture = new CultureInfo(9);

            culture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
            culture.DateTimeFormat.LongTimePattern  = "HH:mm:ss";

            CultureInfo.CurrentCulture = CultureInfo.CurrentUICulture = culture;

            try
            {
                Log.Configure((LogLevel)Enum.Parse(typeof(LogLevel), Settings.Default.LogLevel), Settings.Default.LogDirectory, Settings.Default.LogFile);
            }
            catch
            {
                MessageBox.Show("Grizzlist application cannot start. There is a problem with configuration.", "Grizzlist startup error", MessageBoxButton.OK, MessageBoxImage.Error);
                Application.Current.Shutdown();
            }

            Log.Info("Grizzlist started", null);

            PersistentFactory.ConfigureContext(Settings.Default.AppDataFolder);
        }
Esempio n. 19
0
        private void SearchClick(object sender, RoutedEventArgs e)
        {
            if (pnlCondition.Children.Count == 1 && pnlCondition.Children[0] is ValidatableControl && ((ValidatableControl)pnlCondition.Children[0]).IsValid() && pnlCondition.Children[0] is IConditionControl)
            {
                ICondition condition = ((IConditionControl)pnlCondition.Children[0]).GetCondition();
                pnlTasks.Children.Clear();

                using (IRepository <Task, long> repository = PersistentFactory.GetContext().GetRepository <Task, long>())
                {
                    foreach (Task task in repository.GetAll().Where(x => x.State != TaskState.Removed))
                    {
                        if (condition.Satisfies(task))
                        {
                            SearchItemControl control = new SearchItemControl(this, task);
                            control.OnSelect += t => Deselect();
                            pnlTasks.Children.Add(control);
                        }
                    }

                    tbResult.Text = $"{pnlTasks.Children.Count} tasks was found";
                }
            }
        }
Esempio n. 20
0
        public MainWindow()
        {
            InitializeComponent();

            NotificationManager.Instance.Targets.Add(this);
            Closing += (sender, e) => NotificationManager.Instance.Targets.Remove(this);

            groupOpen      = new TasksGroupControl("Open tasks");
            groupPostponed = new TasksGroupControl("Postponed tasks");
            groupClosed    = new TasksGroupControl("Closed tasks");

            groups.Add(groupOpen);
            groups.Add(groupPostponed);
            groups.Add(groupClosed);

            foreach (TasksGroupControl group in groups)
            {
                pnlGroups.Children.Add(group);
                group.OnTaskSelect   += OnTaskSelect;
                group.OnTaskSelected += OnTaskSelected;
            }

            groupOpen.BackgroundSelector              = new OpenTaskBackgroundSelector();
            groupPostponed.BackgroundSelector         = new OpenTaskBackgroundSelector();
            groupClosed.BackgroundSelector            = new TaskBackgroundSelector();
            groupOpen.DateSelector                    = new DeadlineSelector();
            groupPostponed.DateSelector               = new DeadlineSelector();
            groupClosed.DateSelector                  = new ClosedSelector();
            groupOpen.ActivityVisibilitySelector      = new SimpleBoolSelector(true);
            groupPostponed.ActivityVisibilitySelector = new SimpleBoolSelector(false);
            groupClosed.ActivityVisibilitySelector    = new SimpleBoolSelector(false);
            groupOpen.GroupIconsSelector              = new DeadlineIconsSelector();
            groupPostponed.GroupIconsSelector         = new DeadlineIconsSelector();
            groupOpen.TaskDoubleClick                += t => Command_EditTask(null, null);
            groupPostponed.TaskDoubleClick           += t => Command_EditTask(null, null);
            groupClosed.TaskDoubleClick              += t => Command_ShowTask(null, null);
            groupOpen.AddOrderSelector(x => x.Task.Deadline, false).AddOrderSelector(x => x.Task.Priority, true);
            groupPostponed.AddOrderSelector(x => x.Task.Deadline, false).AddOrderSelector(x => x.Task.Priority, true);
            groupClosed.AddOrderSelector(x => x.Task.Closed, true);
            groupOpen.OnTaskControlCreated      += t => ActionsCollection.Instance.Add(new TaskControlAction(t));
            groupPostponed.OnTaskControlCreated += t => ActionsCollection.Instance.Add(new TaskControlAction(t));
            groupOpen.OnTaskControlRemove       += t => ActionsCollection.Instance.Remove(ActionsCollection.Instance.Actions.OfType <TaskControlAction>().FirstOrDefault(x => x.TaskControl == t));
            groupPostponed.OnTaskControlRemove  += t => ActionsCollection.Instance.Remove(ActionsCollection.Instance.Actions.OfType <TaskControlAction>().FirstOrDefault(x => x.TaskControl == t));
            groupOpen.Collapse(false);

            ActionsCollection.Instance.Add(new DeadlineIconsAction(groupOpen));
            ActionsCollection.Instance.Add(new DeadlineIconsAction(groupPostponed));
            ActionsCollection.Instance.Add(new TaskArchivingAction(groupClosed));

            using (IRepository <Task, long> repository = PersistentFactory.GetContext().GetRepository <Task, long>())
            {
                foreach (Task task in repository.GetAll())
                {
                    switch (task.State)
                    {
                    case TaskState.Open:
                        groupOpen.AddTask(task);
                        ActionsCollection.Instance.Add(new TaskDeadlineAction(task));
                        break;

                    case TaskState.Postponed:
                        groupPostponed.AddTask(task);
                        ActionsCollection.Instance.Add(new TaskDeadlineAction(task));
                        break;

                    case TaskState.Closed:
                        groupClosed.AddTask(task);
                        break;
                    }
                }
            }

            TemplatesAction templatesAction = new TemplatesAction();

            templatesAction.TaskCreated += task =>
            {
                if (task != null)
                {
                    groupOpen.Dispatcher.Invoke(() => groupOpen.AddTask(task));

                    using (IRepository <Task, long> repository = PersistentFactory.GetContext().GetRepository <Task, long>())
                        repository.Add(task);

                    StatsHelper.Update(StatsData.TaskCreated);
                    StatsHelper.Update(StatsData.TaskCreatedFromTemplate);
                    NotificationHelper.Notify(NotificationType.TaskCreatedFromTemplate, task.Name);

                    ActionsCollection.Instance.Add(new TaskDeadlineAction(task));
                }
            };

            ActionsCollection.Instance.Add(templatesAction);
            ActionsCollection.Instance.Add(new LastRunAction());

            backgroundThread.Start();
            RefreshMenu();

            Log.Debug($"{groups.Sum(x => x.Count)} tasks loaded", this);
            Log.Info("Main window opened", this);
        }
Esempio n. 21
0
        private void App_OnStartup(object sender, StartupEventArgs e)
        {
            try
            {
                Current.Dispatcher.UnhandledException +=
                    (o, args) =>
                    {
                        ErrorManager.ShowError("Something unexpected happened in the launcher, please report this error.", args.Exception, true);
                        args.Handled = true;
                    };

                uniqueLaunchGateway = new WurmAssistantLauncherGateway(doNotAutoEnter: true);

                uniqueLaunchGateway.Enter(1000);

                LauncherPipeCom = new PipeCom(uniqueLaunchGateway.UniqueId, "Default");
                LauncherPipeCom.LoginAsEndpointAlpha();

                LauncherTaskbarIcon = (TaskbarIcon)FindResource("LauncherTaskbarIcon");

                AppContext.BuildContext();

                Logger = new SimpleLogger();
                Logger.SetLogSaveDir(PathEx.CombineWithCodeBase("LauncherLogs"));
                Logger.SetConsoleHandlingMode(SimpleLogger.ConsoleHandlingOption.SendConsoleToLoggerOutputDIAG);
                SpellbookLogger.Logged += (o, args) =>
                {
                    switch (args.Severity)
                    {
                        case LogSeverity.Debug:
                            Logger.LogDebug(args.Message, args.Source, args.Exception);
                            break;
                        case LogSeverity.Info:
                            Logger.LogInfo(args.Message, args.Source, args.Exception);
                            break;
                        case LogSeverity.Error:
                            Logger.LogError(args.Message, args.Source, args.Exception);
                            break;
                    }
                };
                var logger = new PersistentLogger();
                var storage = new PlainFilePersistentStorage(logger, AppContext.LauncherSettingsDir);
                var serializer = new JsonPersistentSerializer(logger);
                PersistentFactory = new PersistentFactory(storage, serializer, logger);

                var initialSetup = new InitialSetupManager();
                initialSetup.Execute();

                Settings = PersistentFactory.Create<LauncherSettings>("LauncherSettings");

                StartupUri = new Uri(@"Views\MainWindow.xaml", UriKind.Relative);
            }
            catch (GatewayClosedException)
            {
                // try activate existing instance of launcher
                using (var pipecom = new PipeCom(uniqueLaunchGateway.UniqueId, "Default"))
                {
                    pipecom.LoginAsAlphaClient();
                    pipecom.TrySend("ShowWindow", null);
                }
                Shutdown();
            }
            catch (Exception exception)
            {
                MessageBox.Show("Unexpected error while starting the Launcher, please report this bug! Error: " +
                                exception.Message);
                Logger.LogError("error on app init", this, exception);
                Shutdown();
            }
        }
Esempio n. 22
0
        public void Update()
        {
            btnActivity.Visibility = ActivityVisibilitySelector?.Select() ?? false ? Visibility.Visible : Visibility.Collapsed;
            btnActivity.Source     = new BitmapImage(new Uri(Task.IsActive ? "/Resources/recActive.png" : "/Resources/rec.png", UriKind.Relative));

            pnlPriority.Fill = new SolidColorBrush(TaskPriorityColors.GetColor(Task.Priority));
            tbName.Text      = Task.Name;
            UpdateDate();
            tbDescription.Text = Task.Description;

            if (Task.SubTasks.Count == 0)
            {
                rowSubtasks.Height = new GridLength(0);
            }
            else
            {
                rowSubtasks.Height = new GridLength(1, GridUnitType.Star);
            }

            gridSubtasks.RowDefinitions.Clear();
            gridSubtasks.Children.Clear();

            foreach (SubTask subtask in Task.SubTasks)
            {
                gridSubtasks.RowDefinitions.Add(new RowDefinition());

                Image imgCompleted = new Image()
                {
                    Source = new BitmapImage(new Uri("/Resources/completed_24_green.png", UriKind.Relative)), Margin = new Thickness(2, 2, 2, string.IsNullOrEmpty(subtask.Description) ? 10 : 2), Opacity = subtask.Completed ? 1 : 0.3
                };
                TextBlock tbSubtaskName = new TextBlock()
                {
                    Margin = new Thickness(4, 2, 0, string.IsNullOrEmpty(subtask.Description) ? 10 : 2), FontWeight = FontWeights.Bold, Text = subtask.Name, Opacity = subtask.Completed ? 0.3 : 1
                };

                gridSubtasks.Children.Add(imgCompleted);
                gridSubtasks.Children.Add(tbSubtaskName);

                Grid.SetColumn(imgCompleted, 0);
                Grid.SetColumn(tbSubtaskName, 1);
                Grid.SetRow(imgCompleted, gridSubtasks.RowDefinitions.Count - 1);
                Grid.SetRow(tbSubtaskName, gridSubtasks.RowDefinitions.Count - 1);

                imgCompleted.MouseLeftButtonDown += (sender, e) => {
                    if (!subtask.Completed)
                    {
                        subtask.Close();
                        Update();

                        using (IRepository <Task, long> repository = PersistentFactory.GetContext().GetRepository <Task, long>())
                            repository.Update(Task);
                    }
                };

                if (!subtask.Completed && (ActivityVisibilitySelector?.Select() ?? false))
                {
                    Image imgActivity = new Image()
                    {
                        Source = new BitmapImage(new Uri(subtask.IsActive ? "/Resources/recActive.png" : "/Resources/rec.png", UriKind.Relative)), Margin = new Thickness(2, 2, 2, string.IsNullOrEmpty(subtask.Description) ? 10 : 2)
                    };

                    gridSubtasks.Children.Add(imgActivity);

                    Grid.SetColumn(imgActivity, 2);
                    Grid.SetRow(imgActivity, gridSubtasks.RowDefinitions.Count - 1);

                    imgActivity.MouseLeftButtonDown += (sender, e) => ActivityClick(subtask, imgActivity);
                }

                if (!string.IsNullOrEmpty(subtask.Description))
                {
                    gridSubtasks.RowDefinitions.Add(new RowDefinition());

                    TextBlock tbSubtaskDescription = new TextBlock()
                    {
                        Margin = new Thickness(4, 0, 0, 10), TextWrapping = TextWrapping.Wrap, Text = subtask.Description, Opacity = subtask.Completed ? 0.2 : 1
                    };

                    gridSubtasks.Children.Add(tbSubtaskDescription);

                    Grid.SetColumn(tbSubtaskDescription, 1);
                    Grid.SetRow(tbSubtaskDescription, gridSubtasks.RowDefinitions.Count - 1);
                    Grid.SetColumnSpan(tbSubtaskDescription, 2);
                }
            }

            if (string.IsNullOrEmpty(Task.Note) && Task.Attachments.Count == 0 && Task.Drawings.Count == 0)
            {
                rowAttachments.Height = new GridLength(0);
            }
            else
            {
                rowAttachments.Height = new GridLength(1, GridUnitType.Star);
            }

            imgNote.Visibility    = string.IsNullOrEmpty(Task.Note) ? Visibility.Collapsed : Visibility.Visible;
            imgDrawing.Visibility = Task.Drawings.Count == 0 ? Visibility.Collapsed : Visibility.Visible;
            imgFile.Visibility    = Task.Attachments.Count == 0 ? Visibility.Collapsed : Visibility.Visible;

            if (string.IsNullOrEmpty(Task.Note))
            {
                HideNote();
            }

            tbNote.Text = Task.Note;

            if (Task.Tags.Count == 0)
            {
                rowTags.Height = new GridLength(0);
            }
            else
            {
                rowTags.Height = new GridLength(1, GridUnitType.Star);
            }

            pnlTags.Children.Clear();
            foreach (Tag tag in Task.Tags)
            {
                pnlTags.Children.Add(new Border()
                {
                    Margin = new Thickness(6), Padding = new Thickness(4, 2, 4, 2), CornerRadius = new CornerRadius(4), Background = new SolidColorBrush(Color.FromRgb(255, 244, 204)), BorderThickness = new Thickness(1), BorderBrush = new SolidColorBrush(Color.FromRgb(255, 216, 0)), Child = new TextBlock()
                    {
                        Text = tag.Value
                    }
                });
            }

            UpdateBackground();
        }
Esempio n. 23
0
 public IEnumerable <CollectionItem> LoadItems()
 {
     using (IRepository <Template, long> repository = PersistentFactory.GetContext().GetRepository <Template, long>())
         return(repository.GetAll().Select(x => new CollectionItem(new TemplateItem(x))));
 }