Ejemplo n.º 1
1
        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;
        }
Ejemplo n.º 2
0
        /// <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;
            }
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        // 伪全屏
        // 防止意外退出全屏模式
        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();
        }
Ejemplo n.º 5
0
        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;
        }