From 101c79049b43090cb7766d059286c074ec697188 Mon Sep 17 00:00:00 2001 From: zhanghongyuan Date: Mon, 23 Sep 2024 16:39:41 +0800 Subject: [PATCH] fix: the album permission control problem fix the album permission control problem when import photo Log: fix the album permission control problem when import photo Bug: https://pms.uniontech.com/bug-view-270731.html --- src/album/mainwindow.cpp | 44 ++++++++++++++++++++++++++++++++++++---- src/album/mainwindow.h | 6 +++++- 2 files changed, 45 insertions(+), 5 deletions(-) diff --git a/src/album/mainwindow.cpp b/src/album/mainwindow.cpp index d7147e96..2677352f 100644 --- a/src/album/mainwindow.cpp +++ b/src/album/mainwindow.cpp @@ -1329,19 +1329,25 @@ void MainWindow::onImprotBtnClicked() if (mode != QDialog::Accepted) { return; } - const QStringList &file_list = dialog.selectedFiles(); + const QStringList &file_list = dialog.selectedFiles(); if (file_list.isEmpty()) return; + QStringList filtered_list; + for (auto it : file_list) { + if (!pathControl(it)){ + filtered_list.append(it); + } + } if (m_iCurrentView == VIEW_ALBUM) { if (m_pAlbumview->m_currentType == ALBUM_PATHTYPE_BY_PHONE || m_pAlbumview->m_currentItemType == 0 || DBManager::instance()->getAlbumDBTypeFromUID(m_pAlbumview->m_currentUID) == AutoImport) { //外部设备、特定类型、自动导入走常规导入,不得导入进目标相册 - ImageEngineApi::instance()->ImportImagesFromFileList(file_list, "", -1, this, true); + ImageEngineApi::instance()->ImportImagesFromFileList(filtered_list, "", -1, this, true); } else { - ImageEngineApi::instance()->ImportImagesFromFileList(file_list, m_pAlbumview->m_currentAlbum, m_pAlbumview->m_currentUID, this, true); + ImageEngineApi::instance()->ImportImagesFromFileList(filtered_list, m_pAlbumview->m_currentAlbum, m_pAlbumview->m_currentUID, this, true); } } else { - ImageEngineApi::instance()->ImportImagesFromFileList(file_list, "", -1, this, true); + ImageEngineApi::instance()->ImportImagesFromFileList(filtered_list, "", -1, this, true); } } @@ -1763,6 +1769,36 @@ void MainWindow::adjustTitleContent() } } +bool MainWindow::pathControl(const QString &sPath) +{ + QDBusMessage reply; + QDBusInterface iface("com.deepin.FileArmor1", "/com/deepin/FileArmor1", "com.deepin.FileArmor1", QDBusConnection::systemBus()); + if (iface.isValid()) { + QStringList tmpDocLocation = QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation); + if (tmpDocLocation.size() > 0) { + QString docPath = tmpDocLocation.first(); + if (sPath.startsWith(docPath)) { + reply = iface.call("GetApps", docPath); + } + } + QStringList tmpPicLocation = QStandardPaths::standardLocations(QStandardPaths::PicturesLocation); + if (tmpPicLocation.size() > 0) { + QString picPath = tmpPicLocation.first(); + if (sPath.startsWith(picPath)) { + reply = iface.call("GetApps", picPath); + } + } + } + if (reply.type() == QDBusMessage::ReplyMessage) { + QList lValue = reply.arguments().takeFirst().toStringList(); + QString strApp = QStandardPaths::findExecutable("deepin-album"); + if (lValue.contains(strApp)) { + return true; + } + } + return false; +} + void MainWindow::closeEvent(QCloseEvent *event) { saveWindowState(); diff --git a/src/album/mainwindow.h b/src/album/mainwindow.h index 2c10819b..f78c9fac 100644 --- a/src/album/mainwindow.h +++ b/src/album/mainwindow.h @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -136,7 +137,10 @@ class MainWindow : public DMainWindow, public ImageEngineImportObject // 字体改变、尺寸改变,同步调整标题栏区域控件显示大小 void adjustTitleContent(); - + /** + * @brief pathControl 返回输入sPath文件是否被读写权限管控 + */ + bool pathControl(const QString &sPath); protected: void wheelEvent(QWheelEvent *event) Q_DECL_OVERRIDE; void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE;