public SelectExternalContentProviderDialog(string title, bool listingSupportRequired, Action <IExternalContentProvider> selectionHandler) : base(title, ExternalContentManager.Providers.Where((IExternalContentProvider p) => !listingSupportRequired || p.SupportsListing), 100f, delegate(object item) { IExternalContentProvider externalContentProvider = (IExternalContentProvider)item; XElement node = ContentManager.Get <XElement>("Widgets/SelectExternalContentProviderItem"); ContainerWidget obj = (ContainerWidget)Widget.LoadWidget(null, node, null); obj.Children.Find <LabelWidget>("SelectExternalContentProvider.Text").Text = externalContentProvider.DisplayName; obj.Children.Find <LabelWidget>("SelectExternalContentProvider.Details").Text = externalContentProvider.Description; return(obj); }, delegate(object item) { selectionHandler((IExternalContentProvider)item); }) { base.ContentSize = new Vector2(700f, base.ContentSize.Y); }
public static void ShowLoginUiIfNeeded(IExternalContentProvider provider, bool showWarningDialog, Action handler) { if (provider.RequiresLogin && !provider.IsLoggedIn) { Action loginAction = delegate { CancellableBusyDialog busyDialog = new CancellableBusyDialog(LanguageControl.Get(fName, 5), autoHideOnCancel: true); DialogsManager.ShowDialog(null, busyDialog); provider.Login(busyDialog.Progress, delegate { DialogsManager.HideDialog(busyDialog); handler?.Invoke(); }, delegate(Exception error) { DialogsManager.HideDialog(busyDialog); if (error != null) { DialogsManager.ShowDialog(null, new MessageDialog(LanguageControl.Get("Usual", "error"), error.Message, LanguageControl.Get("Usual", "ok"), null, null)); } }); }; if (showWarningDialog) { DialogsManager.ShowDialog(null, new MessageDialog(LanguageControl.Get(fName, 6), string.Format(LanguageControl.Get(fName, 7), provider.DisplayName), LanguageControl.Get(fName, 8), LanguageControl.Get("Usual", "cancel"), delegate(MessageDialogButton b) { if (b == MessageDialogButton.Button1) { loginAction(); } })); } else { loginAction(); } } else { handler?.Invoke(); } }
public override void Update() { if (m_listDirty) { m_listDirty = false; UpdateList(); } ExternalContentEntry externalContentEntry = null; if (m_directoryList.SelectedIndex.HasValue) { externalContentEntry = (m_directoryList.Items[m_directoryList.SelectedIndex.Value] as ExternalContentEntry); } if (externalContentEntry != null) { m_actionButton.IsVisible = true; if (externalContentEntry.Type == ExternalContentType.Directory) { m_actionButton.Text = LanguageControl.Get(fName, 1); m_actionButton.IsEnabled = true; m_copyLinkButton.IsEnabled = false; } else { m_actionButton.Text = LanguageControl.Get(fName, 2); if (ExternalContentManager.IsEntryTypeDownloadSupported(ExternalContentManager.ExtensionToType(Storage.GetExtension(externalContentEntry.Path).ToLower()))) { m_actionButton.IsEnabled = true; m_copyLinkButton.IsEnabled = true; } else { m_actionButton.IsEnabled = false; m_copyLinkButton.IsEnabled = false; } } } else { m_actionButton.IsVisible = false; m_copyLinkButton.IsVisible = false; } m_directoryLabel.Text = m_externalContentProvider.IsLoggedIn ? string.Format(LanguageControl.Get(fName, 3), m_path) : LanguageControl.Get(fName, 4); m_providerNameLabel.Text = m_externalContentProvider.DisplayName; m_upDirectoryButton.IsEnabled = (m_externalContentProvider.IsLoggedIn && m_path != "/"); m_loginLogoutButton.Text = (m_externalContentProvider.IsLoggedIn ? LanguageControl.Get(fName, 5) : LanguageControl.Get(fName, 6)); m_loginLogoutButton.IsVisible = m_externalContentProvider.RequiresLogin; m_copyLinkButton.IsVisible = m_externalContentProvider.SupportsLinks; m_copyLinkButton.IsEnabled = (externalContentEntry != null && ExternalContentManager.IsEntryTypeDownloadSupported(externalContentEntry.Type)); if (m_changeProviderButton.IsClicked) { DialogsManager.ShowDialog(null, new SelectExternalContentProviderDialog(LanguageControl.Get(fName, 7), listingSupportRequired : true, delegate(IExternalContentProvider provider) { m_externalContentProvider = provider; m_listDirty = true; SetPath(null); })); } if (m_upDirectoryButton.IsClicked) { string directoryName = Storage.GetDirectoryName(m_path); SetPath(directoryName); } if (m_actionButton.IsClicked && externalContentEntry != null) { if (externalContentEntry.Type == ExternalContentType.Directory) { SetPath(externalContentEntry.Path); } else { DownloadEntry(externalContentEntry); } } if (m_copyLinkButton.IsClicked && externalContentEntry != null && ExternalContentManager.IsEntryTypeDownloadSupported(externalContentEntry.Type)) { CancellableBusyDialog busyDialog = new CancellableBusyDialog(LanguageControl.Get(fName, 8), autoHideOnCancel: false); DialogsManager.ShowDialog(null, busyDialog); m_externalContentProvider.Link(externalContentEntry.Path, busyDialog.Progress, delegate(string link) { DialogsManager.HideDialog(busyDialog); DialogsManager.ShowDialog(null, new ExternalContentLinkDialog(link)); }, delegate(Exception error) { DialogsManager.HideDialog(busyDialog); DialogsManager.ShowDialog(null, new MessageDialog(LanguageControl.Get("Usual", "error"), error.Message, LanguageControl.Get("Usual", "ok"), null, null)); }); } if (m_loginLogoutButton.IsClicked) { if (m_externalContentProvider.IsLoggedIn) { m_externalContentProvider.Logout(); SetPath(null); m_listDirty = true; } else { ExternalContentManager.ShowLoginUiIfNeeded(m_externalContentProvider, showWarningDialog: false, delegate { SetPath(null); m_listDirty = true; }); } } if (base.Input.Back || base.Input.Cancel || Children.Find <ButtonWidget>("TopBar.Back").IsClicked) { ScreensManager.SwitchScreen("Content"); } }