Пример #1
0
        void UpdateUserInfo()
        {
            var profileRect = new RectangleF(PadX, 0, View.Bounds.Width - 30 - PadX * 2, 100);

            shortProfileView = new ShortProfileView(profileRect, ReferenceUser.Id, true);
            shortProfileView.PictureTapped += delegate { PictureViewer.Load(this, ReferenceUser.Id); };
            shortProfileView.UrlTapped     += delegate { WebViewController.OpenUrl(this, ReferenceUser.Url); };
            shortProfileView.Tapped        += delegate { ActivateController(new FullProfileView(ReferenceUser.Id)); };
            TableView.TableHeaderView       = shortProfileView;
        }
        public DetailTweetViewController(Tweet partialTweet) : base(UITableViewStyle.Grouped, null, true)
        {
            bool isMine = false;

            if (partialTweet.IsSearchResult)
            {
                Tweet.LoadFullTweet(partialTweet.Id, fullTweet => SetTweet(fullTweet));
            }
            else
            {
                isMine = partialTweet.UserId == TwitterAccount.CurrentAccount.AccountId;

                // Hack until we figure out why DELETE is not working with OAuth
                // and making the server return 401 Unauthorized
                isMine = false;
            }

            var handlers    = new EventHandler [] { Reply, Retweet, Direct, Delete };
            var profileRect = new RectangleF(PadX, 0, View.Bounds.Width - PadX, 100);
            var detailRect  = new RectangleF(PadX, 0, View.Bounds.Width - 30 - PadX * 2, 0);

            shortProfileView    = new ShortProfileView(profileRect, partialTweet, true);
            profileRect.Height += 8;

            var triangle = new TriangleView(UIColor.White, UIColor.FromRGB(171, 171, 171))
            {
                Frame = new RectangleF(43, shortProfileView.Bounds.Height + 1, 16, 8)
            };

            var containerView = new UIView(profileRect);

            containerView.Add(shortProfileView);
            containerView.Add(triangle);

            main = new Section(containerView)
            {
                new UIViewElement(null, new DetailTweetView(detailRect, partialTweet, TapHandler, TapAndHoldHandler, this), false)
                {
                    Flags = UIViewElement.CellFlags.DisableSelection
                }
            };

            Section replySection = new Section();

            if (partialTweet.Kind == TweetKind.Direct)
            {
                replySection.Add(new StringElement(Locale.GetText("Direct Reply"), delegate { Direct(this, EventArgs.Empty); }));
            }
            else
            {
                replySection.Add(new UIViewElement(null, new ButtonsView(isMine ? 4 : 3, buttons, handlers), true)
                {
                    Flags = UIViewElement.CellFlags.DisableSelection | UIViewElement.CellFlags.Transparent
                });
            }

            userTimeline = TimelineRootElement.MakeTimeline(partialTweet.Screename, Locale.GetText("User's timeline"), "http://api.twitter.com/1/statuses/user_timeline.json?skip_user=true&screen_name=" + partialTweet.Screename, User.FromTweet(partialTweet));

            tweet = partialTweet;
            if (!partialTweet.IsSearchResult)
            {
                SetTweet(partialTweet);
            }

            Root = new RootElement(partialTweet.Screename)
            {
                main,
                replySection,
                new Section()
                {
                    userTimeline
                }
            };
        }
