diff options
| author | Emmanuel Pescosta <[email protected]> | 2015-02-27 11:30:27 +0100 |
|---|---|---|
| committer | Emmanuel Pescosta <[email protected]> | 2015-02-27 11:30:27 +0100 |
| commit | 9aee5d22513f0367febab54b38b3a7dc58d120bb (patch) | |
| tree | 99cf391070ac5d4650a3f1b309c3ec2e814f1ac6 /src/panels/places | |
| parent | f025aeb63aa2a38e91c43d99ba9955793d3adf1e (diff) | |
| parent | b701b7e4edefb628d6f8b14146b2e299bd0ce5fc (diff) | |
Merge branch 'frameworks'
Diffstat (limited to 'src/panels/places')
| -rw-r--r-- | src/panels/places/placesitem.cpp | 43 | ||||
| -rw-r--r-- | src/panels/places/placesitem.h | 12 | ||||
| -rw-r--r-- | src/panels/places/placesitemeditdialog.cpp | 61 | ||||
| -rw-r--r-- | src/panels/places/placesitemeditdialog.h | 20 | ||||
| -rw-r--r-- | src/panels/places/placesitemlistgroupheader.cpp | 1 | ||||
| -rw-r--r-- | src/panels/places/placesitemlistgroupheader.h | 2 | ||||
| -rw-r--r-- | src/panels/places/placesitemlistwidget.cpp | 3 | ||||
| -rw-r--r-- | src/panels/places/placesitemlistwidget.h | 4 | ||||
| -rw-r--r-- | src/panels/places/placesitemmodel.cpp | 193 | ||||
| -rw-r--r-- | src/panels/places/placesitemmodel.h | 34 | ||||
| -rw-r--r-- | src/panels/places/placesitemsignalhandler.cpp | 1 | ||||
| -rw-r--r-- | src/panels/places/placesitemsignalhandler.h | 2 | ||||
| -rw-r--r-- | src/panels/places/placespanel.cpp | 139 | ||||
| -rw-r--r-- | src/panels/places/placespanel.h | 18 | ||||
| -rw-r--r-- | src/panels/places/placesview.cpp | 3 |
15 files changed, 258 insertions, 278 deletions
diff --git a/src/panels/places/placesitem.cpp b/src/panels/places/placesitem.cpp index 173da29c5..638d59ec0 100644 --- a/src/panels/places/placesitem.cpp +++ b/src/panels/places/placesitem.cpp @@ -23,10 +23,9 @@ #include "placesitem.h" #include <KBookmarkManager> -#include <KDebug> +#include "dolphindebug.h" #include <KDirLister> -#include <KIcon> -#include <KLocale> +#include <KLocalizedString> #include "placesitemsignalhandler.h" #include <QDateTime> #include <Solid/Block> @@ -52,16 +51,16 @@ PlacesItem::~PlacesItem() delete m_trashDirLister; } -void PlacesItem::setUrl(const KUrl& url) +void PlacesItem::setUrl(const QUrl &url) { // The default check in KStandardItem::setDataValue() // for equal values does not work with a custom value - // like KUrl. Hence do a manual check to prevent that + // like QUrl. Hence do a manual check to prevent that // setting an equal URL results in an itemsChanged() // signal. - if (dataValue("url").value<KUrl>() != url) { + if (dataValue("url").value<QUrl>() != url) { delete m_trashDirLister; - if (url.protocol() == QLatin1String("trash")) { + if (url.scheme() == QLatin1String("trash")) { // The trash icon must always be updated dependent on whether // the trash is empty or not. We use a KDirLister that automatically // watches for changes if the number of items has been changed. @@ -69,8 +68,8 @@ void PlacesItem::setUrl(const KUrl& url) m_trashDirLister = new KDirLister(); m_trashDirLister->setAutoErrorHandlingEnabled(false, 0); m_trashDirLister->setDelayedMimeTypes(true); - QObject::connect(m_trashDirLister, SIGNAL(completed()), - m_signalHandler, SLOT(onTrashDirListerCompleted())); + QObject::connect(m_trashDirLister.data(), static_cast<void(KDirLister::*)()>(&KDirLister::completed), + m_signalHandler.data(), &PlacesItemSignalHandler::onTrashDirListerCompleted); m_trashDirLister->openUrl(url); } @@ -78,9 +77,9 @@ void PlacesItem::setUrl(const KUrl& url) } } -KUrl PlacesItem::url() const +QUrl PlacesItem::url() const { - return dataValue("url").value<KUrl>(); + return dataValue("url").value<QUrl>(); } void PlacesItem::setUdi(const QString& udi) @@ -135,7 +134,7 @@ void PlacesItem::setBookmark(const KBookmark& bookmark) const QString udi = bookmark.metaDataItem("UDI"); if (udi.isEmpty()) { setIcon(bookmark.icon()); - setText(i18nc("KFile System Bookmarks", bookmark.text().toUtf8().data())); + setText(i18nc("KFile System Bookmarks", bookmark.text().toUtf8().constData())); setUrl(bookmark.url()); } else { initializeDevice(udi); @@ -171,7 +170,7 @@ KBookmark PlacesItem::bookmark() const PlacesItem::GroupType PlacesItem::groupType() const { if (udi().isEmpty()) { - const QString protocol = url().protocol(); + const QString protocol = url().scheme(); if (protocol == QLatin1String("timeline")) { return RecentlySavedType; } @@ -197,7 +196,7 @@ bool PlacesItem::storageSetupNeeded() const KBookmark PlacesItem::createBookmark(KBookmarkManager* manager, const QString& text, - const KUrl& url, + const QUrl& url, const QString& iconName) { KBookmarkGroup root = manager->root(); @@ -270,31 +269,31 @@ void PlacesItem::initializeDevice(const QString& udi) setUdi(udi); if (m_access) { - setUrl(m_access->filePath()); - QObject::connect(m_access, SIGNAL(accessibilityChanged(bool,QString)), - m_signalHandler, SLOT(onAccessibilityChanged())); + setUrl(QUrl::fromLocalFile(m_access->filePath())); + QObject::connect(m_access.data(), SIGNAL(accessibilityChanged(bool,QString)), + m_signalHandler.data(), SLOT(onAccessibilityChanged())); } else if (m_disc && (m_disc->availableContent() & Solid::OpticalDisc::Audio) != 0) { Solid::Block *block = m_device.as<Solid::Block>(); if (block) { const QString device = block->device(); - setUrl(QString("audiocd:/?device=%1").arg(device)); + setUrl(QStringLiteral("audiocd:/?device=%1").arg(device)); } else { - setUrl(QString("audiocd:/")); + setUrl(QStringLiteral("audiocd:/")); } } else if (m_mtp) { - setUrl(QString("mtp:udi=%1").arg(m_device.udi())); + setUrl(QStringLiteral("mtp:udi=%1").arg(m_device.udi())); } } void PlacesItem::onAccessibilityChanged() { setIconOverlays(m_device.emblems()); - setUrl(m_access->filePath()); + setUrl(QUrl::fromLocalFile(m_access->filePath())); } void PlacesItem::onTrashDirListerCompleted() { - Q_ASSERT(url().protocol() == QLatin1String("trash")); + Q_ASSERT(url().scheme() == QLatin1String("trash")); const bool isTrashEmpty = m_trashDirLister->items().isEmpty(); setIcon(isTrashEmpty ? "user-trash" : "user-trash-full"); diff --git a/src/panels/places/placesitem.h b/src/panels/places/placesitem.h index 4c636ec63..4ae4fd677 100644 --- a/src/panels/places/placesitem.h +++ b/src/panels/places/placesitem.h @@ -22,7 +22,7 @@ #include <KBookmark> #include <kitemviews/kstandarditem.h> -#include <KUrl> +#include <QUrl> #include <QPointer> #include <Solid/Device> #include <Solid/OpticalDisc> @@ -51,8 +51,8 @@ public: explicit PlacesItem(const KBookmark& bookmark, PlacesItem* parent = 0); virtual ~PlacesItem(); - void setUrl(const KUrl& url); - KUrl url() const; + void setUrl(const QUrl& url); + QUrl url() const; void setUdi(const QString& udi); QString udi() const; @@ -74,7 +74,7 @@ public: static KBookmark createBookmark(KBookmarkManager* manager, const QString& text, - const KUrl& url, + const QUrl& url, const QString& iconName); static KBookmark createDeviceBookmark(KBookmarkManager* manager, const QString& udi); @@ -82,10 +82,10 @@ public: protected: virtual void onDataValueChanged(const QByteArray& role, const QVariant& current, - const QVariant& previous); + const QVariant& previous) Q_DECL_OVERRIDE; virtual void onDataChanged(const QHash<QByteArray, QVariant>& current, - const QHash<QByteArray, QVariant>& previous); + const QHash<QByteArray, QVariant>& previous) Q_DECL_OVERRIDE; private: PlacesItem(const PlacesItem& item); diff --git a/src/panels/places/placesitemeditdialog.cpp b/src/panels/places/placesitemeditdialog.cpp index 08c910d17..d035b0403 100644 --- a/src/panels/places/placesitemeditdialog.cpp +++ b/src/panels/places/placesitemeditdialog.cpp @@ -24,21 +24,22 @@ #include "placesitemeditdialog.h" #include <KAboutData> -#include <KComponentData> -#include <KDebug> +#include "dolphindebug.h" #include <KFile> #include <KIconButton> -#include <KLineEdit> -#include <KLocale> -#include <KMimeType> +#include <KLocalizedString> +#include <QMimeDatabase> #include <KUrlRequester> #include <QCheckBox> #include <QEvent> #include <QFormLayout> #include <QVBoxLayout> +#include <QDialogButtonBox> +#include <QPushButton> +#include <QLineEdit> PlacesItemEditDialog::PlacesItemEditDialog(QWidget* parent) : - KDialog(parent), + QDialog(parent), m_icon(), m_text(), m_url(), @@ -48,9 +49,6 @@ PlacesItemEditDialog::PlacesItemEditDialog(QWidget* parent) : m_iconButton(0), m_appLocal(0) { - setButtons( Ok | Cancel ); - setModal(true); - setDefaultButton(Ok); } void PlacesItemEditDialog::setIcon(const QString& icon) @@ -72,18 +70,18 @@ QString PlacesItemEditDialog::text() const { QString text = m_textEdit->text(); if (text.isEmpty()) { - const KUrl url = m_urlEdit->url(); - text = url.fileName().isEmpty() ? url.prettyUrl() : url.fileName(); + const QUrl url = m_urlEdit->url(); + text = url.fileName().isEmpty() ? url.toDisplayString(QUrl::PreferLocalFile) : url.fileName(); } return text; } -void PlacesItemEditDialog::setUrl(const KUrl& url) +void PlacesItemEditDialog::setUrl(const QUrl& url) { m_url = url; } -KUrl PlacesItemEditDialog::url() const +QUrl PlacesItemEditDialog::url() const { return m_urlEdit->url(); } @@ -108,7 +106,7 @@ bool PlacesItemEditDialog::event(QEvent* event) void PlacesItemEditDialog::slotUrlChanged(const QString& text) { - enableButtonOk(!text.isEmpty()); + m_okButton->setEnabled(!text.isEmpty()); } PlacesItemEditDialog::~PlacesItemEditDialog() @@ -117,42 +115,51 @@ PlacesItemEditDialog::~PlacesItemEditDialog() void PlacesItemEditDialog::initialize() { + QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel); + m_okButton = buttonBox->button(QDialogButtonBox::Ok); + m_okButton->setDefault(true); + m_okButton->setShortcut(Qt::CTRL | Qt::Key_Return); + connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); + connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); + setModal(true); + m_okButton->setDefault(true); + + QVBoxLayout *mainLayout = new QVBoxLayout; + setLayout(mainLayout); QWidget* mainWidget = new QWidget(this); + mainLayout->addWidget(mainWidget); + mainLayout->addWidget(buttonBox); + QVBoxLayout* vBox = new QVBoxLayout(mainWidget); QFormLayout* formLayout = new QFormLayout(); vBox->addLayout( formLayout ); - m_textEdit = new KLineEdit(mainWidget); + m_textEdit = new QLineEdit(mainWidget); formLayout->addRow(i18nc("@label", "Label:"), m_textEdit); m_textEdit->setText(m_text); - m_textEdit->setClickMessage(i18n("Enter descriptive label here")); + m_textEdit->setPlaceholderText(i18n("Enter descriptive label here")); - m_urlEdit = new KUrlRequester(m_url.prettyUrl(), mainWidget); + m_urlEdit = new KUrlRequester(m_url, mainWidget); m_urlEdit->setMode(KFile::Directory); formLayout->addRow(i18nc("@label", "Location:"), m_urlEdit); // Provide room for at least 40 chars (average char width is half of height) m_urlEdit->setMinimumWidth(m_urlEdit->fontMetrics().height() * (40 / 2)); - connect(m_urlEdit->lineEdit(), SIGNAL(textChanged(QString)), this, SLOT(slotUrlChanged(QString))); + connect(m_urlEdit, &KUrlRequester::textChanged, this, &PlacesItemEditDialog::slotUrlChanged); m_iconButton = new KIconButton(mainWidget); formLayout->addRow(i18nc("@label", "Choose an icon:"), m_iconButton); m_iconButton->setIconSize(IconSize(KIconLoader::Desktop)); m_iconButton->setIconType(KIconLoader::NoGroup, KIconLoader::Place); if (m_icon.isEmpty()) { - m_iconButton->setIcon(KMimeType::iconNameForUrl(m_url)); + QMimeDatabase db; + m_iconButton->setIcon(db.mimeTypeForUrl(m_url).iconName()); } else { m_iconButton->setIcon(m_icon); } if (m_allowGlobal) { - QString appName; - if (KGlobal::mainComponent().aboutData()) { - appName = KGlobal::mainComponent().aboutData()->programName(); - } - if (appName.isEmpty()) { - appName = KGlobal::mainComponent().componentName(); - } + const QString appName = KAboutData::applicationData().displayName(); m_appLocal = new QCheckBox( i18n("&Only show when using this application (%1)", appName ), mainWidget ); m_appLocal->setChecked(false); vBox->addWidget(m_appLocal); @@ -164,7 +171,5 @@ void PlacesItemEditDialog::initialize() m_textEdit->setFocus(); } - setMainWidget(mainWidget); } -#include "placesitemeditdialog.moc" diff --git a/src/panels/places/placesitemeditdialog.h b/src/panels/places/placesitemeditdialog.h index bf348479c..8a0dc0471 100644 --- a/src/panels/places/placesitemeditdialog.h +++ b/src/panels/places/placesitemeditdialog.h @@ -24,15 +24,16 @@ #ifndef PLACESITEMEDITDIALOG_H #define PLACESITEMEDITDIALOG_H -#include <KDialog> -#include <KUrl> +#include <QDialog> +#include <QUrl> class KIconButton; -class KLineEdit; class KUrlRequester; +class QLineEdit; class QCheckBox; +class QPushButton; -class PlacesItemEditDialog: public KDialog +class PlacesItemEditDialog: public QDialog { Q_OBJECT @@ -46,14 +47,14 @@ public: void setText(const QString& text); QString text() const; - void setUrl(const KUrl& url); - KUrl url() const; + void setUrl(const QUrl& url); + QUrl url() const; void setAllowGlobal(bool allow); bool allowGlobal() const; protected: - virtual bool event(QEvent* event); + virtual bool event(QEvent* event) Q_DECL_OVERRIDE; private slots: void slotUrlChanged(const QString& text); @@ -64,13 +65,14 @@ private: private: QString m_icon; QString m_text; - KUrl m_url; + QUrl m_url; bool m_allowGlobal; KUrlRequester* m_urlEdit; - KLineEdit* m_textEdit; + QLineEdit* m_textEdit; KIconButton* m_iconButton; QCheckBox* m_appLocal; + QPushButton *m_okButton; }; #endif diff --git a/src/panels/places/placesitemlistgroupheader.cpp b/src/panels/places/placesitemlistgroupheader.cpp index ec7c4b18c..e17fd4d66 100644 --- a/src/panels/places/placesitemlistgroupheader.cpp +++ b/src/panels/places/placesitemlistgroupheader.cpp @@ -42,4 +42,3 @@ QPalette::ColorRole PlacesItemListGroupHeader::normalTextColorRole() const return QPalette::WindowText; } -#include "placesitemlistgroupheader.moc" diff --git a/src/panels/places/placesitemlistgroupheader.h b/src/panels/places/placesitemlistgroupheader.h index 1c2d5cc25..7daaba602 100644 --- a/src/panels/places/placesitemlistgroupheader.h +++ b/src/panels/places/placesitemlistgroupheader.h @@ -31,7 +31,7 @@ public: virtual ~PlacesItemListGroupHeader(); protected: - virtual void paintSeparator(QPainter* painter, const QColor& color); + virtual void paintSeparator(QPainter* painter, const QColor& color) Q_DECL_OVERRIDE; virtual QPalette::ColorRole normalTextColorRole() const; }; diff --git a/src/panels/places/placesitemlistwidget.cpp b/src/panels/places/placesitemlistwidget.cpp index e33d1daf9..18e561864 100644 --- a/src/panels/places/placesitemlistwidget.cpp +++ b/src/panels/places/placesitemlistwidget.cpp @@ -19,8 +19,6 @@ #include "placesitemlistwidget.h" -#include "kdebug.h" - PlacesItemListWidget::PlacesItemListWidget(KItemListWidgetInformant* informant, QGraphicsItem* parent) : KStandardItemListWidget(informant, parent) { @@ -40,4 +38,3 @@ QPalette::ColorRole PlacesItemListWidget::normalTextColorRole() const return QPalette::WindowText; } -#include "placesitemlistwidget.moc" diff --git a/src/panels/places/placesitemlistwidget.h b/src/panels/places/placesitemlistwidget.h index a2a88c1f0..e9e6a0767 100644 --- a/src/panels/places/placesitemlistwidget.h +++ b/src/panels/places/placesitemlistwidget.h @@ -35,8 +35,8 @@ public: virtual ~PlacesItemListWidget(); protected: - virtual bool isHidden() const; - virtual QPalette::ColorRole normalTextColorRole() const; + virtual bool isHidden() const Q_DECL_OVERRIDE; + virtual QPalette::ColorRole normalTextColorRole() const Q_DECL_OVERRIDE; }; #endif diff --git a/src/panels/places/placesitemmodel.cpp b/src/panels/places/placesitemmodel.cpp index 637bfc107..bc7c2b7d3 100644 --- a/src/panels/places/placesitemmodel.cpp +++ b/src/panels/places/placesitemmodel.cpp @@ -26,20 +26,20 @@ #include "dolphin_generalsettings.h" #include <KBookmark> -#include <KBookmarkGroup> #include <KBookmarkManager> -#include <KComponentData> -#include <KDebug> -#include <KIcon> -#include <kprotocolinfo.h> -#include <KLocale> -#include <KStandardDirs> +#include "dolphindebug.h" +#include <QIcon> +#include <KProtocolInfo> +#include <KLocalizedString> +#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> @@ -52,8 +52,8 @@ #include <views/viewproperties.h> #ifdef HAVE_BALOO - #include <baloo/query.h> - #include <baloo/indexerconfig.h> + #include <Baloo/Query> + #include <Baloo/IndexerConfig> #endif namespace { @@ -64,7 +64,7 @@ namespace { // 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) : @@ -85,7 +85,7 @@ PlacesItemModel::PlacesItemModel(QObject* parent) : 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(); @@ -97,12 +97,12 @@ PlacesItemModel::PlacesItemModel(QObject* parent) : 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() @@ -112,7 +112,7 @@ PlacesItemModel::~PlacesItemModel() } 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); @@ -188,7 +188,7 @@ void PlacesItemModel::setHiddenItemsShown(bool show) } #ifdef PLACESITEMMODEL_DEBUG - kDebug() << "Changed visibility of hidden items"; + qCDebug(DolphinDebug) << "Changed visibility of hidden items"; showModelState(); #endif } @@ -198,15 +198,19 @@ bool PlacesItemModel::hiddenItemsShown() const 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; @@ -247,7 +251,7 @@ QAction* PlacesItemModel::ejectAction(int index) const { 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; @@ -296,7 +300,7 @@ QAction* PlacesItemModel::teardownAction(int index) const 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) @@ -305,9 +309,8 @@ 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(); @@ -323,9 +326,8 @@ void PlacesItemModel::requestTeardown(int index) 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(); } } @@ -353,9 +355,8 @@ void PlacesItemModel::requestStorageSetup(int index) 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(); } @@ -363,13 +364,13 @@ void PlacesItemModel::requestStorageSetup(int index) 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; } @@ -378,7 +379,7 @@ QMimeData* PlacesItemModel::createMimeData(const KItemSet& indexes) const QMimeData* mimeData = new QMimeData(); if (!urls.isEmpty()) { - urls.populateMimeData(mimeData); + mimeData->setUrls(urls); } mimeData->setData(internalMimeType(), itemData); @@ -419,9 +420,9 @@ void PlacesItemModel::dropMimeDataBefore(int index, const QMimeData* mimeData) 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()) { @@ -429,7 +430,7 @@ void PlacesItemModel::dropMimeDataBefore(int index, const QMimeData* mimeData) } if ((url.isLocalFile() && !QFileInfo(url.toLocalFile()).isDir()) - || url.protocol() == "trash") { + || url.scheme() == "trash") { // Only directories outside the trash are allowed continue; } @@ -441,12 +442,12 @@ void PlacesItemModel::dropMimeDataBefore(int index, const QMimeData* mimeData) } } -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); } @@ -492,7 +493,7 @@ void PlacesItemModel::onItemInserted(int index) } #ifdef PLACESITEMMODEL_DEBUG - kDebug() << "Inserted item" << index; + qCDebug(DolphinDebug) << "Inserted item" << index; showModelState(); #endif } @@ -510,7 +511,7 @@ void PlacesItemModel::onItemRemoved(int index, KStandardItem* removedItem) m_bookmarkedItems.removeAt(boomarkIndex); #ifdef PLACESITEMMODEL_DEBUG - kDebug() << "Removed item" << index; + qCDebug(DolphinDebug) << "Removed item" << index; showModelState(); #endif } @@ -589,14 +590,13 @@ void PlacesItemModel::slotStorageSetupDone(Solid::ErrorType error, { 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(), @@ -642,7 +642,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; } @@ -719,7 +719,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); } @@ -740,7 +740,7 @@ void PlacesItemModel::loadBookmarks() 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); @@ -749,7 +749,7 @@ void PlacesItemModel::loadBookmarks() // 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); } @@ -804,7 +804,7 @@ void PlacesItemModel::loadBookmarks() } #ifdef PLACESITEMMODEL_DEBUG - kDebug() << "Loaded bookmarks"; + qCDebug(DolphinDebug) << "Loaded bookmarks"; showModelState(); #endif } @@ -813,15 +813,15 @@ bool PlacesItemModel::acceptBookmark(const KBookmark& bookmark, 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; } @@ -833,12 +833,12 @@ PlacesItem* PlacesItemModel::createSystemPlacesItem(const SystemBookmarkData& da 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); } @@ -858,22 +858,22 @@ PlacesItem* PlacesItemModel::createSystemPlacesItem(const SystemBookmarkData& da 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"}); } } } @@ -890,42 +890,42 @@ void PlacesItemModel::createSystemBookmarks() // 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"))); } @@ -960,8 +960,8 @@ void PlacesItemModel::initializeAvailableDevices() 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) { @@ -1087,14 +1087,14 @@ bool PlacesItemModel::equalBookmarkIdentifiers(const KBookmark& b1, const KBookm } } -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(); @@ -1135,12 +1135,12 @@ QString PlacesItemModel::timelineDateString(int year, int month, int day) 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"))) { @@ -1160,7 +1160,7 @@ KUrl PlacesItemModel::createSearchUrl(const KUrl& url) } #ifdef HAVE_BALOO -KUrl PlacesItemModel::searchUrlForType(const QString& type) +QUrl PlacesItemModel::searchUrlForType(const QString& type) { Baloo::Query query; query.addType("File"); @@ -1173,25 +1173,25 @@ KUrl PlacesItemModel::searchUrlForType(const QString& type) #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(); @@ -1200,9 +1200,9 @@ void PlacesItemModel::showModelState() 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); @@ -1211,4 +1211,3 @@ void PlacesItemModel::showModelState() } #endif -#include "placesitemmodel.moc" diff --git a/src/panels/places/placesitemmodel.h b/src/panels/places/placesitemmodel.h index 7cbf99e95..aa8bb16fe 100644 --- a/src/panels/places/placesitemmodel.h +++ b/src/panels/places/placesitemmodel.h @@ -24,7 +24,7 @@ #include <kitemviews/kstandarditemmodel.h> -#include <KUrl> +#include <QUrl> #include <QHash> #include <QList> #include <QSet> @@ -58,7 +58,7 @@ public: * attributes. */ PlacesItem* createPlacesItem(const QString& text, - const KUrl& url, + const QUrl& url, const QString& iconName = QString()); PlacesItem* placesItem(int index) const; @@ -87,7 +87,7 @@ public: * range of the URL. -1 is returned if no closest item * could be found. */ - int closestItem(const KUrl& url) const; + int closestItem(const QUrl& url) const; /** * Appends the item \a item as last element of the group @@ -107,11 +107,9 @@ public: bool storageSetupNeeded(int index) const; void requestStorageSetup(int index); - /** @reimp */ - virtual QMimeData* createMimeData(const KItemSet& indexes) const; + virtual QMimeData* createMimeData(const KItemSet& indexes) const Q_DECL_OVERRIDE; - /** @reimp */ - virtual bool supportsDropping(int index) const; + virtual bool supportsDropping(int index) const Q_DECL_OVERRIDE; void dropMimeDataBefore(int index, const QMimeData* mimeData); @@ -121,9 +119,9 @@ public: * the corresponding IO-slave. Virtual URLs for bookmarks are used to * be independent from internal format changes. */ - static KUrl convertedUrl(const KUrl& url); + static QUrl convertedUrl(const QUrl& url); - virtual void clear(); + virtual void clear() Q_DECL_OVERRIDE; /** * Saves the bookmarks and indicates to other applications that the @@ -137,9 +135,9 @@ signals: void storageSetupDone(int index, bool success); protected: - virtual void onItemInserted(int index); - virtual void onItemRemoved(int index, KStandardItem* removedItem); - virtual void onItemChanged(int index, const QSet<QByteArray>& changedRoles); + virtual void onItemInserted(int index) Q_DECL_OVERRIDE; + virtual void onItemRemoved(int index, KStandardItem* removedItem) Q_DECL_OVERRIDE; + virtual void onItemChanged(int index, const QSet<QByteArray>& changedRoles) Q_DECL_OVERRIDE; private slots: void slotDeviceAdded(const QString& udi); @@ -219,7 +217,7 @@ private: /** * @return URL using the timeline-protocol for searching (see convertedUrl()). */ - static KUrl createTimelineUrl(const KUrl& url); + static QUrl createTimelineUrl(const QUrl& url); /** * Helper method for createTimelineUrl(). @@ -233,7 +231,7 @@ private: * for a given term. The URL \a url represents a places-internal * URL like e.g. "search:/documents" (see convertedUrl()). */ - static KUrl createSearchUrl(const KUrl& url); + static QUrl createSearchUrl(const QUrl& url); #ifdef HAVE_BALOO /** @@ -241,7 +239,7 @@ private: * @return URL that can be listed by KIO and results in searching * for the given type */ - static KUrl searchUrlForType(const QString& type); + static QUrl searchUrlForType(const QString& type); #endif #ifdef PLACESITEMMODEL_DEBUG @@ -258,17 +256,17 @@ private: struct SystemBookmarkData { - SystemBookmarkData(const KUrl& url, + SystemBookmarkData(const QUrl& url, const QString& icon, const QString& text) : url(url), icon(icon), text(text) {} - KUrl url; + QUrl url; QString icon; QString text; }; QList<SystemBookmarkData> m_systemBookmarks; - QHash<KUrl, int> m_systemBookmarksIndexes; + QHash<QUrl, int> m_systemBookmarksIndexes; // Contains hidden and unhidden items that are stored as // bookmark (the model itself only contains items that diff --git a/src/panels/places/placesitemsignalhandler.cpp b/src/panels/places/placesitemsignalhandler.cpp index 54a916de7..c9bc0db3f 100644 --- a/src/panels/places/placesitemsignalhandler.cpp +++ b/src/panels/places/placesitemsignalhandler.cpp @@ -47,4 +47,3 @@ void PlacesItemSignalHandler::onTrashDirListerCompleted() } } -#include "placesitemsignalhandler.moc" diff --git a/src/panels/places/placesitemsignalhandler.h b/src/panels/places/placesitemsignalhandler.h index d767b58d3..af66568ad 100644 --- a/src/panels/places/placesitemsignalhandler.h +++ b/src/panels/places/placesitemsignalhandler.h @@ -29,7 +29,7 @@ class PlacesItem; * and performing a corresponding action. * * PlacesItem is derived from KStandardItem, which is no QObject-class - * on purpose. To be able to internally listening to signals and performing a + * on purpose. To be able to internally listen to signals and performing a * corresponding action, PlacesItemSignalHandler is used. * * E.g. if the PlacesItem wants to react on accessibility-changes of a storage-access, diff --git a/src/panels/places/placespanel.cpp b/src/panels/places/placespanel.cpp index 6b840ef57..50ed7e73a 100644 --- a/src/panels/places/placespanel.cpp +++ b/src/panels/places/placespanel.cpp @@ -25,17 +25,22 @@ #include "dolphin_generalsettings.h" -#include <KDebug> +#include <KFileItem> +#include "dolphindebug.h" #include <KDirNotify> -#include <KIcon> +#include <QIcon> #include <KIO/Job> +#include <KIO/DropJob> +#include <KIO/EmptyTrashJob> #include <KIO/JobUiDelegate> -#include <KLocale> +#include <KJobWidgets> +#include <KLocalizedString> +#include <KIconLoader> #include <kitemviews/kitemlistcontainer.h> #include <kitemviews/kitemlistcontroller.h> #include <kitemviews/kitemlistselectionmanager.h> #include <kitemviews/kstandarditem.h> -#include <KMenu> +#include <QMenu> #include <KMessageBox> #include <KNotification> #include "placesitem.h" @@ -48,6 +53,7 @@ #include <QGraphicsSceneDragDropEvent> #include <QVBoxLayout> #include <QShowEvent> +#include <QMimeData> PlacesPanel::PlacesPanel(QWidget* parent) : Panel(parent), @@ -67,7 +73,7 @@ PlacesPanel::~PlacesPanel() bool PlacesPanel::urlChanged() { - if (!url().isValid() || url().protocol().contains("search")) { + if (!url().isValid() || url().scheme().contains("search")) { // Skip results shown by a search, as possible identical // directory names are useless without parent-path information. return false; @@ -101,8 +107,8 @@ void PlacesPanel::showEvent(QShowEvent* event) // used at all and stays invisible. m_model = new PlacesItemModel(this); m_model->setGroupedSorting(true); - connect(m_model, SIGNAL(errorMessage(QString)), - this, SIGNAL(errorMessage(QString))); + connect(m_model, &PlacesItemModel::errorMessage, + this, &PlacesPanel::errorMessage); m_view = new PlacesView(); m_view->setWidgetCreator(new KItemListWidgetCreator<PlacesItemListWidget>()); @@ -112,14 +118,14 @@ void PlacesPanel::showEvent(QShowEvent* event) m_controller->setSelectionBehavior(KItemListController::SingleSelection); m_controller->setSingleClickActivationEnforced(true); - readSettings(); + readSettings(); - connect(m_controller, SIGNAL(itemActivated(int)), this, SLOT(slotItemActivated(int))); - connect(m_controller, SIGNAL(itemMiddleClicked(int)), this, SLOT(slotItemMiddleClicked(int))); - connect(m_controller, SIGNAL(itemContextMenuRequested(int,QPointF)), this, SLOT(slotItemContextMenuRequested(int,QPointF))); - connect(m_controller, SIGNAL(viewContextMenuRequested(QPointF)), this, SLOT(slotViewContextMenuRequested(QPointF))); - connect(m_controller, SIGNAL(itemDropEvent(int,QGraphicsSceneDragDropEvent*)), this, SLOT(slotItemDropEvent(int,QGraphicsSceneDragDropEvent*))); - connect(m_controller, SIGNAL(aboveItemDropEvent(int,QGraphicsSceneDragDropEvent*)), this, SLOT(slotAboveItemDropEvent(int,QGraphicsSceneDragDropEvent*))); + connect(m_controller, &KItemListController::itemActivated, this, &PlacesPanel::slotItemActivated); + connect(m_controller, &KItemListController::itemMiddleClicked, this, &PlacesPanel::slotItemMiddleClicked); + connect(m_controller, &KItemListController::itemContextMenuRequested, this, &PlacesPanel::slotItemContextMenuRequested); + connect(m_controller, &KItemListController::viewContextMenuRequested, this, &PlacesPanel::slotViewContextMenuRequested); + connect(m_controller, &KItemListController::itemDropEvent, this, &PlacesPanel::slotItemDropEvent); + connect(m_controller, &KItemListController::aboveItemDropEvent, this, &PlacesPanel::slotAboveItemDropEvent); KItemListContainer* container = new KItemListContainer(m_controller, this); container->setEnabledFrame(false); @@ -151,7 +157,7 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos) return; } - KMenu menu(this); + QMenu menu(this); QAction* emptyTrashAction = 0; QAction* addAction = 0; @@ -180,26 +186,26 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos) mainSeparator = menu.addSeparator(); } } else { - if (item->url() == KUrl("trash:/")) { - emptyTrashAction = menu.addAction(KIcon("trash-empty"), i18nc("@action:inmenu", "Empty Trash")); + if (item->url() == QUrl("trash:/")) { + emptyTrashAction = menu.addAction(QIcon::fromTheme("trash-empty"), i18nc("@action:inmenu", "Empty Trash")); emptyTrashAction->setEnabled(item->icon() == "user-trash-full"); menu.addSeparator(); } - addAction = menu.addAction(KIcon("document-new"), i18nc("@item:inmenu", "Add Entry...")); + addAction = menu.addAction(QIcon::fromTheme("document-new"), i18nc("@item:inmenu", "Add Entry...")); mainSeparator = menu.addSeparator(); - editAction = menu.addAction(KIcon("document-properties"), i18nc("@item:inmenu", "Edit '%1'...", label)); + editAction = menu.addAction(QIcon::fromTheme("document-properties"), i18nc("@item:inmenu", "Edit '%1'...", label)); } if (!addAction) { - addAction = menu.addAction(KIcon("document-new"), i18nc("@item:inmenu", "Add Entry...")); + addAction = menu.addAction(QIcon::fromTheme("document-new"), i18nc("@item:inmenu", "Add Entry...")); } QAction* openInNewTabAction = menu.addAction(i18nc("@item:inmenu", "Open '%1' in New Tab", label)); - openInNewTabAction->setIcon(KIcon("tab-new")); + openInNewTabAction->setIcon(QIcon::fromTheme("tab-new")); QAction* removeAction = 0; if (!isDevice && !item->isSystemItem()) { - removeAction = menu.addAction(KIcon("edit-delete"), i18nc("@item:inmenu", "Remove '%1'", label)); + removeAction = menu.addAction(QIcon::fromTheme("edit-delete"), i18nc("@item:inmenu", "Remove '%1'", label)); } QAction* hideAction = menu.addAction(i18nc("@item:inmenu", "Hide '%1'", label)); @@ -217,7 +223,7 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos) } menu.addSeparator(); - KMenu* iconSizeSubMenu = new KMenu(i18nc("@item:inmenu", "Icon Size"), &menu); + QMenu* iconSizeSubMenu = new QMenu(i18nc("@item:inmenu", "Icon Size"), &menu); struct IconSizeInfo { @@ -301,9 +307,9 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos) void PlacesPanel::slotViewContextMenuRequested(const QPointF& pos) { - KMenu menu(this); + QMenu menu(this); - QAction* addAction = menu.addAction(KIcon("document-new"), i18nc("@item:inmenu", "Add Entry...")); + QAction* addAction = menu.addAction(QIcon::fromTheme("document-new"), i18nc("@item:inmenu", "Add Entry...")); QAction* showAllAction = 0; if (m_model->hiddenCount() > 0) { @@ -342,8 +348,8 @@ void PlacesPanel::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* even } if (m_model->storageSetupNeeded(index)) { - connect(m_model, SIGNAL(storageSetupDone(int,bool)), - this, SLOT(slotItemDropEventStorageSetupDone(int,bool))); + connect(m_model, &PlacesItemModel::storageSetupDone, + this, &PlacesPanel::slotItemDropEventStorageSetupDone); m_itemDropEventIndex = index; @@ -365,34 +371,25 @@ void PlacesPanel::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* even return; } - KUrl destUrl = destItem->url(); + QUrl destUrl = destItem->url(); QDropEvent dropEvent(event->pos().toPoint(), event->possibleActions(), event->mimeData(), event->buttons(), event->modifiers()); - QString error; - DragAndDropHelper::dropUrls(KFileItem(), destUrl, &dropEvent, error); - if (!error.isEmpty()) { - emit errorMessage(error); - } + slotUrlsDropped(destUrl, &dropEvent, this); } void PlacesPanel::slotItemDropEventStorageSetupDone(int index, bool success) { - disconnect(m_model, SIGNAL(storageSetupDone(int,bool)), - this, SLOT(slotItemDropEventStorageSetupDone(int,bool))); + disconnect(m_model, &PlacesItemModel::storageSetupDone, + this, &PlacesPanel::slotItemDropEventStorageSetupDone); if ((index == m_itemDropEventIndex) && m_itemDropEvent && m_itemDropEventMimeData) { if (success) { - KUrl destUrl = m_model->placesItem(index)->url(); - - QString error; - DragAndDropHelper::dropUrls(KFileItem(), destUrl, m_itemDropEvent, error); - if (!error.isEmpty()) { - emit errorMessage(error); - } + QUrl destUrl = m_model->placesItem(index)->url(); + slotUrlsDropped(destUrl, m_itemDropEvent, this); } delete m_itemDropEventMimeData; @@ -410,15 +407,12 @@ void PlacesPanel::slotAboveItemDropEvent(int index, QGraphicsSceneDragDropEvent* m_model->saveBookmarks(); } -void PlacesPanel::slotUrlsDropped(const KUrl& dest, QDropEvent* event, QWidget* parent) +void PlacesPanel::slotUrlsDropped(const QUrl& dest, QDropEvent* event, QWidget* parent) { - Q_UNUSED(parent); - QString error; - DragAndDropHelper::dropUrls(KFileItem(), dest, event, error); - if (!error.isEmpty()) { - emit errorMessage(error); + KIO::DropJob *job = DragAndDropHelper::dropUrls(dest, event, parent); + if (job) { + connect(job, &KIO::DropJob::result, this, [this](KJob *job) { if (job->error()) emit errorMessage(job->errorString()); }); } - } void PlacesPanel::slotTrashUpdated(KJob* job) @@ -426,13 +420,14 @@ void PlacesPanel::slotTrashUpdated(KJob* job) if (job->error()) { emit errorMessage(job->errorString()); } - org::kde::KDirNotify::emitFilesAdded("trash:/"); + // as long as KIO doesn't do this, do it ourselves + KNotification::event("Trash: emptied", QString(), QPixmap(), 0, KNotification::DefaultEvent); } void PlacesPanel::slotStorageSetupDone(int index, bool success) { - disconnect(m_model, SIGNAL(storageSetupDone(int,bool)), - this, SLOT(slotStorageSetupDone(int,bool))); + disconnect(m_model, &PlacesItemModel::storageSetupDone, + this, &PlacesPanel::slotStorageSetupDone); if (m_triggerStorageSetupButton == Qt::NoButton) { return; @@ -444,37 +439,28 @@ void PlacesPanel::slotStorageSetupDone(int index, bool success) m_triggerStorageSetupButton = Qt::NoButton; } else { setUrl(m_storageSetupFailedUrl); - m_storageSetupFailedUrl = KUrl(); + m_storageSetupFailedUrl = QUrl(); } } void PlacesPanel::emptyTrash() { - const QString text = i18nc("@info", "Do you really want to empty the Trash? All items will be deleted."); - const bool del = KMessageBox::warningContinueCancel(window(), - text, - QString(), - KGuiItem(i18nc("@action:button", "Empty Trash"), - KIcon("user-trash")) - ) == KMessageBox::Continue; - if (del) { - QByteArray packedArgs; - QDataStream stream(&packedArgs, QIODevice::WriteOnly); - stream << int(1); - KIO::Job *job = KIO::special(KUrl("trash:/"), packedArgs); - KNotification::event("Trash: emptied", QString() , QPixmap() , 0, KNotification::DefaultEvent); - job->ui()->setWindow(parentWidget()); - connect(job, SIGNAL(result(KJob*)), SLOT(slotTrashUpdated(KJob*))); + KIO::JobUiDelegate uiDelegate; + uiDelegate.setWindow(window()); + if (uiDelegate.askDeleteConfirmation(QList<QUrl>(), KIO::JobUiDelegate::EmptyTrash, KIO::JobUiDelegate::DefaultConfirmation)) { + KIO::Job* job = KIO::emptyTrash(); + KJobWidgets::setWindow(job, window()); + connect(job, &KIO::Job::result, this, &PlacesPanel::slotTrashUpdated); } } void PlacesPanel::addEntry() { const int index = m_controller->selectionManager()->currentItem(); - const KUrl url = m_model->data(index).value("url").value<KUrl>(); + const QUrl url = m_model->data(index).value("url").value<QUrl>(); QPointer<PlacesItemEditDialog> dialog = new PlacesItemEditDialog(this); - dialog->setCaption(i18nc("@title:window", "Add Places Entry")); + dialog->setWindowTitle(i18nc("@title:window", "Add Places Entry")); dialog->setAllowGlobal(true); dialog->setUrl(url); if (dialog->exec() == QDialog::Accepted) { @@ -491,10 +477,10 @@ void PlacesPanel::editEntry(int index) QHash<QByteArray, QVariant> data = m_model->data(index); QPointer<PlacesItemEditDialog> dialog = new PlacesItemEditDialog(this); - dialog->setCaption(i18nc("@title:window", "Edit Places Entry")); + dialog->setWindowTitle(i18nc("@title:window", "Edit Places Entry")); dialog->setIcon(data.value("iconName").toString()); dialog->setText(data.value("text").toString()); - dialog->setUrl(data.value("url").value<KUrl>()); + dialog->setUrl(data.value("url").value<QUrl>()); dialog->setAllowGlobal(true); if (dialog->exec() == QDialog::Accepted) { PlacesItem* oldItem = m_model->placesItem(index); @@ -529,14 +515,14 @@ void PlacesPanel::triggerItem(int index, Qt::MouseButton button) m_triggerStorageSetupButton = button; m_storageSetupFailedUrl = url(); - connect(m_model, SIGNAL(storageSetupDone(int,bool)), - this, SLOT(slotStorageSetupDone(int,bool))); + connect(m_model, &PlacesItemModel::storageSetupDone, + this, &PlacesPanel::slotStorageSetupDone); m_model->requestStorageSetup(index); } else { m_triggerStorageSetupButton = Qt::NoButton; - const KUrl url = m_model->data(index).value("url").value<KUrl>(); + const QUrl url = m_model->data(index).value("url").value<QUrl>(); if (!url.isEmpty()) { if (button == Qt::MiddleButton) { emit placeMiddleClicked(PlacesItemModel::convertedUrl(url)); @@ -546,6 +532,3 @@ void PlacesPanel::triggerItem(int index, Qt::MouseButton button) } } } - - -#include "placespanel.moc" diff --git a/src/panels/places/placespanel.h b/src/panels/places/placespanel.h index 16112e8b2..81aeedb28 100644 --- a/src/panels/places/placespanel.h +++ b/src/panels/places/placespanel.h @@ -21,16 +21,16 @@ #ifndef PLACESPANEL_H #define PLACESPANEL_H -#include <KUrl> +#include <QUrl> +#include <QMimeData> #include <panels/panel.h> class KItemListController; -class PlacesItemEditDialog; class PlacesItem; class PlacesItemModel; class PlacesView; class QGraphicsSceneDragDropEvent; - +class KJob; /** * @brief Combines bookmarks and mounted devices as list. */ @@ -43,13 +43,13 @@ public: virtual ~PlacesPanel(); signals: - void placeActivated(const KUrl& url); - void placeMiddleClicked(const KUrl& url); + void placeActivated(const QUrl& url); + void placeMiddleClicked(const QUrl& url); void errorMessage(const QString& error); protected: - virtual bool urlChanged(); - virtual void showEvent(QShowEvent* event); + virtual bool urlChanged() Q_DECL_OVERRIDE; + virtual void showEvent(QShowEvent* event) Q_DECL_OVERRIDE; public slots: virtual void readSettings(); @@ -62,7 +62,7 @@ private slots: void slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* event); void slotItemDropEventStorageSetupDone(int index, bool success); void slotAboveItemDropEvent(int index, QGraphicsSceneDragDropEvent* event); - void slotUrlsDropped(const KUrl& dest, QDropEvent* event, QWidget* parent); + void slotUrlsDropped(const QUrl& dest, QDropEvent* event, QWidget* parent); void slotTrashUpdated(KJob* job); void slotStorageSetupDone(int index, bool success); @@ -84,7 +84,7 @@ private: PlacesItemModel* m_model; PlacesView* m_view; - KUrl m_storageSetupFailedUrl; + QUrl m_storageSetupFailedUrl; Qt::MouseButton m_triggerStorageSetupButton; int m_itemDropEventIndex; diff --git a/src/panels/places/placesview.cpp b/src/panels/places/placesview.cpp index a298a5250..d755d46b5 100644 --- a/src/panels/places/placesview.cpp +++ b/src/panels/places/placesview.cpp @@ -35,7 +35,7 @@ void PlacesView::setIconSize(int size) if (size != iconSize()) { PlacesPanelSettings* settings = PlacesPanelSettings::self(); settings->setIconSize(size); - settings->writeConfig(); + settings->save(); KItemListStyleOption option = styleOption(); option.iconSize = size; @@ -49,4 +49,3 @@ int PlacesView::iconSize() const return option.iconSize; } -#include "placesview.moc" |
