Beispiel #1
0
        public static Account ShowAccountSelectMenu(QWidget attachWidget)
        {
            AccountService accountService = ServiceManager.Get <AccountService>();

            if (accountService.ConnectedAccounts.Count == 0)
            {
                var widget = (attachWidget != null) ? attachWidget.TopLevelWidget() : Gui.MainWindow;
                QMessageBox.Critical(widget, "Synapse", "You are not connected.");
                return(null);
            }

            Account selectedAccount = null;

            if (accountService.ConnectedAccounts.Count > 1)
            {
                QMenu menu = new QMenu();
                menu.AddAction("Select Account:").SetDisabled(true);

                foreach (Account account in accountService.ConnectedAccounts)
                {
                    QAction action = menu.AddAction(account.Jid.ToString());
                    if (menu.ActiveAction() == null)
                    {
                        menu.SetActiveAction(action);
                    }
                }

                var     pos            = (attachWidget != null) ? attachWidget.MapToGlobal(new QPoint(0, attachWidget.Height())) : QCursor.Pos();
                QAction selectedAction = menu.Exec(pos);
                if (selectedAction != null)
                {
                    selectedAccount = accountService.GetAccount(new jabber.JID(selectedAction.Text));
                }
            }
            else
            {
                selectedAccount = accountService.ConnectedAccounts[0];
            }
            return(selectedAccount);
        }