void HandleBrowsingCompleted(object sender, EventArgs e) { if (!webViewVisible) { return; } if (authenticatingView == null) { authenticatingView = new UIView(View.Bounds) { AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight, BackgroundColor = UIColor.FromRGB(0x33, 0x33, 0x33), }; progress = new ProgressLabel("Authenticating..."); var f = progress.Frame; var b = authenticatingView.Bounds; f.X = (b.Width - f.Width) / 2; f.Y = (b.Height - f.Height) / 2; progress.Frame = f; authenticatingView.Add(progress); } else { authenticatingView.Frame = View.Bounds; } webViewVisible = false; progress.StartAnimating(); UIView.Transition ( fromView: web_view, toView: authenticatingView, duration: TransitionTime, options: UIViewAnimationOptions.TransitionCrossDissolve, completion: null ); }
void HandleSubmit () { if (progress == null) { progress = new ProgressLabel (NSBundle.MainBundle.LocalizedString ("Verifying", "Verifying status message when adding accounts")); NavigationItem.TitleView = progress; progress.StartAnimating (); } cancelSource = new CancellationTokenSource (); authenticator.SignInAsync (cancelSource.Token).ContinueWith (task => { StopProgress (); if (task.IsFaulted) { this.ShowError ("Error Signing In", task.Exception); } else { authenticator.OnSucceeded (task.Result); } }, TaskScheduler.FromCurrentSynchronizationContext ()); }
void HandleSubmit() { if (progress == null) { progress = new ProgressLabel(NSBundle.MainBundle.LocalizedString("Verifying", "Verifying status message when adding accounts")); NavigationItem.TitleView = progress; progress.StartAnimating(); } cancelSource = new CancellationTokenSource(); authenticator.SignInAsync(cancelSource.Token).ContinueWith(task => { StopProgress(); if (task.IsFaulted) { this.ShowError("Error Signing In", task.Exception); } else { authenticator.OnSucceeded(task.Result); } }, TaskScheduler.FromCurrentSynchronizationContext()); }
void StartSharing () { sharing = true; NavigationItem.RightBarButtonItem.Enabled = false; if (progress == null) { progress = new ProgressLabel (NSBundle.MainBundle.LocalizedString ("Sending...", "Sending... status message when sharing")); NavigationItem.TitleView = progress; progress.StartAnimating (); } }
void BuildUI () { var b = View.Bounds; var statusHeight = 22.0f; // // Account Field // var fieldHeight = 33; accountField = new ChoiceField ( #if ! __UNIFIED__ new RectangleF (0, b.Y, b.Width, 33), #else new RectangleF (0, (float)b.Y, (float)b.Width, 33), #endif this, NSBundle.MainBundle.LocalizedString ("From", "From title when sharing")); View.AddSubview (accountField); b.Y += fieldHeight; b.Height -= fieldHeight; // // Text Editor // var editorHeight = b.Height; if (service.HasMaxTextLength || item.Links.Count > 0) { editorHeight -= statusHeight; } textEditor = new UITextView ( #if ! __UNIFIED__ new RectangleF (0, b.Y, b.Width, editorHeight)) #else new RectangleF (0, (float) b.Y, (float) b.Width, (float)editorHeight)) #endif { Font = TextEditorFont, AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight, Text = item.Text, }; textEditor.Delegate = new TextEditorDelegate (this); View.AddSubview (textEditor); // // Icons // if (item.Images.Count > 0) { var rem = 4.0f; RectangleF f; var x = b.Right - AttachmentIcon.Size - 8 - rem*(item.Images.Count - 1); var y = textEditor.Frame.Y + 8; #if ! __UNIFIED__ f = textEditor.Frame; f.Width = x - 8 - f.X; #else f = (RectangleF)textEditor.Frame; f.Width = (float)x - 8 - f.X; #endif textEditor.Frame = f; foreach (var i in item.Images) { var icon = new ImageIcon (i.Image); #if ! __UNIFIED__ f = icon.Frame; f.X = x; f.Y = y; #else f = (RectangleF) icon.Frame; f.X = (float)x; f.Y = (float)y; #endif icon.Frame = f; View.AddSubview (icon); x += rem; y += rem; } } // // Remaining Text Length // if (service.HasMaxTextLength) { textLengthLabel = new TextLengthLabel ( #if ! __UNIFIED__ new RectangleF (4, b.Bottom - statusHeight, textEditor.Frame.Width - 8, statusHeight), #else new RectangleF (4, (float)(b.Bottom - statusHeight), (float)(textEditor.Frame.Width - 8), statusHeight), #endif service.MaxTextLength) { TextLength = service.GetTextLength (item), }; View.AddSubview (textLengthLabel); } // // Links Label // if (item.Links.Count > 0) { linksLabel = new UILabel ( #if ! __UNIFIED__ new RectangleF (4, b.Bottom - statusHeight, textEditor.Frame.Width - 66, statusHeight)) { #else new RectangleF (4, (float)(b.Bottom - statusHeight), (float)(textEditor.Frame.Width - 66), statusHeight)) { #endif TextColor = UIColor.FromRGB (124, 124, 124), AutoresizingMask = UIViewAutoresizing.FlexibleTopMargin | UIViewAutoresizing.FlexibleBottomMargin | UIViewAutoresizing.FlexibleWidth, UserInteractionEnabled = false, BackgroundColor = UIColor.Clear, Font = UIFont.SystemFontOfSize (16), LineBreakMode = UILineBreakMode.HeadTruncation, }; if (item.Links.Count == 1) { linksLabel.Text = item.Links[0].AbsoluteUri; } else { linksLabel.Text = string.Format ( NSBundle.MainBundle.LocalizedString ("{0} links", "# of links label"), item.Links.Count); } View.AddSubview (linksLabel); } // // Navigation Items // NavigationItem.LeftBarButtonItem = new UIBarButtonItem ( UIBarButtonSystemItem.Cancel, delegate { completionHandler (ShareResult.Cancelled); }); NavigationItem.RightBarButtonItem = new UIBarButtonItem ( NSBundle.MainBundle.LocalizedString ("Send", "Send button text when sharing"), UIBarButtonItemStyle.Done, HandleSend); // // Watch for the keyboard // NSNotificationCenter.DefaultCenter.AddObserver (UIKeyboard.DidShowNotification, HandleKeyboardDidShow); NSNotificationCenter.DefaultCenter.AddObserver (UIKeyboard.WillHideNotification, HandleKeyboardDidHide); } void HandleSend (object sender, EventArgs e) { if (sharing) return; item.Text = textEditor.Text; StartSharing (); var account = accounts.FirstOrDefault (); if (accounts.Count > 1 && accountField != null) { account = accounts.FirstOrDefault (x => x.Username == accountField.SelectedItem); } try { service.ShareItemAsync (item, account).ContinueWith (shareTask => { StopSharing (); if (shareTask.IsFaulted) { this.ShowError ("Share Error", shareTask.Exception); } else { completionHandler (ShareResult.Done); } }, TaskScheduler.FromCurrentSynchronizationContext ()); } catch (Exception ex) { StopSharing (); this.ShowError ("Share Error", ex); } } void StartSharing () { sharing = true; NavigationItem.RightBarButtonItem.Enabled = false; if (progress == null) { progress = new ProgressLabel (NSBundle.MainBundle.LocalizedString ("Sending...", "Sending... status message when sharing")); NavigationItem.TitleView = progress; progress.StartAnimating (); } } void StopSharing () { sharing = false; NavigationItem.RightBarButtonItem.Enabled = true; if (progress != null) { progress.StopAnimating (); NavigationItem.TitleView = null; progress = null; } }