Пример #3
0
 void UpdateUserInfo()
 {
     var profileRect = new RectangleF (PadX, 0, View.Bounds.Width-30-PadX*2, 100);
     shortProfileView = new ShortProfileView (profileRect, ReferenceUser.Id, true);
     shortProfileView.PictureTapped += delegate { PictureViewer.Load (this, ReferenceUser.Id); };
     shortProfileView.UrlTapped += delegate { WebViewController.OpenUrl (this, ReferenceUser.Url); };
     shortProfileView.Tapped += delegate { ActivateController (new FullProfileView (ReferenceUser.Id)); };
     TableView.TableHeaderView = shortProfileView;
 }
        public DetailTweetViewController(Tweet partialTweet)
            : base(UITableViewStyle.Grouped, null, true)
        {
            bool isMine = false;

            if (partialTweet.IsSearchResult)
                Tweet.LoadFullTweet (partialTweet.Id, fullTweet => SetTweet (fullTweet));
            else {
                isMine = partialTweet.UserId == TwitterAccount.CurrentAccount.AccountId;

                // Hack until we figure out why DELETE is not working with OAuth
                // and making the server return 401 Unauthorized
                isMine = false;
            }

            var handlers = new EventHandler [] { Reply, Retweet, Direct, Delete };
            var profileRect = new RectangleF (PadX, 0, View.Bounds.Width-PadX, 100);
            var detailRect = new RectangleF (PadX, 0, View.Bounds.Width-30-PadX*2, 0);

            shortProfileView = new ShortProfileView (profileRect, partialTweet, true);
            profileRect.Height += 8;

            var triangle = new TriangleView (UIColor.White, UIColor.FromRGB (171, 171, 171)) {
                Frame = new RectangleF (43, shortProfileView.Bounds.Height+1, 16, 8)
            };

            var containerView = new UIView (profileRect);
            containerView.Add (shortProfileView);
            containerView.Add (triangle);

            main = new Section (containerView){
                new UIViewElement (null, new DetailTweetView (detailRect, partialTweet, TapHandler, TapAndHoldHandler, this), false) {
                    Flags = UIViewElement.CellFlags.DisableSelection
                }
            };

            Section replySection = new Section ();
            if (partialTweet.Kind == TweetKind.Direct)
                replySection.Add (new StringElement (Locale.GetText ("Direct Reply"), delegate { Direct (this, EventArgs.Empty); }));
            else
                replySection.Add (new UIViewElement (null, new ButtonsView (isMine ? 4 : 3, buttons, handlers), true) {
                    Flags = UIViewElement.CellFlags.DisableSelection | UIViewElement.CellFlags.Transparent
                });

            userTimeline = TimelineRootElement.MakeTimeline (partialTweet.Screename, Locale.GetText ("User's timeline"), "http://api.twitter.com/1/statuses/user_timeline.json?skip_user=true&screen_name=" + partialTweet.Screename, User.FromTweet (partialTweet));

            tweet = partialTweet;
            if (!partialTweet.IsSearchResult)
                SetTweet (partialTweet);

            Root = new RootElement (partialTweet.Screename){
                main,
                replySection,
                new Section () {
                    userTimeline
                }
            };
        }
Пример #5
0
        void CreateUI()
        {
            System.Threading.Thread.Sleep (2000);
            if (spinner != null){
                spinner.RemoveFromSuperview ();
                spinner = null;
            }

            var profileRect = new RectangleF (PadX, 0, View.Bounds.Width-PadX, 100);
            var shortProfileView = new ShortProfileView (profileRect, user.Id, false);
            shortProfileView.PictureTapped += delegate { PictureViewer.Load (this, user.Id); };
            shortProfileView.UrlTapped += delegate { WebViewController.OpenUrl (this, user.Url); };

            var main = new Section (shortProfileView);
            if (!String.IsNullOrEmpty (user.Description)){
                main.Add (new StyledMultilineElement (user.Description) {
                    Lines = 0,
                    LineBreakMode = UILineBreakMode.WordWrap,
                    Font = UIFont.SystemFontOfSize (14),
                });
            };

            var tweetsUrl = String.Format ("http://api.twitter.com/1/statuses/user_timeline.json?skip_user=true&id={0}", user.Id);
            var favoritesUrl = String.Format ("http://api.twitter.com/1/favorites.json?id={0}", user.Id);
            var followersUrl = String.Format ("http://api.twitter.com/1/statuses/followers.json?id={0}", user.Id);
            var friendsUrl = String.Format ("http://api.twitter.com/1/statuses/friends.json?id={0}", user.Id);

            #if false
            followButton = new StyledStringElement (FollowText, ToggleFollow){
                Alignment = UITextAlignment.Center,
                TextColor = UIColor.FromRGB (0x32, 0x4f, 0x85)
            };
            #endif
            var sfollow = new Section () {
                new ActivityElement ()
            };

            Root = new RootElement (user.Screenname){
                main,
                new Section () {
                    TimelineRootElement.MakeTimeline (user.Screenname, Locale.Format ("{0:#,#} tweets", user.StatusesCount), tweetsUrl, user),
                    TimelineRootElement.MakeFavorites (user.Screenname, Locale.Format ("{0:#,#} favorites", user.FavCount), favoritesUrl, null),
                    new UserRootElement (user, Locale.Format ("{0:#,#} friends", user.FriendsCount), friendsUrl),
                    new UserRootElement (user, Locale.Format ("{0:#,#} followers", user.FollowersCount), followersUrl),
                },
                sfollow,
            };
            var created = user.CreatedAt;
            if (created.HasValue){
                Root.Add (new Section (null, Locale.Format ("Joined on {0}", created.Value.ToLongDateString ())));
            }

            string url = String.Format ("http://api.twitter.com/1/friendships/show.json?target_id={0}&source_screen_name={1}",
                                        user.Id,
                                        OAuth.PercentEncode (TwitterAccount.CurrentAccount.Username));
            TwitterAccount.CurrentAccount.Download (url, res => {
                TableView.BeginUpdates ();
                Root.Remove (sfollow);
                if (res != null)
                    ParseFollow (res);

                TableView.EndUpdates ();
            });
        }
        public DetailTweetViewController(Tweet tweet)
            : base(UITableViewStyle.Grouped, null, true)
        {
            this.tweet = tweet;
            var handlers = new EventHandler [] { Reply, Retweet, Direct };
            var profileRect = new RectangleF (PadX, 0, View.Bounds.Width-30-PadX*2, 100);
            var detailRect = new RectangleF (PadX, 0, View.Bounds.Width-30-PadX*2, 0);

            var shortProfileView = new ShortProfileView (profileRect, tweet.UserId, true);
            shortProfileView.PictureTapped += delegate { PictureViewer.Load (this, tweet.UserId); };
            shortProfileView.Tapped += LoadFullProfile;
            shortProfileView.UrlTapped += delegate { WebViewController.OpenUrl (this, User.FromId (tweet.UserId).Url); };

            var main = new Section (shortProfileView){
                new UIViewElement (null, new DetailTweetView (detailRect, tweet, ContentHandler, this), false) {
                    Flags = UIViewElement.CellFlags.DisableSelection
                }
            };
            if (tweet.InReplyToStatus != 0){
                var in_reply = new ConversationRootElement (Locale.Format ("In reply to: {0}", tweet.InReplyToUserName), tweet);

                main.Add (in_reply);
            }

            Section replySection = new Section ();
            if (tweet.Kind == TweetKind.Direct)
                replySection.Add (new StringElement (Locale.GetText ("Direct Reply"), delegate { Direct (this, EventArgs.Empty); }));
            else
                replySection.Add (new UIViewElement (null, new ButtonsView (buttons, handlers), true) {
                    Flags = UIViewElement.CellFlags.DisableSelection | UIViewElement.CellFlags.Transparent
                });

            Root = new RootElement (tweet.Screename){
                main,
                replySection,
                new Section () {
                    TimelineRootElement.MakeTimeline (tweet.Screename, Locale.GetText ("User's timeline"), "http://api.twitter.com/1/statuses/user_timeline.json?skip_user=true&id=" + tweet.UserId, User.FromId (tweet.UserId))
                }
            };
        }
