public void SaveGroupSetting()
        {
            MessageDisplay msgdisplay = CreateMessageDisplay("sortorder","groupname");

            DefaultEmoticonGroupCollection tempGroups = new DefaultEmoticonGroupCollection();
            foreach (DefaultEmoticonGroup group in EmotGroupList)
            {
                DefaultEmoticonGroup tempgroup = new DefaultEmoticonGroup();
                tempgroup.SortOrder     = _Request.Get<int>("sortorder." + group.GroupID, Method.Post, 0);
                tempgroup.DirectoryName = group.DirectoryName;
                tempgroup.GroupName     = _Request.Get("groupname." + group.GroupID, Method.Post);
                tempgroup.Disabled      = !_Request.Get<bool>("enable." + group.GroupID, Method.Post, false);
                tempGroups.Add(tempgroup);
            }

            for (int i = 0; i < tempGroups.Count;i++)
            {
                if (string.IsNullOrEmpty(tempGroups[i].GroupName))
                {
                    msgdisplay.AddError("groupname", i ,"分组名称不能为空");
                }
                else
                {
                    for (int j = 0; j < tempGroups.Count; j++)
                    {
                        if (i == j)
                            continue;
                        if (tempGroups[i].GroupName == tempGroups[j].GroupName)
                        {
                            msgdisplay.AddError("groupname", i, "分组名称重复, 请检查第" + (j+1) + "行");
                            msgdisplay.AddError("groupname", j, "分组名称重复, 请检查第" + (i+1) + "行");
                        }
                    }
                }
            }

            if (!msgdisplay.HasAnyError())
            {
                foreach (DefaultEmoticonGroup group in EmotGroupList)
                {
                    foreach (DefaultEmoticonGroup tempgroup in tempGroups)
                    {
                        if (group.DirectoryName == tempgroup.DirectoryName)
                        {
                            group.GroupName = tempgroup.GroupName;
                            group.SortOrder = tempgroup.SortOrder;
                            group.Disabled  = tempgroup.Disabled;
                        }
                    }
                }

                SettingManager.SaveSettings(AllSettings.Current.DefaultEmotSettings);
            }
            else
            {
                msgdisplay.AddError(new DataNoSaveError());
            }

            SettingManager.SaveSettings(AllSettings.Current.SiteSettings);
        }
예제 #2
0
 public DefaultEmotSettings()
 {
     FaceDirectory = Globals.GetPath(SystemDirecotry.Assets_Face);
     if (!Directory.Exists(FaceDirectory))
         Directory.CreateDirectory(FaceDirectory);
     m_groups = new DefaultEmoticonGroupCollection();
     init();
 }
        public void SaveGroupSetting()
        {
            MessageDisplay msgdisplay = CreateMessageDisplay("sortorder", "groupname");

            DefaultEmoticonGroupCollection tempGroups = new DefaultEmoticonGroupCollection();

            foreach (DefaultEmoticonGroup group in EmotGroupList)
            {
                DefaultEmoticonGroup tempgroup = new DefaultEmoticonGroup();
                tempgroup.SortOrder     = _Request.Get <int>("sortorder." + group.GroupID, Method.Post, 0);
                tempgroup.DirectoryName = group.DirectoryName;
                tempgroup.GroupName     = _Request.Get("groupname." + group.GroupID, Method.Post);
                tempgroup.Disabled      = !_Request.Get <bool>("enable." + group.GroupID, Method.Post, false);
                tempGroups.Add(tempgroup);
            }

            for (int i = 0; i < tempGroups.Count; i++)
            {
                if (string.IsNullOrEmpty(tempGroups[i].GroupName))
                {
                    msgdisplay.AddError("groupname", i, "分组名称不能为空");
                }
                else
                {
                    for (int j = 0; j < tempGroups.Count; j++)
                    {
                        if (i == j)
                        {
                            continue;
                        }
                        if (tempGroups[i].GroupName == tempGroups[j].GroupName)
                        {
                            msgdisplay.AddError("groupname", i, "分组名称重复, 请检查第" + (j + 1) + "行");
                            msgdisplay.AddError("groupname", j, "分组名称重复, 请检查第" + (i + 1) + "行");
                        }
                    }
                }
            }

            if (!msgdisplay.HasAnyError())
            {
                foreach (DefaultEmoticonGroup group in EmotGroupList)
                {
                    foreach (DefaultEmoticonGroup tempgroup in tempGroups)
                    {
                        if (group.DirectoryName == tempgroup.DirectoryName)
                        {
                            group.GroupName = tempgroup.GroupName;
                            group.SortOrder = tempgroup.SortOrder;
                            group.Disabled  = tempgroup.Disabled;
                        }
                    }
                }

                SettingManager.SaveSettings(AllSettings.Current.DefaultEmotSettings);
            }
            else
            {
                msgdisplay.AddError(new DataNoSaveError());
            }

            SettingManager.SaveSettings(AllSettings.Current.SiteSettings);
        }
