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); } } }
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); } } }
/// <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(); } }
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]); } }
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)); }
///// <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()); }
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)); }
/// <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); }
public override EmoticonGroup CreateGroup(int userID, string groupName, EmoticonCollection emotions) { throw new NotImplementedException(); }
public RichTextBox() { Emoticons = new EmoticonCollection(); }
public abstract void CreateEmoticons(EmoticonCollection emoticons);
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; } } }
public override EmoticonGroup CreateGroup(int userID, string groupName, EmoticonCollection emotions) { throw new NotImplementedException(); }
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; } } }
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)); } }
/// <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); } } }
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; }
/// <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(); } }
///// <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(); }
public abstract EmoticonGroup CreateGroup(int userID, string groupName, EmoticonCollection emotions);