void btnRandomSeries_Click(object sender, RoutedEventArgs e)
        {
            VM_GroupFilter gf = DataContext as VM_GroupFilter;

            if (gf == null)
            {
                return;
            }

            MainWindow mainwdw = (MainWindow)Window.GetWindow(this);

            RandomSeriesForm frm = new RandomSeriesForm();

            frm.Owner = Window.GetWindow(this);;
            frm.Init(RandomSeriesEpisodeLevel.GroupFilter, gf);
            bool?result = frm.ShowDialog();

            if (result.HasValue && result.Value && frm.Series != null)
            {
                if (mainwdw == null)
                {
                    return;
                }
                mainwdw.ShowPinnedSeries(frm.Series);
            }
        }
Exemple #2
0
        public static List <VM_GroupFilter> GetChildGroupFilters(VM_GroupFilter grpf)
        {
            List <VM_GroupFilter> gfs = new List <VM_GroupFilter>();

            try
            {
                int grid = 0;
                if (grpf != null)
                {
                    grid = grpf.GroupFilterID;
                }


                List <VM_GroupFilter> gf_cons = VM_ShokoServer.Instance.ShokoServices.GetGroupFilters(grid).CastList <VM_GroupFilter>();


                foreach (VM_GroupFilter gf_con in gf_cons.Where(a => a.Groups.ContainsKey(VM_ShokoServer.Instance.CurrentUser.JMMUserID) && a.Groups[VM_ShokoServer.Instance.CurrentUser.JMMUserID].Count() > 0 ||
                                                                (a.FilterType & (int)GroupFilterType.Directory) == (int)GroupFilterType.Directory).OrderBy(a => a.GroupFilterName))
                {
                    gf_con.ParentFilter = grpf;
                    gfs.Add(gf_con);
                }
            }
            catch (Exception ex)
            {
                BaseConfig.MyAnimeLog.Write(ex.ToString());
            }

            gfs.Sort();
            return(gfs);
        }
        /*static public bool SetSelectedItem(this TreeView treeView, object item)
         *      {
         *              return SetSelected(treeView, item);
         *      }
         *
         *      static private bool SetSelected(ItemsControl parent, object child)
         *      {
         *              if (parent == null || child == null)
         *              {
         *                      return false;
         *              }
         *
         *              TreeViewItem childNode = parent.ItemContainerGenerator.ContainerFromItem(child) as TreeViewItem;
         *
         *              if (childNode != null)
         *              {
         *                      childNode.Focus();
         *                      return childNode.IsSelected = true;
         *              }
         *
         *              if (parent.Items.Count > 0)
         *              {
         *                      foreach (object childItem in parent.Items)
         *                      {
         *                              ItemsControl childControl = parent.ItemContainerGenerator.ContainerFromItem(childItem) as ItemsControl;
         *
         *                              if (SetSelected(childControl, child))
         *                              {
         *                                      return true;
         *                              }
         *                      }
         *              }
         *
         *              return false;
         *      }*/

        public static List <SortDescription> GetSortDescriptions(this VM_GroupFilter gf)
        {
            List <SortDescription> sortlist = new List <SortDescription>();

            foreach (VM_GroupFilterSortingCriteria gfsc in gf.SortCriteriaList)
            {
                sortlist.Add(gfsc.SortType.GetSortDescription(gfsc.SortDirection));
            }
            return(sortlist);
        }
Exemple #4
0
 public void SetGroupFilterSortingOnForms(VM_GroupFilter gf)
 {
     ViewGroupsForms.SortDescriptions.Clear();
     if (gf != null)
     {
         List <SortDescription> sortlist = gf.GetSortDescriptions();
         foreach (SortDescription sd in sortlist)
         {
             ViewGroupsForms.SortDescriptions.Add(sd);
         }
     }
 }
        void chkApplyToSeriesEditing_Click(object sender, RoutedEventArgs e)
        {
            chkApplyToSeries.IsChecked = chkApplyToSeriesEditing.IsChecked;

            VM_GroupFilter gf = DataContext as VM_GroupFilter;

            if (gf == null)
            {
                return;
            }

            gf.ApplyToSeries = chkApplyToSeriesEditing.IsChecked.Value ? 1 : 0;
        }
Exemple #6
0
 public static List <VM_AnimeGroup_User> GetAnimeGroupsForFilter(VM_GroupFilter groupFilter)
 {
     try
     {
         List <VM_AnimeGroup_User> rawGrps = VM_ShokoServer.Instance.ShokoServices.GetAnimeGroupsForFilter(groupFilter.GroupFilterID,
                                                                                                           VM_ShokoServer.Instance.CurrentUser.JMMUserID, false).CastList <VM_AnimeGroup_User>() ?? new List <VM_AnimeGroup_User>();
         return(groupFilter.SortGroups(rawGrps.AsQueryable()).ToList());
     }
     catch (Exception ex)
     {
         BaseConfig.MyAnimeLog.Write(ex.ToString());
     }
     return(new List <VM_AnimeGroup_User>());
 }
Exemple #7
0
        public void SetGroupFilterSortingOnForms(VM_GroupFilter gf)
        {
            ViewGroupsForms.SortDescriptions.Clear();
            if (gf?.IsDirectoryFilter != true)
            {
                return;
            }

            List <SortDescription> sortlist = gf.GetSortDescriptions();

            foreach (SortDescription sd in sortlist)
            {
                ViewGroupsForms.SortDescriptions.Add(sd);
            }
        }
Exemple #8
0
 //[LogExecutionTime]
 public void SetGroupFilterSortingOnMainList()
 {
     if (CurrentWrapper is VM_GroupFilter)
     {
         VM_GroupFilter gf = (VM_GroupFilter)CurrentWrapper;
         ViewGroups.SortDescriptions.Clear();
         List <SortDescription> sortlist = gf.GetSortDescriptions();
         foreach (SortDescription sd in sortlist)
         {
             ViewGroups.SortDescriptions.Add(sd);
         }
     }
     else
     {
         ViewGroups.SortDescriptions.Clear();
     }
 }
Exemple #9
0
        public void Init(VM_GroupFilter gf, VM_GroupFilterSortingCriteria gfsc)
        {
            groupFilter = gf;
            groupFilterSortingCriteria = gfsc;

            try
            {
                cboSortType.Items.Clear();
                foreach (string stype in Commons.Extensions.Models.GetAllSortTypes())
                {
                    if (gf != null)
                    {
                        bool alreadyExists = false;
                        foreach (VM_GroupFilterSortingCriteria gfsc_old in gf.SortCriteriaList)
                        {
                            if (gfsc_old.SortType.GetTextForEnum_Sorting() == stype)
                            {
                                alreadyExists = true;
                                break;
                            }
                        }

                        if (!alreadyExists)
                        {
                            cboSortType.Items.Add(stype);
                        }
                    }
                }
                if (cboSortType.Items.Count > 0)
                {
                    cboSortType.SelectedIndex = 0;
                }



                cboDirection.Items.Clear();
                cboDirection.Items.Add(Commons.Extensions.Models.GetTextForEnum_SortDirection(GroupFilterSortDirection.Asc));
                cboDirection.Items.Add(Commons.Extensions.Models.GetTextForEnum_SortDirection(GroupFilterSortDirection.Desc));
                cboDirection.SelectedIndex = 0;
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
        }
        void cboBaseConditionEditing_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            VM_GroupFilter gf = DataContext as VM_GroupFilter;

            if (gf == null)
            {
                return;
            }

            if (cboBaseConditionEditing.SelectedIndex == 0)
            {
                gf.BaseCondition = 1;
            }
            else
            {
                gf.BaseCondition = 2;
            }

            cboBaseCondition.SelectedIndex = cboBaseConditionEditing.SelectedIndex;
        }
        void GroupFilterAdmin_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            VM_GroupFilter gf = DataContext as VM_GroupFilter;

            if (gf == null)
            {
                return;
            }

            if (gf.BaseCondition == 1)
            {
                cboBaseConditionEditing.SelectedIndex = 0;
                cboBaseConditionEditing.SelectedIndex = 0;
            }
            else
            {
                cboBaseConditionEditing.SelectedIndex = 1;
                cboBaseConditionEditing.SelectedIndex = 1;
            }
        }
Exemple #12
0
        public static List <VM_AnimeGroup_User> GetAnimeGroupsForFilter(VM_GroupFilter groupFilter)
        {
            try
            {
                List <VM_AnimeGroup_User> rawGrps = VM_ShokoServer.Instance.ShokoServices.GetAnimeGroupsForFilter(groupFilter.GroupFilterID,
                                                                                                                  VM_ShokoServer.Instance.CurrentUser.JMMUserID, false).CastList <VM_AnimeGroup_User>() ?? new List <VM_AnimeGroup_User>();
                if (string.IsNullOrEmpty(groupFilter.SortingCriteria))
                {
                    groupFilter.SortingCriteria = "5;1";
                }

                IQueryable <VM_AnimeGroup_User> qr = rawGrps.AsQueryable();
                qr = SortGroups(groupFilter, qr);
                return(qr.ToList());
            }
            catch (Exception ex)
            {
                BaseConfig.MyAnimeLog.Write(ex.ToString());
            }
            return(new List <VM_AnimeGroup_User>());
        }
        void lbFilterConditions_Editing_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            VM_GroupFilter gf = DataContext as VM_GroupFilter;

            if (gf == null)
            {
                return;
            }

            VM_GroupFilterCondition gfc = lbFilterConditions_Editing.SelectedItem as VM_GroupFilterCondition;

            if (gfc == null)
            {
                return;
            }

            try
            {
                GroupFilterConditionForm frm = new GroupFilterConditionForm();
                frm.Owner = Window.GetWindow(this);
                frm.Init(gf, gfc);
                bool?result = frm.ShowDialog();
                if (result.HasValue && result.Value == true)
                {
                    Window     win  = Window.GetWindow(this);
                    MainWindow main = win as MainWindow;
                    gf.IsBeingEdited = true;

                    //gf.FilterConditions.Add(gfc);

                    VM_MainListHelper.Instance.ViewGroupsForms.Filter = main.GroupFilter_GroupSearch;
                    VM_MainListHelper.Instance.SetGroupFilterSortingOnForms(gf);
                }
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
        }
Exemple #14
0
        public void Init(VM_GroupFilter gf, VM_GroupFilterCondition gfc)
        {
            groupFilter          = gf;
            groupFilterCondition = gfc;


            try
            {
                cboConditionType.Items.Clear();
                foreach (string cond in Commons.Extensions.Models.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 = Commons.Extensions.Models.GetEnumForText_ConditionType(cboConditionType.Items[i].ToString());
                    if (conditionTypeTemp == gfc.ConditionTypeEnum)
                    {
                        idx = i;
                        break;
                    }
                }
                cboConditionType.SelectedIndex = idx;
                GroupFilterConditionType conditionType = Commons.Extensions.Models.GetEnumForText_ConditionType(cboConditionType.SelectedItem.ToString());

                cboConditionOperator.Items.Clear();
                foreach (string op in conditionType.GetAllowedOperators())
                {
                    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 = Commons.Extensions.Models.GetEnumForText_Operator(cboConditionOperator.Items[i].ToString());
                    if (opTypeTemp == gfc.ConditionOperatorEnum)
                    {
                        idx = i;
                        break;
                    }
                }
                cboConditionOperator.SelectedIndex = idx;
                GroupFilterOperator opType = Commons.Extensions.Models.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 = gfc.ConditionParameter.GetDateFromString();
                        dpDate.SelectedDate = airDate;
                    }
                    break;

                case GroupFilterConditionType.AnimeGroup:

                    // don't display anything
                    break;

                case GroupFilterConditionType.AnimeType:
                case GroupFilterConditionType.Tag:
                case GroupFilterConditionType.CustomTags:

                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);
            }
        }
 public static List <VM_GroupFilter> GetChildFilters(VM_GroupFilter pre)
 {
     return(GroupFilterHelper.GetChildGroupFilters(pre));
 }
 public static bool EvaluateGroupFilter(VM_GroupFilter gf, VM_AnimeGroup_User grp)
 {
     return(gf.EvaluateGroupFilter(grp));
 }
Exemple #17
0
        public void UpdateAll()
        {
            try
            {
                CL_MainChanges changes = VM_ShokoServer.Instance.ShokoServices.GetAllChanges(LastChange, VM_ShokoServer.Instance.CurrentUser.JMMUserID);
                AllAnimeDetailedDictionary = null;

                //Update Anime Groups (Must be done before Series)
                foreach (int gr in changes.Groups.RemovedItems)
                {
                    AllGroupsDictionary.Remove(gr);
                }

                foreach (VM_AnimeGroup_User g in changes.Groups.ChangedItems.CastList <VM_AnimeGroup_User>())
                {
                    VM_AnimeGroup_User v;

                    if (AllGroupsDictionary.TryGetValue(g.AnimeGroupID, out v))
                    {
                        v.Populate(g);
                    }
                    else
                    {
                        AllGroupsDictionary[g.AnimeGroupID] = g;
                    }
                }

                //Update Anime Series (NOTE: relies on AllGroupsDictionary being up to date)
                foreach (int sr in changes.Series.RemovedItems)
                {
                    AllSeriesDictionary.Remove(sr);
                }

                foreach (VM_AnimeSeries_User s in changes.Series.ChangedItems.CastList <VM_AnimeSeries_User>())
                {
                    VM_AnimeSeries_User v;

                    if (AllSeriesDictionary.TryGetValue(s.AnimeSeriesID, out v))
                    {
                        v.Populate(s);
                    }
                    else
                    {
                        AllSeriesDictionary[s.AnimeSeriesID] = s;
                    }
                }

                foreach (VM_AnimeGroup_User v in AllGroupsDictionary.Values)
                {
                    v.PopulateSerieInfo(AllGroupsDictionary, AllSeriesDictionary);
                }

                //Update Group Filters
                foreach (int gfr in changes.Filters.RemovedItems)
                {
                    AllGroupFiltersDictionary.Remove(gfr);
                }

                foreach (VM_GroupFilter gf in changes.Filters.ChangedItems.CastList <VM_GroupFilter>())
                {
                    VM_GroupFilter v;

                    if (AllGroupFiltersDictionary.TryGetValue(gf.GroupFilterID, out v))
                    {
                        v.Populate(gf);
                    }
                    else
                    {
                        AllGroupFiltersDictionary[gf.GroupFilterID] = gf;
                    }
                }

                foreach (int gf in changes.Filters.ChangedItems.Select(a => a.GroupFilterID))
                {
                    VM_GroupFilter v = AllGroupFiltersDictionary[gf];
                    //Recalculate Groups Count
                    v.GetDirectChildren();
                }
                LastChange = changes.LastChange;

                GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
                GC.Collect();
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
        }
Exemple #18
0
        //[LogExecutionTime]
        public void ShowChildWrappers(IListWrapper wrapper)
        {
            try
            {
                CurrentWrapper            = wrapper;
                CurrentWrapperIsGroup     = wrapper is VM_GroupFilter;
                CurrentListWrapperIsGroup = wrapper is VM_AnimeGroup_User;

                if (wrapper is VM_AnimeGroup_User)
                {
                    //LastAnimeGroupID = ((VM_AnimeGroup_User)wrapper).AnimeGroupID.Value;
                    Instance.CurrentOpenGroupFilter = "VM_AnimeGroup_User|" + ((VM_AnimeGroup_User)wrapper).AnimeGroupID;
                }
                if (wrapper is VM_GroupFilter)
                {
                    CurrentGroupFilter = (VM_GroupFilter)wrapper;
                    //LastGroupFilterID = ((GroupFilterVM)wrapper).GroupFilterID.Value;

                    Instance.CurrentOpenGroupFilter = "GroupFilterVM|" + ((VM_GroupFilter)wrapper).GroupFilterID;
                }
                if (wrapper is VM_AnimeSeries_User)
                {
                    CurrentSeries = (VM_AnimeSeries_User)wrapper;
                    //LastAnimeSeriesID = ((VM_AnimeSeries_User)wrapper).AnimeSeriesID.Value;

                    Instance.CurrentOpenGroupFilter = "NoGroup";
                }

                if (wrapper == null)
                {
                    Instance.CurrentOpenGroupFilter = "Init";
                }


                Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal, (Action) delegate
                {
                    // update wrappers
                    // check where this wrapper sits in the heirarchy and remove anything below it
                    int pos = -1;



                    if (wrapper != null)
                    {
                        for (int i = 0; i < BreadCrumbs.Count; i++)
                        {
                            if (BreadCrumbs[i] == null)
                            {
                                continue;
                            }
                            if (wrapper is VM_GroupFilter && BreadCrumbs[i] is VM_GroupFilter)
                            {
                                VM_GroupFilter wrapObj = (VM_GroupFilter)wrapper;
                                VM_GroupFilter bcObj   = (VM_GroupFilter)BreadCrumbs[i];
                                if (wrapObj.GroupFilterName == bcObj.GroupFilterName)
                                {
                                    pos = i;
                                }
                            }
                            else if (wrapper is VM_AnimeGroup_User && BreadCrumbs[i] is VM_AnimeGroup_User)
                            {
                                VM_AnimeGroup_User wrapObj = (VM_AnimeGroup_User)wrapper;
                                VM_AnimeGroup_User bcObj   = (VM_AnimeGroup_User)BreadCrumbs[i];
                                if (wrapObj.AnimeGroupID == bcObj.AnimeGroupID)
                                {
                                    pos = i;
                                }
                            }
                            else if (wrapper is VM_AnimeSeries_User && BreadCrumbs[i] is VM_AnimeSeries_User)
                            {
                                VM_AnimeSeries_User wrapObj = (VM_AnimeSeries_User)wrapper;
                                VM_AnimeSeries_User bcObj   = (VM_AnimeSeries_User)BreadCrumbs[i];
                                if (wrapObj.AnimeSeriesID == bcObj.AnimeSeriesID)
                                {
                                    pos = i;
                                }
                            }
                            else if (wrapper is VM_AnimeEpisodeType && BreadCrumbs[i] is VM_AnimeEpisodeType)
                            {
                                VM_AnimeEpisodeType wrapObj = (VM_AnimeEpisodeType)wrapper;
                                VM_AnimeEpisodeType bcObj   = (VM_AnimeEpisodeType)BreadCrumbs[i];
                                if (wrapObj.EpisodeTypeDescription == bcObj.EpisodeTypeDescription)
                                {
                                    pos = i;
                                }
                            }
                            else if (wrapper is VM_AnimeEpisode_User && BreadCrumbs[i] is VM_AnimeEpisode_User)
                            {
                                VM_AnimeEpisode_User wrapObj = (VM_AnimeEpisode_User)wrapper;
                                VM_AnimeEpisode_User bcObj   = (VM_AnimeEpisode_User)BreadCrumbs[i];
                                if (wrapObj.AnimeEpisodeID == bcObj.AnimeEpisodeID)
                                {
                                    pos = i;
                                }
                            }
                        }
                    }
                    else
                    {
                        pos = 0;
                    }

                    if (pos > 0)
                    {
                        for (int i = BreadCrumbs.Count - 1; i >= 0; i--)
                        {
                            if (i >= pos)
                            {
                                BreadCrumbs.RemoveAt(i);
                            }
                        }
                    }
                    else if (pos == 0)
                    {
                        BreadCrumbs.Clear();
                    }


                    BreadCrumbs.Add(wrapper);

                    if (wrapper is VM_GroupFilter)
                    {
                        if (AllGroupsDictionary.Count == 0)
                        {
                            RefreshGroupsSeriesData();
                        }

                        // apply sorting
                        // get default sorting from the group filter
                    }


                    // means we are at the top level
                    if (wrapper == null)
                    {
                        CurrentWrapperList.Clear();
                        foreach (VM_GroupFilter grpFilter in AllGroupFiltersDictionary.Values
                                 .Where(a => a != null && !a.ParentGroupFilterID.HasValue).OrderBy(a => a.GroupFilterName))
                        {
                            CurrentWrapperList.Add(grpFilter);
                        }
                    }
                    else
                    {
                        CurrentWrapperList.Clear();
                        foreach (IListWrapper wp in wrapper.GetDirectChildren())
                        {
                            CurrentWrapperList.Add(wp);
                        }
                    }

                    SetGroupFilterSortingOnMainList();
                    ViewGroups.Refresh();

                    //new FilterMainListBox(ViewGroups, SearchTextBox, CurrentGroupFilter);
                });
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
        }
Exemple #19
0
        public void RefreshGroupFiltersOnly()
        {
            //LoadTestData();
            //return;

            try
            {
                // set this to null so that it will be refreshed the next time it is needed
                List <VM_GroupFilter> gfRaw = VM_ShokoServer.Instance.ShokoServices.GetAllGroupFilters().CastList <VM_GroupFilter>();


                if (gfRaw.Count == 0)
                {
                    return;
                }

                Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal, (Action) delegate
                {
                    object p = CurrentWrapper;


                    VM_GroupFilter vms = AllGroupFiltersDictionary.Values.FirstOrDefault(a => a.GroupFilterID == 0);
                    AllGroupFiltersDictionary.Clear();
                    if (vms != null)
                    {
                        AllGroupFiltersDictionary.Add(0, vms);
                    }
                    foreach (VM_GroupFilter gf in gfRaw.OrderBy(a => a.GroupFilterName))
                    {
                        AllGroupFiltersDictionary[gf.GroupFilterID] = gf;
                    }

                    //Restore previous condition
                    if (p is VM_GroupFilter)
                    {
                        int id = ((VM_GroupFilter)p).GroupFilterID;
                        if (AllGroupFiltersDictionary.ContainsKey(id))
                        {
                            CurrentWrapper = AllGroupFiltersDictionary[id];
                        }
                    }
                    else if (p is VM_AnimeGroup_User)
                    {
                        int id = ((VM_AnimeGroup_User)p).AnimeGroupID;
                        if (AllGroupsDictionary.ContainsKey(id))
                        {
                            CurrentWrapper = AllGroupsDictionary[id];
                        }
                    }
                    else if (p is VM_AnimeSeries_User)
                    {
                        int id = ((VM_AnimeSeries_User)p).AnimeSeriesID;
                        if (AllSeriesDictionary.ContainsKey(id))
                        {
                            CurrentWrapper = AllSeriesDictionary[id];
                        }
                    }
                    OnRefreshed();
                });
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
        }
Exemple #20
0
        private void SetDisplayDetails()
        {
            string combinedDetails = string.Empty;

            if (MainWindow.RandomWindow_RandomLevel == RandomSeriesEpisodeLevel.GroupFilter)
            {
                SetGUIProperty(GuiProperty.Random_LevelType, Translation.GroupFilter);
                VM_GroupFilter gf = MainWindow.RandomWindow_LevelObject as VM_GroupFilter;
                if (gf != null)
                {
                    SetGUIProperty(GuiProperty.Random_LevelName, gf.GroupFilterName);

                    combinedDetails += Translation.GroupFilter + ": " + gf.GroupFilterName + " ";
                }
                else
                {
                    ClearGUIProperty(GuiProperty.Random_LevelName);
                }
            }
            else if (MainWindow.RandomWindow_RandomLevel == RandomSeriesEpisodeLevel.Group)
            {
                SetGUIProperty(GuiProperty.Random_LevelType, Translation.Group);
                VM_AnimeGroup_User grp = MainWindow.RandomWindow_LevelObject as VM_AnimeGroup_User;
                if (grp != null)
                {
                    SetGUIProperty(GuiProperty.Random_LevelName, grp.GroupName);
                    combinedDetails += Translation.Group + ": " + grp.GroupName + " ";
                }
                else
                {
                    ClearGUIProperty(GuiProperty.Random_LevelName);
                }
            }
            else if (MainWindow.RandomWindow_RandomLevel == RandomSeriesEpisodeLevel.Series)
            {
                SetGUIProperty(GuiProperty.Random_LevelType, Translation.Series);
                VM_AnimeSeries_User ser = MainWindow.RandomWindow_LevelObject as VM_AnimeSeries_User;
                if (ser != null)
                {
                    SetGUIProperty(GuiProperty.Random_LevelName, ser.SeriesName);

                    combinedDetails += Translation.Series + ": " + ser.SeriesName + " ";
                }
                else
                {
                    ClearGUIProperty(GuiProperty.Random_LevelName);
                }
            }
            else
            {
                ClearGUIProperty(GuiProperty.Random_LevelType);
                ClearGUIProperty(GuiProperty.Random_LevelName);
            }
            if (MainWindow.RandomWindow_RandomType == RandomObjectType.Series)
            {
                combinedDetails += string.Format(" ({0} " + (MainWindow.RandomWindow_MatchesFound == 1 ? Translation.Match : Translation.Matches) + ")", MainWindow.RandomWindow_MatchesFound);
            }

            SetGUIProperty(GuiProperty.Random_CombinedFilterDetails, combinedDetails);

            SetGUIProperty(GuiProperty.Random_NumberOfMatches, MainWindow.RandomWindow_MatchesFound.ToString(Globals.Culture));

            SetGUIProperty(GuiProperty.Random_Series_Tags, string.Join(", ", MainWindow.RandomWindow_SeriesTags));
            SetGUIProperty(GuiProperty.Random_Episode_Tags, string.Join(", ", MainWindow.RandomWindow_EpisodeTags));

            SetGUIProperty(GuiProperty.Random_Series_TagType, MainWindow.RandomWindow_SeriesAllTags ? Translation.All : Translation.Any);
            SetGUIProperty(GuiProperty.Random_Episode_TagType, MainWindow.RandomWindow_EpisodeAllTags ? Translation.All : Translation.Any);
        }
Exemple #21
0
        private List <VM_AnimeSeries_User> GetSeriesForGroupFilter()
        {
            List <VM_AnimeSeries_User> serList = new List <VM_AnimeSeries_User>();

            try
            {
                if (LevelType != RandomSeriesEpisodeLevel.GroupFilter)
                {
                    return(serList);
                }
                VM_GroupFilter gf = LevelObject as VM_GroupFilter;
                if (gf == null)
                {
                    return(serList);
                }

                foreach (VM_AnimeGroup_User grp in VM_MainListHelper.Instance.AllGroupsDictionary.Values)
                {
                    // ignore sub groups
                    if (grp.AnimeGroupParentID.HasValue)
                    {
                        continue;
                    }

                    foreach (VM_AnimeSeries_User ser in grp.AllAnimeSeries)
                    {
                        if (gf.EvaluateGroupFilter(ser))
                        {
                            // tags
                            if (!string.IsNullOrEmpty(SelectedTags))
                            {
                                string filterParm = SelectedTags.Trim();

                                string[] cats = filterParm.Split(',');

                                bool foundCat = false;
                                if (cboCatFilter.SelectedIndex == 1)
                                {
                                    foundCat = true;                                                                  // all
                                }
                                foreach (string cat in cats)
                                {
                                    if (cat.Trim().Length == 0)
                                    {
                                        continue;
                                    }
                                    if (cat.Trim() == ",")
                                    {
                                        continue;
                                    }

                                    bool fnd = ser.AllTags.Contains(cat, StringComparer.InvariantCultureIgnoreCase);

                                    if (cboCatFilter.SelectedIndex == 0)                                     // any
                                    {
                                        if (fnd)
                                        {
                                            foundCat = true;
                                            break;
                                        }
                                    }
                                    else                                     //all
                                    {
                                        if (!fnd)
                                        {
                                            foundCat = false;
                                            break;
                                        }
                                    }
                                }
                                if (!foundCat)
                                {
                                    continue;
                                }
                            }

                            serList.Add(ser);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }

            return(serList);
        }
Exemple #22
0
        private List <VM_AnimeSeries_User> GetSeriesForGroupFilter()
        {
            List <VM_AnimeSeries_User> serList = new List <VM_AnimeSeries_User>();

            try
            {
                BaseConfig.MyAnimeLog.Write("Getting list of candidate random series");

                if (MainWindow.RandomWindow_RandomLevel != RandomSeriesEpisodeLevel.GroupFilter)
                {
                    return(serList);
                }
                VM_GroupFilter gf = MainWindow.RandomWindow_LevelObject as VM_GroupFilter;
                if (gf?.GroupFilterID == null)
                {
                    return(serList);
                }

                BaseConfig.MyAnimeLog.Write("Getting list of candidate random series for: " + gf.GroupFilterName);

                bool allTags = MainWindow.RandomWindow_SeriesAllTags;
                if (MainWindow.RandomWindow_RandomType == RandomObjectType.Episode)
                {
                    allTags = MainWindow.RandomWindow_EpisodeAllTags;
                }

                bool completeSeries   = true;
                bool allWatched       = true;
                bool unwatched        = true;
                bool partiallyWatched = true;

                if (togWatched != null)
                {
                    allWatched = togWatched.Selected;
                }
                if (togUnwatched != null)
                {
                    unwatched = togUnwatched.Selected;
                }
                if (togPartiallyWatched != null)
                {
                    partiallyWatched = togPartiallyWatched.Selected;
                }
                if (togCompleteOnly != null)
                {
                    completeSeries = togCompleteOnly.Selected;
                }

                List <VM_AnimeGroup_User> contracts = VM_ShokoServer.Instance.ShokoServices.GetAnimeGroupsForFilter(
                    gf.GroupFilterID, VM_ShokoServer.Instance.CurrentUser.JMMUserID,
                    false).CastList <VM_AnimeGroup_User>();

                BaseConfig.MyAnimeLog.Write("Total groups for filter = " + contracts.Count);

                HashSet <string> selectedTags = new HashSet <string>(MainWindow.RandomWindow_SeriesTags, StringComparer.InvariantCultureIgnoreCase);
                if (MainWindow.RandomWindow_RandomType == RandomObjectType.Episode)
                {
                    selectedTags = new HashSet <string>(MainWindow.RandomWindow_EpisodeTags, StringComparer.InvariantCultureIgnoreCase);
                }

                foreach (VM_AnimeGroup_User grp in contracts)
                {
                    // ignore sub groups
                    if (grp.AnimeGroupParentID.HasValue)
                    {
                        continue;
                    }

                    foreach (VM_AnimeSeries_User ser in grp.AllSeries)
                    {
                        // tags
                        if (selectedTags.Count > 0)
                        {
                            bool foundTag = false;
                            if (allTags)
                            {
                                foundTag = true;          // all
                            }
                            if (ser.Anime.GetAllTags().Overlaps(selectedTags))
                            {
                                foundTag = true;
                            }
                            if (!foundTag)
                            {
                                continue;
                            }
                        }

                        if (!ser.IsComplete && completeSeries)
                        {
                            continue;
                        }

                        if (allWatched && ser.AllFilesWatched)
                        {
                            serList.Add(ser);
                            continue;
                        }

                        if (unwatched && !ser.AnyFilesWatched)
                        {
                            serList.Add(ser);
                            continue;
                        }


                        if (partiallyWatched && ser.AnyFilesWatched && !ser.AllFilesWatched)
                        {
                            serList.Add(ser);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                BaseConfig.MyAnimeLog.Write(ex.ToString());
            }

            return(serList);
        }
 public static bool EvaluateGroupFilter(VM_GroupFilter gf, VM_AnimeSeries_User ser)
 {
     return(gf.EvaluateGroupFilter(ser));
 }
Exemple #24
0
 public static List <VM_GroupFilter> GetChildGroupFilters(VM_GroupFilter gf)
 {
     return(ShokoServerHelper.GetChildGroupFilters(gf));
 }