예제 #1
0
        public RepositoryListModel GetRepositories(String username, Boolean showAll, PageParameter param)
        {
            var model = new RepositoryListModel();

            // 默认按照最后更新时间降序
            if (param.Sort.IsNullOrEmpty())
            {
                param.Sort = "LastCommit";
                param.Desc = true;
            }

            if (String.IsNullOrEmpty(username))
            {
                model.Collaborations = new RepositoryModel[0];
                model.Repositories   = ToRepositoryArray(Repository.GetPublics(param));
            }
            else
            {
                var user = User.FindByName(username);
                var q1   = user.Repositories.Select(e => e.Repository);
                var q2   = user.Teams.SelectMany(s => s.Team.Repositories.Select(e => e.Repository));
                var q3   = q1.Union(q2);
                q3 = q3.OrderByDescending(e => e.LastCommit);

                model.Collaborations = ToRepositoryArray(q3);
                var list = Repository.Search(!showAll, q3.Select(e => e.ID), param);
                model.Repositories = ToRepositoryArray(list);
            }

            return(model);
        }
예제 #2
0
		public RepositoryList()
		{
			_listModel = new RepositoryListModel();
			
			this.Build();
			
			Gtk.TreeViewColumn nameCol = new Gtk.TreeViewColumn();
			Gtk.CellRenderer rend = new Gtk.CellRendererText();
			nameCol.Title = "Name";
			nameCol.Sizing = Gtk.TreeViewColumnSizing.Fixed;
			nameCol.PackStart(rend,true);
			nameCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderRepositoryName));
								
			RepositoryTreeView.AppendColumn(nameCol);
			
			RepositoryTreeView.Model = null;
			_filterText = string.Empty;
			
			Gtk.TreeSelection selection = RepositoryTreeView.Selection;
			selection.Changed += new EventHandler(OnSelection_Changed);
		}
예제 #3
0
        public RepositoryListModel GetRepositories(string username, bool showAll = false)
        {
            using (var ctx = new GitCandyContext())
            {
                var model = new RepositoryListModel();

                if (string.IsNullOrEmpty(username))
                {
                    model.Collaborations = new RepositoryModel[0];
                    model.Repositories   = ToRepositoryArray(ctx.Repositories.Where(s => !s.IsPrivate).OrderBy(s => s.Name));
                }
                else
                {
                    var q1 = ctx.UserRepositoryRoles.Where(s => s.User.Name == username && s.AllowRead && s.AllowWrite).Select(s => s.Repository);
                    var q2 = ctx.UserTeamRoles.Where(s => s.User.Name == username).SelectMany(s => s.Team.TeamRepositoryRoles.Where(t => t.AllowRead && t.AllowWrite).Select(t => t.Repository));
                    var q3 = q1.Union(q2);

                    model.Collaborations = ToRepositoryArray(q3.OrderBy(s => s.Name));
                    model.Repositories   = ToRepositoryArray(ctx.Repositories.Where(s => showAll || (!s.IsPrivate)).Except(q3).OrderBy(s => s.Name));
                }

                return(model);
            }
        }