示例#1
0
void Importer::start(const KUrl::List& list, const KUrl& destination)
{
    d->mUrlList = list;
    d->mImportedUrlList.clear();
    d->mSkippedUrlList.clear();
    d->mRenamedCount = 0;
    d->mProgress = 0;
    d->mJobProgress = 0;

    emitProgressChanged();
    maximumChanged(d->mUrlList.count() * 100);

    if (!d->createImportDir(destination)) {
        kWarning() << "Could not create import dir";
        return;
    }
    d->importNext();
}
示例#2
0
void Importer::slotPercent(KJob*, unsigned long percent)
{
    d->mJobProgress = percent;
    emitProgressChanged();
}
示例#3
0
void Importer::advance()
{
    ++d->mProgress;
    d->mJobProgress = 0;
    emitProgressChanged();
}
/**
 * Load everything that's needed for initially displaying the package
 * tree. In case of Portage, this is the global settings and the
 * package tree.
 */
IJob::JobResult PortageInitialLoader::performThread()
{
	if( m_packages == NULL ) {
		kdDebug() << i18n( "PortageInitialLoader debug output",
			"PortageInitialLoader::performThread(): "
			"Didn't start because the PackageList object is NULL" )
			<< endl;
		return Failure;
	}
	TemplatedPackageList<PortagePackage>* portagePackages =
		(TemplatedPackageList<PortagePackage>*) m_packages;

	JobResult result;

	//
	//TODO: Configuration values that should be
	//      read from a configuration file (KConfigXT for the lib, please?)
	//
	QString filename = KGlobalSettings::documentPath() + "/portagetree.xml";
	QString globalPackageMaskFile = "profiles/package.mask";
	QString etcPackageMaskFile = "/etc/portage/package.mask";
	QString etcPackageUnmaskFile = "/etc/portage/package.unmask";
	QString etcPackageKeywordsFile = "/etc/portage/package.keywords";


	//
	// load global Portage settings, like Portage directories and ARCH
	//
	emitCurrentTaskChanged(
		i18n("PortageInitialLoader task #1",
		     "Loading global Portage settings...")
	);
	ProfileLoader* profileLoader = new ProfileLoader();
	profileLoader->setSettingsObject( m_settings );

	result = profileLoader->perform();
	profileLoader->deleteLater();

	if( result == IJob::Failure )
		DO_FAILURE;

	emitProgressChanged( 1, 10 );


	//
	// set up the TreeScanner and load the package tree
	//
	emitCurrentTaskChanged(
		i18n("PortageInitialLoader task #2",
		     "Loading packages from the Portage tree...")
	);
	PortageTreeScanner* treeScanner = new PortageTreeScanner();
	treeScanner->setPackageList( portagePackages );
	treeScanner->setSettingsObject( m_settings );

	connect( treeScanner, SIGNAL( packagesScanned(int,int) ),
	         this,          SLOT( emitPackagesScanned(int,int) ) );
	connect( this,        SIGNAL( aborted() ),
	         treeScanner,   SLOT( abort() ) );

	result = treeScanner->perform();
	this->disconnect( treeScanner ); // disconnects abort()
	treeScanner->deleteLater(); // disconnects everything else
	CHECK_ABORT;

	if( result == Failure )
	{
		emitCurrentTaskChanged(
			i18n("PortageInitialLoader task #3 (%1 is the filename)",
				 "Loading packages from %1...")
			.arg( filename )
		);
		PortageML* portageML = new PortageML();
		portageML->setAction( PortageML::LoadFile );
		portageML->setPackageList( portagePackages );
		portageML->setFileName( filename );

		connect( portageML, SIGNAL( packagesScanned(int,int) ),
		         this,        SLOT( emitPackagesScanned(int,int) ) );
		connect( this,      SIGNAL( aborted() ),
		         portageML,   SLOT( abort() ) );

		result = portageML->perform();
		this->disconnect( portageML ); // disconnects abort()
		portageML->deleteLater(); // disconnects everything else
		CHECK_ABORT;

		if( result == Failure )
			DO_FAILURE;
		// else: go on
	}