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; } }
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; } }