]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Merge branch 'master' into frameworks
authorEmmanuel Pescosta <emmanuelpescosta099@gmail.com>
Wed, 25 Feb 2015 20:55:46 +0000 (21:55 +0100)
committerEmmanuel Pescosta <emmanuelpescosta099@gmail.com>
Wed, 25 Feb 2015 20:55:46 +0000 (21:55 +0100)
1  2 
src/dolphin.appdata.xml
src/panels/places/placesitemmodel.cpp

diff --combined src/dolphin.appdata.xml
index c060edeb481ec787d96b1ab92fe51c0e1683ce07,a4f1b2013c13e804553fdf863c5f272032523269..0d48a15093e19c23632b78de321519c53484adaa
@@@ -1,10 -1,11 +1,11 @@@
  <?xml version="1.0" encoding="utf-8"?>
  <component type="desktop">
 -  <id>dolphin.desktop</id>
 +  <id>org.kde.dolphin.desktop</id>
    <metadata_license>CC0-1.0</metadata_license>
    <project_license>GPL-2.0+</project_license>
    <name>Dolphin</name>
    <name xml:lang="ar">دولفين</name>
+   <name xml:lang="bs">Dolphin</name>
    <name xml:lang="ca">Dolphin</name>
    <name xml:lang="cs">Dolphin</name>
    <name xml:lang="da">Dolphin</name>
@@@ -40,6 -41,7 +41,7 @@@
    <name xml:lang="zh-TW">Dolphin</name>
    <summary>File Manager</summary>
    <summary xml:lang="ar">مدير ملفات</summary>
+   <summary xml:lang="bs">Upravitelj datoteka</summary>
    <summary xml:lang="ca">Gestor de fitxers</summary>
    <summary xml:lang="cs">Správce souborů</summary>
    <summary xml:lang="da">Filhåndtering</summary>
@@@ -76,6 -78,7 +78,7 @@@
    <description>
      <p>Dolphin is a lightweight file manager. It has been designed with ease of use and simplicity in mind, while still allowing flexibility and customisation. This means that you can do your file management exactly the way you want to do it.</p>
      <p xml:lang="ar">دولفين هو مدير ملفات خفيف. صُمِّم دولفين مع أخذ سهولة الاستخدام والبساطة بعين الاعتبار، مع السماح بالمرونة والتخصيص. يعني هذا أنه يمكنك إدارة ملفاتك كما تريد تمامًا.</p>
+     <p xml:lang="bs">Dolphinje lagan file manager. On je bio dizajniran sa lakoćom korišćenja i jednostavnosti u vidu, još omogućavajući fleksibilnost i prilagođavanje. To znači da možete da radite svoje upravljanje datotekama onako kako želite da to uradi.</p>
      <p xml:lang="ca">El Dolphin és un gestor de fitxers lleuger. S'ha dissenyat pensant en facilitar el seu ús i que sigui simple, permetent la flexibilitat i la personalització. Això vol dir que podeu fer la gestió dels vostres fitxers de la manera exacta com ho vulgueu fer.</p>
      <p xml:lang="da">Dolphin er letvægtsfilhåndtering. Den er blevet designet med henblik på brugervenlighed og simpelhed, mens fleksibilitet og tilpasning stadig er muligt. Det betyder at du klare din filhåndtering nøjagtig på den måde du vil gøre det.</p>
      <p xml:lang="el">Το Dolphin είναι ένας ελαφρύς διαχειριστής αρχείων. Έχει σχεδιαστεί με φιλοσοφία την απλότητα για ευκολία στη χρήση, ενώ επιτρέπει ευελιξία και προσαρμογές. Αυτό σημαίνει ότι μπορείτε να διαχειριστείτε τα αρχεία σας με τον τρόπο που εσείς θέλετε.</p>
      <p xml:lang="zh-TW">Dolphin 是一套輕量級的檔案管理員。它設計的理念是易用與簡單,但仍然保持足夠的彈性。這表示您可以用您想要使用的方式來管理您的檔案。</p>
      <p>Features:</p>
      <p xml:lang="ar">المزايا:</p>
+     <p xml:lang="bs">Svojstva:</p>
      <p xml:lang="ca">Característiques:</p>
      <p xml:lang="cs">Vlastnosti:</p>
      <p xml:lang="da">Funktioner:</p>
      <p xml:lang="zh-TW">功能:</p>
      <ul>
        <li>Navigation (or breadcrumb) bar for URLs, allowing you to quickly navigate through the hierarchy of files and folders.</li>
