X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/37deaaef2c39a4c4b410cd0313a55a4072d2b2ff..6f632283d022aaf9d8e2bda81a5409aa36242d4d:/src/panels/information/informationpanelcontent.cpp diff --git a/src/panels/information/informationpanelcontent.cpp b/src/panels/information/informationpanelcontent.cpp index a0c872560..98c012243 100644 --- a/src/panels/information/informationpanelcontent.cpp +++ b/src/panels/information/informationpanelcontent.cpp @@ -1,31 +1,20 @@ -/*************************************************************************** - * Copyright (C) 2009 by Peter Penz * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * - ***************************************************************************/ +/* + * SPDX-FileCopyrightText: 2009 Peter Penz + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ #include "informationpanelcontent.h" #include #include +#include #include #include #include #include #include +#include #include #include @@ -46,11 +35,13 @@ #include #include #include +#include #include #include #include #include #include +#include #include "dolphin_informationpanelsettings.h" #include "phononwidget.h" @@ -107,6 +98,7 @@ InformationPanelContent::InformationPanelContent(QWidget* parent) : m_nameLabel->setTextFormat(Qt::PlainText); m_nameLabel->setAlignment(Qt::AlignHCenter); m_nameLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Fixed); + m_nameLabel->setTextInteractionFlags(Qt::TextSelectableByMouse); const bool previewsShown = InformationPanelSettings::previewsShown(); m_preview->setVisible(previewsShown); @@ -130,14 +122,14 @@ InformationPanelContent::InformationPanelContent(QWidget* parent) : m_metaDataWidget->setConfigurationMode(Baloo::ConfigurationMode::Accept); m_configureButtons->setVisible(false); m_configureLabel->setVisible(false); - emit configurationFinished(); + Q_EMIT configurationFinished(); } ); connect(m_configureButtons, &QDialogButtonBox::rejected, this, [this]() { m_metaDataWidget->setConfigurationMode(Baloo::ConfigurationMode::Cancel); m_configureButtons->setVisible(false); m_configureLabel->setVisible(false); - emit configurationFinished(); + Q_EMIT configurationFinished(); } ); @@ -147,6 +139,7 @@ InformationPanelContent::InformationPanelContent(QWidget* parent) : m_metaDataArea->setFrameShape(QFrame::NoFrame); QWidget* viewport = m_metaDataArea->viewport(); + QScroller::grabGesture(viewport, QScroller::TouchGesture); viewport->installEventFilter(this); layout->addWidget(m_preview); @@ -157,6 +150,8 @@ InformationPanelContent::InformationPanelContent(QWidget* parent) : layout->addWidget(m_metaDataArea); layout->addWidget(m_configureButtons); + grabGesture(Qt::TapAndHoldGesture); + m_placesItemModel = new PlacesItemModel(this); } @@ -192,7 +187,8 @@ void InformationPanelContent::refreshPixmapView() // can be shown within a short timeframe. m_outdatedPreviewTimer->start(); - QStringList plugins = KIO::PreviewJob::availablePlugins(); + const KConfigGroup globalConfig(KSharedConfig::openConfig(), "PreviewSettings"); + const QStringList plugins = globalConfig.readEntry("Plugins", KIO::PreviewJob::defaultPlugins()); m_previewJob = new KIO::PreviewJob(KFileItemList() << m_item, QSize(m_preview->width(), m_preview->height()), &plugins); @@ -236,7 +232,7 @@ void InformationPanelContent::refreshPreview() refreshPixmapView(); const QString mimeType = m_item.mimetype(); - const bool isAnimatedImage = m_preview->isAnimatedImage(itemUrl.toLocalFile()); + const bool isAnimatedImage = m_preview->isAnimatedMimeType(mimeType); m_isVideo = !isAnimatedImage && mimeType.startsWith(QLatin1String("video/")); bool usePhonon = m_isVideo || mimeType.startsWith(QLatin1String("audio/")); @@ -351,6 +347,33 @@ bool InformationPanelContent::eventFilter(QObject* obj, QEvent* event) return QWidget::eventFilter(obj, event); } +bool InformationPanelContent::event(QEvent* event) +{ + if (event->type() == QEvent::Gesture) { + gestureEvent(static_cast(event)); + return true; + } + return QWidget::event(event); +} + +bool InformationPanelContent::gestureEvent(QGestureEvent* event) +{ + if (!underMouse()) { + return false; + } + + QTapAndHoldGesture* tap = static_cast(event->gesture(Qt::TapAndHoldGesture)); + + if (tap) { + if (tap->state() == Qt::GestureFinished) { + Q_EMIT contextMenuRequested(tap->position().toPoint()); + } + event->accept(); + return true; + } + return false; +} + void InformationPanelContent::showIcon(const KFileItem& item) { m_outdatedPreviewTimer->stop(); @@ -371,8 +394,8 @@ void InformationPanelContent::showPreview(const KFileItem& item, // adds a play arrow // compute relative pixel positions - const int zeroX = static_cast(p.width() / 2 - PLAY_ARROW_SIZE / 2 / devicePixelRatio()); - const int zeroY = static_cast(p.height() / 2 - PLAY_ARROW_SIZE / 2 / devicePixelRatio()); + const int zeroX = static_cast((p.width() / 2 - PLAY_ARROW_SIZE / 2) / pixmap.devicePixelRatio()); + const int zeroY = static_cast((p.height() / 2 - PLAY_ARROW_SIZE / 2) / pixmap.devicePixelRatio()); QPolygon arrow; arrow << QPoint(zeroX, zeroY);