Files
Work/remotepsapp/viewdialog.cpp
2024-08-07 09:16:27 -04:00

134 lines
4.1 KiB
C++

#include <remotepsapp/viewdialog.hpp>
#include <remotepsapp/remoteps.hpp>
#include <remotepsapp/windowview.hpp>
#include <common/stdio.hpp>
#include <common/mdifrm.hpp>
#include <com/cominit.hpp>
#include <statbar/statbarx.hpp>
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<StatusBarEx> &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 '"));
}