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 121
|
/**************************************************
*
*
**************************************************
* This code was created by Peter Harvey @ CodeByDesign.
* Released under GPL 18.FEB.99
*
* Contributions from...
* -----------------------------------------------
* Peter Harvey - pharvey@codebydesign.com
**************************************************/
#include "classDrivers.h"
#include "drivers.xpm"
classDrivers::classDrivers( QListView *pParent, classCanvas *pCanvas, SQLHENV hEnv )
: classNode( pParent, pCanvas )
{
Init( hEnv );
}
classDrivers::classDrivers( QListViewItem *pParent, classCanvas *pCanvas, SQLHENV hEnv )
: classNode( pParent, pCanvas )
{
Init( hEnv );
}
classDrivers::classDrivers( QListViewItem *pParent, QListViewItem *pAfter, classCanvas *pCanvas, SQLHENV hEnv )
: classNode( pParent, pAfter, pCanvas )
{
Init( hEnv );
}
classDrivers::~classDrivers()
{
listDrivers.clear();
}
void classDrivers::Init( SQLHENV hEnv )
{
this->pCanvas = pCanvas;
this->hEnv = hEnv;
listDrivers.setAutoDelete( TRUE );
setText( 0, "Drivers" );
setText( 1, "" );
setText( 2, "" );
setPixmap( 0, QPixmap( drivers_xpm ) );
}
/*******************************************************
* setOpen
*******************************************************
*
*
*******************************************************/
void classDrivers::setOpen( bool o )
{
SQLRETURN nReturn;
SQLCHAR szDriverDesc[1024];
/********************************
* METHOD 1 - Using Driver Manager
********************************/
if ( o && !childCount() )
{
nReturn = SQLDrivers( hEnv, SQL_FETCH_FIRST, szDriverDesc, sizeof(szDriverDesc)-1, 0, 0, -1, 0 );
while ( nReturn == SQL_SUCCESS )
{
listDrivers.append( new classDriver( this, pCanvas, (char*)szDriverDesc, hEnv ) );
nReturn = SQLDrivers( hEnv, SQL_FETCH_NEXT, szDriverDesc, sizeof(szDriverDesc)-1, 0, 0, -1, 0 );
}
}
QListViewItem::setOpen( o );
/********************************
* METHOD 2 - Using odbcinst
********************************/
/*
int nElement;
char szResults[9600];
char szObjectName[INI_MAX_OBJECT_NAME+1];
if ( o && !childCount() )
{
// ADD CHILD NODES; only classDataSources knows what they may be
szResults[0] = '\0';
if ( SQLGetInstalledDrivers( szResults, 9600, 0 ) == TRUE )
{
for ( nElement = 0; iniElement( szResults, '\0', '\0', nElement, szObjectName, INI_MAX_OBJECT_NAME ) == INI_SUCCESS; nElement++ )
{
listDrivers.append( new classDriver( this, pCanvas, szObjectName, hEnv ) );
}
}
else
{
//SQLInstallerError( 1, &nError, szError, FILENAME_MAX, 0 );
//if ( cVerbose == 0 ) printf( "[odbcinst] SQLGetPrivateProfileString failed with %s.\n", szError );
//return;
}
}
QListViewItem::setOpen( o );
*/
}
void classDrivers::setup()
{
setExpandable( TRUE );
QListViewItem::setup();
}
void classDrivers::selectionChanged( QListViewItem *p )
{
classDriver *pDriver;
for ( pDriver = listDrivers.first(); pDriver != 0; pDriver = listDrivers.next() )
pDriver->selectionChanged( p );
if ( p == this )
{
}
}
|