Exemplo n.º 1
0
///initializations
///added a stacked widget to implement the site and interface viewer
///setting up the view and queries
vpnTab::vpnTab(QString inputVpnName,QString vpnDescription,QString inputAddressRange,QString inputVlanRange,unsigned int inputVpnId):ui(new Ui::vpnTab)
{
    ui->setupUi(this);

    ui->stackedWidget->insertWidget(0,&viewSite);
    ui->stackedWidget->setCurrentIndex(0);
    //I've used a stacked widget to implement the site and interface viewer
    //I change between them by setting the index depending on where the user clicks

    vpnId=inputVpnId;
    vpnName=inputVpnName;
    addressRange=inputAddressRange;
    vlanRange=inputVlanRange;
    ui->label->setText("VPN name: "+vpnName);
    ui->label_2->setText("Description: "+vpnDescription);
    ui->label_3->setText("Address range: "+addressRange);
    ui->label_4->setText("VLAN: "+vlanRange);
    //initializations


    siteModel = new QSqlQueryModel;
    QString qry=QString("SELECT siteId,siteName,siteAddressRange FROM sites where vpnId=%1").arg(vpnId);
    siteModel->setQuery(qry);
    siteModel->setHeaderData(0, Qt::Horizontal, tr("Site id"));
    siteModel->setHeaderData(1, Qt::Horizontal, tr("Site name"));
    siteModel->setHeaderData(2, Qt::Horizontal, tr("Address range"));
    ui->tableView->setModel(siteModel);
    ui->tableView->setColumnHidden(0,1);

    ui->tableView->horizontalHeader()->setDefaultSectionSize(120);
    ui->tableView->horizontalHeader()->setStretchLastSection(true);
    //fetching the site list and sizing up elements

    ui->splitter->setStretchFactor(0,1);
    ui->splitter->setStretchFactor(1,2);


    //connecting signals

    connect(&viewSite, SIGNAL(interfaceDetail(uint,QString,QString)),this, SLOT(detailRequested(uint,QString,QString)));
    //signal to view the details of an interface after double click

    connect(&viewInterface, SIGNAL(back()),this, SLOT(backToInterfaces()));
    //signal to switch back to the interfaces list from the details list

    connect(&addSite, SIGNAL(addedSite()),this, SLOT(refreshSite()));
    connect(&del, SIGNAL(deleted()),this, SLOT(refreshSite()));
    connect(&del, SIGNAL(deleted()),&viewSite, SLOT(refreshInterfaces()));
    //signal to refresh lists after deletion of site/interface or successfully adding a site

}
Exemplo n.º 2
0
const std::vector<Serial::Device>& Serial::getDevices( bool forceRefresh )
{
	if( ( ! forceRefresh ) && ( sDevicesInited ) )
		return sDevices;

	sDevices.clear();

#if defined( CINDER_MAC )	
	::DIR *dir;
	::dirent *entry;
	dir = ::opendir( "/dev" );

	if( ! dir ) {
		throw SerialExcDeviceEnumerationFailed();
	}
	else {
		while( ( entry = ::readdir( dir ) ) != NULL ) {
			std::string str( (char *)entry->d_name );
			if( ( str.substr( 0, 4 ) == "tty." ) || ( str.substr( 0, 3 ) == "cu." ) ) {
				sDevices.push_back( Serial::Device( str ) );
			}
		}
	}
	
#elif defined( CINDER_MSW )
	::HDEVINFO devInfoSet;
	::DWORD devCount = 0;
	::SP_DEVINFO_DATA devInfo;
	::SP_DEVICE_INTERFACE_DATA devInterface;
	DWORD size = 0;

	devInfoSet = ::SetupDiGetClassDevs( &GUID_SERENUM_BUS_ENUMERATOR, 0, 0, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE );
	if( devInfoSet == INVALID_HANDLE_VALUE )
		throw SerialExcDeviceEnumerationFailed();
	
	devInterface.cbSize = sizeof( ::SP_DEVICE_INTERFACE_DATA );
	while( ::SetupDiEnumDeviceInterfaces( devInfoSet, 0, &GUID_SERENUM_BUS_ENUMERATOR, devCount++, &devInterface ) ) {
		// See how large a buffer we require for the device interface details
		::SetupDiGetDeviceInterfaceDetail( devInfoSet, &devInterface, 0, 0, &size, 0 );
		devInfo.cbSize = sizeof( ::SP_DEVINFO_DATA );
		shared_ptr<::SP_DEVICE_INTERFACE_DETAIL_DATA> interfaceDetail( (::SP_DEVICE_INTERFACE_DETAIL_DATA*)calloc( 1, size ), free );
		if( interfaceDetail ) {
			interfaceDetail->cbSize = sizeof( ::SP_DEVICE_INTERFACE_DETAIL_DATA );
			devInfo.cbSize = sizeof( ::SP_DEVINFO_DATA );
			if( ! ::SetupDiGetDeviceInterfaceDetail( devInfoSet, &devInterface, interfaceDetail.get(), size, 0, &devInfo ) ) {
				continue;
			}

			char friendlyName[2048];
			size = sizeof( friendlyName );
			friendlyName[0] = 0;
			::DWORD propertyDataType;
			if( ! ::SetupDiGetDeviceRegistryPropertyA( devInfoSet, &devInfo, SPDRP_FRIENDLYNAME, &propertyDataType, (LPBYTE)friendlyName, size, 0 ) ) {
				continue;
			}

			sDevices.push_back( Serial::Device( string( friendlyName ), toUtf8( interfaceDetail->DevicePath ) ) );
		}
	}
	
	::SetupDiDestroyDeviceInfoList(devInfoSet);

#endif

	sDevicesInited = true;
	return sDevices;
}