gtkpreferencewindow.cpp
字号:
uint32 bufferSize = 1;
uint32 size;
char *buffer = (char *)malloc(bufferSize);
size = bufferSize;
if (kError_BufferTooSmall == prefs->GetPrefString(kPMOPref, buffer, &size)) {
buffer = (char *)realloc(buffer, size);
prefs->GetPrefString(kPMOPref, buffer, &size);
}
values->defaultPMO = buffer;
size = bufferSize;
prefs->GetPrefInt32(kInputBufferSizePref, &values->inputBufferSize);
prefs->GetPrefInt32(kOutputBufferSizePref, &values->outputBufferSize);
prefs->GetPrefInt32(kPreBufferPref, &values->preBufferLength);
prefs->GetPrefBoolean(kSaveStreamsPref, &values->saveStreams);
if (kError_BufferTooSmall == prefs->GetPrefString(kProxyHostPref, buffer, &size)) {
buffer = (char *)realloc(buffer, size);
prefs->GetPrefString(kProxyHostPref, buffer, &size);
}
values->proxyServer = buffer;
prefs->GetPrefBoolean(kUseProxyPref, &values->useProxyServer);
size = bufferSize;
if(kError_BufferTooSmall == prefs->GetPrefString(kSaveStreamsDirPref, buffer, &size)) {
size++;
buffer = (char*)realloc(buffer, size);
prefs->GetPrefString(kSaveStreamsDirPref, buffer, &size);
}
values->saveStreamsDirectory = buffer;
size = bufferSize;
if(kError_BufferTooSmall == prefs->GetPrefString(kAlternateNICAddressPref, buffer, &size)) {
buffer = (char*)realloc(buffer, size);
prefs->GetPrefString(kAlternateNICAddressPref, buffer, &size);
}
values->alternateIP = buffer;
size = bufferSize;
prefs->GetPrefBoolean(kUseAlternateNICPref, &values->useAlternateIP);
prefs->GetPrefBoolean(kUseDebugLogPref, &values->enableLogging);
prefs->GetPrefBoolean(kLogMainPref, &values->logMain);
prefs->GetPrefBoolean(kLogDecodePref, &values->logDecoder);
prefs->GetPrefBoolean(kLogInputPref, &values->logInput);
prefs->GetPrefBoolean(kLogOutputPref, &values->logOutput);
prefs->GetPrefBoolean(kLogPerformancePref, &values->logPerformance);
if(kError_BufferTooSmall == prefs->GetPrefString(kThemeDefaultFontPref, buffer, &size)) {
size++;
buffer = (char*)realloc(buffer, size);
prefs->GetPrefString(kThemeDefaultFontPref, buffer, &size);
}
values->defaultFont = buffer;
size = bufferSize;
if(kError_BufferTooSmall == prefs->GetPrefString(kSaveMusicDirPref, buffer, &size)) {
buffer = (char*)realloc(buffer, size);
prefs->GetPrefString(kSaveMusicDirPref, buffer, &size);
}
values->saveMusicDirectory = buffer;
size = bufferSize;
if(kError_BufferTooSmall == prefs->GetPrefString(kPlaylistHeaderColumnsPref, buffer, &size))
{
bufferSize = size;
buffer = (char*)realloc(buffer, bufferSize);
prefs->GetPrefString(kPlaylistHeaderColumnsPref, buffer, &size);
}
values->playlistHeaders = buffer;
size = bufferSize;
m_pThemeMan->GetCurrentTheme(values->currentTheme);
prefs->GetPrefBoolean(kShowToolbarTextLabelsPref, &values->useTextLabels);
prefs->GetPrefBoolean(kShowToolbarImagesPref, &values->useImages);
prefs->GetPrefBoolean(kSaveCurrentPlaylistOnExitPref, &values->savePlaylistOnExit);
prefs->GetPrefBoolean(kPlayImmediatelyPref, &values->playImmediately);
prefs->GetPrefBoolean(kAllowMultipleInstancesPref, &values->allowMultipleInstances);
if(kError_BufferTooSmall == prefs->GetPrefString(kSaveMusicDirPref, buffer, &size))
{
size++;
bufferSize = size;
buffer = (char*)realloc(buffer, bufferSize);
prefs->GetPrefString(kSaveMusicDirPref, buffer, &size);
}
values->saveMusicDirectory = buffer;
size = bufferSize;
if(kError_BufferTooSmall == prefs->GetPrefString(kALSADevicePref,
buffer, &size)) {
size++;
bufferSize = size;
buffer = (char*)realloc(buffer, bufferSize);
prefs->GetPrefString(kALSADevicePref, buffer, &size);
}
values->alsaOutput = buffer;
size = bufferSize;
if(kError_BufferTooSmall == prefs->GetPrefString(kWatchThisDirectoryPref,
buffer, &size)) {
size++;
bufferSize = size;
buffer = (char*)realloc(buffer, bufferSize);
prefs->GetPrefString(kWatchThisDirectoryPref, buffer, &size);
}
values->watchThisDirectory = buffer;
size = bufferSize;
if(kError_BufferTooSmall == prefs->GetPrefString(kCDDevicePathPref,
buffer, &size)) {
size++;
bufferSize = size;
buffer = (char*)realloc(buffer, bufferSize);
prefs->GetPrefString(kCDDevicePathPref, buffer, &size);
}
values->CDDevicePath = buffer;
size = bufferSize;
if(kError_BufferTooSmall == prefs->GetPrefString(kMBServerPref,
buffer, &size)) {
size++;
bufferSize = size;
buffer = (char*)realloc(buffer, bufferSize);
prefs->GetPrefString(kMBServerPref, buffer, &size);
}
values->MBServer = buffer;
size = bufferSize;
if(kError_BufferTooSmall == prefs->GetPrefString(kUsersPortablePlayersPref, buffer, &size)) {
buffer = (char*)realloc(buffer, size);
prefs->GetPrefString(kUsersPortablePlayersPref, buffer, &size);
}
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));
free(buffer);
prefs->GetPrefBoolean(kAskToReclaimFiletypesPref, &values->askReclaimFiletypes);
prefs->GetPrefBoolean(kReclaimFiletypesPref, &values->reclaimFiletypes);
prefs->GetPrefInt32(kWatchThisDirTimeoutPref, &values->watchThisDirTimeout);
prefs->GetPrefBoolean(kCheckCDAutomaticallyPref, &values->pollCD);
}
void GTKPreferenceWindow::SavePrefsValues(Preferences* prefs,
PrefsStruct* values)
{
prefs->SetPrefBoolean(kCheckCDAutomaticallyPref, values->pollCD);
prefs->SetPrefBoolean(kShowToolbarTextLabelsPref, values->useTextLabels);
prefs->SetPrefBoolean(kShowToolbarImagesPref, values->useImages);
prefs->SetPrefBoolean(kSaveCurrentPlaylistOnExitPref, values->savePlaylistOnExit);
prefs->SetPrefBoolean(kPlayImmediatelyPref, values->playImmediately);
prefs->SetPrefBoolean(kAllowMultipleInstancesPref, values->allowMultipleInstances);
prefs->SetPrefBoolean(kAskToReclaimFiletypesPref, values->askReclaimFiletypes);
prefs->SetPrefBoolean(kReclaimFiletypesPref, values->reclaimFiletypes);
prefs->SetPrefString(kPMOPref, values->defaultPMO.c_str());
prefs->SetPrefInt32(kInputBufferSizePref, values->inputBufferSize);
prefs->SetPrefInt32(kOutputBufferSizePref, values->outputBufferSize);
prefs->SetPrefInt32(kPreBufferPref, values->preBufferLength);
prefs->SetPrefBoolean(kSaveStreamsPref, values->saveStreams);
prefs->SetPrefString(kSaveStreamsDirPref, values->saveStreamsDirectory.c_str());
prefs->SetPrefString(kProxyHostPref, values->proxyServer.c_str());
prefs->SetPrefBoolean(kUseProxyPref, values->useProxyServer);
prefs->SetPrefString(kAlternateNICAddressPref, values->alternateIP.c_str());
prefs->SetPrefBoolean(kUseAlternateNICPref, values->useAlternateIP);
prefs->SetPrefString(kPlaylistHeaderColumnsPref, values->playlistHeaders.c_str());
prefs->SetPrefBoolean(kUseDebugLogPref, values->enableLogging);
prefs->SetPrefBoolean(kLogMainPref, values->logMain);
prefs->SetPrefBoolean(kLogDecodePref, values->logDecoder);
prefs->SetPrefBoolean(kLogInputPref, values->logInput);
prefs->SetPrefBoolean(kLogOutputPref, values->logOutput);
prefs->SetPrefBoolean(kLogPerformancePref, values->logPerformance);
prefs->SetPrefString(kThemeDefaultFontPref, values->defaultFont.c_str());
prefs->SetPrefString(kALSADevicePref, values->alsaOutput.c_str());
prefs->SetPrefString(kCDDevicePathPref, values->CDDevicePath.c_str());
prefs->SetPrefString(kMBServerPref, values->MBServer.c_str());
map<string, string>::iterator i;
int32 iLoop = 0;
for (i = m_oThemeList.begin(); i != m_oThemeList.end(); i++, iLoop++) {
if (iLoop == values->listboxIndex)
values->currentTheme = (*i).first;
}
m_pThemeMan->UseTheme(m_oThemeList[values->currentTheme]);
prefs->SetPrefString(kSaveMusicDirPref, values->saveMusicDirectory.c_str());
prefs->SetPrefString(kWatchThisDirectoryPref, values->watchThisDirectory.c_str());
prefs->SetPrefInt32(kWatchThisDirTimeoutPref, values->watchThisDirTimeout);
PortableSet::const_iterator j = values->portablePlayers.begin();
string portableList;
for (; j != values->portablePlayers.end(); j++) {
portableList += *j;
portableList += ";";
}
prefs->SetPrefString(kUsersPortablePlayersPref, portableList.c_str());
prefs->SetPrefString(kPMOPref, values->defaultPMO.c_str());
if (*values != currentValues) {
m_pContext->target->AcceptEvent(new Event(INFO_PrefsChanged));
currentValues = proposedValues = *values;
}
m_pContext->prefs->Save();
}
void GTKPreferenceWindow::SetToolbar(bool text, bool pics)
{
proposedValues.useTextLabels = text;
proposedValues.useImages = pics;
if (!firsttime)
gtk_widget_set_sensitive(applyButton, TRUE);
}
static void text_selected(GtkWidget *w, GTKPreferenceWindow *p)
{
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w)))
p->SetToolbar(true, false);
}
static void images_selected(GtkWidget *w, GTKPreferenceWindow *p)
{
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w)))
p->SetToolbar(false, true);
}
static void both_selected(GtkWidget *w, GTKPreferenceWindow *p)
{
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w)))
p->SetToolbar(true, true);
}
void GTKPreferenceWindow::SaveOnExitToggle(int active)
{
proposedValues.savePlaylistOnExit = active;
if (!firsttime)
gtk_widget_set_sensitive(applyButton, TRUE);
}
static void save_onexit_toggle(GtkWidget *w, GTKPreferenceWindow *p)
{
int i = GTK_TOGGLE_BUTTON(w)->active;
p->SaveOnExitToggle(i);
}
void GTKPreferenceWindow::PlayImmediatelyToggle(int active)
{
proposedValues.playImmediately = !active;
if (!firsttime)
gtk_widget_set_sensitive(applyButton, TRUE);
}
static void play_now_toggle(GtkWidget *w, GTKPreferenceWindow *p)
{
int i = GTK_TOGGLE_BUTTON(w)->active;
p->PlayImmediatelyToggle(i);
}
void GTKPreferenceWindow::AllowMultipleToggle(int active)
{
proposedValues.allowMultipleInstances = active;
if (!firsttime)
gtk_widget_set_sensitive(applyButton, TRUE);
}
static void allow_multiple_toggle(GtkWidget *w, GTKPreferenceWindow *p)
{
int i = GTK_TOGGLE_BUTTON(w)->active;
p->AllowMultipleToggle(i);
}
void GTKPreferenceWindow::ConvertUnderscoresToggle(int active)
{
proposedValues.convertUnderscores = active;
if (!firsttime)
gtk_widget_set_sensitive(applyButton, TRUE);
}
static void convert_underscores_toggle(GtkWidget *w, GTKPreferenceWindow *p)
{
int i = GTK_TOGGLE_BUTTON(w)->active;
p->AllowMultipleToggle(i);
}
void GTKPreferenceWindow::ReclaimTypesToggle(int active)
{
proposedValues.reclaimFiletypes = active;
if (!firsttime)
gtk_widget_set_sensitive(applyButton, TRUE);
}
void reclaim_types_toggle(GtkWidget *w, GTKPreferenceWindow *p)
{
int i = GTK_TOGGLE_BUTTON(w)->active;
p->ReclaimTypesToggle(i);
}
void GTKPreferenceWindow::AskReclaimToggle(int active)
{
proposedValues.askReclaimFiletypes = active;
if (!firsttime)
gtk_widget_set_sensitive(applyButton, TRUE);
}
void ask_reclaim_toggle(GtkWidget *w, GTKPreferenceWindow *p)
{
int i = GTK_TOGGLE_BUTTON(w)->active;
p->AskReclaimToggle(i);
}
GtkWidget *GTKPreferenceWindow::CreateGeneral(void)
{
firsttime = true;
GtkWidget *pane = gtk_vbox_new(FALSE, 5);
gtk_container_set_border_width(GTK_CONTAINER(pane), 5);
gtk_widget_show(pane);
GtkWidget *frame = gtk_frame_new("Show 'My Music' Toolbars As");
gtk_box_pack_start(GTK_BOX(pane), frame, FALSE, FALSE, 5);
gtk_widget_show(frame);
GtkWidget *temphbox = gtk_hbox_new(FALSE, 5);
gtk_container_set_border_width(GTK_CONTAINER(temphbox), 5);
gtk_container_add(GTK_CONTAINER(frame), temphbox);
gtk_widget_show(temphbox);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -