Пример #1
0
 public ScheduleItem(objectsScheduleEntry se, int index = 0)
 {
     Name = FormatTime(se.time) + "\t" + FormatDays(se.daysofweek.Split(',')) + " \t" +
            Helper.ScheduleDescription(se.typeid);
     Value = se;
     Index = index;
 }
Пример #2
0
 private void ddlCopyFrom_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (ddlCopyFrom.SelectedIndex > 0)
     {
         if (MessageBox.Show(LocRm.GetString("Confirm"), "", MessageBoxButtons.YesNo) == DialogResult.Yes)
         {
             var mic =
                 MainForm.Microphones.SingleOrDefault(
                     p => p.id == Convert.ToInt32(((ListItem)ddlCopyFrom.SelectedItem).Value));
             if (mic != null)
             {
                 MainForm.Schedule.RemoveAll(p => p.objectid == VolumeLevel.ObjectID && p.objecttypeid == 1);
                 List <objectsScheduleEntry> scheds = MainForm.Schedule.Where(p => p.objecttypeid == 1 && p.objectid == mic.id).ToList();
                 foreach (var s in scheds)
                 {
                     var t = new objectsScheduleEntry
                     {
                         active       = s.active,
                         daysofweek   = s.daysofweek,
                         objectid     = VolumeLevel.ObjectID,
                         objecttypeid = 2,
                         parameter    = s.parameter,
                         time         = s.time,
                         typeid       = s.typeid
                     };
                     MainForm.Schedule.Add(t);
                 }
                 scheduleEditor1.RenderSchedule();
             }
         }
         ddlCopyFrom.SelectedIndex = 0;
     }
 }
Пример #3
0
 public ScheduleRow(objectsScheduleEntry ose)
 {
     Ose = ose;
     InitializeComponent();
     chkSummary.Text    = GetSummary(ose);
     chkSummary.Checked = Ose.active;
     BackColor          = DefaultBackColor;
 }
Пример #4
0
 public ScheduleRow(objectsScheduleEntry ose)
 {
     Ose = ose;
     InitializeComponent();
     chkSummary.Text = GetSummary(ose);
     chkSummary.Checked = Ose.active;
     BackColor = DefaultBackColor;
 }
Пример #5
0
        private void button1_Click(object sender, EventArgs e)
        {
            var ose = new objectsScheduleEntry
            {
                objectid     = Io.ObjectID,
                objecttypeid = Io.ObjectTypeID,
                daysofweek   = "",
                parameter    = "",
                time         = (int)DateTime.Now.TimeOfDay.TotalMinutes,
                active       = true
            };

            using (var see = new ScheduleEntryEditor())
            {
                see.ose = ose;
                if (see.ShowDialog(this) == DialogResult.OK)
                {
                    MainForm.Schedule.Add(see.ose);
                    RenderSchedule();
                }
            }
        }
Пример #6
0
        private void button1_Click(object sender, EventArgs e)
        {
            var ose = new objectsScheduleEntry
            {
                objectid = Io.ObjectID,
                objecttypeid = Io.ObjectTypeID,
                daysofweek = "",
                parameter = "",
                time = (int) DateTime.Now.TimeOfDay.TotalMinutes,
                active = true
            };

            using (var see = new ScheduleEntryEditor())
            {
                see.ose = ose;
                if (see.ShowDialog(this) == DialogResult.OK)
                {
                    MainForm.Schedule.Add(see.ose);
                    RenderSchedule();
                }
            }            
        }
Пример #7
0
        private void ActionSchedule(objectsScheduleEntry en, out bool enable, out bool disable)
        {
            enable = false;
            disable = false;
            switch (en.typeid)
            {
                case 0:
                    enable = true;
                    break;
                case 1:
                    disable = true;
                    break;
                case 2:
                    ForcedRecording = true;
                    break;
                case 3:
                    ForcedRecording = false;
                    break;
                case 4:
                    Camobject.detector.recordondetect = true;
                    Camobject.detector.recordonalert = false;
                    break;
                case 5:
                    Camobject.detector.recordondetect = false;
                    Camobject.detector.recordonalert = true;
                    break;
                case 6:
                    Camobject.detector.recordondetect = false;
                    Camobject.detector.recordonalert = false;
                    break;
                case 7:
                    Camobject.alerts.active = true;
                    break;
                case 8:
                    Camobject.alerts.active = false;
                    break;
                case 9:
                    {
                        var a = MainForm.Actions.FirstOrDefault(p => p.ident == en.parameter);

                        if (a != null)
                            a.active = true;
                    }
                    break;
                case 10:
                    {
                        var a = MainForm.Actions.FirstOrDefault(p => p.ident == en.parameter);

                        if (a != null)
                            a.active = false;
                    }
                    break;
                case 11:
                    Camobject.recorder.timelapseenabled = true;
                    break;
                case 12:
                    Camobject.recorder.timelapseenabled = false;
                    CloseTimeLapseWriter();
                    break;
                case 13:
                    Camobject.ftp.enabled = true;
                    break;
                case 14:
                    Camobject.ftp.enabled = false;
                    break;
                case 15:
                    Camobject.recorder.ftpenabled = true;
                    break;
                case 16:
                    Camobject.recorder.ftpenabled = false;
                    break;
                case 17:
                    Camobject.savelocal.enabled = true;
                    break;
                case 18:
                    Camobject.savelocal.enabled = false;
                    break;
                case 19:
                    Camobject.ptzschedule.active = true;
                    break;
                case 20:
                    Camobject.ptzschedule.active = false;
                    break;
                case 21:
                    Camobject.settings.messaging = true;
                    break;
                case 22:
                    Camobject.settings.messaging = false;
                    break;
                case 23:
                    Camobject.settings.ptzautotrack = true;
                    break;
                case 24:
                    Camobject.settings.ptzautotrack = false;
                    break;
            }
        }
