public ReturnCode GetStringFromUser(GetStringFromUserDescriptor descriptor, out string input) { input = string.Empty; return ReturnCode.Ignore; }
public ReturnCode GetStringFromUserSync(GetStringFromUserDescriptor descriptor) { try { m_sUserInput = String.Empty; VirtualKeyboard keyboard = (VirtualKeyboard)GUIWindowManager.GetWindow((int)Window.WINDOW_VIRTUAL_KEYBOARD); if (null == keyboard) return ReturnCode.Cancel; keyboard.Reset(); keyboard.Text = descriptor.Text; keyboard.ShiftTurnedOn = descriptor.ShiftEnabled; keyboard.Password = descriptor.IsPassword; keyboard.DoModal(GUIWindowManager.ActiveWindow); if (keyboard.IsConfirmed) { m_sUserInput = keyboard.Text; return ReturnCode.OK; } else return ReturnCode.Cancel; } catch (Exception ex) { MPTVSeriesLog.Write("The GetStringFromUser Method has generated an error: " + ex.Message); m_sUserInput = String.Empty; return ReturnCode.Cancel; } finally { this.m_Facade.Focus = true; } }
private void ShowViewTagsMenu(bool add, DBSeries series) { IDialogbox dlg = (IDialogbox)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU); if (dlg == null) return; dlg.Reset(); string sDialogHeading = (add ? Translation.AddViewTag : Translation.RemoveViewTag); dlg.SetHeading(sDialogHeading); GUIListItem pItem = null; DBView[] views = DBView.getTaggedViews(); string currTags = series[DBOnlineSeries.cViewTags]; String[] splitTags = currTags.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); // Add Menu items if (add) { // List available tag views foreach (DBView view in views) { string viewname = view[DBView.cTransToken]; // We dont want to add it to the list if its already a member if (!currTags.Contains("|" + viewname + "|")) { pItem = new GUIListItem(viewname); dlg.Add(pItem); pItem.ItemId = view[DBView.cIndex]; } } pItem = new GUIListItem(Translation.NewViewTag + " ..."); dlg.Add(pItem); pItem.ItemId = (int)eContextItems.viewAddToNewView; } else { // we list all the tags that current series is a member of int iItemIdx = 1000; foreach (String tag in splitTags) { pItem = new GUIListItem(tag); dlg.Add(pItem); pItem.ItemId = iItemIdx++; } } // Show Menu dlg.DoModal(GUIWindowManager.ActiveWindow); if (dlg.SelectedId < 0 || dlg.SelectedId == (int)DeleteMenuItems.cancel) return; #region Add a New Tagged View string selectedItem = string.Empty; if (dlg.SelectedId == (int)eContextItems.viewAddToNewView) { GetStringFromUserDescriptor Keyboard = new GetStringFromUserDescriptor(); Keyboard.Text = string.Empty; Keyboard.ShiftEnabled = true; bool viewExists = true; while (viewExists) { if (this.GetStringFromUser(Keyboard, out selectedItem) == ReturnCode.OK) { // Create View if it doesnt exist viewExists = false; foreach (DBView view in views) { if (selectedItem.Equals(view[DBView.cTransToken], StringComparison.CurrentCultureIgnoreCase)) { ShowViewExistsMessage(selectedItem); viewExists = true; break; } } } else return; } if (selectedItem.Length == 0) return; // Add New View to database // Ensure index is unique...assumes index is updated when deleting views int index = logicalView.getAll(true).Count; string config = DBView.GetTaggedViewConfigString(selectedItem); MPTVSeriesLog.Write(string.Format("Creating New Tagged View: {0}", selectedItem)); DBView.AddView(index, selectedItem, selectedItem, config, true); } #endregion string newTags = string.Empty; // Get Selected Item if not a new Tag if (dlg.SelectedId != (int)eContextItems.viewAddToNewView) selectedItem = dlg.SelectedLabelText; // Add / Remove Tag from series if (add) { MPTVSeriesLog.Write(string.Format("Adding new Tag \"{0}\" to series: {1}", selectedItem, series.ToString())); newTags = Helper.GetSeriesViewTags(series, true, selectedItem); } else { MPTVSeriesLog.Write(string.Format("Removing Tag \"{0}\" from series: {1}", selectedItem, series.ToString())); newTags = Helper.GetSeriesViewTags(series, false, selectedItem); } // Update Main View List m_allViews = logicalView.getAll(false); // Commit changes to database series[DBOnlineSeries.cViewTags] = newTags; series.Commit(); // Special case to handle online favourites // We need to add/remove from online database if (selectedItem == DBView.cTranslateTokenOnlineFavourite) { string account = DBOption.GetOptions(DBOption.cOnlineUserID); if (String.IsNullOrEmpty(account)) { GUIDialogOK dlgOK = (GUIDialogOK)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_OK); dlgOK.SetHeading(Translation.OnlineFavourites); dlgOK.SetLine(1, Translation.TVDB_INFO_ACCOUNTID_1); dlgOK.SetLine(2, Translation.TVDB_INFO_ACCOUNTID_2); dlgOK.DoModal(GUIWindowManager.ActiveWindow); MPTVSeriesLog.Write("Cannot submit online favourite, make sure you have your Account identifier set!"); } else { Online_Parsing_Classes.OnlineAPI.ConfigureFavourites(add, account, series[DBOnlineSeries.cID]); } } // Load Facade to reflect changes // We only need to reload when removing from a View that is active if (!add) { if (m_CurrLView.Name.Equals(selectedItem, StringComparison.CurrentCultureIgnoreCase) || m_CurrLView.gettypeOfStep(0) == logicalViewStep.type.group) LoadFacade(); } }
public ReturnCode GetStringFromUser(GetStringFromUserDescriptor descriptor, out String input) { if (this.m_Facade == null) { input = string.Empty; return ReturnCode.NotReady; } ReturnCode returnCode; if (m_localControlForInvoke.InvokeRequired) { returnCode = (ReturnCode)m_localControlForInvoke.Invoke(new GetStringFromUserDelegate(GetStringFromUserSync), new Object[] { descriptor }); } else returnCode = GetStringFromUserSync(descriptor); input = m_sUserInput; return returnCode; }
private bool CheckParentalControls(logicalView view) { bool pinInCorrect = true; if (view.ParentalControl && logicalView.IsLocked) { // We can't show a dialog on top when there is no main window if (!m_bPluginLoaded && m_bShowLastActiveModule && (m_iLastActiveModule == GetID)) { return false; } // Update Ugly Current View Property if not yet set if (TVSeriesPlugin.getGUIProperty(guiProperty.CurrentView.ToString()).Length == 0) { setGUIProperty(guiProperty.CurrentView, Translation.ViewIsLocked); setGUIProperty(guiProperty.SimpleCurrentView, Translation.ViewIsLocked); } MPTVSeriesLog.Write(string.Format("View: {0} is locked, prompting for PinCode", view.prettyName)); // Check if Graphical PinCode dialog exists if (System.IO.File.Exists(GUIGraphicsContext.Skin + @"\TVSeries.PinCodeDialog.xml")) { try { GUIPinCode pinCodeDlg = (GUIPinCode)GUIWindowManager.GetWindow(GUIPinCode.ID); pinCodeDlg.Reset(); // Initialize Dialog pinCodeDlg.MasterCode = DBOption.GetOptions(DBOption.cParentalControlPinCode); pinCodeDlg.EnteredPinCode = string.Empty; pinCodeDlg.SetHeading(Translation.PinCode); pinCodeDlg.SetLine(1, string.Format(Translation.PinCodeDlgLabel1, view.prettyName)); pinCodeDlg.SetLine(2, Translation.PinCodeDlgLabel2); pinCodeDlg.Message = Translation.PinCodeMessageIncorrect; pinCodeDlg.DoModal(pinCodeDlg.GetID); //should this be (GUIWindowManager.ActiveWindow)? if (!pinCodeDlg.IsCorrect) { // Prompt to choose UnProtected View MPTVSeriesLog.Write("PinCode entered was incorrect, showing Views Menu"); return false; } else { // reset timer ResetParentalControlTimer(); logicalView.IsLocked = false; } } catch (Exception ex) { MPTVSeriesLog.Write(string.Format("An Error occurred in the PinCode Dialog: {0}", ex.Message)); return false; } } else { // Use Virtual Keyboard if skin doesnt exist while (pinInCorrect) { GetStringFromUserDescriptor Keyboard = new GetStringFromUserDescriptor(); Keyboard.Text = string.Empty; Keyboard.IsPassword = true; string enteredPinCode = string.Empty; string pinMasterCode = DBOption.GetOptions(DBOption.cParentalControlPinCode); if (pinMasterCode.Length == 0) break; if (this.GetStringFromUser(Keyboard, out enteredPinCode) == ReturnCode.OK) { // Convert SMS Input to Numbers string smsCode = string.Empty; if (enteredPinCode.Length == 4) { for (int i = 0; i < 4; i++) { smsCode += Helper.ConvertSMSInputToPinCode(enteredPinCode[i].ToString()); } } // Check if PinCode is correct if (smsCode != pinMasterCode) { ShowPinCodeIncorrectMessage(); pinInCorrect = true; } else { // Cease to prompt for PinCode for remainder of session logicalView.IsLocked = false; pinInCorrect = false; // reset timer ResetParentalControlTimer(); } } else { return false; } } } } return true; }