/***************************************************************************** * Copyright (C) 2009 by Peter Penz * * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Library General Public * * License version 2 as published by the Free Software Foundation. * * * * This library is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * * Library General Public License for more details. * * * * You should have received a copy of the GNU Library General Public License * * along with this library; see the file COPYING.LIB. If not, write to * * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * * Boston, MA 02110-1301, USA. * *****************************************************************************/ #ifndef KLOADMETADATATHREAD_H #define KLOADMETADATATHREAD_H #define DISABLE_NEPOMUK_LEGACY #include #include #include #include #include #include /** * Loads the meta data of files that are * required by the widget KMetaDataWidget. */ class KLoadMetaDataThread : public QThread { Q_OBJECT public: struct Item { QString name; QString label; QString value; }; KLoadMetaDataThread(); virtual ~KLoadMetaDataThread(); /** * Starts the thread and loads the meta data for * the files given by \p urls. After receiving * the signal finished(), the methods * rating(), comment(), tags(), metaInfoLabels(), * metaInfoValues() and files() return valid data. */ void load(const KUrl::List& urls); /** * Cancels the thread and assures that the thread deletes * itself as soon as the cancelling has been successful. In * opposite to QThread::wait() the caller of cancelAndDelete() * will not be blocked. */ void cancelAndDelete(); /** @see QThread::run() */ virtual void run(); int rating() const; QString comment() const; QList tags() const; QList items() const; QMap files() const; private slots: void slotFinished(); private: /** * Temporary helper method there is a way to get translated * labels for Nepmok literals: Replaces camelcase labels * like "fileLocation" by "File Location:". */ QString tunedLabel(const QString& label) const; /** * Temporary helper method until there is a proper formatting facility in Nepomuk. * Here we simply handle the most common formatting situations that do not look nice * when using Nepomuk::Variant::toString(). */ QString formatValue(const Nepomuk::Variant& value); private: unsigned int m_rating; QString m_comment; QList m_tags; QList m_items; QMap m_files; KUrl::List m_urls; bool m_canceled; }; #endif