+       <li xml:lang="bs">Navigacijska (ili mrvična) traka za URL, dopušta vam da se brzo krećete kroz hijerarhiju datoteka i direktorija.</li>
        <li xml:lang="ca">Barra de navegació (o fil d'Ariadna) per els URL, permetent una navegació ràpida per la jerarquia de fitxers i carpetes.</li>
        <li xml:lang="da">Navigationsbjælke (eller brødkrumme-bjælke) til URL'er, lader dig navigere hurtigt igennem hierarkiet af filer og mapper.</li>
        <li xml:lang="el">Η γραμμή πλοήγησης (ή ιχνηλάτησης) για URL, σας επιτρέπει να πλοηγηθείτε γρήγορα μέσα από την ιεραρχία αρχείων και φακέλων.</li>
        <li xml:lang="zh-TW">網址導覽列讓您可以快速瀏覽檔案與資料夾。</li>
        <li>Supports several different kinds of view styles and properties and allows you to configure the view exactly how you want it.</li>
        <li xml:lang="ar">يدعم العديد من الأنواع المختلفة من الخصائص وأنماط العرض ويسمح لك بضبط العرض كما تريد تمامًا.</li>
+       <li xml:lang="bs">Dopušta vište vrsta stilova pogleda i svojstava i dopšta vam da konfigurišete pogled baš kako želite.</li>
        <li xml:lang="ca">Accepta diferents classes diverses d'estils de visualització i propietats i us permet configurar la visualització exactament com la vulgueu.</li>
        <li xml:lang="da">Understøtter flere forskellige slags visninger og egenskaber og lader dig konfigurere visningen nøjagtig som du vil have den.</li>
        <li xml:lang="el">Υποστηρίζει πολλά διαφορετικά είδη στιλ και ιδιότητες επισκόπησης και σας επιτρέπει να διαμορφώσετε την επισκόπηση ακριβώς όπως τη θέλετε.</li>
        <li xml:lang="zh-TW">網址導覽列讓您可以快速瀏覽檔案與資料夾。</li>
        <li>Split view, allowing you to easily copy or move files between locations.</li>
        <li xml:lang="ar">العرض المقسوم، يسمح لك بنسخ ونقل الملفات بين مكانين بسهولة.</li>
+       <li xml:lang="bs">Razdvaja pogled, dopuštajući lako kopiranje ili pomijeranje datoteka između lokacija</li>
        <li xml:lang="ca">Divisió de visualització, permetent copiar o moure fitxers fàcilment entre les ubicacions.</li>
        <li xml:lang="da">Opdelt visning lader dig kopiere filer mellem placeringer på en nem måde.</li>
        <li xml:lang="de">Geteilte Ansichten, damit können Sie einfach Daten zwischen Orten kopieren oder verschieben.</li>
        <li xml:lang="zh-TW">支援數個檢視模式,您也可以調整檢視模式的屬性。</li>
        <li>Additional information and shortcuts are available as dock-able panels, allowing you to move them around freely and display exactly what you want.</li>
        <li xml:lang="ar">تتوفر معلومات واختصارات إضافية كلوحات قابلة للرصف، مما يسمح لك بنقلها بحريّة وعرضها بالضبط كما تريد.</li>
+       <li xml:lang="bs">Dodatne informacije i kratice su dostupne kao usidreni paneli, dopuštajući vam da se krećete slobodno i prikažete šta želite.</li>
        <li xml:lang="ca">Hi ha informació addicional i dreceres disponibles com a plafons acoblables, permetent moure'ls lliurement i mostrar exactament el què vulgueu.</li>
        <li xml:lang="da">Yderligere information og genveje er tilgængelige som dokbare paneler, som lader dig flytte dem frit omkring og vise nøjagtigt det du vil have.</li>
        <li xml:lang="el">Πρόσθετες πληροφορίες και συντομεύσεις είναι διαθέσιμα ως προσαρτήσιμοι πίνακες, που σας επιτρέπουν να τα μετακινείτε ελεύθερα και να παρουσιάζετε ακριβώς αυτό που θέλετε.</li>
        <li xml:lang="zh-TW">分割檢視讓您可以輕鬆複製或移動檔案。</li>
        <li>Multiple tab support</li>
        <li xml:lang="ar">دعم تعدّد الألسنة</li>
+       <li xml:lang="bs">Podrška za više kartica</li>
        <li xml:lang="ca">Implementació de pestanyes múltiples</li>
        <li xml:lang="da">Understøttelse af flere faneblade</li>
        <li xml:lang="de">Unterstützung für Unterfenster</li>
        <li xml:lang="zh-TW">額外資訊與嵌入式面板捷徑讓您可以輕易顯示您常用的項目。</li>
        <li>Informational dialogues are displayed in an unobtrusive way.</li>
        <li xml:lang="ar">حواريات المعلومات تُعرَض بطريقة غير مُزعجة.</li>
+       <li xml:lang="bs">Informativni dijalozi su prikazani na nenametljiv način.</li>
        <li xml:lang="ca">El diàlegs informatius es mostren de manera no molesta.</li>
        <li xml:lang="da">Informationsdialoger vises på en ikke-forstyrrende måde.</li>
        <li xml:lang="de">Informationen werden unaufdringlich angezeigt.</li>
        <li xml:lang="zh-TW">支援多分頁</li>
        <li>Undo/redo support</li>
        <li xml:lang="ar">دعم التراجع والإعادة</li>
+       <li xml:lang="bs">Podrška za poništavanje/ponavljanje akcija</li>
        <li xml:lang="ca">Implementació de desfer/refer</li>
        <li xml:lang="da">Understøttelse af fortryd/gendan</li>
        <li xml:lang="de">Unterstützung für Rückgängig/Wiederherstellen</li>
        <li xml:lang="zh-TW">以不唐突的方式顯示資訊對話框。</li>
        <li>Transparent network access through the KIO system.</li>
        <li xml:lang="ar">اتصال شبكيّ مباشر باستخدام نظام KIO.</li>
+       <li xml:lang="bs">Transparentni mrežni pristup kroz KIO sistem.</li>
        <li xml:lang="ca">Accés transparent a la xarxa a través del sistema KIO.</li>
        <li xml:lang="da">Transparent netværksadgang igennem KIO-systemet</li>
        <li xml:lang="de">Transparenter Netzwerkzugriff durch das KIO-System.</li>
index 28244c6450c6cc256ac2f3d5d8101782aca2bbd2,637bfc107e60ac5f5d14e6dcc042ca63140083aa..354d4a43e90448c5d2c52c8d187657bf1b4564f5
  #include <KBookmark>
  #include <KBookmarkGroup>
  #include <KBookmarkManager>
 +#include "dolphindebug.h"
 +#include <QIcon>
 +#include <KProtocolInfo>
 +#include <KLocalizedString>
  #include <KComponentData>
 -#include <KDebug>
 -#include <KIcon>
 -#include <kprotocolinfo.h>
 -#include <KLocale>
 -#include <KStandardDirs>
 +#include <QStandardPaths>
  #include <KUser>
 +#include <KAboutData>
  #include "placesitem.h"
  #include <QAction>
  #include <QDate>
  #include <QMimeData>
  #include <QTimer>
 +#include <KUrlMimeData>
  
  #include <Solid/Device>
  #include <Solid/DeviceNotifier>
@@@ -54,8 -52,8 +54,8 @@@
  #include <views/viewproperties.h>
  
  #ifdef HAVE_BALOO
 -    #include <baloo/query.h>
 -    #include <baloo/indexerconfig.h>
 +    #include <Baloo/Query>
 +    #include <Baloo/IndexerConfig>
  #endif
  
  namespace {
@@@ -66,7 -64,7 +66,7 @@@
      // be independent from changes in the Baloo-search-URL-syntax.
      // Hence a prefix to the application-name of the stored bookmarks is
      // added, which is only read by PlacesItemModel.
 -    const char* AppNamePrefix = "-places-panel";
 +    const char AppNamePrefix[] = "-places-panel";
  }
  
  PlacesItemModel::PlacesItemModel(QObject* parent) :
@@@ -87,7 -85,7 +87,7 @@@
      Baloo::IndexerConfig config;
      m_fileIndexingEnabled = config.fileIndexingEnabled();
  #endif
 -    const QString file = KStandardDirs::locateLocal("data", "kfileplaces/bookmarks.xml");
 +    const QString file = QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kfileplaces/bookmarks.xml");
      m_bookmarkManager = KBookmarkManager::managerForFile(file, "kfilePlaces");
  
      createSystemBookmarks();
      m_updateBookmarksTimer = new QTimer(this);
      m_updateBookmarksTimer->setInterval(syncBookmarksTimeout);
      m_updateBookmarksTimer->setSingleShot(true);
 -    connect(m_updateBookmarksTimer, SIGNAL(timeout()), this, SLOT(updateBookmarks()));
 +    connect(m_updateBookmarksTimer, &QTimer::timeout, this, &PlacesItemModel::updateBookmarks);
  
 -    connect(m_bookmarkManager, SIGNAL(changed(QString,QString)),
 -            m_updateBookmarksTimer, SLOT(start()));
 -    connect(m_bookmarkManager, SIGNAL(bookmarksChanged(QString)),
 -            m_updateBookmarksTimer, SLOT(start()));
 +    connect(m_bookmarkManager, &KBookmarkManager::changed,
 +            m_updateBookmarksTimer, static_cast<void(QTimer::*)()>(&QTimer::start));
 +    connect(m_bookmarkManager, &KBookmarkManager::bookmarksChanged,
 +            m_updateBookmarksTimer, static_cast<void(QTimer::*)()>(&QTimer::start));
  }
  
  PlacesItemModel::~PlacesItemModel()
  {
-     saveBookmarks();
      qDeleteAll(m_bookmarkedItems);
      m_bookmarkedItems.clear();
  }
  
  PlacesItem* PlacesItemModel::createPlacesItem(const QString& text,
 -                                              const KUrl& url,
 +                                              const QUrl& url,
                                                const QString& iconName)
  {
      const KBookmark bookmark = PlacesItem::createBookmark(m_bookmarkManager, text, url, iconName);
@@@ -191,7 -188,7 +190,7 @@@ void PlacesItemModel::setHiddenItemsSho
      }
  
  #ifdef PLACESITEMMODEL_DEBUG
 -        kDebug() << "Changed visibility of hidden items";
 +        qCDebug(DolphinDebug) << "Changed visibility of hidden items";
          showModelState();
  #endif
  }
