private void button_update_Click(object sender, EventArgs e) { if (dataGridView1.Rows.Count == 0) return; TreeNode node = treeView1.SelectedNode; try { switch (node.Level) { case 0: DateTime startDate = DateTime.Parse(dataGridView1.Rows[0].Cells[0].Value.ToString()); DateTime endDate = DateTime.Parse(dataGridView1.Rows[0].Cells[1].Value.ToString()); if (startDate.Date >= endDate.Date) { MessageBox.Show("起始日期须早于终止日期!请检查输入!", "日期校验异常", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } DateSheet dt = new DateSheet(); dt.startDate = startDate; dt.endDate = endDate; dt.Mon = (bool)dataGridView1.Rows[0].Cells[2].Value; dt.Tue = (bool)dataGridView1.Rows[0].Cells[3].Value; dt.Wed = (bool)dataGridView1.Rows[0].Cells[4].Value; dt.Thu = (bool)dataGridView1.Rows[0].Cells[5].Value; dt.Fri = (bool)dataGridView1.Rows[0].Cells[6].Value; dt.Sat = (bool)dataGridView1.Rows[0].Cells[7].Value; dt.Sun = (bool)dataGridView1.Rows[0].Cells[8].Value; dt.timesheets = config.datesheets[node.Index].timesheets; config.datesheets[node.Index] = dt; cur_node.Text = "日期: " + dt.startDate.ToShortDateString() + " 至 " + dt.endDate.ToShortDateString(); break; case 1: DateTime startTime = DateTime.Parse(dataGridView1.Rows[0].Cells[0].Value.ToString()); DateTime endTime = DateTime.Parse(dataGridView1.Rows[0].Cells[1].Value.ToString()); if (startTime.TimeOfDay >= endTime.TimeOfDay) { MessageBox.Show("起始时间须早于终止时间!请检查输入!", "时间校验异常", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } TimeSheet ts = new TimeSheet(); ts.startTime = startTime; ts.endTime = endTime; ts.mode = dataGridView1.Rows[0].Cells[2].Value.ToString() == "随机播放" ? PlayMode.random : PlayMode.sequencial; ts.contents = config.datesheets[node.Parent.Index].timesheets[node.Index].contents; config.datesheets[node.Parent.Index].timesheets[node.Index] = ts; cur_node.Text = "时间: " + ts.startTime.ToLongTimeString() + " 至 " + ts.endTime.ToLongTimeString() + ", 播放模式: " + ts.mode; break; case 2: Content ct = new Content(); if (dataGridView1.Rows[0].Cells[0].Value.ToString().Equals("dir")) ct.type = ContentType.dir; if (dataGridView1.Rows[0].Cells[0].Value.ToString().Equals("powerpoint")) ct.type = ContentType.powerpoint; if (dataGridView1.Rows[0].Cells[0].Value.ToString().Equals("video")) ct.type = ContentType.video; ct.duration = int.Parse(dataGridView1.Rows[0].Cells[1].Value.ToString()); ct.file = dataGridView1.Rows[0].Cells[2].Value.ToString(); config.datesheets[node.Parent.Parent.Index].timesheets[node.Parent.Index].contents[node.Index] = ct; cur_node.Text = "文件: 类型:" + ct.type.ToString() + ", 停留: " + ct.duration.ToString() + ", 名称: " + ct.file; break; default: break; } label_update_ok.Text = "保存成功!"; label_update_ok.ForeColor = Color.Black; } catch { label_update_ok.Text = "修改失败!请检查输入!"; label_update_ok.ForeColor = Color.Red; } label_update_ok.Visible = true; }
/// <summary> /// 读取播放配置 /// </summary> /// <returns></returns> public bool ReadPlayConfig(ref Config config, bool expendDir, ref string error) { error = string.Empty; try { XmlDocument doc = new XmlDocument(); doc.Load(path); XmlNode system = doc.SelectSingleNode("system"); XmlNode screen = system.SelectSingleNode("screen"); config.scr = int.Parse(screen.Attributes["index"].Value); XmlNode idle = system.SelectSingleNode("idle"); config.idle = new Content(); string idletype = idle.Attributes["type"].Value; if (idletype.Equals("video")) { config.idle.type = ContentType.video; } if (idletype.Equals("powerpoint")) { config.idle.type = ContentType.powerpoint; } config.idle.file = idle.Attributes["src"].Value; config.idle.duration = int.Parse(idle.Attributes["duration"].Value); XmlNode sleep = system.SelectSingleNode("sleep"); config.sleep = new Sleep(); config.sleep.timespan.startTime = DateTime.Parse(sleep.Attributes["starttime"].Value); config.sleep.timespan.endTime = DateTime.Parse(sleep.Attributes["endtime"].Value); config.sleep.enable = sleep.Attributes["enable"].Value == "0" ? false : true; XmlNode notice = system.SelectSingleNode("notice"); config.notice.bold = notice.Attributes["bold"].Value == "0" ? false : true; config.notice.color = Color.FromName(notice.Attributes["color"].Value); config.notice.bgcolor = Color.FromName(notice.Attributes["bgcolor"].Value); config.notice.font = notice.Attributes["fontname"].Value; config.notice.size = int.Parse(notice.Attributes["size"].Value); config.notice.interval = int.Parse(notice.Attributes["speed"].Value); XmlNode intermedia = system.SelectSingleNode("intermedia"); config.intermedia.enable = intermedia.Attributes["enable"].Value == "0" ? false : true; config.intermedia.limit = int.Parse(intermedia.Attributes["limit"].Value); config.intermedia.duration = int.Parse(intermedia.Attributes["duration"].Value); if(config.intermedia.contents == null) config.intermedia.contents = new List<Content>(); /*DirectoryInfo d = new DirectoryInfo(intermedia.Attributes["root"].Value); if (d.Exists) { foreach (FileInfo file in d.GetFiles()) { Content content = new Content(); if (file.Extension.Contains("ppt")) { content.type = ContentType.powerpoint; } else { content.type = ContentType.video; } content.duration = config.intermedia.duration; content.file = file.FullName; config.intermedia.contents.Add(content); } }*/ XmlNode syscfg = system.SelectSingleNode("syscfg"); config.syscfg.sysDuration = syscfg.Attributes["sysduration"].Value == "0" ? false : true; config.syscfg.duration = int.Parse(syscfg.Attributes["duration"].Value); XmlNodeList root = system.SelectNodes("period"); config.datesheets = new List<DateSheet>(); foreach (XmlNode period in root) { DateSheet datesheets = new DateSheet(); datesheets.startDate = DateTime.Parse(period.Attributes["startdate"].Value); datesheets.endDate = DateTime.Parse(period.Attributes["enddate"].Value + " 23:59:59"); datesheets.Mon = period.Attributes["mon"].Value.Equals("1") ? true : false; datesheets.Tue = period.Attributes["tue"].Value.Equals("1") ? true : false; datesheets.Wed = period.Attributes["wed"].Value.Equals("1") ? true : false; datesheets.Thu = period.Attributes["thu"].Value.Equals("1") ? true : false; datesheets.Fri = period.Attributes["fri"].Value.Equals("1") ? true : false; datesheets.Sat = period.Attributes["sat"].Value.Equals("1") ? true : false; datesheets.Sun = period.Attributes["sun"].Value.Equals("1") ? true : false; datesheets.timesheets = new List<TimeSheet>(); XmlNodeList timelist = period.ChildNodes; foreach (XmlNode timewindow in timelist) { TimeSheet timesheets = new TimeSheet(); timesheets.startTime = DateTime.Parse(timewindow.Attributes["starttime"].Value); timesheets.endTime = DateTime.Parse(timewindow.Attributes["endtime"].Value); string mode = timewindow.Attributes["mode"].Value; if (mode.Equals("sequencial")) { timesheets.mode = PlayMode.sequencial; } if (mode.Equals("random")) { timesheets.mode = PlayMode.random; } timesheets.contents = new List<Content>(); XmlNodeList itemlist = timewindow.ChildNodes; foreach (XmlNode item in timewindow) { string type = item.Attributes["type"].Value; if (type.Equals("dir") && expendDir) { DirectoryInfo dir = new DirectoryInfo(item.Attributes["src"].Value); foreach (FileInfo file in dir.GetFiles()) { Content content = new Content(); if (file.Extension.Contains("ppt")) { content.type = ContentType.powerpoint; } else { content.type = ContentType.video; } content.duration = int.Parse(item.Attributes["duration"].Value); content.file = file.FullName; timesheets.contents.Add(content); } } else { Content content = new Content(); content.duration = int.Parse(item.Attributes["duration"].Value); content.file = item.Attributes["src"].Value; if (type.Equals("dir")) { content.type = ContentType.dir; } if (type.Equals("video")) { content.type = ContentType.video; } if (type.Equals("powerpoint")) { content.type = ContentType.powerpoint; } timesheets.contents.Add(content); } } datesheets.timesheets.Add(timesheets); } config.datesheets.Add(datesheets); } LogXML("log file read successfully: \"" + path + "\""); return true; } catch (Exception e) { LogXML(e.Message); error = e.Message; return false; } }
private void RunTask() { //update next scheduleTime scheduleDate = scheduleDate.Date.AddDays(1); // check the local intermedia directory DirectoryInfo imDir = new DirectoryInfo(rootPath + "\\media\\inter_media"); if (!imDir.Exists) imDir.Create(); // try to clear the contents DirectoryInfo[] dirs = imDir.GetDirectories(); foreach (DirectoryInfo dir in dirs) { try { dir.Delete(true); } catch { } } // create the dir of today DirectoryInfo newDir = new DirectoryInfo(imDir.FullName + "\\" + DateTime.Now.ToString("yyyyMMdd_HHmm")); if (newDir.Exists) { try { newDir.Delete(true); } catch { } } newDir.Create(); // scan and copy the uploaded files // update config filepath config.intermedia.contents.Clear(); DirectoryInfo ftpDir = new DirectoryInfo(interMediaPath); foreach (FileInfo file in ftpDir.GetFiles()) { Content content = new Content(); if (file.Extension.Contains("ppt")) { content.type = ContentType.powerpoint; ppt.CheckCopySlides(file.FullName, newDir + "\\" + file.Name); } else { content.type = ContentType.video; file.CopyTo(newDir + "\\" + file.Name, true); } content.duration = config.intermedia.duration; content.file = newDir + "\\" + file.Name; config.intermedia.contents.Add(content); } }
// 伪全屏 // 防止意外退出全屏模式 public void Play_Click(object sender, EventArgs e) { // 读取配置 xml.ReadPlayConfig(ref config, ref error); string pwd, pmt; bool ebl; FTP.ApplicationSettings._DataPath = rootPath; FTP.ApplicationSettings.ReadSettings(); FTP.ApplicationSettings.GetUser("ADPLAYER", out pwd, out interMediaPath, out pmt, out ebl); // 多屏显示 Screen[] scr = Screen.AllScreens; if (scr.Length > 1) { this.Location = scr[config.scr].WorkingArea.Location; } if (config.intermedia.contents.Count == 0) config.intermedia.enable = false; interPlay = false; lastPlay = new Content(); Cursor.Hide(); panel1.Visible = false; button_about.Visible = false; button_help.Visible = false; this.FormBorderStyle = FormBorderStyle.None; this.WindowState = FormWindowState.Maximized; axWindowsMediaPlayer1.Dock = DockStyle.Fill; hook.Hook_Clear(); hook.Hook_Start(); DoPlay(); }
public void DoPlay() { CheckPlayList(); if (playlist == null || playlist.Count == 0) { PlayIdle(); return; } int index; // prevent screen powersave Msg.ShutMonitor(-1); if (config.intermedia.enable && interPlay && config.intermedia.contents != null && config.intermedia.contents.Count > 0) { index = config.intermedia.contents.IndexOf(lastInter); if (index == config.intermedia.contents.Count - 1) content = config.intermedia.contents[0]; else content = config.intermedia.contents[index + 1]; lastInter = content; } else { switch (mode) { case PlayMode.random: if (playlist.Count == 1) { content = playlist[0]; } else { Random rdm = new Random(); content = playlist[rdm.Next(playlist.Count)]; } break; case PlayMode.sequencial: index = playlist.IndexOf(lastPlay); if (index == playlist.Count - 1) { content = playlist[0]; } else { content = playlist[index + 1]; } break; default: break; } lastPlay = content; } switch (content.type) { case ContentType.powerpoint: PlayPPT(); break; case ContentType.video: PlayVideo(); break; default: break; } interPlay ^= true; }