📄 win32preferencewindow.cpp
字号:
{
bufferSize = size;
buffer = (char*)realloc(buffer, bufferSize);
m_prefs->GetPrefString(kUsersPortablePlayersPref, buffer, &size);
}
size = bufferSize;
char* cp = buffer;
char* name = cp;
while(cp = strchr(cp, ';'))
{
*cp = 0x00;
values->portablePlayers.insert(string(name));
cp++;
name = cp;
}
if(*name)
{
values->portablePlayers.insert(string(name));
}
size = bufferSize;
if(kError_BufferTooSmall == m_prefs->GetPrefString(kWatchThisDirectoryPref, buffer, &size))
{
bufferSize = size;
buffer = (char*)realloc(buffer, bufferSize);
m_prefs->GetPrefString(kWatchThisDirectoryPref, buffer, &size);
}
cp = buffer;
name = cp;
while(cp = strchr(cp, ';'))
{
*cp = 0x00;
values->watchDirectories.insert(string(name));
cp++;
name = cp;
}
if(*name)
{
values->watchDirectories.insert(string(name));
}
int32 timeOut;
m_prefs->GetPrefInt32(kWatchThisDirTimeoutPref, &timeOut);
values->watchForNewMusic = (timeOut != 0);
size = bufferSize;
m_pThemeMan->GetCurrentTheme(values->currentTheme);
// get the other m_prefs
m_prefs->GetPrefInt32(kDecoderThreadPriorityPref, &values->decoderThreadPriority);
m_prefs->GetPrefInt32(kInputBufferSizePref, &values->inputBufferSize);
m_prefs->GetPrefInt32(kOutputBufferSizePref, &values->outputBufferSize);
m_prefs->GetPrefInt32(kPreBufferPref, &values->preBufferLength);
m_prefs->GetPrefBoolean(kStayOnTopPref, &values->stayOnTop);
m_prefs->GetPrefBoolean(kLiveInTrayPref, &values->liveInTray);
m_prefs->GetPrefBoolean(kSaveStreamsPref, &values->saveStreams);
m_prefs->GetPrefBoolean(kUseProxyPref, &values->useProxyServer);
m_prefs->GetPrefBoolean(kUseAlternateNICPref, &values->useAlternateIP);
m_prefs->GetPrefBoolean(kUseDebugLogPref, &values->enableLogging);
m_prefs->GetPrefBoolean(kLogMainPref, &values->logMain);
m_prefs->GetPrefBoolean(kLogDecodePref, &values->logDecoder);
m_prefs->GetPrefBoolean(kLogInputPref, &values->logInput);
m_prefs->GetPrefBoolean(kLogOutputPref, &values->logOutput);
m_prefs->GetPrefBoolean(kLogPerformancePref, &values->logPerformance);
m_prefs->GetPrefBoolean(kCheckForUpdatesPref, &values->checkForUpdates);
m_prefs->GetPrefBoolean(kAskToReclaimFiletypesPref, &values->askReclaimFiletypes);
m_prefs->GetPrefBoolean(kReclaimFiletypesPref, &values->reclaimFiletypes);
m_prefs->GetPrefBoolean(kShowToolbarTextLabelsPref, &values->useTextLabels);
m_prefs->GetPrefBoolean(kShowToolbarImagesPref, &values->useImages);
m_prefs->GetPrefBoolean(kSaveCurrentPlaylistOnExitPref, &values->savePlaylistOnExit);
m_prefs->GetPrefBoolean(kPlayImmediatelyPref, &values->playImmediately);
m_prefs->GetPrefBoolean(kConvertUnderscoresToSpacesPref, &values->convertUnderscores);
m_prefs->GetPrefBoolean(kCheckCDAutomaticallyPref, &values->updateCDAutomatically);
free(buffer);
}
void Win32PreferenceWindow::SavePrefsValues(PrefsStruct* values)
{
m_prefs->SetPrefString(kPMOPref, values->defaultPMO.c_str());
m_prefs->SetPrefString(kUIPref, values->defaultUI.c_str());
m_prefs->SetPrefInt32(kDecoderThreadPriorityPref, values->decoderThreadPriority);
m_prefs->SetPrefInt32(kInputBufferSizePref, values->inputBufferSize);
m_prefs->SetPrefInt32(kOutputBufferSizePref, values->outputBufferSize);
m_prefs->SetPrefInt32(kPreBufferPref, values->preBufferLength);
m_prefs->SetPrefBoolean(kStayOnTopPref, values->stayOnTop);
m_prefs->SetPrefBoolean(kLiveInTrayPref, values->liveInTray);
m_prefs->SetPrefBoolean(kSaveStreamsPref, values->saveStreams);
m_prefs->SetPrefString(kSaveStreamsDirPref, values->saveStreamsDirectory.c_str());
m_prefs->SetPrefString(kProxyHostPref, values->proxyServer.c_str());
m_prefs->SetPrefBoolean(kUseProxyPref, values->useProxyServer);
m_prefs->SetPrefString(kAlternateNICAddressPref, values->alternateIP.c_str());
m_prefs->SetPrefBoolean(kUseAlternateNICPref, values->useAlternateIP);
m_prefs->SetPrefBoolean(kUseDebugLogPref, values->enableLogging);
m_prefs->SetPrefBoolean(kLogMainPref, values->logMain);
m_prefs->SetPrefBoolean(kLogDecodePref, values->logDecoder);
m_prefs->SetPrefBoolean(kLogInputPref, values->logInput);
m_prefs->SetPrefBoolean(kLogOutputPref, values->logOutput);
m_prefs->SetPrefBoolean(kLogPerformancePref, values->logPerformance);
m_prefs->SetPrefString(kThemeDefaultFontPref, values->defaultFont.c_str());
if (m_oThemeList[values->currentTheme].length() > 0)
m_pThemeMan->UseTheme(m_oThemeList[values->currentTheme]);
m_prefs->SetPrefBoolean(kCheckForUpdatesPref, values->checkForUpdates);
m_prefs->SetPrefString(kSaveMusicDirPref, values->saveMusicDirectory.c_str());
m_prefs->SetPrefString(kPlaylistHeaderColumnsPref, values->playlistHeaderColumns.c_str());
m_prefs->SetPrefBoolean(kAskToReclaimFiletypesPref, values->askReclaimFiletypes);
m_prefs->SetPrefBoolean(kReclaimFiletypesPref, values->reclaimFiletypes);
set<string>::const_iterator i;
string portableList;
for(i = values->portablePlayers.begin();
i != values->portablePlayers.end();
i++)
{
portableList += *i;
portableList += ";";
}
m_prefs->SetPrefString(kUsersPortablePlayersPref, portableList.c_str());
m_prefs->SetPrefBoolean(kShowToolbarTextLabelsPref, values->useTextLabels);
m_prefs->SetPrefBoolean(kShowToolbarImagesPref, values->useImages);
m_prefs->SetPrefBoolean(kSaveCurrentPlaylistOnExitPref, values->savePlaylistOnExit);
m_prefs->SetPrefBoolean(kPlayImmediatelyPref, values->playImmediately);
m_prefs->SetPrefBoolean(kConvertUnderscoresToSpacesPref, values->convertUnderscores);
string dirList;
for(i = values->watchDirectories.begin();
i != values->watchDirectories.end();
i++)
{
dirList += *i;
dirList += ";";
}
m_prefs->SetPrefString(kWatchThisDirectoryPref, dirList.c_str());
m_prefs->SetPrefInt32(kWatchThisDirTimeoutPref, (values->watchForNewMusic ? kDefaultWatchThisDirTimeout : 0));
m_prefs->SetPrefBoolean(kCheckCDAutomaticallyPref, values->updateCDAutomatically);
m_prefs->SetPrefString(kMBServerPref, values->MBServerURL.c_str());
m_pContext->target->AcceptEvent(new Event(INFO_PrefsChanged));
m_currentValues = m_proposedValues = *values;
}
bool Win32PreferenceWindow::MainProc(HWND hwnd,
UINT msg,
WPARAM wParam,
LPARAM lParam)
{
bool result = false;
switch(msg)
{
case WM_INITDIALOG:
{
m_hwndPref = hwnd;
SetWindowText(hwnd, BRANDING" Preferences");
m_caption = "Testing...1...2...3...";
InitializePrefDialog();
HWND hwndList = GetDlgItem(hwnd, IDC_LIST);
HTREEITEM item = TreeView_GetRoot(hwndList);
for(uint32 i = 0; i < m_startPage; i++)
{
HTREEITEM child = TreeView_GetChild(hwndList, item);
if(child)
item = child;
else
{
HTREEITEM sibling = TreeView_GetNextSibling(hwndList, item);
if(sibling)
item = sibling;
else
{
item = TreeView_GetNextSibling(hwndList,
TreeView_GetParent(hwndList,
item));
}
}
}
TreeView_Select(hwndList, item, TVGN_CARET);
HWND hwndApply = GetDlgItem(hwnd, IDC_APPLY);
EnableWindow(hwndApply, FALSE);
//result = true;
break;
}
case WM_PAINT:
{
RECT fadeRect;
HWND hwndFade = GetDlgItem(hwnd, IDC_FADE);
GetClientRect(hwndFade, &fadeRect);
MapWindowPoints(hwndFade, hwnd, (LPPOINT)&fadeRect, 2);
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
COLORREF c1, c2, textColor;
c1 = GetSysColor(COLOR_ACTIVECAPTION);
c2 = GetSysColor(COLOR_3DFACE);
textColor = GetSysColor(COLOR_CAPTIONTEXT);
float r1 = GetRValue(c1);
float g1 = GetGValue(c1);
float b1 = GetBValue(c1);
float r2 = GetRValue(c2);
float g2 = GetGValue(c2);
float b2 = GetBValue(c2);
float r3, g3, b3;
int dx = fadeRect.right - fadeRect.left;
float dt = 1/(float)dx;
float t = 1;
for(int x = 0; x < dx; x++)
{
r3 = r1*t + r2*(1-t);
g3 = g1*t + g2*(1-t);
b3 = b1*t + b2*(1-t);
RECT rect = fadeRect;
rect.left += x;
rect.right = rect.left + 1;
HBRUSH brush = CreateSolidBrush(RGB(r3, g3, b3));
FillRect(hdc, &rect, brush);
DeleteObject(brush);
t -= dt;
}
RECT textRect = fadeRect;
textRect.left += 5;
SetTextColor(hdc, textColor);
SetBkMode(hdc, TRANSPARENT);
DrawText(hdc, m_caption.c_str(), m_caption.size(), &textRect,
DT_VCENTER|DT_SINGLELINE|DT_LEFT);
EndPaint(hwnd, &ps);
break;
}
case WM_CLOSE:
{
//PostQuitMessage(0);
EndDialog(hwnd, FALSE);
result = TRUE;
break;
}
case WM_NOTIFY:
{
LPNMTREEVIEW pnmtv = (LPNMTREEVIEW) lParam;
if(pnmtv->hdr.idFrom == IDC_LIST)
{
if(pnmtv->hdr.code == TVN_SELCHANGED)
{
ShowPrefPage((PrefPage*)pnmtv->itemOld.lParam, false);
ShowPrefPage((PrefPage*)pnmtv->itemNew.lParam, true);
}
}
break;
}
case PSM_UNCHANGED:
{
HWND hwndApply = GetDlgItem(hwnd, IDC_APPLY);
EnableWindow(hwndApply, FALSE);
break;
}
case PSM_CHANGED:
{
HWND hwndApply = GetDlgItem(hwnd, IDC_APPLY);
EnableWindow(hwndApply, TRUE);
break;
}
case WM_HELP:
{
if(m_currentPage)
SendMessage(m_currentPage->hwnd, UWM_HELP, 0, 0);
break;
}
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDCANCEL:
//PostQuitMessage(0);
//
// No changed message needs to be broadcast, really.
//
//SavePrefsValues(&m_originalValues);
EndDialog(hwnd, FALSE);
break;
case IDOK:
//PostQuitMessage(0);
SavePrefsValues(&m_proposedValues);
EndDialog(hwnd, TRUE);
break;
case IDC_HELPME:
if(m_currentPage)
SendMessage(m_currentPage->hwnd, UWM_HELP, 0, 0);
break;
case IDC_APPLY:
{
SavePrefsValues(&m_proposedValues);
HWND hwndApply = GetDlgItem(hwnd, IDC_APPLY);
EnableWindow(hwndApply, FALSE);
break;
}
}
break;
}
}
return result;
}
bool Win32PreferenceWindow::PrefGeneralProc(HWND hwnd,
UINT msg,
WPARAM wParam,
LPARAM lParam)
{
bool result = false;
switch(msg)
{
case WM_INITDIALOG:
{
// get the handles to all our controls
HWND hwndStayOnTop = GetDlgItem(hwnd, IDC_STAYONTOP);
HWND hwndLiveInTray = GetDlgItem(hwnd, IDC_TRAY);
HWND hwndAskReclaimFiletypes = GetDlgItem(hwnd, IDC_ASKRECLAIM);
HWND hwndReclaimFiletypes = GetDlgItem(hwnd, IDC_RECLAIMFILETYPES);
HWND hwndTextOnly = GetDlgItem(hwnd, IDC_TEXTONLY);
HWND hwndImagesOnly = GetDlgItem(hwnd, IDC_IMAGESONLY);
HWND hwndTextAndImages = GetDlgItem(hwnd, IDC_TEXTANDIMAGES);
HWND hwndSavePlaylistOnExit = GetDlgItem(hwnd, IDC_SAVECURRENTLIST);
HWND hwndDefaultAction = GetDlgItem(hwnd, IDC_DEFAULTACTION);
HWND hwndConvertUnderscores = GetDlgItem(hwnd, IDC_UNDERSCORES);
Button_SetCheck(hwndStayOnTop, m_originalValues.stayOnTop);
Button_SetCheck(hwndLiveInTray, m_originalValues.liveInTray);
Button_SetCheck(hwndReclaimFiletypes, m_originalValues.reclaimFiletypes);
Button_SetCheck(hwndAskReclaimFiletypes, m_originalValues.askReclaimFiletypes);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -