diff options
author | pescuma <pescuma@c086bb3d-8645-0410-b8da-73a8550f86e7> | 2009-01-09 02:46:23 +0000 |
---|---|---|
committer | pescuma <pescuma@c086bb3d-8645-0410-b8da-73a8550f86e7> | 2009-01-09 02:46:23 +0000 |
commit | 283ebdc88fe0867c50f56306bf53dcdeec0da013 (patch) | |
tree | abab71b8038f352d2db28390bc2922936b96b19a /Plugins/skins/skins.cpp | |
parent | fefa34c8d2d2501ca1ec2e7cd57f98a8816f3939 (diff) |
skins: List of skins and notification on options
git-svn-id: http://pescuma.googlecode.com/svn/trunk/Miranda@126 c086bb3d-8645-0410-b8da-73a8550f86e7
Diffstat (limited to 'Plugins/skins/skins.cpp')
-rw-r--r-- | Plugins/skins/skins.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Plugins/skins/skins.cpp b/Plugins/skins/skins.cpp index d65f6d8..793fb14 100644 --- a/Plugins/skins/skins.cpp +++ b/Plugins/skins/skins.cpp @@ -307,6 +307,50 @@ MirandaSkinnedDialog *GetDialog(const char *name) return NULL;
}
+void getSkinnedDialogFilename(std::tstring &ret, const TCHAR *skin, const char *dialogName)
+{
+ ret = skinsFolder;
+ ret += _T("\\");
+ ret += skin;
+ ret += _T("\\");
+ ret += CharToTchar(dialogName);
+ ret += _T(".");
+ ret += _T(SKIN_EXTENSION);
+}
+
+void getAvaiableSkins(std::vector<std::tstring> &skins, MirandaSkinnedDialog *dlg)
+{
+ TCHAR file[1024];
+ mir_sntprintf(file, MAX_REGS(file), _T("%s\\*"), skinsFolder);
+
+ WIN32_FIND_DATA ffd = {0};
+ HANDLE hFFD = FindFirstFile(file, &ffd);
+ if (hFFD == INVALID_HANDLE_VALUE)
+ return;
+
+ do
+ {
+ if (lstrcmp(ffd.cFileName, _T(".")) == 0 || lstrcmp(ffd.cFileName, _T("..")) == 0)
+ continue;
+
+ mir_sntprintf(file, MAX_REGS(file), _T("%s\\%s"), skinsFolder, ffd.cFileName);
+ if (!DirExists(file))
+ continue;
+
+ if (dlg != NULL)
+ {
+ std::tstring filename;
+ getSkinnedDialogFilename(filename, ffd.cFileName, dlg->getName());
+ if (!FileExists(filename.c_str()))
+ continue;
+ }
+
+ skins.push_back(std::tstring(ffd.cFileName));
+ }
+ while(FindNextFile(hFFD, &ffd));
+
+ FindClose(hFFD);
+}
void OnError(void *param, const TCHAR *err)
{
@@ -363,6 +407,15 @@ void Interface_DeleteDialog(SKINNED_DIALOG aDlg) delete dlg;
}
+void Interface_SetSkinChangedCallback(SKINNED_DIALOG aDlg, SkinOptionsChangedCallback cb, void *param)
+{
+ if (aDlg == NULL)
+ return;
+
+ MirandaSkinnedDialog * dlg = (MirandaSkinnedDialog *) aDlg;
+ dlg->setOnSkinChangedCallback((MirandaSkinnedCallback) cb, param);
+}
+
void Interface_FinishedConfiguring(SKINNED_DIALOG aDlg)
{
if (aDlg == NULL)
@@ -758,6 +811,7 @@ static int Service_GetInterface(WPARAM wParam, LPARAM lParam) mski->RegisterDialog = &Interface_RegisterDialog;
mski->DeleteDialog = &Interface_DeleteDialog;
+ mski->SetSkinChangedCallback = &Interface_SetSkinChangedCallback;
mski->FinishedConfiguring = &Interface_FinishedConfiguring;
mski->AddTextField = &Interface_AddTextField;
|