#include #include #include #include #include #include #include ViewDialog::ViewDialog(void) { mInitHandler.setCallback(this,&ViewDialog::initHandler); mDestroyHandler.setCallback(this,&ViewDialog::destroyHandler); mCommandHandler.setCallback(this,&ViewDialog::commandHandler); mCloseHandler.setCallback(this,&ViewDialog::closeHandler); mSizeHandler.setCallback(this,&ViewDialog::sizeHandler); DWindow::insertHandler(VectorHandler::InitDialogHandler,&mInitHandler); DWindow::insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler); DWindow::insertHandler(VectorHandler::CommandHandler,&mCommandHandler); DWindow::insertHandler(VectorHandler::CloseHandler,&mCloseHandler); DWindow::insertHandler(VectorHandler::SizeHandler,&mSizeHandler); } ViewDialog::ViewDialog(const ViewDialog &/*someViewDialog*/) { // private implementation } ViewDialog::~ViewDialog() { DWindow::removeHandler(VectorHandler::InitDialogHandler,&mInitHandler); DWindow::removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler); DWindow::removeHandler(VectorHandler::CommandHandler,&mCommandHandler); DWindow::removeHandler(VectorHandler::CloseHandler,&mCloseHandler); DWindow::removeHandler(VectorHandler::SizeHandler,&mSizeHandler); } ViewDialog &ViewDialog::operator=(const ViewDialog &/*someViewDialog*/) { // private implementation return *this; } void ViewDialog::connect(const String &serverName) { handleConnect(serverName); } bool ViewDialog::perform(MDIWindow &parentWindow,SmartPointer &statusBar) { mStatusBar=statusBar; mMDIParent=&parentWindow; createDialogParam(*(parentWindow.getFrame()),parentWindow,String("VIEWDIALOG"),(LPARAM)(DWindow*)this); return isValid(); } CallbackData::ReturnType ViewDialog::initHandler(CallbackData &someCallbackData) { mCloseButton.assumeControl(getItem(IDOK),IDOK,false); mRefreshButton.assumeControl(getItem(VIEWDIALOG_REFRESHNOW),VIEWDIALOG_REFRESHNOW,false); mWindowView=::new WindowView; mWindowView.disposition(PointerDisposition::Delete); // mWindowView->create(*mMDIParent,*mMDIParent,Rect(10,height()+10,mMDIParent->width()-20,mMDIParent->height()-105),WindowViewControlID); mWindowView->create(*this,*this,Rect(10,75,width()-20,height()-75),WindowViewControlID); if(!mWindowView->isValid())return false; mWindowView->show(SW_SHOW); return FALSE; } CallbackData::ReturnType ViewDialog::sizeHandler(CallbackData &someCallbackData) { mCloseButton.move(Point(width()-mCloseButton.width(),10)); mRefreshButton.move(Point(width()-mRefreshButton.width(),35)); mWindowView->moveWindow(Rect(10,75,width(),height())); return false; } CallbackData::ReturnType ViewDialog::commandHandler(CallbackData &someCallbackData) { switch(someCallbackData.wmCommandID()) { case IDOK : if(isInConnect())break; GUIWindow::postMessage(parent(),WM_CLOSE,0,0L); endDialog(true); break; case IDCANCEL : if(isInConnect())break; GUIWindow::postMessage(parent(),WM_CLOSE,0,0L); endDialog(false); break; case VIEWDIALOG_REFRESHNOW : handleRefreshNow(); break; } return FALSE; } CallbackData::ReturnType ViewDialog::closeHandler(CallbackData &someCallbackData) { if(isInConnect())return TRUE; return FALSE; } CallbackData::ReturnType ViewDialog::destroyHandler(CallbackData &someCallbackData) { return FALSE; } void ViewDialog::handleRefreshNow(void) { handleConnect(serverName()); } // virtuals void ViewDialog::preConnect(const String &strServerName) { mStatusBar->setText(String("Connecting to '")+strServerName+String("'")); } void ViewDialog::connectionHandler(RemoteProcessInfo &remoteProcessInfo) { mStatusBar->setText("Retrieving desktop image."); remoteProcessInfo.getDesktopWindow(*mWindowView); } void ViewDialog::preDisconnect(const String &strServerName) { mStatusBar->setText(String("Disconnected from '")+strServerName+String("'")); } void ViewDialog::errorHandler(void) { mStatusBar->setText(String("Remote activation failed '")); }