diff --git a/libpeony-qt/controls/menu/directory-view-menu/directory-view-menu.cpp b/libpeony-qt/controls/menu/directory-view-menu/directory-view-menu.cpp index 4f87bbc6..8ea5618f 100644 --- a/libpeony-qt/controls/menu/directory-view-menu/directory-view-menu.cpp +++ b/libpeony-qt/controls/menu/directory-view-menu/directory-view-menu.cpp @@ -181,6 +181,12 @@ void DirectoryViewMenu::fillActions() qDebug() << "canEject :" << canEject; } + //task#147972 【删除回收站】选项需求 + //如果是长城的机器并且带了9215控制器,不再区分移动设备,统一右键删除到回收站 + bool trashSettings = GlobalSettings::getInstance()->getValue(TRASH_MOBILE_FILES).toBool(); + if (trashSettings) + m_is_mobile_file = false; + QString homeUri = QStandardPaths::writableLocation(QStandardPaths::HomeLocation); QString musicUri = QStandardPaths::writableLocation(QStandardPaths::MusicLocation); QString desktop = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation); diff --git a/libpeony-qt/convenient-utils/file-operation-utils.cpp b/libpeony-qt/convenient-utils/file-operation-utils.cpp index 22e85693..d71f2af5 100644 --- a/libpeony-qt/convenient-utils/file-operation-utils.cpp +++ b/libpeony-qt/convenient-utils/file-operation-utils.cpp @@ -41,6 +41,7 @@ #include "file-operation-internal-dialog.h" #include "sound-effect.h" +#include "global-settings.h" #include #include @@ -154,6 +155,12 @@ FileOperation *FileOperationUtils::trash(const QStringList &uris, bool addHistor // } // qDebug() <<"total_size:" <getValue(TRASH_MOBILE_FILES).toBool(); + if (trashSettings) + break; + //file total size more than 10G, not trash but delete, task#56444 //FIXME 判断是否是移动设备文件,可能不准确, 目前暂未找到好的判断方法 bool isMobileDeviece = FileUtils::isMobileDeviceFile(uri); diff --git a/libpeony-qt/global-settings.cpp b/libpeony-qt/global-settings.cpp index 468276a7..8cfb42d9 100644 --- a/libpeony-qt/global-settings.cpp +++ b/libpeony-qt/global-settings.cpp @@ -65,6 +65,36 @@ GlobalSettings::GlobalSettings(QObject *parent) : QObject(parent) m_cache.insert(key, m_settings->value(key)); } + m_cache.insert(DISPLAY_STANDARD_ICONS, true); + if (QGSettings::isSchemaInstalled("org.ukui.peony.settings")) { + m_peonyGSettings = new QGSettings("org.ukui.peony.settings", "/org/ukui/peony/settings/", this); + connect(m_peonyGSettings, &QGSettings::changed, this, [=] (const QString &key) { + m_cache.remove(key); + m_cache.insert(key, m_peonyGSettings->get(key)); + Q_EMIT this->valueChanged(key); + }); + + for (auto key : m_peonyGSettings->keys()) { + m_cache.remove(key); + m_cache.insert(key, m_peonyGSettings->get(key)); + } + } + + m_cache.insert(TRASH_MOBILE_FILES, false); + if (QGSettings::isSchemaInstalled("org.ukui.peony.settings")) { + m_peonyGSettings = new QGSettings("org.ukui.peony.settings", "/org/ukui/peony/settings/", this); + connect(m_peonyGSettings, &QGSettings::changed, this, [=] (const QString &key) { + m_cache.remove(key); + m_cache.insert(key, m_peonyGSettings->get(key)); + Q_EMIT this->valueChanged(key); + }); + + for (auto key : m_peonyGSettings->keys()) { + m_cache.remove(key); + m_cache.insert(key, m_peonyGSettings->get(key)); + } + } + m_date_format = tr("yyyy/MM/dd"); m_time_format = tr("HH:mm:ss"); if (QGSettings::isSchemaInstalled("org.ukui.control-center.panel.plugins")) { @@ -359,7 +389,7 @@ void GlobalSettings::resetAll() void GlobalSettings::setValue(const QString &key, const QVariant &value) { - if (key == REMOTE_SERVER_REMOTE_IP || key == DEFAULT_WINDOW_SIZE) { + if (key == REMOTE_SERVER_REMOTE_IP || key == DEFAULT_WINDOW_SIZE || !m_peonyGSettings->keys().contains(key)) { m_cache.remove(key); m_cache.insert(key, value); QtConcurrent::run([=]() { diff --git a/libpeony-qt/global-settings.h b/libpeony-qt/global-settings.h index aee3c9eb..281ce973 100644 --- a/libpeony-qt/global-settings.h +++ b/libpeony-qt/global-settings.h @@ -100,6 +100,9 @@ //Control the display of desktop standard icons #define DISPLAY_STANDARD_ICONS "displayStandardIcons" +//control the mobile device trash file issue, if be true can trash mobile files +#define TRASH_MOBILE_FILES "trashMobileFiles" + // control center #define UKUI_CONTROL_CENTER_PANEL_PLUGIN "org.ukui.control-center.panel.plugins" // schema #define UKUI_CONTROL_CENTER_PANEL_PLUGIN_TIME "org.ukui.control-center.panel.plugins.time" // time format key, value is '12' or '24' diff --git a/libpeony-qt/org.ukui.peony.settings.gschema.xml b/libpeony-qt/org.ukui.peony.settings.gschema.xml index d3b45491..c6e8c12d 100644 --- a/libpeony-qt/org.ukui.peony.settings.gschema.xml +++ b/libpeony-qt/org.ukui.peony.settings.gschema.xml @@ -2,6 +2,12 @@ + + false + trash mobile files + Control the mobile device trash file issue, if be true can trash mobile files + + true display standard icons diff --git a/peony-qt-desktop/peony-desktop-application.cpp b/peony-qt-desktop/peony-desktop-application.cpp index 967ac782..cd74a72d 100644 --- a/peony-qt-desktop/peony-desktop-application.cpp +++ b/peony-qt-desktop/peony-desktop-application.cpp @@ -144,6 +144,39 @@ void trySetDefaultFolderUrlHandler() { }); } +//task#147972, story#21858, GreatWall svn and SE9215 controler, all file provide trash option +void greatWallDeviceInit() +{ + QtConcurrent::run([=]() { + QProcess process; + process.start("lspci | grep -c 88SE9215"); + process.waitForFinished(); + QString result = process.readAllStandardOutput(); + qDebug() << "greatWallDeviceInit lspci:"<setValue(TRASH_MOBILE_FILES, true); + } + break; + } + } + }); +} + QRect caculateVirtualDesktopGeometry() { QRegion screensRegion; for (auto screen : qApp->screens()) { @@ -309,6 +342,9 @@ PeonyDesktopApplication::PeonyDesktopApplication(int &argc, char *argv[], const auto message = this->arguments().join(' ').toUtf8(); parseCmd(message, !isRunning()); + //check if is great wall device and init settings + greatWallDeviceInit(); + qDebug()<<"monitor volumes change"; auto volumeManager = Peony::VolumeManager::getInstance(); connect(volumeManager,&Peony::VolumeManager::mountAdded,this,[=](const std::shared_ptr &mount){