]> cloud.milkyroute.net Git - dolphin.git/commitdiff
* get rid of MetaDataWidget::openConfigurationDialog()
authorPeter Penz <peter.penz19@gmail.com>
Sat, 17 Oct 2009 12:23:38 +0000 (12:23 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Sat, 17 Oct 2009 12:23:38 +0000 (12:23 +0000)
* allow to hide specific data for applications
* check whether Nepomuk has been activated (the check with #idfef HAVE_NEPOMUK is not sufficient in the case if Nepomok is available but not activated)

svn path=/trunk/KDE/kdebase/apps/; revision=1036556

src/panels/information/informationpanelcontent.cpp
src/panels/information/metadataconfigurationdialog.cpp
src/panels/information/metadataconfigurationdialog.h
src/panels/information/metadatawidget.cpp
src/panels/information/metadatawidget.h

index 41f9e2c5ad7ac4fc76538e6de4a63fa0bde9a9ed..b47ee78400b4df533ef1edf9d408928e410ab1ea 100644 (file)
@@ -307,7 +307,8 @@ void InformationPanelContent::configureSettings()
         m_previewSeparator->setVisible(isChecked);
         InformationPanelSettings::setShowPreview(isChecked);
     } else if (action == configureAction) {
-        m_metaDataWidget->openConfigurationDialog();
+        MetaDataConfigurationDialog dialog(m_metaDataWidget, this, Qt::Dialog);
+        dialog.exec();
     }
 
     showItem(m_item);
index ec6f4d1a2dd565035027ce3ce46e5489103972d4..7dbacd164bdb8e4cad5db0e408571992cbea9938 100644 (file)
@@ -27,6 +27,7 @@
 #ifdef HAVE_NEPOMUK
     #define DISABLE_NEPOMUK_LEGACY
     #include <Nepomuk/Resource>
+    #include <Nepomuk/ResourceManager>
     #include <Nepomuk/Types/Property>
     #include <Nepomuk/Variant>
 #endif
 class MetaDataConfigurationDialog::Private
 {
 public:
-    Private(MetaDataConfigurationDialog* parent);
+    Private(MetaDataConfigurationDialog* parent, MetaDataWidget* metaDataWidget);
     ~Private();
 
+    void init();
     void loadMetaData();
 
-    KUrl m_url;
+    int m_hiddenData;
+    MetaDataWidget* m_metaDataWidget;
     QListWidget* m_metaDataList;
 
 private:
     MetaDataConfigurationDialog* const q;
 };
 
-MetaDataConfigurationDialog::Private::Private(MetaDataConfigurationDialog* parent) :
+MetaDataConfigurationDialog::Private::Private(MetaDataConfigurationDialog* parent,
+                                              MetaDataWidget* metaDataWidget) :
     q(parent)
 {
+    m_hiddenData = 0;
+    m_metaDataWidget = metaDataWidget;
+
+    q->setCaption(i18nc("@title:window", "Configure Shown Data"));
+    q->setButtons(KDialog::Ok | KDialog::Cancel);
+    q->setDefaultButton(KDialog::Ok);
+
+    QWidget* mainWidget = new QWidget(q);
+    QVBoxLayout* topLayout = new QVBoxLayout(mainWidget);
+
+    QLabel* label = new QLabel(i18nc("@label:textbox",
+                                     "Configure which data should "
+                                     "be shown."), q);
+
+    m_metaDataList = new QListWidget(q);
+    m_metaDataList->setSelectionMode(QAbstractItemView::NoSelection);
+
+    topLayout->addWidget(label);
+    topLayout->addWidget(m_metaDataList);
+
+    q->setMainWidget(mainWidget);
+
+    loadMetaData();
+
+    const KConfigGroup dialogConfig(KGlobal::config(), "Nepomuk MetaDataConfigurationDialog");
+    q->restoreDialogSize(dialogConfig);
 }
 
 MetaDataConfigurationDialog::Private::~Private()
 {
+    KConfigGroup dialogConfig(KGlobal::config(), "Nepomuk MetaDataConfigurationDialog");
+    q->saveDialogSize(dialogConfig, KConfigBase::Persistent);
 }
 
 void MetaDataConfigurationDialog::Private::loadMetaData()
@@ -66,17 +98,40 @@ void MetaDataConfigurationDialog::Private::loadMetaData()
 
     // Add fixed meta data items where the visibility does not
     // depend on the currently used URL.
+    int hiddenData = 0;
+    if (m_metaDataWidget != 0) {
+        hiddenData = m_metaDataWidget->hiddenData();
+    }
+
     typedef QPair<QString, QString> FixedItem;
     QList<FixedItem> fixedItems;
-    fixedItems.append(FixedItem("type",        i18nc("@item::inlistbox", "Type")));
-    fixedItems.append(FixedItem("size",        i18nc("@item::inlistbox", "Size")));
-    fixedItems.append(FixedItem("modified",    i18nc("@item::inlistbox", "Modified")));
-    fixedItems.append(FixedItem("owner",       i18nc("@item::inlistbox", "Owner")));
-    fixedItems.append(FixedItem("permissions", i18nc("@item::inlistbox", "Permissions")));
+    if (!(hiddenData & MetaDataWidget::TypeData)) {
+        fixedItems.append(FixedItem("type", i18nc("@item::inlistbox", "Type")));
+    }
+    if (!(hiddenData & MetaDataWidget::SizeData)) {
+        fixedItems.append(FixedItem("size", i18nc("@item::inlistbox", "Size")));
+    }
+    if (!(hiddenData & MetaDataWidget::ModifiedData)) {
+        fixedItems.append(FixedItem("modified", i18nc("@item::inlistbox", "Modified")));
+    }
+    if (!(hiddenData & MetaDataWidget::OwnerData)) {
+        fixedItems.append(FixedItem("owner", i18nc("@item::inlistbox", "Owner")));
+    }
+    if (!(hiddenData & MetaDataWidget::PermissionsData)) {
+        fixedItems.append(FixedItem("permissions", i18nc("@item::inlistbox", "Permissions")));
+    }
 #ifdef HAVE_NEPOMUK
-    fixedItems.append(FixedItem("rating",      i18nc("@item::inlistbox", "Rating")));
-    fixedItems.append(FixedItem("tags",        i18nc("@item::inlistbox", "Tags")));
-    fixedItems.append(FixedItem("comment",     i18nc("@item::inlistbox", "Comment")));
+    if (Nepomuk::ResourceManager::instance()->init() == 0) {
+        if (!(hiddenData & MetaDataWidget::RatingData)) {
+            fixedItems.append(FixedItem("rating", i18nc("@item::inlistbox", "Rating")));
+         }
+        if (!(hiddenData & MetaDataWidget::TagsData)) {
+            fixedItems.append(FixedItem("tags", i18nc("@item::inlistbox", "Tags")));
+        }
+        if (!(hiddenData & MetaDataWidget::CommentData)) {
+            fixedItems.append(FixedItem("comment", i18nc("@item::inlistbox", "Comment")));
+        }
+    }
 #endif
 
     foreach (const FixedItem& fixedItem, fixedItems) {
@@ -89,14 +144,25 @@ void MetaDataConfigurationDialog::Private::loadMetaData()
     }
 
 #ifdef HAVE_NEPOMUK
+    if (Nepomuk::ResourceManager::instance()->init() != 0) {
+        return;
+    }
+
     // Get all meta information labels that are available for
     // the currently shown file item and add them to the list.
-    if (m_url.isEmpty()) {
+    if (m_metaDataWidget == 0) {
         // TODO: in this case all available meta data from the system
         // should be added.
         return;
     }
-    Nepomuk::Resource res(m_url);
+
+    const KFileItemList items = m_metaDataWidget->items();
+    if (items.count() != 1) {
+        // TODO: handle als usecases for more than one item:
+        return;
+    }
+    Nepomuk::Resource res(items.first().nepomukUri());
+
     QHash<QUrl, Nepomuk::Variant> properties = res.properties();
     QHash<QUrl, Nepomuk::Variant>::const_iterator it = properties.constBegin();
     while (it != properties.constEnd()) {
@@ -141,43 +207,23 @@ void MetaDataConfigurationDialog::Private::loadMetaData()
 #endif
 }
 
-MetaDataConfigurationDialog::MetaDataConfigurationDialog(const KUrl& url,
-                                                         QWidget* parent,
+MetaDataConfigurationDialog::MetaDataConfigurationDialog(QWidget* parent,
                                                          Qt::WFlags flags) :
     KDialog(parent, flags),
-    d(new Private(this))
+    d(new Private(this, 0))
 {
-    d->m_url = url;
-
-    setCaption(i18nc("@title:window", "Configure Shown Data"));
-    setButtons(KDialog::Ok | KDialog::Cancel);
-    setDefaultButton(KDialog::Ok);
-
-    QWidget* mainWidget = new QWidget(this);
-    QVBoxLayout* topLayout = new QVBoxLayout(mainWidget);
-
-    QLabel* label = new QLabel(i18nc("@label:textbox",
-                                     "Configure which data should "
-                                     "be shown."), this);
-
-    d->m_metaDataList = new QListWidget(this);
-    d->m_metaDataList->setSelectionMode(QAbstractItemView::NoSelection);
-
-    topLayout->addWidget(label);
-    topLayout->addWidget(d->m_metaDataList);
-
-    setMainWidget(mainWidget);
-
-    d->loadMetaData();
+}
 
-    const KConfigGroup dialogConfig(KGlobal::config(), "Nepomuk MetaDataConfigurationDialog");
-    restoreDialogSize(dialogConfig);
+MetaDataConfigurationDialog::MetaDataConfigurationDialog(MetaDataWidget* metaDataWidget,
+                                                         QWidget* parent,
+                                                         Qt::WFlags flags) :
+    KDialog(parent, flags),
+    d(new Private(this, metaDataWidget))
+{
 }
 
 MetaDataConfigurationDialog::~MetaDataConfigurationDialog()
 {
-    KConfigGroup dialogConfig(KGlobal::config(), "Nepomuk MetaDataConfigurationDialog");
-    saveDialogSize(dialogConfig, KConfigBase::Persistent);
 }
 
 void MetaDataConfigurationDialog::slotButtonClicked(int button)
@@ -196,6 +242,11 @@ void MetaDataConfigurationDialog::slotButtonClicked(int button)
     
         showGroup.sync();
 
+        if (d->m_metaDataWidget != 0) {
+            // trigger an update
+            const int data = d->m_metaDataWidget->hiddenData();
+            d->m_metaDataWidget->setHiddenData(data);
+        }
         accept();
     } else {
         KDialog::slotButtonClicked(button);
index 9dda9c19031ed79cb25798c4033b6698cf6f5d38..82dc06ddf40d9e492dfbff1bd5c903e8b9f1dea0 100644 (file)
@@ -22,6 +22,8 @@
 
 #include <kdialog.h>
 
+class MetaDataWidget;
+
 /**
  * @brief Dialog which allows to configure which meta data should be shown.
  */
@@ -31,13 +33,19 @@ class MetaDataConfigurationDialog : public KDialog
 
 public:
     /**
-     * @param url    URL for which should be configured what kind of meta data is
-     *               shown. If the URL is empty, the configuration dialog will contain
-     *               all available meta data from the system.
-     * @param parent Parent widget which opens the dialog.
-     * @param flags  Window flags for the dialog.
+     * Allows to configure the visibility of all available meta
+     * data.
+     */
+    MetaDataConfigurationDialog(QWidget* parent = 0,
+                                Qt::WFlags flags = 0);
+
+    /**
+     * Allows to configure the visibility of the meta data
+     * shown by the meta data widget. The number of offered
+     * meta data is optimized for the set of file items
+     * that are applied to the meta data widget.
      */
-    MetaDataConfigurationDialog(const KUrl& url,
+    MetaDataConfigurationDialog(MetaDataWidget* metaDataWidget,
                                 QWidget* parent = 0,
                                 Qt::WFlags flags = 0);
 
index 4228ea4eabfa6058f7eb9f1330bdcede932f0068..8126292d7c4fd870d4259c9547d59323179cc277 100644 (file)
@@ -20,8 +20,6 @@
 
 #include "metadatawidget.h"
 
-#include "metadataconfigurationdialog.h"
-
 #include <kconfig.h>
 #include <kconfiggroup.h>
 #include <kfileitem.h>
@@ -44,6 +42,7 @@
 
     #include <Nepomuk/KRatingWidget>
     #include <Nepomuk/Resource>
+    #include <Nepomuk/ResourceManager>
     #include <Nepomuk/Types/Property>
     #include <Nepomuk/Variant>
 
@@ -53,6 +52,8 @@
     #include <QThread>
 #endif
 
+#include <kdebug.h>
+
 class MetaDataWidget::Private
 {
 public:
@@ -95,6 +96,7 @@ public:
      */
     void startChangeDataJob(KJob* job);
 
+    int m_hiddenData;
     QList<KFileItem> m_fileItems;
     QList<Row> m_rows;
 
@@ -167,6 +169,7 @@ private:
 };
 
 MetaDataWidget::Private::Private(MetaDataWidget* parent) :
+    m_hiddenData(0),
     m_fileItems(),
     m_rows(),
     m_gridLayout(0),
@@ -193,35 +196,38 @@ MetaDataWidget::Private::Private(MetaDataWidget* parent) :
     m_modifiedInfo = new QLabel(parent);
     m_ownerInfo = new QLabel(parent);
     m_permissionsInfo = new QLabel(parent);
-#ifdef HAVE_NEPOMUK
-    const QFontMetrics fontMetrics(KGlobalSettings::smallestReadableFont());
-    m_ratingWidget = new KRatingWidget(parent);
-    m_ratingWidget->setFixedHeight(fontMetrics.height());
-    connect(m_ratingWidget, SIGNAL(ratingChanged(unsigned int)),
-            q, SLOT(slotRatingChanged(unsigned int)));
-
-    m_taggingWidget = new TaggingWidget(parent);
-    connect(m_taggingWidget, SIGNAL(tagsChanged(const QList<Nepomuk::Tag>&)),
-            q, SLOT(slotTagsChanged(const QList<Nepomuk::Tag>&)));
-
-    m_commentWidget = new CommentWidget(parent);
-    connect(m_commentWidget, SIGNAL(commentChanged(const QString&)),
-            q, SLOT(slotCommentChanged(const QString&)));
-#endif
 
     addRow(new QLabel(i18nc("@label", "Type:"), parent), m_typeInfo);
     addRow(m_sizeLabel, m_sizeInfo);
     addRow(new QLabel(i18nc("@label", "Modified:"), parent), m_modifiedInfo);
     addRow(new QLabel(i18nc("@label", "Owner:"), parent), m_ownerInfo);
     addRow(new QLabel(i18nc("@label", "Permissions:"), parent), m_permissionsInfo);
+
 #ifdef HAVE_NEPOMUK
-    addRow(new QLabel(i18nc("@label", "Rating:"), parent), m_ratingWidget);
-    addRow(new QLabel(i18nc("@label", "Tags:"), parent), m_taggingWidget);
-    addRow(new QLabel(i18nc("@label", "Comment:"), parent), m_commentWidget);
+    if (Nepomuk::ResourceManager::instance()->init() == 0) {
+        const QFontMetrics fontMetrics(KGlobalSettings::smallestReadableFont());
+        m_ratingWidget = new KRatingWidget(parent);
+        m_ratingWidget->setFixedHeight(fontMetrics.height());
+        connect(m_ratingWidget, SIGNAL(ratingChanged(unsigned int)),
+                q, SLOT(slotRatingChanged(unsigned int)));
+
+        m_taggingWidget = new TaggingWidget(parent);
+        connect(m_taggingWidget, SIGNAL(tagsChanged(const QList<Nepomuk::Tag>&)),
+                q, SLOT(slotTagsChanged(const QList<Nepomuk::Tag>&)));
+
+        m_commentWidget = new CommentWidget(parent);
+        connect(m_commentWidget, SIGNAL(commentChanged(const QString&)),
+                q, SLOT(slotCommentChanged(const QString&)));
+
+        addRow(new QLabel(i18nc("@label", "Rating:"), parent), m_ratingWidget);
+        addRow(new QLabel(i18nc("@label", "Tags:"), parent), m_taggingWidget);
+        addRow(new QLabel(i18nc("@label", "Comment:"), parent), m_commentWidget);
+
+        m_loadFilesThread = new LoadFilesThread(&m_sharedData, &m_mutex);
+        connect(m_loadFilesThread, SIGNAL(finished()), q, SLOT(slotLoadingFinished()));
+    }
 
     m_sharedData.rating = 0;
-    m_loadFilesThread = new LoadFilesThread(&m_sharedData, &m_mutex);
-    connect(m_loadFilesThread, SIGNAL(finished()), q, SLOT(slotLoadingFinished()));
 #endif
 
     initMetaInfoSettings();
@@ -311,15 +317,33 @@ void MetaDataWidget::Private::updateRowsVisibility()
 {   
     KConfig config("kmetainformationrc", KConfig::NoGlobals);
     KConfigGroup settings = config.group("Show");
-    setRowVisible(m_typeInfo, settings.readEntry("type", true));
-    setRowVisible(m_sizeInfo, settings.readEntry("size", true));
-    setRowVisible(m_modifiedInfo, settings.readEntry("modified", true));
-    setRowVisible(m_ownerInfo, settings.readEntry("owner", true));
-    setRowVisible(m_permissionsInfo, settings.readEntry("permissions", true));
+    setRowVisible(m_typeInfo,
+                  !(m_hiddenData & MetaDataWidget::TypeData) &&
+                  settings.readEntry("type", true));
+    setRowVisible(m_sizeInfo,
+                  !(m_hiddenData & MetaDataWidget::SizeData) &&
+                  settings.readEntry("size", true));
+    setRowVisible(m_modifiedInfo,
+                  !(m_hiddenData & MetaDataWidget::ModifiedData) &&
+                  settings.readEntry("modified", true));
+    setRowVisible(m_ownerInfo,
+                  !(m_hiddenData & MetaDataWidget::OwnerData) &&
+                  settings.readEntry("owner", true));
+    setRowVisible(m_permissionsInfo,
+                  !(m_hiddenData & MetaDataWidget::PermissionsData) &&
+                  settings.readEntry("permissions", true));
 #ifdef HAVE_NEPOMUK
-    setRowVisible(m_ratingWidget, settings.readEntry("rating", true));
-    setRowVisible(m_taggingWidget, settings.readEntry("tagging", true));
-    setRowVisible(m_commentWidget, settings.readEntry("comment", true));
+    if (Nepomuk::ResourceManager::instance()->init() == 0) {
+        setRowVisible(m_ratingWidget,
+                      !(m_hiddenData & MetaDataWidget::RatingData) &&
+                      settings.readEntry("rating", true));
+        setRowVisible(m_taggingWidget,
+                      !(m_hiddenData & MetaDataWidget::TagsData) &&
+                      settings.readEntry("tagging", true));
+        setRowVisible(m_commentWidget,
+                      !(m_hiddenData & MetaDataWidget::CommentData) &&
+                      settings.readEntry("comment", true));
+    }
 #endif
 }
 
@@ -593,28 +617,51 @@ void MetaDataWidget::setItems(const KFileItemList& items)
     }
 
 #ifdef HAVE_NEPOMUK
-    QList<KUrl> urls;
-    foreach (const KFileItem& item, items) {
-        const KUrl url = item.nepomukUri();
-        if (url.isValid()) {
-            urls.append(url);
+    if (Nepomuk::ResourceManager::instance()->init() == 0) {
+        QList<KUrl> urls;
+        foreach (const KFileItem& item, items) {
+            const KUrl url = item.nepomukUri();
+            if (url.isValid()) {
+                urls.append(url);
+            }
         }
+        d->m_loadFilesThread->loadFiles(urls);
     }
-    d->m_loadFilesThread->loadFiles(urls);
 #endif
 }
 
-void MetaDataWidget::openConfigurationDialog()
+void MetaDataWidget::setItem(const KUrl& url)
 {
-    const KUrl url = d->m_fileItems[0].nepomukUri();
-    if (!url.isValid()) {
-        return;
-    }
+    KFileItem item(KFileItem::Unknown, KFileItem::Unknown, url);
+    item.refresh();
+    setItem(item);
+}
 
-    MetaDataConfigurationDialog dialog(url, this, Qt::Dialog);
-    if (dialog.exec() == KDialog::Accepted) {
-        d->updateRowsVisibility();
+void MetaDataWidget::setItems(const QList<KUrl>& urls)
+{
+    KFileItemList items;
+    foreach (const KUrl& url, urls) {
+        KFileItem item(KFileItem::Unknown, KFileItem::Unknown, url);
+        item.refresh();
+        items.append(item);
     }
+    setItems(items);
+}
+
+KFileItemList MetaDataWidget::items() const
+{
+    return d->m_fileItems;
+}
+
+void MetaDataWidget::setHiddenData(int data)
+{
+    d->m_hiddenData = data;
+    d->updateRowsVisibility();
+}
+
+int MetaDataWidget::hiddenData() const
+{
+    return d->m_hiddenData;
 }
 
 unsigned int MetaDataWidget::rating() const
index 232ebe71db53bf4e2a5eee6ae0f408355e5b77c1..cbd77fc1296e6a562f3110330f673ad8b6bdc939 100644 (file)
     }
 #endif
 
+#include <kfileitem.h>
+
 #include <QList>
 #include <QWidget>
 
-class KFileItem;
-class KFileItemList;
+class KUrl;
 
 /**
  * @brief Shows the meta data of one or more file items.
@@ -46,13 +47,32 @@ class KFileItemList;
  * shown as several rows containing a description and
  * the meta data value. It is possible for the user
  * to change specific meta data like rating, tags and
- * comment.
+ * comment. The changes are stored automatically by the
+ * meta data widget.
  */
 class MetaDataWidget : public QWidget
 {
     Q_OBJECT
 
 public:
+    /**
+     * Allows to specifiy which general data should be hidden
+     * by the meta data widget.
+     * @see MetaDataWidget::setHiddenData()
+     * @see MetaDataWidget::hiddenData()
+     */
+    enum Data
+    {
+        TypeData = 1,
+        SizeData= 2,
+        ModifiedData = 4,
+        OwnerData =  8,
+        PermissionsData = 16,
+        RatingData = 32,
+        TagsData = 64,
+        CommentData = 128
+    };
+
     explicit MetaDataWidget(QWidget* parent = 0);
     virtual ~MetaDataWidget();
 
@@ -73,10 +93,35 @@ public:
     void setItems(const KFileItemList& items);
 
     /**
-     * Opens a dialog which allows to configure the visibility
-     * of meta data.
+     * Convenience method for MetaDataWidget::setItem(const KFileItem&),
+     * if the application has only an URL and no file item.
+     * For performance reason it is recommended to use this convenience
+     * method only if the application does not have a file item already.
+     */
+    void setItem(const KUrl& url);
+
+    /**
+     * Convenience method for MetaDataWidget::setItems(const KFileItemList&),
+     * if the application has only URLs and no file items.
+     * For performance reason it is recommended to use this convenience
+     * method only if the application does not have a file items already.
+     */
+    void setItems(const QList<KUrl>& urls);
+
+    KFileItemList items() const;
+
+    /**
+     * Specifies which kind of data should be hidden (@see MetaDataWidget::Data).
+     * Example: metaDataWidget->setHiddenData(MetaDataWidget::TypeData | ModifiedData);
+     * Per default no data is hidden.
+     */
+    void setHiddenData(int data);
+
+    /**
+     * Returns which kind of data is hidden (@see MetaDataWidget::Data).
+     * Example: if (metaDataWidget->hiddenData() & MetaDataWidget::TypeData) ...
      */
-    void openConfigurationDialog();
+    int hiddenData() const;
 
     /**
      * Returns the rating for the currently set item(s). It is required
@@ -108,6 +153,8 @@ signals:
 
     /**
      * Is emitted after the user has changed the rating.
+     * The changed rating is automatically stored already by
+     * the meta data widget.
      * Note that the signal is not emitted if the rating has
      * indirectly been changed by MetaDataWidget::setItem() or
      * MetaDataWidget::setItems(). In this case connect to
@@ -117,7 +164,9 @@ signals:
 
     /**
      * Is emitted after the user has changed the tags.
-     * Note that the signal is not emitted if the rating has
+     * The changed tags are automatically stored already by
+     * the meta data widget.
+     * Note that the signal is not emitted if the tags have
      * indirectly been changed by MetaDataWidget::setItem() or
      * MetaDataWidget::setItems(). In this case connect to
      * the signal loadingFinished() instead.
@@ -126,7 +175,9 @@ signals:
 
     /**
      * Is emitted after the user has changed the comment.
-     * Note that the signal is not emitted if the rating has
+     * The changed comment is automatically stored already by
+     * the meta data widget.
+     * Note that the signal is not emitted if the comment has
      * indirectly been changed by MetaDataWidget::setItem() or
      * MetaDataWidget::setItems(). In this case connect to
      * the signal loadingFinished() instead.