KScanOption *KScanDevice::getGuiElement( const QByteArray& name, QWidget *parent, const QString& desc, const QString& tooltip ) { if( name.isEmpty() ) return(0); QWidget *w = 0; KScanOption *so = 0; QByteArray alias = aliasName( name ); /* Check if already exists */ so = getExistingGuiElement( name ); if( so ) return( so ); /* ...else create a new one */ so = new KScanOption( alias ); if( so->valid() && so->softwareSetable()) { /** store new gui-elem in list of all gui-elements */ gui_elements.append( so ); w = so->createWidget( parent, desc, tooltip ); if( w ) { connect( so, SIGNAL( optionChanged( KScanOption* ) ), this, SLOT( slOptChanged( KScanOption* ))); w->setEnabled( so->active() ); } else {
/* --------------------------------------------------------------------------- ------------------------------------------------------------------------- */ KScanOption *KScanDevice::getExistingGuiElement( const QByteArray& name ) { KScanOption *ret = 0L; QByteArray alias = aliasName( name ); /* gui_elements is a QList<KScanOption> */ for( ret = gui_elements.first(); ret != 0; ret = gui_elements.next()) { if( ret->getName() == alias ) break; } return( ret ); }
VFolder *VProcess::RetainProductSystemFolder( ESystemFolderKind inSelector, bool inCreateFolderIfNotFound) const { VFolder *folder = NULL; bool allUsers; bool useProductSubFolder; ESystemFolderKind currentUserFolder; switch( inSelector) { case eFK_UserDocuments: case eFK_Temporary: allUsers = true; useProductSubFolder = true; break; case eFK_CommonPreferences: currentUserFolder = eFK_UserPreferences; allUsers = true; useProductSubFolder = true; break; case eFK_CommonApplicationData: currentUserFolder = eFK_UserApplicationData; allUsers = true; useProductSubFolder = true; break; case eFK_CommonCache: currentUserFolder = eFK_UserCache; allUsers = true; useProductSubFolder = true; break; case eFK_UserPreferences: case eFK_UserApplicationData: case eFK_UserCache: allUsers = false; useProductSubFolder = true; break; default: allUsers = false; useProductSubFolder = false; break; } if (useProductSubFolder) { VFolder *parent = VFolder::RetainSystemFolder( inSelector, inCreateFolderIfNotFound); if (parent != NULL) { VError err; VString folderName; GetProductName( folderName); // accepte un alias VString aliasName( folderName); #if VERSIONWIN aliasName += ".lnk"; #endif VFile aliasFile( *parent, aliasName); if (aliasFile.Exists() && aliasFile.IsAliasFile()) { VFilePath target; err = aliasFile.ResolveAlias( target); if ( (err == VE_OK) && target.IsFolder() ) { folder = new VFolder( target); } } if (folder == NULL) { folder = new VFolder( *parent, folderName); } if (!folder->Exists()) { if (inCreateFolderIfNotFound) { if (allUsers) { // drop errors if we can retry in current user home directory StErrorContextInstaller context( false); err = folder->CreateRecursive( allUsers); } else { err = folder->CreateRecursive( allUsers); } if (err != VE_OK) { ReleaseRefCountable( &folder); // si on nous a demande de creer dans "all users", on ressaie dans le dossier de l'utilisateur courant if (allUsers) { folder = RetainProductSystemFolder( currentUserFolder, inCreateFolderIfNotFound); } } } else { ReleaseRefCountable( &folder); } } } ReleaseRefCountable( &parent); } else { folder = VFolder::RetainSystemFolder( inSelector, inCreateFolderIfNotFound); } return folder; }