Exemple #1
0
        private void cmbObGroups_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Check if it is group that had been selected or only label for creating a new one
            if (!cmbObGroups.SelectedItem.ToString().Contains("["))
            {
                currentGroup = _Dh.myObGroups[cmbObGroups.SelectedIndex];

                if (isbtnNewObjectClicked)
                {
                    isbtnNewObjectClicked = false;
                    cmbObGroups.Enabled   = true;

                    currentGroup = null;
                    cmbObGroups_SelectedIndexChanged(null, null);
                }
                else
                {
                    isbtnNewObjectClicked = true;
                    cmbObGroups.Enabled   = false;

                    currentGroup = _Dh.myObGroups[cmbObGroups.SelectedIndex];
                }

                somePoints     = new List <PointLatLng>();
                recycleIndexes = new List <int>();
            }
        }
Exemple #2
0
 public static GMapOverlay getOverlay(GMapControl gmc, xObGroup x)
 {
     foreach (GMapOverlay overlay in gmc.Overlays)
     {
         if (overlay.Id.ToString() == x.Name.ToString())
         {
             return(overlay);
         }
     }
     return(null);
 }
Exemple #3
0
        public static GMapOverlay getOverlay(GMapControl gmc, xObject x)
        {
            xObGroup obGr = getGroupById((int)x.ObGroupId);

            foreach (GMapOverlay overlay in gmc.Overlays)
            {
                if (overlay.Id == obGr.Name)
                {
                    return(overlay);
                }
            }
            return(null);
        }
Exemple #4
0
        private void trvObGroups_AfterCheck(object sender, TreeViewEventArgs e)
        {
            if (e.Action == TreeViewAction.ByMouse)
            {
                if (e.Node.Name.Contains("obgr"))
                {
                    xObGroup obGr = _Dh.getGroupById(Convert.ToInt64(e.Node.Name.Substring(5)));

                    if (e.Node.Checked)
                    {
                        foreach (TreeNode tn in e.Node.Nodes)
                        {
                            tn.Checked = true;
                        }
                        foreach (xObject x in _Dh.getObjectsByGroupId(obGr.Id))
                        {
                            drawObject(x);
                        }
                    }
                    else
                    {
                        foreach (TreeNode tn in e.Node.Nodes)
                        {
                            tn.Checked = false;
                        }
                        _Dh.getOverlay(TheMap, obGr).Clear();
                    }
                }
                else if (e.Node.Name.Contains("obj"))
                {
                    xObGroup obGr = _Dh.getGroupById(Convert.ToInt64(e.Node.Parent.Name.Substring(5)));
                    xObject  xObj = _Dh.getObjectById(Convert.ToInt64(e.Node.Name.Substring(4)));
                    if (e.Node.Checked)
                    {
                        drawObject(xObj);
                    }
                    else
                    {
                        removeObjFromMap(xObj);
                    }
                }
            }
        }
Exemple #5
0
 public static AccessLevel getGroupAccessLevel(xObGroup g)
 {
     try
     {
         if (myAccount.IsModerator)
         {
             return(AccessLevel.Remove);
         }
         return(myAccount.Permissions[g.Id]);
     }
     catch (KeyNotFoundException kex)
     {
         return(AccessLevel.Read);
     }
     catch (Exception ex)
     {
         err_processor(ex);
         return(AccessLevel.None);
     }
 }
Exemple #6
0
        private void removeObjFromMap(xObject obj)
        {
            xObGroup    obGr = _Dh.getGroupById(obj.ObGroupId);
            GMapOverlay ov   = _Dh.getOverlay(TheMap, obGr);

            switch (obGr.GroupType)
            {
            case ObjectType.DOT:
                ov.Markers.Remove(obj.Marker);
                break;

            case ObjectType.ROUTE:
                obj.Route.Overlay.Markers.Remove(obj.Marker);
                ov.Routes.Remove(obj.Route);
                break;

            case ObjectType.POLYGON:
                obj.Polygon.Overlay.Markers.Remove(obj.Marker);
                ov.Polygons.Remove(obj.Polygon);
                break;
            }
        }
