mirror of
https://github.com/reactos/reactos.git
synced 2025-07-24 17:43:57 +00:00
- Implement "Set Default" button
- Added checking whether there was already layout svn path=/trunk/; revision=33515
This commit is contained in:
parent
3c2cc97af2
commit
5a803bf1bf
15 changed files with 148 additions and 10 deletions
|
@ -74,7 +74,7 @@ AddNewLayout(HWND hwndDlg)
|
|||
{
|
||||
TCHAR NewLayout[CCH_ULONG_DEC + 1], Lang[MAX_PATH],
|
||||
LangID[CCH_LAYOUT_ID + 1], Layout[MAX_PATH],
|
||||
SubPath[CCH_LAYOUT_ID + 1];
|
||||
SubPath[CCH_LAYOUT_ID + 1], szMessage[MAX_PATH];
|
||||
INT iLayout, iLang;
|
||||
HKEY hKey, hSubKey;
|
||||
DWORD cValues;
|
||||
|
@ -92,10 +92,20 @@ AddNewLayout(HWND hwndDlg)
|
|||
|
||||
iLang = SendMessage(hLangList, CB_GETCURSEL, 0, 0);
|
||||
lcid = SendMessage(hLangList, CB_GETITEMDATA, iLang, 0);
|
||||
pts = (PTSTR) SendMessage(hLayoutList, CB_GETITEMDATA, iLayout, 0);
|
||||
|
||||
GetLocaleInfo(MAKELCID(lcid, SORT_DEFAULT), LOCALE_ILANGUAGE, Lang, sizeof(Lang) / sizeof(TCHAR));
|
||||
wsprintf(LangID, _T("0000%s"), Lang);
|
||||
|
||||
if (IsLayoutExists(pts, LangID))
|
||||
{
|
||||
LoadString(hApplet, IDS_LAYOUT_EXISTS2, szMessage, sizeof(szMessage) / sizeof(TCHAR));
|
||||
MessageBox(hwndDlg, szMessage, NULL, MB_OK | MB_ICONINFORMATION);
|
||||
|
||||
RegCloseKey(hKey);
|
||||
return;
|
||||
}
|
||||
|
||||
if (GetLayoutName(LangID, Layout))
|
||||
{
|
||||
if ((SendMessage(hLayoutList, CB_SELECTSTRING, (WPARAM) -1, (LPARAM)Layout) != CB_ERR)&&
|
||||
|
@ -106,8 +116,6 @@ AddNewLayout(HWND hwndDlg)
|
|||
else SubPath[0] = '\0';
|
||||
}
|
||||
|
||||
pts = (PTSTR) SendMessage(hLayoutList, CB_GETITEMDATA, iLayout, 0);
|
||||
|
||||
if (_tcslen(SubPath) != 0)
|
||||
{
|
||||
if (RegCreateKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Substitutes"), 0, NULL,
|
||||
|
|
|
@ -41,6 +41,8 @@ BOOL
|
|||
GetLayoutName(LPCTSTR szLCID, LPTSTR szName);
|
||||
VOID
|
||||
UpdateLayoutsList(VOID);
|
||||
BOOL
|
||||
IsLayoutExists(LPTSTR szLayoutID, LPTSTR szLangID);
|
||||
|
||||
/* keysettings.c */
|
||||
INT_PTR CALLBACK
|
||||
|
|
|
@ -87,6 +87,8 @@ BEGIN
|
|||
IDS_LAYOUT "Êëàâèàòóðíà ïîäðåäáà"
|
||||
IDS_REM_QUESTION "Do you want to remove selected keyboard layout?"
|
||||
IDS_CONFIRMATION "Confirmation"
|
||||
IDS_LAYOUT_EXISTS "This layout already exists."
|
||||
IDS_LAYOUT_EXISTS2 "This layout already exists and can not be added."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -88,6 +88,8 @@ BEGIN
|
|||
IDS_LAYOUT "Tastaturlayout"
|
||||
IDS_REM_QUESTION "Do you want to remove selected keyboard layout?"
|
||||
IDS_CONFIRMATION "Confirmation"
|
||||
IDS_LAYOUT_EXISTS "This layout already exists."
|
||||
IDS_LAYOUT_EXISTS2 "This layout already exists and can not be added."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -87,6 +87,8 @@ BEGIN
|
|||
IDS_LAYOUT "ÄéÜôáîç ðëçêôñïëïãßïõ"
|
||||
IDS_REM_QUESTION "Do you want to remove selected keyboard layout?"
|
||||
IDS_CONFIRMATION "Confirmation"
|
||||
IDS_LAYOUT_EXISTS "This layout already exists."
|
||||
IDS_LAYOUT_EXISTS2 "This layout already exists and can not be added."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -85,8 +85,10 @@ BEGIN
|
|||
IDS_WHATS_THIS "What's This?"
|
||||
IDS_LANGUAGE "Language"
|
||||
IDS_LAYOUT "Keyboard Layout"
|
||||
IDS_REM_QUESTION "Do you want to remove selected keyboard layout?"
|
||||
IDS_CONFIRMATION "Confirmation"
|
||||
IDS_REM_QUESTION "Do you want to remove selected keyboard layout?"
|
||||
IDS_CONFIRMATION "Confirmation"
|
||||
IDS_LAYOUT_EXISTS "This layout already exists."
|
||||
IDS_LAYOUT_EXISTS2 "This layout already exists and can not be added."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -92,6 +92,8 @@ BEGIN
|
|||
IDS_LAYOUT "Distribución del teclado"
|
||||
IDS_REM_QUESTION "¿Quiere eliminar la distribución del teclado seleccionada?"
|
||||
IDS_CONFIRMATION "Confirmación"
|
||||
IDS_LAYOUT_EXISTS "This layout already exists."
|
||||
IDS_LAYOUT_EXISTS2 "This layout already exists and can not be added."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -87,6 +87,8 @@ BEGIN
|
|||
IDS_LAYOUT "Keyboard Layout"
|
||||
IDS_REM_QUESTION "Do you want to remove selected keyboard layout?"
|
||||
IDS_CONFIRMATION "Confirmation"
|
||||
IDS_LAYOUT_EXISTS "This layout already exists."
|
||||
IDS_LAYOUT_EXISTS2 "This layout already exists and can not be added."
|
||||
END
|
||||
|
||||
/* FIXME : To improve/complete */
|
||||
|
|
|
@ -87,6 +87,8 @@ BEGIN
|
|||
IDS_LAYOUT "Disposizione tastiera"
|
||||
IDS_REM_QUESTION "Volete rimuovere la disposizione di tastiera selezionata?"
|
||||
IDS_CONFIRMATION "Conferma"
|
||||
IDS_LAYOUT_EXISTS "This layout already exists."
|
||||
IDS_LAYOUT_EXISTS2 "This layout already exists and can not be added."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -94,6 +94,8 @@ BEGIN
|
|||
IDS_LAYOUT "Uk³ad klawiatury"
|
||||
IDS_REM_QUESTION "Do you want to remove selected keyboard layout?"
|
||||
IDS_CONFIRMATION "Confirmation"
|
||||
IDS_LAYOUT_EXISTS "This layout already exists."
|
||||
IDS_LAYOUT_EXISTS2 "This layout already exists and can not be added."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -85,8 +85,10 @@ BEGIN
|
|||
IDS_WHATS_THIS "×òî ýòî?"
|
||||
IDS_LANGUAGE "ßçûê ââîäà"
|
||||
IDS_LAYOUT "Ðàñêëàäêà"
|
||||
IDS_REM_QUESTION "Âû äåéñòâèòåëüíî õîòèòå óäàëèòü âûáðàííóþ ðàñêëàäêó êëàâèàòóðû?"
|
||||
IDS_CONFIRMATION "Ïîäòâåðæäåíèå"
|
||||
IDS_REM_QUESTION "Вы действительно хотите удалить выбранную раскладку клавиатуры?"
|
||||
IDS_CONFIRMATION "Подтверждение"
|
||||
IDS_LAYOUT_EXISTS "Такая раскладка уже существует."
|
||||
IDS_LAYOUT_EXISTS2 "Такая раскладка уже существует и не может быть добавлена."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -91,6 +91,8 @@ BEGIN
|
|||
IDS_LAYOUT "Rozloženie klávesnice"
|
||||
IDS_REM_QUESTION "Do you want to remove selected keyboard layout?"
|
||||
IDS_CONFIRMATION "Confirmation"
|
||||
IDS_LAYOUT_EXISTS "This layout already exists."
|
||||
IDS_LAYOUT_EXISTS2 "This layout already exists and can not be added."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -96,6 +96,8 @@ BEGIN
|
|||
IDS_LAYOUT "Keyboard Layout"
|
||||
IDS_REM_QUESTION "Do you want to remove selected keyboard layout?"
|
||||
IDS_CONFIRMATION "Confirmation"
|
||||
IDS_LAYOUT_EXISTS "This layout already exists."
|
||||
IDS_LAYOUT_EXISTS2 "This layout already exists and can not be added."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -52,6 +52,8 @@
|
|||
#define IDS_LAYOUT 9
|
||||
#define IDS_REM_QUESTION 10
|
||||
#define IDS_CONFIRMATION 11
|
||||
#define IDS_LAYOUT_EXISTS 12
|
||||
#define IDS_LAYOUT_EXISTS2 13
|
||||
|
||||
/* Layouts */
|
||||
#define IDS_US_LAYOUT 5000
|
||||
|
|
|
@ -36,6 +36,72 @@ IsLayoutSelected()
|
|||
return iIndex;
|
||||
}
|
||||
|
||||
BOOL
|
||||
IsLayoutExists(LPTSTR szLayoutID, LPTSTR szLangID)
|
||||
{
|
||||
HKEY hKey, hSubKey;
|
||||
TCHAR szPreload[CCH_LAYOUT_ID + 1], szLayoutNum[3 + 1],
|
||||
szTmp[CCH_LAYOUT_ID + 1], szOldLangID[CCH_LAYOUT_ID + 1];
|
||||
DWORD dwIndex = 0, dwType, dwSize;
|
||||
BOOL IsLangExists = FALSE;
|
||||
LANGID langid;
|
||||
|
||||
if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Preload"),
|
||||
0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
|
||||
{
|
||||
dwSize = sizeof(szLayoutNum);
|
||||
|
||||
while (RegEnumValue(hKey, dwIndex, szLayoutNum, &dwSize, NULL, &dwType, NULL, NULL) == ERROR_SUCCESS)
|
||||
{
|
||||
dwSize = sizeof(szPreload);
|
||||
if (RegQueryValueEx(hKey, szLayoutNum, NULL, NULL, (LPBYTE)szPreload, &dwSize) != ERROR_SUCCESS)
|
||||
{
|
||||
RegCloseKey(hKey);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
langid = (LANGID)_tcstoul(szPreload, NULL, 16);
|
||||
GetLocaleInfo(langid, LOCALE_ILANGUAGE, szTmp, sizeof(szTmp) / sizeof(TCHAR));
|
||||
wsprintf(szOldLangID, _T("0000%s"), szTmp);
|
||||
|
||||
if (_tcscmp(szOldLangID, szLangID) == 0) IsLangExists = TRUE;
|
||||
|
||||
if (szPreload[0] == 'd')
|
||||
{
|
||||
if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Substitutes"),
|
||||
0, KEY_QUERY_VALUE, &hSubKey) == ERROR_SUCCESS)
|
||||
{
|
||||
dwSize = sizeof(szTmp);
|
||||
RegQueryValueEx(hSubKey, szPreload, NULL, NULL, (LPBYTE)szTmp, &dwSize);
|
||||
|
||||
if ((_tcscmp(szTmp, szLayoutID) == 0)&&(IsLangExists))
|
||||
{
|
||||
RegCloseKey(hSubKey);
|
||||
RegCloseKey(hKey);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_tcscmp(szPreload, szLayoutID) == 0)
|
||||
{
|
||||
RegCloseKey(hKey);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
IsLangExists = FALSE;
|
||||
dwSize = sizeof(szLayoutNum);
|
||||
dwIndex++;
|
||||
}
|
||||
|
||||
RegCloseKey(hKey);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static HICON
|
||||
CreateLayoutIcon(LPTSTR szInd)
|
||||
{
|
||||
|
@ -314,7 +380,7 @@ DeleteLayout(VOID)
|
|||
LVITEM item;
|
||||
HKEY hKey, hSubKey;
|
||||
HWND hLayoutList = GetDlgItem(MainDlgWnd, IDC_KEYLAYOUT_LIST);
|
||||
TCHAR szLayoutNum[10 + 1], szTitle[MAX_PATH],
|
||||
TCHAR szLayoutNum[3 + 1], szTitle[MAX_PATH],
|
||||
szConf[MAX_PATH], szPreload[CCH_LAYOUT_ID + 1];
|
||||
DWORD dwSize;
|
||||
|
||||
|
@ -368,12 +434,40 @@ DeleteLayout(VOID)
|
|||
}
|
||||
}
|
||||
|
||||
static VOID
|
||||
SetDefaultLayout()
|
||||
{
|
||||
HKL hKl;
|
||||
TCHAR szLCID[CCH_LAYOUT_ID + 1], szLayoutNum[CCH_ULONG_DEC + 1];
|
||||
LVITEM item;
|
||||
INT LayoutNum;
|
||||
|
||||
if (IsLayoutSelected() != -1)
|
||||
{
|
||||
ZeroMemory(&item, sizeof(LVITEM));
|
||||
|
||||
item.mask = LVIF_PARAM;
|
||||
item.iItem = IsLayoutSelected();
|
||||
|
||||
(VOID) ListView_GetItem(GetDlgItem(MainDlgWnd, IDC_KEYLAYOUT_LIST), &item);
|
||||
|
||||
LayoutNum = (INT) item.lParam;
|
||||
_ultot(LayoutNum, szLayoutNum, 10);
|
||||
|
||||
if (GetLayoutID(szLayoutNum, szLCID))
|
||||
{
|
||||
hKl = LoadKeyboardLayout(szLCID, KLF_ACTIVATE);
|
||||
SystemParametersInfo(SPI_SETDEFAULTINPUTLANG, 0, &hKl, SPIF_SENDWININICHANGE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static VOID
|
||||
SaveInputLang(HWND hDlg)
|
||||
{
|
||||
HKEY hKey, hSubKey;
|
||||
TCHAR szLayoutID[CCH_LAYOUT_ID + 1], szLayoutNum[CCH_ULONG_DEC + 1],
|
||||
szPreload[CCH_LAYOUT_ID + 1], LangID[CCH_LAYOUT_ID + 1],
|
||||
szPreload[CCH_LAYOUT_ID + 1], LangID[CCH_LAYOUT_ID + 1], szMessage[MAX_PATH],
|
||||
Lang[MAX_PATH], SubPath[MAX_PATH];
|
||||
PTSTR pts;
|
||||
INT iLayout;
|
||||
|
@ -405,6 +499,15 @@ SaveInputLang(HWND hDlg)
|
|||
GetLocaleInfo(langid, LOCALE_ILANGUAGE, Lang, sizeof(Lang) / sizeof(TCHAR));
|
||||
wsprintf(LangID, _T("0000%s"), Lang);
|
||||
|
||||
if (IsLayoutExists(pts, LangID))
|
||||
{
|
||||
LoadString(hApplet, IDS_LAYOUT_EXISTS, szMessage, sizeof(szMessage) / sizeof(TCHAR));
|
||||
MessageBox(hDlg, szMessage, NULL, MB_OK | MB_ICONINFORMATION);
|
||||
|
||||
RegCloseKey(hKey);
|
||||
return;
|
||||
}
|
||||
|
||||
if (szPreload[0] == 'd')
|
||||
{
|
||||
if (_tcscmp(LangID, pts) == 0)
|
||||
|
@ -614,7 +717,8 @@ SettingPageProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
|
|||
break;
|
||||
|
||||
case IDC_SET_DEFAULT:
|
||||
|
||||
SetDefaultLayout();
|
||||
UpdateLayoutsList();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue