欢迎来到虫虫下载站 | 资源下载 资源专辑 关于我们
虫虫下载站

prefview.cpp

freeamp有名的媒体播放器
CPP
第 1 页 / 共 3 页
字号:
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 + -