From 0d5fd0fddbd88b518426355dde9d2a23640aa882 Mon Sep 17 00:00:00 2001 From: houchengqiu Date: Fri, 26 May 2023 18:11:38 +0800 Subject: [PATCH 1/4] =?UTF-8?q?chore:=20url=E8=B7=AF=E5=BE=84=E8=BD=AC?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E8=B7=AF=E5=BE=84=E6=95=B4=E6=94=B9=EF=BC=8C?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E4=BD=BF=E7=94=A8localPath=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit url路径转本地路径整改,统一使用localPath接口处理 Log: url路径转本地路径整改,统一使用localPath接口处理 --- .../CollecttionView/DayCollection.qml | 2 +- src/src/albumControl.cpp | 146 +++++------------- src/src/albumControl.h | 13 +- src/src/filecontrol.cpp | 102 +++++------- src/src/imageengine/imageenginethread.cpp | 4 +- src/src/imageengine/movieservice.cpp | 5 +- src/src/thumbnailload.cpp | 40 ++--- src/src/unionimage/unionimage.cpp | 10 ++ src/src/unionimage/unionimage.h | 8 + 9 files changed, 123 insertions(+), 207 deletions(-) diff --git a/src/qml/ThumbnailImageView/CollecttionView/DayCollection.qml b/src/qml/ThumbnailImageView/CollecttionView/DayCollection.qml index 5aeb9132f..99a00e619 100644 --- a/src/qml/ThumbnailImageView/CollecttionView/DayCollection.qml +++ b/src/qml/ThumbnailImageView/CollecttionView/DayCollection.qml @@ -544,7 +544,7 @@ Item { var paths = albumControl.getDayPaths(m_dayToken) viewModel.clear() for (var i = 0;i !== paths.length;++i) { - viewModel.append({url: paths[i], filePath: albumControl.localPath(paths[i])}) + viewModel.append({url: paths[i], filePath: albumControl.url2localPath(paths[i])}) //顺便统计下图片和视频的数量 if(fileControl.isImage(paths[i])) { diff --git a/src/src/albumControl.cpp b/src/src/albumControl.cpp index 6333b24ac..7f05d9522 100644 --- a/src/src/albumControl.cpp +++ b/src/src/albumControl.cpp @@ -1294,9 +1294,9 @@ int AlbumControl::manhattanLength(QPoint p1, QPoint p2) return point.manhattanLength(); } -QString AlbumControl::localPath(QString url) +QString AlbumControl::url2localPath(QUrl url) { - return QUrl(url).toLocalFile(); + return LibUnionImage_NameSpace::localPath(url); } bool AlbumControl::checkRepeatUrls(QStringList imported, QStringList urls, bool bNotify) @@ -1304,7 +1304,7 @@ bool AlbumControl::checkRepeatUrls(QStringList imported, QStringList urls, bool bool bRet = false; int noReadCount = 0; //记录已存在于相册中的数量,若全部存在,则不进行导入操作 for (QString url : urls) { - QFileInfo srcfi(QUrl(url).toLocalFile()); + QFileInfo srcfi(url2localPath(url)); if (!srcfi.exists()) { //当前文件不存在 noReadCount++; continue; @@ -1464,9 +1464,8 @@ QVariantMap AlbumControl::getTrashAlbumInfos(const int &filterType) bool AlbumControl::addCustomAlbumInfos(int albumId, const QList &urls) { QStringList localpaths; - DBImgInfoList dbInfos; for (QUrl path : urls) { - localpaths << path.toLocalFile(); + localpaths << url2localPath(path); } QStringList curAlbumImgPathList = getAllUrlPaths(); for (QString imagePath : localpaths) { @@ -1499,7 +1498,7 @@ bool AlbumControl::addCustomAlbumInfos(int albumId, const QList &urls) bool bRet = false; QStringList paths; for (QUrl url : urls) { - paths << url.toLocalFile(); + paths << url2localPath(url); } AlbumDBType atype; if (albumId == 0) { @@ -1530,7 +1529,7 @@ void AlbumControl::insertTrash(const QList< QUrl > &paths) { QStringList tmpList; for (QUrl url : paths) { - QString imagePath = url.toLocalFile(); + QString imagePath = url2localPath(url); QFileInfo info(imagePath); //判断文件是否可写 if (info.isWritable()) { @@ -1566,7 +1565,7 @@ void AlbumControl::removeTrashImgInfos(const QList< QUrl > &paths) { QStringList localPaths ; for (QUrl path : paths) { - localPaths << path.toLocalFile(); + localPaths << url2localPath(path); } DBManager::instance()->removeTrashImgInfos(localPaths); } @@ -1576,7 +1575,7 @@ QStringList AlbumControl::recoveryImgFromTrash(const QStringList &paths) QStringList localPaths; for (QUrl path : paths) { if (path.isLocalFile()) - localPaths << path.toLocalFile(); + localPaths << url2localPath(path); else localPaths << path.toString(); } @@ -1588,7 +1587,7 @@ void AlbumControl::deleteImgFromTrash(const QStringList &paths) QStringList localPaths ; for (QUrl path : paths) { if (path.isLocalFile()) - localPaths << path.toLocalFile(); + localPaths << url2localPath(path); else localPaths << path.toString(); } @@ -1599,7 +1598,7 @@ void AlbumControl::insertCollection(const QList< QUrl > &paths) { QStringList tmpList; for (QUrl url : paths) { - tmpList << url.toLocalFile(); + tmpList << url2localPath(url); } DBImgInfoList infos; for (QString path : tmpList) { @@ -1828,82 +1827,13 @@ bool AlbumControl::canAddToCustomAlbum(const int &albumId, const QStringList &pa bool AlbumControl::photoHaveFavorited(const QString &path) { - bool bRet = DBManager::instance()->isImgExistInAlbum(DBManager::SpUID::u_Favorite, QUrl(path).toLocalFile()); + bool bRet = DBManager::instance()->isImgExistInAlbum(DBManager::SpUID::u_Favorite, url2localPath(path)); return bRet; } bool AlbumControl::photoHaveAddedToCustomAlbum(int albumId, const QString &path) { - return DBManager::instance()->isImgExistInAlbum(albumId, QUrl(path).toLocalFile()); -} - -QVariantMap AlbumControl::getPathsInfoMap(const QString &path) -{ - QVariantMap reMap; - QString localPath = QUrl(path).toLocalFile(); - DBImgInfo info = DBManager::instance()->getInfoByPath(localPath); - reMap.insert("url", "file://" + info.filePath); - reMap.insert("filePath", info.filePath); - reMap.insert("pathHash", info.pathHash); - reMap.insert("remainDays", info.remainDays); - if (info.itemType == ItemTypePic) { - reMap.insert("itemType", "pciture"); - } else if (info.itemType == ItemTypeVideo) { - reMap.insert("itemType", "video"); - } else { - reMap.insert("itemType", "other"); - } - return reMap; -} - -QStringList AlbumControl::getPathsInfoList(const QString &path) -{ - QStringList reList; - QString localPath = QUrl(path).toLocalFile(); - DBImgInfo info = DBManager::instance()->getInfoByPath(localPath); - reList << "file://" + info.filePath; - reList << info.filePath ; - reList << info.pathHash ; - reList << QString::number(info.remainDays); - if (info.itemType == ItemTypePic) { - reList << "pciture"; - } else if (info.itemType == ItemTypeVideo) { - reList << "video"; - } else { - reList << "other"; - } - return reList; -} - -QString AlbumControl::getPathsInfoData(const QString &path, const QString &key) -{ - QString value; - QString localPath = QUrl(path).toLocalFile(); - DBImgInfo info = DBManager::instance()->getInfoByPath(localPath); - if (key.contains("url")) { - value = "file://" + info.filePath; - } else if (key.contains("filePath")) { - value = info.filePath; - } else if (key.contains("pathHash")) { - value = info.pathHash; - } else if (key.contains("remainDays")) { - value = QString::number(info.remainDays); - } else if (key.contains("itemType")) { - if (info.itemType == ItemTypePic) { - value = "pciture"; - } else if (info.itemType == ItemTypeVideo) { - value = "video"; - } else { - value = "other"; - } - } else if (key.contains("time")) { - value = info.time.toString("yyyy.MM.dd.hh.mm"); - } else if (key.contains("changeTime")) { - value = info.changeTime.toString("yyyy.MM.dd.hh.mm"); - } else if (key.contains("importTime")) { - value = info.importTime.toString("yyyy.MM.dd.hh.mm"); - } - return value; + return DBManager::instance()->isImgExistInAlbum(albumId, url2localPath(path)); } int AlbumControl::getCustomAlbumInfoConut(const int &albumId, const int &filterType) @@ -1969,7 +1899,7 @@ void AlbumControl::removeFromAlbum(int UID, const QStringList &paths) QStringList localPaths ; for (QString path : paths) { - localPaths << QUrl(path).toLocalFile(); + localPaths << url2localPath(path); } DBManager::instance()->removeCustomAlbumIdByPaths(UID, localPaths); @@ -1985,7 +1915,7 @@ bool AlbumControl::insertIntoAlbum(int UID, const QStringList &paths) } QStringList localPaths ; for (QString path : paths) { - localPaths << QUrl(path).toLocalFile(); + localPaths << url2localPath(path); } DBManager::instance()->addCustomAlbumIdByPaths(UID, localPaths); @@ -2001,7 +1931,7 @@ bool AlbumControl::insertImportIntoAlbum(int UID, const QStringList &paths) } QStringList localPaths ; for (QString path : paths) { - localPaths << QUrl(path).toLocalFile(); + localPaths << url2localPath(path); } return DBManager::instance()->insertIntoAlbum(UID, localPaths, atype); } @@ -2055,7 +1985,7 @@ DBImgInfoList AlbumControl::searchPicFromAlbum2(int UID, const QString &keywords QStringList AlbumControl::imageCanExportFormat(const QString &path) { - QString localPath = QUrl(path).toLocalFile(); + QString localPath = url2localPath(path); QStringList formats; formats << "jpg"; formats << "jpeg"; @@ -2076,7 +2006,7 @@ QStringList AlbumControl::imageCanExportFormat(const QString &path) bool AlbumControl::saveAsImage(const QString &path, const QString &saveName, int index, const QString &fileFormat, int pictureQuality, const QString &saveFolder) { bool bRet = false; - QString localPath = QUrl(path).toLocalFile(); + QString localPath = url2localPath(path); QString savePath; QString finalSaveFolder; switch (index) { @@ -2164,7 +2094,7 @@ bool AlbumControl::getFolders(const QStringList &paths) } QStringList localPaths; for (QString path : paths) { - localPaths << QUrl(path).toLocalFile(); + localPaths << url2localPath(path); } if (!fileDir.isEmpty()) { @@ -2203,7 +2133,7 @@ bool AlbumControl::exportFolders(const QStringList &paths, const QString &dir) } QStringList localPaths; for (QString path : paths) { - localPaths << QUrl(path).toLocalFile(); + localPaths << url2localPath(path); } if (!fileDir.isEmpty()) { @@ -2235,7 +2165,7 @@ bool AlbumControl::exportFolders(const QStringList &paths, const QString &dir) void AlbumControl::openDeepinMovie(const QString &path) { - QString localPath = QUrl(path).toLocalFile(); + QString localPath = url2localPath(path); QDBusMessage message = QDBusMessage::createMethodCall("com.deepin.movie", "/", "com.deepin.movie", @@ -2254,8 +2184,8 @@ void AlbumControl::openDeepinMovie(const QString &path) QString AlbumControl::getFileTime(const QString &path1, const QString &path2) { - auto time1 = DBManager::instance()->getFileImportTime(QUrl(path1).toLocalFile()); - auto time2 = DBManager::instance()->getFileImportTime(QUrl(path2).toLocalFile()); + auto time1 = DBManager::instance()->getFileImportTime(url2localPath(path1)); + auto time2 = DBManager::instance()->getFileImportTime(url2localPath(path2)); auto str1 = time1.toString("yyyy/MM/dd"); auto str2 = time2.toString("yyyy/MM/dd"); @@ -2271,7 +2201,7 @@ QString AlbumControl::getMovieInfo(const QString key, const QString &path) { QString value = ""; if (!path.isEmpty()) { - QString localPath = QUrl(path).toLocalFile(); + QString localPath = url2localPath(path); if (!m_movieInfos.keys().contains(localPath)) { MovieInfo movieInfo = MovieService::instance()->getMovieInfo(QUrl::fromLocalFile(localPath)); //对视频信息缓存 @@ -2381,12 +2311,12 @@ QVariantMap AlbumControl::getDeviceAlbumInfos(const QString &devicePath, const i QString title = devicePath; for (QString path : list) { QVariantMap tmpMap; - if (LibUnionImage_NameSpace::isImage(QUrl(path).toLocalFile())) { + if (LibUnionImage_NameSpace::isImage(url2localPath(path))) { if (filterType == 2) { continue ; } tmpMap.insert("itemType", "pciture"); - } else if (LibUnionImage_NameSpace::isVideo(QUrl(path).toLocalFile())) { + } else if (LibUnionImage_NameSpace::isVideo(url2localPath(path))) { if (filterType == 1) { continue ; } @@ -2395,7 +2325,7 @@ QVariantMap AlbumControl::getDeviceAlbumInfos(const QString &devicePath, const i tmpMap.insert("itemType", "other"); } tmpMap.insert("url", path); - tmpMap.insert("filePath", QUrl(path).toLocalFile()); + tmpMap.insert("filePath", url2localPath(path)); tmpMap.insert("pathHash", ""); tmpMap.insert("remainDays", ""); listVar << tmpMap; @@ -2413,12 +2343,12 @@ DBImgInfoList AlbumControl::getDeviceAlbumInfos2(const QString &devicePath, cons QStringList list = getDevicePicPaths(devicePath); for (QString path : list) { DBImgInfo info; - if (LibUnionImage_NameSpace::isImage(QUrl(path).toLocalFile())) { + if (LibUnionImage_NameSpace::isImage(url2localPath(path))) { if (filterType == 2) { continue ; } info.itemType = ItemTypePic; - } else if (LibUnionImage_NameSpace::isVideo(QUrl(path).toLocalFile())) { + } else if (LibUnionImage_NameSpace::isVideo(url2localPath(path))) { if (filterType == 1) { continue ; } @@ -2426,7 +2356,7 @@ DBImgInfoList AlbumControl::getDeviceAlbumInfos2(const QString &devicePath, cons } else { info.itemType = ItemTypeNull; } - info.filePath = QUrl(path).toLocalFile(); + info.filePath = url2localPath(path); info.pathHash = ""; info.remainDays = 0; infoList << info; @@ -2441,11 +2371,11 @@ int AlbumControl::getDeviceAlbumInfoConut(const QString &devicePath, const int & QStringList list = getDevicePicPaths(devicePath); for (QString path : list) { QVariantMap tmpMap; - if (LibUnionImage_NameSpace::isImage(QUrl(path).toLocalFile())) { + if (LibUnionImage_NameSpace::isImage(url2localPath(path))) { if (filterType == 2) { continue ; } - } else if (LibUnionImage_NameSpace::isVideo(QUrl(path).toLocalFile())) { + } else if (LibUnionImage_NameSpace::isVideo(url2localPath(path))) { if (filterType == 1) { continue ; } @@ -2462,9 +2392,9 @@ QList AlbumControl::getPicVideoCountFromPaths(const QStringList &paths) QList ret; for (QString path : paths) { - if (LibUnionImage_NameSpace::isImage(QUrl(path).toLocalFile())) { + if (LibUnionImage_NameSpace::isImage(url2localPath(path))) { countPic++; - } else if (LibUnionImage_NameSpace::isVideo(QUrl(path).toLocalFile())) { + } else if (LibUnionImage_NameSpace::isVideo(url2localPath(path))) { countVideo++; } } @@ -2482,7 +2412,7 @@ void AlbumControl::importFromMountDevice(const QStringList &paths, const int &in QStringList localPaths; for (QString path : paths) { - localPaths << QUrl(path).toLocalFile(); + localPaths << url2localPath(path); } QStringList newPathList; DBImgInfoList dbInfos; @@ -2608,7 +2538,7 @@ void AlbumControl::createNewCustomAutoImportAlbum(const QString &path) QString AlbumControl::getVideoTime(const QString &path) { - if (!LibUnionImage_NameSpace::isVideo(QUrl(path).toLocalFile())) + if (!LibUnionImage_NameSpace::isVideo(url2localPath(path))) return "00:00"; //采用线程执行导入 @@ -2648,15 +2578,15 @@ void AlbumControl::onNewAPPOpen(qint64 pid, const QStringList &arguments) //BUG#79815,添加文件URL解析(BUG是平板上的,为防止UOS的其它个别版本也改成传URL,干脆直接全部支持) auto urlPath = QUrl(qpath); if (urlPath.scheme() == "file") { - qpath = urlPath.toLocalFile(); + qpath = url2localPath(urlPath); } if (QUrl::fromUserInput(qpath).isLocalFile()) { qpath = "file://" + qpath; } - if (LibUnionImage_NameSpace::isImage(QUrl(qpath).toLocalFile()) - || LibUnionImage_NameSpace::isVideo(QUrl(qpath).toLocalFile())) { + if (LibUnionImage_NameSpace::isImage(url2localPath(qpath)) + || LibUnionImage_NameSpace::isVideo(url2localPath(qpath))) { validPaths.append(qpath); } paths.append(qpath); diff --git a/src/src/albumControl.h b/src/src/albumControl.h index fc7bd2142..5861f1ecd 100644 --- a/src/src/albumControl.h +++ b/src/src/albumControl.h @@ -170,15 +170,6 @@ class AlbumControl : public QObject //判断所传图片列表是否可添加到自定义相册 Q_INVOKABLE bool canAddToCustomAlbum(const int &albumId, const QStringList &pathList); - //一张图片的数据,返回Map - Q_INVOKABLE QVariantMap getPathsInfoMap(const QString &path); - - //一张图片的数据,返回List - Q_INVOKABLE QStringList getPathsInfoList(const QString &path); - - //一张图片的数据,返回Data - Q_INVOKABLE QString getPathsInfoData(const QString &path, const QString &key); - //获得自定义相册图片count 0:我的收藏 1:截图录屏 2:相机 3:画板 4-~:其他自定义,filterType 0:全部 1:图片 2:视频 Q_INVOKABLE int getCustomAlbumInfoConut(const int &albumId, const int &filterType = 0); @@ -322,8 +313,8 @@ class AlbumControl : public QObject // 获取两个点的距离 Q_INVOKABLE int manhattanLength(QPoint p1, QPoint p2); - // url路径转为本地路径 - Q_INVOKABLE QString localPath(QString url); + // QUrl路径转为本地路径 + Q_INVOKABLE QString url2localPath(QUrl url); // 检查是否有重复路径 Q_INVOKABLE bool checkRepeatUrls(QStringList imported, QStringList urls, bool bNotify = true); diff --git a/src/src/filecontrol.cpp b/src/src/filecontrol.cpp index d2f604c3e..bd9399856 100644 --- a/src/src/filecontrol.cpp +++ b/src/src/filecontrol.cpp @@ -130,13 +130,13 @@ QString FileControl::getDirPath(const QString &path) bool FileControl::pathExists(const QString &path) { QUrl url(path); - return QFileInfo::exists(url.toLocalFile()); + return QFileInfo::exists(LibUnionImage_NameSpace::localPath(url)); } bool FileControl::haveImage(const QVariantList &urls) { for (auto &url : urls) { - if (!url.isNull() && isImage(QUrl(url.toString()).toLocalFile())) { + if (!url.isNull() && isImage(LibUnionImage_NameSpace::localPath(url.toString()))) { return true; } } @@ -160,7 +160,7 @@ QStringList FileControl::getDirImagePath(const QString &path) } QStringList image_list; - QString DirPath = QFileInfo(QUrl(path).toLocalFile()).dir().path(); + QString DirPath = QFileInfo(LibUnionImage_NameSpace::localPath(path)).dir().path(); QDir _dirinit(DirPath); QFileInfoList m_AllPath = _dirinit.entryInfoList(QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot); @@ -199,15 +199,8 @@ QStringList FileControl::renameOne(const QStringList &pathlist, const QString & QString FileControl::getNamePath(const QString &oldPath, const QString &newName) { - QString old = oldPath; - QString now = newName; - - if (old.startsWith("file://")) { - old = QUrl(old).toLocalFile(); - } - if (now.startsWith("file://")) { - now = QUrl(now).toLocalFile(); - } + QString old = LibUnionImage_NameSpace::localPath(oldPath); + QString now = LibUnionImage_NameSpace::localPath(newName); QFileInfo info(oldPath); QString path = info.path(); @@ -219,18 +212,14 @@ QString FileControl::getNamePath(const QString &oldPath, const QString &newName bool FileControl::isImage(const QString &path) { // 将传入path路径统一为绝对路径 - QString tmpPath = path; - if (path.startsWith("file://")) - tmpPath = QUrl(path).toLocalFile(); + QString tmpPath = LibUnionImage_NameSpace::localPath(path); return LibUnionImage_NameSpace::isImage(tmpPath); } bool FileControl::isVideo(const QString &path) { // 将传入path路径统一为绝对路径 - QString tmpPath = path; - if (path.startsWith("file://")) - tmpPath = QUrl(path).toLocalFile(); + QString tmpPath = LibUnionImage_NameSpace::localPath(path); return LibUnionImage_NameSpace::isVideo(tmpPath); } @@ -373,7 +362,7 @@ bool FileControl::displayinFileManager(const QString &path) void FileControl::copyImage(const QString &path) { slotRotatePixCurrent(); - QString localPath = QUrl(path).toLocalFile(); + QString localPath = LibUnionImage_NameSpace::localPath(path); QClipboard *cb = qApp->clipboard(); @@ -453,7 +442,7 @@ bool FileControl::isRotatable(const QStringList &pathList) bool FileControl::isRotatable(const QString &path) { bool bRet = false; - QString localPath = QUrl(path).toLocalFile(); + QString localPath = LibUnionImage_NameSpace::localPath(path); QFileInfo info(localPath); if (!info.isFile() || !info.exists() || !info.isWritable() || !info.isReadable()) { bRet = false; @@ -465,7 +454,7 @@ bool FileControl::isRotatable(const QString &path) bool FileControl::isCanWrite(const QString &path) { - QString localPath = QUrl(path).toLocalFile(); + QString localPath = LibUnionImage_NameSpace::localPath(path); QFileInfo info(localPath); bool bRet = info.isWritable() && QFileInfo(info.dir(), info.dir().path()).isWritable(); //是否可写 return bRet; @@ -488,8 +477,7 @@ bool FileControl::isCanDelete(const QString &path) { bool bRet = false; bool isAlbum = false; - QUrl url(path); - QString localPath = url.isLocalFile() ? url.toLocalFile() : path; + QString localPath = LibUnionImage_NameSpace::localPath(path); QFileInfo info(localPath); bool isWritable = info.isWritable() && QFileInfo(info.dir(), info.dir().path()).isWritable(); //是否可写 bool isReadable = info.isReadable() ; //是否可读 @@ -522,20 +510,20 @@ bool FileControl::isCanPrint(const QStringList &pathList) bool FileControl::isCanPrint(const QString &path) { - QFileInfo info(QUrl(path).toLocalFile()); + QFileInfo info(LibUnionImage_NameSpace::localPath(path)); return isImage(path) && info.isReadable(); } bool FileControl::isFile(const QString &path) { - QString localPath = QUrl(path).toLocalFile(); + QString localPath = LibUnionImage_NameSpace::localPath(path); return QFileInfo(localPath).isFile(); } void FileControl::ocrImage(const QString &path) { slotRotatePixCurrent(); - QString localPath = QUrl(path).toLocalFile(); + QString localPath = LibUnionImage_NameSpace::localPath(path); m_ocrInterface->openFile(localPath); } @@ -546,7 +534,7 @@ QStringList FileControl::parseCommandlineGetPaths() QString filepath = ""; QStringList arguments = QCoreApplication::arguments(); for (int i = 1; i < arguments.size(); ++i) { - QString path = UrlInfo(arguments[i]).toLocalFile(); + QString path = LibUnionImage_NameSpace::localPath(UrlInfo(arguments[i])); if (QFileInfo(path).isFile()) { QString filepath = QUrl::fromLocalFile(path).toString(); if (isImage(filepath) || isVideo(filepath)) { @@ -565,7 +553,7 @@ QStringList FileControl::parseCommandlineGetPaths() bool FileControl::isDynamicImage(const QString &path) { bool bRet = false; - QString localPath = QUrl(path).toLocalFile(); + QString localPath = LibUnionImage_NameSpace::localPath(path); imageViewerSpace::ImageType type = LibUnionImage_NameSpace::getImageType(localPath); if (imageViewerSpace::ImageTypeDynamic == type) { @@ -577,7 +565,7 @@ bool FileControl::isDynamicImage(const QString &path) bool FileControl::isNormalStaticImage(const QString &path) { bool bRet = false; - QString localPath = QUrl(path).toLocalFile(); + QString localPath = LibUnionImage_NameSpace::localPath(path); imageViewerSpace::ImageType type = LibUnionImage_NameSpace::getImageType(localPath); if (imageViewerSpace::ImageTypeStatic == type || imageViewerSpace::ImageTypeMulti == type) { @@ -601,7 +589,7 @@ bool FileControl::rotateFile(const QStringList &pathList, const int &rotateAngel bool FileControl::rotateFile(const QString &path, const int &rotateAngel) { bool bRet = true; - QString localPath = QUrl(path).toLocalFile(); + QString localPath = LibUnionImage_NameSpace::localPath(path); if (m_currentPath != localPath) { slotRotatePixCurrent(true); m_currentPath = localPath; @@ -662,11 +650,7 @@ int FileControl::currentAngle() QString FileControl::slotGetFileName(const QString &path) { - QString tmppath = path; - - if (path.startsWith("file://")) { - tmppath = QUrl(tmppath).toLocalFile(); - } + QString tmppath = LibUnionImage_NameSpace::localPath(path); QFileInfo info(tmppath); return info.completeBaseName(); @@ -674,11 +658,7 @@ QString FileControl::slotGetFileName(const QString &path) QString FileControl::slotGetFileNameSuffix(const QString &path) { - QString tmppath = path; - - if (path.startsWith("file://")) { - tmppath = QUrl(tmppath).toLocalFile(); - } + QString tmppath = LibUnionImage_NameSpace::localPath(path); QFileInfo info(tmppath); return info.fileName(); @@ -686,12 +666,12 @@ QString FileControl::slotGetFileNameSuffix(const QString &path) QString FileControl::slotGetFileLocalPath(const QString &path) { - return QUrl(path).toLocalFile(); + return LibUnionImage_NameSpace::localPath(path); } QString FileControl::slotGetInfo(const QString &key, const QString &path) { - QString localpath = QUrl(path).toLocalFile(); + QString localpath = LibUnionImage_NameSpace::localPath(path); if (localpath != m_currentPath) { setCurrentImage(path); } @@ -706,7 +686,7 @@ QString FileControl::slotGetInfo(const QString &key, const QString &path) bool FileControl::slotFileReName(const QString &name, const QString &filepath, bool isSuffix) { - QString localPath = QUrl(filepath).toLocalFile(); + QString localPath = LibUnionImage_NameSpace::localPath(filepath); QFile file(localPath); if (file.exists()) { QFileInfo info(localPath); @@ -733,7 +713,7 @@ QString FileControl::slotFileSuffix(const QString &path, bool ret) { QString returnSuffix = ""; - QString localPath = QUrl(path).toLocalFile(); + QString localPath = LibUnionImage_NameSpace::localPath(path); if (!path.isEmpty() && QFile::exists(localPath)) { QString tmppath = path; QFileInfo info(tmppath); @@ -749,7 +729,7 @@ QString FileControl::slotFileSuffix(const QString &path, bool ret) void FileControl::setCurrentImage(const QString &path) { - QString localPath = QUrl(path).toLocalFile(); + QString localPath = LibUnionImage_NameSpace::localPath(path); if (m_currentReader) { delete m_currentReader; @@ -835,7 +815,7 @@ double FileControl::getFitWindowScale(double WindowWidth, double WindowHeight) bool FileControl::isShowToolTip(const QString &oldPath, const QString &name) { bool bRet = false; - QString path = QUrl(oldPath).toLocalFile(); + QString path = LibUnionImage_NameSpace::localPath(oldPath); QFileInfo fileinfo(path); QString DirPath = fileinfo.path(); QString filename = fileinfo.completeBaseName(); @@ -856,7 +836,7 @@ bool FileControl::isShowToolTip(const QString &oldPath, const QString &name) void FileControl::showPrintDialog(const QString &path) { - QString oldPath = QUrl(path).toLocalFile(); + QString oldPath = LibUnionImage_NameSpace::localPath(path); PrintHelper::getIntance()->showPrintDialog(QStringList(oldPath)); } @@ -864,7 +844,7 @@ void FileControl::showPrintDialog(const QStringList &paths) { QStringList localPaths ; for (QString path : paths) { - localPaths << QUrl(path).toLocalFile(); + localPaths << LibUnionImage_NameSpace::localPath(path); } PrintHelper::getIntance()->showPrintDialog(localPaths); } @@ -962,7 +942,7 @@ void FileControl::saveSetting() bool FileControl::isSupportSetWallpaper(const QString &path) { - QString path1 = QUrl(path).toLocalFile(); + QString path1 = LibUnionImage_NameSpace::localPath(path); QFileInfo fileinfo(path1); QString format = fileinfo.suffix().toLower(); // 设置为壁纸需要判断是否有读取权限 @@ -1006,7 +986,7 @@ bool FileControl::isCheckOnly() bool FileControl::isCanSupportOcr(const QString &path) { bool bRet = false; - QString localPath = QUrl(path).toLocalFile(); + QString localPath = LibUnionImage_NameSpace::localPath(path); QFileInfo info(localPath); imageViewerSpace::ImageType type = LibUnionImage_NameSpace::getImageType(localPath); if (imageViewerSpace::ImageTypeDynamic != type && info.isReadable()) { @@ -1018,7 +998,7 @@ bool FileControl::isCanSupportOcr(const QString &path) bool FileControl::isCanRename(const QString &path) { bool bRet = false; - QString localPath = QUrl(path).toLocalFile(); + QString localPath = LibUnionImage_NameSpace::localPath(path); imageViewerSpace::PathType pathType = LibUnionImage_NameSpace::getPathType(localPath);//路径类型 QFileInfo info(localPath); bool isWritable = info.isWritable() && QFileInfo(info.dir(), info.dir().path()).isWritable(); //是否可写 @@ -1034,11 +1014,7 @@ bool FileControl::isCanRename(const QString &path) bool FileControl::isCanReadable(const QString &path) { bool bRet = false; - QString localPath = path; - if (path.startsWith("file://")) { - localPath = QUrl(path).toLocalFile(); - } - + QString localPath = LibUnionImage_NameSpace::localPath(path); QFileInfo info(localPath); if (info.isReadable()) { bRet = true; @@ -1049,7 +1025,7 @@ bool FileControl::isCanReadable(const QString &path) bool FileControl::isSvgImage(const QString &path) { bool bRet = false; - QString localPath = QUrl(path).toLocalFile(); + QString localPath = LibUnionImage_NameSpace::localPath(path); imageViewerSpace::ImageType imgType = LibUnionImage_NameSpace::getImageType(localPath); if (imgType == imageViewerSpace::ImageTypeSvg) { bRet = true; @@ -1065,7 +1041,7 @@ bool FileControl::isSvgImage(const QString &path) bool FileControl::isMultiImage(const QString &path) { bool bRet = false; - QString localPath = QUrl(path).toLocalFile(); + QString localPath = LibUnionImage_NameSpace::localPath(path); imageViewerSpace::ImageType type = LibUnionImage_NameSpace::getImageType(localPath); if (imageViewerSpace::ImageTypeMulti == type) { bRet = true; @@ -1079,7 +1055,7 @@ bool FileControl::isMultiImage(const QString &path) */ bool FileControl::imageIsExist(const QString &path) { - QString localPath = QUrl(path).toLocalFile(); + QString localPath = LibUnionImage_NameSpace::localPath(path); return QFile::exists(localPath); } @@ -1088,7 +1064,7 @@ bool FileControl::imageIsExist(const QString &path) */ int FileControl::getImageCount(const QString &path) { - QString localPath = QUrl(path).toLocalFile(); + QString localPath = LibUnionImage_NameSpace::localPath(path); if (!localPath.isEmpty()) { QImageReader imgreader(localPath); return imgreader.imageCount(); @@ -1109,7 +1085,7 @@ void FileControl::resetImageFiles(const QStringList &filePaths) m_pFileWathcer->removePaths(m_pFileWathcer->directories()); for (const QString &filePath : filePaths) { - QString tempPath = QUrl(filePath).toLocalFile(); + QString tempPath = LibUnionImage_NameSpace::localPath(filePath); QFileInfo info(tempPath); // 若文件存在 if (info.exists()) { @@ -1374,7 +1350,7 @@ bool FileControl::isAlbum() bool FileControl::dirCanWrite(const QString &path) { bool ret = false; - QFileInfo info(QUrl(path).toLocalFile()); + QFileInfo info(LibUnionImage_NameSpace::localPath(path)); if (info.isSymLink()) { info = QFileInfo(info.readLink()); } @@ -1391,7 +1367,7 @@ bool FileControl::checkMimeUrls(const QList &urls) } QList urlList = urls; for (QUrl url : urlList) { - const QString path = url.toLocalFile(); + const QString path = LibUnionImage_NameSpace::localPath(url); QFileInfo fileinfo(path); if (fileinfo.isDir()) { auto finfos = LibUnionImage_NameSpace::getImagesAndVideoInfo(path, false); diff --git a/src/src/imageengine/imageenginethread.cpp b/src/src/imageengine/imageenginethread.cpp index 69b5cf44c..94cd32996 100644 --- a/src/src/imageengine/imageenginethread.cpp +++ b/src/src/imageengine/imageenginethread.cpp @@ -57,7 +57,7 @@ ImportImagesThread::~ImportImagesThread() void ImportImagesThread::setData(const QStringList &paths, const int UID) { for (QUrl path : paths) { - m_paths << path.toLocalFile(); + m_paths << LibUnionImage_NameSpace::localPath(path); } m_UID = UID; m_type = DataType_String; @@ -66,7 +66,7 @@ void ImportImagesThread::setData(const QStringList &paths, const int UID) void ImportImagesThread::setData(const QList &paths, const int UID, const bool checkRepeat) { for (QUrl path : paths) { - m_paths << path.toLocalFile(); + m_paths << LibUnionImage_NameSpace::localPath(path); } m_UID = UID; m_checkRepeat = checkRepeat; diff --git a/src/src/imageengine/movieservice.cpp b/src/src/imageengine/movieservice.cpp index 0c24accca..61f504cdf 100644 --- a/src/src/imageengine/movieservice.cpp +++ b/src/src/imageengine/movieservice.cpp @@ -4,6 +4,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later #include "movieservice.h" +#include "unionimage/unionimage.h" #include #include #include @@ -156,7 +157,7 @@ MovieInfo MovieService::getMovieInfo(const QUrl &url) m_bufferMutex.unlock(); if (url.isLocalFile()) { - QFileInfo fi(url.toLocalFile()); + QFileInfo fi(LibUnionImage_NameSpace::localPath(url)); if (fi.exists()) { auto filePath = fi.filePath(); @@ -196,7 +197,7 @@ QImage MovieService::getMovieCover(const QUrl &url) //不取第一帧,与文管影院保持一致 // m_video_thumbnailer->seek_time = const_cast(SEEK_TIME); m_image_data = m_mvideo_thumbnailer_create_image_data(); - QString file = QFileInfo(url.toLocalFile()).absoluteFilePath(); + QString file = QFileInfo(LibUnionImage_NameSpace::localPath(url)).absoluteFilePath(); m_mvideo_thumbnailer_generate_thumbnail_to_buffer(m_video_thumbnailer, file.toUtf8().data(), m_image_data); QImage img = QImage::fromData(m_image_data->image_data_ptr, static_cast(m_image_data->image_data_size), "png"); m_mvideo_thumbnailer_destroy_image_data(m_image_data); diff --git a/src/src/thumbnailload.cpp b/src/src/thumbnailload.cpp index a37c7d333..de26f91e7 100644 --- a/src/src/thumbnailload.cpp +++ b/src/src/thumbnailload.cpp @@ -21,7 +21,7 @@ ThumbnailLoad::ThumbnailLoad() QImage ThumbnailLoad::requestImage(const QString &id, QSize *size, const QSize &requestedSize) { - QString tempPath = QUrl(id).toLocalFile(); + QString tempPath = LibUnionImage_NameSpace::localPath(id); QImage Img; QString error; @@ -39,7 +39,7 @@ QImage ThumbnailLoad::requestImage(const QString &id, QSize *size, const QSize & QPixmap ThumbnailLoad::requestPixmap(const QString &id, QSize *size, const QSize &requestedSize) { - QString tempPath = QUrl(id).toLocalFile(); + QString tempPath = LibUnionImage_NameSpace::localPath(id); QImage Img; QString error; @@ -50,7 +50,7 @@ QPixmap ThumbnailLoad::requestPixmap(const QString &id, QSize *size, const QSize bool ThumbnailLoad::imageIsNull(const QString &path) { - QString tempPath = QUrl(path).toLocalFile(); + QString tempPath = LibUnionImage_NameSpace::localPath(path); QMutexLocker _locker(&m_mutex); if (m_imgMap.find(tempPath) != m_imgMap.end()) { @@ -65,7 +65,7 @@ bool ThumbnailLoad::imageIsNull(const QString &path) */ void ThumbnailLoad::removeImageCache(const QString &path) { - QString tempPath = QUrl(path).toLocalFile(); + QString tempPath = LibUnionImage_NameSpace::localPath(path); QMutexLocker _locker(&m_mutex); m_imgMap.remove(tempPath); } @@ -146,7 +146,7 @@ void LoadImage::setReverseHeightWidth(bool b) void LoadImage::loadThumbnail(const QString path) { - QString tempPath = QUrl(path).toLocalFile(); + QString tempPath = LibUnionImage_NameSpace::localPath(path); qDebug() << "----path--" << tempPath; QImage Img; QString error; @@ -167,7 +167,7 @@ void LoadImage::catThumbnail(const QStringList &list) QString imgPath = path; if (imgPath.startsWith("file://")) { - imgPath = QUrl(imgPath).toLocalFile(); + imgPath = LibUnionImage_NameSpace::localPath(imgPath); } QImage tImg(imgPath); @@ -246,7 +246,7 @@ ViewLoad::ViewLoad() QImage ViewLoad::requestImage(const QString &id, QSize *size, const QSize &requestedSize) { - QString tempPath = QUrl(id).toLocalFile(); + QString tempPath = LibUnionImage_NameSpace::localPath(id); QImage Img; QString error; @@ -270,7 +270,7 @@ QImage ViewLoad::requestImage(const QString &id, QSize *size, const QSize &reque QPixmap ViewLoad::requestPixmap(const QString &id, QSize *size, const QSize &requestedSize) { - QString tempPath = QUrl(id).toLocalFile(); + QString tempPath = LibUnionImage_NameSpace::localPath(id); QImage Img; QString error; @@ -287,7 +287,7 @@ QPixmap ViewLoad::requestPixmap(const QString &id, QSize *size, const QSize &req int ViewLoad::getImageWidth(const QString &path) { - QString tempPath = QUrl(path).toLocalFile(); + QString tempPath = LibUnionImage_NameSpace::localPath(path); QMutexLocker _locker(&m_mutex); return m_imgSizes[tempPath].width(); @@ -295,7 +295,7 @@ int ViewLoad::getImageWidth(const QString &path) int ViewLoad::getImageHeight(const QString &path) { - QString tempPath = QUrl(path).toLocalFile(); + QString tempPath = LibUnionImage_NameSpace::localPath(path); QMutexLocker _locker(&m_mutex); return m_imgSizes[tempPath].height(); @@ -323,7 +323,7 @@ double ViewLoad::getFitWindowScale(const QString &path, double WindowWidth, doub */ void ViewLoad::removeImageCache(const QString &path) { - QString tempPath = QUrl(path).toLocalFile(); + QString tempPath = LibUnionImage_NameSpace::localPath(path); QMutexLocker _locker(&m_mutex); m_imgSizes.remove(tempPath); @@ -339,7 +339,7 @@ void ViewLoad::removeImageCache(const QString &path) */ void ViewLoad::reloadImageCache(const QString &path) { - QString tempPath = QUrl(path).toLocalFile(); + QString tempPath = LibUnionImage_NameSpace::localPath(path); QImage Img; QString error; LibUnionImage_NameSpace::loadStaticImageFromFile(tempPath, Img, error); @@ -392,7 +392,7 @@ QImage MultiImageLoad::requestImage(const QString &id, QSize *size, const QSize // 移除 "#frame_" 字段 int frame = checkId.right(checkId.size() - index - s_tagFrame.size()).toInt(); - QString tempPath = QUrl(path).toLocalFile(); + QString tempPath = LibUnionImage_NameSpace::localPath(path); QImage img; // 数据变更前加锁 @@ -445,7 +445,7 @@ QPixmap MultiImageLoad::requestPixmap(const QString &id, QSize *size, const QSiz */ int MultiImageLoad::getImageWidth(const QString &path, int frameIndex) { - QString tempPath = QUrl(path).toLocalFile(); + QString tempPath = LibUnionImage_NameSpace::localPath(path); auto key = qMakePair(tempPath, frameIndex); QMutexLocker _locker(&m_mutex); @@ -461,7 +461,7 @@ int MultiImageLoad::getImageWidth(const QString &path, int frameIndex) */ int MultiImageLoad::getImageHeight(const QString &path, int frameIndex) { - QString tempPath = QUrl(path).toLocalFile(); + QString tempPath = LibUnionImage_NameSpace::localPath(path); auto key = qMakePair(tempPath, frameIndex); QMutexLocker _locker(&m_mutex); @@ -505,7 +505,7 @@ double MultiImageLoad::getFitWindowScale(const QString &path, double WindowWidth */ void MultiImageLoad::removeImageCache(const QString &path) { - QString tempPath = QUrl(path).toLocalFile(); + QString tempPath = LibUnionImage_NameSpace::localPath(path); QMutexLocker _locker(&m_mutex); // 移除关联的图像 QList > keys = m_imageCache.keys(); @@ -632,10 +632,10 @@ QImage ImagePublisher::requestImage(const QString &id, QSize *size, const QSize QString error; QImage image; - LibUnionImage_NameSpace::loadStaticImageFromFile(url.toLocalFile(), image, error); + LibUnionImage_NameSpace::loadStaticImageFromFile(LibUnionImage_NameSpace::localPath(url), image, error); //如果是视频,则采用视频加载 - if (LibUnionImage_NameSpace::isVideo(url.toLocalFile())) { + if (LibUnionImage_NameSpace::isVideo(LibUnionImage_NameSpace::localPath(url))) { image = MovieService::instance()->getMovieCover(url); } if (m_loadMode == 0) { @@ -955,10 +955,10 @@ void AsyncImageResponse::run() QUrl url(m_id.mid(startIndex)); QString error; - LibUnionImage_NameSpace::loadStaticImageFromFile(url.toLocalFile(), m_image, error); + LibUnionImage_NameSpace::loadStaticImageFromFile(LibUnionImage_NameSpace::localPath(url), m_image, error); //如果是视频,则采用视频加载 - if (LibUnionImage_NameSpace::isVideo(url.toLocalFile())) { + if (LibUnionImage_NameSpace::isVideo(LibUnionImage_NameSpace::localPath(url))) { m_image = MovieService::instance()->getMovieCover(url); } diff --git a/src/src/unionimage/unionimage.cpp b/src/src/unionimage/unionimage.cpp index f2e461f85..3caefcf47 100644 --- a/src/src/unionimage/unionimage.cpp +++ b/src/src/unionimage/unionimage.cpp @@ -1664,6 +1664,16 @@ UNIONIMAGESHARED_EXPORT bool isImage(const QString &path) return bRet; } +UNIONIMAGESHARED_EXPORT QString localPath(const QUrl &url) +{ + QString path = url.toLocalFile(); + if (path.isEmpty()) { + path = url.toString().isEmpty() ? url.path() : url.toString(); + } + + return path; +} + UNIONIMAGESHARED_EXPORT QPixmap renderSVG(const QString &path, const QSize &size) { return Libutils::base::renderSVG(path, size); diff --git a/src/src/unionimage/unionimage.h b/src/src/unionimage/unionimage.h index 1e7a97bbc..fe28c657f 100644 --- a/src/src/unionimage/unionimage.h +++ b/src/src/unionimage/unionimage.h @@ -321,6 +321,14 @@ UNIONIMAGESHARED_EXPORT void getAllDirInDir(const QDir &dir, QFileInfoList &resu */ UNIONIMAGESHARED_EXPORT bool isImage(const QString &path); +/** + * @brief localPath + * @param url + * @author HCQ + * @return QString + * QUrl路径转为本地路径 + */ +UNIONIMAGESHARED_EXPORT QString localPath(const QUrl& url); /** * @brief renderSVG From 398e979afb3511aee4406b555618023ecbccdad6 Mon Sep 17 00:00:00 2001 From: houchengqiu Date: Wed, 5 Jul 2023 13:28:29 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=AB=98=E5=88=86?= =?UTF-8?q?=E5=B1=8F=E5=9B=BE=E6=A0=87=E6=98=BE=E7=A4=BA=E8=BF=87=E5=A4=A7?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 相册应用使用Qt::AA_UseHighDpiPixmaps属性 Log: 修复高分屏图标显示过大的问题 Issue: https://github.com/linuxdeepin/developer-center/issues/4884 --- src/main.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main.cpp b/src/main.cpp index e30eb8b19..ce68dbcab 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -50,6 +50,7 @@ int main(int argc, char *argv[]) app->loadTranslator(); app->setApplicationLicense("GPLV3"); app->setApplicationVersion(DApplication::buildVersion(VERSION)); + app->setAttribute(Qt::AA_UseHighDpiPixmaps); app->setOrganizationName("deepin"); app->setApplicationName("deepin-album"); app->setApplicationDisplayName(QObject::tr("Album")); From 263a93bc11853b01846158b260d53a3c93f22174 Mon Sep 17 00:00:00 2001 From: deepin-admin-bot Date: Mon, 10 Jul 2023 06:40:09 +0000 Subject: [PATCH 3/4] chore: Sync by https://github.com/linuxdeepin/.github/commit/559e91167d4919644f37bbcf123eb0651c1528ea sync by github workflow Log: none Influence: none --- .github/workflows/backup-to-gitlab.yml | 6 ++---- .github/workflows/call-build-distribution.yml | 6 +----- .github/workflows/call-clacheck.yml | 3 +-- .github/workflows/cppcheck.yml | 2 +- 4 files changed, 5 insertions(+), 12 deletions(-) diff --git a/.github/workflows/backup-to-gitlab.yml b/.github/workflows/backup-to-gitlab.yml index c17633593..9863040fd 100644 --- a/.github/workflows/backup-to-gitlab.yml +++ b/.github/workflows/backup-to-gitlab.yml @@ -8,10 +8,8 @@ concurrency: jobs: backup-to-gitlabwh: uses: linuxdeepin/.github/.github/workflows/backup-to-gitlabwh.yml@master - secrets: - BRIDGETOKEN: ${{ secrets.BRIDGETOKEN }} + secrets: inherit backup-to-gitee: uses: linuxdeepin/.github/.github/workflows/backup-to-gitee.yml@master - secrets: - GITEE_SYNC_TOKEN: ${{ secrets.GITEE_SYNC_TOKEN }} + secrets: inherit diff --git a/.github/workflows/call-build-distribution.yml b/.github/workflows/call-build-distribution.yml index c4c277ef3..a509d5f89 100644 --- a/.github/workflows/call-build-distribution.yml +++ b/.github/workflows/call-build-distribution.yml @@ -10,8 +10,4 @@ on: jobs: check_job: uses: linuxdeepin/.github/.github/workflows/build-distribution.yml@master - secrets: - BUILD_GPG_PRIVATE_KEY: ${{ secrets.BUILD_GPG_PRIVATE_KEY }} - BUILD_SSH_PRIVATE_KEY: ${{ secrets.BUILD_SSH_PRIVATE_KEY }} - WEBDAV_PASSWD: ${{ secrets.WEBDAV_PASSWD }} - WEBDAV_USER: ${{ secrets.WEBDAV_USER }} + secrets: inherit diff --git a/.github/workflows/call-clacheck.yml b/.github/workflows/call-clacheck.yml index 3fa07a302..fe16a0733 100644 --- a/.github/workflows/call-clacheck.yml +++ b/.github/workflows/call-clacheck.yml @@ -12,5 +12,4 @@ concurrency: jobs: clacheck: uses: linuxdeepin/.github/.github/workflows/cla-check.yml@master - secrets: - APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }} + secrets: inherit diff --git a/.github/workflows/cppcheck.yml b/.github/workflows/cppcheck.yml index 6a92b5467..e808a89b1 100644 --- a/.github/workflows/cppcheck.yml +++ b/.github/workflows/cppcheck.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - run: export - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: ref: ${{ github.event.pull_request.head.sha }} persist-credentials: false From 7d0acc38d74df7cc9b2c5e6d462eda2f17efbc2e Mon Sep 17 00:00:00 2001 From: houchengqiu Date: Wed, 12 Jul 2023 16:04:00 +0800 Subject: [PATCH 4/4] =?UTF-8?q?refator:=20"=E4=BB=8E=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=AF=BC=E5=85=A5"=E5=92=8C=E8=AE=BE=E5=A4=87=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=8A=9F=E8=83=BD=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.gvfs挂载路径判断逻辑优化 2.针对file前缀外设路径,添加canEject,判断是否为外设 3.设备列表加载逻辑优化 Log: "从文件导入"和设备列表功能完善 --- .../DeviceAlbum/DeviceAlbum.qml | 4 ++-- src/src/albumControl.cpp | 23 ++++++++++--------- src/src/unionimage/imageutils.cpp | 9 ++++++++ 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/qml/ThumbnailImageView/DeviceAlbum/DeviceAlbum.qml b/src/qml/ThumbnailImageView/DeviceAlbum/DeviceAlbum.qml index 1742b1056..bce948fb3 100644 --- a/src/qml/ThumbnailImageView/DeviceAlbum/DeviceAlbum.qml +++ b/src/qml/ThumbnailImageView/DeviceAlbum/DeviceAlbum.qml @@ -55,7 +55,7 @@ Rectangle { //QML的翻译不支持%n的特性,只能拆成这种代码 var photoCountText = "" - var photoCount = albumControl.getDeviceAlbumInfoConut(devicePath, 1) + var photoCount = albumControl.getDeviceAlbumInfoConut(devicePath, 3) if(photoCount === 0) { photoCountText = "" } else if(photoCount === 1) { @@ -65,7 +65,7 @@ Rectangle { } var videoCountText = "" - var videoCount = albumControl.getDeviceAlbumInfoConut(devicePath, 2) + var videoCount = albumControl.getDeviceAlbumInfoConut(devicePath, 4) if(videoCount === 0) { videoCountText = "" } else if(videoCount === 1) { diff --git a/src/src/albumControl.cpp b/src/src/albumControl.cpp index 7f05d9522..238eff356 100644 --- a/src/src/albumControl.cpp +++ b/src/src/albumControl.cpp @@ -858,16 +858,18 @@ void AlbumControl::onVfsMountChangedAdd(QExplicitlySharedDataPointer QString uri = mount->getRootFile()->uri(); QString scheme = QUrl(uri).scheme(); - qDebug() << "AlbumControl::onVfsMountChangedAdd uri: " << uri; + // 查看块设备是否可卸载,以便确定file前缀的uri是否为外接设备 + bool bCanEject = mount->getVolume()->canEject(); + qInfo() << "AlbumControl::onVfsMountChangedAdd uri: " << uri << "canEject:" << bCanEject; QRegularExpression recifs("^file:///media/(.*)/smbmounts"); - QRegularExpression regvfs("^file:///run/user/(.*)/smbmounts"); + QRegularExpression regvfs("^file:///run/user/(.*)/gvfs|^/root/.gvfs"); // 因V23玲珑文管smb挂载方式有优化,修改uri的smb路径判断方式,包括gvfs挂载和cifs挂载 if (recifs.match(uri).hasMatch() || regvfs.match(uri).hasMatch()) { qDebug() << "uri is a smb path"; return; } - if ((scheme == "file" /*&& mount->canEject()*/) || //usb device + if ((scheme == "file" && bCanEject) || //usb device (scheme == "gphoto2") || //phone photo //(scheme == "afc") || //iPhone document (scheme == "mtp")) { //android file @@ -2344,17 +2346,17 @@ DBImgInfoList AlbumControl::getDeviceAlbumInfos2(const QString &devicePath, cons for (QString path : list) { DBImgInfo info; if (LibUnionImage_NameSpace::isImage(url2localPath(path))) { - if (filterType == 2) { + if (filterType == ItemTypeVideo) { continue ; } info.itemType = ItemTypePic; } else if (LibUnionImage_NameSpace::isVideo(url2localPath(path))) { - if (filterType == 1) { + if (filterType == ItemTypePic) { continue ; } info.itemType = ItemTypeVideo; } else { - info.itemType = ItemTypeNull; + continue; } info.filePath = url2localPath(path); info.pathHash = ""; @@ -2372,15 +2374,14 @@ int AlbumControl::getDeviceAlbumInfoConut(const QString &devicePath, const int & for (QString path : list) { QVariantMap tmpMap; if (LibUnionImage_NameSpace::isImage(url2localPath(path))) { - if (filterType == 2) { - continue ; + if (filterType == ItemTypePic) { + rePicVideoConut++; } } else if (LibUnionImage_NameSpace::isVideo(url2localPath(path))) { - if (filterType == 1) { - continue ; + if (filterType == ItemTypeVideo) { + rePicVideoConut++; } } - rePicVideoConut++; } return rePicVideoConut; } diff --git a/src/src/unionimage/imageutils.cpp b/src/src/unionimage/imageutils.cpp index 07fb9bad4..828bcdc27 100755 --- a/src/src/unionimage/imageutils.cpp +++ b/src/src/unionimage/imageutils.cpp @@ -614,6 +614,15 @@ bool isVideo(QString path) { QFileInfo temDir(path); QString fileName = temDir.suffix().toLower(); //扩展名 + + // ts文件可能为翻译文件,使用QMimeDataBase::mimeTypeForFile做精确判断,判断是否为视频 + if (fileName == "ts") { + if (QMimeDatabase().mimeTypeForFile(path).name() == "video/mp2t") + return true; + else + return false; + } + return m_videoFiletypes.contains(fileName); }