⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 interfacewindow.cpp

📁 VLC媒体播放程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
             fNavigationMenu->SetEnabled( hasFile );        if ( fLanguageMenu->IsEnabled() != hasFile )             fLanguageMenu->SetEnabled( hasFile );        if ( fSubtitlesMenu->IsEnabled() != hasFile )             fSubtitlesMenu->SetEnabled( hasFile );        if ( fSpeedMenu->IsEnabled() != hasFile )             fSpeedMenu->SetEnabled( hasFile );        // "goto menu" menu item        bool hasMenu = p_wrapper->IsUsingMenus();        if ( fGotoMenuMI->IsEnabled() != hasMenu )             fGotoMenuMI->SetEnabled( hasMenu );        Unlock();    }}/***************************************************************************** * InterfaceWindow::_UpdateSpeedMenu *****************************************************************************/voidInterfaceWindow::_UpdateSpeedMenu( int rate ){    BMenuItem * toMark = NULL;        switch( rate )    {        case ( DEFAULT_RATE * 8 ):            toMark = fHeighthMI;            break;                    case ( DEFAULT_RATE * 4 ):            toMark = fQuarterMI;            break;                    case ( DEFAULT_RATE * 2 ):            toMark = fHalfMI;            break;                    case ( DEFAULT_RATE ):            toMark = fNormalMI;            break;                    case ( DEFAULT_RATE / 2 ):            toMark = fTwiceMI;            break;                    case ( DEFAULT_RATE / 4 ):            toMark = fFourMI;            break;                    case ( DEFAULT_RATE / 8 ):            toMark = fHeightMI;            break;    }    if ( !toMark->IsMarked() )        toMark->SetMarked( true );}/***************************************************************************** * InterfaceWindow::_ShowFilePanel *****************************************************************************/voidInterfaceWindow::_ShowFilePanel( uint32 command, const char* windowTitle ){	if( !fFilePanel )	{		fFilePanel = new BFilePanel( B_OPEN_PANEL, NULL, NULL,									 B_FILE_NODE | B_DIRECTORY_NODE );		fFilePanel->SetTarget( this );	}	fFilePanel->Window()->SetTitle( windowTitle );	BMessage message( command );	fFilePanel->SetMessage( &message );	if ( !fFilePanel->IsShowing() )	{		fFilePanel->Refresh();		fFilePanel->Show();	}}// set_window_posvoidset_window_pos( BWindow* window, BRect frame ){	// sanity checks: make sure window is not too big/small	// and that it's not off-screen	float minWidth, maxWidth, minHeight, maxHeight;	window->GetSizeLimits( &minWidth, &maxWidth, &minHeight, &maxHeight );	make_sure_frame_is_within_limits( frame,									  minWidth, minHeight, maxWidth, maxHeight );	if ( make_sure_frame_is_on_screen( frame ) )	{		window->MoveTo( frame.LeftTop() );		window->ResizeTo( frame.Width(), frame.Height() );	}}// set_window_posvoidlaunch_window( BWindow* window, bool showing ){	if ( window->Lock() )	{		if ( showing )		{			if ( window->IsHidden() )				window->Show();		}		else		{			if ( !window->IsHidden() )				window->Hide();		}		window->Unlock();	}}/***************************************************************************** * InterfaceWindow::_RestoreSettings *****************************************************************************/voidInterfaceWindow::_RestoreSettings(){	if ( load_settings( fSettings, "interface_settings", "VideoLAN Client" ) == B_OK )	{		BRect frame;		if ( fSettings->FindRect( "main frame", &frame ) == B_OK )			set_window_pos( this, frame );		if (fSettings->FindRect( "playlist frame", &frame ) == B_OK )			set_window_pos( fPlaylistWindow, frame );		if (fSettings->FindRect( "messages frame", &frame ) == B_OK )			set_window_pos( fMessagesWindow, frame );		if (fSettings->FindRect( "settings frame", &frame ) == B_OK )		{		    /* FIXME: Preferences resizing doesn't work correctly yet */		    frame.right = frame.left + fPreferencesWindow->Frame().Width();		    frame.bottom = frame.top + fPreferencesWindow->Frame().Height();			set_window_pos( fPreferencesWindow, frame );		}				bool showing;		if ( fSettings->FindBool( "playlist showing", &showing ) == B_OK )			launch_window( fPlaylistWindow, showing );		if ( fSettings->FindBool( "messages showing", &showing ) == B_OK )			launch_window( fMessagesWindow, showing );		if ( fSettings->FindBool( "settings showing", &showing ) == B_OK )			launch_window( fPreferencesWindow, showing );		uint32 displayMode;		if ( fSettings->FindInt32( "playlist display mode", (int32*)&displayMode ) == B_OK )			fPlaylistWindow->SetDisplayMode( displayMode );	}}/***************************************************************************** * InterfaceWindow::_StoreSettings *****************************************************************************/voidInterfaceWindow::_StoreSettings(){    /* Save the volume */    config_PutInt( p_intf, "volume", p_mediaControl->GetVolume() );    config_SaveConfigFile( p_intf, "main" );    /* Save the windows positions */	if ( fSettings->ReplaceRect( "main frame", Frame() ) != B_OK )		fSettings->AddRect( "main frame", Frame() );	if ( fPlaylistWindow->Lock() )	{		if (fSettings->ReplaceRect( "playlist frame", fPlaylistWindow->Frame() ) != B_OK)			fSettings->AddRect( "playlist frame", fPlaylistWindow->Frame() );		if (fSettings->ReplaceBool( "playlist showing", !fPlaylistWindow->IsHidden() ) != B_OK)			fSettings->AddBool( "playlist showing", !fPlaylistWindow->IsHidden() );		fPlaylistWindow->Unlock();	}	if ( fMessagesWindow->Lock() )	{		if (fSettings->ReplaceRect( "messages frame", fMessagesWindow->Frame() ) != B_OK)			fSettings->AddRect( "messages frame", fMessagesWindow->Frame() );		if (fSettings->ReplaceBool( "messages showing", !fMessagesWindow->IsHidden() ) != B_OK)			fSettings->AddBool( "messages showing", !fMessagesWindow->IsHidden() );		fMessagesWindow->Unlock();	}	if ( fPreferencesWindow->Lock() )	{		if (fSettings->ReplaceRect( "settings frame", fPreferencesWindow->Frame() ) != B_OK)			fSettings->AddRect( "settings frame", fPreferencesWindow->Frame() );		if (fSettings->ReplaceBool( "settings showing", !fPreferencesWindow->IsHidden() ) != B_OK)			fSettings->AddBool( "settings showing", !fPreferencesWindow->IsHidden() );		fPreferencesWindow->Unlock();	}	uint32 displayMode = fPlaylistWindow->DisplayMode();	if (fSettings->ReplaceInt32( "playlist display mode", displayMode ) != B_OK )		fSettings->AddInt32( "playlist display mode", displayMode );	save_settings( fSettings, "interface_settings", "VideoLAN Client" );}/***************************************************************************** * CDMenu::CDMenu *****************************************************************************/CDMenu::CDMenu(const char *name)      : BMenu(name){}/***************************************************************************** * CDMenu::~CDMenu *****************************************************************************/CDMenu::~CDMenu(){}/***************************************************************************** * CDMenu::AttachedToWindow *****************************************************************************/void CDMenu::AttachedToWindow(void){    // remove all items    while ( BMenuItem* item = RemoveItem( 0L ) )        delete item;    GetCD( "/dev/disk" );    BMenu::AttachedToWindow();}/***************************************************************************** * CDMenu::GetCD *****************************************************************************/int CDMenu::GetCD( const char *directory ){	BVolumeRoster volRoster;	BVolume vol;	BDirectory dir;	status_t status = volRoster.GetNextVolume( &vol );	while ( status ==  B_NO_ERROR )	{		BString deviceName;		BString volumeName;		bool isCDROM;		if ( get_volume_info( vol, volumeName, isCDROM, deviceName )			 && isCDROM )		{			BMessage* msg = new BMessage( OPEN_DVD );			msg->AddString( "device", deviceName.String() );			BMenuItem* item = new BMenuItem( volumeName.String(), msg );			AddItem( item );		} 		vol.Unset();		status = volRoster.GetNextVolume( &vol );	}	return 0;}/***************************************************************************** * LanguageMenu::LanguageMenu *****************************************************************************/LanguageMenu::LanguageMenu( const char *name, int menu_kind,                            VlcWrapper *p_wrapper )    :BMenu(name){    kind = menu_kind;    this->p_wrapper = p_wrapper;}/***************************************************************************** * LanguageMenu::~LanguageMenu *****************************************************************************/LanguageMenu::~LanguageMenu(){}/***************************************************************************** * LanguageMenu::AttachedToWindow *****************************************************************************/void LanguageMenu::AttachedToWindow(){    // remove all items    while ( BMenuItem* item = RemoveItem( 0L ) )        delete item;    SetRadioMode( true );	if ( BList *list = p_wrapper->GetChannels( kind ) )	{	    for ( int32 i = 0; BMenuItem* item = (BMenuItem*)list->ItemAt( i ); i++ )	        AddItem( item );	    	    if ( list->CountItems() > 1 )	        AddItem( new BSeparatorItem(), 1 );	}    BMenu::AttachedToWindow();}/***************************************************************************** * TitleMenu::TitleMenu *****************************************************************************/TitleMenu::TitleMenu( const char *name, intf_thread_t  *p_interface )    : BMenu(name),    p_intf( p_interface ){}/***************************************************************************** * TitleMenu::~TitleMenu *****************************************************************************/TitleMenu::~TitleMenu(){}/***************************************************************************** * TitleMenu::AttachedToWindow *****************************************************************************/void TitleMenu::AttachedToWindow(){    while( BMenuItem* item = RemoveItem( 0L ) )        delete item;    if ( BList *list = p_intf->p_sys->p_wrapper->GetTitles() )	{    		for( int i = 0; BMenuItem* item = (BMenuItem*)list->ItemAt( i ); i++ )	        AddItem( item );	}    BMenu::AttachedToWindow();}/***************************************************************************** * ChapterMenu::ChapterMenu *****************************************************************************/ChapterMenu::ChapterMenu( const char *name, intf_thread_t  *p_interface )    : BMenu(name),    p_intf( p_interface ){}/***************************************************************************** * ChapterMenu::~ChapterMenu *****************************************************************************/ChapterMenu::~ChapterMenu(){}/***************************************************************************** * ChapterMenu::AttachedToWindow *****************************************************************************/void ChapterMenu::AttachedToWindow(){    while( BMenuItem* item = RemoveItem( 0L ) )        delete item;    if ( BList* list = p_intf->p_sys->p_wrapper->GetChapters() )	{    	    for( int i = 0; BMenuItem* item = (BMenuItem*)list->ItemAt( i ); i++ )	        AddItem( item );	}        BMenu::AttachedToWindow();}/***************************************************************************** * load_settings *****************************************************************************/status_tload_settings( BMessage* message, const char* fileName, const char* folder ){	status_t ret = B_BAD_VALUE;	if ( message )	{		BPath path;		if ( ( ret = find_directory( B_USER_SETTINGS_DIRECTORY, &path ) ) == B_OK )		{			// passing folder is optional			if ( folder )				ret = path.Append( folder );			if ( ret == B_OK && ( ret = path.Append( fileName ) ) == B_OK )			{				BFile file( path.Path(), B_READ_ONLY );				if ( ( ret = file.InitCheck() ) == B_OK )				{					ret = message->Unflatten( &file );					file.Unset();				}			}		}	}	return ret;}/***************************************************************************** * save_settings *****************************************************************************/status_tsave_settings( BMessage* message, const char* fileName, const char* folder ){	status_t ret = B_BAD_VALUE;	if ( message )	{		BPath path;		if ( ( ret = find_directory( B_USER_SETTINGS_DIRECTORY, &path ) ) == B_OK )		{			// passing folder is optional			if ( folder && ( ret = path.Append( folder ) ) == B_OK )				ret = create_directory( path.Path(), 0777 );			if ( ret == B_OK && ( ret = path.Append( fileName ) ) == B_OK )			{				BFile file( path.Path(), B_WRITE_ONLY | B_CREATE_FILE | B_ERASE_FILE );				if ( ( ret = file.InitCheck() ) == B_OK )				{					ret = message->Flatten( &file );					file.Unset();				}			}		}	}	return ret;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -