Source Code (Use browser search to find items of interest.)

Class Index

ksysctrl'DeviceList (./kdeadmin/ksysctrl/ksysctrl/devicelist.h:30)

class DeviceList : public QList<Device>
{
  public:
  
    DeviceList();
    ~DeviceList() {}
  
    QList<Conflict>  conflicts(Device *, QList<Resource>, bool test);
    void             rescan(bool scsiscan);
    
  private:
  
    bool  _firstscan;

    void  scanDevices(bool scsiscan);
};


ksysctrl'DeviceList::DeviceList() (./kdeadmin/ksysctrl/ksysctrl/devicelist.cpp:31)

DeviceList::DeviceList() : _firstscan(true)
{  
  setAutoDelete(true);
  clear();

  scanDevices(false);
}


/*
 * Public methods
 *****************/


ksysctrl'DeviceList::conflicts() (./kdeadmin/ksysctrl/ksysctrl/devicelist.cpp:44)

QList<Conflict>  DeviceList::conflicts(Device *device, QList<Resource> reslist, bool test)
{
  QList<Conflict>  conflictlist;
  Device           *dev;
  Resource         *res, *devres;
  uint             cnt = count();
  uint             i;
  
  for (dev = at(i = 0); i < cnt-1; dev = at(++i))
    if (dev != device)	// Well...
      for (res = reslist.first(); res; res = reslist.next())
	for (devres = dev->firstResource(); devres; devres = dev->nextResource())
	  if (*res == *devres) conflictlist.append(new Conflict(dev, res)); 
  
  if (!test) device->setConflict(!conflictlist.isEmpty());  
  
  return conflictlist;
}



ksysctrl'DeviceList::rescan() (./kdeadmin/ksysctrl/ksysctrl/devicelist.cpp:64)

void  DeviceList::rescan(bool scsiscan)
{
  _firstscan = false;

  clear();
  scanDevices(scsiscan);
}


/*
 * Private methods 
 ******************/
 

ksysctrl'DeviceList::scanDevices() (./kdeadmin/ksysctrl/ksysctrl/devicelist.cpp:77)

void  DeviceList::scanDevices(bool scsiscan)
{
  QList<DeviceScanner>  scanlist;
  QList<Conflict>       conflictlist;
  QList<Resource>       reslist;
  DeviceScanner         *scanner;
  Device                *dev;
  Resource              *res;
  uint			cnt;
  uint                  i;
  
  scanlist.setAutoDelete(true);
  scanlist.clear();
  scanlist.append(new PCIScanner());
  scanlist.append(new ISAPnPScanner());
  scanlist.append(new SCSIScanner(!_firstscan && scsiscan));
  scanlist.append(new IDEDriveScanner());
  scanlist.append(new ParallelPortScanner());
  scanlist.append(new SerialPortScanner());
  scanlist.append(new PCCardScanner());
 
  for (scanner = scanlist.first(); scanner; scanner = scanlist.next())  
    for (dev = scanner->firstDevice(); dev; dev = scanner->nextDevice())
      append(dev);   
  
  cnt = count();    
      
  for (dev = at(i = 0); i < cnt-1; dev = at(++i))
  {
    reslist.clear();
    
    for (res = dev->firstResource(); res; res = dev->nextResource())
      reslist.append(res);
  
    (void) conflicts(dev, reslist, false);
  } 
}