Пример #1
0
        public override EmoticonCollection GetEmoticons(int userID, int GroupID, int pageSize, int pageNumber, bool isDesc, out int totalCount)
        {
            totalCount = 0;
            using (SqlQuery query = new SqlQuery())
            {
                query.Pager.TableName   = "bx_Emoticons";
                query.Pager.PageNumber  = pageNumber;
                query.Pager.PageSize    = pageSize;
                query.Pager.PrimaryKey  = "EmoticonID";
                query.Pager.SelectCount = true;
                query.Pager.SortField   = "SortOrder";
                query.Pager.IsDesc      = isDesc;
                query.Pager.Condition   = " GroupID = @GroupID AND EXISTS( SELECT * FROM bx_EmoticonGroups WHERE GroupID = @GroupID AND UserID = @UserID)";
                query.CreateParameter <int>("@GroupID", GroupID, SqlDbType.Int);
                query.CreateParameter <int>("@UserID", userID, SqlDbType.Int);

                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    EmoticonCollection emoticons = new EmoticonCollection(reader);

                    if (reader.NextResult())
                    {
                        if (reader.Read())
                        {
                            emoticons.TotalRecords = reader.Get <int>(0);
                        }
                    }
                    totalCount = emoticons.TotalRecords;

                    return(emoticons);
                }
            }
        }
Пример #2
0
        public override EmoticonCollection AdminGetUserEmoticons(int userID, int pageSize, int pageIndex)
        {
            using (SqlQuery query = new SqlQuery())
            {
                query.Pager.TableName = "bx_Emoticons";
                query.Pager.Condition = " GroupID IN (SELECT GroupID FROM bx_EmoticonGroups WHERE UserID = @UserID)";


                query.CreateParameter <int>("@UserID", userID, SqlDbType.Int);
                query.Pager.PageSize    = pageSize;
                query.Pager.PageNumber  = pageIndex;
                query.Pager.SortField   = "SortOrder";
                query.Pager.PrimaryKey  = "EmoticonID";
                query.Pager.SelectCount = true;
                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    EmoticonCollection Emoticons = new EmoticonCollection(reader);
                    if (reader.NextResult())
                    {
                        if (reader.Read())
                        {
                            Emoticons.TotalRecords = reader.Get <int>(0);
                        }
                    }

                    return(Emoticons);
                }
            }
        }
Пример #3
0
        /// <summary>
        /// 批量添加
        /// </summary>
        /// <param name="emoticons"></param>
        public override void CreateEmoticons(EmoticonCollection emoticons)
        {
            if (emoticons.Count == 0)
            {
                return;
            }
            using (SqlQuery query = new SqlQuery())
            {
                int           i      = 0;
                StringBuilder buider = new StringBuilder();
                foreach (Emoticon emote in emoticons)
                {
                    buider.AppendFormat("INSERT INTO bx_Emoticons( GroupID, UserID, Shortcut, ImageSrc, FileSize, MD5, SortOrder) VALUES( @GroupID{0}, @UserID{0}, @Shortcut{0}, @ImageSrc{0}, @FileSize{0}, @MD5{0}, @SortOrder{0});", i);
                    query.CreateParameter <int>(string.Format("@GroupID{0}", i), emote.GroupID, SqlDbType.Int);
                    query.CreateParameter <int>(string.Format("@UserID{0}", i), emote.UserID, SqlDbType.Int);
                    query.CreateParameter <string>(string.Format("@Shortcut{0}", i), emote.Shortcut, SqlDbType.NVarChar, 100);
                    query.CreateParameter <string>(string.Format("@ImageSrc{0}", i), emote.ImageSrc, SqlDbType.NVarChar, 255);
                    query.CreateParameter <int>(string.Format("@FileSize{0}", i), emote.FileSize, SqlDbType.Int);
                    query.CreateParameter <string>(string.Format("@MD5{0}", i), emote.MD5, SqlDbType.VarChar, 50);
                    query.CreateParameter <int>(string.Format("@SortOrder{0}", i), emote.SortOrder, SqlDbType.Int);
                    i++;
                }

                query.CommandText = buider.ToString();
                query.ExecuteNonQuery();
            }
        }
Пример #4
0
        public Emoticon GetEmoticon(int userID, int emoticonID)
        {
            int[] emoticonIdentities     = new int[] { emoticonID };
            EmoticonCollection emoticons = GetEmoticons(userID, emoticonIdentities);

            if (emoticons == null || emoticons.Count < 1)
            {
                return(null);
            }
            else
            {
                return(emoticons[0]);
            }
        }