@@@ -201,19 -198,15 +200,19 @@@ bool PlacesItemModel::hiddenItemsShown(
      return m_hiddenItemsShown;
  }
  
 -int PlacesItemModel::closestItem(const KUrl& url) const
 +int PlacesItemModel::closestItem(const QUrl& url) const
  {
      int foundIndex = -1;
      int maxLength = 0;
  
      for (int i = 0; i < count(); ++i) {
 -        const KUrl itemUrl = placesItem(i)->url();
 -        if (itemUrl.isParentOf(url)) {
 -            const int length = itemUrl.prettyUrl().length();
 +        const QUrl itemUrl = placesItem(i)->url();
 +        if (url == itemUrl) {
 +            // We can't find a closer one, so stop here.
 +            foundIndex = i;
 +            break;
 +        } else if (itemUrl.isParentOf(url)) {
 +            const int length = itemUrl.path().length();
              if (length > maxLength) {
                  foundIndex = i;
                  maxLength = length;
@@@ -254,7 -247,7 +253,7 @@@ QAction* PlacesItemModel::ejectAction(i
  {
      const PlacesItem* item = placesItem(index);
      if (item && item->device().is<Solid::OpticalDisc>()) {
 -        return new QAction(KIcon("media-eject"), i18nc("@item", "Eject '%1'", item->text()), 0);
 +        return new QAction(QIcon::fromTheme("media-eject"), i18nc("@item", "Eject '%1'", item->text()), 0);
      }
  
      return 0;
@@@ -303,7 -296,7 +302,7 @@@ QAction* PlacesItemModel::teardownActio
          return new QAction(text, 0);
      }
  
 -    return new QAction(KIcon(iconName), text, 0);
 +    return new QAction(QIcon::fromTheme(iconName), text, 0);
  }
  
  void PlacesItemModel::requestEject(int index)
      if (item) {
          Solid::OpticalDrive* drive = item->device().parent().as<Solid::OpticalDrive>();
          if (drive) {
 -            connect(drive, SIGNAL(ejectDone(Solid::ErrorType,QVariant,QString)),
 -                    this, SLOT(slotStorageTeardownDone(Solid::ErrorType,QVariant)),
 -                    Qt::UniqueConnection);
 +            connect(drive, &Solid::OpticalDrive::ejectDone,
 +                    this, &PlacesItemModel::slotStorageTeardownDone);
              drive->eject();
          } else {
              const QString label = item->text();
@@@ -329,8 -323,9 +328,8 @@@ void PlacesItemModel::requestTeardown(i
      if (item) {
          Solid::StorageAccess* access = item->device().as<Solid::StorageAccess>();
          if (access) {
 -            connect(access, SIGNAL(teardownDone(Solid::ErrorType,QVariant,QString)),
 -                    this, SLOT(slotStorageTeardownDone(Solid::ErrorType,QVariant)),
 -                    Qt::UniqueConnection);
 +            connect(access, &Solid::StorageAccess::teardownDone,
 +                    this, &PlacesItemModel::slotStorageTeardownDone);
              access->teardown();
          }
      }
@@@ -358,8 -353,9 +357,8 @@@ void PlacesItemModel::requestStorageSet
  
          m_storageSetupInProgress[access] = index;
  
 -        connect(access, SIGNAL(setupDone(Solid::ErrorType,QVariant,QString)),
 -                this, SLOT(slotStorageSetupDone(Solid::ErrorType,QVariant,QString)),
 -                Qt::UniqueConnection);
 +        connect(access, &Solid::StorageAccess::setupDone,
 +                this, &PlacesItemModel::slotStorageSetupDone);
  
          access->setup();
      }
  
  QMimeData* PlacesItemModel::createMimeData(const KItemSet& indexes) const
  {
 -    KUrl::List urls;
 +    QList<QUrl> urls;
      QByteArray itemData;
  
      QDataStream stream(&itemData, QIODevice::WriteOnly);
  
      foreach (int index, indexes) {
 -        const KUrl itemUrl = placesItem(index)->url();
 +        const QUrl itemUrl = placesItem(index)->url();
          if (itemUrl.isValid()) {
              urls << itemUrl;
          }
  
      QMimeData* mimeData = new QMimeData();
      if (!urls.isEmpty()) {
 -        urls.populateMimeData(mimeData);
 +        mimeData->setUrls(urls);
      }
      mimeData->setData(internalMimeType(), itemData);
  
@@@ -423,9 -419,9 +422,9 @@@ void PlacesItemModel::dropMimeDataBefor
          insertItem(dropIndex, newItem);
      } else if (mimeData->hasFormat("text/uri-list")) {
          // One or more items must be added to the model
 -        const KUrl::List urls = KUrl::List::fromMimeData(mimeData);
 +        const QList<QUrl> urls = KUrlMimeData::urlsFromMimeData(mimeData);
          for (int i = urls.count() - 1; i >= 0; --i) {
 -            const KUrl& url = urls[i];
 +            const QUrl& url = urls[i];
  
              QString text = url.fileName();
              if (text.isEmpty()) {
              }
  
              if ((url.isLocalFile() && !QFileInfo(url.toLocalFile()).isDir())
 -                    || url.protocol() == "trash") {
 +                    || url.scheme() == "trash") {
                  // Only directories outside the trash are allowed
                  continue;
              }
      }
  }
  
 -KUrl PlacesItemModel::convertedUrl(const KUrl& url)
 +QUrl PlacesItemModel::convertedUrl(const QUrl& url)
  {
 -    KUrl newUrl = url;
 -    if (url.protocol() == QLatin1String("timeline")) {
 +    QUrl newUrl = url;
 +    if (url.scheme() == QLatin1String("timeline")) {
          newUrl = createTimelineUrl(url);
 -    } else if (url.protocol() == QLatin1String("search")) {
 +    } else if (url.scheme() == QLatin1String("search")) {
          newUrl = createSearchUrl(url);
      }
  
@@@ -496,7 -492,7 +495,7 @@@ void PlacesItemModel::onItemInserted(in
      }
  
  #ifdef PLACESITEMMODEL_DEBUG
 -    kDebug() << "Inserted item" << index;
 +    qCDebug(DolphinDebug) << "Inserted item" << index;
      showModelState();
  #endif
  }
@@@ -514,7 -510,7 +513,7 @@@ void PlacesItemModel::onItemRemoved(in
      m_bookmarkedItems.removeAt(boomarkIndex);
  
  #ifdef PLACESITEMMODEL_DEBUG
 -    kDebug() << "Removed item" << index;
 +    qCDebug(DolphinDebug) << "Removed item" << index;
      showModelState();
  #endif
  }
@@@ -593,13 -589,14 +592,13 @@@ void PlacesItemModel::slotStorageSetupD
  {
      Q_UNUSED(udi);
  
 -    Q_ASSERT(!m_storageSetupInProgress.isEmpty());
      const int index = m_storageSetupInProgress.take(sender());
      const PlacesItem*  item = placesItem(index);
      if (!item) {
          return;
      }
  
 -    if (error) {
 +    if (error != Solid::NoError) {
          if (errorData.isValid()) {
              emit errorMessage(i18nc("@info", "An error occurred while accessing '%1', the system responded: %2",
                                      item->text(),
@@@ -645,7 -642,7 +644,7 @@@ void PlacesItemModel::updateBookmarks(
                      found = true;
                      if (newBookmark.metaDataItem("UDI").isEmpty()) {
                          item->setBookmark(newBookmark);
 -                        item->setText(i18nc("KFile System Bookmarks", newBookmark.text().toUtf8().data()));
 +                        item->setText(i18nc("KFile System Bookmarks", newBookmark.text().toUtf8().constData()));
                      }
                      break;
                  }
@@@ -722,7 -719,7 +721,7 @@@ void PlacesItemModel::loadBookmarks(
      KBookmark bookmark = root.first();
      QSet<QString> devices = m_availableDevices;
  
 -    QSet<KUrl> missingSystemBookmarks;
 +    QSet<QUrl> missingSystemBookmarks;
      foreach (const SystemBookmarkData& data, m_systemBookmarks) {
          missingSystemBookmarks.insert(data.url);
      }
                  devices.remove(item->udi());
                  devicesItems.append(item);
              } else {
 -                const KUrl url = bookmark.url();
 +                const QUrl url = bookmark.url();
                  if (missingSystemBookmarks.contains(url)) {
                      missingSystemBookmarks.remove(url);
  
                      // text, the retranslation will fail and the users custom text is still used.
                      // It is important to use "KFile System Bookmarks" as context (see
                      // createSystemBookmarks()).
 -                    item->setText(i18nc("KFile System Bookmarks", bookmark.text().toUtf8().data()));
 +                    item->setText(i18nc("KFile System Bookmarks", bookmark.text().toUtf8().constData()));
                      item->setSystemItem(true);
                  }
  
      }
  
  #ifdef PLACESITEMMODEL_DEBUG
 -    kDebug() << "Loaded bookmarks";
 +    qCDebug(DolphinDebug) << "Loaded bookmarks";
      showModelState();
  #endif
  }
@@@ -816,15 -813,15 +815,15 @@@ bool PlacesItemModel::acceptBookmark(co
                                       const QSet<QString>& availableDevices) const
  {
      const QString udi = bookmark.metaDataItem("UDI");
 -    const KUrl url = bookmark.url();
 +    const QUrl url = bookmark.url();
      const QString appName = bookmark.metaDataItem("OnlyInApp");
      const bool deviceAvailable = availableDevices.contains(udi);
  
      const bool allowedHere = (appName.isEmpty()
 -                              || appName == KGlobal::mainComponent().componentName()
 -                              || appName == KGlobal::mainComponent().componentName() + AppNamePrefix)
 -                             && (m_fileIndexingEnabled || (url.protocol() != QLatin1String("timeline") &&
 -                                                           url.protocol() != QLatin1String("search")));
 +                              || appName == KAboutData::applicationData().componentName()
 +                              || appName == KAboutData::applicationData().componentName() + AppNamePrefix)
 +                             && (m_fileIndexingEnabled || (url.scheme() != QLatin1String("timeline") &&
 +                                                           url.scheme() != QLatin1String("search")));
  
      return (udi.isEmpty() && allowedHere) || deviceAvailable;
  }
@@@ -836,12 -833,12 +835,12 @@@ PlacesItem* PlacesItemModel::createSyst
                                                      data.url,
                                                      data.icon);
  
 -    const QString protocol = data.url.protocol();
 +    const QString protocol = data.url.scheme();
      if (protocol == QLatin1String("timeline") || protocol == QLatin1String("search")) {
          // As long as the KFilePlacesView from kdelibs is available, the system-bookmarks
          // for "Recently Saved" and "Search For" should be a setting available only
          // in the Places Panel (see description of AppNamePrefix for more details).
 -        const QString appName = KGlobal::mainComponent().componentName() + AppNamePrefix;
 +        const QString appName = KAboutData::applicationData().componentName() + AppNamePrefix;
          bookmark.setMetaDataItem("OnlyInApp", appName);
      }
  
              if (path == QLatin1String("/documents")) {
                  props.setViewMode(DolphinView::DetailsView);
                  props.setPreviewsShown(false);
 -                props.setVisibleRoles(QList<QByteArray>() << "text" << "path");
 +                props.setVisibleRoles({"text", "path"});
              } else if (path == QLatin1String("/images")) {
                  props.setViewMode(DolphinView::IconsView);
                  props.setPreviewsShown(true);
 -                props.setVisibleRoles(QList<QByteArray>() << "text" << "imageSize");
 +                props.setVisibleRoles({"text", "imageSize"});
              } else if (path == QLatin1String("/audio")) {
                  props.setViewMode(DolphinView::DetailsView);
                  props.setPreviewsShown(false);
 -                props.setVisibleRoles(QList<QByteArray>() << "text" << "artist" << "album");
 +                props.setVisibleRoles({"text", "artist", "album"});
              } else if (path == QLatin1String("/videos")) {
                  props.setViewMode(DolphinView::IconsView);
                  props.setPreviewsShown(true);
 -                props.setVisibleRoles(QList<QByteArray>() << "text");
 -            } else if (data.url.protocol() == "timeline") {
 +                props.setVisibleRoles({"text"});
 +            } else if (data.url.scheme() == "timeline") {
                  props.setViewMode(DolphinView::DetailsView);
 -                props.setVisibleRoles(QList<QByteArray>() << "text" << "date");
 +                props.setVisibleRoles({"text", "date"});
              }
          }
      }
@@@ -893,42 -890,42 +892,42 @@@ void PlacesItemModel::createSystemBookm
      // i18nc call is done after reading the bookmark. The reason why the i18nc call is not
      // done here is because otherwise switching the language would not result in retranslating the
      // bookmarks.
 -    m_systemBookmarks.append(SystemBookmarkData(KUrl(KUser().homeDir()),
 +    m_systemBookmarks.append(SystemBookmarkData(QUrl::fromLocalFile(KUser().homeDir()),
                                                  "user-home",
                                                  I18N_NOOP2("KFile System Bookmarks", "Home")));
 -    m_systemBookmarks.append(SystemBookmarkData(KUrl("remote:/"),
 +    m_systemBookmarks.append(SystemBookmarkData(QUrl("remote:/"),
                                                  "network-workgroup",
                                                  I18N_NOOP2("KFile System Bookmarks", "Network")));
 -    m_systemBookmarks.append(SystemBookmarkData(KUrl("/"),
 +    m_systemBookmarks.append(SystemBookmarkData(QUrl::fromLocalFile("/"),
                                                  "folder-red",
                                                  I18N_NOOP2("KFile System Bookmarks", "Root")));
 -    m_systemBookmarks.append(SystemBookmarkData(KUrl("trash:/"),
 +    m_systemBookmarks.append(SystemBookmarkData(QUrl("trash:/"),
                                                  "user-trash",
                                                  I18N_NOOP2("KFile System Bookmarks", "Trash")));
  
      if (m_fileIndexingEnabled) {
 -        m_systemBookmarks.append(SystemBookmarkData(KUrl("timeline:/today"),
 +        m_systemBookmarks.append(SystemBookmarkData(QUrl("timeline:/today"),
                                                      "go-jump-today",
                                                      I18N_NOOP2("KFile System Bookmarks", "Today")));
 -        m_systemBookmarks.append(SystemBookmarkData(KUrl("timeline:/yesterday"),
 +        m_systemBookmarks.append(SystemBookmarkData(QUrl("timeline:/yesterday"),
                                                      "view-calendar-day",
                                                      I18N_NOOP2("KFile System Bookmarks", "Yesterday")));
 -        m_systemBookmarks.append(SystemBookmarkData(KUrl("timeline:/thismonth"),
 +        m_systemBookmarks.append(SystemBookmarkData(QUrl("timeline:/thismonth"),
                                                      "view-calendar-month",
                                                      I18N_NOOP2("KFile System Bookmarks", "This Month")));
 -        m_systemBookmarks.append(SystemBookmarkData(KUrl("timeline:/lastmonth"),
 +        m_systemBookmarks.append(SystemBookmarkData(QUrl("timeline:/lastmonth"),
                                                      "view-calendar-month",
                                                      I18N_NOOP2("KFile System Bookmarks", "Last Month")));
 -        m_systemBookmarks.append(SystemBookmarkData(KUrl("search:/documents"),
 +        m_systemBookmarks.append(SystemBookmarkData(QUrl("search:/documents"),
                                                      "folder-txt",
                                                      I18N_NOOP2("KFile System Bookmarks", "Documents")));
 -        m_systemBookmarks.append(SystemBookmarkData(KUrl("search:/images"),
 +        m_systemBookmarks.append(SystemBookmarkData(QUrl("search:/images"),
                                                      "folder-image",
                                                      I18N_NOOP2("KFile System Bookmarks", "Images")));
 -        m_systemBookmarks.append(SystemBookmarkData(KUrl("search:/audio"),
 +        m_systemBookmarks.append(SystemBookmarkData(QUrl("search:/audio"),
                                                      "folder-sound",
                                                      I18N_NOOP2("KFile System Bookmarks", "Audio Files")));
 -        m_systemBookmarks.append(SystemBookmarkData(KUrl("search:/videos"),
 +        m_systemBookmarks.append(SystemBookmarkData(QUrl("search:/videos"),
                                                      "folder-video",
                                                      I18N_NOOP2("KFile System Bookmarks", "Videos")));
      }
@@@ -963,8 -960,8 +962,8 @@@ void PlacesItemModel::initializeAvailab
      Q_ASSERT(m_predicate.isValid());
  
      Solid::DeviceNotifier* notifier = Solid::DeviceNotifier::instance();
 -    connect(notifier, SIGNAL(deviceAdded(QString)),   this, SLOT(slotDeviceAdded(QString)));
 -    connect(notifier, SIGNAL(deviceRemoved(QString)), this, SLOT(slotDeviceRemoved(QString)));
 +    connect(notifier, &Solid::DeviceNotifier::deviceAdded,   this, &PlacesItemModel::slotDeviceAdded);
 +    connect(notifier, &Solid::DeviceNotifier::deviceRemoved, this, &PlacesItemModel::slotDeviceRemoved);
  
      const QList<Solid::Device>& deviceList = Solid::Device::listFromQuery(m_predicate);
      foreach (const Solid::Device& device, deviceList) {
@@@ -1090,14 -1087,14 +1089,14 @@@ bool PlacesItemModel::equalBookmarkIden
      }
  }
  
 -KUrl PlacesItemModel::createTimelineUrl(const KUrl& url)
 +QUrl PlacesItemModel::createTimelineUrl(const QUrl& url)
  {
      // TODO: Clarify with the Baloo-team whether it makes sense
      // provide default-timeline-URLs like 'yesterday', 'this month'
      // and 'last month'.
 -    KUrl timelineUrl;
 +    QUrl timelineUrl;
  
 -    const QString path = url.pathOrUrl();
 +    const QString path = url.toDisplayString(QUrl::PreferLocalFile);
      if (path.endsWith(QLatin1String("yesterday"))) {
          const QDate date = QDate::currentDate().addDays(-1);
          const int year = date.year();
@@@ -1138,12 -1135,12 +1137,12 @@@ QString PlacesItemModel::timelineDateSt
      return date;
  }
  
 -KUrl PlacesItemModel::createSearchUrl(const KUrl& url)
 +QUrl PlacesItemModel::createSearchUrl(const QUrl& url)
  {
 -    KUrl searchUrl;
 +    QUrl searchUrl;
  
  #ifdef HAVE_BALOO
 -    const QString path = url.pathOrUrl();
 +    const QString path = url.toDisplayString(QUrl::PreferLocalFile);
      if (path.endsWith(QLatin1String("documents"))) {
          searchUrl = searchUrlForType("Document");
      } else if (path.endsWith(QLatin1String("images"))) {
  }
  
  #ifdef HAVE_BALOO
 -KUrl PlacesItemModel::searchUrlForType(const QString& type)
 +QUrl PlacesItemModel::searchUrlForType(const QString& type)
  {
      Baloo::Query query;
      query.addType("File");
  #ifdef PLACESITEMMODEL_DEBUG
  void PlacesItemModel::showModelState()
  {
 -    kDebug() << "=================================";
 -    kDebug() << "Model:";
 -    kDebug() << "hidden-index model-index   text";
 +    qCDebug(DolphinDebug) << "=================================";
 +    qCDebug(DolphinDebug) << "Model:";
 +    qCDebug(DolphinDebug) << "hidden-index model-index   text";
      int modelIndex = 0;
      for (int i = 0; i < m_bookmarkedItems.count(); ++i) {
          if (m_bookmarkedItems[i]) {
 -            kDebug() <<  i << "(Hidden)    " << "             " << m_bookmarkedItems[i]->dataValue("text").toString();
 +            qCDebug(DolphinDebug) <<  i << "(Hidden)    " << "             " << m_bookmarkedItems[i]->dataValue("text").toString();
          } else {
              if (item(modelIndex)) {
 -                kDebug() <<  i << "          " << modelIndex << "           " << item(modelIndex)->dataValue("text").toString();
 +                qCDebug(DolphinDebug) <<  i << "          " << modelIndex << "           " << item(modelIndex)->dataValue("text").toString();
              } else {
 -                kDebug() <<  i << "          " << modelIndex << "           " << "(not available yet)";
 +                qCDebug(DolphinDebug) <<  i << "          " << modelIndex << "           " << "(not available yet)";
              }
              ++modelIndex;
          }
      }
  
 -    kDebug();
 -    kDebug() << "Bookmarks:";
 +    qCDebug(DolphinDebug);
 +    qCDebug(DolphinDebug) << "Bookmarks:";
  
      int bookmarkIndex = 0;
      KBookmarkGroup root = m_bookmarkManager->root();
          const QString udi = bookmark.metaDataItem("UDI");
          const QString text = udi.isEmpty() ? bookmark.text() : udi;
          if (bookmark.metaDataItem("IsHidden") == QLatin1String("true")) {
 -            kDebug() << bookmarkIndex << "(Hidden)" << text;
 +            qCDebug(DolphinDebug) << bookmarkIndex << "(Hidden)" << text;
          } else {
 -            kDebug() << bookmarkIndex << "        " << text;
 +            qCDebug(DolphinDebug) << bookmarkIndex << "        " << text;
          }
  
          bookmark = root.next(bookmark);
  }
  #endif
  
 -#include "placesitemmodel.moc"