using CommunityToolkit.Mvvm.Messaging; using LiveTools.Data; using Newtonsoft.Json.Linq; using ryCommon; using ryCommonDb; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace LiveTools { /// /// FrmRuleView.xaml 的交互逻辑 /// public partial class FrmRuleView :UserControl { public FrmRuleView() { InitializeComponent(); Config.CreateDb(); LoadDb(); } public ObservableCollection list { get; set; } = new ObservableCollection(); public void LoadDb() { IDbInterface db = new SQLiteDataProvider(); db.ConnDb(LiveTools.Config.DbFullPath); var ds = db.ReadData("select * from Rules order by SortIndex desc"); //this.DataContext = DataList; list.Clear(); if (ds.HaveData()) { for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { var row = ds.GetRow(i); list.Add(new RuleInfo() {Id=row["id"].ToInt(), RuleName = row["RuleName"].ToString()??"", EditTime = row["EditTime"].ToInt64().ToDateTime().ToString()}); } } ds?.Dispose(); LvRules.ItemsSource = list; db.Free(); } private void BtnAdd_Click(object sender, RoutedEventArgs e) { if (Config.MustUpdate) { HandyControl.Controls.MessageBox.Show("当前版本已经过老,请更新到新版再使用。", "提示"); RyFiles.OpenUrl(Config.NewVerUrl); return; } FrmAddRule frm = new FrmAddRule { SelectedId = -1, Owner = Application.Current.MainWindow, }; if (frm.ShowDialog()==true) { LoadDb(); } } private void EditRule() { var row = LvRules.SelectedItem as RuleInfo; if (row == null) { return; } FrmAddRule frm = new FrmAddRule { SelectedId = row.Id, Title = "修改规则", Owner = Application.Current.MainWindow, }; frm.GetInfo(); if (frm.ShowDialog() == true) { LoadDb(); } } private void BtnEdit_Click(object sender, RoutedEventArgs e) { EditRule(); } private void LvRules_MouseDoubleClick(object sender, MouseButtonEventArgs e) { var row = LvRules.SelectedItem as RuleInfo; if (row == null) { return; } EditRule(); } private void BtnDel_Click(object sender, RoutedEventArgs e) { var row = LvRules.SelectedItem as RuleInfo; if (row == null) { return; } if (HandyControl.Controls.MessageBox.Show("一旦删除,将无法恢复。确定要删除吗?", "警告", MessageBoxButton.OKCancel) != MessageBoxResult.OK) { return; } IDbInterface db = new SQLiteDataProvider(); db.ConnDb(LiveTools.Config.DbFullPath); //db.DelById("Rules", row.Id.ToString()); list.Remove(row); db.Free(); } private void LvRules_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { var point = e.GetPosition(null); var hitTestResult = VisualTreeHelper.HitTest(LvRules, point); if (hitTestResult == null) { LvRules.SelectedItem = null; } else if(hitTestResult.VisualHit is ScrollViewer item) { LvRules.SelectedItem = null; } } private void UserControl_Loaded(object sender, RoutedEventArgs e) { } private void Cell_Button_Click(object sender, RoutedEventArgs e) { var btn = sender as Button; var c = btn.DataContext as RuleInfo; if (c != null) { IDbInterface db = new SQLiteDataProvider(); db.ConnDb(LiveTools.Config.DbFullPath); var ds = db.ReadData("select * from Rules where id="+c.Id); if (ds.HaveData()) { EffectInfo effectInfo = new EffectInfo(); effectInfo.ID = 0; effectInfo.LoopCount = 1; JObject jo = JObject.Parse(ds.GetRow(0)["RuleJson"].ToString() ?? ""); effectInfo.ActionList = jo.GetJsonValue("ActionList", new JArray()); WeakReferenceMessenger.Default.Send(new MsgToken(effectInfo) { ID = MsgTokenId.Effects, From = "Web", Msg = "222" }); } ds?.Dispose(); db.Free(); } } } public class RuleInfo { /// /// id /// public int Id { get; set; } = 0; /// /// 规则名称 /// public string RuleName { get; set; } = ""; /// /// 编辑时间 /// public string EditTime { get; set; } = ""; } }