Example #1
0
 public void TakeSnapshot(UserPresetItemView item, StreamViewerControl imageSource)
 {
     timer.Stop();
     Target       = item;
     StreamViewer = imageSource;
     timer.Start();
 }
Example #2
0
        /// <summary>
        /// Configures a StreamViewerControl, just the way we like it (tm)
        /// </summary>
        /// <param name="control">SVC to configure</param>
        /// <param name="settings">settings to apply to the SVCs</param>
        private void ConfigureViewer(StreamViewerControl control, MediaApplicationSettings settings)
        {
            control.RecordingsPath        = settings.Recordings;
            control.SnapshotPath          = settings.Snapshots;
            control.SnapshotSoundFileName = @"app_data\sounds\snap.wav";

            control.PropertyChanged   += new PropertyChangedEventHandler(Stream_PropertyChanged);
            control.StartControl      += new EventHandler <SourceControlTypeEventArgs>(StreamViewer_StartControl);
            control.StopControl       += new EventHandler <SourceControlTypeEventArgs>(StreamViewer_StopControl);
            control.FullScreenClicked += new EventHandler(Stream_FullScreenClicked);
            control.SingleViewClicked += new EventHandler(Stream_ViewLayoutChanged);
        }
Example #3
0
        /// <summary>
        /// This method handles changing between 4-way and Single
        /// </summary>
        private void Stream_ViewLayoutChanged(object sender, EventArgs e)
        {
            StreamViewerControl svc = (StreamViewerControl)sender;

            panel4Way.SuspendLayout();

            svc.SingleView = !svc.SingleView;

            for (int x = 0; x < Streams.Length; x++)
            {
                for (int y = 0; y < Streams[x].Length; y++)
                {
                    if (!svc.SingleView)
                    {
                        Streams[x][y].Parent.Visible    = true;
                        panel4Way.ColumnStyles[x].Width = 50.0f;
                        panel4Way.RowStyles[y].Height   = 50.0f;
                    }
                    else
                    {
                        Streams[x][y].Parent.Visible = Streams[x][y].SingleView;
                        if (Streams[x][y].SingleView)
                        {
                            panel4Way.ColumnStyles[x].Width = 100.0f;
                            panel4Way.RowStyles[y].Height   = 100.0f;
                        }
                        else
                        {
                            Streams[x][y].Stop();

                            if (panel4Way.ColumnStyles[x].Width < 100.0f)
                            {
                                panel4Way.ColumnStyles[x].Width = 0.0f;
                            }
                            if (panel4Way.RowStyles[y].Height < 100.0f)
                            {
                                panel4Way.RowStyles[y].Height = 0.0f;
                            }
                        }
                    }
                }
            }

            panel4Way.ResumeLayout();

            svc.Active = true;
        }
Example #4
0
 private void presets_AddPreset(object sender, EventArgs e)
 {
     try
     {
         MicrowaveTuningPreset item = client.SavePreset() as MicrowaveTuningPreset;
         if (item != null)
         {
             UserPresetItemView view = new UserPresetItemView();
             view.Preset = item;
             view.Image  = StreamViewerControl.GetSnapshot();
             presets.Add(view);
         }
     }
     catch (Exception ex)
     {
         FCMessageBox.Show(@"Can't add preset!", "There was an error fetching the preset from the server.", this);
         ErrorLogger.DumpToDebug(ex);
     }
 }
Example #5
0
        private StreamViewerControl FindViewerMatching(StreamSourceInfo streamSourceInfo)
        {
            StreamViewerControl        result = null;
            List <StreamViewerControl> list   = new List <StreamViewerControl>();

            list.Add(StreamA);
            list.Add(StreamB);
            list.Add(StreamC);
            list.Add(StreamD);
            foreach (StreamViewerControl streamViewerControl in list)
            {
                if ((streamViewerControl.SourceInfo != null) && (streamViewerControl.SourceInfo.SinkAddress != null))
                {
                    if (streamViewerControl.SourceInfo.SinkAddress == streamSourceInfo.SinkAddress)
                    {
                        result = streamViewerControl;
                        break;
                    }
                }
            }
            return(result);
        }
Example #6
0
        private void StreamViewer_StartControl(object sender, SourceControlTypeEventArgs e)
        {
            StreamViewerControl svc = sender as StreamViewerControl;

            if (svc == null)
            {
                return;
            }

            IControlPalette p = null;

            switch (e.ControlType)
            {
            case SourceControlTypes.PTZ:
                p = new PTZPalette();
                break;

            case SourceControlTypes.Microwave:
                p = new MicrowavePalette();
                break;

            default:
                return;
            }

            svc.Active            = true;
            p.StreamViewerControl = svc;

            if (!PaletteWorker.IsBusy)
            {
                PaletteWorker.RunWorkerAsync(p);
            }
            else
            {
                FCMessageBox.Show("Please wait", "Another peripheral control is in the process of starting." + Environment.NewLine + "Please wait for it to finish.", this);
                svc.ControlState[e.ControlType] = SourceControlTypeState.Inactive;
            }
        }
