fix(filemanager): port file manager to Qt6

main
reionwong 3 weeks ago
parent 361a3db008
commit eac1aafb1d

@ -11,15 +11,16 @@ set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt5 COMPONENTS Core DBus Quick LinguistTools REQUIRED)
find_package(Qt6 COMPONENTS Core DBus Quick LinguistTools REQUIRED)
# find_package(FishUI REQUIRED)
find_package(KF5KIO)
find_package(KF5Solid)
find_package(KF5WindowSystem)
find_package(KF5Config)
find_package(KF6KIO)
find_package(KF6Solid)
find_package(KF6WindowSystem)
find_package(KF6Config)
find_package(KF6XmlGui REQUIRED)
qt5_add_dbus_adaptor(DBUS_SOURCES
qt6_add_dbus_adaptor(DBUS_SOURCES
com.cutefish.FileManager.xml
application.h Application)
@ -76,22 +77,23 @@ add_executable(cutefish-filemanager
target_link_libraries(cutefish-filemanager
PRIVATE
Qt5::Core
Qt5::DBus
Qt5::Quick
KF5::KIOCore
KF5::KIOFileWidgets
KF5::KIOWidgets
KF5::Solid
KF5::WindowSystem
KF5::ConfigCore
Qt6::Core
Qt6::DBus
Qt6::Quick
KF6::KIOCore
KF6::KIOFileWidgets
KF6::KIOWidgets
KF6::Solid
KF6::WindowSystem
KF6::ConfigCore
KF6::XmlGui
# FishUI
)
file(GLOB TS_FILES translations/*.ts)
qt5_add_translation(QM_FILES ${TS_FILES})
qt6_add_translation(QM_FILES ${TS_FILES})
add_custom_target(translations DEPENDS ${QM_FILES} SOURCES ${TS_FILES})
add_dependencies(cutefish-filemanager translations)

@ -28,7 +28,7 @@
#include <QGuiApplication>
#include <QScreen>
#include <KWindowSystem>
#include <KX11Extras>
DesktopView::DesktopView(QScreen *screen, QQuickView *parent)
: QQuickView(parent)
@ -37,8 +37,8 @@ DesktopView::DesktopView(QScreen *screen, QQuickView *parent)
m_screenRect = m_screen->geometry();
this->setFlag(Qt::FramelessWindowHint);
this->setColor(QColor(Qt::transparent));
KWindowSystem::setType(winId(), NET::Desktop);
KWindowSystem::setState(winId(), NET::KeepBelow);
KX11Extras::setType(winId(), NET::Desktop);
KX11Extras::setState(winId(), NET::KeepBelow);
engine()->rootContext()->setContextProperty("desktopView", this);
engine()->rootContext()->setContextProperty("Dock", DockDBusInterface::self());

@ -24,6 +24,7 @@
#include <QQmlContext>
#include <QQmlEngine>
#include <QFileInfo>
#include <QLocale>
#include <QDir>
#include <KIO/CopyJob>
@ -223,9 +224,9 @@ void FilePropertiesDialog::init()
m_size = KIO::convertSize(m_items.first().size());
m_location = info.dir().path();
m_creationTime = info.birthTime().toString(Qt::SystemLocaleLongDate);
m_modifiedTime = info.lastModified().toString(Qt::SystemLocaleLongDate);
m_accessedTime = info.lastRead().toString(Qt::SystemLocaleLongDate);
m_creationTime = QLocale().toString(info.birthTime(), QLocale::LongFormat);
m_modifiedTime = QLocale().toString(info.lastModified(), QLocale::LongFormat);
m_accessedTime = QLocale().toString(info.lastRead(), QLocale::LongFormat);
// m_creationTime = item.time(KFileItem::CreationTime).toString();
// m_modifiedTime = item.time(KFileItem::ModificationTime).toString();

@ -87,8 +87,8 @@ void DeclarativeMimeData::setUrls(const QJsonArray &urls)
{
QList<QUrl> urlList;
urlList.reserve(urls.size());
for (const QVariant &varUrl : urls) {
urlList << varUrl.toUrl();
for (const QJsonValue &varUrl : urls) {
urlList << varUrl.toVariant().toUrl();
}
QMimeData::setUrls(urlList);
Q_EMIT urlsChanged();

@ -1,4 +1,5 @@
#include "datehelper.h"
#include <QLocale>
#include <QDateTime>
DateHelper::DateHelper(QObject *parent) : QObject(parent)
@ -30,5 +31,5 @@ QString DateHelper::friendlyTime(const QDateTime &time)
else if (days <= 10)
return tr("%1 days ago").arg(days);
return time.toString(Qt::DefaultLocaleShortDate);
return QLocale().toString(time, QLocale::ShortFormat);
}

@ -27,13 +27,3 @@ DirLister::DirLister(QObject *parent)
DirLister::~DirLister()
{
}
void DirLister::handleError(KIO::Job *job)
{
if (!autoErrorHandlingEnabled()) {
emit error(job->errorString());
return;
}
KDirLister::handleError(job);
}

@ -34,8 +34,6 @@ public:
Q_SIGNALS:
void error(const QString &string);
protected:
void handleError(KIO::Job *job) override;
};
#endif // DIRLISTER_H

@ -46,7 +46,6 @@
#include <QDBusInterface>
#include <QStandardPaths>
#include <QApplication>
#include <QDesktopWidget>
#include <QMimeDatabase>
#include <QMimeData>
#include <QClipboard>
@ -65,11 +64,13 @@
// KIO
#include <KIO/CopyJob>
#include <KIO/Job>
#include <KIO/MkdirJob>
#include <KIO/PreviewJob>
#include <KIO/DeleteJob>
#include <KIO/DropJob>
#include <KIO/FileUndoManager>
#include <KIO/JobUiDelegate>
#include <KIO/JobUiDelegateFactory>
#include <KIO/Paste>
#include <KIO/PasteJob>
#include <KIO/RestoreJob>
@ -118,9 +119,9 @@ FolderModel::FolderModel(QObject *parent)
m_dirLister = new DirLister(this);
m_dirLister->setDelayedMimeTypes(true);
m_dirLister->setAutoErrorHandlingEnabled(false, nullptr);
m_dirLister->setAutoErrorHandlingEnabled(false);
m_dirLister->setAutoUpdate(true);
m_dirLister->setShowingDotFiles(m_showHiddenFiles);
m_dirLister->setShowHiddenFiles(m_showHiddenFiles);
// connect(dirLister, &DirLister::error, this, &FolderModel::notification);
connect(m_dirLister, &KCoreDirLister::started, this, std::bind(&FolderModel::setStatus, this, Status::Listing));
@ -542,10 +543,7 @@ void FolderModel::setFilterPattern(const QString &pattern)
m_regExps.reserve(patterns.count());
foreach (const QString &pattern, patterns) {
QRegExp rx(pattern);
rx.setPatternSyntax(QRegExp::Wildcard);
rx.setCaseSensitivity(Qt::CaseInsensitive);
m_regExps.append(rx);
m_regExps.append(QRegularExpression::fromWildcard(pattern, Qt::CaseInsensitive));
}
invalidateFilterIfComplete();
@ -736,7 +734,7 @@ void FolderModel::refresh()
void FolderModel::undo()
{
if (KIO::FileUndoManager::self()->undoAvailable()) {
if (KIO::FileUndoManager::self()->isUndoAvailable()) {
KIO::FileUndoManager::self()->undo();
}
}
@ -1108,13 +1106,15 @@ void FolderModel::moveSelectedToTrash()
}
const QList<QUrl> urls = selectedUrls();
KIO::JobUiDelegate uiDelegate;
KJobUiDelegate *baseUiDelegate = KIO::createDefaultJobUiDelegate(KJobUiDelegate::AutoHandlingDisabled, nullptr);
auto *uiDelegate = dynamic_cast<KIO::JobUiDelegate *>(baseUiDelegate);
if (uiDelegate.askDeleteConfirmation(urls, KIO::JobUiDelegate::Trash, KIO::JobUiDelegate::DefaultConfirmation)) {
if (uiDelegate && uiDelegate->askDeleteConfirmation(urls, KIO::JobUiDelegate::Trash, KIO::JobUiDelegate::DefaultConfirmation)) {
KIO::Job *job = KIO::trash(urls);
job->uiDelegate()->setAutoErrorHandlingEnabled(true);
KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Trash, urls, QUrl(QStringLiteral("trash:/")), job);
}
delete baseUiDelegate;
}
void FolderModel::emptyTrash()
@ -1694,9 +1694,9 @@ bool FolderModel::matchPattern(const KFileItem &item) const
}
const QString name = item.name();
QListIterator<QRegExp> i(m_regExps);
QListIterator<QRegularExpression> i(m_regExps);
while (i.hasNext()) {
if (i.next().exactMatch(name)) {
if (i.next().match(name).hasMatch()) {
return true;
}
}
@ -1714,7 +1714,7 @@ void FolderModel::setShowHiddenFiles(bool showHiddenFiles)
if (m_showHiddenFiles != showHiddenFiles) {
m_showHiddenFiles = showHiddenFiles;
m_dirLister->setShowingDotFiles(m_showHiddenFiles);
m_dirLister->setShowHiddenFiles(m_showHiddenFiles);
m_dirLister->emitChanges();
QSettings settings("cutefishos", qApp->applicationName());

@ -30,6 +30,7 @@
#include "../mimetype/mimeappmanager.h"
#include <QSortFilterProxyModel>
#include <QRegularExpression>
#include <QItemSelectionModel>
#include <QQmlParserStatus>
#include <QQuickItem>
@ -300,7 +301,7 @@ private:
QString m_filterPattern;
bool m_filterPatternMatchAll;
QSet<QString> m_mimeSet;
QList<QRegExp> m_regExps;
QList<QRegularExpression> m_regExps;
bool m_complete;
bool m_isDesktop;

@ -21,7 +21,7 @@ import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import QtQuick.Window 2.12
import QtGraphicalEffects 1.0
import Qt5Compat.GraphicalEffects
import Cutefish.FileManager 1.0 as FM
import FishUI 1.0 as FishUI

@ -2,7 +2,7 @@ import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import QtQuick.Window 2.12
import QtGraphicalEffects 1.0
import Qt5Compat.GraphicalEffects
import Cutefish.FileManager 1.0 as FM
import FishUI 1.0 as FishUI

@ -20,7 +20,7 @@
import QtQuick 2.12
import QtQuick.Controls 2.4
import QtQuick.Layouts 1.3
import QtGraphicalEffects 1.0
import Qt5Compat.GraphicalEffects
import FishUI 1.0 as FishUI
Item {

@ -20,7 +20,7 @@
import QtQuick 2.12
import QtQuick.Layouts 1.12
import QtQuick.Controls 2.12
import QtGraphicalEffects 1.0
import Qt5Compat.GraphicalEffects
import Cutefish.FileManager 1.0
import FishUI 1.0 as FishUI

@ -20,7 +20,7 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import QtGraphicalEffects 1.0
import Qt5Compat.GraphicalEffects
import FishUI 1.0 as FishUI
import Cutefish.FileManager 1.0

@ -20,7 +20,7 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import QtGraphicalEffects 1.0
import Qt5Compat.GraphicalEffects
import Qt.labs.platform 1.0
import Cutefish.FileManager 1.0 as FM

@ -19,7 +19,7 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtGraphicalEffects 1.0
import Qt5Compat.GraphicalEffects
import Cutefish.FileManager 1.0
import FishUI 1.0 as FishUI

@ -21,7 +21,7 @@ import QtQuick 2.12
import QtQuick.Layouts 1.12
import QtQuick.Controls 2.12
import QtQuick.Window 2.12
import QtGraphicalEffects 1.0
import Qt5Compat.GraphicalEffects
import FishUI 1.0 as FishUI
import Cutefish.FileManager 1.0

@ -123,7 +123,7 @@ QString ThumbnailCache::requestThumbnail(const QString &filePath, const QSize &r
md5.addData(QString::number(width).toStdString().c_str());
md5.addData(QString::number(height).toStdString().c_str());
// Time
md5.addData(QString::number(info.lastModified().toTime_t()).toStdString().c_str());
md5.addData(QByteArray::number(info.lastModified().toSecsSinceEpoch()));
QString thumbnailsName = QString::fromLatin1(md5.result().toHex()) + QLatin1String(".png");
QString thumbnailsPath = m_thumbnailsDir + thumbDir + thumbnailsName;

@ -71,7 +71,7 @@ void RubberBand::setColor(QColor color)
}
}
void RubberBand::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
void RubberBand::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry)
{
Q_UNUSED(oldGeometry);
@ -79,5 +79,5 @@ void RubberBand::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeo
update();
QQuickItem::geometryChanged(newGeometry, oldGeometry);
QQuickItem::geometryChange(newGeometry, oldGeometry);
}

@ -42,7 +42,7 @@ signals:
void colorChanged();
protected:
void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override;
private:
QRectF m_geometry;

Loading…
Cancel
Save