public MpDialogNotify(MediaPortal.Dialogs.GUIDialogNotify menu) : base(menu) { this.dialogMenu = menu; this.DialogType = menu.GetModuleName(); this.DialogId = menu.GetID; this.AvailableActions.Add("ok"); this.AvailableActions.Add("cancel"); GetHeading(menu, 4); }
public MpDialogNotify(MediaPortal.Dialogs.GUIDialogNotify menu) : base(menu) { this.dialogMenu = menu; this.DialogType = menu.GetModuleName(); this.DialogId = menu.GetID; this.AvailableActions.Add("ok"); this.AvailableActions.Add("cancel"); GetHeading(menu, 4); }
/// <summary> /// Handles all CiMenu actions from callback /// </summary> public static void ShowCiMenu() { lock (CiMenuLock) { if (CiMenuActive || CiMenuList.Count == 0) return; currentCiMenu = CiMenuList[0]; CiMenuList.RemoveAt(0); CiMenuActive = true; // avoid re-entrance from process() } if (dlgCiMenu == null) { dlgCiMenu = (GUIDialogCIMenu) GUIWindowManager.GetWindow((int)MediaPortal.GUI.Library.GUIWindow.Window.WINDOW_DIALOG_CIMENU); } switch (currentCiMenu.State) { // choices available, so show them case TvLibrary.Interfaces.CiMenuState.Ready: dlgCiMenu.Reset(); dlgCiMenu.SetHeading(currentCiMenu.Title, currentCiMenu.Subtitle, currentCiMenu.BottomText); // CI Menu for (int i = 0; i < currentCiMenu.NumChoices; i++) // CI Menu Entries dlgCiMenu.Add(currentCiMenu.MenuEntries[i].Message); // take only message, numbers come from dialog // show dialog and wait for result dlgCiMenu.DoModal(GUIWindowManager.ActiveWindow); if (currentCiMenu.State != TvLibrary.Interfaces.CiMenuState.Error) { if (dlgCiMenu.SelectedId != -1) { TVHome.Card.SelectCiMenu(Convert.ToByte(dlgCiMenu.SelectedId)); } else { if (CiMenuList.Count == 0) // Another menu is pending, do not answer... TVHome.Card.SelectCiMenu(0); // 0 means "back" } } else { TVHome.Card.CloseMenu(); // in case of error close the menu } break; // errors and menu options with no choices case TvLibrary.Interfaces.CiMenuState.Error: case TvLibrary.Interfaces.CiMenuState.NoChoices: if (_dialogNotify == null) { _dialogNotify = (GUIDialogNotify)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_NOTIFY); } if (null != _dialogNotify) { _dialogNotify.Reset(); _dialogNotify.ClearAll(); _dialogNotify.SetHeading(currentCiMenu.Title); _dialogNotify.SetText(String.Format("{0}\r\n{1}", currentCiMenu.Subtitle, currentCiMenu.BottomText)); _dialogNotify.TimeOut = 2; // seconds _dialogNotify.DoModal(GUIWindowManager.ActiveWindow); } break; // requests require users input so open keyboard case TvLibrary.Interfaces.CiMenuState.Request: String result = ""; if ( GetKeyboard(currentCiMenu.RequestText, currentCiMenu.AnswerLength, currentCiMenu.Password, ref result) == true) { TVHome.Card.SendMenuAnswer(false, result); // send answer, cancel=false } else { TVHome.Card.SendMenuAnswer(true, null); // cancel request } break; case CiMenuState.Close: if (_dialogNotify != null) { GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_WINDOW_DEINIT, _dialogNotify.GetID, 0, 0, 0, 0, null); _dialogNotify.OnMessage(msg); // Send a de-init msg to hide the current notify dialog } if (dlgCiMenu != null) { GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_WINDOW_DEINIT, dlgCiMenu.GetID, 0, 0, 0, 0, null); dlgCiMenu.OnMessage(msg); // Send a de-init msg to hide the current CI menu dialog } break; } CiMenuActive = false; // finished currentCiMenu = null; // reset menu }