Exemple #7
0
        private void btnOk_Click(object sender, EventArgs e)
        {
            if (wObGroup.Id > 0)
            {
                // Saving an existing objects group

                wObGroup.Name   = txtObGrName.Text;
                wObGroup.C_Date = wObGroup.C_Date;
                if (wObGroup.GroupType != ObjectType.DOT)
                {
                    wObGroup.Appendix = lineDashStyle + ":" + lineColor + ":" + lineThickness;
                }
                else
                {
                    wObGroup.Appendix = b64Icon;
                }

                MySqlCommand comm = new MySqlCommand();
                comm.CommandText = "UPDATE `obgroups` SET uid=@uid,name=@name,description=@description,type=@type,appendix=@appendix,c_date=@c_date WHERE id=@id";
                comm.Parameters.AddWithValue("@id", wObGroup.Id);
                comm.Parameters.AddWithValue("@uid", wObGroup.Uid);
                comm.Parameters.AddWithValue("@name", wObGroup.Name);
                comm.Parameters.AddWithValue("@description", wObGroup.Description);
                comm.Parameters.AddWithValue("@type", (int)wObGroup.GroupType);
                comm.Parameters.AddWithValue("@appendix", wObGroup.Appendix);
                comm.Parameters.AddWithValue("@c_date", wObGroup.C_Date);
                _Dh.dbExecute(comm);



                _Dh.msgInformation("Информация обновлена!");
            }
            else
            {
                // Creating new objects group
                wObGroup = new xObGroup()
                {
                    Name = txtObGrName.Text, Uid = _Dh.myAccount.Id, C_Date = _Dh.rightNow
                };
                wObGroup.GroupType = (ObjectType)cmbObjectTypes.SelectedIndex;


                if (wObGroup.GroupType != ObjectType.DOT)
                {
                    if (lineColor.Length > 4)
                    {
                        wObGroup.Appendix = lineDashStyle + ":" + lineColor + ":" + lineThickness;
                    }
                }
                else
                if (b64Icon.Length > 4)
                {
                    wObGroup.Appendix = b64Icon;
                }

                MySqlCommand comm = new MySqlCommand();
                comm.CommandText = "INSERT INTO obgroups(uid,name,description,type,appendix,c_date) VALUES(@uid,@name,@description,@type,@appendix,@c_date)";
                comm.Parameters.AddWithValue("@uid", wObGroup.Uid);
                comm.Parameters.AddWithValue("@name", wObGroup.Name);
                comm.Parameters.AddWithValue("@description", wObGroup.Description);
                comm.Parameters.AddWithValue("@type", (int)wObGroup.GroupType);
                comm.Parameters.AddWithValue("@appendix", wObGroup.Appendix);
                comm.Parameters.AddWithValue("@c_date", wObGroup.C_Date);


                wObGroup.Id = _Dh.dbExecute(comm);
                _Dh.myObGroups.Add(wObGroup);
                _Dh.msgInformation("Новая группа объектов создана!");
            }

            // Load Pen for current object
            if (wObGroup.GroupType != ObjectType.DOT)
            {
                wObGroup.Pen = new Pen(_Dh.colorFromHex(lineColor), lineThickness);

                if (lineDashStyle == "solid")
                {
                    wObGroup.Pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
                }
                if (lineDashStyle == "dashed")
                {
                    wObGroup.Pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
                }
                if (lineDashStyle == "dotted")
                {
                    wObGroup.Pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
                }
            }
            //**********************************************************************************

            this.DialogResult = DialogResult.OK;
            this.Close();
        }
Exemple #8
0
        private void drawObject(xObject x)
        {
            xObGroup    obGr = _Dh.getGroupById(x.ObGroupId);
            GMapOverlay ov   = _Dh.getOverlay(TheMap, obGr);


            switch (obGr.GroupType)
            {
            case ObjectType.DOT:
                GMarkerGoogle marker = null;
                PointLatLng   point  = x.Coordinates[0];

                if (obGr.Appendix.Length > 5)
                {
                    Bitmap bmp;
                    using (var ms = new MemoryStream(Convert.FromBase64String(obGr.Appendix)))
                    {
                        bmp = new Bitmap(ms);
                    }
                    marker = new GMarkerGoogle(point, bmp);
                }
                else
                {
                    marker = new GMarkerGoogle(point, GMarkerGoogleType.green);
                }


                MarkerTooltipMode mode = MarkerTooltipMode.Always;
                marker.ToolTip     = new GMapBaloonToolTip(marker);
                marker.ToolTipMode = mode;
                Brush ToolTipBackColor = new SolidBrush(Color.Transparent);
                marker.ToolTipText = x.Name;

                x.Marker = marker;
                ov.Markers.Add(x.Marker);
                TheMap.UpdateMarkerLocalPosition(x.Marker);
                break;

            case ObjectType.ROUTE:
                GMapRoute route = new GMapRoute(x.Coordinates, x.Name);

                route.Stroke = obGr.Pen;

                route.IsHitTestVisible = true;
                x.Marker = new GMarkerGoogle(route.Points[0], new Bitmap(1, 1))
                {
                    Tag = x.Name, IsVisible = false, ToolTipMode = MarkerTooltipMode.Always, ToolTipText = x.Name
                };

                x.Route = route;
                ov.Routes.Add(x.Route);
                x.Route.Overlay.Markers.Add(x.Marker);
                break;

            case ObjectType.POLYGON:
                var polygon = new GMapPolygon(x.Coordinates, x.Name);
                polygon.Fill             = new SolidBrush(Color.FromArgb(50, obGr.Pen.Color));
                polygon.Stroke           = obGr.Pen;
                polygon.IsHitTestVisible = true;


                x.Marker = new GMarkerGoogle(polygon.Points[0], new Bitmap(1, 1))
                {
                    Tag = x.Name, IsVisible = false, ToolTipMode = MarkerTooltipMode.Always, ToolTipText = x.Name
                };


                x.Polygon = polygon;
                ov.Polygons.Add(x.Polygon);
                x.Polygon.Overlay.Markers.Add(x.Marker);
                break;
            }
        }
