private void OnItemSelected(object sender, DialogClickEventArgs args)
        {
            if (model != null)
            {
                var m = adapter.GetEntry(args.Which);

                TaskModel      task      = null;
                ProjectModel   project   = null;
                WorkspaceModel workspace = null;

                if (m is TaskModel)
                {
                    task      = (TaskModel)m;
                    project   = task != null ? task.Project : null;
                    workspace = project != null ? project.Workspace : null;
                }
                else if (m is ProjectAndTaskView.Project)
                {
                    var wrap = (ProjectAndTaskView.Project)m;
                    if (wrap.IsNoProject)
                    {
                        workspace = wrap.WorkspaceModel;
                    }
                    else if (wrap.IsNewProject)
                    {
                        var proj = wrap.Model;
                        // Show create project dialog instead
                        new CreateProjectDialogFragment(model, proj.Workspace, proj.Color)
                        .Show(FragmentManager, "new_project_dialog");
                    }
                    else
                    {
                        project   = wrap.Model;
                        workspace = project != null ? project.Workspace : null;
                    }
                }
                else if (m is ProjectAndTaskView.Workspace)
                {
                    var wrap = (ProjectAndTaskView.Workspace)m;
                    workspace = wrap.Model;
                }

                if (project != null || task != null || workspace != null)
                {
                    model.Workspace = workspace;
                    model.Project   = project;
                    model.Task      = task;
                }
            }

            Dismiss();
        }
예제 #2
0
        private async void OnItemSelected(object sender, DialogClickEventArgs args)
        {
            if (modelLoaded && model != null)
            {
                var m = adapter.GetEntry(args.Which);

                TaskModel      task      = null;
                ProjectModel   project   = null;
                WorkspaceModel workspace = null;

                if (m is TaskData)
                {
                    task = (TaskModel)(TaskData)m;
                    if (task.Project != null)
                    {
                        await task.Project.LoadAsync();

                        project   = task.Project;
                        workspace = project.Workspace ?? task.Workspace;
                    }
                    else
                    {
                        workspace = task.Workspace;
                    }
                }
                else if (m is ProjectAndTaskView.Project)
                {
                    var wrap = (ProjectAndTaskView.Project)m;
                    if (wrap.IsNoProject)
                    {
                        workspace = new WorkspaceModel(wrap.WorkspaceId);
                    }
                    else if (wrap.IsNewProject)
                    {
                        var data = wrap.Data;
                        var ws   = new WorkspaceModel(data.WorkspaceId);
                        // Show create project dialog instead
                        new CreateProjectDialogFragment(model, ws, data.Color)
                        .Show(FragmentManager, "new_project_dialog");
                    }
                    else
                    {
                        project   = (ProjectModel)wrap.Data;
                        workspace = project.Workspace;
                    }
                }
                else if (m is ProjectAndTaskView.Workspace)
                {
                    var wrap = (ProjectAndTaskView.Workspace)m;
                    workspace = (WorkspaceModel)wrap.Data;
                }

                if (project != null || task != null || workspace != null)
                {
                    model.Workspace = workspace;
                    model.Project   = project;
                    model.Task      = task;
                    await model.SaveAsync();
                }
            }
        }