private DBCriteria <DBMovieInfo> createCriteria(DBNode <DBMovieInfo> node, DBCriteria <DBMovieInfo> .OperatorEnum opEnum, object value) { DBCriteria <DBMovieInfo> criteria = new DBCriteria <DBMovieInfo>(); criteria.Field = node.BasicFilteringField; criteria.Relation = node.BasicFilteringRelation; criteria.Operator = opEnum; criteria.Value = value; return(criteria); }
public void AddCriteria(IGenericFilter criteria) { DBCriteria <T> newCriteria = (DBCriteria <T>)criteria; CriteriaPanel <T> newPanel = new CriteriaPanel <T>(); listPanel.Controls.Add(newPanel); newPanel.DBManager = DBManager; newPanel.Selected += ItemSelected; newPanel.Criteria = newCriteria; itemLookup[newCriteria] = newPanel; }
public static void VerifyFilterMenu() { DBMenu <DBTrackInfo> menu = mvCentralCore.Settings.FilterMenu; if (menu.RootNodes.Count == 0) { int position = 1; DBNode <DBTrackInfo> unwatchedNode = new DBNode <DBTrackInfo>(); unwatchedNode.Name = "${UnwatchedmvCentral}"; unwatchedNode.DynamicNode = false; unwatchedNode.Filter = new DBFilter <DBTrackInfo>(); DBCriteria <DBTrackInfo> criteria = new DBCriteria <DBTrackInfo>(); criteria.Field = DBField.GetFieldByDBName(typeof(DBUserMusicVideoSettings), "watched"); criteria.Relation = DBRelation.GetRelation(typeof(DBTrackInfo), typeof(DBUserMusicVideoSettings), ""); criteria.Operator = DBCriteria <DBTrackInfo> .OperatorEnum.EQUAL; criteria.Value = "0"; unwatchedNode.Filter.Criteria.Add(criteria); unwatchedNode.SortPosition = position++; unwatchedNode.DBManager = mvCentralCore.DatabaseManager; menu.RootNodes.Add(unwatchedNode); DBNode <DBTrackInfo> genreNode = new DBNode <DBTrackInfo>(); genreNode.DynamicNode = true; genreNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBTrackInfo), "genres"); genreNode.Name = "${Genre}"; genreNode.DBManager = mvCentralCore.DatabaseManager; genreNode.SortPosition = position++; menu.RootNodes.Add(genreNode); DBNode <DBTrackInfo> dateNode = new DBNode <DBTrackInfo>(); dateNode.DynamicNode = true; dateNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBTrackInfo), "date_added"); dateNode.Name = "${DateAdded}"; dateNode.DBManager = mvCentralCore.DatabaseManager; dateNode.SortPosition = position++; menu.RootNodes.Add(dateNode); menu.Commit(); } foreach (DBNode <DBTrackInfo> currNode in menu.RootNodes) { currNode.UpdateDynamicNode(); currNode.Commit(); } }
public static void VerifyFilterMenu() { DBMenu<DBTrackInfo> menu = mvCentralCore.Settings.FilterMenu; if (menu.RootNodes.Count == 0) { int position = 1; DBNode<DBTrackInfo> unwatchedNode = new DBNode<DBTrackInfo>(); unwatchedNode.Name = "${UnwatchedmvCentral}"; unwatchedNode.DynamicNode = false; unwatchedNode.Filter = new DBFilter<DBTrackInfo>(); DBCriteria<DBTrackInfo> criteria = new DBCriteria<DBTrackInfo>(); criteria.Field = DBField.GetFieldByDBName(typeof(DBUserMusicVideoSettings), "watched"); criteria.Relation = DBRelation.GetRelation(typeof(DBTrackInfo), typeof(DBUserMusicVideoSettings), ""); criteria.Operator = DBCriteria<DBTrackInfo>.OperatorEnum.EQUAL; criteria.Value = "0"; unwatchedNode.Filter.Criteria.Add(criteria); unwatchedNode.SortPosition = position++; unwatchedNode.DBManager = mvCentralCore.DatabaseManager; menu.RootNodes.Add(unwatchedNode); DBNode<DBTrackInfo> genreNode = new DBNode<DBTrackInfo>(); genreNode.DynamicNode = true; genreNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBTrackInfo), "genres"); genreNode.Name = "${Genre}"; genreNode.DBManager = mvCentralCore.DatabaseManager; genreNode.SortPosition = position++; menu.RootNodes.Add(genreNode); DBNode<DBTrackInfo> dateNode = new DBNode<DBTrackInfo>(); dateNode.DynamicNode = true; dateNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBTrackInfo), "date_added"); dateNode.Name = "${DateAdded}"; dateNode.DBManager = mvCentralCore.DatabaseManager; dateNode.SortPosition = position++; menu.RootNodes.Add(dateNode); menu.Commit(); } foreach (DBNode<DBTrackInfo> currNode in menu.RootNodes) { currNode.UpdateDynamicNode(); currNode.Commit(); } }
public static void VerifyCategoryMenu() { DBMenu<DBTrackInfo> menu = mvCentralCore.Settings.CategoriesMenu; if (menu.RootNodes.Count == 0) { int position = 1; DBNode<DBTrackInfo> allNode = new DBNode<DBTrackInfo>(); allNode.Name = "${AllmvCentral}"; allNode.DynamicNode = false; allNode.Filter = new DBFilter<DBTrackInfo>(); allNode.SortPosition = position++; allNode.DBManager = mvCentralCore.DatabaseManager; menu.RootNodes.Add(allNode); DBNode<DBTrackInfo> unwatchedNode = new DBNode<DBTrackInfo>(); unwatchedNode.Name = "${UnwatchedMusicVideo}"; unwatchedNode.DynamicNode = false; unwatchedNode.Filter = new DBFilter<DBTrackInfo>(); DBCriteria<DBTrackInfo> criteria = new DBCriteria<DBTrackInfo>(); criteria.Field = DBField.GetFieldByDBName(typeof(DBUserMusicVideoSettings), "watched"); criteria.Relation = DBRelation.GetRelation(typeof(DBTrackInfo), typeof(DBUserMusicVideoSettings), ""); criteria.Operator = DBCriteria<DBTrackInfo>.OperatorEnum.EQUAL; criteria.Value = "0"; unwatchedNode.Filter.Criteria.Add(criteria); unwatchedNode.SortPosition = position++; unwatchedNode.DBManager = mvCentralCore.DatabaseManager; menu.RootNodes.Add(unwatchedNode); DBNode<DBTrackInfo> recentNode = new DBNode<DBTrackInfo>(); recentNode.Name = "${RecentlyAddedmvCentral}"; recentNode.DynamicNode = false; recentNode.Filter = new DBFilter<DBTrackInfo>(); recentNode.SortPosition = position++; recentNode.DBManager = mvCentralCore.DatabaseManager; DBCriteria<DBTrackInfo> recentCriteria = new DBCriteria<DBTrackInfo>(); recentCriteria.Field = DBField.GetFieldByDBName(typeof(DBTrackInfo), "date_added"); recentCriteria.Operator = DBCriteria<DBTrackInfo>.OperatorEnum.GREATER_THAN; recentCriteria.Value = "-30d"; recentNode.Filter.Criteria.Add(recentCriteria); DBMusicVideoNodeSettings additionalSettings = new DBMusicVideoNodeSettings(); additionalSettings.UseDefaultSorting = false; // additionalSettings.SortField = SortingFields.DateAdded; // additionalSettings.SortDirection = SortingDirections.Descending; recentNode.AdditionalSettings = additionalSettings; menu.RootNodes.Add(recentNode); DBNode<DBTrackInfo> genreNode = new DBNode<DBTrackInfo>(); genreNode.DynamicNode = true; genreNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBTrackInfo), "genres"); genreNode.Name = "${Genres}"; genreNode.SortPosition = position++; genreNode.DBManager = mvCentralCore.DatabaseManager; menu.RootNodes.Add(genreNode); menu.Commit(); } foreach (DBNode<DBTrackInfo> currNode in menu.RootNodes) { currNode.UpdateDynamicNode(); currNode.Commit(); } }
public override ActiveRecord Find(DBCriteria crit) { throw new NotImplementedException(); }
/// <summary> /// Add criteria (IMDb ID's) for a movie list to a nodes filter criteria /// We don't need to worry about movies that don't exist as they will simply not be visible /// </summary> /// <param name="name">Name of child node to add filters to</param> /// <param name="movieIMDbList">List of IMDb ID's to add </param> static void AddMoviesCriteriaToNode(DBNode<DBMovieInfo> node, IEnumerable<string> movieIMDbList) { if (node == null) return; // remove any movies that don't contain IMDb ID's. var imdbCriteraToAdd = movieIMDbList.Where(s => !string.IsNullOrEmpty(s)).ToList(); // clear existing filter if (node.HasFilter) { // do a quick check to see if we need to do anything // if the criteria counts matches, determine if the critera values also matches if (node.Filter.Criteria.Count == imdbCriteraToAdd.Count) { bool requiresUpdate = false; foreach (var criteria in node.Filter.Criteria) { // no point doing any further checks if (requiresUpdate) continue; // check if the current critera list already has the criteria in the filter requiresUpdate = !imdbCriteraToAdd.Contains(criteria.Value.ToString()); } // nothing to do with node, it's already up to date if (!requiresUpdate) return; } node.Filter.WhiteList.Clear(); node.Filter.BlackList.Clear(); node.Filter.Delete(); } // create a new filter, such that any criteria will match node.Filter = new DBFilter<DBMovieInfo>(); node.Filter.CriteriaGrouping = DBFilter<DBMovieInfo>.CriteriaGroupingEnum.ONE; node.Filter.Name = string.Format("{0} Filter", node.Name); // add criteria for each movie foreach (var movieId in imdbCriteraToAdd) { //TraktLogger.Debug("Adding criteria to the '{0}' node filter, Field = 'imdb_id', Value = '{1}'", node.Name, movieId); var criteria = new DBCriteria<DBMovieInfo>(); criteria.Field = DBField.GetFieldByDBName(typeof(DBMovieInfo), "imdb_id"); criteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.EQUAL; criteria.Value = movieId; // add the criteria to the filter node.Filter.Criteria.Add(criteria); } if (node.Filter.Criteria.Count == 0) { TraktLogger.Info("Adding dummy blacklist criteria to the '{0}' node filter.", node.Name); AddDummyBlacklistToFilter(node.Filter); } node.Commit(); }
/// <summary> /// Adds a movie criteria to a node /// </summary> /// <param name="node">Node to add movie criteria to</param> /// <param name="movieId">IMDb movie ID used for the criteria</param> static void AddMovieCriteriaToNode(DBNode<DBMovieInfo> node, string movieId) { if (node == null || !BasicHandler.IsValidImdb(movieId)) return; // check existing filter exists if (!node.HasFilter) return; // add movie id as a criteria var criteria = new DBCriteria<DBMovieInfo>(); criteria.Field = DBField.GetFieldByDBName(typeof(DBMovieInfo), "imdb_id"); criteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.EQUAL; criteria.Value = movieId; // add the criteria to the filter node.Filter.Criteria.Add(criteria); node.Commit(); }
/// <summary> /// Creates a dummy blacklist list constraint as opposed to a real Blacklist. /// A real blacklist can add a huge amount of records to the filters table. /// The purpose of the blacklist in this context is to simply ensure that there is /// always at least one criteria added to a filter so that it doesn't show All Movies. /// </summary> /// <param name="filter">The Filter that requires a dummy blacklist criteria</param> static void AddDummyBlacklistToFilter(DBFilter<DBMovieInfo> filter) { if (filter == null) return; // clear any legitimate blacklist if set filter.BlackList.Clear(); // when we're managing a blacklist for a nodes filter // we typically need to add a record for each movie in the users database // this can result in a large amount of records inserted into the Filters table // instead, let's create a dummy criteria and add it the filter e.g. a movie that will never match var criteria = new DBCriteria<DBMovieInfo>(); criteria.Field = DBField.GetFieldByDBName(typeof(DBMovieInfo), "imdb_id"); criteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.EQUAL; criteria.Value = "ttDummyBlacklist"; // add the criteria to the filter filter.Criteria.Add(criteria); }
public abstract ActiveRecord Find(DBCriteria crit);
public static void VerifyCategoryMenu() { DBMenu <DBTrackInfo> menu = mvCentralCore.Settings.CategoriesMenu; if (menu.RootNodes.Count == 0) { int position = 1; DBNode <DBTrackInfo> allNode = new DBNode <DBTrackInfo>(); allNode.Name = "${AllmvCentral}"; allNode.DynamicNode = false; allNode.Filter = new DBFilter <DBTrackInfo>(); allNode.SortPosition = position++; allNode.DBManager = mvCentralCore.DatabaseManager; menu.RootNodes.Add(allNode); DBNode <DBTrackInfo> unwatchedNode = new DBNode <DBTrackInfo>(); unwatchedNode.Name = "${UnwatchedMusicVideo}"; unwatchedNode.DynamicNode = false; unwatchedNode.Filter = new DBFilter <DBTrackInfo>(); DBCriteria <DBTrackInfo> criteria = new DBCriteria <DBTrackInfo>(); criteria.Field = DBField.GetFieldByDBName(typeof(DBUserMusicVideoSettings), "watched"); criteria.Relation = DBRelation.GetRelation(typeof(DBTrackInfo), typeof(DBUserMusicVideoSettings), ""); criteria.Operator = DBCriteria <DBTrackInfo> .OperatorEnum.EQUAL; criteria.Value = "0"; unwatchedNode.Filter.Criteria.Add(criteria); unwatchedNode.SortPosition = position++; unwatchedNode.DBManager = mvCentralCore.DatabaseManager; menu.RootNodes.Add(unwatchedNode); DBNode <DBTrackInfo> recentNode = new DBNode <DBTrackInfo>(); recentNode.Name = "${RecentlyAddedmvCentral}"; recentNode.DynamicNode = false; recentNode.Filter = new DBFilter <DBTrackInfo>(); recentNode.SortPosition = position++; recentNode.DBManager = mvCentralCore.DatabaseManager; DBCriteria <DBTrackInfo> recentCriteria = new DBCriteria <DBTrackInfo>(); recentCriteria.Field = DBField.GetFieldByDBName(typeof(DBTrackInfo), "date_added"); recentCriteria.Operator = DBCriteria <DBTrackInfo> .OperatorEnum.GREATER_THAN; recentCriteria.Value = "-30d"; recentNode.Filter.Criteria.Add(recentCriteria); DBMusicVideoNodeSettings additionalSettings = new DBMusicVideoNodeSettings(); additionalSettings.UseDefaultSorting = false; // additionalSettings.SortField = SortingFields.DateAdded; // additionalSettings.SortDirection = SortingDirections.Descending; recentNode.AdditionalSettings = additionalSettings; menu.RootNodes.Add(recentNode); DBNode <DBTrackInfo> genreNode = new DBNode <DBTrackInfo>(); genreNode.DynamicNode = true; genreNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBTrackInfo), "genres"); genreNode.Name = "${Genres}"; genreNode.SortPosition = position++; genreNode.DBManager = mvCentralCore.DatabaseManager; menu.RootNodes.Add(genreNode); menu.Commit(); } foreach (DBNode <DBTrackInfo> currNode in menu.RootNodes) { currNode.UpdateDynamicNode(); currNode.Commit(); } }
private void addCriteriaButton_ButtonClick(object sender, EventArgs e) { DBCriteria <T> newCriteria = new DBCriteria <T>(); AddCriteria(newCriteria); }
public static void VerifyMovieManagerFilterMenu() { DBMenu<DBMovieInfo> menu = MovingPicturesCore.Settings.MovieManagerFilterMenu; if (menu.RootNodes.Count == 0) { int position = 1; DBNode<DBMovieInfo> allNode = new DBNode<DBMovieInfo>(); allNode.Name = "${AllMovies}"; allNode.DynamicNode = false; allNode.Filter = new DBFilter<DBMovieInfo>(); allNode.SortPosition = position++; allNode.DBManager = MovingPicturesCore.DatabaseManager; menu.RootNodes.Add(allNode); DBNode<DBMovieInfo> unwatchedNode = new DBNode<DBMovieInfo>(); unwatchedNode.Name = "${UnwatchedMovies}"; unwatchedNode.DynamicNode = false; unwatchedNode.Filter = new DBFilter<DBMovieInfo>(); DBCriteria<DBMovieInfo> criteria = new DBCriteria<DBMovieInfo>(); criteria.Field = DBField.GetFieldByDBName(typeof(DBUserMovieSettings), "watched"); criteria.Relation = DBRelation.GetRelation(typeof(DBMovieInfo), typeof(DBUserMovieSettings), ""); criteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.EQUAL; criteria.Value = "0"; unwatchedNode.Filter.Criteria.Add(criteria); unwatchedNode.SortPosition = position++; unwatchedNode.DBManager = MovingPicturesCore.DatabaseManager; menu.RootNodes.Add(unwatchedNode); DBNode<DBMovieInfo> recentNode = new DBNode<DBMovieInfo>(); recentNode.Name = "${RecentlyAddedMovies}"; recentNode.DynamicNode = false; recentNode.Filter = new DBFilter<DBMovieInfo>(); recentNode.SortPosition = position++; recentNode.DBManager = MovingPicturesCore.DatabaseManager; DBCriteria<DBMovieInfo> recentCriteria = new DBCriteria<DBMovieInfo>(); recentCriteria.Field = DBField.GetFieldByDBName(typeof(DBMovieInfo), "date_added"); recentCriteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.GREATER_THAN; recentCriteria.Value = "-30d"; recentNode.Filter.Criteria.Add(recentCriteria); DBMovieNodeSettings additionalSettings = new DBMovieNodeSettings(); additionalSettings.UseDefaultSorting = false; additionalSettings.SortField = SortingFields.DateAdded; additionalSettings.SortDirection = SortingDirections.Descending; recentNode.AdditionalSettings = additionalSettings; menu.RootNodes.Add(recentNode); DBNode<DBMovieInfo> genreNode = new DBNode<DBMovieInfo>(); genreNode.DynamicNode = true; genreNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBMovieInfo), "genres"); genreNode.Name = "${Genres}"; genreNode.SortPosition = position++; genreNode.DBManager = MovingPicturesCore.DatabaseManager; menu.RootNodes.Add(genreNode); DBNode<DBMovieInfo> certNode = new DBNode<DBMovieInfo>(); certNode.DynamicNode = true; certNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBMovieInfo), "certification"); certNode.Name = "${" + certNode.BasicFilteringField.Name + "}"; certNode.DBManager = MovingPicturesCore.DatabaseManager; certNode.SortPosition = position++; menu.RootNodes.Add(certNode); DBNode<DBMovieInfo> yearNode = new DBNode<DBMovieInfo>(); yearNode.DynamicNode = true; yearNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBMovieInfo), "year"); yearNode.Name = "${" + yearNode.BasicFilteringField.Name + "}"; yearNode.SortPosition = position++; yearNode.DBManager = MovingPicturesCore.DatabaseManager; menu.RootNodes.Add(yearNode); DBNode<DBMovieInfo> alphaNode = new DBNode<DBMovieInfo>(); alphaNode.DynamicNode = true; alphaNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBMovieInfo), "title"); alphaNode.Name = "${BeginsWith}"; alphaNode.DBManager = MovingPicturesCore.DatabaseManager; alphaNode.SortPosition = position++; menu.RootNodes.Add(alphaNode); // maintenance node DBNode<DBMovieInfo> maintenanceNode = new DBNode<DBMovieInfo>(); maintenanceNode.Name = "${Missing}"; maintenanceNode.DynamicNode = false; maintenanceNode.SortPosition = position++; maintenanceNode.DBManager = MovingPicturesCore.DatabaseManager; menu.RootNodes.Add(maintenanceNode); // missing covers node DBNode<DBMovieInfo> missingCoversNode = new DBNode<DBMovieInfo>(); missingCoversNode.Name = "${Cover}"; missingCoversNode.Parent = maintenanceNode; missingCoversNode.DynamicNode = false; missingCoversNode.Filter = new DBFilter<DBMovieInfo>(); missingCoversNode.SortPosition = position++; missingCoversNode.DBManager = MovingPicturesCore.DatabaseManager; maintenanceNode.Children.Add(missingCoversNode); DBCriteria<DBMovieInfo> missingCoversCriteria = new DBCriteria<DBMovieInfo>(); missingCoversCriteria.Field = DBField.GetFieldByDBName(typeof(DBMovieInfo), "coverfullpath"); missingCoversCriteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.EQUAL; missingCoversCriteria.Value = ""; missingCoversNode.Filter.Criteria.Add(missingCoversCriteria); // missing backdrops node DBNode<DBMovieInfo> missingBackdropsNode = new DBNode<DBMovieInfo>(); missingBackdropsNode.Name = "${Backdrop}"; missingBackdropsNode.Parent = maintenanceNode; missingBackdropsNode.DynamicNode = false; missingBackdropsNode.Filter = new DBFilter<DBMovieInfo>(); missingBackdropsNode.SortPosition = position++; missingBackdropsNode.DBManager = MovingPicturesCore.DatabaseManager; maintenanceNode.Children.Add(missingBackdropsNode); DBCriteria<DBMovieInfo> missingBackdropsCriteria = new DBCriteria<DBMovieInfo>(); missingBackdropsCriteria.Field = DBField.GetFieldByDBName(typeof(DBMovieInfo), "backdropfullpath"); missingBackdropsCriteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.EQUAL; missingBackdropsCriteria.Value = ""; missingBackdropsNode.Filter.Criteria.Add(missingBackdropsCriteria); // invalid years, only 1900 -> next year considered valid DBNode<DBMovieInfo> invalidYearsNode = new DBNode<DBMovieInfo>(); invalidYearsNode.Name = "${Year}"; invalidYearsNode.Parent = maintenanceNode; invalidYearsNode.DynamicNode = false; invalidYearsNode.Filter = new DBFilter<DBMovieInfo>(); invalidYearsNode.Filter.CriteriaGrouping = DBFilter<DBMovieInfo>.CriteriaGroupingEnum.ONE; invalidYearsNode.SortPosition = position++; invalidYearsNode.DBManager = MovingPicturesCore.DatabaseManager; maintenanceNode.Children.Add(invalidYearsNode); DBCriteria<DBMovieInfo> invalidYearsCriteria = new DBCriteria<DBMovieInfo>(); invalidYearsCriteria.Field = DBField.GetFieldByDBName(typeof(DBMovieInfo), "year"); invalidYearsCriteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.LESS_THAN; invalidYearsCriteria.Value = 1900; invalidYearsNode.Filter.Criteria.Add(invalidYearsCriteria); invalidYearsCriteria = new DBCriteria<DBMovieInfo>(); invalidYearsCriteria.Field = DBField.GetFieldByDBName(typeof(DBMovieInfo), "year"); invalidYearsCriteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.GREATER_THAN; invalidYearsCriteria.Value = 2030; invalidYearsNode.Filter.Criteria.Add(invalidYearsCriteria); // missing mediainfo node DBNode<DBMovieInfo> missingMediaInfoNode = new DBNode<DBMovieInfo>(); missingMediaInfoNode.Name = "${MediaInfo}"; missingMediaInfoNode.Parent = maintenanceNode; missingMediaInfoNode.DynamicNode = false; missingMediaInfoNode.Filter = new DBFilter<DBMovieInfo>(); missingMediaInfoNode.SortPosition = position++; missingMediaInfoNode.DBManager = MovingPicturesCore.DatabaseManager; maintenanceNode.Children.Add(missingMediaInfoNode); DBCriteria<DBMovieInfo> missingMediaInfoCriteria = new DBCriteria<DBMovieInfo>(); missingMediaInfoCriteria.Field = DBField.GetFieldByDBName(typeof(DBLocalMedia), "videowidth"); missingMediaInfoCriteria.Relation = DBRelation.GetRelation(typeof(DBMovieInfo), typeof(DBLocalMedia), ""); missingMediaInfoCriteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.EQUAL; missingMediaInfoCriteria.Value = 0; missingMediaInfoNode.Filter.Criteria.Add(missingMediaInfoCriteria); menu.Commit(); } foreach (DBNode<DBMovieInfo> currNode in menu.RootNodes) { currNode.UpdateDynamicNode(); currNode.Commit(); } }
public static void VerifyCategoryMenu() { DBMenu<DBMovieInfo> menu = MovingPicturesCore.Settings.CategoriesMenu; if (menu.RootNodes.Count == 0) { int position = 1; DBNode<DBMovieInfo> allNode = new DBNode<DBMovieInfo>(); allNode.Name = "${AllMovies}"; allNode.DynamicNode = false; allNode.Filter = new DBFilter<DBMovieInfo>(); allNode.SortPosition = position++; allNode.DBManager = MovingPicturesCore.DatabaseManager; menu.RootNodes.Add(allNode); DBNode<DBMovieInfo> unwatchedNode = new DBNode<DBMovieInfo>(); unwatchedNode.Name = "${UnwatchedMovies}"; unwatchedNode.DynamicNode = false; unwatchedNode.Filter = new DBFilter<DBMovieInfo>(); DBCriteria<DBMovieInfo> criteria = new DBCriteria<DBMovieInfo>(); criteria.Field = DBField.GetFieldByDBName(typeof(DBUserMovieSettings), "watched"); criteria.Relation = DBRelation.GetRelation(typeof(DBMovieInfo), typeof(DBUserMovieSettings), ""); criteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.EQUAL; criteria.Value = "0"; unwatchedNode.Filter.Criteria.Add(criteria); unwatchedNode.SortPosition = position++; unwatchedNode.DBManager = MovingPicturesCore.DatabaseManager; menu.RootNodes.Add(unwatchedNode); DBNode<DBMovieInfo> recentNode = new DBNode<DBMovieInfo>(); recentNode.Name = "${RecentlyAddedMovies}"; recentNode.DynamicNode = false; recentNode.Filter = new DBFilter<DBMovieInfo>(); recentNode.SortPosition = position++; recentNode.DBManager = MovingPicturesCore.DatabaseManager; DBCriteria<DBMovieInfo> recentCriteria = new DBCriteria<DBMovieInfo>(); recentCriteria.Field = DBField.GetFieldByDBName(typeof(DBMovieInfo), "date_added"); recentCriteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.GREATER_THAN; recentCriteria.Value = "-30d"; recentNode.Filter.Criteria.Add(recentCriteria); DBMovieNodeSettings additionalSettings = new DBMovieNodeSettings(); additionalSettings.UseDefaultSorting = false; additionalSettings.SortField = SortingFields.DateAdded; additionalSettings.SortDirection = SortingDirections.Descending; recentNode.AdditionalSettings = additionalSettings; menu.RootNodes.Add(recentNode); DBNode<DBMovieInfo> genreNode = new DBNode<DBMovieInfo>(); genreNode.DynamicNode = true; genreNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBMovieInfo), "genres"); genreNode.Name = "${Genres}"; genreNode.SortPosition = position++; genreNode.DBManager = MovingPicturesCore.DatabaseManager; menu.RootNodes.Add(genreNode); DBNode<DBMovieInfo> certNode = new DBNode<DBMovieInfo>(); certNode.DynamicNode = true; certNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBMovieInfo), "certification"); certNode.Name = "${" + certNode.BasicFilteringField.Name + "}"; certNode.DBManager = MovingPicturesCore.DatabaseManager; certNode.SortPosition = position++; menu.RootNodes.Add(certNode); DBNode<DBMovieInfo> yearNode = new DBNode<DBMovieInfo>(); yearNode.DynamicNode = true; yearNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBMovieInfo), "year"); yearNode.Name = "${" + yearNode.BasicFilteringField.Name + "}"; yearNode.SortPosition = position++; yearNode.DBManager = MovingPicturesCore.DatabaseManager; menu.RootNodes.Add(yearNode); DBNode<DBMovieInfo> alphaNode = new DBNode<DBMovieInfo>(); alphaNode.DynamicNode = true; alphaNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBMovieInfo), "title"); alphaNode.Name = "${BeginsWith}"; alphaNode.DBManager = MovingPicturesCore.DatabaseManager; alphaNode.SortPosition = position++; menu.RootNodes.Add(alphaNode); menu.Commit(); } foreach (DBNode<DBMovieInfo> currNode in menu.RootNodes) { currNode.UpdateDynamicNode(); currNode.Commit(); } }