void WorkerThread::run() {
    // If you wish to add post-extraction code, do it here.
    connect( this, SIGNAL( requestDiskspaceError() ),
             this, SLOT( showDiskspaceError() ) );
    // FIXME: Remove Test code for dialog over splash screen.
    //QThread::currentThread()->sleep( 1 );
    //emit requestDiskspaceError();
    //return;
    QDir d( _hiddenDir );

    if ( ! QFile::exists( QDir::cleanPath( _hiddenDir + "/version.nfo" ) ) ) {
        Package* pkg = Package::openEdit( _archFile );

        if ( ! checkAvailoableDiskSpace( pkg->requiredDiskSpace() ) ) {
            delete pkg;
            return;
        }

        connect( pkg, SIGNAL( checkingFile( QString ) ),
                 this, SLOT( checkingFile( QString ) ) );
        connect( pkg, SIGNAL( extractingFile( QString ) ),
                 this, SLOT( extractingFile( QString ) ) );
        connect( pkg, SIGNAL( skippingFile( QString ) ),
                 this, SLOT( skippingFile( QString ) ) );
        connect( pkg, SIGNAL( finishExtracting() ),
                 this, SLOT( finishExtracting() ) );
        connect( pkg, SIGNAL( startExtracting( int ) ),
                 this, SLOT( startExtracting( int ) ) );
        connect( pkg, SIGNAL( destroyed( QObject* ) ),
                 this, SLOT( packageDeleted() ) );
        pkg->extractAll( _hiddenDir );
        delete pkg;
    } else {