protected override Element CreateElement(object obj)
 {
     var s = (FollowerModel)obj;
     StyledElement sse = new UserElement(s.Username, s.FirstName, s.LastName, s.Avatar);
     sse.Tapped += () => NavigationController.PushViewController(new ProfileController(s.Username), true);
     return sse;
 }
 protected override Element CreateElement(object obj)
 {
     var user = ((PrivilegeModel)obj).User;
     StyledElement sse = new UserElement(user.Username, user.FirstName, user.LastName, user.Avatar);
     sse.Tapped += () => OnSelectedItem(user);
     return sse;
 }
예제 #3
0
        public bool ValidateUser(string name, string password)
        {
            UserElement user = this.UserSettings.Users[name];

            if (user == null)
            {
                return(false);
            }

            return(HashHelper.CompareHash(password, user.Password));
        }
예제 #4
0
        public bool ResetPassword(string name, string newPassword)
        {
            UserElement user = this.UserSettings.Users[name];

            if (user == null)
            {
                return(false);
            }

            user.Password = HashHelper.CreateHash(newPassword);
            return(true);
        }
예제 #5
0
 internal void SetUser(UserElement userElement, String shortCode)
 {
     CurrentUser     = new Person(userElement);
     ActiveShortCode = shortCode;
     if (CurrentUserPresence == null)
     {
         CurrentUserPresence = new Presence();
     }
     CurrentUserPresence.SetIdleState(_appContext.IdleState);
     UpdatePresence(true);
     OnCurrentUserChanged(EventArgs.Empty);
 }
예제 #6
0
        /// <summary>
        /// 只能加一次
        /// </summary>
        /// <param name="doc"></param>
        public void AddElement(Document doc)
        {
            var element = new UserElement();

            element.SetName(Text);
            element.SetSchemaName("TextSceneNode");
            Id = doc.AddElement(element);

            element.AddParameter("PositionX", ParameterCreator.Create(Position.x));
            element.AddParameter("PositionY", ParameterCreator.Create(Position.y));
            element.AddParameter("PositionZ", ParameterCreator.Create(Position.z));
        }
예제 #7
0
        public bool ChangePassword(string name, string oldPassword, string newPassword)
        {
            if (!this.ValidateUser(name, oldPassword))
            {
                return(false);
            }

            UserElement user = this.UserSettings.Users[name];

            user.Password = HashHelper.CreateHash(newPassword);

            return(true);
        }
예제 #8
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            var vm = (BaseUserCollectionViewModel)ViewModel;

            BindCollection(vm.Users, x =>
            {
                var e     = new UserElement(x.Username, string.Empty, string.Empty, x.Avatar);
                e.Tapped += () => vm.GoToUserCommand.Execute(x);
                return(e);
            });
        }
예제 #9
0
        /// <summary>
        /// Get instance of 'UserElement' class used in Inbound service
        /// </summary>
        /// <returns></returns>
        public static UserElement GetInboundUser()
        {
            var userObj = new UserElement();
            string now = DateTime.Now.ToString("O");

            userObj.login = RightNowConfigService.GetConfigValue(RightNowConfigKeyNames.UserName);
            userObj.company = RightNowConfigService.GetConfigValue(RightNowConfigKeyNames.CompanyName);
            var password = RightNowConfigService.GetConfigValue(RightNowConfigKeyNames.Password);
            userObj.now = now;
            userObj.auth_string = ToaMD5HashUtil.AuthString(now, password);

            return userObj;
        }
예제 #10
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            SearchTextChanging.Subscribe(x => ViewModel.SearchKeyword = x);

            this.BindList(ViewModel.Users, x =>
            {
                var e     = new UserElement(x.Login, string.Empty, string.Empty, x.AvatarUrl);
                e.Tapped += () => ViewModel.GoToUserCommand.Execute(x);
                return(e);
            });
        }