Exemple #9
0
        public void RefreshUI()
        {
            saveState();
            isEditMode = false;

            trvObGroups.Nodes.Clear();
            foreach (GMapOverlay x in TheMap.Overlays)
            {
                x.Clear();
            }

            if (_Dh.myObGroups.Count > 0)
            {
                cmbObGroups.Items.Clear();

                foreach (xObGroup xobgroup in _Dh.myObGroups)
                {
                    cmbObGroups.Items.Add(xobgroup.Name);
                }
                cmbObGroups.Items.Add(strNewObGroup);
                cmbObGroups.SelectedIndex = cmbObGroups.Items.Count - 1;
            }



            // Populate TreeView and draw objects on the map
            foreach (xObGroup x in _Dh.myObGroups)
            {
                // Check access to this objects group for this user
                if (_Dh.getGroupAccessLevel(x).CompareTo(_Dh.AccessLevel.Read) < 0)
                {
                    continue;
                }

                List <xObject> childs = _Dh.getObjectsByGroupId(x.Id);
                if (childs != null && childs.Count > 0)
                {
                    trvObGroups.Nodes.Add("obgr_" + x.Id, x.Name).Checked = true;
                    foreach (xObject child in childs)
                    {
                        trvObGroups.Nodes["obgr_" + x.Id].Nodes.Add("obj_" + child.Id, child.Name).Checked = true;
                    }
                    foreach (xObject o in _Dh.getObjectsByGroupId(x.Id))
                    {
                        drawObject(o);
                    }
                }
            }

            // Restoring TreeView from saved state
            foreach (DictionaryEntry dictionaryEntry in stgList.pdArray)
            {
                bool       b     = (bool)dictionaryEntry.Value;
                TreeNode[] nodes = trvObGroups.Nodes.Find(dictionaryEntry.Key.ToString(), true);
                if (nodes.Length > 0)
                {
                    string[] keyparts = dictionaryEntry.Key.ToString().Split(new char[] { '_' });

                    xObGroup xgr = null;
                    xObject  xob = null;
                    if (keyparts[0].Equals("obgr"))
                    {
                        xgr = _Dh.getGroupById(Convert.ToInt32(keyparts[1]));
                    }
                    else
                    {
                        xob = _Dh.getObjectById(Convert.ToInt32(keyparts[1]));
                        xgr = _Dh.getGroupById(xob.ObGroupId);
                    }
                    GMapOverlay overlay = _Dh.getOverlay(TheMap, xgr);

                    // Check or uncheck current node
                    TreeNode itemNode = trvObGroups.Nodes.Find(dictionaryEntry.Key.ToString(), true)[0];
                    itemNode.Checked = b;
                    if (!b)
                    {
                        // Hide objects if they are not selected in the TreeView
                        if (keyparts[0].Equals("obj"))
                        {
                            removeObjFromMap(_Dh.getObjById(Convert.ToInt64(keyparts[1])));
                        }
                        else
                        {
                            overlay.Clear();
                        }
                    }
                }
            }
            trvObGroups.ExpandAll();



            if (_Dh.myObGroups.Count == 0)
            {
                // For the first start
                spcMain.Panel1MinSize    = 1;
                spcMain.SplitterDistance = 1;

                cmbObGroups.Visible = false;
            }
        }
Exemple #10
0
        public static void loadObGroupsData()
        {
            using (MySqlConnection connection = new MySqlConnection(connectionString()))
            {
                try
                {
                    connection.Open();
                    MySqlDataReader reader;

                    var cmd = new MySqlCommand("SELECT * from `obgroups`", connection);
                    reader = cmd.ExecuteReader();

                    _Dh.myObGroups = new List <xObGroup>();
                    while (reader.Read())
                    {
                        xObGroup x = new xObGroup()
                        {
                            Id          = sfIntReader(reader, "id"),
                            Uid         = sfIntReader(reader, "uid"),
                            Name        = sfStringReader(reader, "name"),
                            Description = sfStringReader(reader, "description"),
                            Appendix    = sfStringReader(reader, "appendix"),
                            GroupType   = (ObjectType)sfIntReader(reader, "type"),
                            C_Date      = sfStringReader(reader, "c_date")
                        };

                        x.Pen           = new Pen(Color.Violet, 4);
                        x.Pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;

                        // Load Pen for current object
                        if (x.GroupType != ObjectType.DOT && x.Appendix.Length > 4)
                        {
                            string ds = "solid", clr = "#000000";
                            int    thickness = 1;
                            ds        = x.Appendix.Split(new char[] { ':' })[0];
                            clr       = x.Appendix.Split(new char[] { ':' })[1];
                            thickness = Convert.ToInt32(x.Appendix.Split(new char[] { ':' })[2]);

                            x.Pen = new Pen(colorFromHex(clr), thickness);

                            if (ds == "solid")
                            {
                                x.Pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
                            }
                            if (ds == "dashed")
                            {
                                x.Pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
                            }
                            if (ds == "dotted")
                            {
                                x.Pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
                            }
                        }
                        _Dh.myObGroups.Add(x);
                    }
                    reader.Close();
                }
                catch (Exception ex)
                {
                    err_processor(ex);
                }
            }
        }