From c1cb7d69096ff2b3fbd20d1ceeb29fefb0a5bc4a Mon Sep 17 00:00:00 2001 From: mataes2007 Date: Mon, 16 May 2011 20:27:44 +0000 Subject: useactions: added patch from NightFox git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@116 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- useactions/UseActions.c | 88 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 74 insertions(+), 14 deletions(-) (limited to 'useactions/UseActions.c') 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;itszMMenuShowWhenVars, 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; ihMainMenuItem) { 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); -- cgit v1.2.3