Exemplo n.º 1
0
void CDownloadDlg::OnOK() 
{
	UpdateData( );

	// clear error pac msg
	m_astrErrorPac.RemoveAll();

	// disable and enble buttons
	m_btnOK.EnableWindow( FALSE );
	m_btnCancel.EnableWindow( FALSE );
	m_btnProxySet.EnableWindow( FALSE );
	m_btnRefreshServers.EnableWindow( FALSE );
	m_btnStop.EnableWindow( TRUE );

	BOOL	bOK	=	TRUE;

	// Set Message
	SendMessage( WM_USER_DOWNLOAD_MESSAGE, PROG_NEWGROUP, IDS_DLMSG_CONNECTING );
	m_staticStatus.SetWindowPos( NULL, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_SHOWWINDOW);
	MSG		msg;
	while (::PeekMessage(&msg, NULL, NULL, NULL, PM_NOREMOVE) )
		AfxGetApp()->PumpMessage();
	
	// set server info
	if( bOK && !m_netdb.SetRootPath( AfxGetProfile().GetSelfDBPath(), IStStore::dbtypeSelfDB ) )
	{
		AfxMessageBox( IDS_ROOTPATH_ERROR, MB_OK | MB_ICONINFORMATION );
		bOK	=	FALSE;
	}
	CString	strServer;
	m_comboServers.GetWindowText( strServer );
	CDownloadServer	server;
	if( !server.FromString( strServer ) )
	{
		AfxMessageBox( IDS_NOSERVER_DEFINED, MB_OK | MB_ICONINFORMATION );
		bOK	=	FALSE;
	}
	AfxGetProfile().SetDefaultServer( strServer );
	
	if( bOK && !m_netdb.SetServer( server.m_strAddress, server.m_nPort ) )
	{
		AfxMessageBox( IDS_NOSERVER_DEFINED, MB_OK | MB_ICONINFORMATION );
		bOK	=	FALSE;
	}
	// set access type
	if( bOK && !m_netdb.SetAccessType( AfxGetQSProfile().GetAccessType(), AfxGetQSProfile().GetProxyType(),
			AfxGetQSProfile().GetProxyAddress(), AfxGetQSProfile().GetProxyPort(),
			AfxGetQSProfile().GetProxyUser(), AfxGetQSProfile().GetProxyPasswd() ) )
	{
		AfxMessageBox( IDS_NOSERVER_DEFINED, MB_OK | MB_ICONINFORMATION );
		bOK	=	FALSE;
	}

	// login
	if( bOK && !m_netdb.Login( AfxGetSView().GetS(), AfxGetSView().GetU(),
							   NULL, AfxGetProfile().GetVersion() ) )
	{
		char	szErr[1024];
		if( m_netdb.GetLastErrorMessage(szErr,1023) )
			AfxMessageBox( szErr, MB_OK | MB_ICONINFORMATION );
		else
			AfxMessageBox( IDS_LOGIN_FAILED, MB_OK | MB_ICONINFORMATION );
		bOK	=	FALSE;
	}
	// load package info
	if( bOK && ! m_netdb.NetloadPackageInfo( NULL, NULL ) )
	{
		char	szErr[1024];
		if( m_netdb.GetLastErrorMessage(szErr,1023) )
			AfxMessageBox( szErr, MB_OK | MB_ICONINFORMATION );
		else
			AfxMessageBox( IDS_DOWNLOAD_FAILED, MB_OK | MB_ICONINFORMATION );
		bOK	=	FALSE;
	}

	if( bOK )
	{
		// show message
		m_staticStatus.SetWindowPos( NULL, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_SHOWWINDOW);
		m_ctrlProgress.SetWindowPos( NULL, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_SHOWWINDOW);
		CString	strMsg;
		strMsg.LoadString( IDS_DATA_DOWNLOADING );
		m_staticStatus.SetWindowText( strMsg );

		CDownloadDlg::m_hEventKillDownloadThread = CreateEvent(NULL,FALSE,FALSE,NULL);
		CDownloadDlg::m_hEventDownloadThreadKilled = CreateEvent(NULL,FALSE,FALSE,NULL);

		if( NULL == m_pDownloadInfo )
			m_pDownloadInfo	=	new DOWNLOAD_INFO;
		memset( m_pDownloadInfo, 0, sizeof(DOWNLOAD_INFO) );
		m_pDownloadInfo->hMainWnd	=	GetSafeHwnd();
		m_pDownloadInfo->pNetDB		=	&m_netdb;
		m_pDownloadInfo->bReport	=	m_btnCheckReport.GetCheck();
		m_pDownloadInfo->bDay		=	m_btnCheckDay.GetCheck();
		m_pDownloadInfo->tmDayFrom	=	m_tmDayFrom.GetTime();
		m_pDownloadInfo->tmDayTo	=	m_tmDayTo.GetTime();
		m_pDownloadInfo->bMin5		=	m_btnCheckMin5.GetCheck();
		m_pDownloadInfo->tmMin5From	=	m_tmMin5From.GetTime();
		m_pDownloadInfo->tmMin5To	=	m_tmMin5To.GetTime();
		m_pDownloadInfo->bBase		=	m_btnCheckBase.GetCheck();
		m_pDownloadInfo->bXDR		=	m_btnCheckXDR.GetCheck();

		if( m_pDownloadInfo->bReport )
		{
			::SendMessage( GetSafeHwnd(), WM_USER_DOWNLOAD_MESSAGE, PROG_NEWGROUP, IDS_DLMSG_REPORT );
			::SendMessage( GetSafeHwnd(), WM_USER_DOWNLOAD_PROGRESS, 0, NULL );
			m_nReportCount = 0;
			m_bReportFinished = FALSE;
			AfxGetStkReceiver().AddRcvDataWnd( GetSafeHwnd() );
			CStockContainer & container = AfxGetStockContainer();
			container.Lock();
			m_nReportTotal = container.GetSize();
			m_nReportRequestSent = AfxGetStkReceiver().RequestStockData( CStock::dataReport, container.GetData(), min(160,container.GetSize()), 0, 0 );
			container.UnLock();
		}
		else
		{
			AfxBeginThread( DownloadMain, (LPVOID)m_pDownloadInfo,THREAD_PRIORITY_NORMAL);
		}
	}
	else
	{
		// disable and enble buttons
		m_btnOK.EnableWindow( TRUE );
		m_btnCancel.EnableWindow( TRUE );
		m_btnProxySet.EnableWindow( TRUE );
		m_btnRefreshServers.EnableWindow( TRUE );
		m_btnStop.EnableWindow( FALSE );
	}
}
Exemplo n.º 2
0
void CDownloadDlg::OnRefreshServers() 
{
	UpdateData( );

	// disable and enble buttons
	m_btnRefreshServers.EnableWindow( FALSE );
	m_btnOK.EnableWindow( FALSE );
	m_btnStop.EnableWindow( FALSE );
	m_btnCancel.EnableWindow( FALSE );
	m_btnProxySet.EnableWindow( FALSE );
	m_btnStopRefresh.EnableWindow( TRUE );
	
	// show message
	m_staticRefreshServer.SetWindowPos( NULL, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_SHOWWINDOW);
	CString	strMsg;
	strMsg.LoadString( IDS_SERVERS_REFRESHING );
	m_staticRefreshServer.SetWindowText( strMsg );

	m_bStopRefresh	=	FALSE;
	BOOL	bOK	=	TRUE;
	
	// refresh servers
	CString	strServer	=	AfxGetProfile().GetMainServer();
	CDownloadServer	server;
	if( !server.FromString( strServer ) )
	{
		AfxMessageBox( IDS_NOSERVER_DEFINED, MB_OK | MB_ICONINFORMATION );
		bOK	=	FALSE;
	}
	if( bOK && !m_netdb.SetServer( server.m_strAddress, server.m_nPort ) )
	{
		AfxMessageBox( IDS_NOSERVER_DEFINED, MB_OK | MB_ICONINFORMATION );
		bOK	=	FALSE;
	}
	// set access type
	if( bOK && !m_netdb.SetAccessType( AfxGetQSProfile().GetAccessType(), AfxGetQSProfile().GetProxyType(),
			AfxGetQSProfile().GetProxyAddress(), AfxGetQSProfile().GetProxyPort(),
			AfxGetQSProfile().GetProxyUser(), AfxGetQSProfile().GetProxyPasswd() ) )
	{
		AfxMessageBox( IDS_NOSERVER_DEFINED, MB_OK | MB_ICONINFORMATION );
		bOK	=	FALSE;
	}
	// login
	if( bOK && !m_netdb.Login(	AfxGetSView().GetS(), AfxGetSView().GetU(),
								NULL, AfxGetProfile().GetVersion() ) ) 
	{
		char	szErr[1024];
		if( m_netdb.GetLastErrorMessage(szErr,1023) )
			AfxMessageBox( szErr, MB_OK | MB_ICONINFORMATION );
		else
			AfxMessageBox( IDS_LOGIN_FAILED, MB_OK | MB_ICONINFORMATION );
		bOK	=	FALSE;
	}

	// load server info
	if( bOK && ! m_netdb.NetloadServerInfo( NULL, NULL ) )
	{
		char	szErr[1024];
		if( m_netdb.GetLastErrorMessage(szErr,1023) )
			AfxMessageBox( szErr, MB_OK | MB_ICONINFORMATION );
		else
			AfxMessageBox( IDS_REFRESHSERVERS_FAILED, MB_OK | MB_ICONINFORMATION );
	}

	// refresh server combo list
	if( bOK )
	{
		CServers &	servers	=	m_netdb.GetServers();
		servers.SaveToProfile();
		InitComboServers();
	}

	// logout
	m_netdb.Logout();

	// set message and enable buttons
	if( bOK )
		strMsg.LoadString( IDS_SERVERS_REFRESHED );
	else
		strMsg.LoadString( IDS_REFRESHSERVERS_PAUSED );
	m_staticRefreshServer.SetWindowText( strMsg );

	m_btnRefreshServers.EnableWindow( TRUE );
	m_btnOK.EnableWindow( TRUE );
	m_btnCancel.EnableWindow( TRUE );
	m_btnProxySet.EnableWindow( TRUE );
	m_btnStop.EnableWindow( FALSE );
	m_btnStopRefresh.EnableWindow( FALSE );
}
Exemplo n.º 3
0
UINT RefreshServers( LPVOID pParam )
{
	CNetDatabase * netdb = new CNetDatabase();
	if( NULL == netdb )	return FALSE;
	if( !netdb->SetRootPath( AfxGetProfile().GetSelfDBPath(), IStStore::dbtypeSelfDB ) )
	{
		delete netdb;
		AfxEndThread( 0, TRUE );
		return FALSE;
	}

	// refresh servers
	CString	strServer	=	AfxGetProfile().GetMainServer();
	CDownloadServer	server;
	if( !server.FromString( strServer ) )
	{
		delete netdb;
		AfxEndThread( 0, TRUE );
		return FALSE;
	}

	if( !netdb->SetServer( server.m_strAddress, server.m_nPort ) )
	{
		delete netdb;
		AfxEndThread( 0, TRUE );
		return FALSE;
	}

	// set access type
	if( !netdb->SetAccessType( AfxGetQSProfile().GetAccessType(), AfxGetQSProfile().GetProxyType(),
			AfxGetQSProfile().GetProxyAddress(), AfxGetQSProfile().GetProxyPort(),
			AfxGetQSProfile().GetProxyUser(), AfxGetQSProfile().GetProxyPasswd() ) )
	{
		delete netdb;
		AfxEndThread( 0, TRUE );
		return FALSE;
	}

	if( !netdb->Login(	AfxGetSView().GetS(), AfxGetSView().GetU(),
							NULL, AfxGetProfile().GetVersion() ) )
	{
		delete netdb;
		AfxEndThread( 0, TRUE );
		return FALSE;
	}

	// load server info
	if( netdb->NetloadServerInfo( NULL, NULL ) )
	{
		CServers &	servers	=	netdb->GetServers();
		servers.SaveToProfile();
	}

	if( netdb->NetloadPackageInfo( NULL, NULL ) && netdb->GetPackages().m_nDataVersion > AfxGetProfile().GetLocalDataVersion() )
	{
		netdb->NetloadCodetbl( NULL, NULL );
		netdb->NetloadBasetable( NULL, NULL, NULL, NULL, NULL );
		netdb->NetloadDRData( NULL, NULL, NULL, NULL, NULL );
		AfxGetProfile().SetLocalDataVersion( netdb->GetPackages().m_nDataVersion );
	}

	netdb->Logout();

	delete netdb;
	AfxEndThread( 0, TRUE );
	return TRUE;
}