예제 #11
0
        public TeamMembersViewController(string name, ulong id)
        {
            Title             = name;
            SearchPlaceholder = "Search Members".t();
            NoItemsText       = "No Members".t();
            ViewModel         = new TeamMembersViewModel(id);

            BindCollection(ViewModel.Users, s => {
                StyledStringElement sse = new UserElement(s.Login, string.Empty, string.Empty, s.AvatarUrl);
                sse.Tapped += () => NavigationController.PushViewController(new ProfileViewController(s.Login), true);
                return(sse);
            });
        }
        public UserFollowingsViewController(string user)
        {
            Title             = "Following".t();
            SearchPlaceholder = "Search Following".t();
            NoItemsText       = "Not Following Anyone".t();
            ViewModel         = new UserFollowingsViewModel(user);

            this.BindCollection(ViewModel.Users, s => {
                StyledStringElement sse = new UserElement(s.Login, string.Empty, string.Empty, s.AvatarUrl);
                sse.Tapped += () => NavigationController.PushViewController(new ProfileViewController(s.Login), true);
                return(sse);
            });
        }
예제 #13
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            var vm     = (BaseUserCollectionViewModel)ViewModel;
            var weakVm = new WeakReference <BaseUserCollectionViewModel>(vm);

            BindCollection(vm.Users, x =>
            {
                var e = new UserElement(x.Username, string.Empty, string.Empty, new Avatar(x.Avatar));
                e.Clicked.Subscribe(_ => weakVm.Get()?.GoToUserCommand.Execute(x));
                return(e);
            });
        }
예제 #14
0
        /// <summary>
        /// Get instance of 'UserElement' class used in Inbound service
        /// </summary>
        /// <returns></returns>
        public static UserElement GetInboundUser()
        {
            var    userObj = new UserElement();
            string now     = DateTime.Now.ToString("O");

            userObj.login   = RightNowConfigService.GetConfigValue(RightNowConfigKeyNames.UserName);
            userObj.company = RightNowConfigService.GetConfigValue(RightNowConfigKeyNames.CompanyName);
            var password = RightNowConfigService.GetConfigValue(RightNowConfigKeyNames.Password);

            userObj.now         = now;
            userObj.auth_string = ToaMD5HashUtil.AuthString(now, password);

            return(userObj);
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            var vm     = (OrganizationsViewModel)ViewModel;
            var weakVm = new WeakReference <OrganizationsViewModel>(vm);

            BindCollection(vm.Organizations, x =>
            {
                var avatar = new GitHubAvatar(x.AvatarUrl);
                var e      = new UserElement(x.Login, string.Empty, string.Empty, avatar);
                e.Clicked.Subscribe(_ => weakVm.Get()?.GoToOrganizationCommand.Execute(x));
                return(e);
            });
        }
예제 #16
0
        public override void ViewDidLoad()
        {
            Title       = "Organizations".t();
            NoItemsText = "No Organizations".t();

            base.ViewDidLoad();

            var vm = (OrganizationsViewModel)ViewModel;

            BindCollection(vm.Organizations, x =>
            {
                var e     = new UserElement(x.Login, string.Empty, string.Empty, x.AvatarUrl);
                e.Tapped += () => vm.GoToOrganizationCommand.Execute(x);
                return(e);
            });
        }
예제 #17
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            var vm = (IssueAssignedToViewModel)ViewModel;

            BindCollection(vm.Users, x =>
            {
                var avatar = new GitHubAvatar(x.AvatarUrl);
                var el     = new UserElement(x.Login, string.Empty, string.Empty, avatar);
                el.Clicked.Subscribe(_ => {
                    if (vm.SelectedUser != null && string.Equals(vm.SelectedUser.Login, x.Login))
                    {
                        vm.SelectedUser = null;
                    }
                    else
                    {
                        vm.SelectedUser = x;
                    }
                });

                if (vm.SelectedUser != null && string.Equals(vm.SelectedUser.Login, x.Login, StringComparison.OrdinalIgnoreCase))
                {
                    el.Accessory = UITableViewCellAccessory.Checkmark;
                }
                else
                {
                    el.Accessory = UITableViewCellAccessory.None;
                }
                return(el);
            });

            vm.Bind(x => x.SelectedUser).Subscribe(x =>
            {
                if (Root.Count == 0)
                {
                    return;
                }
                foreach (var m in Root[0].Elements.Cast <UserElement>())
                {
                    m.Accessory = (x != null && string.Equals(vm.SelectedUser.Login, m.Caption, StringComparison.OrdinalIgnoreCase)) ?
                                  UITableViewCellAccessory.Checkmark : UITableViewCellAccessory.None;
                }
            });

            vm.Bind(x => x.IsSaving).SubscribeStatus("Saving...");
        }
