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); }
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); }
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); } }