Esempio n. 1
0
        void SetupTrayIcon()
        {
            ContextMenu context = new ContextMenu();

            foreach (var e in Enum.GetValues(typeof(RiotClient)).Cast <RiotClient>())
            {
                var name = Enum.GetName(typeof(RiotClient), e);

                if (Riot.ClientIsRunning(e))
                {
                    var game = new MenuItem()
                    {
                        Header = name + " (Running)"
                    };
                    game.Click += (s, ev) => Riot.ClientFocus(e);
                    context.Items.Add(game);

                    var gameRestart = new MenuItem()
                    {
                        Header = "Restart"
                    };
                    gameRestart.Click += (s, ev) => Riot.ClientRestart(e, ConfigProxyPort);
                    game.Items.Add(gameRestart);

                    var gameExit = new MenuItem()
                    {
                        Header = "Exit"
                    };
                    gameExit.Click += (s, ev) => Riot.ClientKill(e);
                    game.Items.Add(gameExit);
                }
                else
                {
                    var game = new MenuItem()
                    {
                        Header = $"Start " + name
                    };
                    game.Click += (s, ev) => Riot.ClientStart(e, ConfigProxyPort);
                    context.Items.Add(game);
                }
            }

            context.Items.Add(new Separator());

            var logs = new MenuItem()
            {
                Header = "Presence Logs"
            };

            logs.IsEnabled = false;
            foreach (var p in Presence.ListOfPresence)
            {
                logs.IsEnabled = true;
                var name = "log." + p.Id;
                if (p.Observer.IsCompleted)
                {
                    name += " (exited)";
                }
                var pres = new MenuItem()
                {
                    Header = name
                };
                pres.Click += (s, e) =>
                {
                    Util.ShowMessage(Util.FormatXml(p.Log));
                };
                logs.Items.Add(pres);
            }
            context.Items.Add(logs);

            context.Items.Add(new Separator());

            var align = new MenuItem()
            {
                Header = "Right-align game client?"
            };

            align.IsChecked   = RightAlign;
            align.IsCheckable = true;
            align.Click      += (s, e) =>
            {
                RightAlign = !RightAlign;
            };
            context.Items.Add(align);

            var offline = new MenuItem()
            {
                Header = "Appear offline?"
            };

            offline.IsChecked   = AppearOffline;
            offline.IsCheckable = true;
            offline.Click      += (s, e) =>
            {
                AppearOffline = !AppearOffline;
                Presence.UpdateAllPresence(AppearOffline);
            };
            context.Items.Add(offline);

            context.Items.Add(new Separator());

            var exit = new MenuItem()
            {
                Header = "Exit"
            };

            exit.Click += (s, e) =>
            {
                Riot.KillRiotClientProcesses();
                NotifyIcon.Dispose();
                Environment.Exit(0);
            };
            context.Items.Add(exit);

            NotifyIcon.ContextMenu = context;
        }