/// <summary> /// 当软件的[语言]改变时 /// </summary> /// <param name="_languageType">是中文的性格?还是英文的性格?</param> public void OnLanguageChange(LanguageType _languageType) { //修改每一个数据 for (int i = 0; i < LatelyProjectDatas.Count; i++) { LatelyProjectData _data = LatelyProjectDatas[i]; if (_data != null) { _data.OpenTimeString = DateTimeTool.DateTimeToString(_data.OpenTime.ToLocalTime(), TimeFormatType.YearMonthDayHourMinute); if (_data.Mode == ModeType.Collaboration) { _data.ModeString = AppManager.Systems.LanguageSystem.CollaborativeModeString; } else { _data.ModeString = ""; } } } //修改[最近项目]的右键菜单 if (AppManager.Uis.LatelyProjectUi.UiControl != null && AppManager.Uis.LatelyProjectUi.UiControl.Items != null) { //获取所有的Item List <LatelyProjectListItemControl> _items = AppManager.Uis.LatelyProjectUi.UiControl.Items; //遍历所有的Item for (int i = 0; i < _items.Count; i++) { _items[i].OpenFolderTextBlock.Text = AppManager.Systems.LanguageSystem.LatelyProjectItemOpenFolderString; _items[i].RemoveTextBlock.Text = AppManager.Systems.LanguageSystem.LatelyProjectItemRemoveString; } } }
/// <summary> /// 当点击[列表的Item]的[打开文件夹]按钮的时候 /// </summary> /// <param name="_source">触发事件的LatelyProjectData对象</param> public void ClickListItemOpenFolderButton(LatelyProjectData _source) { //取到文件的信息 FileInfo _fileInfo = new FileInfo(_source.Path); //如果文件存在 if (_fileInfo.Exists == true) { //打开文件夹 try { System.Diagnostics.Process.Start(_fileInfo.Directory.FullName);//打开文件夹 } catch (Exception e) { } } //如果文件不存在 else { //提示:是否把这个数据从文件中移除? AppManager.Uis.LatelyProjectTipUi.UiControl.TipTitle = AppManager.Systems.LanguageSystem.LatelyProjectTipTitle; AppManager.Uis.LatelyProjectTipUi.UiControl.TipContent = AppManager.Systems.LanguageSystem.LatelyProjectTipContent + "\n" + "\" " + StringTool.Clamp(_source.Name, 20) + " \""; //把数据传递给提示界面 AppManager.Uis.LatelyProjectTipUi.UiControl.Tag = _source; //打开提示界面 AppManager.Uis.LatelyProjectTipUi.OpenOrClose(true); } }
/// <summary> /// 当点击[列表的Item]的[从列表中移除]按钮的时候 /// </summary> /// <param name="_source">触发事件的LatelyProjectData对象</param> public void ClickListItemRemoveButton(LatelyProjectData _source) { //从列表中删除这个项目 if (_source != null) { AppManager.Systems.LatelySystem.Remove(_source);//把这个数据从列表中删除 } }
/// <summary> /// 删除1个数据 /// </summary> /// <param name="_data">数据</param> public void Remove(LatelyProjectData _data) { //删除数据 LatelyProjectDatas.Remove(_data); //保存 Save(); }
/// <summary> /// 修改1个数据 /// (修改打开时间) /// </summary> /// <param name="_data">数据</param> public void Change(LatelyProjectData _data) { //标识符:是否有相同的数据 bool _isSame = false; //遍历所有的数据 for (int i = 0; i < LatelyProjectDatas.Count; i++) { /* 如果有一样的数据 */ if (LatelyProjectData.Compare(CompareType.All, _data, LatelyProjectDatas[i]) == true) { //修改当前的打开时间 LatelyProjectDatas[i] = _data; _isSame = true; break; } } //如果没有一样的数据 ,就把这个数据添加到所有数据中 if (_isSame == false) { LatelyProjectDatas.Add(_data); } //修改这个数据的打开时间 _data.OpenTime = DateTime.UtcNow; //然后进行排序 ObservableCollection <LatelyProjectData> _sortDatas = Sort(LatelyProjectDatas); //然后只保留10个数据 List <LatelyProjectData> _deleteDatas = new List <LatelyProjectData>(); //要删除的数据 for (int i = 0; i < _sortDatas.Count; i++) //找出要删除的数据 { if (i >= 10) { _deleteDatas.Add(_sortDatas[i]); } } for (int i = 0; i < _deleteDatas.Count; i++)//删除要删除的数据 { _sortDatas.Remove(_deleteDatas[i]); } //赋值 LatelyProjectDatas = _sortDatas; //更新Ui OnLanguageChange(AppManager.Systems.LanguageSystem.LanguageType); //保存 Save(); }
//当点击[Item]中的[从列表中移除]按钮时 private void LatelyProjectListItemControl_OnClickRemoveButton(object sender, RoutedPropertyChangedEventArgs <bool> e) { //获取控件 LatelyProjectListItemControl _latelyProjectListItemControl = sender as LatelyProjectListItemControl; //获取数据 LatelyProjectData _latelyProjectData = _latelyProjectListItemControl.DataContext as LatelyProjectData; //触发事件 this.OnClickListItemRemoveButton(_latelyProjectData); }
/// <summary> /// 这个方法,用于触发 ClickListItemRemoveButton 路由事件 /// </summary> /// <param name="_value">数据</param> private void OnClickListItemRemoveButton(LatelyProjectData _value) { //创建路由事件参数 RoutedPropertyChangedEventArgs <LatelyProjectData> args = new RoutedPropertyChangedEventArgs <LatelyProjectData>(_value, _value); //设置这是哪个路由事件? args.RoutedEvent = LatelyProjectUiControl.ClickListItemRemoveButtonEvent; //引发这个路由事件 RaiseEvent(args); }
/// <summary> /// 当点击[确认]按钮时 /// </summary> public void ClickYesButton() { //从列表中删除这个项目 LatelyProjectData _data = this.UiControl.Tag as LatelyProjectData;//取到当前要操作的数据 if (_data != null) { AppManager.Systems.LatelySystem.Remove(_data);//把这个数据从列表中删除 } //关闭提示 this.OpenOrClose(false); }
/// <summary> /// 添加1个数据 /// </summary> /// <param name="_data">Project数据</param> /// <param name="_projectFolderPath">项目文件夹的路径(.bug文件所在的文件夹)</param> public void Add(ProjectData _data, string _projectFolderPath) { /* 把Project数据,变为LatelyProject数据 */ LatelyProjectData _latelyProjectData = new LatelyProjectData(); _latelyProjectData.Id = _data.Id; _latelyProjectData.Name = _data.Name; _latelyProjectData.Path = _projectFolderPath; _latelyProjectData.Mode = _data.ModeType; /* 把数据添加到列表中 */ Change(_latelyProjectData); }
/// <summary> /// 验证完整性 /// (验证1个Data的完整性。 /// 如果Data是完整的,代表这个Data是有效的; /// 如果Data是不完整的,代表Data文件还没有同步完,或者是Data文件已损坏) /// </summary> /// <param name="_data">要验证的Data</param> /// <returns>Data是否是完整的</returns> public static bool VerifyIntegrity(LatelyProjectData _data) { if (_data == null || _data.Id < 0 || _data.Path == null || _data.path == "" || _data.Name == null || _data.Name == "" || _data.Mode == ModeType.None) { return(false); } else { return(true); } }
/// <summary> /// 比较2个数据是否相同 /// </summary> /// <param name="_compareType">是比较所有的属性,还是只比较编号?</param> /// <param name="_data1">第1个数据</param> /// <param name="_data2">第2个数据</param> /// <returns>2个数据是否相同?</returns> public static bool Compare(CompareType _compareType, LatelyProjectData _data1, LatelyProjectData _data2) { if (_data1 == null || _data2 == null) { return(false); } //是否相同? bool _isSame = false; //比较 switch (_compareType) { case CompareType.Id: if (_data1.Id == _data2.Id) { _isSame = true; } else { _isSame = false; } break; case CompareType.All: if (_data1.Id == _data2.Id && _data1.Name == _data2.Name && _data1.Path == _data2.Path && _data1.Mode == _data2.Mode) { _isSame = true; } else { _isSame = false; } break; } //返回值 return(_isSame); }
/// <summary> /// 把[BaseData对象]转换为[Data对象] /// </summary> /// <param name="_baseData">要转换的BaseData对象</param> /// <returns>转换后的Data对象</returns> public static LatelyProjectData BaseDataToData(LatelyProjectBaseData _baseData) { if (_baseData != null) { LatelyProjectData _data = new LatelyProjectData(); _data.Id = _baseData.Id; _data.Name = _baseData.Name; _data.Path = _baseData.Path; _data.Mode = (ModeType)_baseData.Mode; _data.OpenTime = new DateTime(_baseData.OpenTime[0], _baseData.OpenTime[1], _baseData.OpenTime[2], _baseData.OpenTime[3], _baseData.OpenTime[4], _baseData.OpenTime[5]); return(_data); } else { return(null); } }
/// <summary> /// 复制一个LatelyProjectData对象 /// </summary> /// <param name="_data">要复制哪个?</param> /// <returns>复制出来的LatelyProjectData对象</returns> public static LatelyProjectData Copy(LatelyProjectData _data) { if (_data == null) { return(null); } else { LatelyProjectData _copyData = new LatelyProjectData(); _copyData.Id = _data.Id; _copyData.Name = _data.Name; _copyData.Path = _data.Path; _copyData.Mode = _data.Mode; _copyData.OpenTime = _data.OpenTime; return(_copyData); } }
/// <summary> /// 把[Data对象]转换为[BaseData对象] /// </summary> /// <param name="_data">要转换的Data对象</param> /// <returns>转换后的BaseData对象</returns> public static LatelyProjectBaseData DataToBaseData(LatelyProjectData _data) { if (_data != null) { LatelyProjectBaseData _baseData = new LatelyProjectBaseData(); _baseData.Id = _data.Id; _baseData.Name = _data.Name; _baseData.Path = _data.Path; _baseData.Mode = (int)_data.Mode; _baseData.OpenTime = new List <int>() { _data.OpenTime.Year, _data.OpenTime.Month, _data.OpenTime.Day, _data.OpenTime.Hour, _data.OpenTime.Minute, _data.OpenTime.Second }; return(_baseData); } else { return(null); } }
/// <summary> /// 当点击[列表的Item]的[Base]按钮的时候 /// </summary> /// <param name="_source">触发事件的LatelyProjectData对象</param> public void ClickListItemBaseButton(LatelyProjectData _source) { //如果文件存在 if (File.Exists(_source.Path) == true) { //读取项目 AppManager.Uis.MainUi.LoadProjectAll(_source.Path); } //如果文件不存在 else { //提示:是否把这个数据从文件中移除? AppManager.Uis.LatelyProjectTipUi.UiControl.TipTitle = AppManager.Systems.LanguageSystem.LatelyProjectTipTitle; AppManager.Uis.LatelyProjectTipUi.UiControl.TipContent = AppManager.Systems.LanguageSystem.LatelyProjectTipContent + "\n" + "\" " + StringTool.Clamp(_source.Name, 20) + " \""; //把数据传递给提示界面 AppManager.Uis.LatelyProjectTipUi.UiControl.Tag = _source; //打开提示界面 AppManager.Uis.LatelyProjectTipUi.OpenOrClose(true); } }