diff options
author | Vadim Dashevskiy <watcherhd@gmail.com> | 2012-05-18 10:50:20 +0000 |
---|---|---|
committer | Vadim Dashevskiy <watcherhd@gmail.com> | 2012-05-18 10:50:20 +0000 |
commit | a85e238092f480e9de278ae507af710633fa2824 (patch) | |
tree | 6736cf3074c5e4e7da309e932074de041bc1ba96 /protocols/AimOscar | |
parent | c58de69f2936e24d2fa13eb415de963a4d7ca71f (diff) |
moving API to ExternalAPI folder
git-svn-id: http://svn.miranda-ng.org/main/trunk@34 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/AimOscar')
-rw-r--r-- | protocols/AimOscar/aim_10.vcxproj | 8 | ||||
-rw-r--r-- | protocols/AimOscar/m_assocmgr.h | 301 | ||||
-rw-r--r-- | protocols/AimOscar/m_extraicons.h | 158 | ||||
-rw-r--r-- | protocols/AimOscar/m_folders.h | 282 |
4 files changed, 4 insertions, 745 deletions
diff --git a/protocols/AimOscar/aim_10.vcxproj b/protocols/AimOscar/aim_10.vcxproj index d817553d1a..821d0d0cca 100644 --- a/protocols/AimOscar/aim_10.vcxproj +++ b/protocols/AimOscar/aim_10.vcxproj @@ -106,7 +106,7 @@ </Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../../include;../../plugins/ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;AIM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -143,7 +143,7 @@ </Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../../include;../../plugins/ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;AIM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -184,7 +184,7 @@ <IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<WholeProgramOptimization>true</WholeProgramOptimization>
- <AdditionalIncludeDirectories>../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../../include;../../plugins/ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;AIM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>false</ExceptionHandling>
@@ -230,7 +230,7 @@ <IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<WholeProgramOptimization>true</WholeProgramOptimization>
- <AdditionalIncludeDirectories>../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../../include;../../plugins/ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;AIM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>false</ExceptionHandling>
diff --git a/protocols/AimOscar/m_assocmgr.h b/protocols/AimOscar/m_assocmgr.h deleted file mode 100644 index 4e15168643..0000000000 --- a/protocols/AimOscar/m_assocmgr.h +++ /dev/null @@ -1,301 +0,0 @@ -/*
-
-'File Association Manager'-Plugin for
-Miranda IM: the free IM client for Microsoft* Windows*
-
-Copyright (C) 2005-2007 H. Herkenrath
-
-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; either version 2
-of the License, or (at your option) any later version.
-
-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 (AssocMgr-License.txt); if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#ifndef M_ASSOCMGR_H__
-#define M_ASSOCMGR_H__
-
-#if defined (_MSC_VER) && (_MSC_VER >= 1020)
- #pragma once
-#endif
-
-#if !defined(_TCHAR_DEFINED)
- #include <tchar.h>
-#endif
-
-#if defined(_MSC_VER)
-#pragma warning(push) /* save warning settings */
-#pragma warning(disable:4201) /* nonstandard extension used : nameless struct/union */
-#endif
-
-/*
- File Association Manager v0.1.1.0
-*/
-
-/* interface id */
-#if !defined(MIID_ASSOCMGR)
- #define MIID_ASSOCMGR {0xa05b56c0,0xcf7b,0x4389,{0xa1,0xe9,0xf1,0x3d,0xb9,0x36,0xe,0xf1}}
-#endif
-#if !defined(MIID_AUTORUN)
- #define MIID_AUTORUN {0xeb0465e2,0xceee,0x11db,{0x83,0xef,0xc1,0xbf,0x55,0xd8,0x95,0x93}}
-#endif
-
-/* Add a new file type v0.1.0.0+
-Add a new file type to be registered with Windows.
-You probably want to call this event when
-ME_SYSTEM_MODULESLOADED is fired.
- wParam=0
- lParam=(LPARAM)(FILETYPEDESC*)ftd
-Returns 0 on success, nonzero otherwise.
-*/
-#define MS_ASSOCMGR_ADDNEWFILETYPE "AssocMgr/AddNewFileType"
-
-typedef struct {
- int cbSize; // set to sizeof(FILETYPEDESC), in bytes
- union {
- const char *pszDescription; // description for options dialog and in registry.
- const TCHAR *ptszDescription; // please Translate(), use singular form here.
- const WCHAR *pwszDescription;
- };
- HINSTANCE hInstance; // instance of the calling module and where the icon
- // resource is located.
- // always be sure you set this to your own hInstance even if
- // you use the generic default icon
-
- UINT nIconResID; // resource id of an icon to use for the file type.
- // this icon should contain icons of all sizes and color depths
- // needed by Windows.
- // set this to 0 to use the generic 'miranda file' icon
- // provided by assocmgr.
-
- const char *pszService; // service to call when a file is opened
- // this service will be called with lParam set to
- // the file name being opened including path.
- // it can be assumed that the provided file name
- // is always the long path name.
- // return zero on suceess, nonzero on error.
- // Note: set this to NULL to pass the file name as
- // commandline argument to miranda32.exe (db file).
-
- DWORD flags; // see FTDF_* flags below
-
- const char *pszFileExt; // file extension, e.g. ".ext"
- // first character must be a dot, assumed to be all lower case.
- // may only consist of ascii characters.
-
- const char *pszMimeType; // MIME type of the file, e.g. "application/x-icq"
- // may only consist of ascii characters.
- union {
- const char *pszVerbDesc; // description for the open verb e.g. "&Install".
- const TCHAR *ptszVerbDesc; // set this to NULL to use the default description.
- const WCHAR *pwszVerbDesc; // include an ampersand (&) character for a mnemonic key.
- }; // please Translate().
-} FILETYPEDESC;
-
-#define FTDF_UNICODE 0x0001 // pszDescription and pszVerbDesc in struct are Unicode.
- // the specified service is called with Unicode parameters.
-
-#define FTDF_DEFAULTDISABLED 0x0002 // file type is not registered by default, it needs to be
- // enabled explicitly on the options page.
-
-#define FTDF_BROWSERAUTOOPEN 0x0004 // tells the browser to download and open the file directly
- // without prompt (currently IE and Opera6+) - be careful!
- // use only in conjunction with pszMimeType set.
- // this tells Windows that open can be safely invoked for
- // downloaded files.
- // Note that this flag may create a security risk,
- // because downloaded files could contain malicious content.
- // you need to protect against such an exploit.
-
-#define FTDF_ISTEXT 0x0008 // tells Windows that this file can be opened
- // as a text file using e.g Notepad.
- // only has an effect on Windows XP and higher.
-
-#define FTDF_ISSHORTCUT 0x0010 // file type behaves as shortcut, this means a
- // small overlay arrow is applied and the extension is never shown
-
-#if defined(_UNICODE)
- #define FTDF_TCHAR FTDF_UNICODE // strings in struct are WCHAR*, service accepts WCHAR*
-#else
- #define FTDF_TCHAR 0 // strings in struct are char*, service accepts char*
-#endif
-
-#if !defined(ASSOCMGR_NOHELPERFUNCTIONS)
-__inline static int AssocMgr_AddNewFileType(const char *ext,const char *mime,const char *desc,const char *verb,HINSTANCE hinst,UINT iconid,const char *service,DWORD flags)
-{
- FILETYPEDESC ftd;
- ftd.cbSize=sizeof(FILETYPEDESC);
- ftd.pszFileExt=ext;
- ftd.pszMimeType=mime;
- ftd.pszDescription=desc;
- ftd.pszVerbDesc=verb;
- ftd.hInstance=hinst;
- ftd.nIconResID=iconid;
- ftd.pszService=service;
- ftd.flags=flags&~FTDF_UNICODE;
- return CallService(MS_ASSOCMGR_ADDNEWFILETYPE,0,(LPARAM)&ftd);
-}
-__inline static int AssocMgr_AddNewFileTypeW(const char *ext,const char *mime,const WCHAR *desc,const WCHAR *verb,HINSTANCE hinst,UINT iconid,const char *service,DWORD flags)
-{
- FILETYPEDESC ftd;
- ftd.cbSize=sizeof(FILETYPEDESC);
- ftd.pszFileExt=ext;
- ftd.pszMimeType=mime;
- ftd.pwszDescription=desc;
- ftd.pwszVerbDesc=verb;
- ftd.hInstance=hinst;
- ftd.nIconResID=iconid;
- ftd.pszService=service;
- ftd.flags=flags|FTDF_UNICODE;
- return CallService(MS_ASSOCMGR_ADDNEWFILETYPE,0,(LPARAM)&ftd);
-}
-#if defined(_UNICODE)
- #define AssocMgr_AddNewFileTypeT AssocMgr_AddNewFileTypeW
-#else
- #define AssocMgr_AddNewFileTypeT AssocMgr_AddNewFileType
-#endif
-#endif
-
-/* Remove a file type v0.1.0.0+
-Remove a file type registered previously using
-MS_ASSOCMGR_ADDNEWFILETYPE.
-This removes all settings in database and in registry
-associated with the file type.
- wParam=0
- lParam=(WPARAM)(char*)pszFileExt
-Returns 0 on success, nonzero otherwise.
-*/
-#define MS_ASSOCMGR_REMOVEFILETYPE "AssocMgr/RemoveFileType"
-
-/* Add a new url protocol type v0.1.0.0+
-Add a new url type to be registered with Windows.
-You probably want to call this event when
-ME_SYSTEM_MODULESLOADED is fired.
- wParam=0
- lParam=(LPARAM)(URLTYPEDESC*)utd
-Returns 0 on success, nonzero otherwise.
-*/
-#define MS_ASSOCMGR_ADDNEWURLTYPE "AssocMgr/AddNewUrlType"
-
-typedef struct {
- int cbSize; // set to sizeof(URLTYPEDESC), in bytes
- union {
- const char *pszDescription; // description for options dialog and in registry.
- const TCHAR *ptszDescription; // please Translate(), use singular form here.
- const WCHAR *pwszDescription;
- };
- HINSTANCE hInstance; // instance of the calling module and where the icon
- // resource is located.
- // always be sure you set this to your own hInstance even if
- // you use the generic default icon
-
- UINT nIconResID; // resource id of an icon to use for the url type.
- // only a small one (16x16) is needed by Windows,
- // e.g. proto icon as used in Miranda.
- // set this to 0 to use the default miranda icon.
-
- const char *pszService; // service to call when a url is opened (can't be NULL)
- // this service will be called with lParam set to
- // the url being opened including the prefix.
- // return zero on suceess, nonzero on error.
-
- DWORD flags; // see UTDF_* flags below
-
- const char *pszProtoPrefix; // protocol prefix, e.g. "http:"
- // last character must be a colon, assumed to be all lower case.
- // may only consist of ascii characters.
-} URLTYPEDESC;
-
-#define UTDF_UNICODE 0x0001 // pszDescription in struct is Unicode.
- // the specified service is called with Unicode parameters.
-
-#define UTDF_DEFAULTDISABLED 0x0002 // url type is not registered by default, it needs to be
- // enabled explicitly on the options page.
-#if defined(_UNICODE)
- #define UTDF_TCHAR UTDF_UNICODE // strings in struct are WCHAR*, service accepts WCHAR*
-#else
- #define UTDF_TCHAR 0 // strings in struct are char*, service accepts char*
-#endif
-
-#if !defined(ASSOCMGR_NOHELPERFUNCTIONS)
-static int __inline AssocMgr_AddNewUrlType(const char *prefix,const char *desc,HINSTANCE hinst,UINT iconid,const char *service,DWORD flags)
-{
- URLTYPEDESC utd;
- utd.cbSize=sizeof(URLTYPEDESC);
- utd.pszProtoPrefix=prefix;
- utd.pszDescription=desc;
- utd.hInstance=hinst;
- utd.nIconResID=iconid;
- utd.pszService=service;
- utd.flags=flags&~UTDF_UNICODE;
- return CallService(MS_ASSOCMGR_ADDNEWURLTYPE,0,(LPARAM)&utd);
-}
-static int __inline AssocMgr_AddNewUrlTypeW(const char *prefix,const WCHAR *desc,HINSTANCE hinst,UINT iconid,const char *service,DWORD flags)
-{
- URLTYPEDESC utd;
- utd.cbSize=sizeof(URLTYPEDESC);
- utd.pszProtoPrefix=prefix;
- utd.pwszDescription=desc;
- utd.hInstance=hinst;
- utd.nIconResID=iconid;
- utd.pszService=service;
- utd.flags=flags|UTDF_UNICODE;
- return CallService(MS_ASSOCMGR_ADDNEWURLTYPE,0,(LPARAM)&utd);
-}
-#if defined(_UNICODE)
- #define AssocMgr_AddNewUrlTypeT AssocMgr_AddNewUrlTypeW
-#else
- #define AssocMgr_AddNewUrlTypeT AssocMgr_AddNewUrlType
-#endif
-#endif
-
-/* Remove an url protocol type v0.1.0.0+
-Remove an url registered previously using
-MS_ASSOCMGR_ADDNEWURLTYPE.
-This removes all settings in database and in registry
-associated with the url type.
- wParam=0
- lParam=(WPARAM)(char*)pszProtoPrefix
-Returns 0 on success, nonzero otherwise.
-*/
-#define MS_ASSOCMGR_REMOVEURLTYPE "AssocMgr/RemoveUrlType"
-
-/* utility which should be moved as service into m_netlib.h (MS_NETLIB_URLENCODE already exists) */
-#if defined(MoveMemory) && defined(lstrlen)
-static __inline char *Netlib_UrlDecode(char *str)
-{
- char *psz=str;
- for(;*psz;++psz)
- switch(*psz) {
- case '+':
- *psz=' ';
- break;
- case '%':
- if(!psz[1] || !psz[2]) break;
- MoveMemory(psz,&psz[1],2);
- psz[2]=0;
- *psz=(char)strtol(psz,NULL,16);
- MoveMemory(&psz[1],&psz[3],lstrlenA(&psz[3])+1);
- break;
- }
- return str;
-}
-#endif
-
-#if defined(_MSC_VER)
-#pragma warning(pop) /* restore warning settings */
-#endif
-
-#ifndef ASSOCMGR_NOSETTINGS
-#define SETTING_ONLYWHILERUNNING_DEFAULT 0
-#endif
-
-#endif // M_ASSOCMGR_H
\ No newline at end of file diff --git a/protocols/AimOscar/m_extraicons.h b/protocols/AimOscar/m_extraicons.h deleted file mode 100644 index 589d040cef..0000000000 --- a/protocols/AimOscar/m_extraicons.h +++ /dev/null @@ -1,158 +0,0 @@ -/*
- Copyright (C) 2009 Ricardo Pescuma Domenecci
-
- This is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this file; see the file license.txt. If
- not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
- */
-
-#ifndef __M_EXTRAICONS_H__
-#define __M_EXTRAICONS_H__
-
-#define MIID_EXTRAICONSSERVICE { 0x62d80749, 0xf169, 0x4592, { 0xb4, 0x4d, 0x3d, 0xd6, 0xde, 0x9d, 0x50, 0xc5 } }
-
-
-#define EXTRAICON_TYPE_CALLBACK 0 // Similar to old clist callbacks, it fires 2 notifications
-#define EXTRAICON_TYPE_ICOLIB 1 // This extra icon will use only icons registered with icolib. No callbacks
- // needed. Just call MS_EXTRAICON_SET_ICON passing the name of the extraicon to set one.
-
-
-typedef struct {
- int cbSize;
- int type; // One of EXTRAICON_TYPE_*
- const char *name; // Internal name. More than one plugin can register extra icons with the same name
- // if both have the same type. In this case, both will be handled as one.
- // This is usefull for ex for extra status, where icq and jabber can share the same slot.
- // If the types are different the second one will be denied.
- const char *description; // [Translated by plugin] Description to be used in GUI
- const char *descIcon; // [Optional] Name of an icon registered with icolib to be used in GUI.
-
- // If type == EXTRAICON_TYPE_CALLBACK this two must be set
-
- // Callback to add icons to clist, calling MS_CLIST_EXTRA_ADD_ICON
- // wParam=lParam=0
- MIRANDAHOOK RebuildIcons;
-
- // Callback to set the icon to clist, calling MS_CLIST_EXTRA_SET_ICON or MS_EXTRAICON_SET_ICON
- // wParam = HANDLE hContact
- // lParam = int slot
- MIRANDAHOOK ApplyIcon;
-
- // Other optional callbacks
-
- // [Optional] Callback called when extra icon was clicked
- // wParam = HANDLE hContact
- // lParam = int slot
- // param = onClickParam
- MIRANDAHOOKPARAM OnClick;
-
- LPARAM onClickParam;
-
-} EXTRAICON_INFO;
-
-
-// Register an extra icon
-// wParam = (EXTRAICON_INFO *) Extra icon info
-// lParam = 0
-// Return: (HANDLE) id of extra icon on success, 0 on error
-#define MS_EXTRAICON_REGISTER "ExtraIcon/Register"
-
-
-typedef struct {
- int cbSize;
- HANDLE hExtraIcon; // Value returned by MS_EXTRAICON_REGISTER
- HANDLE hContact; // Contact to set the extra icon
- union { // The icon to be set. This depends on the type of the extra icon:
- HANDLE hImage; // Value returned by MS_CLIST_EXTRA_ADD_ICON (if EXTRAICON_TYPE_CALLBACK)
- const char *icoName; // Name of the icon registered with icolib (if EXTRAICON_TYPE_ICOLIB)
- };
-} EXTRAICON;
-
-// Set an extra icon icon
-// wParam = (EXTRAICON *) Extra icon
-// Return: 0 on success
-#define MS_EXTRAICON_SET_ICON "ExtraIcon/SetIcon"
-
-
-
-#ifndef _NO_WRAPPERS
-#ifdef __cplusplus
-
-static HANDLE ExtraIcon_Register(const char *name, const char *description, const char *descIcon,
- MIRANDAHOOK RebuildIcons,
- MIRANDAHOOK ApplyIcon,
- MIRANDAHOOKPARAM OnClick = NULL, LPARAM onClickParam = NULL)
-{
- if (!ServiceExists(MS_EXTRAICON_REGISTER))
- return NULL;
-
- EXTRAICON_INFO ei = {0};
- ei.cbSize = sizeof(ei);
- ei.type = EXTRAICON_TYPE_CALLBACK;
- ei.name = name;
- ei.description = description;
- ei.descIcon = descIcon;
- ei.RebuildIcons = RebuildIcons;
- ei.ApplyIcon = ApplyIcon;
- ei.OnClick = OnClick;
- ei.onClickParam = onClickParam;
-
- return (HANDLE) CallService(MS_EXTRAICON_REGISTER, (WPARAM) &ei, 0);
-}
-
-static HANDLE ExtraIcon_Register(const char *name, const char *description, const char *descIcon = NULL,
- MIRANDAHOOKPARAM OnClick = NULL, LPARAM onClickParam = NULL)
-{
- if (!ServiceExists(MS_EXTRAICON_REGISTER))
- return NULL;
-
- EXTRAICON_INFO ei = {0};
- ei.cbSize = sizeof(ei);
- ei.type = EXTRAICON_TYPE_ICOLIB;
- ei.name = name;
- ei.description = description;
- ei.descIcon = descIcon;
- ei.OnClick = OnClick;
- ei.onClickParam = onClickParam;
-
- return (HANDLE) CallService(MS_EXTRAICON_REGISTER, (WPARAM) &ei, 0);
-}
-
-static int ExtraIcon_SetIcon(HANDLE hExtraIcon, HANDLE hContact, HANDLE hImage)
-{
- EXTRAICON ei = {0};
- ei.cbSize = sizeof(ei);
- ei.hExtraIcon = hExtraIcon;
- ei.hContact = hContact;
- ei.hImage = hImage;
-
- return CallService(MS_EXTRAICON_SET_ICON, (WPARAM) &ei, 0);
-}
-
-static int ExtraIcon_SetIcon(HANDLE hExtraIcon, HANDLE hContact, const char *icoName)
-{
- EXTRAICON ei = {0};
- ei.cbSize = sizeof(ei);
- ei.hExtraIcon = hExtraIcon;
- ei.hContact = hContact;
- ei.icoName = icoName;
-
- return CallService(MS_EXTRAICON_SET_ICON, (WPARAM) &ei, 0);
-}
-
-#endif
-#endif
-
-
-#endif // __M_EXTRAICONS_H__
diff --git a/protocols/AimOscar/m_folders.h b/protocols/AimOscar/m_folders.h deleted file mode 100644 index 54d19589c2..0000000000 --- a/protocols/AimOscar/m_folders.h +++ /dev/null @@ -1,282 +0,0 @@ -/*
-Custom profile folders plugin for Miranda IM
-
-Copyright © 2005 Cristian Libotean
-
-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; either version 2
-of the License, or (at your option) any later version.
-
-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, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#ifndef M_CUSTOM_FOLDERS_H
-#define M_CUSTOM_FOLDERS_H
-
-#define FOLDERS_API 501 //dunno why it's here but it is :)
-
-#define PROFILE_PATH "%profile_path%"
-#define CURRENT_PROFILE "%current_profile%"
-#define MIRANDA_PATH "%miranda_path%"
-#define PLUGINS_PATH "%miranda_path%" "\\plugins"
-
-#define TO_WIDE(x) L ## x
-
-#define PROFILE_PATHW L"%profile_path%"
-#define CURRENT_PROFILEW L"%current_profile%"
-#define MIRANDA_PATHW L"%miranda_path%"
-
-#define FOLDER_AVATARS PROFILE_PATH "\\" CURRENT_PROFILE "\\avatars"
-#define FOLDER_VCARDS PROFILE_PATH "\\" CURRENT_PROFILE "\\vcards"
-#define FOLDER_LOGS PROFILE_PATH "\\" CURRENT_PROFILE "\\logs"
-#define FOLDER_RECEIVED_FILES PROFILE_PATH "\\" CURRENT_PROFILE "\\received files"
-#define FOLDER_DOCS MIRANDA_PATH "\\" "docs"
-
-#define FOLDER_CONFIG PLUGINS_PATH "\\" "config"
-
-#define FOLDER_SCRIPTS MIRANDA_PATH "\\" "scripts"
-
-#define FOLDER_UPDATES MIRANDA_PATH "\\" "updates"
-
-#define FOLDER_CUSTOMIZE MIRANDA_PATH "\\" "customize"
-#define FOLDER_CUSTOMIZE_SOUNDS FOLDER_CUSTOMIZE "\\sounds"
-#define FOLDER_CUSTOMIZE_ICONS FOLDER_CUSTOMIZE "\\icons"
-#define FOLDER_CUSTOMIZE_SMILEYS FOLDER_CUSTOMIZE "\\smileys"
-#define FOLDER_CUSTOMIZE_SKINS FOLDER_CUSTOMIZE "\\skins"
-#define FOLDER_CUSTOMIZE_THEMES FOLDER_CUSTOMIZE "\\themes"
-
-
-#define FOLDERS_NAME_MAX_SIZE 64 //maximum name and section size
-
-#define FF_UNICODE 0x00000001
-
-#if defined (UNICODE)
- #define FF_TCHAR FF_UNICODE
-#else
- #define FF_TCHAR 0
-#endif
-
-typedef struct{
- int cbSize; //size of struct
- char szSection[FOLDERS_NAME_MAX_SIZE]; //section name, if it doesn't exist it will be created otherwise it will just add this entry to it
- char szName[FOLDERS_NAME_MAX_SIZE]; //entry name - will be shown in options
- union{
- const char *szFormat; //default string format. Fallback string in case there's no entry in the database for this folder. This should be the initial value for the path, users will be able to change it later.
- const wchar_t *szFormatW; //String is dup()'d so you can free it later. If you set the unicode string don't forget to set the flag accordingly.
- const TCHAR *szFormatT;
- };
- DWORD flags; //FF_* flags
-} FOLDERSDATA;
-
-/*Folders/Register/Path service
- wParam - not used, must be 0
- lParam - (LPARAM) (const FOLDERDATA *) - Data structure filled with
- the necessary information.
- Returns a handle to the registered path or 0 on error.
- You need to use this to call the other services.
-*/
-#define MS_FOLDERS_REGISTER_PATH "Folders/Register/Path"
-
-/*Folders/Get/PathSize service
- wParam - (WPARAM) (int) - handle to registered path
- lParam - (LPARAM) (int *) - pointer to the variable that receives the size of the path
- string (not including the null character). Depending on the flags set when creating the path
- it will either call strlen() or wcslen() to get the length of the string.
- Returns the size of the buffer.
-*/
-#define MS_FOLDERS_GET_SIZE "Folders/Get/PathSize"
-
-typedef struct{
- int cbSize;
- int nMaxPathSize; //maximum size of buffer. This represents the number of characters that can be copied to it (so for unicode strings you don't send the number of bytes but the length of the string).
- union{
- char *szPath; //pointer to the buffer that receives the path without the last "\\"
- wchar_t *szPathW; //unicode version of the buffer.
- TCHAR *szPathT;
- };
-} FOLDERSGETDATA;
-
-/*Folders/Get/Path service
- wParam - (WPARAM) (int) - handle to registered path
- lParam - (LPARAM) (FOLDERSGETDATA *) pointer to a FOLDERSGETDATA that has all the relevant fields filled.
- Should return 0 on success, or nonzero otherwise.
-*/
-#define MS_FOLDERS_GET_PATH "Folders/Get/Path"
-
-typedef struct{
- int cbSize;
- union{
- char **szPath; //address of a string variable (char *) or (wchar_t*) where the path should be stored (the last \ won't be copied).
- wchar_t **szPathW; //unicode version of string.
- TCHAR **szPathT;
- };
-} FOLDERSGETALLOCDATA;
-
-/*Folders/GetRelativePath/Alloc service
- wParam - (WPARAM) (int) - Handle to registered path
- lParam - (LPARAM) (FOLDERSALLOCDATA *) data
- This service is the same as MS_FOLDERS_GET_PATH with the difference that this service
- allocates the needed space for the buffer. It uses miranda's memory functions for that and you need
- to use those to free the resulting buffer.
- Should return 0 on success, or nonzero otherwise. Currently it only returns 0.
-*/
-#define MS_FOLDERS_GET_PATH_ALLOC "Folders/Get/Path/Alloc"
-
-
-/*Folders/On/Path/Changed
- wParam - (WPARAM) 0
- lParam - (LPARAM) 0
- Triggered when the folders change, you should reget the paths you registered.
-*/
-#define ME_FOLDERS_PATH_CHANGED "Folders/On/Path/Changed"
-
-#ifndef FOLDERS_NO_HELPER_FUNCTIONS
-
-#ifndef M_UTILS_H__
-#error The helper functions require that m_utils.h be included in the project. Please include that file if you want to use the helper functions. If you don''t want to use the functions just define FOLDERS_NO_HELPER_FUNCTIONS.
-#endif
-//#include "../../../include/newpluginapi.h"
-
-__inline static HANDLE FoldersRegisterCustomPath(const char *section, const char *name, const char *defaultPath)
-{
- FOLDERSDATA fd = {0};
- if (!ServiceExists(MS_FOLDERS_REGISTER_PATH)) return 0;
- fd.cbSize = sizeof(FOLDERSDATA);
- strncpy(fd.szSection, section, FOLDERS_NAME_MAX_SIZE);
- fd.szSection[FOLDERS_NAME_MAX_SIZE - 1] = '\0';
- strncpy(fd.szName, name, FOLDERS_NAME_MAX_SIZE);
- fd.szName[FOLDERS_NAME_MAX_SIZE - 1] = '\0';
- fd.szFormat = defaultPath;
- return (HANDLE) CallService(MS_FOLDERS_REGISTER_PATH, 0, (LPARAM) &fd);
-}
-
-__inline static HANDLE FoldersRegisterCustomPathW(const char *section, const char *name, const wchar_t *defaultPathW)
-{
- FOLDERSDATA fd = {0};
- if (!ServiceExists(MS_FOLDERS_REGISTER_PATH)) return 0;
- fd.cbSize = sizeof(FOLDERSDATA);
- strncpy(fd.szSection, section, FOLDERS_NAME_MAX_SIZE);
- fd.szSection[FOLDERS_NAME_MAX_SIZE - 1] = '\0'; //make sure it's NULL terminated
- strncpy(fd.szName, name, FOLDERS_NAME_MAX_SIZE);
- fd.szName[FOLDERS_NAME_MAX_SIZE - 1] = '\0'; //make sure it's NULL terminated
- fd.szFormatW = defaultPathW;
- fd.flags = FF_UNICODE;
- return (HANDLE) CallService(MS_FOLDERS_REGISTER_PATH, 0, (LPARAM) &fd);
-}
-
-__inline static int FoldersGetCustomPath(HANDLE hFolderEntry, char *path, const int size, const char *notFound)
-{
- FOLDERSGETDATA fgd = {0};
- int res;
- fgd.cbSize = sizeof(FOLDERSGETDATA);
- fgd.nMaxPathSize = size;
- fgd.szPath = path;
- res = CallService(MS_FOLDERS_GET_PATH, (WPARAM) hFolderEntry, (LPARAM) &fgd);
- if (res)
- {
- char buffer[MAX_PATH];
- CallService(MS_UTILS_PATHTOABSOLUTE, (WPARAM) notFound, (LPARAM) buffer);
- mir_snprintf(path, size, "%s", buffer);
- }
-
- return res;
-}
-
-__inline static int FoldersGetCustomPathW(HANDLE hFolderEntry, wchar_t *pathW, const int count, const wchar_t *notFoundW)
-{
- FOLDERSGETDATA fgd = {0};
- int res;
- fgd.cbSize = sizeof(FOLDERSGETDATA);
- fgd.nMaxPathSize = count;
- fgd.szPathW = pathW;
- res = CallService(MS_FOLDERS_GET_PATH, (WPARAM) hFolderEntry, (LPARAM) &fgd);
- if (res)
- {
- wcsncpy(pathW, notFoundW, count);
- pathW[count - 1] = '\0';
- }
-
- return res;
-}
-
-__inline static int FoldersGetCustomPathEx(HANDLE hFolderEntry, char *path, const int size, char *notFound, char *fileName)
-{
- FOLDERSGETDATA fgd = {0};
- int res;
- fgd.cbSize = sizeof(FOLDERSGETDATA);
- fgd.nMaxPathSize = size;
- fgd.szPath = path;
- res = CallService(MS_FOLDERS_GET_PATH, (WPARAM) hFolderEntry, (LPARAM) &fgd);
- if (res)
- {
- char buffer[MAX_PATH];
- CallService(MS_UTILS_PATHTOABSOLUTE, (WPARAM) notFound, (LPARAM) buffer);
- mir_snprintf(path, size, "%s", buffer);
- }
- if (strlen(path) > 0)
- {
- strcat(path, "\\");
- }
- else{
- path[0] = '\0';
- }
-
- if (fileName)
- {
- strcat(path, fileName);
- }
-
- return res;
-}
-
-__inline static int FoldersGetCustomPathExW(HANDLE hFolderEntry, wchar_t *pathW, const int count, wchar_t *notFoundW, wchar_t *fileNameW)
-{
- FOLDERSGETDATA fgd = {0};
- int res;
- fgd.cbSize = sizeof(FOLDERSGETDATA);
- fgd.nMaxPathSize = count;
- fgd.szPathW = pathW;
- res = CallService(MS_FOLDERS_GET_PATH, (WPARAM) hFolderEntry, (LPARAM) &fgd);
- if (res)
- {
- wcsncpy(pathW, notFoundW, count);
- pathW[count - 1] = '\0';
- }
-
- if (wcslen(pathW) > 0)
- {
- wcscat(pathW, L"\\");
- }
- else{
- pathW[0] = L'\0';
- }
-
- if (fileNameW)
- {
- wcscat(pathW, fileNameW);
- }
-
- return res;
-}
-
-# ifdef _UNICODE
-# define FoldersGetCustomPathT FoldersGetCustomPathW
-# define FoldersGetCustomPathExT FoldersGetCustomPathExW
-# define FoldersRegisterCustomPathT FoldersRegisterCustomPathW
-#else
-# define FoldersGetCustomPathT FoldersGetCustomPath
-# define FoldersGetCustomPathExT FoldersGetCustomPath
-# define FoldersRegisterCustomPathT FoldersRegisterCustomPath
-#endif
-
-#endif
-
-#endif //M_CUSTOM_FOLDERS_H
|