diff options
Diffstat (limited to 'useactions/UseActions.c')
-rw-r--r-- | useactions/UseActions.c | 88 |
1 files changed, 74 insertions, 14 deletions
diff --git a/useactions/UseActions.c b/useactions/UseActions.c index 71e4371..85de062 100644 --- a/useactions/UseActions.c +++ b/useactions/UseActions.c @@ -69,15 +69,15 @@ void DeleteIcolibIcon(MyActionItem* ActionItem); int AddCoreHotkey(MyActionItem* ActionItem);
void DeleteCoreHotkey(MyActionItem* ActionItem);
-static int ServiceCallWithLParam (WPARAM wParam, LPARAM lParam);
-static int ServiceCallWithFParam (WPARAM wParam, LPARAM lParam, LPARAM fParam);
+INT_PTR ServiceCallWithLParam (WPARAM wParam, LPARAM lParam);
+INT_PTR ServiceCallWithFParam (WPARAM wParam, LPARAM lParam, LPARAM fParam);
int ActionsChanged(WPARAM wParam, LPARAM lParam);
void AddActionItem(TChain NewAction, int Index);
void SetActionDesc(MyActionItem* ActionItem, TChain NewAction);
void DeleteActionItem(MyActionItem* ActionItem, int ActionIndex);
int OptInit(WPARAM wParam, LPARAM lParam);
-BOOL CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
+INT_PTR CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
void FillListViewWithActions();
int OptActiveItem;
HWND hListView;
@@ -229,6 +229,8 @@ void DeleteActionItem(MyActionItem* ActionItem, int ActionIndex) { DBDeleteContactSetting(NULL, MODULE, text);
strcpy(szDest, "MMenuName");
DBDeleteContactSetting(NULL, MODULE, text);
+ strcpy(szDest, "MMenuVarStr");
+ DBDeleteContactSetting(NULL, MODULE, text);
}
// ContactMenu items
@@ -295,7 +297,7 @@ int ModulesLoaded(WPARAM wParam, LPARAM lParam) { bVariablePresents = ServiceExists(MS_VARS_FORMATSTRING);
bTrayMenuPresents = ServiceExists(MS_CLIST_ADDTRAYMENUITEM);
- hServiceWithLParam = CreateServiceFunction(SERVICE_WITH_LPARAM_NAME,&ServiceCallWithLParam);
+ hServiceWithLParam = CreateServiceFunction(SERVICE_WITH_LPARAM_NAME, &ServiceCallWithLParam);
for (i=0;i<ActionsCount;i++) {
AddActionItem(*pActionsList, i);
pActionsList = (PChain)((BYTE*)pActionsList + dwActionStructLen);
@@ -401,12 +403,12 @@ void SetAllActionUsers(MyActionItem* ActionItem) { }
}
-static int ServiceCallWithLParam (WPARAM wParam, LPARAM lParam){
+INT_PTR ServiceCallWithLParam (WPARAM wParam, LPARAM lParam){
CallService(MS_ACT_RUNBYID, lParam, 0);
return 0;
}
-static int ServiceCallWithFParam (WPARAM wParam, LPARAM lParam, LPARAM fParam){
+INT_PTR ServiceCallWithFParam (WPARAM wParam, LPARAM lParam, LPARAM fParam){
CallService(MS_ACT_RUNBYID, fParam, wParam);
return 0;
}
@@ -431,7 +433,7 @@ int ActionsChanged(WPARAM wParam, LPARAM lParam) { bTrayMenuPresents = ServiceExists(MS_CLIST_ADDTRAYMENUITEM);
if(hServiceWithLParam == NULL)
- hServiceWithLParam = CreateServiceFunction(SERVICE_WITH_LPARAM_NAME,&ServiceCallWithLParam);
+ hServiceWithLParam = CreateServiceFunction(SERVICE_WITH_LPARAM_NAME, &ServiceCallWithLParam);
for (i=0;i<ActionsCount;i++) {
if(wParam & (ACTM_NEW | ACTM_RENAME | ACTM_SORT | ACTM_DELETE)) {
MyActionItem *pFoundListItem = NULL;
@@ -517,6 +519,12 @@ int ReadSetting(MyActionItem* ActionItem){ DBFreeVariant(&dbv);
result++;
}
+ strcpy(szDest, "MMenuVarStr");
+ if(!DBGetContactSettingTString(NULL, MODULE, text, &dbv2)) {
+ _tcscpy(ActionItem->tszMMenuShowWhenVars, dbv2.ptszVal);
+ DBFreeVariant(&dbv2);
+ result++;
+ }
strcpy(szDest, "CMenuName");
if(!DBGetContactSettingTString(NULL, MODULE, text, &dbv)) {
_tcscpy(ActionItem->tszCMenuNameVars, dbv.ptszVal);
@@ -564,6 +572,11 @@ void WriteSetting(MyActionItem* ActionItem){ DBDeleteContactSetting(NULL, MODULE, text);
else
DBWriteContactSettingTString(NULL, MODULE, text, ActionItem->tszMMenuNameVars);
+ strcpy(szDest, "MMenuVarStr");
+ if(ActionItem->tszMMenuShowWhenVars[0] == 0)
+ DBDeleteContactSetting(NULL, MODULE, text);
+ else
+ DBWriteContactSettingTString(NULL, MODULE, text, ActionItem->tszMMenuShowWhenVars);
strcpy(szDest, "CMenuName");
if(ActionItem->tszCMenuNameVars[0] == 0)
DBDeleteContactSetting(NULL, MODULE, text);
@@ -649,6 +662,7 @@ void DeleteMainMenuItem(MyActionItem* ActionItem) { int PreBuildMainMenu(WPARAM wParam,LPARAM lParam){
int i;
TCHAR* tszVarResult;
+ TCHAR tszVarResultCopy[MAX_ACT_DESC_LEN];
// HANDLE hContact = (HANDLE) wParam;
// char* szProto = ( char* )CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0);
for (i=0; i<ActionItemsList.realCount;i++) {
@@ -656,17 +670,43 @@ int PreBuildMainMenu(WPARAM wParam,LPARAM lParam){ if(ActItem->hMainMenuItem) {
CLISTMENUITEM clmi = {0};
clmi.cbSize = sizeof(clmi);
- clmi.flags = CMIM_NAME | CMIF_TCHAR;
- clmi.ptszName = ActItem->tszActDescr;
+ clmi.flags = CMIM_FLAGS | CMIF_HIDDEN;
+ if ( bVariablePresents &&
+ (ActItem->wFlags & UAF_REGMMENU) &&
+ (ActItem->wFlags & UAF_MMENU_VARS) &&
+ (ActItem->tszMMenuShowWhenVars[0] != 0) ) {
+ tszVarResult = variables_parse(ActItem->tszMMenuShowWhenVars, (TCHAR *)NULL, (HANDLE) wParam);
+ if (_tcscmp(tszVarResult, _T("1")) == 0) {
+ //show menuitem
+ clmi.flags = CMIM_FLAGS;
+ }
+ variables_free(tszVarResult);
+ }
+ else if( (ActItem->wFlags & UAF_REGMMENU) && !(ActItem->wFlags & UAF_MMENU_VARS) ) {
+ //show menuitem
+ clmi.flags = CMIM_FLAGS;
+ }
+
+ // Name through Vars
if ( bVariablePresents &&
(ActItem->wFlags & UAF_REGMMENU) &&
(ActItem->tszMMenuNameVars[0] != 0) ) {
tszVarResult = variables_parse(ActItem->tszMMenuNameVars, (TCHAR *)NULL, (HANDLE) wParam);
- if (tszVarResult[0] != 0)
- clmi.ptszName = tszVarResult;
- CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) ActItem->hMainMenuItem, (LPARAM)&clmi);
+ if (tszVarResult[0] != 0) {
+ _tcsncpy(tszVarResultCopy, tszVarResult, MAX_ACT_DESC_LEN);
+ clmi.ptszName = tszVarResultCopy;
+ }
+ else
+ clmi.ptszName = ActItem->tszActDescr;
+ clmi.flags |= CMIM_NAME | CMIF_TCHAR;
variables_free(tszVarResult);
- } } }
+ }
+ if (!_tcscmp(ActItem->tszMMenuNameVars, _T("-----"))) {
+ //clmi.flags |= CMIF_HIDDEN;
+ }
+ CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) ActItem->hMainMenuItem, (LPARAM)&clmi);
+ }
+ }
return 0;
}
@@ -1084,7 +1124,7 @@ int OptInit(WPARAM wParam, LPARAM lParam) { return 0;
}
-BOOL CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
+INT_PTR CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
LOGFONT lf;
HFONT hf;
switch ( msg ) {
@@ -1100,25 +1140,30 @@ BOOL CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) char *szTipInfo = (char *)CallService(MS_VARS_GETSKINITEM, 0, (LPARAM)VSI_HELPTIPTEXT);
if (hIcon != NULL) {
SendMessage(GetDlgItem(hwndDlg, IDC_BTMMNVARSHELP), BM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM)hIcon);
+ SendMessage(GetDlgItem(hwndDlg, IDC_BTMMSVARSHELP), BM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM)hIcon);
SendMessage(GetDlgItem(hwndDlg, IDC_BTCMNVARSHELP), BM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM)hIcon);
SendMessage(GetDlgItem(hwndDlg, IDC_BTCMSVARSHELP), BM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM)hIcon);
}
else {
SetDlgItemText(hwndDlg, IDC_BTMMNVARSHELP, _T("V"));
+ SetDlgItemText(hwndDlg, IDC_BTMMSVARSHELP, _T("V"));
SetDlgItemText(hwndDlg, IDC_BTCMNVARSHELP, _T("V"));
SetDlgItemText(hwndDlg, IDC_BTCMSVARSHELP, _T("V"));
}
if (szTipInfo == NULL) {
SendMessage(GetDlgItem(hwndDlg, IDC_BTMMNVARSHELP), BUTTONADDTOOLTIP, (WPARAM)Translate("Open string formatting help for MainMenuitem name"), 0);
+ SendMessage(GetDlgItem(hwndDlg, IDC_BTMMSVARSHELP), BUTTONADDTOOLTIP, (WPARAM)Translate("Open string formatting help for MainMenuitem showing"), 0);
SendMessage(GetDlgItem(hwndDlg, IDC_BTCMNVARSHELP), BUTTONADDTOOLTIP, (WPARAM)Translate("Open string formatting help for ContactMenuitem name"), 0);
SendMessage(GetDlgItem(hwndDlg, IDC_BTCMSVARSHELP), BUTTONADDTOOLTIP, (WPARAM)Translate("Open string formatting help for ContactMenuitem showing"), 0);
}
else {
SendMessage(GetDlgItem(hwndDlg, IDC_BTMMNVARSHELP), BUTTONADDTOOLTIP, (WPARAM)szTipInfo, 0);
+ SendMessage(GetDlgItem(hwndDlg, IDC_BTMMSVARSHELP), BUTTONADDTOOLTIP, (WPARAM)szTipInfo, 0);
SendMessage(GetDlgItem(hwndDlg, IDC_BTCMNVARSHELP), BUTTONADDTOOLTIP, (WPARAM)szTipInfo, 0);
SendMessage(GetDlgItem(hwndDlg, IDC_BTCMSVARSHELP), BUTTONADDTOOLTIP, (WPARAM)szTipInfo, 0);
}
SendDlgItemMessage(hwndDlg, IDC_BTMMNVARSHELP, BUTTONSETASFLATBTN, 0, 0);
+ SendDlgItemMessage(hwndDlg, IDC_BTMMSVARSHELP, BUTTONSETASFLATBTN, 0, 0);
SendDlgItemMessage(hwndDlg, IDC_BTCMNVARSHELP, BUTTONSETASFLATBTN, 0, 0);
SendDlgItemMessage(hwndDlg, IDC_BTCMSVARSHELP, BUTTONSETASFLATBTN, 0, 0);
}
@@ -1176,9 +1221,16 @@ BOOL CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) if ((HIWORD(wParam) == EN_CHANGE) && !bRefreshing)
GetDlgItemText(hwndDlg, IDC_EDCMENUPN, ActItem->tszCMenuPopup, MAX_ACT_DESC_LEN);
break;
+ case IDC_CHBMMVARS:
+ ActItem->wFlags ^= UAF_MMENU_VARS;
+ break;
case IDC_CHBCMVARS:
ActItem->wFlags ^= UAF_CMENU_VARS;
break;
+ case IDC_EDMMENUVARSTR:
+ if ((HIWORD(wParam) == EN_CHANGE) && !bRefreshing)
+ GetDlgItemText(hwndDlg, IDC_EDMMENUVARSTR, ActItem->tszMMenuShowWhenVars, MAX_VARSCRIPT_LEN);
+ break;
case IDC_EDCMENUVARSTR:
if ((HIWORD(wParam) == EN_CHANGE) && !bRefreshing)
GetDlgItemText(hwndDlg, IDC_EDCMENUVARSTR, ActItem->tszCMenuShowWhenVars, MAX_VARSCRIPT_LEN);
@@ -1196,6 +1248,9 @@ BOOL CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) case IDC_BTMMNVARSHELP:
variables_showhelp(hwndDlg, IDC_EDMMENUN, VHF_FULLDLG|VHF_SETLASTSUBJECT, NULL, NULL);
break;
+ case IDC_BTMMSVARSHELP:
+ variables_showhelp(hwndDlg, IDC_EDMMENUVARSTR, VHF_FULLDLG|VHF_SETLASTSUBJECT, NULL, NULL);
+ break;
case IDC_BTCMNVARSHELP:
variables_showhelp(hwndDlg, IDC_EDCMENUN, VHF_FULLDLG|VHF_SETLASTSUBJECT, NULL, NULL);
break;
@@ -1249,6 +1304,8 @@ BOOL CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) CheckDlgButton(hwndDlg, IDC_CHBCMENUITEM, (ActItem->wFlags & UAF_REGCMENU) ? BST_CHECKED : BST_UNCHECKED);
SetDlgItemText(hwndDlg, IDC_EDCMENUN, ActItem->tszCMenuNameVars);
SetDlgItemText(hwndDlg, IDC_EDCMENUPN, ActItem->tszCMenuPopup);
+ CheckDlgButton(hwndDlg, IDC_CHBMMVARS, (ActItem->wFlags & UAF_MMENU_VARS) ? BST_CHECKED : BST_UNCHECKED);
+ SetDlgItemText(hwndDlg, IDC_EDMMENUVARSTR, ActItem->tszMMenuShowWhenVars);
CheckDlgButton(hwndDlg, IDC_CHBCMVARS, (ActItem->wFlags & UAF_CMENU_VARS) ? BST_CHECKED : BST_UNCHECKED);
SetDlgItemText(hwndDlg, IDC_EDCMENUVARSTR, ActItem->tszCMenuShowWhenVars);
@@ -1325,10 +1382,13 @@ void FillListViewWithActions() { ShowWindow(GetDlgItem(hDialogWIndow, IDC_BTMMNVARSHELP), ((ActionItemsList.realCount>0) && bVariablePresents)? SW_SHOW : SW_HIDE);
EnableWindow(GetDlgItem(hDialogWIndow, IDC_BTCMNVARSHELP), (ActionItemsList.realCount>0) && bVariablePresents);
+ ShowWindow(GetDlgItem(hDialogWIndow, IDC_BTMMSVARSHELP), (ActionItemsList.realCount>0) && bVariablePresents);
ShowWindow(GetDlgItem(hDialogWIndow, IDC_BTCMSVARSHELP), (ActionItemsList.realCount>0) && bVariablePresents);
EnableWindow(GetDlgItem(hDialogWIndow, IDC_EDMMENUN), (ActionItemsList.realCount>0) && bVariablePresents);
EnableWindow(GetDlgItem(hDialogWIndow, IDC_EDCMENUN), (ActionItemsList.realCount>0) && bVariablePresents);
+ EnableWindow(GetDlgItem(hDialogWIndow, IDC_EDMMENUVARSTR), (ActionItemsList.realCount>0) && bVariablePresents);
EnableWindow(GetDlgItem(hDialogWIndow, IDC_EDCMENUVARSTR), (ActionItemsList.realCount>0) && bVariablePresents);
+ EnableWindow(GetDlgItem(hDialogWIndow, IDC_CHBMMVARS), (ActionItemsList.realCount>0) && bVariablePresents);
EnableWindow(GetDlgItem(hDialogWIndow, IDC_CHBCMVARS), (ActionItemsList.realCount>0) && bVariablePresents);
EnableWindow(GetDlgItem(hDialogWIndow, IDC_CHBTTBB), (ActionItemsList.realCount>0) && bTTBPresents);
|