From kde-commits Thu Jan 25 11:50:02 2007 From: David Faure Date: Thu, 25 Jan 2007 11:50:02 +0000 To: kde-commits Subject: branches/KDE/3.5/kdelibs/kio Message-Id: <1169725802.311390.22422.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=116972581509224 SVN commit 627004 by dfaure: Forward mimetype signal from the get job to the FileCopyJob, to help kpdf with #140482. (and any other kpart that wants to know what it's opening exactly) CCMAIL: Albert Astals Cid M +9 -2 kio/job.cpp M +14 -1 kio/jobclasses.h M +18 -3 tests/jobtest.cpp M +2 -0 tests/jobtest.h --- branches/KDE/3.5/kdelibs/kio/kio/job.cpp #627003:627004 @@ -1808,8 +1808,10 @@ connectSubjob( m_getJob ); // Progress info depends on get m_getJob->resume(); // Order a beer - connect( m_getJob, SIGNAL(data(KIO::Job *, const QByteArray&)), - SLOT( slotData(KIO::Job *, const QByteArray&))); + connect( m_getJob, SIGNAL(data(KIO::Job*,const QByteArray&)), + SLOT( slotData(KIO::Job*,const QByteArray&)) ); + connect( m_getJob, SIGNAL(mimetype(KIO::Job*,const QString&) ), + SLOT(slotMimetype(KIO::Job*,const QString&)) ); } else // copyjob { @@ -1870,6 +1872,11 @@ m_buffer = QByteArray(); } +void FileCopyJob::slotMimetype( KIO::Job*, const QString& type ) +{ + emit mimetype( this, type ); +} + void FileCopyJob::slotResult( KIO::Job *job) { //kdDebug(7007) << "FileCopyJob this=" << this << " ::slotResult(" << job << ")" << endl; --- branches/KDE/3.5/kdelibs/kio/kio/jobclasses.h #627003:627004 @@ -227,7 +227,7 @@ * @see setWindow() */ QWidget *window() const; - + /** * Updates the last user action timestamp to the given time. * See KApplication::updateUserTimestamp() . @@ -1300,10 +1300,23 @@ */ KURL destURL() const { return m_dest; } + signals: + /** + * Mimetype determined during a file copy. + * This is never emitted during a move, and might not be emitted during + * a copy, depending on the slave. + * @param job the job that emitted this signal + * @param type the mime type + * + * @since 3.5.7 + */ + void mimetype( KIO::Job *job, const QString &type ); + public slots: void slotStart(); void slotData( KIO::Job *, const QByteArray &data); void slotDataReq( KIO::Job *, QByteArray &data); + void slotMimetype( KIO::Job *, const QString& type ); protected slots: /** --- branches/KDE/3.5/kdelibs/kio/tests/jobtest.cpp #627003:627004 @@ -473,8 +473,8 @@ void JobTest::moveDirectoryNoPermissions() { kdDebug() << k_funcinfo << endl; - const QString src = "/etc/rc.d"; - const QString dest = homeTmpDir() + "rc.d"; + const QString src = "/etc/init.d"; + const QString dest = homeTmpDir() + "init.d"; assert( QFile::exists( src ) ); assert( QFileInfo( src ).isDir() ); KURL u; @@ -564,7 +564,10 @@ kdDebug() << "copying " << u << " to " << d << endl; // copy the file with file_copy - bool ok = KIO::NetAccess::file_copy( u, d ); + KIO::FileCopyJob* job = KIO::file_copy( u, d ); + connect( job, SIGNAL(mimetype(KIO::Job*,const QString&)), + this, SLOT(slotMimetype(KIO::Job*,const QString&)) ); + bool ok = KIO::NetAccess::synchronousRun( job, 0 ); assert( ok ); QString dest = realSystemPath() + "fileFromHome_copied"; @@ -578,6 +581,12 @@ // unless we use setModificationTime in the app code. } + // Check mimetype + kdDebug() << m_mimetype << endl; + // There's no mimemagic determination in kio_file in kde3. Fixing this for kde4... + assert( m_mimetype == "application/octet-stream" ); + //assert( m_mimetype == "text/plain" ); + // cleanup and retry with KIO::copy() QFile::remove( dest ); ok = KIO::NetAccess::dircopy( u, d, 0 ); @@ -595,4 +604,10 @@ kio_resolve_local_urls = true; } +void JobTest::slotMimetype(KIO::Job* job, const QString& type) +{ + assert( job ); + m_mimetype = type; +} + #include "jobtest.moc" --- branches/KDE/3.5/kdelibs/kio/tests/jobtest.h #627003:627004 @@ -56,6 +56,7 @@ private slots: void slotEntries( KIO::Job*, const KIO::UDSEntryList& lst ); void slotGetResult( KIO::Job* ); + void slotMimetype(KIO::Job*,const QString&); private: QString homeTmpDir() const; @@ -72,6 +73,7 @@ int m_result; QByteArray m_data; QStringList m_names; + QString m_mimetype; }; #endif