Пример #7
0
        void CreateUI()
        {
            System.Threading.Thread.Sleep(2000);
            if (spinner != null)
            {
                spinner.RemoveFromSuperview();
                spinner = null;
            }

            var profileRect      = new RectangleF(PadX, 0, View.Bounds.Width - PadX, 100);
            var shortProfileView = new ShortProfileView(profileRect, user.Id, false);

            shortProfileView.PictureTapped += delegate { PictureViewer.Load(this, user.Id); };
            shortProfileView.UrlTapped     += delegate { WebViewController.OpenUrl(this, user.Url); };

            var main = new Section(shortProfileView);

            if (!String.IsNullOrEmpty(user.Description))
            {
                main.Add(new StyledMultilineElement(user.Description)
                {
                    Lines         = 0,
                    LineBreakMode = UILineBreakMode.WordWrap,
                    Font          = UIFont.SystemFontOfSize(14),
                });
            }
            ;

            var tweetsUrl    = String.Format("http://api.twitter.com/1/statuses/user_timeline.json?skip_user=true&id={0}", user.Id);
            var favoritesUrl = String.Format("http://api.twitter.com/1/favorites.json?id={0}", user.Id);
            var followersUrl = String.Format("http://api.twitter.com/1/statuses/followers.json?id={0}", user.Id);
            var friendsUrl   = String.Format("http://api.twitter.com/1/statuses/friends.json?id={0}", user.Id);

#if false
            followButton = new StyledStringElement(FollowText, ToggleFollow)
            {
                Alignment = UITextAlignment.Center,
                TextColor = UIColor.FromRGB(0x32, 0x4f, 0x85)
            };
#endif
            var sfollow = new Section()
            {
                new ActivityElement()
            };

            Root = new RootElement(user.Screenname)
            {
                main,
                new Section()
                {
                    TimelineRootElement.MakeTimeline(user.Screenname, Locale.Format("{0:#,#} tweets", user.StatusesCount), tweetsUrl, user),
                    TimelineRootElement.MakeFavorites(user.Screenname, Locale.Format("{0:#,#} favorites", user.FavCount), favoritesUrl, null),
                    new UserRootElement(user, Locale.Format("{0:#,#} friends", user.FriendsCount), friendsUrl),
                    new UserRootElement(user, Locale.Format("{0:#,#} followers", user.FollowersCount), followersUrl),
                },
                sfollow,
            };
            var created = user.CreatedAt;
            if (created.HasValue)
            {
                Root.Add(new Section(null, Locale.Format("Joined on {0}", created.Value.ToLongDateString())));
            }

            string url = String.Format("http://api.twitter.com/1/friendships/show.json?target_id={0}&source_screen_name={1}",
                                       user.Id,
                                       OAuth.PercentEncode(TwitterAccount.CurrentAccount.Username));
            TwitterAccount.CurrentAccount.Download(url, res => {
                TableView.BeginUpdates();
                Root.Remove(sfollow);
                if (res != null)
                {
                    ParseFollow(res);
                }

                TableView.EndUpdates();
            });
        }