예제 #18
0
        public override void ViewDidLoad()
        {
            Title       = "Assignees";
            NoItemsText = "No Assignees";

            base.ViewDidLoad();

            var vm = (IssueAssignedToViewModel)ViewModel;

            BindCollection(vm.Users, x =>
            {
                var el     = new UserElement(x.Username, string.Empty, string.Empty, x.Avatar);
                el.Tapped += () => {
                    if (vm.SelectedUser != null && string.Equals(vm.SelectedUser.Username, x.Username))
                    {
                        vm.SelectedUser = null;
                    }
                    else
                    {
                        vm.SelectedUser = x;
                    }
                };
                if (vm.SelectedUser != null && string.Equals(vm.SelectedUser.Username, x.Username, StringComparison.OrdinalIgnoreCase))
                {
                    el.Accessory = UITableViewCellAccessory.Checkmark;
                }
                else
                {
                    el.Accessory = UITableViewCellAccessory.None;
                }
                return(el);
            });

            vm.Bind(x => x.SelectedUser, x =>
            {
                if (Root.Count == 0)
                {
                    return;
                }
                foreach (var m in Root[0].Elements.Cast <UserElement>())
                {
                    m.Accessory = (x != null && string.Equals(vm.SelectedUser.Username, x.Username, StringComparison.OrdinalIgnoreCase)) ?
                                  UITableViewCellAccessory.Checkmark : UITableViewCellAccessory.None;
                }
                Root.Reload(Root[0], UITableViewRowAnimation.None);
            });
        }
예제 #19
0
        public override void ViewDidLoad()
        {
            Title = "Assignees";
            //NoItemsText = "No Assignees";

            base.ViewDidLoad();

            this.BindList(ViewModel.Users, x =>
            {
                var el     = new UserElement(x.Login, string.Empty, string.Empty, x.AvatarUrl);
                el.Tapped += () => {
                    if (ViewModel.SelectedUser != null && string.Equals(ViewModel.SelectedUser.Login, x.Login))
                    {
                        ViewModel.SelectedUser = null;
                    }
                    else
                    {
                        ViewModel.SelectedUser = x;
                    }
                };
                if (ViewModel.SelectedUser != null && string.Equals(ViewModel.SelectedUser.Login, x.Login, StringComparison.OrdinalIgnoreCase))
                {
                    el.Accessory = UITableViewCellAccessory.Checkmark;
                }
                else
                {
                    el.Accessory = UITableViewCellAccessory.None;
                }
                return(el);
            });

            ViewModel.WhenAnyValue(x => x.SelectedUser).Where(x => x != null).Subscribe(x =>
            {
                if (Root.Count == 0)
                {
                    return;
                }
                foreach (var m in Root[0].Cast <UserElement>())
                {
                    m.Accessory = (x != null && string.Equals(ViewModel.SelectedUser.Login, m.Caption, StringComparison.OrdinalIgnoreCase)) ?
                                  UITableViewCellAccessory.Checkmark : UITableViewCellAccessory.None;
                }
                Root.Reload(Root[0], UITableViewRowAnimation.None);
            });
        }
예제 #20
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (Ret != 0)
            {
                hash ^= Ret.GetHashCode();
            }
            if (userElement_ != null)
            {
                hash ^= UserElement.GetHashCode();
            }
            if (userMoney_ != null)
            {
                hash ^= UserMoney.GetHashCode();
            }
            return(hash);
        }
