/// <summary> /// 创建项目 /// </summary> /// <param name="_chooseFolderPath">用户选择的路径</param> /// <param name="_projectName">项目的名字</param> /// <param name="_modeType">项目的模式</param> /// <returns>是否创建成功?</returns> public bool CreateProject(string _chooseFolderPath, string _projectName, ModeType _modeType) { try { /* 判断文件夹是否存在 */ DirectoryInfo _directoryInfo = new DirectoryInfo(_chooseFolderPath);//文件夹的信息 if (_directoryInfo.Exists == false) { return(false); } /* 去除ProjectName中的非法字符: * 文件夹和文件的 名字中,不能包含:? * : " < > \ / | * 并且,不能以空格开头*/ string _projectFileName = StringTool.RemoveInvaildChat(_projectName); /* 如果项目名为空格,或者是去除了违规字符后为空 */ if (_projectFileName == null || _projectFileName == "") { //设置新的文件名字 _projectFileName = "New Bugs"; } /*判断是否有相同的文件夹*/ //判断是否有相同的文件夹(返回值是一个唯一的文件夹【xxxx/文件夹 (1)/】) string _onlyFolderPath = FolderTool.AvoidSameFolder(_chooseFolderPath + "/" + _projectFileName); //取到文件夹的名字(这个文件夹不会和任何文件夹重名) DirectoryInfo _onlyFolderInfo = new DirectoryInfo(_onlyFolderPath); _projectFileName = _onlyFolderInfo.Name; /* Project数据 */ //创建ProjectData对象 ProjectData _projectData = new ProjectData(); _projectData.Id = DateTimeTool.DateTimeToLong(DateTime.UtcNow, TimeFormatType.YearMonthDayHourMinuteSecondMillisecond); _projectData.Name = _projectName; _projectData.FileName = _projectFileName; _projectData.ModeType = _modeType; //修改ProjectData属性 ProjectData = _projectData; //工程文件夹的路径 ProjectFolderPath = _chooseFolderPath + "\\" + _projectFileName; /* 创建文件和文件夹 */ //创建:[项目文件夹]、[Bug文件夹]、[记录文件夹]、[图片文件夹]、[备份文件夹] CreateFolders(); //创建:[项目文件]、[Bug文件] CreateFiles(); /* 保存Project数据 */ bool _isSave = SaveProject(); if (_isSave == false) { return(false); } /* 打开协同合作功能 */ AppManager.Systems.CollaborationSystem.Handle(true); return(true); } catch (Exception e) { //输出错误 AppManager.Uis.ErrorUi.UiControl.TipContent = e.ToString(); AppManager.Uis.ErrorUi.OpenOrClose(true); return(false); } }
/// <summary> /// 读取项目 /// </summary> /// <param name="_projectFilePath">项目文件夹的路径(就是.bugs文件的路径)(如果为null,就代表使用当前的savePath属性+ProjectName属性)</param> /// <returns>是否读取成功?</returns> public bool LoadProject(string _projectFilePath = null) { try { /* 设置项目路径 */ //如果参数为null if (_projectFilePath == null) { _projectFilePath = ProjectFilePath; } /* 设置文件信息 */ //FileInfo类 用于读取文件信息 FileInfo _fileInfo = new FileInfo(_projectFilePath); /* 判断文件是否存在 */ if (_fileInfo.Exists == false)//如果不存在 { return(false); } //如果文件存在,修改projectFolderPath属性 ProjectFolderPath = _fileInfo.DirectoryName; string _fileName = Path.GetFileNameWithoutExtension(_fileInfo.FullName); /* 读取ProjectData */ //读取[项目名.bugs]的Json文本中的内容 string _projectJsonText = File.ReadAllText(_projectFilePath); //然后把Json文本解析成ProjectBaseData对象 ProjectBaseData _projectBaseData = null; try { _projectBaseData = JsonMapper.ToObject <ProjectBaseData>(_projectJsonText); } catch (Exception e) { } //判断是否是.bug文件(如果没有Bug的名字,就不打开这个项目,并报错) if (_projectBaseData == null || _projectBaseData.Name == null || _projectBaseData.Name == "") { } else { //把ProjectBaseData对象,转化为ProjectData对象 ProjectData _projectData = ProjectBaseData.BaseDataToData(_projectBaseData); //如果取到了数据 if (_projectData != null) { //赋值 _projectData.FileName = _fileName; this.ProjectData = _projectData; //读取排序数据 AppManager.Systems.SortSystem.Load(); //创建文件夹和文件 CreateFolders(); CreateFiles(); /* 打开协同合作功能 */ AppManager.Systems.CollaborationSystem.Handle(true); //返回值 return(true); } } //返回值 return(false); } catch (Exception e) { //输出错误 AppManager.Uis.ErrorUi.UiControl.TipContent = e.ToString(); AppManager.Uis.ErrorUi.OpenOrClose(true); return(false); } }
/// <summary> /// 清空[项目相关]的数据 /// </summary> public void ClearProjectData() { ProjectData = new ProjectData(); SortData = new SortData(); OtherData = new OtherData(); }