diff --git a/src/widgets/kpropertiesdialog.cpp b/src/widgets/kpropertiesdialog.cpp --- a/src/widgets/kpropertiesdialog.cpp +++ b/src/widgets/kpropertiesdialog.cpp @@ -779,8 +779,11 @@ QWidget *iconArea; QLabel *m_sizeLabel; + QPushButton *m_sizeDetermineButton; QPushButton *m_sizeStopButton; + QPushButton *m_sizeDetailsButton; + KLineEdit *m_linkTargetLineEdit; QString m_sRelativePath; @@ -1085,19 +1088,31 @@ QLocale().toString(totalSize))); d->m_sizeDetermineButton = nullptr; d->m_sizeStopButton = nullptr; + d->m_sizeDetailsButton = nullptr; } else { // Directory QHBoxLayout *sizelay = new QHBoxLayout(); grid->addLayout(sizelay, curRow++, 2); // buttons d->m_sizeDetermineButton = new QPushButton(i18n("Calculate"), d->m_frame); d->m_sizeStopButton = new QPushButton(i18n("Stop"), d->m_frame); + + if (!QStandardPaths::findExecutable(QStringLiteral("filelight")).isEmpty()) { + d->m_sizeDetailsButton = new QPushButton(i18n("Explore in Filelight?"), d->m_frame); + d->m_sizeDetailsButton->setIcon(QIcon::fromTheme(QStringLiteral("filelight"))); + connect(d->m_sizeDetailsButton, &QPushButton::clicked, this, &KFilePropsPlugin::slotSizeDetails); + } + d->m_sizeDetermineButton->setIcon(QIcon::fromTheme(QStringLiteral("view-refresh"))); d->m_sizeStopButton->setIcon(QIcon::fromTheme(QStringLiteral("dialog-cancel"))); + connect(d->m_sizeDetermineButton, &QAbstractButton::clicked, this, &KFilePropsPlugin::slotSizeDetermine); connect(d->m_sizeStopButton, &QAbstractButton::clicked, this, &KFilePropsPlugin::slotSizeStop); + sizelay->addWidget(d->m_sizeDetermineButton, 0); sizelay->addWidget(d->m_sizeStopButton, 0); + sizelay->addWidget(d->m_sizeDetailsButton, 0); + sizelay->addStretch(10); // so that the buttons don't grow horizontally // auto-launch for local dirs only, and not for '/' @@ -1432,6 +1447,14 @@ d->m_sizeDetermineButton->setEnabled(true); } +void KFilePropsPlugin::slotSizeDetails() +{ + const QUrl url = properties->url(); + + // Open the current folder in filelight + KRun::run(QStringLiteral("/usr/bin/filelight"), { url }, properties->window(), QStringLiteral("Filelight"), QStringLiteral("filelight")); +} + KFilePropsPlugin::~KFilePropsPlugin() { delete d; diff --git a/src/widgets/kpropertiesdialog_p.h b/src/widgets/kpropertiesdialog_p.h --- a/src/widgets/kpropertiesdialog_p.h +++ b/src/widgets/kpropertiesdialog_p.h @@ -81,6 +81,7 @@ void slotFreeSpaceResult(KIO::Job *job, KIO::filesize_t size, KIO::filesize_t available); void slotSizeStop(); void slotSizeDetermine(); + void slotSizeDetails(); Q_SIGNALS: void leaveModality();