예제 #21
0
        public DotNetCfgUser(AccessControlList acl, UserElement userElement)
        {
            _userElement = userElement;
            _memberOf    = new Dictionary <string, Group>();

            foreach (MembershipElement memberOf in userElement.Memberships)
            {
                if (_memberOf.ContainsKey(memberOf.Gid))
                {
                    throw new ConfigurationErrorsException(string.Format("Group membership '{0}' is specified more than once for user '{1}'", memberOf.Gid, Uid));
                }


                Group myGroup = acl.FindGroupById(memberOf.Gid);

                if (myGroup == null)
                {
                    throw new ConfigurationErrorsException(
                              string.Format("User '{0}'  defines membership to group '{1}' but group does not exist",
                                            Uid, memberOf.Gid));
                }

                _memberOf.Add(myGroup.Gid, myGroup);
            }


            _authentications = new Dictionary <string, Authentication>();

            foreach (AuthenticationType authenticationType in userElement.AuthenticationTypes)
            {
                Authentication auth = DotNetCfgAuthenticationFactory.CreateAuthentication(authenticationType);

                if (auth != null)
                {
                    _authentications.Add(auth.AuthenticationType, auth);
                }
                else
                {
                    throw new ConfigurationErrorsException(
                              string.Format("User '{0}' want to use authentication type '{1}', but this type is not known!",
                                            Uid, authenticationType.Type));
                }
            }
        }
예제 #22
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            var vm = (IssueAssignedToViewModel)ViewModel;

            BindCollection(vm.Users, x =>
            {
                var avatar = new Avatar(x.Avatar);
                var el     = new UserElement(x.Username, string.Empty, string.Empty, avatar);
                el.Clicked.Subscribe(_ => {
                    if (vm.SelectedUser != null && string.Equals(vm.SelectedUser.Username, x.Username))
                    {
                        vm.SelectedUser = null;
                    }
                    else
                    {
                        vm.SelectedUser = x;
                    }
                });
                if (vm.SelectedUser != null && string.Equals(vm.SelectedUser.Username, x.Username, StringComparison.OrdinalIgnoreCase))
                {
                    el.Accessory = UITableViewCellAccessory.Checkmark;
                }
                else
                {
                    el.Accessory = UITableViewCellAccessory.None;
                }
                return(el);
            });

            vm.Bind(x => x.SelectedUser).Subscribe(x =>
            {
                var elements = Root.FirstOrDefault()?.Elements ?? Enumerable.Empty <Element>();
                foreach (var m in elements.Cast <UserElement>())
                {
                    m.Accessory = (x != null && string.Equals(vm.SelectedUser.Username, x.Username, StringComparison.OrdinalIgnoreCase)) ?
                                  UITableViewCellAccessory.Checkmark : UITableViewCellAccessory.None;
                }
            });
        }
예제 #23
0
        /// <summary>
        /// 换个文档显示
        /// </summary>
        /// <param name="doc"></param>
        public void ResetDocument(Document doc)
        {
            mDocument = doc;
            mRootSceneNode.SetDocument(mDocument);
            mDbView = DbView.Cast(mDocument.FindElement(mDocument.GetActiveDbViewId()));

            var table   = mDocument.FindTable("UserElement");
            var userIds = table.GetIds();
            var scene   = mContext.RenderView.GetScene();

            foreach (var id in userIds)
            {
                var element = mDocument.FindElement(id);
                if (MyTextElement.IsKindOf(element))
                {
                    var text = new MyTextElement();
                    text.Load(UserElement.Cast(element));
                    text.Show(scene);
                }
            }

            mContext.RequestUpdate();
            mRenderCtrl.ZoomAll(0.8f);
        }