Пример #8
0
        private void SaveJson(String sPhysicalFilePath, string sHttpVersion, string sBuffer, ref HttpRequest req)
        {
            string resp = "";
            int ot, oid;

            int.TryParse(GetVar(sPhysicalFilePath, "oid"), out oid);
            int.TryParse(GetVar(sPhysicalFilePath, "ot"), out ot);
            bool saveObjects = true;
            try
            {
                var d = getJSONObject(sBuffer);
                if (d == null)
                    return;

                String n = d.name;
                resp = "{\"actionResult\":\"ok\"}";
                bool apply = false;
                string nl = n.ToLowerInvariant();
                switch (nl)
                {
                    default:
                    {
                        resp = "{\"error\":\"" + nl + " not recognized\"}";
                        saveObjects = false;
                    }
                        break;
                    case "liveupdate":
                    {
                        switch (ot)
                        {
                            case 1:
                            {
                                var c = MainForm.Microphones.FirstOrDefault(p => p.id == oid);
                                if (c != null)
                                {
                                    PopulateObject(d, c);
                                }
                            }
                                break;
                            case 2:
                            {
                                var c = MainForm.Cameras.FirstOrDefault(p => p.id == oid);
                                if (c != null)
                                {
                                    PopulateObject(d, c);
                                }
                            }
                                break;
                        }
                        apply = true;
                        saveObjects = false;
                    }
                        break;
                    case "editpelco":
                    {
                        var c = MainForm.Cameras.FirstOrDefault(p => p.id == oid);
                        if (c != null)
                        {
                            PopulateObject(d, c);
                        }
                    }
                        break;
                    case "settings":
                    {
                        PopulateObject(d, MainForm.Conf);
                        if (!string.IsNullOrEmpty(MainForm.Conf.Archive))
                        {
                            MainForm.Conf.Archive = MainForm.Conf.Archive.Replace("/", @"\");
                            if (!MainForm.Conf.Archive.EndsWith(@"\"))
                                MainForm.Conf.Archive += @"\";
                        }
                        ReloadAllowedIPs();
                        ReloadAllowedReferrers();
                        MainForm.SaveConfig();
                        saveObjects = false;
                    }
                        break;
                    case "editftpserver":
                    {
                        resp = "{\"actionResult\":\"reloadFTPServers\"}";
                        if (d.ident == "new")
                        {
                            d.ident = Guid.NewGuid().ToString();
                            var cfgs = new configurationServer {ident = d.ident};
                            var l = MainForm.Conf.FTPServers.ToList();
                            l.Add(cfgs);
                            MainForm.Conf.FTPServers = l.ToArray();
                        }

                        PopulateObject(d, MainForm.Conf.FTPServers.First(p => p.ident == d.ident.ToString()));
                        MainForm.SaveConfig();
                        saveObjects = false;
                    }
                        break;
                    case "editstorage":
                    {
                        resp = "{\"actionResult\":\"reloadStorage\"}";
                        if (d.ident.ToString() == "new")
                        {
                            d.ident = MainForm.Conf.MediaDirectories.Max(p => p.ID) + 1;
                        }
                        int idnew = Convert.ToInt32(d.ident);
                        d.ident = idnew;

                        var md = MainForm.Conf.MediaDirectories.FirstOrDefault(p => p.ID == idnew);
                        bool ndir = false;
                        if (md == null)
                        {
                            md = new configurationDirectory {ID = d.ident, Entry = ""};
                            ndir = true;
                        }

                        var exdir = md.Entry;
                        PopulateObject(d, md);
                        md.Entry = md.Entry.Replace("/", @"\");
                        if (!md.Entry.EndsWith(@"\"))
                            md.Entry += @"\";

                        try
                        {
                            if (!Directory.Exists(md.Entry))
                            {
                                throw new Exception("Invalid Directory");
                            }
                        }
                        catch (Exception ex)
                        {
                            if (exdir != "")
                                md.Entry = exdir;
                            resp = "{\"actionResult\":\"reloadStorage\",\"error\":\"" + ex.Message.JsonSafe() + "\"}";
                            break;
                        }

                        if (ndir)
                        {
                            var l = MainForm.Conf.MediaDirectories.ToList();
                            l.Add(md);
                            MainForm.Conf.MediaDirectories = l.ToArray();
                        }
                        else
                        {
                            var di = new DirectoryInfo(exdir);
                            var di2 = new DirectoryInfo(md.Entry);
                            if (di.ToString() != di2.ToString())
                            {
                                var t = new Thread(() => Helper.CopyFolder(exdir, md.Entry)) {IsBackground = true};
                                t.Start();
                                resp =
                                    "{\"actionResult\":\"reloadStorage\",\"message\":\"Media is being copied to the new location.\"}";
                            }
                        }

                        MainForm.SaveConfig();
                        saveObjects = false;
                    }
                        break;
                    case "editcamera":
                        {
                            var c = MainForm.Cameras.FirstOrDefault(p => p.id == oid);
                            if (c != null)
                            {
                                var olddir = c.directory;
                                PopulateObject(d, c);
                                apply = true;
                                var newdir = c.directory;
                                if (olddir.ToLowerInvariant() != newdir.ToLowerInvariant())
                                {
                                    if (!Helper.IsAlphaNumeric(newdir))
                                    {
                                        c.directory = olddir;
                                        resp = "{\"error\":\"Directory invalid. Should be alphanumeric eg: ABCD.\"}";
                                    }
                                    else
                                    {
                                        var fullolddir = Helper.GetMediaDirectory(2, c.id) + "video\\" + olddir + "\\";
                                        var fullnewdir = Helper.GetMediaDirectory(2, c.id) + "video\\" + newdir + "\\";
                                        try
                                        {
                                            Directory.Move(fullolddir, fullnewdir);
                                        }
                                        catch (Exception ex)
                                        {
                                            c.directory = olddir;
                                            resp = "{\"error\":\""+ex.Message.JsonSafe()+"\"}";
                                        }
                                    }
                                }
                                MainForm.InstanceReference.SaveObjectList(false);
                            }
                        }
                        break;
                    case "motionzones":
                    {
                        var c = MainForm.Cameras.FirstOrDefault(p => p.id == oid);
                        if (c != null)
                        {
                            var lz = new List<objectsCameraDetectorZone>();
                            if (d.zones != null)
                            {
                                foreach (var z in d.zones)
                                {
                                    var x = Convert.ToInt32(z["x"].Value);
                                    var y = Convert.ToInt32(z["y"].Value);
                                    var w = Convert.ToInt32(z["w"].Value);
                                    var h = Convert.ToInt32(z["h"].Value);
                                    lz.Add(new objectsCameraDetectorZone { height = h, left = x, top = y, width = w });
                                }
                            }
                            c.detector.motionzones = lz.ToArray();
                            var cw = MainForm.InstanceReference.GetCameraWindow(oid);
                            cw?.Camera?.SetMotionZones(lz.ToArray());
                        }
                        saveObjects = false;
                    }
                        break;
                    case "screenarea":
                        {
                            var c = MainForm.Cameras.FirstOrDefault(p => p.id == oid);
                            if (c != null)
                            {

                                if (d.zones != null)
                                {
                                    var z = d.zones[0];
                                    int si;
                                    int.TryParse(c.settings.videosourcestring, out si);
                                    if (Screen.AllScreens.Length <= si)
                                        si = 0;
                                    var s = Screen.AllScreens[si];
                                    var x = Convert.ToInt32((Convert.ToDecimal(z["x"].Value) / 100) * s.WorkingArea.Width);
                                    var y = Convert.ToInt32((Convert.ToDecimal(z["y"].Value) / 100) * s.WorkingArea.Height);
                                    var w = Convert.ToInt32((Convert.ToDecimal(z["w"].Value) / 100) * s.WorkingArea.Width);
                                    var h = Convert.ToInt32((Convert.ToDecimal(z["h"].Value) / 100) * s.WorkingArea.Height);
                                    //even height and width
                                    if (w % 2 != 0)
                                        w -= 1;
                                    if (h % 2 != 0)
                                        h -= 1;

                                    c.settings.desktoparea = x + "," + y + "," + w + "," + h;
                                }
                                else
                                    c.settings.desktoparea = "";
                            }
                            saveObjects = false;
                        }
                        
                        break;
                    case "pip":
                        {
                            var c = MainForm.Cameras.FirstOrDefault(p => p.id == oid);
                            if (c != null)
                            {
                                string cfg = "";
                                if (d.zones != null)
                                {
                                    foreach (var z in d.zones)
                                    {
                                        var id = Convert.ToInt32(z["id"].Value);
                                        var x = Convert.ToInt32(z["x"].Value);
                                        var y = Convert.ToInt32(z["y"].Value);
                                        var w = Convert.ToInt32(z["w"].Value);
                                        var h = Convert.ToInt32(z["h"].Value);
                                        cfg += id + "," + x + "," + y + "," + w + "," + h + "|";
                                    }
                                }
                                c.settings.pip.config = cfg.Trim('|');
                                
                                var cw = MainForm.InstanceReference.GetCameraWindow(oid);
                                if (cw?.Camera != null)
                                {
                                    cw.Camera.PiPConfig = c.settings.pip.config;
                                }

                            }
                            saveObjects = false;
                        }
                        
                        break;
                    case "editmicrophone":
                        {
                            var c = MainForm.Microphones.FirstOrDefault(p => p.id == oid);
                            if (c != null)
                            {
                                var olddir = c.directory;
                                PopulateObject(d, c);
                                apply = true;
                                var newdir = c.directory;
                                if (olddir.ToLowerInvariant() != newdir.ToLowerInvariant())
                                {
                                    if (!Helper.IsAlphaNumeric(newdir))
                                    {
                                        c.directory = olddir;
                                        resp = "{\"error\":\"Directory invalid. Should be alphanumeric eg: ABCD.\"}";
                                    }
                                    else
                                    {
                                        var fullolddir = Helper.GetMediaDirectory(2, c.id) + "video\\" + olddir + "\\";
                                        var fullnewdir = Helper.GetMediaDirectory(2, c.id) + "video\\" + newdir + "\\";
                                        try
                                        {
                                            Directory.Move(fullolddir, fullnewdir);
                                        }
                                        catch (Exception ex)
                                        {
                                            c.directory = olddir;
                                            resp = "{\"error\":\"" + ex.Message.JsonSafe() + "\"}";
                                        }
                                    }
                                } 
                                MainForm.InstanceReference.SaveObjectList(false);
                            }
                        }
                        break;
                    case "editschedule":
                        {
                            resp = "{\"actionResult\":\"reloadSchedule\"}";
                            objectsScheduleEntry s = null;
                            if (d.ident.ToString() == "new")
                            {
                                s = new objectsScheduleEntry
                                {
                                    active = true,
                                    time = 0,
                                    daysofweek = "",
                                    objectid = oid,
                                    objecttypeid = ot,
                                    parameter = "",
                                    typeid = 0
                                };
                                MainForm.Schedule.Add(s);
                            }
                            else
                            {
                                var l = MainForm.Schedule.Where(p => p.objectid == oid && p.objecttypeid == ot).ToList();
                                int i = Convert.ToInt32(d.ident);

                                if (i < l.Count)
                                {
                                    s = l[i];
                                }
                            }
                            if (s != null)
                            {
                                PopulateObject(d, s);
                            }
                        }
                        break;
                    case "editptzschedule":
                        {
                            resp = "{\"actionResult\":\"reloadPTZSchedule\"}";
                            var oc = MainForm.Cameras.First(p => p.id == oid);
                            objectsCameraPtzscheduleEntry pe;
                            if (d.ident.ToString() == "new")
                            {
                                pe = new objectsCameraPtzscheduleEntry
                                {
                                    command = "",
                                    time = new DateTime()
                                };

                                PopulateObject(d, pe);
                                var l = oc.ptzschedule.entries.ToList();
                                l.Add(pe);
                                oc.ptzschedule.entries = l.ToArray();
                            }
                            else
                            {
                                int i = Convert.ToInt32(d.ident);
                                var l = oc.ptzschedule.entries.ToList();
                                if (i < l.Count)
                                {
                                    pe = l[i];
                                    PopulateObject(d, pe);

                                }
                            }
                        }
                        break;
                    case "editaction":
                        resp = "{\"actionResult\":\"reloadActions\"}";
                        objectsActionsEntry a;
                        if (d.ident.ToString() == "new")
                        {
                            a = new objectsActionsEntry
                            {
                                type = "",
                                mode = "",
                                active = true,
                                objectid = oid,
                                objecttypeid = ot,
                                ident = Guid.NewGuid().ToString()
                            };
                            MainForm.Actions.Add(a);
                            resp = resp.Replace("PARAMS", "");
                        }
                        else
                        {
                            a = MainForm.Actions.FirstOrDefault(p => p.ident == d.ident.ToString());
                        }
                        if (a != null)
                        {
                            var p1 = a.param1;
                            PopulateObject(d, a);
                            if (Helper.WebRestrictedAlertTypes.Contains(a.type))
                            {
                                a.param1 = a.param1.Replace("/", "\\");
                                if (a.param1.IndexOf("\\", StringComparison.Ordinal)!=-1)
                                {
                                    resp = "{\"error\":\"Only filenames (not paths) are allowed in actions via the website\"}";
                                    a.param1 = p1;
                                }
                            }
                            
                            MainForm.InstanceReference.SaveObjectList(false);
                        }
                        break;
                    case "editaudiosource":
                    {
                        var c = MainForm.Microphones.FirstOrDefault(p => p.id == oid);
                        if (c != null)
                        {
                            PopulateObject(d, c);
                            
                            var vl = MainForm.InstanceReference.GetVolumeLevel(c.id);
                            if (vl != null)
                            {
                                vl.Disable();
                                vl.Enable();
                            }
                            
                        }
                        resp = "{\"actionResult\":\"waiteditobject\"}";
                    }
                        break;
                    case "editvideosource":
                        {
                            var c = MainForm.Cameras.FirstOrDefault(p => p.id == oid);
                            if (c != null)
                            {
                                PopulateObject(d, c);

                                if (c.settings.sourceindex == 9)
                                {
                                    string url = c.settings.onvifident;

                                    Uri u;
                                    if (!Uri.TryCreate(url, UriKind.Absolute, out u))
                                    {
                                        resp = "{\"error\":\"URI invalid\"}";
                                        break;
                                    }
                                    string addr = u.DnsSafeHost;
                                    var dev = MainForm.ONVIFDevices.FirstOrDefault(p => p.Address == addr);
                                    if (dev == null)
                                    {
                                        if (NV(c.settings.namevaluesettings, "profileid") == "")
                                            c.settings.namevaluesettings = NVSet(c.settings.namevaluesettings, "profileid", "0");
                                    }
                                    else
                                    {
                                        TransportProtocol tp;
                                        if (!Enum.TryParse(NV(c.settings.namevaluesettings, "transport"), true, out tp))
                                            tp = TransportProtocol.rtsp;

                                        dev.Account = new NetworkCredential
                                        {
                                            UserName = c.settings.login,
                                            Password = c.settings.password
                                        };
                                        var sessionFactory = new NvtSessionFactory(dev.Account);
                                        var profilename = NV(c.settings.namevaluesettings, "profilename");

                                        foreach (var uri in dev.Uris)
                                        {
                                            var f = sessionFactory.CreateSession(uri);
                                            dev.URL = uri.ToString();
                                            Profile[] profiles;
                                            try
                                            {
                                                profiles = f.GetProfiles().RunSynchronously();
                                            }
                                            catch (Exception ex)
                                            {
                                                Logger.LogExceptionToFile(ex, "ONVIF");
                                                continue;
                                            }

                                            dev.Profiles = profiles;
                                            var strSetup = new StreamSetup { transport = new Transport() };
                                            strSetup.transport.protocol = tp;
                                            int i = 0;
                                            foreach (var p in profiles)
                                            {
                                                try
                                                {
                                                    if (p.token == profilename)
                                                    {
                                                        var strUri = f.GetStreamUri(strSetup, p.token).RunSynchronously();
                                                        string urlAuth = strUri.uri.Replace("://", "://[USERNAME]:[PASSWORD]@");
                                                        string streamSize = p.videoEncoderConfiguration.resolution.width + "x" + p.videoEncoderConfiguration.resolution.height;

                                                        c.settings.videosourcestring = urlAuth;
                                                        c.settings.namevaluesettings = NVSet(c.settings.namevaluesettings, "profileid", i.ToString(CultureInfo.InvariantCulture));
                                                        c.settings.namevaluesettings = NVSet(c.settings.namevaluesettings, "streamsize", streamSize);

                                                        string[] sz = streamSize.Split('x');
                                                        c.settings.desktopresizewidth = Convert.ToInt32(sz[0]);
                                                        c.settings.desktopresizeheight = Convert.ToInt32(sz[1]);

                                                        break;
                                                    }
                                                    i++;
                                                }
                                                catch (Exception ex)
                                                {
                                                    Logger.LogExceptionToFile(ex, "ONVIF");
                                                }

                                            }
                                        }
                                    }
                                    c.ptz = -5;
                                }
                                
                                var cw = MainForm.InstanceReference.GetCameraWindow(c.id);
                                if (cw != null)
                                {
                                    cw.Disable();
                                    cw.Enable();
                                }
                                resp = "{\"actionResult\":\"waiteditobject\"}";
                            }

                        }
                        break;
                }
                if (apply)
                {
                    var io = MainForm.InstanceReference.GetISpyControl(ot, oid);
                    io?.Apply();
                }
            }
            catch (Exception ex)
            {
                Logger.LogExceptionToFile(ex, "JSON Parser");
            }
            if (saveObjects)
            {
                try
                {
                    MainForm.InstanceReference.SaveObjectList(false);
                }
                catch (Exception ex)
                {
                    Logger.LogExceptionToFile(ex, "JSON Parser");
                }
            }

            SendHeader(sHttpVersion, "application/json", resp.Length, " 200 OK", 0, ref req);
            SendToBrowser(resp, req);
        }
Пример #9
0
        private void ddlCopyFrom_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlCopyFrom.SelectedIndex>0)
            {
                if (MessageBox.Show(LocRm.GetString("Confirm"), "", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    var cam =
                        MainForm.Cameras.SingleOrDefault(
                            p => p.id == Convert.ToInt32(((ListItem) ddlCopyFrom.SelectedItem).Value));
                    if (cam != null)
                    {
                        MainForm.Schedule.RemoveAll(p => p.objectid == CameraControl.ObjectID && p.objecttypeid == 2);
                        List<objectsScheduleEntry> scheds =
                            MainForm.Schedule.Where(p => p.objecttypeid == 2 && p.objectid == cam.id).ToList();
                        foreach (var s in scheds)
                        {
                            var t = new objectsScheduleEntry
                                    {
                                        active = s.active,
                                        daysofweek = s.daysofweek,
                                        objectid = CameraControl.ObjectID,
                                        objecttypeid = 2,
                                        parameter = s.parameter,
                                        time = s.time,
                                        typeid = s.typeid
                                    };
                            MainForm.Schedule.Add(t);
                        }
                        scheduleEditor1.RenderSchedule();

                    }
                }
                ddlCopyFrom.SelectedIndex = 0;
            }
        }
Пример #10
0
        public static objects GetObjects(string path)
        {
            var c = new objects();
            try
            {
                lock (ThreadLock)
                {
                    using (var fs = new FileStream(path, FileMode.Open))
                    {
                        var s = new XmlSerializer(typeof (objects));
                        using (TextReader reader = new StreamReader(fs))
                        {
                            fs.Position = 0;
                            c = (objects) s.Deserialize(reader);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.LogExceptionToFile(ex);
                switch (MessageBox.Show($"Error loading file ({ex.Message}) Try again?", "Error", MessageBoxButtons.YesNo))
                {
                    case DialogResult.Yes:
                        return GetObjects(path);
                }
            }

            if (c.cameras==null)
                c.cameras = new objectsCamera[] {};

            bool addActions = c.actions == null;
            if (addActions)
                c.actions = new objectsActions { entries = new objectsActionsEntry[] { } };

            bool addSchedule = c.schedule == null;
            if (addSchedule)
                c.schedule = new objectsSchedule {entries = new objectsScheduleEntry[] {}};

            if (c.cameras.Select(oc => oc.settings.desktopresizewidth).Any(rw => rw == 0))
            {
                throw new Exception("err_old_config");
            }

            if (c.microphones==null)
                c.microphones = new objectsMicrophone[] {};
            if (c.floorplans == null)
                c.floorplans = new objectsFloorplan[] {};

            if (c.remotecommands == null)
                c.remotecommands = new objectsCommand[] {};

            if (c.remotecommands.Length == 0)
            {
                c.remotecommands = GenerateRemoteCommands();
            }

            bool bVlc = VlcHelper.VlcInstalled;
            MaxOrderIndex = 0;

            bool bAlertVlc = false;
            int camid = 0;
            string path2;
            //load non clones first
            c.cameras = c.cameras.ToList().OrderByDescending(p => p.settings.sourceindex != 10).ToArray();
            c.microphones = c.microphones.ToList().OrderByDescending(p => p.settings.typeindex != 5).ToArray();

            foreach (objectsCamera cam in c.cameras)
            {
                if (cam.id >= camid)
                    camid = cam.id + 1;
                if (cam.settings.order == -1)
                {
                    cam.settings.order = MaxOrderIndex;
                    MaxOrderIndex++;
                }

                path2 = Helper.GetMediaDirectory(cam.settings.directoryIndex) + "video\\" + cam.directory + "\\";
                if (cam.settings.sourceindex == 5 && !bVlc)
                {
                    bAlertVlc = true;
                }
                if (cam.settings.youtube == null)
                {
                    cam.settings.youtube = new objectsCameraSettingsYoutube
                            {
                                category = Conf.YouTubeDefaultCategory,
                                tags = "iSpy, Motion Detection, Surveillance",
                                @public = true
                            };
                }
                if (cam.ptzschedule == null)
                {
                    cam.ptzschedule = new objectsCameraPtzschedule
                            {
                                active = false,
                                entries = new objectsCameraPtzscheduleEntry[] {}
                            };
                }
                if (cam.settings.storagemanagement == null)
                {
                    cam.settings.storagemanagement = new objectsCameraSettingsStoragemanagement
                            {
                                enabled = false,
                                maxage = 72,
                                maxsize = 1024

                            };
                }
                bool migrate = false;
                if (cam.alertevents == null)
                {
                    cam.alertevents = new objectsCameraAlertevents();
                    migrate = true;
                }

                if (cam.settings.cloudprovider==null)
                    cam.settings.cloudprovider = new objectsCameraSettingsCloudprovider();

                if (cam.alertevents.entries == null)
                    cam.alertevents.entries = new objectsCameraAlerteventsEntry[] {};

                if (migrate)
                {
                    var l = new List<objectsCameraAlerteventsEntry>();
                    if (!string.IsNullOrEmpty(cam.alerts.executefile))
                    {
                        l.Add(new objectsCameraAlerteventsEntry
                                {
                                    type = "Exe",
                                    param1 = cam.alerts.executefile,
                                    param2 = cam.alerts.arguments
                                });
                    }
                    if (cam.notifications.sendemail)
                    {
                        l.Add(new objectsCameraAlerteventsEntry
                                {
                                    type = "E",
                                    param1 = cam.settings.emailaddress,
                                    param2 = "True"
                                });
                    }
                    if (cam.notifications.sendsms)
                    {
                        l.Add(new objectsCameraAlerteventsEntry {type = "SMS", param1 = cam.settings.smsnumber});
                    }
                    if (cam.alerts.maximise)
                    {
                        l.Add(new objectsCameraAlerteventsEntry {type = "M"});
                    }
                    if (!string.IsNullOrEmpty(cam.alerts.playsound))
                    {
                        l.Add(new objectsCameraAlerteventsEntry {type = "S", param1 = cam.alerts.playsound});
                    }

                    string[] alertOptions = cam.alerts.alertoptions.Split(','); //beep,restore

                    if (Convert.ToBoolean(alertOptions[0]))
                        l.Add(new objectsCameraAlerteventsEntry {type = "B"});
                    if (Convert.ToBoolean(alertOptions[1]))
                        l.Add(new objectsCameraAlerteventsEntry {type = "SW"});

                    if (cam.notifications.sendtwitter)
                    {
                        l.Add(new objectsCameraAlerteventsEntry {type = "TM"});
                    }

                    if (!string.IsNullOrEmpty(cam.alerts.trigger))
                    {
                        l.Add(new objectsCameraAlerteventsEntry {type = "TA", param1 = cam.alerts.trigger});
                    }
                    cam.alertevents.entries = l.ToArray();

                }

                if (addActions)
                {
                    var l = c.actions.entries.ToList();
                    l.AddRange(cam.alertevents.entries.Select(a => new objectsActionsEntry
                                                                    {
                                                                        mode = "alert",
                                                                        objectid = cam.id,
                                                                        objecttypeid = 2,
                                                                        type = a.type,
                                                                        param1 = a.param1,
                                                                        param2 = a.param2,
                                                                        param3 = a.param3,
                                                                        param4 = a.param4,
                                                                        ident = Guid.NewGuid().ToString()
                    }));
                    if (!string.IsNullOrEmpty(cam.settings.emailondisconnect))
                    {
                        l.Add(new objectsActionsEntry
                        {
                            mode = "disconnect",
                            objectid = cam.id,
                            objecttypeid = 2,
                            type = "E",
                            param1 = cam.settings.emailondisconnect,
                            param2 = "False",
                            ident = Guid.NewGuid().ToString()
                        });
                    }
                    c.actions.entries = l.ToArray();
                }

                cam.newrecordingcount = 0;
                if (cam.settings.maxframerate == 0)
                    cam.settings.maxframerate = 10;
                if (cam.settings.maxframeraterecord == 0)
                    cam.settings.maxframeraterecord = 10;
                if (cam.settings.timestampfontsize == 0)
                    cam.settings.timestampfontsize = 10;
                if (cam.recorder.timelapsesave == 0)
                    cam.recorder.timelapsesave = 60;

                if (cam.x < 0)
                    cam.x = 0;
                if (cam.y < 0)
                    cam.y = 0;

                if (cam.detector.minwidth == 0)
                {
                    cam.detector.minwidth = 20;
                    cam.detector.minheight = 20;
                    cam.detector.highlight = true;
                    cam.settings.reconnectinterval = 0;
                }
                if (cam.settings.accessgroups == null)
                    cam.settings.accessgroups = "";
                if (cam.settings.ptztimetohome == 0)
                    cam.settings.ptztimetohome = 100;
                if (cam.settings.ptzautohomedelay == 0)
                    cam.settings.ptzautohomedelay = 30;
                if (cam.settings.ptzurlbase == null)
                    cam.settings.ptzurlbase = "";
                if (cam.settings.audioport <= 0)
                    cam.settings.audioport = 80;
                if (cam.ftp.intervalnew < 0)
                    cam.ftp.intervalnew = cam.ftp.interval;

                if (cam.ftp.server.Length>10)
                {
                    var ftp = Conf.FTPServers.FirstOrDefault(p => p.name == cam.ftp.server && p.username==cam.ftp.username);
                    if (ftp == null)
                    {
                        ftp = new configurationServer
                                {
                                    ident = Guid.NewGuid().ToString(),
                                    name=cam.ftp.server,
                                    password = cam.ftp.password,
                                    port = cam.ftp.port,
                                    rename = cam.ftp.rename,
                                    server = cam.ftp.server,
                                    usepassive = cam.ftp.usepassive,
                                    username = cam.ftp.username
                                };
                        var l = Conf.FTPServers.ToList();
                        l.Add(ftp);
                        Conf.FTPServers = l.ToArray();
                        cam.ftp.ident = ftp.ident;
                        cam.ftp.server = "";
                    }
                }

                if (Conf.MediaDirectories.FirstOrDefault(p => p.ID == cam.settings.directoryIndex) == null)
                    cam.settings.directoryIndex = Conf.MediaDirectories.First().ID;

                if (string.IsNullOrEmpty(cam.settings.emailondisconnect))
                {
                    if (cam.settings.notifyondisconnect)
                    {
                        cam.settings.emailondisconnect = cam.settings.emailaddress;
                    }
                }

                cam.detector.type = cam.detector.type.Replace("Modelling", "Modeling");//fix typo

                if (cam.recorder.quality == 0)
                    cam.recorder.quality = 8;
                if (cam.recorder.timelapseframerate == 0)
                    cam.recorder.timelapseframerate = 5;

                if (cam.detector.movementintervalnew < 0)
                    cam.detector.movementintervalnew = cam.detector.movementinterval;

                if (cam.detector.nomovementintervalnew < 0)
                    cam.detector.nomovementintervalnew = cam.detector.nomovementinterval;

                if (cam.directory == null)
                    throw new Exception("err_old_config");

                if (string.IsNullOrEmpty(cam.settings.ptzpelcoconfig))
                    cam.settings.ptzpelcoconfig = "COM1|9600|8|One|Odd|1";

                if (cam.savelocal == null)
                {
                    cam.savelocal = new objectsCameraSavelocal
                                    {
                                        counter = cam.ftp.counter,
                                        countermax = cam.ftp.countermax,
                                        mode = cam.ftp.mode,
                                        enabled = cam.ftp.savelocal,
                                        filename = cam.ftp.localfilename,
                                        intervalnew = cam.ftp.intervalnew,
                                        minimumdelay = cam.ftp.minimumdelay,
                                        quality = cam.ftp.quality,
                                        text = cam.ftp.text

                                    };
                }

                if (cam.alerts.processmode == null)
                    cam.alerts.processmode = "continuous";
                if (cam.alerts.pluginconfig == null)
                    cam.alerts.pluginconfig = "";
                if (cam.ftp.quality == 0)
                    cam.ftp.quality = 75;

                if (cam.ftp.countermax == 0)
                    cam.ftp.countermax = 20;

                if (cam.settings.audiousername == null)
                {
                    cam.settings.audiousername = "";
                    cam.settings.audiopassword = "";
                }

                if (string.IsNullOrEmpty(cam.settings.timestampforecolor) || cam.settings.timestampforecolor == "0")
                {
                    cam.settings.timestampforecolor = "255,255,255";
                }

                if (string.IsNullOrEmpty(cam.settings.timestampbackcolor) || cam.settings.timestampbackcolor == "0")
                {
                    cam.settings.timestampbackcolor = "70,70,70";
                }

                if (Math.Abs(cam.detector.minsensitivity - 0) < double.Epsilon)
                {
                    cam.detector.maxsensitivity = 100;
                    //fix for old setting conversion
                    cam.detector.minsensitivity = 100 - cam.detector.sensitivity;

                    if (Math.Abs(cam.detector.minsensitivity - 100) < double.Epsilon)
                    {
                        cam.detector.minsensitivity = 20;
                    }
                }

                if (cam.detector.minsensitivity > cam.detector.maxsensitivity)
                {
                    //reset
                    cam.detector.maxsensitivity = 100;
                    cam.detector.minsensitivity = 20;
                }

                if (!Directory.Exists(path2))
                {
                    try
                    {
                        Directory.CreateDirectory(path2);
                    }
                    catch (IOException e)
                    {
                        Logger.LogExceptionToFile(e);
                    }
                }

                if (string.IsNullOrEmpty(cam.ftp.localfilename))
                {
                    cam.ftp.localfilename = "{0:yyyy-MM-dd_HH-mm-ss_fff}.jpg";
                }

                if (string.IsNullOrEmpty(cam.settings.audiomodel))
                    cam.settings.audiomodel = "None";

                if (string.IsNullOrEmpty(cam.settings.timestampfont))
                {
                    cam.settings.timestampfont = FontXmlConverter.ConvertToString(Drawfont);
                    cam.settings.timestampshowback = true;
                }

                path2 = Helper.GetMediaDirectory(cam.settings.directoryIndex) + "video\\" + cam.directory + "\\thumbs\\";
                if (!Directory.Exists(path2))
                {
                    try
                    {
                        Directory.CreateDirectory(path2);
                    }
                    catch
                    {
                        // ignored
                    }
                }

                path2 = Helper.GetMediaDirectory(cam.settings.directoryIndex) + "video\\" + cam.directory + "\\grabs\\";
                if (!Directory.Exists(path2))
                {
                    try
                    {
                        Directory.CreateDirectory(path2);
                    }
                    catch
                    {
                        // ignored
                    }
                }
                if (cam.alerts.trigger == null)
                    cam.alerts.trigger = "";

                if (string.IsNullOrEmpty(cam.rotateMode))
                {
                    cam.rotateMode = "RotateNoneFlipNone";
                    if (cam.rotate90)
                    {
                        cam.rotateMode = RotateFlipType.Rotate90FlipNone.ToString();
                    }
                    if (cam.flipx)
                    {
                        cam.rotateMode = RotateFlipType.RotateNoneFlipX.ToString();
                    }
                    if (cam.flipy)
                    {
                        cam.rotateMode = RotateFlipType.RotateNoneFlipY.ToString();
                    }
                    if (cam.flipx && cam.flipy)
                    {
                        cam.rotateMode = RotateFlipType.RotateNoneFlipXY.ToString();
                    }
                }
                if (cam.settings.pip == null)
                {
                    cam.settings.pip = new objectsCameraSettingsPip {enabled = false, config = ""};
                }
            }
            int micid = 0;
            foreach (objectsMicrophone mic in c.microphones)
            {
                if (mic.id >= micid)
                    micid = mic.id + 1;

                if (mic.settings.order == -1)
                {
                    mic.settings.order = MaxOrderIndex;
                    MaxOrderIndex++;
                }

                if (mic.directory == null)
                    throw new Exception("err_old_config");
                mic.newrecordingcount = 0;
                path2 = Helper.GetMediaDirectory(mic.settings.directoryIndex) + "audio\\" + mic.directory + "\\";
                if (!Directory.Exists(path2))
                    Directory.CreateDirectory(path2);

                if (mic.settings.accessgroups == null)
                    mic.settings.accessgroups = "";

                if (mic.settings.storagemanagement == null)
                {
                    mic.settings.storagemanagement = new objectsMicrophoneSettingsStoragemanagement
                    {
                        enabled = false,
                        maxage = 72,
                        maxsize = 1024

                    };
                }
                if (Math.Abs(mic.detector.minsensitivity - (-1)) < double.Epsilon)
                {
                    mic.detector.minsensitivity = mic.detector.sensitivity;
                    mic.detector.maxsensitivity = 100;
                }
                if (mic.detector.minsensitivity > mic.detector.maxsensitivity)
                {
                    //reset
                    mic.detector.maxsensitivity = 100;
                    mic.detector.minsensitivity = 20;
                }

                if (Conf.MediaDirectories.FirstOrDefault(p => p.ID == mic.settings.directoryIndex) == null)
                    mic.settings.directoryIndex = Conf.MediaDirectories.First().ID;

                bool migrate = false;
                if (mic.alertevents == null)
                {
                    mic.alertevents = new objectsMicrophoneAlertevents();
                    migrate = true;
                }
                if (mic.alertevents.entries == null)
                {
                    mic.alertevents.entries = new objectsMicrophoneAlerteventsEntry[] { };
                }

                if (migrate)
                {
                    var l = new List<objectsMicrophoneAlerteventsEntry>();
                    if (!string.IsNullOrEmpty(mic.alerts.executefile))
                    {
                        l.Add(new objectsMicrophoneAlerteventsEntry { type = "Exe", param1 = mic.alerts.executefile, param2 = mic.alerts.arguments });
                    }
                    if (mic.notifications.sendemail)
                    {
                        l.Add(new objectsMicrophoneAlerteventsEntry { type = "E", param1 = mic.settings.emailaddress, param2 = "True" });
                    }
                    if (mic.notifications.sendsms)
                    {
                        l.Add(new objectsMicrophoneAlerteventsEntry { type = "SMS", param1 = mic.settings.smsnumber });
                    }

                    string[] alertOptions = mic.alerts.alertoptions.Split(','); //beep,restore

                    if (Convert.ToBoolean(alertOptions[0]))
                        l.Add(new objectsMicrophoneAlerteventsEntry { type = "B" });
                    if (Convert.ToBoolean(alertOptions[1]))
                        l.Add(new objectsMicrophoneAlerteventsEntry { type = "SW" });

                    if (mic.notifications.sendtwitter)
                    {
                        l.Add(new objectsMicrophoneAlerteventsEntry { type = "TM" });
                    }

                    if (!string.IsNullOrEmpty(mic.alerts.trigger))
                    {
                        l.Add(new objectsMicrophoneAlerteventsEntry { type = "TA", param1 = mic.alerts.trigger });
                    }
                    mic.alertevents = new objectsMicrophoneAlertevents() {entries = l.ToArray()};
                }

                if (string.IsNullOrEmpty(mic.settings.emailondisconnect))
                {
                    if (mic.settings.notifyondisconnect)
                    {
                        mic.settings.emailondisconnect = mic.settings.emailaddress;
                    }
                }

                if (addActions)
                {
                    var l = c.actions.entries.ToList();
                    l.AddRange(mic.alertevents.entries.Select(a => new objectsActionsEntry
                    {
                        mode = "alert",
                        objectid = mic.id,
                        objecttypeid = 1,
                        type = a.type,
                        param1 = a.param1,
                        param2 = a.param2,
                        param3 = a.param3,
                        param4 = a.param4,
                        ident = Guid.NewGuid().ToString()

                    }));
                    if (!string.IsNullOrEmpty(mic.settings.emailondisconnect))
                    {
                        l.Add(new objectsActionsEntry
                                {
                                    mode = "disconnect",
                                    objectid = mic.id,
                                    objecttypeid = 1,
                                    type = "E",
                                    param1 = mic.settings.emailondisconnect,
                                    param2 = "False",
                                    ident = Guid.NewGuid().ToString()
                        });
                    }
                    c.actions.entries = l.ToArray();
                }

                if (mic.x < 0)
                    mic.x = 0;
                if (mic.y < 0)
                    mic.y = 0;

                if (mic.settings.gain <= 0)
                    mic.settings.gain = 1;

                if (mic.alerts.trigger == null)
                    mic.alerts.trigger = "";
            }

            foreach (var aa in c.actions.entries)
            {
                if (string.IsNullOrEmpty(aa.ident))
                    aa.ident = Guid.NewGuid().ToString();
            }
            int fpid = 0;
            foreach (objectsFloorplan ofp in c.floorplans)
            {
                if (ofp.id >= fpid)
                    fpid = ofp.id + 1;

                if (ofp.x < 0)
                    ofp.x = 0;
                if (ofp.y < 0)
                    ofp.y = 0;
                if (ofp.accessgroups == null)
                    ofp.accessgroups = "";

                if (ofp.order == -1)
                {
                    ofp.order = MaxOrderIndex;
                    MaxOrderIndex++;
                }
            }

            int rcid = 0;
            foreach (objectsCommand ocmd in c.remotecommands)
            {
                if (ocmd.id >= rcid)
                    rcid = ocmd.id + 1;
            }

            if (addSchedule)
            {
                var l = new List<objectsScheduleEntry>();
                foreach (var o in c.cameras)
                {
                    foreach (var se in o.schedule.entries)
                    {
                        for (int i = 0; i < 10; i++)
                        {
                            bool startSpecified = se.start.Split(':')[0] != "-";
                            bool stopSpecified = se.stop.Split(':')[0] != "-";
                            if (!startSpecified && !stopSpecified)
                                continue;

                            var ose = new objectsScheduleEntry
                                      {
                                          objectid = o.id,
                                          objecttypeid = 2,
                                          daysofweek = se.daysofweek,
                                          active = se.active,
                                          parameter = "",
                                          typeid = -1,
                                          time = ParseTime(startSpecified ? se.start : se.stop)
                                      };

                            switch (i)
                            {
                                case 0: //power on
                                    if (startSpecified)
                                        ose.typeid = 0;
                                    break;
                                case 1: //power off
                                    if (stopSpecified)
                                    {
                                        ose.time = ParseTime(se.stop);
                                        ose.typeid = 1;
                                    }
                                    break;
                                case 2:
                                    ose.typeid = se.alerts ? 7 : 8;
                                    break;
                                case 3:
                                    ose.typeid = se.ftpenabled ? 13 : 14;
                                    break;
                                case 4:
                                    ose.typeid = se.messaging ? 21 : 22;
                                    break;
                                case 5:
                                    ose.typeid = se.ptz ? 19 : 20;
                                    break;
                                case 6:
                                    if (se.recordonalert)
                                        ose.typeid = 5;
                                    else
                                    {
                                        ose.typeid = se.recordondetect ? 4 : 6;
                                    }
                                    break;
                                case 7:
                                    if (se.recordonstart)
                                        ose.typeid = 2;
                                    break;
                                case 8:
                                    ose.typeid = se.savelocalenabled ? 17 : 18;
                                    break;
                                case 9:
                                    ose.typeid = se.timelapseenabled ? 11 : 12;
                                    break;
                            }
                            if (ose.typeid > -1)
                                l.Add(ose);
                        }
                    }
                }

                foreach (var o in c.microphones)
                {
                    foreach (var se in o.schedule.entries)
                    {
                        for (int i = 0; i < 10; i++)
                        {
                            var ose = new objectsScheduleEntry
                                      {
                                          objectid = o.id,
                                          objecttypeid = 1,
                                          daysofweek = se.daysofweek,
                                          active = se.active,
                                          parameter = "",
                                          typeid = -1
                                      };
                            bool startSpecified = se.start.Split(':')[0] != "-";
                            bool stopSpecified = se.stop.Split(':')[0] != "-";
                            ose.time = ParseTime(startSpecified ? se.start : se.stop);
                            switch (i)
                            {
                                case 0: //power on
                                    if (startSpecified)
                                        ose.typeid = 0;
                                    break;
                                case 1: //power off
                                    if (stopSpecified)
                                    {
                                        ose.time = ParseTime(se.stop);
                                        ose.typeid = 1;
                                    }
                                    break;
                                case 2:
                                    ose.typeid = se.alerts ? 7 : 8;
                                    break;
                                case 4:
                                    ose.typeid = se.messaging ? 21 : 22;
                                    break;
                                case 6:
                                    if (se.recordonalert)
                                        ose.typeid = 5;
                                    else
                                    {
                                        ose.typeid = se.recordondetect ? 4 : 6;
                                    }
                                    break;
                                case 7:
                                    if (se.recordonstart)
                                        ose.typeid = 2;
                                    break;
                            }
                            if (ose.typeid > -1)
                                l.Add(ose);
                        }
                    }
                }

                c.schedule = new objectsSchedule() {entries = l.ToArray()};
            }

            if (bAlertVlc)
            {
                MessageBox.Show(Program.Platform == "x64"
                    ? LocRm.GetString("InstallVLCx64")
                        .Replace("[DIR]", Environment.NewLine + Program.AppPath + "VLC64" + Environment.NewLine)
                    : LocRm.GetString("InstallVLCx86"));
                OpenUrl(Program.Platform == "x64" ? VLCx64 : VLCx86);
            }
            SaveConfig();
            NeedsSync = true;
            Logger.LogMessageToFile("Loaded " + c.cameras.Length + " cameras, " + c.microphones.Length + " mics and " + c.floorplans.Length + " floorplans");
            return c;
        }
Пример #11
0
 public ScheduleItem(objectsScheduleEntry se, int index = 0)
 {
     Name = FormatTime(se.time) + "\t" + FormatDays(se.daysofweek.Split(',')) + " \t" +
            Helper.ScheduleDescription(se.typeid);
     Value = se;
     Index = index;
 }
Пример #12
0
 private string GetSummary(objectsScheduleEntry se)
 {
     return(FormatTime(se.time) + " \t" + FormatDays(se.daysofweek.Split(',')) + " \t" +
            Helper.ScheduleDescription(se.typeid));
 }
Пример #13
0
        private void ActionSchedule(objectsScheduleEntry en, out bool enable, out bool disable)
        {
            enable = false;
            disable = false;
            switch (en.typeid)
            {
                case 0:
                    enable = true;
                    break;
                case 1:
                    disable = true;
                    break;
                case 2:
                    enable = true;
                    ForcedRecording = true;
                    break;
                case 3:
                    ForcedRecording = false;
                    break;
                case 4:
                    Micobject.detector.recordondetect = true;
                    Micobject.detector.recordonalert = false;
                    break;
                case 5:
                    Micobject.detector.recordondetect = false;
                    Micobject.detector.recordonalert = true;
                    break;
                case 6:
                    Micobject.detector.recordondetect = false;
                    Micobject.detector.recordonalert = false;
                    break;
                case 7:
                    Micobject.alerts.active = true;
                    break;
                case 8:
                    Micobject.alerts.active = false;
                    break;
                case 9:
                    {
                        var a = MainForm.Actions.FirstOrDefault(p => p.ident == en.parameter);

                        if (a != null)
                            a.active = true;
                    }
                    break;
                case 10:
                    {
                        var a = MainForm.Actions.FirstOrDefault(p => p.ident == en.parameter);

                        if (a != null)
                            a.active = false;
                    }
                    break;
                case 21:
                    Micobject.settings.messaging = true;
                    break;
                case 22:
                    Micobject.settings.messaging = false;
                    break;
            }
        }
Пример #14
0
 private string GetSummary(objectsScheduleEntry se)
 {
     return FormatTime(se.time) + " \t" + FormatDays(se.daysofweek.Split(',')) + " \t" +
                Helper.ScheduleDescription(se.typeid);
 }