예제 #4
0
        public override void SetPropertyValue(System.Reflection.PropertyInfo property, string value, bool isParse)
        {
            if (property.PropertyType == typeof(DefaultEmoticonGroupCollection))
            {
                DefaultEmoticonGroupCollection groups = new DefaultEmoticonGroupCollection();
                groups.SetValue(value);

                this.UniteEmotGroup(groups, true);
            }
        }
예제 #5
0
        /// <summary>
        /// 合并表情分组
        /// </summary>
        /// <param name="groups">新分组</param>
        /// <param name="useOriginal">以原有分组为准 (如果是文件变动引起的合并, 必须以新的为准)</param>
        private void UniteEmotGroup(DefaultEmoticonGroupCollection groups, bool useOriginal)
        {
            if (groups != null)
            {
                List<int> notExistGroups = new List<int>();
                bool isExist = false; ;
                int i=0;

                //数据库里的和实际文件夹下的表情合并
                foreach (DefaultEmoticonGroup tempGroup in groups)
                {
                   
                    isExist = false;
                    foreach (DefaultEmoticonGroup eg in this.m_groups)
                    {
                        if (eg.DirectoryName == tempGroup.DirectoryName)
                        {
                            if (useOriginal)
                            {
                                eg.GroupName    = tempGroup.GroupName;
                                eg.SortOrder    = tempGroup.SortOrder;
                                eg.Disabled     = tempGroup.Disabled;
                                eg.UniteEmotincos(tempGroup.Emoticons);

                            }
                            else
                            {
                                tempGroup.Disabled  = eg.Disabled;
                                tempGroup.GroupName = eg.GroupName;
                                tempGroup.SortOrder =eg.SortOrder;
                                tempGroup.UniteEmotincos(eg.Emoticons);
                            }
                            isExist = true;
                            break;
                        }

                        if (!useOriginal)
                            eg.Dispose();
                    }
                    if(useOriginal)
                        tempGroup.Dispose();


                    if (!isExist)
                    {
                        notExistGroups.Add(i);
                    }
                    i++;
                }

                if (!useOriginal)
                {
                    DefaultEmoticonGroupCollection tempEmotGroup = new DefaultEmoticonGroupCollection();

                    foreach (DefaultEmoticonGroup egroup in groups)
                    {
                        tempEmotGroup.Add(egroup);
                    }

                    m_groups = tempEmotGroup;
                }
                else
                {
                    
                }
            }
        }
예제 #6
0
        private void init(string excludePath)
        {
            DefaultEmoticonGroupCollection tempGroups = new DefaultEmoticonGroupCollection();

            DirectoryInfo faceRoot = new DirectoryInfo(FaceDirectory);

            tempGroups.Add(new DefaultEmoticonGroup(string.Empty));

            foreach (DirectoryInfo dir in faceRoot.GetDirectories())
            {
                if (!string.IsNullOrEmpty(excludePath) && dir.Name.Equals(excludePath, StringComparison.OrdinalIgnoreCase)) continue;
                    tempGroups.Add(new DefaultEmoticonGroup(dir.Name));
            }

            foreach (DefaultEmoticonGroup group in m_groups)
            {
                if (group.IsWatching)
                    group.EndWach();
            }

            UniteEmotGroup(tempGroups, false);

            //sortedGroups = null;

            if (isInited == false)
            {
                for (int i = 0; i < m_groups.Count; i++)
                {
                    m_groups[i].SortOrder = (i+1) * 10;
                }
            }


            //开始文件监控
            foreach (DefaultEmoticonGroup group in m_groups)
            {
                if (!group.IsWatching)
                {
                    group.BeginWach();
                }
            }

            BeginWach();
            isInited = true;
        }