예제 #24
0
        public void Render()
        {
            if (ViewModel.Commits == null || ViewModel.Commit == null)
            {
                return;
            }

            var titleMsg  = (ViewModel.Commit.Message ?? string.Empty).Split(new [] { '\n' }, 2).FirstOrDefault();
            var avatarUrl = ViewModel.Commit.Author?.User?.Links?.Avatar?.Href;
            var node      = ViewModel.Node.Substring(0, ViewModel.Node.Length > 10 ? 10 : ViewModel.Node.Length);

            Title              = node;
            HeaderView.Text    = titleMsg ?? node;
            HeaderView.SubText = "Commited " + (ViewModel.Commit.Date).Humanize();
            HeaderView.SetImage(new Avatar(avatarUrl).ToUrl(128), Images.Avatar);
            RefreshHeaderView();

            var split = new SplitButtonElement();

            split.AddButton("Comments", ViewModel.Comments.Items.Count.ToString());
            split.AddButton("Participants", ViewModel.Commit.Participants.Count.ToString());
            split.AddButton("Approvals", ViewModel.Commit.Participants.Count(x => x.Approved).ToString());

            var commitModel = ViewModel.Commits;
            var root        = new RootElement(Title)
            {
                UnevenRows = Root.UnevenRows
            };

            root.Add(new Section {
                split
            });

            var detailSection = new Section();

            root.Add(detailSection);

            var user = ViewModel.Commit.Author?.User?.DisplayName ?? ViewModel.Commit.Author.Raw ?? "Unknown";

            detailSection.Add(new MultilinedElement(user, ViewModel.Commit.Message)
            {
                CaptionColor    = Theme.CurrentTheme.MainTextColor,
                ValueColor      = Theme.CurrentTheme.MainTextColor,
                BackgroundColor = UIColor.White
            });

            if (ViewModel.ShowRepository)
            {
                var repo = new StyledStringElement(ViewModel.Repository)
                {
                    Accessory = UIKit.UITableViewCellAccessory.DisclosureIndicator,
                    Lines     = 1,
                    Font      = StyledStringElement.DefaultDetailFont,
                    TextColor = StyledStringElement.DefaultDetailColor,
                    Image     = AtlassianIcon.Devtoolsrepository.ToImage()
                };
                repo.Tapped += () => ViewModel.GoToRepositoryCommand.Execute(null);
                detailSection.Add(repo);
            }

            if (_viewSegment.SelectedSegment == 0)
            {
                var paths = ViewModel.Commits.GroupBy(y =>
                {
                    var filename = "/" + y.File;
                    return(filename.Substring(0, filename.LastIndexOf("/", System.StringComparison.Ordinal) + 1));
                }).OrderBy(y => y.Key);

                foreach (var p in paths)
                {
                    var fileSection = new Section(p.Key);
                    foreach (var x in p)
                    {
                        var y    = x;
                        var file = x.File.Substring(x.File.LastIndexOf('/') + 1);
                        var sse  = new ChangesetElement(file, x.Type, x.Diffstat.Added, x.Diffstat.Removed);
                        sse.Tapped += () => ViewModel.GoToFileCommand.Execute(y);
                        fileSection.Add(sse);
                    }
                    root.Add(fileSection);
                }
            }
            else if (_viewSegment.SelectedSegment == 1)
            {
                var commentSection = new Section();
                foreach (var comment in ViewModel.Comments)
                {
                    var name   = comment.User.DisplayName ?? comment.User.Username;
                    var imgUri = new Avatar(comment.User.Links?.Avatar?.Href);
                    commentSection.Add(new NameTimeStringElement(name, comment.Content.Raw, comment.CreatedOn, imgUri.ToUrl(), Images.Avatar));
                }

                if (commentSection.Elements.Count > 0)
                {
                    root.Add(commentSection);
                }

                var addComment = new StyledStringElement("Add Comment")
                {
                    Image = AtlassianIcon.Addcomment.ToImage()
                };
                addComment.Tapped += AddCommentTapped;
                root.Add(new Section {
                    addComment
                });
            }
            else if (_viewSegment.SelectedSegment == 2)
            {
                var likeSection = new Section();
                likeSection.AddAll(ViewModel.Commit.Participants.Where(x => x.Approved).Select(l => {
                    var el     = new UserElement(l.User.DisplayName, string.Empty, string.Empty, l.User.Links.Avatar.Href);
                    el.Tapped += () => ViewModel.GoToUserCommand.Execute(l.User.Username);
                    return(el);
                }));

                if (likeSection.Elements.Count > 0)
                {
                    root.Add(likeSection);
                }

                StyledStringElement approveButton;
                if (ViewModel.Commit.Participants.Any(x => x.User.Username.Equals(ViewModel.GetApplication().Account.Username) && x.Approved))
                {
                    approveButton = new StyledStringElement("Unapprove")
                    {
                        Image = AtlassianIcon.Approve.ToImage()
                    };
                    approveButton.Tapped += () => this.DoWorkAsync("Unapproving...", ViewModel.Unapprove);
                }
                else
                {
                    approveButton = new StyledStringElement("Approve")
                    {
                        Image = AtlassianIcon.Approve.ToImage()
                    };
                    approveButton.Tapped += () => this.DoWorkAsync("Approving...", ViewModel.Approve);
                }
                root.Add(new Section {
                    approveButton
                });
            }

            Root = root;
        }
