Ejemplo n.º 1
0
        //#region Task Context Menu

        //private void taskGrid_ContextMenuOpening(object sender, ContextMenuEventArgs e)
        //{
        //	Grid grid = sender as Grid;
        //	TreeViewItem item = (grid.TemplatedParent as ContentPresenter).TemplatedParent as TreeViewItem;
        //	item.IsSelected = true;
        //	Task task = item.Header as Task;

        //	MenuItem menu = grid.ContextMenu.Items[0] as MenuItem;
        //	Image img = new Image();
        //	img.Stretch = Stretch.None;

        //	if (task.Status == Task.StatusPhase.Completed)
        //	{
        //		menu.Header = "_Flag Incomplete";
        //		img.Source = new BitmapImage(new Uri("pack://application:,,,/Daytimer.Images;component/Images/redflag.png", UriKind.Absolute));
        //	}
        //	else
        //	{
        //		menu.Header = "_Mark Complete";
        //		img.Source = new BitmapImage(new Uri("pack://application:,,,/Daytimer.Images;component/Images/greencheck.png", UriKind.Absolute));
        //	}

        //	menu.Icon = img;
        //}

        //private void deleteMenuItem_Click(object sender, RoutedEventArgs e)
        //{
        //	TreeViewItem item = (((sender as MenuItem).Parent as ContextMenu).TemplatedParent as ContentPresenter).TemplatedParent as TreeViewItem;
        //	deleteTask(item);
        //}

        //private void completeMenuItem_Click(object sender, RoutedEventArgs e)
        //{
        //	MarkComplete();
        //}

        //private void collapseAllGroups_Click(object sender, RoutedEventArgs e)
        //{
        //	foreach (TreeViewItem each in tasksTreeView.Items)
        //		each.IsExpanded = false;
        //}

        //private void expandAllGroups_Click(object sender, RoutedEventArgs e)
        //{
        //	foreach (TreeViewItem each in tasksTreeView.Items)
        //		each.IsExpanded = true;
        //}

        //private void deleteGroup_Click(object sender, RoutedEventArgs e)
        //{
        //	TreeViewItem header = (sender as MenuItem).CommandTarget as TreeViewItem;

        //	int count = header.Items.Count;

        //	for (int i = 0; i < count; i++)
        //	{
        //		TreeViewItem item = header.Items[i] as TreeViewItem;

        //		// Delete the task from the file
        //		Task task = item.Header as Task;
        //		TaskDatabase.Delete(task);
        //	}

        //	if (AnimationHelpers.AnimationsEnabled)
        //	{
        //		AnimationHelpers.DeleteAnimation parentDeleteAnim = new AnimationHelpers.DeleteAnimation(header);
        //		parentDeleteAnim.OnAnimationCompletedEvent += parentDeleteAnim_OnAnimationCompletedEvent;
        //		parentDeleteAnim.Animate();

        //		if (tasksTreeView.Items.Count <= 1)
        //		{
        //			statusText.Text = "We didn't find anything to show here.";
        //			AnimationHelpers.Fade fade = new AnimationHelpers.Fade(statusText, AnimationHelpers.FadeDirection.In);
        //		}
        //	}
        //	else
        //	{
        //		tasksTreeView.Items.Remove(header);
        //		if (tasksTreeView.Items.Count == 0)
        //		{
        //			statusText.Text = "We didn't find anything to show here.";
        //			statusText.Visibility = Visibility.Visible;
        //			statusText.Opacity = 1;
        //		}
        //	}
        //}

        //#endregion

        #region Drag-reorder items

        private void tasksTreeView_ItemReorder(object sender, ItemReorderEventArgs e)
        {
            if (!e.OldParent.HasItems)
            {
                tasksTreeView.Items.Remove(e.OldParent);
            }

            int index = e.NewParent.Items.IndexOf(e.Item);

            UserTask task = e.Item.Header as UserTask;

            string header = e.NewParent.Header.ToString();

            // Hardcode "Today" since tasks due in previous days will also be
            // shown under "Today": the user will expect the task dragged in
            // to be changed to DateTime.Now.Date, not some date in the past.
            if (header == "Today")
            {
                task.DueDate = DateTime.Now.Date;
            }
            else
            {
                task.DueDate = e.NewParent.Tag as DateTime?;
            }

            if (task.StartDate > task.DueDate)
            {
                task.StartDate = task.DueDate;
            }

            e.Item.Header = new UserTask(false);
            e.Item.Header = task;

            if (task.IsOverdue && task.Status != UserTask.StatusPhase.Completed)
            {
                e.Item.Foreground = new SolidColorBrush(Color.FromArgb(255, 218, 17, 17));
            }
            else
            {
                e.Item.Foreground = Brushes.Black;
            }

            ItemReorderEventArgs args = new ItemReorderEventArgs(e.Item, e.OldParent, e.NewParent, e.Copied, e.DragDirection);

            if (TasksView.ApplicationTasksView != null)
            {
                TaskReorderCommand.Execute(args, TasksView.ApplicationTasksView);
            }

            TaskReorderCommand.MassExecute(args, LoadedTasksPeekContents, this);

            if (!e.Copied)
            {
                TaskDatabase.Delete(task, false);
            }

            //if (e.OldParent == e.NewParent && e.DragDirection == DragDirection.Up)
            //	TaskDatabase.Insert(index - 1, task);
            //else
            TaskDatabase.Insert(index, task);
        }