Пример #5
0
        public byte[] PackCFC(int userID, int groupID)
        {
            if (!CanExport(userID))
            {
                ThrowError(new NoPermissonExportEmoticonError());
                return(null);
            }

            EmoticonCollection emoticons = GetEmoticons(userID, groupID);

            if (emoticons.Count == 0)
            {
                return(null);
            }
            return(CFCBuilder.BuildCFCFileFromBytes(emoticons));
        }
Пример #6
0
        ///// <summary>
        ///// ��һ��Ŀ¼����һ��CFC�ļ�����
        ///// </summary>
        ///// <param name="directory">Ŀ¼</param>
        ///// <param name="path">����CFC��·��(�����ļ���)</param>
        //public static void BuildCFCFileFromDirectory(string directory,string path)
        //{
        //    List<byte> bytes = new List<byte>();
        //    foreach (string file in Directory.GetFiles(directory))
        //    {
        //        if (!IsImageFile(file))
        //            continue;

        //        bytes.AddRange(Strcut_CFCBlock.FromImage(file).ToBytes());
        //    }
        //    FileStream fs = File.Create(path);
        //    fs.Write(bytes.ToArray(), 0, bytes.Count);
        //    fs.Close();
        //}

        /// <summary>
        /// ����һ��CFC�ļ�����
        /// </summary>
        /// <param name="emoticons"></param>
        /// <returns></returns>
        public static byte[] BuildCFCFileFromBytes(EmoticonCollection emoticons)
        {
            List <byte> bytes = new List <byte>();

            foreach (Emoticon emoticon in emoticons)
            {
                string path = IOUtil.ResolvePath(emoticon.ImageSrc);
                if (!FileHelper.IsPictureFile(path))
                {
                    continue;
                }
                Strcut_CFCBlock block = Strcut_CFCBlock.FromImage(emoticon);
                if (block != null)
                {
                    bytes.AddRange(block.ToBytes());
                }
            }
            return(bytes.ToArray());
        }
Пример #7
0
        public byte[] PackCFC(int userID, IEnumerable <int> emoticonIdentities)
        {
            if (!CanExport(userID))
            {
                ThrowError(new NoPermissonExportEmoticonError());
                return(null);
            }

            if (!ValidateUtil.HasItems <int>(emoticonIdentities))
            {
                return(null);
            }

            EmoticonCollection emoticons = GetEmoticons(userID, emoticonIdentities);

            if (emoticons.Count == 0)
            {
                return(null);
            }

            return(CFCBuilder.BuildCFCFileFromBytes(emoticons));
        }
Пример #8
0
        /// <summary>
        /// 创建许多表情
        /// </summary>
        /// <param name="emoticon"></param>
        /// <returns></returns>
        public void CreateEmoticons(int userID, EmoticonCollection emoticons)
        {
            if (!CanUseEmoticon(userID))
            {
                ThrowError(new NoPermissionUseEmoticonError());
                return;
            }

            List <int> removedCackes = new List <int>();

            foreach (Emoticon emote in emoticons)
            {
                if (!removedCackes.Contains(emote.GroupID))
                {
                    CacheUtil.RemoveBySearch(string.Format(cacheKey_EmoticonPagedRoot, emote.GroupID));
                    removedCackes.Add(emote.GroupID);
                }
                emote.UserID = userID;
            }

            CacheUtil.Remove(string.Format(cacheKey_EmoticonUserGroups, userID));

            EmoticonDao.Instance.CreateEmoticons(emoticons);
        }
Пример #9
0
 public override EmoticonGroup CreateGroup(int userID, string groupName, EmoticonCollection emotions)
 {
     throw new NotImplementedException();
 }
Пример #10
0
 public RichTextBox()
 {
     Emoticons = new EmoticonCollection();
 }
Пример #11
0
 public abstract void CreateEmoticons(EmoticonCollection emoticons);
Пример #12
0
        public override EmoticonCollection GetEmoticons(int userID, int GroupID, int pageSize, int pageNumber, bool isDesc, out int totalCount)
        {
            totalCount = 0;
            using (SqlQuery query = new SqlQuery())
            {
                query.Pager.TableName = "bx_Emoticons";
                query.Pager.PageNumber = pageNumber;
                query.Pager.PageSize = pageSize;
                query.Pager.PrimaryKey = "EmoticonID";
                query.Pager.SelectCount = true;
                query.Pager.SortField = "SortOrder";
                query.Pager.IsDesc = isDesc;
                query.Pager.Condition = " GroupID = @GroupID AND EXISTS( SELECT * FROM bx_EmoticonGroups WHERE GroupID = @GroupID AND UserID = @UserID)";
                query.CreateParameter<int>("@GroupID", GroupID, SqlDbType.Int);
                query.CreateParameter<int>("@UserID", userID, SqlDbType.Int);

                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    EmoticonCollection emoticons = new EmoticonCollection(reader);

                    if (reader.NextResult())
                    {
                        if (reader.Read())
                            emoticons.TotalRecords = reader.Get<int>(0);
                    }
                    totalCount = emoticons.TotalRecords;

                    return emoticons;
                }
            }
        }
