From a33833212f040272fc6c97047c8cb335b6f5405a Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Tue, 24 Jul 2012 06:41:19 +0000 Subject: SimpleAR, SimpleStatusMsg, SmileyAdd, SpellChecker: changed folder structure git-svn-id: http://svn.miranda-ng.org/main/trunk@1149 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/SmileyAdd/src/smileys.h | 287 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 plugins/SmileyAdd/src/smileys.h (limited to 'plugins/SmileyAdd/src/smileys.h') diff --git a/plugins/SmileyAdd/src/smileys.h b/plugins/SmileyAdd/src/smileys.h new file mode 100644 index 0000000000..2b127eb225 --- /dev/null +++ b/plugins/SmileyAdd/src/smileys.h @@ -0,0 +1,287 @@ +/* +Miranda SmileyAdd Plugin +Copyright (C) 2005 - 2011 Boris Krasnovskiy +Copyright (C) 2003 - 2004 Rein-Peter de Boer + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation version 2 +of the License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#ifndef SMILEYADD_SMILEYS_H_ +#define SMILEYADD_SMILEYS_H_ + +#include "general.h" +#include "smltool.h" +#include "imagecache.h" + +#define MS_SMILEYADD_CUSTOMCATMENU "SmileyAdd/CustomCatMenu" + +const unsigned HiddenSmiley = 1; +const unsigned RegExSmiley = 2; +const unsigned ServiceSmiley = 4; +const unsigned TextSmiley = 8; +const unsigned SoundSmiley = 16; + +class SmileyType +{ +protected: + unsigned m_flags; + int m_index; + + SIZE m_size; + + HICON m_SmileyIcon; + ImageBase* m_xepimg; + + bkstring m_filepath; + + void SetFlagsBit(unsigned flag, bool set) + { if (set) m_flags |= flag; else m_flags &= ~flag; } + +public: + + bkstring m_TriggerText; + bkstring m_ToolText; + bkstring m_InsertText; + + SmileyType(void); + ~SmileyType(); + + const bkstring& GetTriggerText(void) const { return m_TriggerText; } + const bkstring& GetToolText(void) const { return m_ToolText; } + const bkstring& GetInsertText(void) const { return m_InsertText; } + const bkstring& GetFilePath(void) const { return m_filepath; } + + bool IsHidden(void) const { return (m_flags & HiddenSmiley) != 0; } + bool IsRegEx(void) const { return (m_flags & RegExSmiley) != 0; } + bool IsService(void) const { return (m_flags & ServiceSmiley) != 0; } + bool IsSound(void) const { return (m_flags & SoundSmiley) != 0; } + bool IsText(void) const { return (m_flags & TextSmiley) != 0; } + + bool IsFileFound(void) { return _taccess(m_filepath.c_str(), 0) == 0; } + bool IsValid(void) { return m_size.cx != 0; } + + ImageBase* CreateCachedImage(void); + + void GetSize(SIZE& size); + int GetStaticFrame(void) const { return m_index; } + + HICON GetIcon(void); + HICON GetIconDup(void); + HBITMAP GetBitmap(COLORREF bkgClr, int sizeX, int sizeY); + + void CallSmileyService(HANDLE hContact); + + void SetHidden(bool hid) { SetFlagsBit(HiddenSmiley, hid); } + void SetRegEx(bool regex) { SetFlagsBit(RegExSmiley, regex); } + void SetService(bool service) { SetFlagsBit(ServiceSmiley, service); } + void SetSound(bool sound) { SetFlagsBit(SoundSmiley, sound); } + void SetText(bool text) { SetFlagsBit(TextSmiley, text); } + + void SetImList(HIMAGELIST hImLst, long i); + + bool LoadFromResource(const bkstring& file, const int index); + bool LoadFromImage(IStream* pStream); +}; + + +class SmileyLookup +{ +private: + _TPattern* m_pattern; + + int m_ind; + bkstring m_text; + bool m_valid; + +public: + struct SmileyLocType + { + size_t pos, len; + SmileyLocType(size_t p, size_t l) : pos(p), len(l) {} + SmileyLocType() {} + }; + typedef SMOBJLIST SmileyLocVecType; + + SmileyLookup() { m_ind = 0; m_valid = false; m_pattern = NULL; }; + SmileyLookup(const bkstring& str, const bool regexs, const int ind, const bkstring& smpt); + ~SmileyLookup(); + + void find(const bkstring& str, SmileyLocVecType& smlcur, bool firstOnly) const; + int GetIndex(void) const { return m_ind; } + bool IsValid(void) const { return m_valid; } +}; + + +class SmileyPackType +{ +public: + typedef SMOBJLIST SmileyVectorType; + typedef SMOBJLIST SmileyLookupType; + + POINT selec, win; + +private: + bkstring m_Filename; //used as identification + bkstring m_Name; + bkstring m_Author; + bkstring m_Date; + bkstring m_Version; + bkstring m_ButtonSmiley; + + HIMAGELIST m_hSmList; + + int m_VisibleCount; + + SmileyVectorType m_SmileyList; + SmileyLookupType m_SmileyLookup; + + bool errorFound; + + void InsertLookup(SmileyType& sml, bkstring& lk, bool first); + void AddTriggersToSmileyLookup(void); + void ReplaceAllSpecials(const bkstring& Input, bkstring& Output); + bool LoadSmileyFileMSL(bkstring& tbuf, bool onlyInfo, bkstring& modpath); + bool LoadSmileyFileXEP(bkstring& tbuf, bool onlyInfo, bkstring& modpath); + +public: + SmileyPackType(); + ~SmileyPackType(); + + SmileyVectorType& GetSmileyList(void) { return m_SmileyList; } + SmileyLookupType* GetSmileyLookup(void) { return &m_SmileyLookup; } + + const bkstring& GetFilename(void) const { return m_Filename; } + const bkstring& GetName(void) const { return m_Name; } + const bkstring& GetAuthor(void) const { return m_Author; } + const bkstring& GetDate(void) const { return m_Date; } + const bkstring& GetVersion(void) const { return m_Version; } + + int SmileyCount(void) const { return m_SmileyList.getCount(); } + int VisibleSmileyCount(void) const { return m_VisibleCount; } + + SmileyType* GetSmiley(unsigned index); + + const TCHAR* GetButtonSmiley(void) const { return m_ButtonSmiley.c_str(); } + + bool LoadSmileyFile(const bkstring& filename, bool onlyInfo, bool noerr = false); + + void Clear(void); +}; + + +class SmileyPackListType +{ +public: + typedef SMOBJLIST SmileyPackVectorType; + +private: + SmileyPackVectorType m_SmileyPacks; + +public: + int NumberOfSmileyPacks(void) { return m_SmileyPacks.getCount(); } + + bool AddSmileyPack(bkstring& filename); + void ClearAndFreeAll(void); + SmileyPackType* GetSmileyPack(bkstring& filename); +}; + + +typedef enum +{ + smcNone, + smcStd, + smcProto, + smcCustom, + smcExt +} SmcType; + + +class SmileyCategoryType +{ +private: + bkstring m_Name; + bkstring m_DisplayName; + bkstring m_Filename; //functions as identification + + SmcType type; + + SmileyPackListType* m_pSmileyPackStore; + +public: + SmileyCategoryType() { type = smcNone; m_pSmileyPackStore = NULL; }; + SmileyCategoryType(SmileyPackListType* pSPS, const bkstring& name, + const bkstring& displayName, const bkstring& defaultFilename, SmcType typ); + + const bkstring& GetDisplayName(void) const { return m_DisplayName; } + const bkstring& GetName(void) const { return m_Name; } + const bkstring& GetFilename(void) const { return m_Filename; } + + bool IsCustom(void) { return type == smcCustom; } + bool IsProto(void) { return type == smcProto; } + bool IsExt(void) { return type == smcExt; } + + SmcType GetType(void) { return type; } + + SmileyPackType* GetSmileyPack(void); + + void SetFilename(bkstring& name) { m_Filename = name; } + void SetDisplayName(bkstring& name) { m_DisplayName = name; } + + void ClearFilename(void) { m_Filename.clear(); } + void SaveSettings(void); + + void Load(void); +}; + + +class SmileyCategoryListType +{ +public: + typedef SMOBJLIST SmileyCategoryVectorType; + +private: + SmileyCategoryVectorType m_SmileyCategories; + SmileyPackListType* m_pSmileyPackStore; + +public: + void SetSmileyPackStore(SmileyPackListType* pSPS) { m_pSmileyPackStore = pSPS; } + + SmileyCategoryType* GetSmileyCategory(const bkstring& name); + SmileyCategoryType* GetSmileyCategory(unsigned index); + SmileyPackType* GetSmileyPack(bkstring& name); + SmileyCategoryVectorType* GetSmileyCategoryList(void) { return &m_SmileyCategories; }; + + int NumberOfSmileyCategories(void) { return m_SmileyCategories.getCount(); } + + void AddCategory(const bkstring& name, const bkstring& displayName, SmcType typ, + const bkstring& defaultFilename = bkstring(_T("Smileys\\nova\\default.msl"))); + void AddAndLoad(const bkstring& name, const bkstring& displayName); + void AddAllProtocolsAsCategory(void); + void AddAccountAsCategory(PROTOACCOUNT *acc, const bkstring& defaultFile); + void AddContactTransportAsCategory(HANDLE hContact, const bkstring& defaultFile); + + void ClearAndLoadAll(void); + void ClearAll(void) + { m_pSmileyPackStore->ClearAndFreeAll(); m_SmileyCategories.destroy(); } + + bool DeleteCustomCategory(int index); + void DeleteAccountAsCategory(PROTOACCOUNT *acc); + + void SaveSettings(void); +}; + +extern SmileyPackListType g_SmileyPacks; +extern SmileyCategoryListType g_SmileyCategories; + +#endif //SMILEYADD_SMILEYS_H_ -- cgit v1.2.3