private void EvaluateConditionsAndOperators() { if (cboConditionType.SelectedItem == null || cboConditionOperator.SelectedItem == null) { return; } GroupFilterConditionType conditionType = GroupFilterHelper.GetEnumForText_ConditionType(cboConditionType.SelectedItem.ToString()); GroupFilterOperator opType = GroupFilterHelper.GetEnumForText_Operator(cboConditionOperator.SelectedItem.ToString()); IsParameterDate = false; IsParameterAnimeGroup = false; IsParameterAnimeType = false; IsParameterText = false; IsParameterInNotIn = false; IsParameterTag = false; IsParameterCustomTag = false; IsParameterRating = false; IsParameterLastXDays = false; IsParameterVideoQuality = false; IsParameterAudioLanguage = false; IsParameterSubtitleLanguage = false; IsParameterInteger = false; switch (conditionType) { case GroupFilterConditionType.AirDate: case GroupFilterConditionType.SeriesCreatedDate: case GroupFilterConditionType.EpisodeAddedDate: case GroupFilterConditionType.EpisodeWatchedDate: case GroupFilterConditionType.LatestEpisodeAirDate: if (opType == GroupFilterOperator.LastXDays) { IsParameterLastXDays = true; IsParameterText = true; } else { IsParameterDate = true; } break; case GroupFilterConditionType.AnimeGroup: IsParameterAnimeGroup = true; break; case GroupFilterConditionType.AnimeType: IsParameterAnimeType = true; break; case GroupFilterConditionType.ReleaseGroup: case GroupFilterConditionType.Studio: IsParameterInNotIn = true; break; case GroupFilterConditionType.Tag: IsParameterInNotIn = true; IsParameterTag = true; break; case GroupFilterConditionType.CustomTags: IsParameterInNotIn = true; IsParameterCustomTag = true; break; case GroupFilterConditionType.AudioLanguage: IsParameterInNotIn = true; IsParameterAudioLanguage = true; break; case GroupFilterConditionType.SubtitleLanguage: IsParameterInNotIn = true; IsParameterSubtitleLanguage = true; break; case GroupFilterConditionType.Year: IsParameterInNotIn = true; break; case GroupFilterConditionType.VideoQuality: IsParameterInNotIn = true; IsParameterVideoQuality = true; break; case GroupFilterConditionType.AniDBRating: case GroupFilterConditionType.UserRating: IsParameterText = true; IsParameterRating = true; break; case GroupFilterConditionType.EpisodeCount: IsParameterText = true; IsParameterInteger = true; break; } }
public void Init(GroupFilterVM gf, GroupFilterConditionVM gfc) { groupFilter = gf; groupFilterCondition = gfc; try { cboConditionType.Items.Clear(); foreach (string cond in GroupFilterHelper.GetAllConditionTypes()) { cboConditionType.Items.Add(cond); } PopulateAnimeGroups(); PopulateTags(); PopulateCustomTags(); PopulateVideoQuality(); PopulateAnimeTypes(); PopulateLanguages(); // find the right condition int idx = 0; for (int i = 0; i < cboConditionType.Items.Count; i++) { GroupFilterConditionType conditionTypeTemp = GroupFilterHelper.GetEnumForText_ConditionType(cboConditionType.Items[i].ToString()); if (conditionTypeTemp == gfc.ConditionTypeEnum) { idx = i; break; } } cboConditionType.SelectedIndex = idx; GroupFilterConditionType conditionType = GroupFilterHelper.GetEnumForText_ConditionType(cboConditionType.SelectedItem.ToString()); cboConditionOperator.Items.Clear(); foreach (string op in GroupFilterHelper.GetAllowedOperators(conditionType)) { cboConditionOperator.Items.Add(op); } cboConditionType.SelectionChanged += new SelectionChangedEventHandler(cboConditionType_SelectionChanged); cboConditionOperator.SelectionChanged += new SelectionChangedEventHandler(cboConditionOperator_SelectionChanged); // find the right operator idx = 0; for (int i = 0; i < cboConditionOperator.Items.Count; i++) { GroupFilterOperator opTypeTemp = GroupFilterHelper.GetEnumForText_Operator(cboConditionOperator.Items[i].ToString()); if (opTypeTemp == gfc.ConditionOperatorEnum) { idx = i; break; } } cboConditionOperator.SelectedIndex = idx; GroupFilterOperator opType = GroupFilterHelper.GetEnumForText_Operator(cboConditionOperator.Items[idx].ToString()); // display the selected filter value switch (conditionType) { case GroupFilterConditionType.AirDate: case GroupFilterConditionType.SeriesCreatedDate: case GroupFilterConditionType.EpisodeAddedDate: case GroupFilterConditionType.EpisodeWatchedDate: case GroupFilterConditionType.LatestEpisodeAirDate: if (opType == GroupFilterOperator.LastXDays) { txtParameter.Text = gfc.ConditionParameter; } else { DateTime airDate = GroupFilterHelper.GetDateFromString(gfc.ConditionParameter); dpDate.SelectedDate = airDate; } break; case GroupFilterConditionType.AnimeGroup: // don't display anything break; case GroupFilterConditionType.AnimeType: case GroupFilterConditionType.Tag: case GroupFilterConditionType.CustomTags: case GroupFilterConditionType.ReleaseGroup: case GroupFilterConditionType.Studio: case GroupFilterConditionType.VideoQuality: case GroupFilterConditionType.AniDBRating: case GroupFilterConditionType.UserRating: case GroupFilterConditionType.AudioLanguage: case GroupFilterConditionType.SubtitleLanguage: case GroupFilterConditionType.Year: txtParameter.Text = gfc.ConditionParameter; break; } } catch (Exception ex) { Utils.ShowErrorMessage(ex); } }
void btnConfirm_Click(object sender, RoutedEventArgs e) { // get the details from the form groupFilterCondition.ConditionType = (int)GroupFilterHelper.GetEnumForText_ConditionType(cboConditionType.SelectedItem.ToString()); groupFilterCondition.ConditionOperator = (int)GroupFilterHelper.GetEnumForText_Operator(cboConditionOperator.SelectedItem.ToString()); NumberStyles style = NumberStyles.Number; CultureInfo culture = CultureInfo.CreateSpecificCulture("en-GB"); // get the parameter details if (IsParameterDate) { if (dpDate.SelectedDate == null) { MessageBox.Show(Properties.Resources.MSG_ERR_SelectDate, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error); dpDate.Focus(); return; } else { groupFilterCondition.ConditionParameter = GroupFilterHelper.GetDateAsString(dpDate.SelectedDate.Value); } } if (IsParameterRating) { if (txtParameter.Text.Trim().Length == 0) { MessageBox.Show(Properties.Resources.MSG_ERR_EnterValue, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error); txtParameter.Focus(); return; } else { decimal dRating = -1; decimal.TryParse(txtParameter.Text, style, culture, out dRating); if (dRating <= 0 || dRating > 10) { MessageBox.Show(Properties.Resources.MSG_ERR_RatingValue, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error); txtParameter.Focus(); return; } groupFilterCondition.ConditionParameter = txtParameter.Text.Trim(); } } if (IsParameterInteger) { if (txtParameter.Text.Trim().Length == 0) { MessageBox.Show(Properties.Resources.MSG_ERR_EnterValue, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error); txtParameter.Focus(); return; } else { int parmInt = -1; if (!int.TryParse(txtParameter.Text, out parmInt)) { MessageBox.Show(Properties.Resources.GroupFilter_IntegerOnly, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error); txtParameter.Focus(); return; } groupFilterCondition.ConditionParameter = parmInt.ToString(); } } if (IsParameterLastXDays) { if (txtParameter.Text.Trim().Length == 0) { MessageBox.Show(Properties.Resources.MSG_ERR_EnterValue, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error); txtParameter.Focus(); return; } else { int days = -1; int.TryParse(txtParameter.Text, out days); if (days < 1 || days > int.MaxValue) { MessageBox.Show(Properties.Resources.MSG_ERR_DaysValue, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error); txtParameter.Focus(); return; } groupFilterCondition.ConditionParameter = txtParameter.Text.Trim(); } } if (IsParameterTag) { if (txtSelectedTags.Text.Trim().Length == 0) { MessageBox.Show(Properties.Resources.MSG_ERR_EnterValue, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error); txtParameter.Focus(); return; } else { // validate string[] cats = txtSelectedTags.Text.Trim().Split(','); groupFilterCondition.ConditionParameter = ""; foreach (string cat in cats) { if (cat.Trim().Length == 0) { continue; } if (cat.Trim() == ", ") { continue; } if (groupFilterCondition.ConditionParameter.Length > 0) { groupFilterCondition.ConditionParameter += ", "; } groupFilterCondition.ConditionParameter += cat; } } } if (IsParameterCustomTag) { if (txtSelectedCustomTags.Text.Trim().Length == 0) { MessageBox.Show(Properties.Resources.MSG_ERR_EnterValue, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error); txtSelectedCustomTags.Focus(); return; } else { // validate string[] tags = txtSelectedCustomTags.Text.Trim().Split(','); groupFilterCondition.ConditionParameter = ""; foreach (string tag in tags) { if (tag.Trim().Length == 0) { continue; } if (tag.Trim() == ", ") { continue; } if (groupFilterCondition.ConditionParameter.Length > 0) { groupFilterCondition.ConditionParameter += ", "; } groupFilterCondition.ConditionParameter += tag; } } } if (IsParameterVideoQuality) { if (txtSelectedVideoQuality.Text.Trim().Length == 0) { MessageBox.Show(Properties.Resources.MSG_ERR_EnterValue, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error); txtParameter.Focus(); return; } else { // validate string[] vidQuals = txtSelectedVideoQuality.Text.Trim().Split(','); groupFilterCondition.ConditionParameter = ""; foreach (string vidq in vidQuals) { if (vidq.Trim().Length == 0) { continue; } if (vidq.Trim() == ", ") { continue; } if (groupFilterCondition.ConditionParameter.Length > 0) { groupFilterCondition.ConditionParameter += ", "; } groupFilterCondition.ConditionParameter += vidq; } } } if (IsParameterAudioLanguage) { if (txtSelectedAudioLanguages.Text.Trim().Length == 0) { MessageBox.Show(Properties.Resources.MSG_ERR_EnterValue, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error); txtParameter.Focus(); return; } else { // validate string[] languages = txtSelectedAudioLanguages.Text.Trim().Split(','); groupFilterCondition.ConditionParameter = ""; foreach (string lanName in languages) { if (lanName.Trim().Length == 0) { continue; } if (lanName.Trim() == ", ") { continue; } if (groupFilterCondition.ConditionParameter.Length > 0) { groupFilterCondition.ConditionParameter += ", "; } groupFilterCondition.ConditionParameter += lanName; } } } if (IsParameterSubtitleLanguage) { if (txtSelectedSubtitleLanguages.Text.Trim().Length == 0) { MessageBox.Show(Properties.Resources.MSG_ERR_EnterValue, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error); txtParameter.Focus(); return; } else { // validate string[] languages = txtSelectedSubtitleLanguages.Text.Trim().Split(','); groupFilterCondition.ConditionParameter = ""; foreach (string lanName in languages) { if (lanName.Trim().Length == 0) { continue; } if (lanName.Trim() == ", ") { continue; } if (groupFilterCondition.ConditionParameter.Length > 0) { groupFilterCondition.ConditionParameter += ", "; } groupFilterCondition.ConditionParameter += lanName; } } } if (IsParameterAnimeType) { if (txtSelectedAnimeTypes.Text.Trim().Length == 0) { MessageBox.Show(Properties.Resources.MSG_ERR_EnterValue, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error); txtParameter.Focus(); return; } else { // validate string[] aTypes = txtSelectedAnimeTypes.Text.Trim().Split(','); groupFilterCondition.ConditionParameter = ""; foreach (string aType in aTypes) { if (aType.Trim().Length == 0) { continue; } if (aType.Trim() == ", ") { continue; } if (groupFilterCondition.ConditionParameter.Length > 0) { groupFilterCondition.ConditionParameter += ", "; } groupFilterCondition.ConditionParameter += aType; } } } if (IsParameterAnimeGroup) { if (lbGroups.SelectedItem == null) { MessageBox.Show(Properties.Resources.MSG_ERR_GroupSelectionRequired, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error); lbGroups.Focus(); return; } else { AnimeGroupVM grp = lbGroups.SelectedItem as AnimeGroupVM; groupFilterCondition.ConditionParameter = grp.AnimeGroupID.Value.ToString(); } } if (IsParameterText) { if (txtParameter.Text.Trim().Length == 0) { MessageBox.Show(Properties.Resources.MSG_ERR_EnterValue, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error); txtParameter.Focus(); return; } else { groupFilterCondition.ConditionParameter = txtParameter.Text.Trim(); } } this.DialogResult = true; this.Close(); }