Пример #13
0
 public override EmoticonGroup CreateGroup(int userID, string groupName, EmoticonCollection emotions)
 {
     throw new NotImplementedException();
 }
Пример #14
0
        public override EmoticonCollection AdminGetUserEmoticons(int userID, int pageSize, int pageIndex)
        {
            using (SqlQuery query = new SqlQuery())
            {
                query.Pager.TableName = "bx_Emoticons";
                query.Pager.Condition = " GroupID IN (SELECT GroupID FROM bx_EmoticonGroups WHERE UserID = @UserID)";


                query.CreateParameter<int>("@UserID", userID, SqlDbType.Int);
                query.Pager.PageSize = pageSize;
                query.Pager.PageNumber = pageIndex;
                query.Pager.SortField = "SortOrder";
                query.Pager.PrimaryKey = "EmoticonID";
                query.Pager.SelectCount = true;
                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    EmoticonCollection Emoticons = new EmoticonCollection(reader);
                    if (reader.NextResult())
                        if (reader.Read())
                            Emoticons.TotalRecords = reader.Get<int>(0);

                    return Emoticons;
                }
            }
        }
Пример #15
0
        public void GroupImportEmoticon(int userID, Dictionary <string, List <EmoticonItem> > groupedEmoticonDatas
                                        , out int groupCount, out int fileCount, out int saveGroupcount, out int saveFileCount)
        {
            bool stopSaveFile = false;
            long maxEmotcionSize;                                                    //单个文件最大限制
            long canUseSpcaeSize;                                                    //总可用空间大小
            int  canUploadEmoticonCount;                                             //总可用表情数量
            int  usedEmoticonCount;
            long usedspaceSize = GetUserEmoticonStat(userID, out usedEmoticonCount); //已用空间大小

            canUseSpcaeSize        = MaxEmoticonSpace(userID);                       //取得最大可用空间
            canUploadEmoticonCount = MaxEmoticonCount(userID);                       //取得最大表情数
            maxEmotcionSize        = MaxEmticonFileSize(userID);                     //获取单个表情的最大限制

            int currentFileSizes = 0;


            string imgUrl;

            groupCount     = 0;
            saveGroupcount = 0;
            fileCount      = 0;
            saveFileCount  = 0;

            Dictionary <string, EmoticonCollection> groupedEmoticons = new Dictionary <string, EmoticonCollection>();

            foreach (KeyValuePair <string, List <EmoticonItem> > groups in groupedEmoticonDatas)
            {
                groupCount++;
                EmoticonCollection emoticons = new EmoticonCollection();
                bool hasFileSaved            = false;

                foreach (EmoticonItem item in groups.Value)
                {
                    fileCount++;
                    if (usedspaceSize + currentFileSizes + item.Size > canUseSpcaeSize)
                    {
                        if (!stopSaveFile)
                        {
                            ThrowError(new EmoticonSpaceOverflow(canUseSpcaeSize));
                            stopSaveFile = true;
                        }
                        break;
                    }

                    if (saveFileCount + usedEmoticonCount >= canUploadEmoticonCount)
                    {
                        if (!stopSaveFile)
                        {
                            ThrowError(new EmoticonFileCountOverflow(canUploadEmoticonCount));
                            stopSaveFile = true;
                        }
                        break;
                    }


                    switch (SaveEmoticonFile(userID, item.Data, item.MD5, item.FileName, out imgUrl))
                    {
                    case EmoticonSaveStatus.Success:
                        Emoticon emote = new Emoticon();
                        emote.ImageSrc = imgUrl;
                        emote.MD5      = item.MD5;
                        emote.Shortcut = item.Shortcut;
                        emote.FileSize = item.Data.Length;
                        emoticons.Add(emote);

                        hasFileSaved = true;
                        saveFileCount++;
                        currentFileSizes += item.Size;
                        break;
                    }
                }

                if (hasFileSaved)
                {
                    groupedEmoticons.Add(groups.Key, emoticons);
                }

                //if (stopSaveFile)
                //    break;
            }

            if (groupCount > 0 && saveFileCount > 0)
            {
                CreateEmoticonsAndGroups(userID, groupedEmoticons);
                saveGroupcount = groupedEmoticons.Count;
                CacheUtil.RemoveBySearch(string.Format(cacheKey_ByGroupRoot, userID));
            }
        }
