Summary:
It was only used as fallback when baloo was not found, but
`KFileMetaDataWidget` is useless without nepomuk.
The result of this patch is that the information panel and the tooltips
won't be available from platforms without baloo (instead of being
available but broken). The baloo dependency remains optional.
Closes T8720
Test Plan:
Build dolphin with `cmake -DCMAKE_DISABLE_FIND_PACKAGE_KF5Baloo=ON ..` and
make sure it doesn't show tooltips or the information panel.
Reviewers: #dolphin, broulik, ngraham
Subscribers: kfm-devel
Tags: #dolphin
Maniphest Tasks: T8720
Differential Revision: https://phabricator.kde.org/D14814
message(STATUS "Baloo packages are found")
set(HAVE_BALOO TRUE)
else()
message(STATUS "Baloo packages are found")
set(HAVE_BALOO TRUE)
else()
- message(WARNING "Baloo packages not found. They are needed for the metadata features of Dolphin.")
- find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
- KDELibs4Support # for KFileMetaDataWidget
- )
+ message(WARNING "Baloo packages not found. They are needed for the metadata features of Dolphin (including the information panel).")
endif()
add_subdirectory(src)
endif()
add_subdirectory(src)
views/dolphinviewactionhandler.cpp
views/draganddrophelper.cpp
views/renamedialog.cpp
views/dolphinviewactionhandler.cpp
views/draganddrophelper.cpp
views/renamedialog.cpp
- views/tooltips/dolphinfilemetadatawidget.cpp
- views/tooltips/tooltipmanager.cpp
views/versioncontrol/updateitemstatesthread.cpp
views/versioncontrol/versioncontrolobserver.cpp
views/viewmodecontroller.cpp
views/versioncontrol/updateitemstatesthread.cpp
views/versioncontrol/versioncontrolobserver.cpp
views/viewmodecontroller.cpp
if(HAVE_BALOO)
set(dolphinprivate_LIB_SRCS
${dolphinprivate_LIB_SRCS}
if(HAVE_BALOO)
set(dolphinprivate_LIB_SRCS
${dolphinprivate_LIB_SRCS}
+ views/tooltips/dolphinfilemetadatawidget.cpp
+ views/tooltips/tooltipmanager.cpp
kitemviews/private/kbaloorolesprovider.cpp
)
endif()
kitemviews/private/kbaloorolesprovider.cpp
)
endif()
KF5::Baloo
KF5::BalooWidgets
)
KF5::Baloo
KF5::BalooWidgets
)
-else()
- target_link_libraries(
- dolphinprivate PUBLIC
- KF5::KDELibs4Support # for KFileMetaDataWidget
- )
endif()
set_target_properties(dolphinprivate PROPERTIES
endif()
set_target_properties(dolphinprivate PROPERTIES
dolphintabwidget.cpp
trash/dolphintrash.cpp
filterbar/filterbar.cpp
dolphintabwidget.cpp
trash/dolphintrash.cpp
filterbar/filterbar.cpp
- panels/information/filemetadataconfigurationdialog.cpp
- panels/information/informationpanel.cpp
- panels/information/informationpanelcontent.cpp
- panels/information/pixmapviewer.cpp
- panels/information/phononwidget.cpp
panels/places/placespanel.cpp
panels/places/placesitem.cpp
panels/places/placesitemeditdialog.cpp
panels/places/placespanel.cpp
panels/places/placesitem.cpp
panels/places/placesitemeditdialog.cpp
+if(HAVE_BALOO)
+ set(dolphinstatic_SRCS
+ ${dolphinstatic_SRCS}
+ panels/information/filemetadataconfigurationdialog.cpp
+ panels/information/informationpanel.cpp
+ panels/information/informationpanelcontent.cpp
+ panels/information/pixmapviewer.cpp
+ panels/information/phononwidget.cpp
+ )
+endif()
+
kconfig_add_kcfg_files(dolphinstatic_SRCS GENERATE_MOC
panels/folders/dolphin_folderspanelsettings.kcfgc
panels/information/dolphin_informationpanelsettings.kcfgc
kconfig_add_kcfg_files(dolphinstatic_SRCS GENERATE_MOC
panels/folders/dolphin_folderspanelsettings.kcfgc
panels/information/dolphin_informationpanelsettings.kcfgc
infoDock->setLocked(lock);
infoDock->setObjectName(QStringLiteral("infoDock"));
infoDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
infoDock->setLocked(lock);
infoDock->setObjectName(QStringLiteral("infoDock"));
infoDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
InformationPanel* infoPanel = new InformationPanel(infoDock);
infoPanel->setCustomContextMenuActions({lockLayoutAction});
connect(infoPanel, &InformationPanel::urlActivated, this, &DolphinMainWindow::handleUrl);
InformationPanel* infoPanel = new InformationPanel(infoDock);
infoPanel->setCustomContextMenuActions({lockLayoutAction});
connect(infoPanel, &InformationPanel::urlActivated, this, &DolphinMainWindow::handleUrl);
infoPanel, &InformationPanel::setSelection);
connect(this, &DolphinMainWindow::requestItemInfo,
infoPanel, &InformationPanel::requestDelayedItemInfo);
infoPanel, &InformationPanel::setSelection);
connect(this, &DolphinMainWindow::requestItemInfo,
infoPanel, &InformationPanel::requestDelayedItemInfo);
// Setup "Folders"
DolphinDockWidget* foldersDock = new DolphinDockWidget(i18nc("@title:window", "Folders"));
// Setup "Folders"
DolphinDockWidget* foldersDock = new DolphinDockWidget(i18nc("@title:window", "Folders"));
#include "filemetadataconfigurationdialog.h"
#include "filemetadataconfigurationdialog.h"
-#ifndef HAVE_BALOO
-#include <kfilemetadataconfigurationwidget.h>
-#else
#include <Baloo/FileMetaDataConfigWidget>
#include <Baloo/FileMetaDataConfigWidget>
#include <KConfigGroup>
#include <KLocalizedString>
#include <KSharedConfig>
#include <KConfigGroup>
#include <KLocalizedString>
#include <KSharedConfig>
"be shown:"), this);
m_descriptionLabel->setWordWrap(true);
"be shown:"), this);
m_descriptionLabel->setWordWrap(true);
-#ifndef HAVE_BALOO
- m_configWidget = new KFileMetaDataConfigurationWidget(this);
-#else
m_configWidget = new Baloo::FileMetaDataConfigWidget(this);
m_configWidget = new Baloo::FileMetaDataConfigWidget(this);
QWidget* mainWidget = new QWidget(this);
QVBoxLayout* topLayout = new QVBoxLayout(mainWidget);
QWidget* mainWidget = new QWidget(this);
QVBoxLayout* topLayout = new QVBoxLayout(mainWidget);
void slotAccepted();
private:
QLabel* m_descriptionLabel;
void slotAccepted();
private:
QLabel* m_descriptionLabel;
-#ifndef HAVE_BALOO
- KFileMetaDataConfigurationWidget* m_configWidget;
-#else
Baloo::FileMetaDataConfigWidget* m_configWidget;
Baloo::FileMetaDataConfigWidget* m_configWidget;
#include <QMenu>
#include <QTextDocument>
#include <QMenu>
#include <QTextDocument>
-#ifndef HAVE_BALOO
-#include <KFileMetaDataWidget>
-#else
#include <Baloo/FileMetaDataWidget>
#include <Baloo/FileMetaDataWidget>
#include <panels/places/placesitem.h>
#include <panels/places/placesitemmodel.h>
#include <panels/places/placesitem.h>
#include <panels/places/placesitemmodel.h>
const bool previewsShown = InformationPanelSettings::previewsShown();
m_preview->setVisible(previewsShown);
const bool previewsShown = InformationPanelSettings::previewsShown();
m_preview->setVisible(previewsShown);
-#ifndef HAVE_BALOO
- m_metaDataWidget = new KFileMetaDataWidget(parent);
- connect(m_metaDataWidget, &KFileMetaDataWidget::urlActivated,
- this, &InformationPanelContent::urlActivated);
-#else
m_metaDataWidget = new Baloo::FileMetaDataWidget(parent);
m_metaDataWidget->setDateFormat(static_cast<Baloo::DateFormats>(InformationPanelSettings::dateFormat()));
connect(m_metaDataWidget, &Baloo::FileMetaDataWidget::urlActivated,
this, &InformationPanelContent::urlActivated);
m_metaDataWidget = new Baloo::FileMetaDataWidget(parent);
m_metaDataWidget->setDateFormat(static_cast<Baloo::DateFormats>(InformationPanelSettings::dateFormat()));
connect(m_metaDataWidget, &Baloo::FileMetaDataWidget::urlActivated,
this, &InformationPanelContent::urlActivated);
m_metaDataWidget->setFont(QFontDatabase::systemFont(QFontDatabase::SmallestReadableFont));
m_metaDataWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
m_metaDataWidget->setFont(QFontDatabase::systemFont(QFontDatabase::SmallestReadableFont));
m_metaDataWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
// Encapsulate the MetaDataWidget inside a container that has a dummy widget
// at the bottom. This prevents that the meta data widget gets vertically stretched
// in the case where the height of m_metaDataArea > m_metaDataWidget.
// Encapsulate the MetaDataWidget inside a container that has a dummy widget
// at the bottom. This prevents that the meta data widget gets vertically stretched
// in the case where the height of m_metaDataArea > m_metaDataWidget.
}
if (m_metaDataWidget) {
}
if (m_metaDataWidget) {
m_metaDataWidget->setDateFormat(static_cast<Baloo::DateFormats>(InformationPanelSettings::dateFormat()));
m_metaDataWidget->setDateFormat(static_cast<Baloo::DateFormats>(InformationPanelSettings::dateFormat()));
m_metaDataWidget->show();
m_metaDataWidget->setItems(KFileItemList() << item);
}
m_metaDataWidget->show();
m_metaDataWidget->setItems(KFileItemList() << item);
}
QAction* configureAction = popup.addAction(i18nc("@action:inmenu", "Configure..."));
configureAction->setIcon(QIcon::fromTheme(QStringLiteral("configure")));
QAction* configureAction = popup.addAction(i18nc("@action:inmenu", "Configure..."));
configureAction->setIcon(QIcon::fromTheme(QStringLiteral("configure")));
QAction* dateformatAction = popup.addAction(i18nc("@action:inmenu", "Condensed Date"));
dateformatAction->setIcon(QIcon::fromTheme(QStringLiteral("change-date-symbolic")));
dateformatAction->setCheckable(true);
dateformatAction->setChecked(InformationPanelSettings::dateFormat() == static_cast<int>(Baloo::DateFormats::ShortFormat));
QAction* dateformatAction = popup.addAction(i18nc("@action:inmenu", "Condensed Date"));
dateformatAction->setIcon(QIcon::fromTheme(QStringLiteral("change-date-symbolic")));
dateformatAction->setCheckable(true);
dateformatAction->setChecked(InformationPanelSettings::dateFormat() == static_cast<int>(Baloo::DateFormats::ShortFormat));
popup.addSeparator();
foreach (QAction* action, customContextMenuActions) {
popup.addAction(action);
popup.addSeparator();
foreach (QAction* action, customContextMenuActions) {
popup.addAction(action);
dialog->show();
connect(dialog, &FileMetaDataConfigurationDialog::destroyed, this, &InformationPanelContent::refreshMetaData);
}
dialog->show();
connect(dialog, &FileMetaDataConfigurationDialog::destroyed, this, &InformationPanelContent::refreshMetaData);
}
if (action == dateformatAction) {
int dateFormat = static_cast<int>(isChecked ? Baloo::DateFormats::ShortFormat : Baloo::DateFormats::LongFormat);
InformationPanelSettings::setDateFormat(dateFormat);
refreshMetaData();
}
if (action == dateformatAction) {
int dateFormat = static_cast<int>(isChecked ? Baloo::DateFormats::ShortFormat : Baloo::DateFormats::LongFormat);
InformationPanelSettings::setDateFormat(dateFormat);
refreshMetaData();
}
}
void InformationPanelContent::showIcon(const KFileItem& item)
}
void InformationPanelContent::showIcon(const KFileItem& item)
topLayout->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT, QSizePolicy::Fixed, QSizePolicy::Fixed));
topLayout->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT, QSizePolicy::Fixed, QSizePolicy::Fixed));
// 'Show tooltips'
m_showToolTips = new QCheckBox(i18nc("@option:check", "Show tooltips"));
topLayout->addRow(i18nc("@title:group", "Miscellaneous: "), m_showToolTips);
// 'Show tooltips'
m_showToolTips = new QCheckBox(i18nc("@option:check", "Show tooltips"));
topLayout->addRow(i18nc("@title:group", "Miscellaneous: "), m_showToolTips);
// 'Show selection marker'
m_showSelectionToggle = new QCheckBox(i18nc("@option:check", "Show selection marker"));
// 'Show selection marker'
m_showSelectionToggle = new QCheckBox(i18nc("@option:check", "Show selection marker"));
connect(m_localViewProps, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed);
connect(m_globalViewProps, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed);
connect(m_localViewProps, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed);
connect(m_globalViewProps, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed);
connect(m_showToolTips, &QCheckBox::toggled, this, &BehaviorSettingsPage::changed);
connect(m_showToolTips, &QCheckBox::toggled, this, &BehaviorSettingsPage::changed);
connect(m_showSelectionToggle, &QCheckBox::toggled, this, &BehaviorSettingsPage::changed);
connect(m_naturalSorting, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed);
connect(m_caseInsensitiveSorting, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed);
connect(m_showSelectionToggle, &QCheckBox::toggled, this, &BehaviorSettingsPage::changed);
connect(m_naturalSorting, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed);
connect(m_caseInsensitiveSorting, &QRadioButton::toggled, this, &BehaviorSettingsPage::changed);
const bool useGlobalViewProps = m_globalViewProps->isChecked();
settings->setGlobalViewProps(useGlobalViewProps);
const bool useGlobalViewProps = m_globalViewProps->isChecked();
settings->setGlobalViewProps(useGlobalViewProps);
settings->setShowToolTips(m_showToolTips->isChecked());
settings->setShowToolTips(m_showToolTips->isChecked());
settings->setShowSelectionToggle(m_showSelectionToggle->isChecked());
setSortingChoiceValue(settings);
settings->setRenameInline(m_renameInline->isChecked());
settings->setShowSelectionToggle(m_showSelectionToggle->isChecked());
setSortingChoiceValue(settings);
settings->setRenameInline(m_renameInline->isChecked());
m_localViewProps->setChecked(!useGlobalViewProps);
m_globalViewProps->setChecked(useGlobalViewProps);
m_localViewProps->setChecked(!useGlobalViewProps);
m_globalViewProps->setChecked(useGlobalViewProps);
m_showToolTips->setChecked(GeneralSettings::showToolTips());
m_showToolTips->setChecked(GeneralSettings::showToolTips());
m_showSelectionToggle->setChecked(GeneralSettings::showSelectionToggle());
m_renameInline->setChecked(GeneralSettings::renameInline());
m_useTabForSplitViewSwitch->setChecked(GeneralSettings::useTabForSwitchingSplitView());
m_showSelectionToggle->setChecked(GeneralSettings::showSelectionToggle());
m_renameInline->setChecked(GeneralSettings::renameInline());
m_useTabForSplitViewSwitch->setChecked(GeneralSettings::useTabForSwitchingSplitView());
connect(selectionManager, &KItemListSelectionManager::selectionChanged,
this, &DolphinView::slotSelectionChanged);
connect(selectionManager, &KItemListSelectionManager::selectionChanged,
this, &DolphinView::slotSelectionChanged);
m_toolTipManager = new ToolTipManager(this);
connect(m_toolTipManager, &ToolTipManager::urlActivated, this, &DolphinView::urlActivated);
m_toolTipManager = new ToolTipManager(this);
connect(m_toolTipManager, &ToolTipManager::urlActivated, this, &DolphinView::urlActivated);
m_versionControlObserver = new VersionControlObserver(this);
m_versionControlObserver->setModel(m_model);
m_versionControlObserver = new VersionControlObserver(this);
m_versionControlObserver->setModel(m_model);
const QPoint pos = m_container->mapToGlobal(itemRect.topLeft().toPoint());
itemRect.moveTo(pos);
const QPoint pos = m_container->mapToGlobal(itemRect.topLeft().toPoint());
itemRect.moveTo(pos);
m_toolTipManager->showToolTip(item, itemRect, nativeParentWidget()->windowHandle());
m_toolTipManager->showToolTip(item, itemRect, nativeParentWidget()->windowHandle());
}
emit requestItemInfo(item);
}
emit requestItemInfo(item);
void DolphinView::hideToolTip()
{
void DolphinView::hideToolTip()
{
if (GeneralSettings::showToolTips()) {
m_toolTipManager->hideToolTip();
}
if (GeneralSettings::showToolTips()) {
m_toolTipManager->hideToolTip();
}
}
void DolphinView::calculateItemCount(int& fileCount,
}
void DolphinView::calculateItemCount(int& fileCount,
#include <KColorScheme>
#include <KSeparator>
#include <KStringHandler>
#include <KColorScheme>
#include <KSeparator>
#include <KStringHandler>
-#ifndef HAVE_BALOO
-#include <KFileMetaDataWidget>
-#else
#include <Baloo/FileMetaDataWidget>
#include <Baloo/FileMetaDataWidget>
#include <QLabel>
#include <QStyleOptionFrame>
#include <QLabel>
#include <QStyleOptionFrame>
m_name->setMaximumWidth(fontMetrics.averageCharWidth() * 40);
// Create widget for the meta data
m_name->setMaximumWidth(fontMetrics.averageCharWidth() * 40);
// Create widget for the meta data
-#ifndef HAVE_BALOO
- m_fileMetaDataWidget = new KFileMetaDataWidget(this);
- connect(m_fileMetaDataWidget, &KFileMetaDataWidget::metaDataRequestFinished,
- this, &DolphinFileMetaDataWidget::metaDataRequestFinished);
- connect(m_fileMetaDataWidget, &KFileMetaDataWidget::urlActivated,
- this, &DolphinFileMetaDataWidget::urlActivated);
-#else
m_fileMetaDataWidget = new Baloo::FileMetaDataWidget(this);
connect(m_fileMetaDataWidget, &Baloo::FileMetaDataWidget::metaDataRequestFinished,
this, &DolphinFileMetaDataWidget::metaDataRequestFinished);
connect(m_fileMetaDataWidget, &Baloo::FileMetaDataWidget::urlActivated,
this, &DolphinFileMetaDataWidget::urlActivated);
m_fileMetaDataWidget = new Baloo::FileMetaDataWidget(this);
connect(m_fileMetaDataWidget, &Baloo::FileMetaDataWidget::metaDataRequestFinished,
this, &DolphinFileMetaDataWidget::metaDataRequestFinished);
connect(m_fileMetaDataWidget, &Baloo::FileMetaDataWidget::urlActivated,
this, &DolphinFileMetaDataWidget::urlActivated);
m_fileMetaDataWidget->setForegroundRole(QPalette::ToolTipText);
m_fileMetaDataWidget->setReadOnly(true);
m_fileMetaDataWidget->setForegroundRole(QPalette::ToolTipText);
m_fileMetaDataWidget->setReadOnly(true);
class KFileItemList;
class QLabel;
class KFileItemList;
class QLabel;
-#ifndef HAVE_BALOO
-class KFileMetaDataWidget;
-#else
namespace Baloo {
class FileMetaDataWidget;
}
namespace Baloo {
class FileMetaDataWidget;
}
/**
* @brief Widget that shows the meta information and a preview of one
/**
* @brief Widget that shows the meta information and a preview of one
private:
QLabel* m_preview;
QLabel* m_name;
private:
QLabel* m_preview;
QLabel* m_name;
-#ifndef HAVE_BALOO
- KFileMetaDataWidget* m_fileMetaDataWidget;
-#else
Baloo::FileMetaDataWidget* m_fileMetaDataWidget;
Baloo::FileMetaDataWidget* m_fileMetaDataWidget;