21 #include <kdatastream.h>
22 #include <tdefileitem.h>
24 #include <tdefilemetainfo.h>
25 #include <tdeio/kservice.h>
26 #include <tdeparts/componentfactory.h>
30 #include "metainfojob.moc"
32 using namespace TDEIO;
34 struct TDEIO::MetaInfoJobPrivate
37 KFileItemListIterator* currentItem;
45 d =
new MetaInfoJobPrivate;
46 d->deleteItems = deleteItems;
49 d->currentItem =
new KFileItemListIterator(d->items);
51 d->items.setAutoDelete(deleteItems);
53 if (d->currentItem->isEmpty())
55 kdDebug(7007) <<
"nothing to do for the MetaInfoJob\n";
60 kdDebug(7007) <<
"starting MetaInfoJob\n";
64 TQTimer::singleShot(0,
this, TQT_SLOT(start()));
67 MetaInfoJob::~MetaInfoJob()
69 delete d->currentItem;
73 void MetaInfoJob::start()
80 if (d->currentItem->current() == item)
82 subjobs.first()->kill();
83 subjobs.removeFirst();
87 d->items.remove(d->items.find(item));
90 void MetaInfoJob::determineNextFile()
92 if (d->currentItem->atLast())
94 kdDebug(7007) <<
"finished MetaInfoJob\n";
100 d->succeeded =
false;
103 if (d->currentItem->current()->metaInfo(
false).isValid())
114 void MetaInfoJob::slotResult(
TDEIO::Job *job )
117 Q_ASSERT(subjobs.isEmpty());
122 void MetaInfoJob::getMetaInfo()
124 Q_ASSERT(!d->currentItem->isEmpty());
127 URL.setProtocol(
"metainfo");
128 URL.setPath(d->currentItem->current()->url().path());
133 connect(job, TQT_SIGNAL(data(
TDEIO::Job *,
const TQByteArray &)),
134 this, TQT_SLOT(slotMetaInfo(
TDEIO::Job *,
const TQByteArray &)));
136 job->
addMetaData(
"mimeType", d->currentItem->current()->mimetype());
140 void MetaInfoJob::slotMetaInfo(
TDEIO::Job*,
const TQByteArray &data)
143 TQDataStream s(data, IO_ReadOnly);
147 d->currentItem->current()->setMetaInfo(info);
156 for (TDETrader::OfferList::ConstIterator it = plugins.begin(); it != plugins.end(); ++it)
157 result.append((*it)->desktopEntryName());
165 for (TDETrader::OfferList::ConstIterator it = plugins.begin(); it != plugins.end(); ++it)
166 result += (*it)->property(
"MimeTypes").toStringList();
177 KFileItemList fileItems;
178 for (KURL::List::ConstIterator it = items.begin(); it != items.end(); ++it)
179 fileItems.append(
new KFileItem(KFileItem::Unknown, KFileItem::Unknown, *it,
true));