------ #### V1.0.2404.1201 - 新增支持手动运行规则。 - 规则播放时间间隔不再针对全局声效,而只针对当前规则声效。 - 修复规则中播放文件夹可能导致无法执行的BUG。 - 修复规则不勾选礼物和点赞,则无法执行的BUG。
174 lines
5.6 KiB
C#
174 lines
5.6 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// FrmRuleView.xaml 的交互逻辑
|
|
/// </summary>
|
|
public partial class FrmRuleView :UserControl
|
|
{
|
|
public FrmRuleView()
|
|
{
|
|
InitializeComponent();
|
|
Config.CreateDb();
|
|
LoadDb();
|
|
}
|
|
public ObservableCollection<RuleInfo> list { get; set; } = new ObservableCollection<RuleInfo>();
|
|
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<MsgToken>(new MsgToken(effectInfo) { ID = MsgTokenId.Effects, From = "Web", Msg = "222" });
|
|
}
|
|
ds?.Dispose();
|
|
db.Free();
|
|
}
|
|
}
|
|
}
|
|
public class RuleInfo
|
|
{
|
|
/// <summary>
|
|
/// id
|
|
/// </summary>
|
|
public int Id { get; set; } = 0;
|
|
/// <summary>
|
|
/// 规则名称
|
|
/// </summary>
|
|
public string RuleName { get; set; } = "";
|
|
/// <summary>
|
|
/// 编辑时间
|
|
/// </summary>
|
|
public string EditTime { get; set; } = "";
|
|
}
|
|
}
|