示例#1
0
        public TrayIcon(RootModel model)
        {
            this.model             = model;
            model.PropertyChanged += UpdateTray;

            ContextMenuStrip  trayMenu = new ContextMenuStrip();
            ToolStripMenuItem vcItem   = new ToolStripMenuItem("Définir le volume", null, delegate
            {
                OnVolumeControlClicked(EventArgs.Empty);
            });

            vcItem.Font = new Font(vcItem.Font, vcItem.Font.Style | FontStyle.Bold);
            trayMenu.Items.Add(vcItem);
            muteItem = new ToolStripMenuItem("Tout mettre en sourdine", null, delegate
            {
                model.Muted = !model.Muted;
            });
            UpdateMuteItemChecked();
            trayMenu.Items.Add(muteItem);
            trayMenu.Items.Add(new ToolStripMenuItem("Basculer depuis/vers son local", null, delegate
            {
                foreach (SessionModel session in model.Sessions)
                {
                    if (session.Valid && session.ShowInMixer && session.CanSwap)
                    {
                        session.Muted = !session.Muted;
                    }
                }
                LocalSound.ToggleMute();
            }));
            trayMenu.Items.Add(new ToolStripMenuItem("Réinitialiser", null, delegate
            {
                OnResetClicked(EventArgs.Empty);
            }));
            trayMenu.Items.Add(new ToolStripMenuItem("Paramètres", null, delegate
            {
                OnSettingsClicked(EventArgs.Empty);
            }));
            trayMenu.Items.Add(new ToolStripSeparator());
            trayMenu.Items.Add(new ToolStripMenuItem("Arrêter EtherSound", null, delegate
            {
                if (MessageBox.Show("Voulez-vous vraiment arrêter EtherSound ?", "EtherSound", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                {
                    Application.ExitThread();
                }
            }));

            SystemEvents.UserPreferenceChanged += delegate
            {
                UpdateTrayIconIcon();
                model.UpdateIcon();
            };

            trayIcon             = new NotifyIcon();
            trayIcon.MouseClick += (sender, e) =>
            {
                switch (e.Button)
                {
                case MouseButtons.Left:
                    OnVolumeControlClicked(EventArgs.Empty);
                    break;

                case MouseButtons.Middle:
                    model.Muted = !model.Muted;
                    break;
                }
            };
            trayIcon.ContextMenuStrip = trayMenu;
            UpdateTrayIconIcon();
            UpdateTrayIconText();
            trayIcon.Visible = true;
        }