Exemplo n.º 1
0
 public ScreenInformation(RegistryKey rootKey, int screenNumber, MultiScreenMode multiScreenMode)
 {
     RootKey = rootKey;
     Bounds  = multiScreenMode switch
     {
         MultiScreenMode.Span => FindEnclosingRectangle(),
         MultiScreenMode.Mirror or MultiScreenMode.Separate => Screen.AllScreens[screenNumber].Bounds,
         _ => throw new IndexOutOfRangeException("Unrecognized MultiScreenMode value.")
     };
 }
Exemplo n.º 2
0
        /// <summary>
        /// Method called when the form is loaded, so the UI gets updated with the registry data.
        /// </summary>
        private void PreferencesForm_Load(object sender, EventArgs e)
        {
            _checkBoxCloseOnMouseMovement.Checked = Preferences.CloseOnMouseMovement;

            MultiScreenMode multiScreenMode = Preferences.MultiScreen;

            // The Checked event will determine what to show in the tabs
            _radioButtonMirrorScreens.Checked   = multiScreenMode == MultiScreenMode.Mirror;
            _radioButtonSeparateScreens.Checked = multiScreenMode == MultiScreenMode.Separate;
            _radioButtonSpanScreens.Checked     = multiScreenMode == MultiScreenMode.Span;

            //_flowLayoutPanelMultiScreenMode.Enabled = Screen.AllScreens.Length > 1;
        }
Exemplo n.º 3
0
        private void RadioButtonMultiScreenMode_Checked(object sender, EventArgs e)
        {
            if (sender is not RadioButton radioButton || !radioButton.Checked)
            {
                return;
            }

            MultiScreenMode multiScreenMode = radioButton.Name switch
            {
                nameof(_radioButtonMirrorScreens) => MultiScreenMode.Mirror,
                nameof(_radioButtonSeparateScreens) => MultiScreenMode.Separate,
                nameof(_radioButtonSpanScreens) => MultiScreenMode.Span,
                _ => throw new IndexOutOfRangeException("Unexpected radio button."),
            };

            // Save it to the registry
            Preferences.MultiScreen = multiScreenMode;

            int totalTabs = multiScreenMode switch
            {
                MultiScreenMode.Mirror or MultiScreenMode.Span => 1,
                MultiScreenMode.Separate => Screen.AllScreens.Length,
                _ => throw new IndexOutOfRangeException("Unrecognized MultiScreenMode value.")
            };

            string tabTextSuffix = multiScreenMode switch
            {
                MultiScreenMode.Mirror => " (Mirror)",
                MultiScreenMode.Span => " (Composite)",
                MultiScreenMode.Separate => "",
                _ => throw new IndexOutOfRangeException("Unrecognized MultiScreenMode value.")
            };

            _tabControlScreens.TabPages.Clear();

            for (int tabNumber = 0; tabNumber < totalTabs; tabNumber++)
            {
                TabPage tab = new TabPage
                {
                    Text = $"Display {tabNumber + 1}{tabTextSuffix}" // Matches registry key name
                };

                var currentUserControl = new PrefsByScreenUserControl
                {
                    AutoSize  = true,
                    BackColor = Color.White,
                    Dock      = DockStyle.Fill,
                    Name      = $"_prefsByScreenUserControl{tabNumber}",
                    TabIndex  = 5
                };

                ScreenInformation currentScreen = Preferences.Screens[tabNumber];

                foreach (string url in currentScreen.URLs)
                {
                    currentUserControl._listViewURLs.Items.Add(url);
                }

                currentUserControl._numericUpDownRotationInterval.Value = currentScreen.RotationInterval;
                currentUserControl._checkBoxShuffle.Checked             = currentScreen.Shuffle;

                tab.Controls.Add(currentUserControl);
                _tabControlScreens.TabPages.Add(tab);
            }
        }