예제 #25
0
 public Person(UserElement userElement)
 {
     InitPerson(userElement);
 }
        /// <summary>
        /// Method called when a process token executes the step.
        /// </summary>
        public ExitType Execute(IStepExecutionContext context)
        {
            bool intersects = false;

            // Example of how to get the value of a step property.
            IPropertyReader myExpressionProp            = _properties.GetProperty("MyExpression") as IPropertyReader;
            string          myExpressionPropStringValue = myExpressionProp.GetStringValue(context);
            double          myExpressionPropDoubleValue = myExpressionProp.GetDoubleValue(context);

            // Example of how to get an element reference specified in an element property of the step.
            IElementProperty myElementProp = (IElementProperty)_properties.GetProperty("UserElementName");
            UserElement      myElement     = (UserElement)myElementProp.GetElement(context);

            // Example of how to display a trace line for the step.
            context.ExecutionInformation.TraceInformation(String.Format("The value of expression '{0}' is '{1}'.", myExpressionPropStringValue, myExpressionPropDoubleValue));

            origin[0] = _properties.GetProperty("Ox").GetDoubleValue(context);
            origin[1] = _properties.GetProperty("Oy").GetDoubleValue(context);
            origin[2] = _properties.GetProperty("Oz").GetDoubleValue(context);

            ray[0] = _properties.GetProperty("Rx").GetDoubleValue(context);
            ray[1] = _properties.GetProperty("Ry").GetDoubleValue(context);
            ray[2] = _properties.GetProperty("Rz").GetDoubleValue(context);

            boxMin[0] = _properties.GetProperty("B0x").GetDoubleValue(context);
            boxMin[1] = _properties.GetProperty("B0y").GetDoubleValue(context);
            boxMin[2] = _properties.GetProperty("B0z").GetDoubleValue(context);

            boxMax[0] = _properties.GetProperty("B1x").GetDoubleValue(context);
            boxMax[1] = _properties.GetProperty("B1y").GetDoubleValue(context);
            boxMax[2] = _properties.GetProperty("B1z").GetDoubleValue(context);

            double tmin = (boxMin[0] - origin[0]) / ray[0];
            double tmax = (boxMax[0] - origin[0]) / ray[0];

            if (tmin > tmax)
            {
                Swap <double>(ref tmin, ref tmax);
            }

            double tymin = (boxMin[1] - origin[1]) / ray[1];
            double tymax = (boxMax[1] - origin[1]) / ray[1];

            if (tymin > tymax)
            {
                Swap <double>(ref tymin, ref tymax);
            }

            if ((tmin > tymax) || (tymin > tmax))
            {
                return(ExitType.AlternateExit);
            }

            if (tymin > tmin)
            {
                tmin = tymin;
            }
            if (tymax < tmax)
            {
                tmax = tymax;
            }

            double tzmin = (boxMin[2] - origin[2]) / ray[2];
            double tzmax = (boxMax[2] - origin[2]) / ray[2];

            if (tzmin > tzmax)
            {
                Swap <double>(ref tzmin, ref tzmax);
            }

            if ((tmin > tzmax) || (tzmin > tmax))
            {
                return(ExitType.AlternateExit);
            }

            if (tzmin > tmin)
            {
                tmin = tzmin;
            }

            if (tzmax < tmax)
            {
                tmax = tzmax;
            }



            if (intersects)
            {
                return(ExitType.FirstExit);
            }
            else
            {
                return(ExitType.AlternateExit);
            }
        }
예제 #27
0
 public virtual void SetUp()
 {
     _user      = null;
     _startTime = DateTime.Now;
 }
예제 #28
0
 public void Add(UserElement element)
 {
     BaseAdd(element);
 }