Ejemplo n.º 2
0
        private static void ExecutedTaskReorderCommand(object sender, ExecutedRoutedEventArgs e)
        {
            ItemReorderEventArgs args      = (ItemReorderEventArgs)e.Parameter;
            TasksPeekContent     _sender   = (TasksPeekContent)sender;
            UserTask             _peekTask = (UserTask)args.Item.Header;
            TreeViewItem         tvItem    = null;

            foreach (TreeViewItem parent in _sender.tasksTreeView.Items)
            {
                foreach (TreeViewItem child in parent.Items)
                {
                    if (((DatabaseObject)child.Header).ID == _peekTask.ID)
                    {
                        tvItem = child;
                        break;
                    }
                }

                if (tvItem != null)
                {
                    break;
                }
            }

            if (tvItem == null)
            {
                UserTask task = (UserTask)args.Item.Header;

                int newIndex = ((ItemsControl)args.Item.Parent).Items.IndexOf(args.Item);

                string header = "No Date";

                if (task.DueDate != null)
                {
                    header = TasksView.GetFriendlyName(task.DueDate.Value);
                }

                TreeViewItem group = new TreeViewItem()
                {
                    Header = header
                };

                _sender.AddTask(new UserTask(task), group, true, newIndex);
            }
            else
            {
                UserTask task = (UserTask)tvItem.Header;
                task.DueDate   = _peekTask.DueDate;
                task.StartDate = _peekTask.StartDate;

                string header = "No Date";

                if (task.DueDate != null)
                {
                    header = TasksView.GetFriendlyName(task.DueDate.Value);
                }

                TreeViewItem group = new TreeViewItem();
                group.Header = header;

                int origIndex = ((ItemsControl)tvItem.Parent).Items.IndexOf(tvItem);
                int newIndex  = ((ItemsControl)args.Item.Parent).Items.IndexOf(args.Item);

                if (origIndex < newIndex && args.NewParent == args.OldParent && Settings.AnimationsEnabled)
                {
                    newIndex++;
                }

                _sender.deleteTask(tvItem, false);
                _sender.AddTask(task, group, true, newIndex);

                if (task.IsOverdue && task.Status != UserTask.StatusPhase.Completed)
                {
                    tvItem.Foreground = new SolidColorBrush(Color.FromArgb(255, 218, 17, 17));
                }
                else
                {
                    tvItem.Foreground = Brushes.Black;
                }
            }
        }