summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpescuma <pescuma@c086bb3d-8645-0410-b8da-73a8550f86e7>2010-09-30 07:12:58 +0000
committerpescuma <pescuma@c086bb3d-8645-0410-b8da-73a8550f86e7>2010-09-30 07:12:58 +0000
commite18d7a839140f01249f470ea40c531b7889c608d (patch)
tree53621008908c9001825f545b970b635d52b52472
parent58cba394baa3ae85436969061f667126578ed4d4 (diff)
skins: 0.0.0.5
+ Allow changing skins * Updated v8 * Updated updater to use googlecode git-svn-id: http://pescuma.googlecode.com/svn/trunk/Miranda@224 c086bb3d-8645-0410-b8da-73a8550f86e7
-rw-r--r--Plugins/skins/Docs/skins_changelog.txt1
-rw-r--r--Plugins/skins/MirandaSkinnedDialog.cpp47
-rw-r--r--Plugins/skins/MirandaSkinnedDialog.h20
-rw-r--r--Plugins/skins/SkinLib/SkinnedDialog.cpp1
-rw-r--r--Plugins/skins/ZIP/doit.bat8
-rw-r--r--Plugins/skins/options.cpp99
6 files changed, 97 insertions, 79 deletions
diff --git a/Plugins/skins/Docs/skins_changelog.txt b/Plugins/skins/Docs/skins_changelog.txt
index 9eb5599..fcaa8da 100644
--- a/Plugins/skins/Docs/skins_changelog.txt
+++ b/Plugins/skins/Docs/skins_changelog.txt
@@ -3,6 +3,7 @@ Skins
Changelog:
. 0.0.0.5
+ + Allow changing skins
* Updated v8
* Updated updater to use googlecode
diff --git a/Plugins/skins/MirandaSkinnedDialog.cpp b/Plugins/skins/MirandaSkinnedDialog.cpp
index 579bb6f..97bf236 100644
--- a/Plugins/skins/MirandaSkinnedDialog.cpp
+++ b/Plugins/skins/MirandaSkinnedDialog.cpp
@@ -8,7 +8,7 @@ MirandaSkinnedDialog::MirandaSkinnedDialog(const char *name, const char *aDescri
: SkinnedDialog(name), description(aDescription), module(aModule),
skinChangedCallback(NULL), skinChangedCallbackParam(NULL)
{
- getSettting("Skin", _T(DEFAULT_SKIN_NAME), skinName);
+ getSettting("Skin", _T(DEFAULT_SKIN_NAME), skinName, true);
}
MirandaSkinnedDialog::~MirandaSkinnedDialog()
@@ -35,9 +35,9 @@ void MirandaSkinnedDialog::setSkinName(const TCHAR *name)
if (skinName == name)
return;
-// TODO skinName = name;
- setSettting("Skin", skinName.c_str());
-// TODO updateFilename();
+ skinName = name;
+ setSettting("Skin", skinName.c_str(), true);
+ updateFilename();
}
bool MirandaSkinnedDialog::finishedConfiguring()
@@ -111,42 +111,42 @@ void MirandaSkinnedDialog::storeToDB(const SkinOption *opt)
}
}
-bool MirandaSkinnedDialog::getSettting(const char *name, bool defVal)
+bool MirandaSkinnedDialog::getSettting(const char *name, bool defVal, bool global)
{
char setting[SETTING_NAME_SIZE];
- getSettingName(setting, name);
+ getSettingName(setting, name, global);
return DBGetContactSettingByte(NULL, getModule(), setting, defVal ? 1 : 0) != 0;
}
-void MirandaSkinnedDialog::setSettting(const char *name, bool val)
+void MirandaSkinnedDialog::setSettting(const char *name, bool val, bool global)
{
char setting[SETTING_NAME_SIZE];
- getSettingName(setting, name);
+ getSettingName(setting, name, global);
DBWriteContactSettingByte(NULL, getModule(), setting, val ? 1 : 0);
}
-int MirandaSkinnedDialog::getSettting(const char *name, int defVal)
+int MirandaSkinnedDialog::getSettting(const char *name, int defVal, bool global)
{
char setting[SETTING_NAME_SIZE];
- getSettingName(setting, name);
+ getSettingName(setting, name, global);
return DBGetContactSettingDword(NULL, getModule(), setting, defVal);
}
-void MirandaSkinnedDialog::setSettting(const char *name, int val)
+void MirandaSkinnedDialog::setSettting(const char *name, int val, bool global)
{
char setting[SETTING_NAME_SIZE];
- getSettingName(setting, name);
+ getSettingName(setting, name, global);
DBWriteContactSettingDword(NULL, getModule(), setting, val);
}
-void MirandaSkinnedDialog::getSettting(const char *name, const WCHAR *defVal, std::wstring &ret)
+void MirandaSkinnedDialog::getSettting(const char *name, const WCHAR *defVal, std::wstring &ret, bool global)
{
char setting[SETTING_NAME_SIZE];
- getSettingName(setting, name);
+ getSettingName(setting, name, global);
DBVARIANT dbv = {0};
if (DBGetContactSettingWString(NULL, getModule(), setting, &dbv))
@@ -159,18 +159,18 @@ void MirandaSkinnedDialog::getSettting(const char *name, const WCHAR *defVal, st
DBFreeVariant(&dbv);
}
-void MirandaSkinnedDialog::setSettting(const char *name, const WCHAR *val)
+void MirandaSkinnedDialog::setSettting(const char *name, const WCHAR *val, bool global)
{
char setting[SETTING_NAME_SIZE];
- getSettingName(setting, name);
+ getSettingName(setting, name, global);
DBWriteContactSettingWString(NULL, getModule(), setting, val);
}
-void MirandaSkinnedDialog::getSettting(const char *name, const char *defVal, std::string &ret)
+void MirandaSkinnedDialog::getSettting(const char *name, const char *defVal, std::string &ret, bool global)
{
char setting[SETTING_NAME_SIZE];
- getSettingName(setting, name);
+ getSettingName(setting, name, global);
DBVARIANT dbv = {0};
if (DBGetContactSettingString(NULL, getModule(), setting, &dbv))
@@ -183,17 +183,20 @@ void MirandaSkinnedDialog::getSettting(const char *name, const char *defVal, std
DBFreeVariant(&dbv);
}
-void MirandaSkinnedDialog::setSettting(const char *name, const char *val)
+void MirandaSkinnedDialog::setSettting(const char *name, const char *val, bool global)
{
char setting[SETTING_NAME_SIZE];
- getSettingName(setting, name);
+ getSettingName(setting, name, global);
DBWriteContactSettingString(NULL, getModule(), setting, val);
}
-void MirandaSkinnedDialog::getSettingName(char *setting, const char * name)
+void MirandaSkinnedDialog::getSettingName(char *setting, const char * name, bool global)
{
- mir_snprintf(setting, SETTING_NAME_SIZE, "%s%s%s", TcharToChar(getSkinName()), getName(), name);
+ if (global)
+ mir_snprintf(setting, SETTING_NAME_SIZE, "%s%s", getName(), name);
+ else
+ mir_snprintf(setting, SETTING_NAME_SIZE, "%s%s%s", TcharToChar(getSkinName()), getName(), name);
}
void MirandaSkinnedDialog::setOnSkinChangedCallback(MirandaSkinnedCallback cb, void *param)
diff --git a/Plugins/skins/MirandaSkinnedDialog.h b/Plugins/skins/MirandaSkinnedDialog.h
index 3cb65b3..d556b9a 100644
--- a/Plugins/skins/MirandaSkinnedDialog.h
+++ b/Plugins/skins/MirandaSkinnedDialog.h
@@ -42,16 +42,16 @@ private:
void loadFromDB(SkinOption *opt);
void storeToDB(const SkinOption *opt);
- bool getSettting(const char *name, bool defVal);
- void setSettting(const char *name, bool val);
- int getSettting(const char *name, int defVal);
- void setSettting(const char *name, int val);
- void getSettting(const char *name, const WCHAR *defVal, std::wstring &ret);
- void setSettting(const char *name, const WCHAR *val);
- void getSettting(const char *name, const char *defVal, std::string &ret);
- void setSettting(const char *name, const char *val);
-
- inline void getSettingName(char *setting, const char * name);
+ bool getSettting(const char *name, bool defVal, bool global = false);
+ void setSettting(const char *name, bool val, bool global = false);
+ int getSettting(const char *name, int defVal, bool global = false);
+ void setSettting(const char *name, int val, bool global = false);
+ void getSettting(const char *name, const WCHAR *defVal, std::wstring &ret, bool global = false);
+ void setSettting(const char *name, const WCHAR *val, bool global = false);
+ void getSettting(const char *name, const char *defVal, std::string &ret, bool global = false);
+ void setSettting(const char *name, const char *val, bool global = false);
+
+ inline void getSettingName(char *setting, const char * name, bool global);
void fireOnSkinChanged();
diff --git a/Plugins/skins/SkinLib/SkinnedDialog.cpp b/Plugins/skins/SkinLib/SkinnedDialog.cpp
index f8dfb04..917193a 100644
--- a/Plugins/skins/SkinLib/SkinnedDialog.cpp
+++ b/Plugins/skins/SkinLib/SkinnedDialog.cpp
@@ -125,6 +125,7 @@ void SkinnedDialog::releaseCompiledScript()
{
delete script;
script = NULL;
+ fileChangedTime = 0;
delete opts;
opts = NULL;
diff --git a/Plugins/skins/ZIP/doit.bat b/Plugins/skins/ZIP/doit.bat
index a222ed7..b69fea6 100644
--- a/Plugins/skins/ZIP/doit.bat
+++ b/Plugins/skins/ZIP/doit.bat
@@ -30,9 +30,6 @@ copy ..\Docs\%name%_readme.txt
mkdir Skins
cd Skins
mkdir Default
-cd Default
-copy ..\..\..\..\mydetails\data\Skins\Default\*.msk
-cd..
cd..
mkdir Docs
cd Docs
@@ -48,9 +45,6 @@ copy "..\Unicode_Release\%name%W.pdb"
mkdir Plugins
cd Plugins
copy "..\..\..\..\bin\release unicode\Plugins\%name%W.dll"
-copy "..\..\Unicode_Release\%name%W.pdb"
-copy "..\..\..\..\bin\release\Plugins\mydetails.dll"
-copy "..\..\..\mydetails\Release\mydetails.pdb"
cd ..
"C:\Program Files\Filzip\Filzip.exe" -a -rp %name%W.zip Plugins Docs Skins
@@ -58,9 +52,7 @@ cd ..
cd Plugins
del /Q %name%W.dll
-del /Q %name%W.pdb
copy "..\..\..\..\bin\release\Plugins\%name%.dll"
-copy ..\..\Release\%name%.pdb
cd ..
"C:\Program Files\Filzip\Filzip.exe" -a -rp %name%.zip Plugins Docs Skins
diff --git a/Plugins/skins/options.cpp b/Plugins/skins/options.cpp
index 15c8631..086b7cb 100644
--- a/Plugins/skins/options.cpp
+++ b/Plugins/skins/options.cpp
@@ -202,7 +202,7 @@ static BOOL CALLBACK SkinOptDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA
WS_CHILD | WS_VISIBLE,
labelRc.left, y + (lineHeight - font.tmHeight) / 2,
labelRc.right - labelRc.left, font.tmHeight,
- hwndDlg, NULL, hInst, NULL);
+ hwndDlg, (HMENU) id + 2, hInst, NULL);
SendMessage(lbl, WM_SETFONT, (WPARAM) hFont, FALSE);
HWND edit = CreateWindowEx(WS_EX_CLIENTEDGE, _T("EDIT"), _T(""),
@@ -233,7 +233,7 @@ static BOOL CALLBACK SkinOptDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA
WS_CHILD | WS_VISIBLE,
labelRc.left, y + (lineHeight - font.tmHeight) / 2,
labelRc.right - labelRc.left, font.tmHeight,
- hwndDlg, NULL, hInst, NULL);
+ hwndDlg, (HMENU) id + 1, hInst, NULL);
SendMessage(lbl, WM_SETFONT, (WPARAM) hFont, FALSE);
HWND edit = CreateWindowEx(WS_EX_CLIENTEDGE, _T("EDIT"), _T(""),
@@ -250,7 +250,7 @@ static BOOL CALLBACK SkinOptDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA
}
}
- id += 2;
+ id += 3;
y += lineHeight + V_SPACE;
}
@@ -357,14 +357,30 @@ static BOOL CALLBACK SkinOptDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA
if (dlg == NULL)
break;
+ SkinOptions *opts = dlg->getOpts();
+
if (LOWORD(wParam) == IDC_SKIN)
{
if (HIWORD(wParam) == CBN_SELCHANGE && (HWND)lParam == GetFocus())
+ {
SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
+
+ // Disable all options
+ if (opts != NULL)
+ {
+ int id = IDC_SKIN_OPTS_L + 1;
+ for (unsigned int i = 0; i < opts->getNumOptions(); i++)
+ {
+ EnableWindow(GetDlgItem(hwndDlg, id), FALSE);
+ EnableWindow(GetDlgItem(hwndDlg, id+1), FALSE);
+ EnableWindow(GetDlgItem(hwndDlg, id+2), FALSE);
+ id += 3;
+ }
+ }
+ }
break;
}
- SkinOptions *opts = dlg->getOpts();
if (opts == NULL)
break;
@@ -394,7 +410,7 @@ static BOOL CALLBACK SkinOptDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA
}
}
- id += 2;
+ id += 3;
}
if (changed)
@@ -412,40 +428,7 @@ static BOOL CALLBACK SkinOptDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA
if (dlg == NULL)
break;
- SkinOptions *opts = dlg->getOpts();
- if (opts == NULL)
- break;
-
- int id = IDC_SKIN_OPTS_L + 1;
- for (unsigned int i = 0; i < opts->getNumOptions(); i++)
- {
- SkinOption *opt = opts->getOption(i);
-
- switch(opt->getType())
- {
- case CHECKBOX:
- {
- opt->setValueCheckbox(IsDlgButtonChecked(hwndDlg, id) != 0);
- break;
- }
- case NUMBER:
- {
- opt->setValueNumber(SendDlgItemMessage(hwndDlg, id + 1, UDM_GETPOS, 0, 0));
- break;
- }
- case TEXT:
- {
- TCHAR tmp[MAX_TEXT_SIZE];
- GetDlgItemText(hwndDlg, id, tmp, MAX_TEXT_SIZE);
- opt->setValueText(tmp);
- break;
- }
- }
-
- id += 2;
- }
-
- dlg->storeToDB(opts);
+ bool changedSkin = false;
// TODO Correctly handle changing skins
int pos = SendDlgItemMessage(hwndDlg, IDC_SKIN, CB_GETCURSEL, 0, 0);
@@ -453,9 +436,47 @@ static BOOL CALLBACK SkinOptDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA
{
TCHAR tmp[1024];
GetWindowText(GetDlgItem(hwndDlg, IDC_SKIN), tmp, MAX_REGS(tmp));
+
+ changedSkin = (lstrcmp(dlg->getSkinName(), tmp) != 0);
+
dlg->setSkinName(tmp);
}
+ SkinOptions *opts = dlg->getOpts();
+ if (opts != NULL && !changedSkin)
+ {
+ int id = IDC_SKIN_OPTS_L + 1;
+ for (unsigned int i = 0; i < opts->getNumOptions(); i++)
+ {
+ SkinOption *opt = opts->getOption(i);
+
+ switch(opt->getType())
+ {
+ case CHECKBOX:
+ {
+ opt->setValueCheckbox(IsDlgButtonChecked(hwndDlg, id) != 0);
+ break;
+ }
+ case NUMBER:
+ {
+ opt->setValueNumber(SendDlgItemMessage(hwndDlg, id + 1, UDM_GETPOS, 0, 0));
+ break;
+ }
+ case TEXT:
+ {
+ TCHAR tmp[MAX_TEXT_SIZE];
+ GetDlgItemText(hwndDlg, id, tmp, MAX_TEXT_SIZE);
+ opt->setValueText(tmp);
+ break;
+ }
+ }
+
+ id += 3;
+ }
+
+ dlg->storeToDB(opts);
+ }
+
return TRUE;
}
break;