예제 #29
0
        public void Render()
        {
            if (ViewModel.Commits == null || ViewModel.Changeset == null)
            {
                return;
            }

            var commitModel = ViewModel.Commits;
            var root        = new RootElement(Title)
            {
                UnevenRows = Root.UnevenRows
            };

            _header.Subtitle = "Commited ".t() + (ViewModel.Changeset.Utctimestamp).ToDaysAgo();
            var headerSection = new Section(_header);

            root.Add(headerSection);

            var detailSection = new Section();

            root.Add(detailSection);

            var user = "******";

            if (ViewModel.Changeset.Author != null)
            {
                user = ViewModel.Changeset.Author;
            }

            detailSection.Add(new MultilinedElement(user, ViewModel.Changeset.Message)
            {
                CaptionColor    = Theme.CurrentTheme.MainTextColor,
                ValueColor      = Theme.CurrentTheme.MainTextColor,
                BackgroundColor = UIColor.White
            });

            if (ViewModel.ShowRepository)
            {
                var repo = new StyledStringElement(ViewModel.Repository)
                {
                    Accessory = MonoTouch.UIKit.UITableViewCellAccessory.DisclosureIndicator,
                    Lines     = 1,
                    Font      = StyledStringElement.DefaultDetailFont,
                    TextColor = StyledStringElement.DefaultDetailColor,
                    Image     = Images.Repo
                };
                repo.Tapped += () => ViewModel.GoToRepositoryCommand.Execute(null);
                detailSection.Add(repo);
            }

            if (_viewSegment.SelectedSegment == 0)
            {
                var paths = ViewModel.Commits.GroupBy(y =>
                {
                    var filename = "/" + y.File;
                    return(filename.Substring(0, filename.LastIndexOf("/", System.StringComparison.Ordinal) + 1));
                }).OrderBy(y => y.Key);

                foreach (var p in paths)
                {
                    var fileSection = new Section(p.Key);
                    foreach (var x in p)
                    {
                        var y    = x;
                        var file = x.File.Substring(x.File.LastIndexOf('/') + 1);
                        var sse  = new ChangesetElement(file, x.Type, x.Diffstat.Added, x.Diffstat.Removed);
                        sse.Tapped += () => ViewModel.GoToFileCommand.Execute(y);
                        fileSection.Add(sse);
                    }
                    root.Add(fileSection);
                }
            }
            else if (_viewSegment.SelectedSegment == 1)
            {
                var commentSection = new Section();
                foreach (var comment in ViewModel.Comments.Where(x => !x.Deleted && string.IsNullOrEmpty(x.Filename)))
                {
                    commentSection.Add(new CommentElement
                    {
                        Name            = comment.DisplayName,
                        Time            = comment.UtcCreatedOn.ToDaysAgo(),
                        String          = comment.Content,
                        Image           = Images.Anonymous,
                        ImageUri        = new Uri(comment.UserAvatarUrl),
                        BackgroundColor = UIColor.White
                    });
                }

                if (commentSection.Elements.Count > 0)
                {
                    root.Add(commentSection);
                }

                var addComment = new StyledStringElement("Add Comment".t())
                {
                    Image = Images.Pencil
                };
                addComment.Tapped += AddCommentTapped;
                root.Add(new Section {
                    addComment
                });
            }
            else if (_viewSegment.SelectedSegment == 2)
            {
                var likeSection = new Section();
                likeSection.AddAll(ViewModel.Participants.Where(x => x.Approved).Select(l => {
                    var el     = new UserElement(l.Username, string.Empty, string.Empty, l.Avatar);
                    el.Tapped += () => ViewModel.GoToUserCommand.Execute(l.Username);
                    return(el);
                }));

                if (likeSection.Elements.Count > 0)
                {
                    root.Add(likeSection);
                }

                StyledStringElement approveButton;
                if (ViewModel.Participants.Any(x => x.Username.Equals(ViewModel.GetApplication().Account.Username) && x.Approved))
                {
                    approveButton = new StyledStringElement("Unapprove".t())
                    {
                        Image = Images.Cancel
                    };
                    approveButton.Tapped += () => this.DoWorkAsync("Unapproving...", ViewModel.Unapprove);
                }
                else
                {
                    approveButton = new StyledStringElement("Approve".t())
                    {
                        Image = Images.Accept
                    };
                    approveButton.Tapped += () => this.DoWorkAsync("Approving...", ViewModel.Approve);
                }
                root.Add(new Section {
                    approveButton
                });
            }

            Root = root;
        }
예제 #30
0
 public int IndexOf(UserElement element)
 {
     return(BaseIndexOf(element));
 }
 void InitialiseUsersSelector()
 {
     UserElement.InitialiseMutliSelect(FilterPreferences.ActiveUsers);
 }
예제 #32
0
 internal Attendance(UserElement element)
     : this(new Person(element))
 {
 }