diff --git a/MainForm.Designer.cs b/MainForm.Designer.cs
index 54db5f7..5f65190 100644
--- a/MainForm.Designer.cs
+++ b/MainForm.Designer.cs
@@ -32,7 +32,15 @@
lbMain = new ListBox();
statusStripMain = new StatusStrip();
toolStripStatusLabel = new ToolStripStatusLabel();
+ menuStrip1 = new MenuStrip();
+ discoveryToolStripMenuItem = new ToolStripMenuItem();
+ startToolStripMenuItem = new ToolStripMenuItem();
+ stopToolStripMenuItem = new ToolStripMenuItem();
+ forceReloadToolStripMenuItem = new ToolStripMenuItem();
+ saveToolStripMenuItem = new ToolStripMenuItem();
+ loadToolStripMenuItem = new ToolStripMenuItem();
statusStripMain.SuspendLayout();
+ menuStrip1.SuspendLayout();
SuspendLayout();
//
// lbMain
@@ -60,19 +68,73 @@
toolStripStatusLabel.Name = "toolStripStatusLabel";
toolStripStatusLabel.Size = new Size(0, 17);
//
+ // menuStrip1
+ //
+ menuStrip1.Items.AddRange(new ToolStripItem[] { discoveryToolStripMenuItem });
+ menuStrip1.Location = new Point(0, 0);
+ menuStrip1.Name = "menuStrip1";
+ menuStrip1.Size = new Size(800, 24);
+ menuStrip1.TabIndex = 2;
+ menuStrip1.Text = "menuStrip1";
+ //
+ // discoveryToolStripMenuItem
+ //
+ discoveryToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { startToolStripMenuItem, stopToolStripMenuItem, forceReloadToolStripMenuItem, saveToolStripMenuItem, loadToolStripMenuItem });
+ discoveryToolStripMenuItem.Name = "discoveryToolStripMenuItem";
+ discoveryToolStripMenuItem.Size = new Size(70, 20);
+ discoveryToolStripMenuItem.Text = "Discovery";
+ //
+ // startToolStripMenuItem
+ //
+ startToolStripMenuItem.Name = "startToolStripMenuItem";
+ startToolStripMenuItem.Size = new Size(180, 22);
+ startToolStripMenuItem.Text = "Start";
+ startToolStripMenuItem.Click += startToolStripMenuItem_Click;
+ //
+ // stopToolStripMenuItem
+ //
+ stopToolStripMenuItem.Enabled = false;
+ stopToolStripMenuItem.Name = "stopToolStripMenuItem";
+ stopToolStripMenuItem.Size = new Size(180, 22);
+ stopToolStripMenuItem.Text = "Stop";
+ stopToolStripMenuItem.Click += stopToolStripMenuItem_Click;
+ //
+ // forceReloadToolStripMenuItem
+ //
+ forceReloadToolStripMenuItem.Name = "forceReloadToolStripMenuItem";
+ forceReloadToolStripMenuItem.Size = new Size(180, 22);
+ forceReloadToolStripMenuItem.Text = "Force reload";
+ forceReloadToolStripMenuItem.Click += forceReloadToolStripMenuItem_Click;
+ //
+ // saveToolStripMenuItem
+ //
+ saveToolStripMenuItem.Name = "saveToolStripMenuItem";
+ saveToolStripMenuItem.Size = new Size(180, 22);
+ saveToolStripMenuItem.Text = "Save";
+ //
+ // loadToolStripMenuItem
+ //
+ loadToolStripMenuItem.Name = "loadToolStripMenuItem";
+ loadToolStripMenuItem.Size = new Size(180, 22);
+ loadToolStripMenuItem.Text = "Load";
+ //
// MainForm
//
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(800, 450);
Controls.Add(statusStripMain);
+ Controls.Add(menuStrip1);
Controls.Add(lbMain);
Icon = (Icon)resources.GetObject("$this.Icon");
+ MainMenuStrip = menuStrip1;
Name = "MainForm";
Text = "RoboSpot MotionCamera finder";
FormClosing += MainForm_FormClosing;
statusStripMain.ResumeLayout(false);
statusStripMain.PerformLayout();
+ menuStrip1.ResumeLayout(false);
+ menuStrip1.PerformLayout();
ResumeLayout(false);
PerformLayout();
}
@@ -82,5 +144,12 @@
private ListBox lbMain;
private StatusStrip statusStripMain;
private ToolStripStatusLabel toolStripStatusLabel;
+ private MenuStrip menuStrip1;
+ private ToolStripMenuItem discoveryToolStripMenuItem;
+ private ToolStripMenuItem startToolStripMenuItem;
+ private ToolStripMenuItem stopToolStripMenuItem;
+ private ToolStripMenuItem forceReloadToolStripMenuItem;
+ private ToolStripMenuItem saveToolStripMenuItem;
+ private ToolStripMenuItem loadToolStripMenuItem;
}
}
\ No newline at end of file
diff --git a/MainForm.cs b/MainForm.cs
index eb7bf8e..b31d386 100644
--- a/MainForm.cs
+++ b/MainForm.cs
@@ -15,6 +15,8 @@ namespace robospot_camera_finder
public static string cam_username = "admin";
public static string cam_password = "RoboSpot10";
+ private static string browse_scope = "_rtsp._tcp";
+
public class Camera
{
private IPAddress ip;
@@ -93,8 +95,6 @@ namespace robospot_camera_finder
}
}
- browser.StartBrowse("_rtsp._tcp");
-
lbMain.DataSource = all_cameras;
lbMain.DisplayMember = "camera_name";
lbMain.ValueMember = "camera_ip";
@@ -111,8 +111,34 @@ namespace robospot_camera_finder
browser.ServiceRemoved += (sender, args) =>
{
- ServiceRemoved(sender, args);
+ if (browser.IsBrowsing)
+ {
+ ServiceRemoved(sender, args);
+ }
};
+
+ browse(true);
+ }
+
+ private void browse(bool browse_needed)
+ {
+ if (browse_needed)
+ {
+ if (!browser.IsBrowsing)
+ {
+ browser.StartBrowse(browse_scope);
+ }
+ }
+ else
+ {
+ if (browser.IsBrowsing)
+ {
+ browser.StopBrowse();
+ }
+ }
+
+ startToolStripMenuItem.Enabled = !browser.IsBrowsing;
+ stopToolStripMenuItem.Enabled = browser.IsBrowsing;
}
private void ServiceAdded(object sender, ServiceAnnouncementEventArgs args)
@@ -140,8 +166,25 @@ namespace robospot_camera_finder
serial = serial_line.Substring("SerialNumber=".Length).Trim();
}
- Camera camera = new Camera("Camera " + cam_addr.ToString() + " - " + location + " - " + serial, cam_addr, location, serial);
- all_cameras.Add(camera);
+ Camera new_camera = new Camera("Camera " + cam_addr.ToString() + " - " + location + " - " + serial, cam_addr, location, serial);
+
+ if (all_cameras.Count == 0)
+ {
+ all_cameras.Add(new_camera);
+ } else
+ {
+ for (int i = 0; i < all_cameras.Count; i++)
+ {
+ if (all_cameras[i].camera_serial == new_camera.camera_serial)
+ {
+ all_cameras[i] = new_camera;
+ }
+ else
+ {
+ all_cameras.Add(new_camera);
+ }
+ }
+ }
}
}
}
@@ -180,5 +223,26 @@ namespace robospot_camera_finder
toolStripStatusLabel.Text = "";
}
}
+
+ private void startToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ browse(true);
+ }
+
+ private void stopToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ browse(false);
+ }
+
+ private void forceReloadToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ DialogResult result = MessageBox.Show("Are you sure you want to clear discovered cameras and restart the discovery process ?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
+ if (result == DialogResult.Yes)
+ {
+ browse(false);
+ all_cameras.Clear();
+ browse(true);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/MainForm.resx b/MainForm.resx
index aa9339a..968d0ca 100644
--- a/MainForm.resx
+++ b/MainForm.resx
@@ -120,6 +120,9 @@
17, 17
+
+ 153, 17
+