prefview.cpp
字号:
void
PrefView::GetPrefsValues(Preferences* prefs,
PrefsStruct* values)
{
uint32 bufferSize = 1;
uint32 size;
// get the string prefs
char* buffer = (char*)malloc(bufferSize);
size = bufferSize;
if(kError_BufferTooSmall == prefs->GetDefaultPMO(buffer, &size))
{
bufferSize = size;
buffer = (char*)realloc(buffer, bufferSize);
prefs->GetDefaultPMO(buffer, &size);
}
values->defaultPMO = buffer;
size = bufferSize;
if(kError_BufferTooSmall == prefs->GetDefaultUI(buffer, &size))
{
bufferSize = size;
buffer = (char*)realloc(buffer, bufferSize);
prefs->GetDefaultUI(buffer, &size);
}
values->defaultUI = buffer;
size = bufferSize;
if(kError_BufferTooSmall == prefs->GetProxyServerAddress(buffer, &size))
{
bufferSize = size;
buffer = (char*)realloc(buffer, bufferSize);
prefs->GetProxyServerAddress(buffer, &size);
}
values->proxyServer = buffer;
size = bufferSize;
if(kError_BufferTooSmall == prefs->GetSaveStreamsDirectory(buffer, &size))
{
bufferSize = size;
buffer = (char*)realloc(buffer, bufferSize);
prefs->GetSaveStreamsDirectory(buffer, &size);
}
values->saveStreamsDirectory = buffer;
size = bufferSize;
if(kError_BufferTooSmall == prefs->GetAlternateNICAddress(buffer, &size))
{
bufferSize = size;
buffer = (char*)realloc(buffer, bufferSize);
prefs->GetAlternateNICAddress(buffer, &size);
}
values->alternateIP = buffer;
size = bufferSize;
if(kError_BufferTooSmall == prefs->GetThemeDefaultFont(buffer, &size))
{
bufferSize = size;
buffer = (char*)realloc(buffer, bufferSize);
prefs->GetThemeDefaultFont(buffer, &size);
}
values->defaultFont = buffer;
size = bufferSize;
if(kError_BufferTooSmall == prefs->GetSaveMusicDirectory(buffer, &size))
{
bufferSize = size;
buffer = (char*)realloc(buffer, bufferSize);
prefs->GetSaveMusicDirectory(buffer, &size);
}
values->saveMusicDirectory = buffer;
size = bufferSize;
if(kError_BufferTooSmall == prefs->GetUsersPortablePlayers(buffer, &size))
{
bufferSize = size;
buffer = (char*)realloc(buffer, bufferSize);
prefs->GetUsersPortablePlayers(buffer, &size);
}
char* cp = buffer;
char* name = cp;
while((cp = strchr(cp, ';')))
{
*cp = 0x00;
values->portablePlayers.insert(string(name));
//MessageBox(NULL, name, "name", MB_OK);
cp++;
name = cp;
}
if(*name)
{
values->portablePlayers.insert(string(name));
//MessageBox(NULL, name, "name", MB_OK);
}
//values->portablePlayers = buffer;
size = bufferSize;
m_themeMan->GetCurrentTheme(values->currentTheme);
// get the other prefs
prefs->GetDecoderThreadPriority(&values->decoderThreadPriority);
prefs->GetInputBufferSize(&values->inputBufferSize);
prefs->GetOutputBufferSize(&values->outputBufferSize);
prefs->GetPrebufferLength(&values->preBufferLength);
prefs->GetStayOnTop(&values->stayOnTop);
prefs->GetLiveInTray(&values->liveInTray);
prefs->GetStreamBufferInterval(&values->streamInterval);
prefs->GetSaveStreams(&values->saveStreams);
prefs->GetUseProxyServer(&values->useProxyServer);
prefs->GetUseAlternateNIC(&values->useAlternateIP);
prefs->GetUseDebugLog(&values->enableLogging);
prefs->GetLogMain(&values->logMain);
prefs->GetLogDecode(&values->logDecoder);
prefs->GetLogInput(&values->logInput);
prefs->GetLogOutput(&values->logOutput);
prefs->GetLogPerformance(&values->logPerformance);
prefs->GetCheckForUpdates(&values->checkForUpdates);
prefs->GetAskToReclaimFiletypes(&values->askReclaimFiletypes);
prefs->GetReclaimFiletypes(&values->reclaimFiletypes);
prefs->GetShowToolbarTextLabels(&values->useTextLabels);
prefs->GetShowToolbarImages(&values->useImages);
prefs->GetSaveCurrentPlaylistOnExit(&values->savePlaylistOnExit);
prefs->GetPlayImmediately( &values->playImmediately );
free(buffer);
}
void
PrefView::SavePrefsValues( Preferences* prefs,
PrefsStruct* values )
{
prefs->SetDefaultPMO(values->defaultPMO.c_str());
prefs->SetDefaultUI(values->defaultUI.c_str());
prefs->SetDecoderThreadPriority(values->decoderThreadPriority);
prefs->SetInputBufferSize(values->inputBufferSize);
prefs->SetOutputBufferSize(values->outputBufferSize);
prefs->SetPrebufferLength(values->preBufferLength);
prefs->SetStayOnTop(values->stayOnTop);
prefs->SetLiveInTray(values->liveInTray);
prefs->SetStreamBufferInterval(values->streamInterval);
prefs->SetSaveStreams(values->saveStreams);
prefs->SetSaveStreamsDirectory(values->saveStreamsDirectory.c_str());
prefs->SetProxyServerAddress(values->proxyServer.c_str());
prefs->SetUseProxyServer(values->useProxyServer);
prefs->SetAlternateNICAddress(values->alternateIP.c_str());
prefs->SetUseAlternateNIC(values->useAlternateIP);
prefs->SetUseDebugLog(values->enableLogging);
prefs->SetLogMain(values->logMain);
prefs->SetLogDecode(values->logDecoder);
prefs->SetLogInput(values->logInput);
prefs->SetLogOutput(values->logOutput);
prefs->SetLogPerformance(values->logPerformance);
prefs->SetThemeDefaultFont(values->defaultFont.c_str());
if (m_themeList[values->currentTheme].length() > 0)
m_themeMan->UseTheme(m_themeList[values->currentTheme]);
prefs->SetCheckForUpdates(values->checkForUpdates);
prefs->SetSaveMusicDirectory(values->saveMusicDirectory.c_str());
prefs->SetAskToReclaimFiletypes(values->askReclaimFiletypes);
prefs->SetReclaimFiletypes(values->reclaimFiletypes);
PortableSet::const_iterator i;
string portableList;
for(i = values->portablePlayers.begin(); i != values->portablePlayers.end(); i++)
{
portableList += *i;
portableList += ";";
}
prefs->SetUsersPortablePlayers(portableList.c_str());
prefs->SetShowToolbarTextLabels(values->useTextLabels);
prefs->SetShowToolbarImages(values->useImages);
prefs->SetSaveCurrentPlaylistOnExit(values->savePlaylistOnExit);
prefs->SetPlayImmediately( values->playImmediately );
// this gets called by each page unfortunately
// so save some effort by only doing it once
if(*values != m_currentValues)
{
PRINT(( "PrefsChanged:\n" ));
m_context->target->AcceptEvent(new Event(INFO_PrefsChanged));
m_currentValues = m_proposedValues = *values;
}
}
void
PrefView::CreateGeneralPane( void )
{
BBox* box;
BButton* button;
BRect rect;
BRect bounds( m_general->Bounds() );
BRect rect1( bounds );
rect1.InsetBy( GRID_UNIT, GRID_UNIT );
float w, h;
// --------------------- Save Music Folder Box ----------------------------
box = new BBox( rect1, "SaveMusicFolderBox",
B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP );
box->SetLabel( "Save Music Folder" );
button = new BButton( BRect(0,0,0,0), "Browse", "Browse"B_UTF8_ELLIPSIS,
new BMessage( MSG_BROWSE_DIR ),
B_FOLLOW_RIGHT|B_FOLLOW_TOP );
button->ResizeToPreferred();
button->GetPreferredSize( &w, &h );
button->MoveTo( rect1.right - GRID_UNIT - w, rect1.top + GRID_UNIT );
m_general->AddChild( button );
m_controls.push_back( button );
rect.Set( 0, 0, button->Frame().left, 0 );
rect.InsetBy( GRID_UNIT, GRID_UNIT );
m_saveMusicFolder = new BTextControl( rect, "SaveMusicFolder",
NULL, NULL, NULL,
B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP );
m_saveMusicFolder->SetText( m_originalValues.saveMusicDirectory.c_str() );
m_saveMusicFolder->GetPreferredSize( &w, &h );
rect1.bottom = rect1.top + h + 2 * GRID_UNIT;
box->ResizeTo( rect1.Width(), rect1.Height() );
box->AddChild( m_saveMusicFolder );
m_general->AddChild( box );
// ------------------ Update Manager box ---------------------------------
rect1.top = rect1.bottom + GRID_UNIT;
box = new BBox( rect1, "UpdateManager", B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP );
box->SetLabel( "Update Manager" );
rect1 = box->Bounds();
rect1.InsetBy( BOX_INSET, BOX_INSET );
// Check for updates
BCheckBox* checkBox;
checkBox = new BCheckBox( rect1, "CheckForUpdates", "Check for updates",
new BMessage( MSG_SET_CHECK_FOR_UPDATES ),
B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP );
checkBox->SetValue( m_originalValues.checkForUpdates ? B_CONTROL_ON
: B_CONTROL_OFF );
box->AddChild( checkBox );
m_controls.push_back( checkBox );
rect1 = checkBox->Frame();
box->ResizeTo( box->Frame().Width(), rect1.bottom + BOX_INSET );
m_general->AddChild( box );
rect1 = box->Frame();
// ------------------- File Association box ----------------------------
rect1.top = rect1.bottom + GRID_UNIT;
box = new BBox( rect1, "FileAssociationBox",
B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP );
box->SetLabel( "File Association" );
rect1 = box->Bounds();
rect1.InsetBy( BOX_INSET, BOX_INSET );
// Reclaim file types
checkBox = new BCheckBox( rect1, "ReclaimFileTypes", "Reclaim file types",
new BMessage( MSG_SET_RECLAIM_FILETYPES ),
B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP );
checkBox->SetValue( m_originalValues.reclaimFiletypes ? B_CONTROL_ON
: B_CONTROL_OFF );
box->AddChild( checkBox );
m_controls.push_back( checkBox );
rect1 = checkBox->Frame();
// Ask reclaim file types
rect1.top = rect1.bottom + GRID_UNIT;
checkBox = new BCheckBox( rect1, "AskToReclaimFiletypes",
"Ask to reclaim file types",
new BMessage( MSG_SET_ASK_RECLAIM_FILETYPES ),
B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP );
checkBox->SetValue( m_originalValues.askReclaimFiletypes ? B_CONTROL_ON
: B_CONTROL_OFF );
box->AddChild( checkBox );
m_controls.push_back( checkBox );
rect1 = checkBox->Frame();
box->ResizeTo( box->Frame().Width(), rect1.bottom + BOX_INSET );
m_general->AddChild( box );
rect1 = box->Frame();
// ------------- My Music Toolbar appearance box group ------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -