void InitTimeZones(void) { REG_TZI_FORMAT tzi; HKEY hKey; const TCHAR *tszKey = _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones"); /* * use GetDynamicTimeZoneInformation() on Vista+ - this will return a structure with * the registry key name, so finding our own time zone later will be MUCH easier for * localized systems or systems with a MUI pack installed */ if (IsWinVerVistaPlus()) pfnGetDynamicTimeZoneInformation = (pfnGetDynamicTimeZoneInformation_t)GetProcAddress(GetModuleHandle(_T("kernel32")), "GetDynamicTimeZoneInformation"); if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, tszKey, 0, KEY_ENUMERATE_SUB_KEYS, &hKey)) { DWORD dwIndex = 0; HKEY hSubKey; TCHAR tszName[MIM_TZ_NAMELEN]; DWORD dwSize = _countof(tszName); while (ERROR_NO_MORE_ITEMS != RegEnumKeyEx(hKey, dwIndex++, tszName, &dwSize, NULL, NULL, 0, NULL)) { if (ERROR_SUCCESS == RegOpenKeyEx(hKey, tszName, 0, KEY_QUERY_VALUE, &hSubKey)) { dwSize = sizeof(tszName); DWORD dwLength = sizeof(tzi); if (ERROR_SUCCESS != RegQueryValueEx(hSubKey, _T("TZI"), NULL, NULL, (unsigned char *)&tzi, &dwLength)) continue; MIM_TIMEZONE *tz = new MIM_TIMEZONE; tz->tzi.Bias = tzi.Bias; tz->tzi.StandardDate = tzi.StandardDate; tz->tzi.StandardBias = tzi.StandardBias; tz->tzi.DaylightDate = tzi.DaylightDate; tz->tzi.DaylightBias = tzi.DaylightBias; mir_tstrcpy(tz->tszName, tszName); tz->hash = mir_hashstrT(tszName); tz->offset = INT_MIN; GetLocalizedString(hSubKey, _T("Display"), tz->szDisplay, _countof(tz->szDisplay)); GetLocalizedString(hSubKey, _T("Std"), tz->tzi.StandardName, _countof(tz->tzi.StandardName)); GetLocalizedString(hSubKey, _T("Dlt"), tz->tzi.DaylightName, _countof(tz->tzi.DaylightName)); g_timezones.insert(tz); g_timezonesBias.insert(tz); RegCloseKey(hSubKey); } dwSize = _countof(tszName); } RegCloseKey(hKey); } RecalculateTime(); }
CGUIControl* CGUIDialogSettingsBase::AddLabel(float width, int &iControlID, int label) { if (m_pOriginalGroupTitle == NULL) return NULL; CGUIControl *pControl = new CGUILabelControl(*m_pOriginalGroupTitle); if (pControl == NULL) return NULL; ((CGUILabelControl *)pControl)->SetLabel(GetLocalizedString(label)); return AddSettingControl(pControl, BaseSettingControlPtr(new CGUIControlGroupTitleSetting((CGUILabelControl *)pControl, iControlID)), width, iControlID); }
//-------------------------------------------------------- // Will get the control and localized string by "key" static void SetText(HWND aParent, UINT aId, nsIStringBundle* aStrBundle, const char* aKey) { HWND wnd = GetDlgItem (aParent, aId); if (!wnd) { return; } nsAutoString str; nsresult rv = GetLocalizedString(aStrBundle, aKey, str); if (NS_SUCCEEDED(rv)) { SetTextOnWnd(wnd, str); } }
std::string CGUIDialogAddonSettings::GetSettingsLabel(std::shared_ptr<CSetting> setting) { if (setting == nullptr) return ""; std::string label = GetLocalizedString(setting->GetLabel()); if (!label.empty()) return label; // try the addon settings label = m_addon->GetSettings()->GetSettingLabel(setting->GetLabel()); if (!label.empty()) return label; return CGUIDialogSettingsManagerBase::GetSettingsLabel(setting); }
void CGUIDialogSettingsBase::SetControlLabel(int controlId, const CVariant &label) { if (GetControl(controlId) == NULL) return; if (label.isString()) SET_CONTROL_LABEL(controlId, label.asString()); else if (label.isInteger() && label.asInteger() >= 0) { int labelId = static_cast<uint32_t>(label.asInteger()); std::string localizedString = GetLocalizedString(labelId); if (!localizedString.empty()) SET_CONTROL_LABEL(controlId, localizedString); else SET_CONTROL_LABEL(controlId, labelId); } else SET_CONTROL_LABEL(controlId, ""); }
void InitTimeZones(void) { REG_TZI_FORMAT tzi; HKEY hKey; const TCHAR *tszKey = IsWinVerNT() ? _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones") : _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Time Zones"); /* * use GetDynamicTimeZoneInformation() on Vista+ - this will return a structure with * the registry key name, so finding our own time zone later will be MUCH easier for * localized systems or systems with a MUI pack installed */ if (IsWinVerVistaPlus()) pfnGetDynamicTimeZoneInformation = (pfnGetDynamicTimeZoneInformation_t)GetProcAddress(GetModuleHandle(_T("kernel32")), "GetDynamicTimeZoneInformation"); if (IsWinVer2000Plus()) { pfnSHLoadIndirectString = (pfnSHLoadIndirectString_t)GetProcAddress(GetModuleHandle(_T("shlwapi")), "SHLoadIndirectString"); pfnGetSystemDefaultUILanguage = (pfnGetSystemDefaultUILanguage_t)GetProcAddress(GetModuleHandle(_T("kernel32")), "GetSystemDefaultUILanguage"); pfnGetUserDefaultUILanguage = (pfnGetUserDefaultUILanguage_t)GetProcAddress(GetModuleHandle(_T("kernel32")), "GetUserDefaultUILanguage"); muiInstalled = pfnSHLoadIndirectString && pfnGetSystemDefaultUILanguage() != pfnGetUserDefaultUILanguage(); } pfnSendMessageW = (pfnSendMessageW_t)GetProcAddress(GetModuleHandle(_T("user32")), "SendMessageW"); if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, tszKey, 0, KEY_ENUMERATE_SUB_KEYS, &hKey)) { DWORD dwIndex = 0; HKEY hSubKey; TCHAR tszName[MIM_TZ_NAMELEN]; DWORD dwSize = SIZEOF(tszName); while (ERROR_NO_MORE_ITEMS != RegEnumKeyEx(hKey, dwIndex++, tszName, &dwSize, NULL, NULL, 0, NULL)) { if (ERROR_SUCCESS == RegOpenKeyEx(hKey, tszName, 0, KEY_QUERY_VALUE, &hSubKey)) { dwSize = sizeof(tszName); DWORD dwLength = sizeof(tzi); if (ERROR_SUCCESS != RegQueryValueEx(hSubKey, _T("TZI"), NULL, NULL, (unsigned char *)&tzi, &dwLength)) continue; MIM_TIMEZONE *tz = new MIM_TIMEZONE; tz->tzi.Bias = tzi.Bias; tz->tzi.StandardDate = tzi.StandardDate; tz->tzi.StandardBias = tzi.StandardBias; tz->tzi.DaylightDate = tzi.DaylightDate; tz->tzi.DaylightBias = tzi.DaylightBias; _tcscpy(tz->tszName, tszName); tz->hash = hashstr(tszName); tz->offset = INT_MIN; GetLocalizedString(hSubKey, _T("Display"), tz->szDisplay, SIZEOF(tz->szDisplay)); GetLocalizedString(hSubKey, _T("Std"), tz->tzi.StandardName, SIZEOF(tz->tzi.StandardName)); GetLocalizedString(hSubKey, _T("Dlt"), tz->tzi.DaylightName, SIZEOF(tz->tzi.DaylightName)); g_timezones.insert(tz); g_timezonesBias.insert(tz); RegCloseKey(hSubKey); } dwSize = SIZEOF(tszName); } RegCloseKey(hKey); } RecalculateTime(); CreateServiceFunction(MS_SYSTEM_GET_TMI, GetTimeApi); CreateServiceFunction(MS_DB_TIME_TIMESTAMPTOLOCAL, TimestampToLocal); CreateServiceFunction(MS_DB_TIME_TIMESTAMPTOSTRINGT, TimestampToStringT); #ifdef _UNICODE CreateServiceFunction(MS_DB_TIME_TIMESTAMPTOSTRING, TimestampToStringA); #else CreateServiceFunction(MS_DB_TIME_TIMESTAMPTOSTRING, TimestampToStringT); #endif tmi.cbSize = sizeof(tmi); GetTimeApi(0, (LPARAM)&tmi); }
std::string CGUIDialogSettingsBase::GetSettingsLabel(CSetting *pSetting) { return GetLocalizedString(pSetting->GetLabel()); }
void CGUIDialogSettingsBase::SetupControls(bool createSettings /* = true */) { // cleanup first, if necessary FreeControls(); // get the section CSettingSection *section = GetSection(); if (section == NULL) return; // update the screen string SetHeading(section->GetLabel()); // get the categories we need m_categories = section->GetCategories((SettingLevel)GetSettingLevel()); if (m_categories.empty()) m_categories.push_back(m_dummyCategory); // get all controls m_pOriginalSpin = dynamic_cast<CGUISpinControlEx*>(GetControl(CONTROL_DEFAULT_SPIN)); m_pOriginalSlider = dynamic_cast<CGUISettingsSliderControl*>(GetControl(CONTROL_DEFAULT_SLIDER)); m_pOriginalRadioButton = dynamic_cast<CGUIRadioButtonControl *>(GetControl(CONTROL_DEFAULT_RADIOBUTTON)); m_pOriginalCategoryButton = dynamic_cast<CGUIButtonControl *>(GetControl(CONTROL_DEFAULT_CATEGORY_BUTTON)); m_pOriginalButton = dynamic_cast<CGUIButtonControl *>(GetControl(CONTROL_DEFAULT_BUTTON)); m_pOriginalImage = dynamic_cast<CGUIImage *>(GetControl(CONTROL_DEFAULT_SEPARATOR)); m_pOriginalEdit = dynamic_cast<CGUIEditControl *>(GetControl(CONTROL_DEFAULT_EDIT)); m_pOriginalGroupTitle = dynamic_cast<CGUILabelControl *>(GetControl(CONTROL_DEFAULT_SETTING_LABEL)); if (!m_pOriginalEdit && m_pOriginalButton) { m_pOriginalEdit = new CGUIEditControl(*m_pOriginalButton); m_newOriginalEdit = true; } if (m_pOriginalSpin) m_pOriginalSpin->SetVisible(false); if (m_pOriginalSlider) m_pOriginalSlider->SetVisible(false); if (m_pOriginalRadioButton) m_pOriginalRadioButton->SetVisible(false); if (m_pOriginalButton) m_pOriginalButton->SetVisible(false); if (m_pOriginalCategoryButton) m_pOriginalCategoryButton->SetVisible(false); if (m_pOriginalEdit) m_pOriginalEdit->SetVisible(false); if (m_pOriginalImage) m_pOriginalImage->SetVisible(false); if (m_pOriginalGroupTitle) m_pOriginalGroupTitle->SetVisible(false); if (m_pOriginalCategoryButton != NULL) { // setup our control groups... CGUIControlGroupList *group = dynamic_cast<CGUIControlGroupList *>(GetControl(CATEGORY_GROUP_ID)); if (!group) return; // go through the categories and create the necessary buttons int buttonIdOffset = 0; for (SettingCategoryList::const_iterator category = m_categories.begin(); category != m_categories.end(); ++category) { CGUIButtonControl *pButton = NULL; if (m_pOriginalCategoryButton->GetControlType() == CGUIControl::GUICONTROL_TOGGLEBUTTON) pButton = new CGUIToggleButtonControl(*(CGUIToggleButtonControl *)m_pOriginalCategoryButton); else pButton = new CGUIButtonControl(*m_pOriginalCategoryButton); pButton->SetLabel(GetLocalizedString((*category)->GetLabel())); pButton->SetID(CONTROL_SETTINGS_START_BUTTONS + buttonIdOffset); pButton->SetVisible(true); pButton->AllocResources(); group->AddControl(pButton); buttonIdOffset++; } } if (createSettings) CreateSettings(); // set focus correctly depending on whether there are categories visible or not if (m_pOriginalCategoryButton == NULL && (m_defaultControl <= 0 || m_defaultControl == CATEGORY_GROUP_ID)) m_defaultControl = SETTINGS_GROUP_ID; else if (m_pOriginalCategoryButton != NULL && m_defaultControl <= 0) m_defaultControl = CATEGORY_GROUP_ID; }