Пример #16
0
        /// <summary>
        /// 不分组导入
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="groupID"></param>
        /// <param name="emotes"></param>
        /// <param name="fileCount"></param>
        /// <param name="saveCount"></param>
        public void BatchImportEmoticon(int userID, int groupID, Dictionary <string, List <EmoticonItem> > emotes, out int fileCount, out int saveCount)
        {
            long maxEmotcionSize;                                                    //单个文件最大限制
            long canUseSpcaeSize;                                                    //总可用空间大小
            int  canUploadEmoticonCount;                                             //总可用表情数量
            int  usedEmoticonCount;
            long usedspaceSize = GetUserEmoticonStat(userID, out usedEmoticonCount); //已用空间大小

            canUseSpcaeSize        = MaxEmoticonSpace(userID);                       //取得最大可用空间
            canUploadEmoticonCount = MaxEmoticonCount(userID);                       //取得最大表情数
            maxEmotcionSize        = MaxEmticonFileSize(userID);                     //获取单个表情的最大限制

            int currentFileSizes = 0;

            EmoticonGroup currentGroup = GetEmoticonGroup(userID, groupID);

            saveCount = 0; fileCount = 0;
            EmoticonCollection emoticons = new EmoticonCollection();
            Emoticon           tempEmote;
            string             imgUrl;

            if (emotes.Count > 0)
            {
                bool stopSaveFile = false;
                foreach (KeyValuePair <string, List <EmoticonItem> > group in emotes)
                {
                    foreach (EmoticonItem item in group.Value)
                    {
                        fileCount++;


                        if (usedspaceSize + currentFileSizes + item.Size > canUseSpcaeSize)
                        {
                            if (!stopSaveFile)
                            {
                                ThrowError(new EmoticonSpaceOverflow(canUseSpcaeSize));
                                stopSaveFile = true;
                            }
                            break;
                        }

                        if (saveCount + usedEmoticonCount >= canUploadEmoticonCount)
                        {
                            if (!stopSaveFile)
                            {
                                ThrowError(new EmoticonFileCountOverflow(canUploadEmoticonCount));
                                stopSaveFile = true;
                            }
                            break;
                        }



                        switch (SaveEmoticonFile(userID, item.Data, item.MD5, item.FileName, out imgUrl))
                        {
                        case EmoticonSaveStatus.Success:
                            tempEmote          = new Emoticon();
                            tempEmote.UserID   = userID;
                            tempEmote.GroupID  = groupID;
                            tempEmote.FileSize = item.Size;
                            tempEmote.Shortcut = item.Shortcut;
                            tempEmote.MD5      = item.MD5;
                            tempEmote.ImageSrc = imgUrl;
                            emoticons.Add(tempEmote);

                            currentFileSizes += item.Size;
                            saveCount++;
                            break;
                        }
                    }

                    //if (stopSaveFile)
                    //    break;
                }

                if (emoticons.Count > 0)
                {
                    CreateEmoticons(userID, emoticons);
                    currentGroup.TotalSizes     += currentFileSizes;
                    currentGroup.TotalEmoticons += saveCount;
                    RemoveCacheByGroup(userID, groupID);
                }
            }
        }
Пример #17
0
        public SmileControl()
        {
            InitializeComponent();

            Emoticons = new EmoticonCollection
            {
                new EmoticonMapper
                {
                    Text = ":happy-1:",
                    Icon = GetImageSource("pack://application:,,,/InstaSoft;component/Images/Smiles/happy-1.png")
                },

                new EmoticonMapper
                {
                    Text = ":angry-1:",
                    Icon = GetImageSource("pack://application:,,,/InstaSoft;component/Images/Smiles/angry-1.png")
                },

                new EmoticonMapper
                {
                    Text = ":angry:",
                    Icon = GetImageSource("pack://application:,,,/InstaSoft;component/Images/Smiles/angry.png")
                },

                new EmoticonMapper
                {
                    Text = ":bored-1:",
                    Icon = GetImageSource("pack://application:,,,/InstaSoft;component/Images/Smiles/bored-1.png")
                },

                new EmoticonMapper
                {
                    Text = ":bored-2:",
                    Icon = GetImageSource("pack://application:,,,/InstaSoft;component/Images/Smiles/bored-2.png")
                },

                new EmoticonMapper
                {
                    Text = ":bored:",
                    Icon = GetImageSource("pack://application:,,,/InstaSoft;component/Images/Smiles/bored.png")
                },

                new EmoticonMapper
                {
                    Text = ":confused-1:",
                    Icon = GetImageSource("pack://application:,,,/InstaSoft;component/Images/Smiles/confused-1.png")
                },

                new EmoticonMapper
                {
                    Text = ":confused:",
                    Icon = GetImageSource("pack://application:,,,/InstaSoft;component/Images/Smiles/confused.png")
                },

                new EmoticonMapper
                {
                    Text = ":crying-1:",
                    Icon = GetImageSource("pack://application:,,,/InstaSoft;component/Images/Smiles/crying-1.png")
                },

                new EmoticonMapper
                {
                    Text = ":crying:",
                    Icon = GetImageSource("pack://application:,,,/InstaSoft;component/Images/Smiles/crying.png")
                }
            };

            DataContext = this;
        }
Пример #18
0
        /// <summary>
        /// 批量添加
        /// </summary>
        /// <param name="emoticons"></param>
        public override void CreateEmoticons(EmoticonCollection emoticons)
        {
            if (emoticons.Count == 0)
                return;
            using (SqlQuery query = new SqlQuery())
            {
                int i = 0;
                StringBuilder buider = new StringBuilder();
                foreach (Emoticon emote in emoticons)
                {
                    buider.AppendFormat("INSERT INTO bx_Emoticons( GroupID, UserID, Shortcut, ImageSrc, FileSize, MD5, SortOrder) VALUES( @GroupID{0}, @UserID{0}, @Shortcut{0}, @ImageSrc{0}, @FileSize{0}, @MD5{0}, @SortOrder{0});", i);
                    query.CreateParameter<int>(string.Format("@GroupID{0}", i), emote.GroupID, SqlDbType.Int);
                    query.CreateParameter<int>(string.Format("@UserID{0}", i), emote.UserID, SqlDbType.Int);
                    query.CreateParameter<string>(string.Format("@Shortcut{0}", i), emote.Shortcut, SqlDbType.NVarChar, 100);
                    query.CreateParameter<string>(string.Format("@ImageSrc{0}", i), emote.ImageSrc, SqlDbType.NVarChar, 255);
                    query.CreateParameter<int>(string.Format("@FileSize{0}", i), emote.FileSize, SqlDbType.Int);
                    query.CreateParameter<string>(string.Format("@MD5{0}", i), emote.MD5, SqlDbType.VarChar, 50);
                    query.CreateParameter<int>(string.Format("@SortOrder{0}", i), emote.SortOrder, SqlDbType.Int);
                    i++;
                }

                query.CommandText = buider.ToString();
                query.ExecuteNonQuery();
            }
        }
Пример #19
0
        ///// <summary>
        ///// ��һ��Ŀ¼����һ��CFC�ļ�����
        ///// </summary>
        ///// <param name="directory">Ŀ¼</param>
        ///// <param name="path">����CFC��·��(�����ļ���)</param>
        //public static void BuildCFCFileFromDirectory(string directory,string path)
        //{
        //    List<byte> bytes = new List<byte>();
        //    foreach (string file in Directory.GetFiles(directory))
        //    {
        //        if (!IsImageFile(file))
        //            continue;

        //        bytes.AddRange(Strcut_CFCBlock.FromImage(file).ToBytes());
        //    }
        //    FileStream fs = File.Create(path);
        //    fs.Write(bytes.ToArray(), 0, bytes.Count);
        //    fs.Close();
        //}

        /// <summary>
        /// ����һ��CFC�ļ�����
        /// </summary>
        /// <param name="emoticons"></param>
        /// <returns></returns>
        public static byte[] BuildCFCFileFromBytes(EmoticonCollection emoticons)
        {
            List<byte> bytes = new List<byte>();

            foreach (Emoticon emoticon in emoticons)
            {
                string path = IOUtil.ResolvePath(emoticon.ImageSrc);
                if (!FileHelper.IsPictureFile(path))
                    continue;
                Strcut_CFCBlock block = Strcut_CFCBlock.FromImage(emoticon);
                if (block != null)
                    bytes.AddRange(block.ToBytes());
            }
            return bytes.ToArray();
        }
Пример #20
0
 public abstract EmoticonGroup CreateGroup(int userID, string groupName, EmoticonCollection emotions);