Beispiel #1
0
void MainWindow::HandleMessage( os::Message* pcMessage )
{
	switch( pcMessage->GetCode() )
	{
		case M_CHANGE_DIR:
		{
			os::String zPath;
			if( pcMessage->FindString( "file/path", &zPath.str() ) != 0 )
				break;
			
			m_pcView->SetPath( zPath );
			m_pcView->Clear();
			LoadWindow( true );
			m_pcView->ReRead();
			
			/* Get the new directory icon */
			os::BitmapImage* pcImage = static_cast<os::BitmapImage*>(m_pcView->GetDirIcon());
			if( pcImage )
			{
				pcImage->SetSize( os::Point( 24, 24 ) );
				SetIcon( pcImage->LockBitmap() );
				delete( pcImage );
			}
			SetTitle( m_pcView->GetPath() );
			m_cBackStack.push( m_pcView->GetPath() );
			if( m_cBackStack.size() > 1 )
				m_pcBackButton->SetEnable( true );
			else
				m_pcBackButton->SetEnable( false );
			
			break;
		}
		case M_BACK:
		{
			if( m_cBackStack.size() > 1 )
			{
				m_cBackStack.pop();
				os::String cNewPath = m_cBackStack.top();
				m_cBackStack.pop();
				os::Message* pcMsg = new os::Message( M_CHANGE_DIR );
				pcMsg->AddString( "file/path", cNewPath );
				PostMessage( pcMsg, this );
				delete( pcMsg );
			}
			break;
		}
		case M_UP:
		{
			os::Message* pcMsg = new os::Message( M_CHANGE_DIR );
			os::Path cPath( m_pcView->GetPath().c_str() );
			pcMsg->AddString( "file/path", cPath.GetDir().GetPath() );
			PostMessage( pcMsg, this );
			delete( pcMsg );
			break;
		}
		case M_HOME:
		{
			const char *pzHome = getenv( "HOME" );
			os::Message* pcMsg = new os::Message( M_CHANGE_DIR );
			pcMsg->AddString( "file/path", pzHome );
			PostMessage( pcMsg, this );
			delete( pcMsg );
			break;
		}
		case M_RELOAD:
		{
			m_pcView->ReRead();
			break;
		}
		case M_VIEW_ICONS:
		{
			m_pcView->SetView( os::IconDirectoryView::VIEW_ICONS );
			m_pcView->ReRead();  /* ReRead after view change to ensure that correct-sized icons are used */
			break;
		}
		case M_VIEW_LIST:
		{
			m_pcView->SetView( os::IconDirectoryView::VIEW_LIST );
			m_pcView->ReRead();
			break;
		}
		case M_VIEW_DETAILS:
		{
			m_pcView->SetView( os::IconDirectoryView::VIEW_DETAILS );
			m_pcView->ReRead();
			break;
		}
		case M_SAVE_WINDOW:
		{
			SaveWindow();
			break;
		}
		case M_SAVE_DEFAULT:
		{
			SaveDefault();
			break;
		}
		case M_APP_QUIT:
		{
			OkToQuit();
			break;
		}
		
		break;
	}
}
Beispiel #2
0
void MainView::HandleMessage(Message* pcMessage)
{
	switch(pcMessage->GetCode())
	{
		case M_MENU_QUIT:
			cout << "You pressed Quit Button" << endl;
			OkToQuit();
			break;	
		
		case MSG_SEND:
			{
			cout << "You pressed Send" << endl;					
			SendMsg();
			break;
			}		
		case MSG_FROMLOOPER_NEW_MESSAGE:
			cout << "MSG_FROMLOOPER_NEW_MESSAGE received" << endl;		
			cout << "Starting Update" << endl;					
			Update();				
			cout << "Update Done" << endl;							
			break;				
			
		case M_MENU_ABO:
		    cout << "You pressed About" << endl;
			ShowAbout();
			break;
		
		case M_MENU_CONNECT:
		    cout << "You pressed Connect" << endl;
			Connect();
			break;
			
		case M_MENU_LOGIN:
		    cout << "You pressed Login" << endl;
			Login();
			break;			
			
		case MSG_JOINCHANNEL:
		    cout << "You pressed Join" << endl;
			Join();
			break;
			
		case MSG_SINGLEUPDATE:
		    cout << "You pressed Single Update" << endl;
			Update();
			break;			
			
		case MSG_UPDATE:
		    cout << "You pressed Update" << endl;
			if( m_CommThread )
				m_CommThread->PostMessage( MSG_TOLOOPER_START, m_CommThread, m_CommThread ); 	
			cout << "Message send to MSG_TOLOOPER_START" << endl;	
			break;	
					
		case M_MENU_DISCONNECT:
		    cout << "You pressed Disconnect" << endl;
			Disconnect();
			break;
		case MSG_SETTINGS:
		{
		    cout << "You pressed Settings" << endl;
			break;
		}
					
		default:
			LayoutView::HandleMessage(pcMessage);
			break;
	}
}