コード例 #1
0
        public JMMServerBinary.Contract_GroupFilter ToContract()
        {
            JMMServerBinary.Contract_GroupFilter contract = new JMMServerBinary.Contract_GroupFilter();
            contract.GroupFilterID   = this.GroupFilterID;
            contract.GroupFilterName = this.FilterName;
            contract.ApplyToSeries   = this.ApplyToSeries;
            contract.BaseCondition   = this.BaseCondition;
            contract.Locked          = null;
            if (isLocked)
            {
                contract.Locked = 1;
            }
            contract.FilterType = this.FilterType;

            contract.FilterConditions = new List <JMMServerBinary.Contract_GroupFilterCondition>();
            foreach (GroupFilterConditionVM gfc in FilterConditions)
            {
                contract.FilterConditions.Add(gfc.ToContract());
            }

            // derive the sorting
            contract.SortingCriteria = "";
            foreach (GroupFilterSortingCriteria gfsc in this.SortCriteriaList)
            {
                if (contract.SortingCriteria.Length > 0)
                {
                    contract.SortingCriteria += "|";
                }
                contract.SortingCriteria += ((int)gfsc.SortType).ToString();
                contract.SortingCriteria += ";";
                contract.SortingCriteria += ((int)gfsc.SortDirection).ToString();
            }

            return(contract);
        }
コード例 #2
0
        public GroupFilterVM(JMMServerBinary.Contract_GroupFilter contract)
        {
            this.SortCriteriaList = new List <GroupFilterSortingCriteria>();
            this.FilterConditions = new List <GroupFilterConditionVM>();

            // read only members
            Populate(contract);
        }
コード例 #3
0
        public void Populate(JMMServerBinary.Contract_GroupFilter contract)
        {
            this.GroupFilterID      = contract.GroupFilterID;
            this.GroupFilterName    = contract.GroupFilterName;
            this.ApplyToSeries      = contract.ApplyToSeries;
            this.BaseCondition      = contract.BaseCondition;
            this.PredefinedCriteria = "";
            this.FilterConditions.Clear();

            GroupCount  = 0;
            SeriesCount = 0;

            if (contract.FilterConditions != null)
            {
                foreach (JMMServerBinary.Contract_GroupFilterCondition gfc_con in contract.FilterConditions)
                {
                    FilterConditions.Add(new GroupFilterConditionVM(gfc_con));
                }
            }
            //SortCriteriaList = new ObservableCollection<GroupFilterSortingCriteria>();
            SortCriteriaList.Clear();

            string sortCriteriaRaw = contract.SortingCriteria;

            if (!string.IsNullOrEmpty(sortCriteriaRaw))
            {
                string[] scrit = sortCriteriaRaw.Split('|');
                foreach (string sortpair in scrit)
                {
                    string[] spair = sortpair.Split(';');
                    if (spair.Length != 2)
                    {
                        continue;
                    }

                    int stype = 0;
                    int sdir  = 0;

                    int.TryParse(spair[0], out stype);
                    int.TryParse(spair[1], out sdir);

                    if (stype > 0 && sdir > 0)
                    {
                        GroupFilterSortingCriteria gfsc = new GroupFilterSortingCriteria();
                        gfsc.GroupFilterID = this.GroupFilterID;
                        gfsc.SortType      = (GroupFilterSorting)stype;
                        gfsc.SortDirection = (GroupFilterSortDirection)sdir;
                        SortCriteriaList.Add(gfsc);
                    }
                }
            }

            //FilterConditions = new List<GroupFilterConditionVM>(FilterConditions.OrderBy(p => p.ConditionTypeString));
        }
コード例 #4
0
 public GroupFilterVM(JMMServerBinary.Contract_GroupFilter contract)
 {
     this.SortCriteriaList = new ObservableCollection <GroupFilterSortingCriteria>();
     this.FilterConditions = new ObservableCollection <GroupFilterConditionVM>();
     // read only members
     Populate(contract);
     FilterConditions.CollectionChanged += (a, b) =>
     {
         CollectionChanged = true;
     };
     SortCriteriaList.CollectionChanged += (a, b) =>
     {
         CollectionChanged = true;
     };
 }
コード例 #5
0
        public void Populate(JMMServerBinary.Contract_GroupFilter contract)
        {
            this.GroupFilterID       = contract.GroupFilterID;
            this.FilterName          = contract.GroupFilterName;
            this.ApplyToSeries       = contract.ApplyToSeries;
            this.BaseCondition       = contract.BaseCondition;
            this.isLocked            = contract.Locked.HasValue && contract.Locked == 1;
            this.FilterType          = contract.FilterType;
            this.PredefinedCriteria  = "";
            this.InvisibleInClients  = contract.InvisibleInClients;
            this.GroupFilterParentId = contract.ParentGroupFilterID;
            this.Groups        = contract.Groups.ToDictionary(a => a.Key, a => new HashSet <int>(a.Value));
            this.Series        = contract.Series.ToDictionary(a => a.Key, a => new HashSet <int>(a.Value));
            this.Childs        = new HashSet <int>(contract.Childs);
            this.AllowDeletion = true;
            this.AllowEditing  = true;
            if (this.isLocked)
            {
                this.AllowDeletion = false;
                this.AllowEditing  = false;
            }
            if (this.FilterType == (int)GroupFilterType.ContinueWatching)
            {
                this.AllowDeletion = false;
            }

            this.IsSystemGroupFilter    = false;
            this.IsNotSystemGroupFilter = true;

            //this.FilterConditions = new ObservableCollection<GroupFilterConditionVM>();
            this.FilterConditions.Clear();

            if (contract.FilterConditions != null)
            {
                foreach (JMMServerBinary.Contract_GroupFilterCondition gfc_con in contract.FilterConditions)
                {
                    FilterConditions.Add(new GroupFilterConditionVM(gfc_con));
                }
            }
            //SortCriteriaList = new ObservableCollection<GroupFilterSortingCriteria>();
            SortCriteriaList.Clear();

            string sortCriteriaRaw = contract.SortingCriteria;

            if (!string.IsNullOrEmpty(sortCriteriaRaw))
            {
                string[] scrit = sortCriteriaRaw.Split('|');
                foreach (string sortpair in scrit)
                {
                    string[] spair = sortpair.Split(';');
                    if (spair.Length != 2)
                    {
                        continue;
                    }

                    int stype = 0;
                    int sdir  = 0;

                    int.TryParse(spair[0], out stype);
                    int.TryParse(spair[1], out sdir);

                    if (stype > 0 && sdir > 0)
                    {
                        GroupFilterSortingCriteria gfsc = new GroupFilterSortingCriteria();
                        gfsc.GroupFilterID = this.GroupFilterID;
                        gfsc.SortType      = (GroupFilterSorting)stype;
                        gfsc.SortDirection = (GroupFilterSortDirection)sdir;
                        SortCriteriaList.Add(gfsc);
                    }
                }
            }
            //Update GroupCount

            //SortCriteriaList = new ObservableCollection<GroupFilterSortingCriteria>(SortCriteriaList.OrderBy(p => p.GroupFilterSortingString));
            //FilterConditions = new ObservableCollection<GroupFilterConditionVM>(FilterConditions.OrderBy(p => p.ConditionTypeString));
        }