Example #7
0
        public SVDMain(string[] args)
        {
            InitializeComponent();

            DragDropManager.Register(this);

            //assign positions to the streams
            Streams       = new StreamViewerControl[2][];
            Streams[0]    = new StreamViewerControl[2];
            Streams[1]    = new StreamViewerControl[2];
            Streams[0][0] = StreamA;
            Streams[1][0] = StreamB;
            Streams[0][1] = StreamC;
            Streams[1][1] = StreamD;

            this.HasControlBox = FutureConcepts.Settings.SystemInfo.DoCheck();

            if (args.Length >= 2)
            {
                int.TryParse(args[0], out myLeft);
                int.TryParse(args[1], out myTop);
            }
        }
Example #8
0
        /// <summary>
        /// Called when the Favorites control needs a favorite added to it
        /// </summary>
        private void ptzFavoritesControl_AddFavorite(object sender, EventArgs e)
        {
            try
            {
                if (client != null)
                {
                    UserPresetItem preset = client.SavePreset();

                    if (preset != null)
                    {
                        UserPresetItemView view = new UserPresetItemView();
                        view.Image  = StreamViewerControl.GetSnapshot();
                        view.Preset = preset;
                        ptzFavoritesControl.Add(view);
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorLogger.DumpToDebug(ex);
                Stop();
            }
        }
Example #9
0
        /// <summary>
        /// Handles the resizing of a StreamViewer.StreamViewer to fill the entire SVD window
        /// </summary>
        /// <param name="sender">the StreamViewerControl to change state</param>
        /// <param name="e">don't care</param>
        private void Stream_FullScreenClicked(object sender, EventArgs e)
        {
            StreamViewerControl sViewer = sender as StreamViewerControl;

            if (sViewer == null)
            {
                return;
            }

            if (sViewer.FullScreen)
            {
                //restore to original placement

                //suspend layout
                panel6.Parent.SuspendLayout();
                _originalParent.SuspendLayout();

                //DO layout
                sViewer.Dock       = _originalDock;
                panel6.Dock        = DockStyle.Fill;
                sViewer.Parent     = _originalParent;
                sViewer.Location   = _originalLocation;
                sViewer.Size       = _originalSize;
                sViewer.FullScreen = false;

                //resume layout
                _originalParent.ResumeLayout();
                panel6.Parent.ResumeLayout();
            }
            else
            {
                //expand to fill form
                //save original data
                _originalLocation = sViewer.Location;
                _originalSize     = sViewer.Size;
                _originalDock     = sViewer.Dock;
                _originalParent   = sViewer.Parent;

                //suspend layout
                panel6.Parent.SuspendLayout();
                _originalParent.SuspendLayout();

                //DO layout

                panel6.Dock   = DockStyle.Top;
                panel6.Height = 0;

                sViewer.Parent = panel6.Parent;

                sViewer.Location   = new Point(0, 0);
                sViewer.Dock       = DockStyle.Fill;
                sViewer.FullScreen = true;

                //resume layout
                panel6.Parent.ResumeLayout();
                _originalParent.ResumeLayout();

                //this is neccesary so we know what stream is full-screen
                sViewer.Active = true;
            }
        }
Example #10
0
        private void Stream_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke(new PropertyChangedEventHandler(Stream_PropertyChanged), new object[] { sender, e });
                return;
            }

            StreamViewerControl sv = sender as StreamViewerControl;

            if (e.PropertyName == "Active")
            {
                if (sv.Active)
                {
                    ActiveStreamViewer = sv;
                }
                else if (sv.FullScreen)
                {
                    Stream_FullScreenClicked(sv, new EventArgs());
                }
                return;
            }
            if (e.PropertyName == "PendingConnection")
            {
                ConnectionChainDescriptor goingTo = sv.PendingConnection;
                if (goingTo != null)
                {
                    StreamViewerControl existingViewer = this.FindViewerMatching(goingTo.Source);
                    if (existingViewer != null)
                    {
                        StringBuilder message = new StringBuilder("You are already watching that camera.");
                        if (existingViewer.State == StreamState.Recording)
                        {
                            message.AppendLine("Also, it's also being recorded.");
                        }
                        message.AppendLine("");
                        message.AppendLine("Moving that camera to this viewer will stop the");
                        message.AppendLine("existing viewer (and recording if applicable)");
                        message.AppendLine("");
                        message.AppendLine("Are you sure you want to move the camera to this viewer?");
                        if (DialogResult.Yes == FCYesNoMsgBox.ShowDialog("Move camera here", message.ToString(), this))
                        {
                            existingViewer.Stop();
                        }
                        else
                        {
                            throw new OperationCanceledException();
                        }
                    }
                }
            }
            if (sv == ActiveStreamViewer)
            {
                switch (e.PropertyName)
                {
                case "State":
                    profileGroupSelector.Visible = false;

                    switch (sv.State)
                    {
                    case StreamState.Connecting:
                    case StreamState.Buffering:
                    case StreamState.Stopping:
                        if (CurrentPalette != null)
                        {
                            CurrentPalette = null;
                        }
                        break;

                    case StreamState.Playing:
//                                if (sv.ProfileGroupSelectorEnabled)
                        if (true)
                        {
                            profileGroupSelector.Enabled = true;
                            profileGroupSelector.Visible = true;
                        }
                        profileGroupSelector.StreamViewer = ActiveStreamViewer;
                        break;
                    }
                    break;
                }
            }
        }