1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
/**************************************************
*
*
**************************************************
* This code was created by Peter Harvey @ CodeByDesign.
* Released under GPL 18.FEB.99
*
* Contributions from...
* -----------------------------------------------
* Peter Harvey - pharvey@codebydesign.com
**************************************************/
#include "classDataSources.h"
#include "datasourcesuser.xpm"
#include "datasourcessystem.xpm"
classDataSources::classDataSources( QListView *pParent, classCanvas *pCanvas, int nDataSourceType, SQLHENV hEnv )
: classNode( pParent, pCanvas )
{
Init( nDataSourceType, hEnv );
}
classDataSources::classDataSources( QListViewItem *pParent, classCanvas *pCanvas, int nDataSourceType, SQLHENV hEnv )
: classNode( pParent, pCanvas )
{
Init( nDataSourceType, hEnv );
}
classDataSources::classDataSources( QListViewItem *pParent, QListViewItem *pAfter, classCanvas *pCanvas, int nDataSourceType, SQLHENV hEnv )
: classNode( pParent, pAfter, pCanvas )
{
Init( nDataSourceType, hEnv );
}
classDataSources::~classDataSources()
{
listDataSources.clear();
}
void classDataSources::Init( int nDataSourceType, SQLHENV hEnv )
{
switch ( nDataSourceType )
{
case classDataSources::System :
this->nDataSourceType = nDataSourceType;
setText( 0, "System Data Sources" );
setText( 1, "" );
setText( 2, "" );
setPixmap( 0, QPixmap( datasourcessystem_xpm ) );
break;
default:
this->nDataSourceType = classDataSources::User;
setText( 0, "User Data Sources" );
setText( 1, "" );
setText( 2, "" );
setPixmap( 0, QPixmap( datasourcesuser_xpm ) );
}
this->pCanvas = pCanvas;
this->hEnv = hEnv;
listDataSources.setAutoDelete( TRUE );
}
void classDataSources::setOpen( bool bOpen )
{
int nElement;
char szResults[9600];
char szObjectName[INI_MAX_OBJECT_NAME+1];
classDataSource *pLastDataSource = NULL;
if ( bOpen )
{
memset( szResults, 0, sizeof(szResults) );
if ( nDataSourceType == User )
SQLSetConfigMode( ODBC_USER_DSN );
else
SQLSetConfigMode( ODBC_SYSTEM_DSN );
if ( SQLGetPrivateProfileString( 0, 0, 0, szResults, 9600, 0 ) > 0 )
{
for ( nElement = 0; iniElement( szResults, '\0', '\0', nElement, szObjectName, INI_MAX_OBJECT_NAME ) == INI_SUCCESS; nElement++ )
{
listDataSources.append( pLastDataSource = new classDataSource( this, pLastDataSource, pCanvas, nDataSourceType, szObjectName, hEnv ) );
}
}
else
{
//SQLInstallerError( 1, &nError, szError, FILENAME_MAX, 0 );
//if ( cVerbose == 0 ) printf( "[odbcinst] SQLGetPrivateProfileString failed with %s.\n", szError );
//return;
}
SQLSetConfigMode( ODBC_BOTH_DSN );
}
else
{
listDataSources.clear();
}
QListViewItem::setOpen( bOpen );
}
void classDataSources::setup()
{
setExpandable( TRUE );
QListViewItem::setup();
}
void classDataSources::selectionChanged( QListViewItem *p )
{
classDataSource *pDataSource;
for ( pDataSource = listDataSources.first(); pDataSource != 0; pDataSource = listDataSources.next() )
pDataSource->selectionChanged( p );
if ( p == this )
{
}
}
|