From ccf40f7725807ea3ed4b1aedbed81221b3ed1162 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=BE=AF=E7=BA=A2=E5=8B=8B?= <houhongxun@kylinos.cn>
Date: Thu, 9 May 2024 11:29:04 +0800
Subject: [PATCH] readd function to set file executable permission
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: 侯红勋 <houhongxun@kylinos.cn>
---
 .../permissions-properties-page.cpp           | 107 ++++++++----------
 translations/libpeony-qt/libpeony-qt_bo_CN.ts |  40 ++-----
 translations/libpeony-qt/libpeony-qt_cs.ts    |  62 +++++++---
 translations/libpeony-qt/libpeony-qt_tr.ts    |  54 +++++----
 translations/libpeony-qt/libpeony-qt_zh_CN.ts |  60 +++++-----
 .../peony-qt-desktop/peony-qt-desktop_cs.ts   |  12 +-
 .../peony-qt-desktop/peony-qt-desktop_tr.ts   |  12 +-
 .../peony-qt-desktop_zh_CN.ts                 |  12 +-
 translations/peony-qt/peony-qt_cs.ts          |   4 +-
 translations/peony-qt/peony-qt_tr.ts          |   4 +-
 translations/peony-qt/peony-qt_zh_CN.ts       |   4 +-
 11 files changed, 194 insertions(+), 177 deletions(-)

diff --git a/libpeony-qt/controls/property-page/permissions-properties-page.cpp b/libpeony-qt/controls/property-page/permissions-properties-page.cpp
index 078c1b4..bfd648f 100644
--- a/libpeony-qt/controls/property-page/permissions-properties-page.cpp
+++ b/libpeony-qt/controls/property-page/permissions-properties-page.cpp
@@ -37,8 +37,7 @@
 #include <QTableWidget>
 #include <QHeaderView>
 #include <QLabel>
-#include <QRadioButton>
-#include <QButtonGroup>
+#include <QCheckBox>
 #include <QProcess>
 #include <QPushButton>
 
@@ -116,8 +115,7 @@ void PermissionsPropertiesPage::initTableWidget()
 {
     m_table = new QTableWidget(this);
     m_table->setRowCount(4);
-    //属性窗口重构，可读、可写、可执行 改成 读写、只读
-    m_table->setColumnCount(3);
+    m_table->setColumnCount(5);
     m_table->verticalHeader()->setVisible(false);
     m_table->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
     m_table->horizontalHeader()->setFrameShape(QFrame::NoFrame);
@@ -133,8 +131,7 @@ void PermissionsPropertiesPage::initTableWidget()
     m_table->setAlternatingRowColors(true);
 
     auto l = QStringList();
-    //属性窗口重构，类型、可读、可写、可执行 改成 读写、只读
-    l<<tr("Group or User")<<tr("Read and Write")<<tr("Readonly");
+    l<<tr("User or Group")<<tr("Type")<<tr("Read")<<tr("Write")<<tr("Executable");
     m_table->setHorizontalHeaderLabels(l);
     m_table->setEditTriggers(QTableWidget::NoEditTriggers);
     //开启手动设置宽度 - Enable manual width setting
@@ -142,8 +139,10 @@ void PermissionsPropertiesPage::initTableWidget()
     m_table->horizontalHeader()->setMaximumSectionSize(400);
 
     m_table->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Interactive);
-    m_table->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch);
+    m_table->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Interactive);
     m_table->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Stretch);
+    m_table->horizontalHeader()->setSectionResizeMode(3, QHeaderView::Stretch);
+    m_table->horizontalHeader()->setSectionResizeMode(4, QHeaderView::Stretch);
     m_table->horizontalHeaderItem(0)->setTextAlignment(Qt::AlignLeft);
 
     m_table->setColumnWidth(0, 150);
@@ -246,7 +245,7 @@ GAsyncReadyCallback PermissionsPropertiesPage::async_query_permisson_callback(GO
                 bool isSameGroup = false;
                 auto username = pw->pw_name;
                 if (userString == username) {
-                    userNameDisplayString += tr("(Current User)");
+                    userNameDisplayString += tr("(Me)");
                     isSelf = true;
                 }
                 /*
@@ -318,6 +317,17 @@ GAsyncReadyCallback PermissionsPropertiesPage::async_query_permisson_callback(GO
                 QTableWidgetItem* itemR2C0 = new QTableWidgetItem(QIcon::fromTheme("emblem-people"), tr("Others"));
                 table->setItem(2, 0, itemR2C0);
 
+                auto itemR0C1 = new QTableWidgetItem(tr("Owner"));
+                itemR0C1->setTextAlignment(Qt::AlignCenter);
+                auto itemR1C1 = new QTableWidgetItem(tr("Group"));
+                itemR1C1->setTextAlignment(Qt::AlignCenter);
+                auto itemR2C1 = new QTableWidgetItem(tr("Other"));
+                itemR2C1->setTextAlignment(Qt::AlignCenter);
+
+                table->setItem(0, 1, itemR0C1);
+                table->setItem(1, 1, itemR1C1);
+                table->setItem(2, 1, itemR2C1);
+
                 table->showRow(0);
                 table->showRow(1);
                 table->showRow(2);
@@ -326,27 +336,35 @@ GAsyncReadyCallback PermissionsPropertiesPage::async_query_permisson_callback(GO
                 p_this->m_message->show();
                 table->setRowCount(1);
 
-                QTableWidgetItem *itemR0C0 = new QTableWidgetItem(QIcon::fromTheme("emblem-personal"), tr("Current User"));
+                QTableWidgetItem *itemR0C0 = new QTableWidgetItem(QIcon::fromTheme("emblem-personal"), tr("Me"));
                 table->setItem(0, 0, nullptr);
                 table->setItem(0, 0, itemR0C0);
 
-                for (int i = 0; i < 2; i++) {
-                    table->setCellWidget(0, i + 1, nullptr);
+                auto itemR0C1 = new QTableWidgetItem(tr("User"));
+                itemR0C1->setTextAlignment(Qt::AlignCenter);
+
+                table->setItem(0, 1, itemR0C1);
+
+                for (int i = 0; i < 3; i++) {
+                    table->setCellWidget(0, i + 2, nullptr);
                     QWidget *w = new QWidget(table);
                     QHBoxLayout *l = new QHBoxLayout(w);
                     l->setMargin(0);
                     w->setLayout(l);
                     l->setAlignment(Qt::AlignCenter);
-                    QRadioButton* radioButton = new QRadioButton(w);
-                    l->addWidget(radioButton);
-                    table->setCellWidget(0, i + 1, w);
+                    auto checkbox = new QCheckBox(w);
+                    l->addWidget(checkbox);
+                    table->setCellWidget(0, i + 2, w);
 
                     switch (i) {
                     case 0:
-                        radioButton->setChecked(current_user_writeable&&current_user_readable);
+                        checkbox->setChecked(current_user_readable);
                         break;
                     case 1:
-                        radioButton->setChecked((!current_user_writeable)&&current_user_readable);
+                        checkbox->setChecked(current_user_writeable);
+                        break;
+                    case 2:
+                        checkbox->setChecked(current_user_executable);
                         break;
                     }
                 }
@@ -367,21 +385,8 @@ void PermissionsPropertiesPage::changePermission(int row, int column, bool check
     if(!m_enable)
         return;
 
-    bool havePermission = false;
-    if(0 == column)
-    {
-        havePermission = !(m_permissions[row][1]&&m_permissions[row][0]);
-        havePermission = checked? havePermission:checked;
-        m_permissions[row][0] = havePermission;
-        m_permissions[row][1] = havePermission;
-    }
-    else
-    {
-        havePermission = !((!m_permissions[row][1])&&m_permissions[row][0]);
-        havePermission = checked? havePermission:checked;
-        m_permissions[row][0] = havePermission;
-        m_permissions[row][1] = false;
-    }
+    m_permissions[row][column] = checked;
+
     this->thisPageChanged();
 
     this->updateCheckBox();
@@ -477,32 +482,18 @@ void PermissionsPropertiesPage::thisPageChanged()
 void PermissionsPropertiesPage::updateCheckBox()
 {
     for (int i = 0; i < 3; i++) {
-        //修改文件管理器属性界面的权限页，设置权限为读写，可读
-        QButtonGroup* permissionsBtGroup = new QButtonGroup(this);
-        for (int j = 0; j < 2; j++) {
-            m_table->setCellWidget(i, j + 1, nullptr);
+        for (int j = 0; j < 3; j++) {
+            m_table->setCellWidget(i, j + 2, nullptr);
             QWidget *w = new QWidget(m_table);
             QHBoxLayout *l = new QHBoxLayout(w);
             l->setMargin(0);
             w->setLayout(l);
             l->setAlignment(Qt::AlignCenter);
-            QRadioButton* radioButton = new QRadioButton(w);
-            l->addWidget(radioButton);
-            permissionsBtGroup->addButton(radioButton);
-            permissionsBtGroup->setId(radioButton,j);
-            m_table->setCellWidget(i, j + 1, w);
-            bool checkType = false;
-            if(0 == j)
-            {
-                checkType = this->m_permissions[i][1]&&this->m_permissions[i][0];
-            }
-            else
-            {
-                checkType = (!this->m_permissions[i][1])&&this->m_permissions[i][0];
-            }
-            radioButton->setAutoExclusive(false);
-            radioButton->setChecked(checkType);
-            radioButton->setAutoExclusive(true);
+            auto checkbox = new QCheckBox(w);
+            l->addWidget(checkbox);
+            m_table->setCellWidget(i, j + 2, w);
+
+            checkbox->setChecked(this->m_permissions[i][j]);
 
             //disable home path
             bool check_enable = true;
@@ -517,15 +508,15 @@ void PermissionsPropertiesPage::updateCheckBox()
 
             QString homeUri = "file://" +  QStandardPaths::writableLocation(QStandardPaths::HomeLocation);
             if (this->m_uri == homeUri || !check_enable)
-                radioButton->setDisabled(true);
+                checkbox->setDisabled(true);
             else
-                radioButton->setDisabled(false);
+                checkbox->setDisabled(false);
 
+            connect(checkbox, &QCheckBox::clicked, this, [=]() {
+                qDebug()<<"clicked"<<i<<j<<checkbox->isChecked();
+                this->checkBoxChanged(i, j, checkbox->isChecked());
+            });
         }
-        connect(permissionsBtGroup, QOverload<int>::of(&QButtonGroup::buttonClicked),
-            [=](int id){
-            this->checkBoxChanged(i, id, permissionsBtGroup->button(id)->isChecked());
-        });
     }
 }
 
diff --git a/translations/libpeony-qt/libpeony-qt_bo_CN.ts b/translations/libpeony-qt/libpeony-qt_bo_CN.ts
index 78e61e7..b97ad36 100644
--- a/translations/libpeony-qt/libpeony-qt_bo_CN.ts
+++ b/translations/libpeony-qt/libpeony-qt_bo_CN.ts
@@ -1914,39 +1914,39 @@ Do you want to delete the link file?</source>
     <name>Peony::PermissionsPropertiesPage</name>
     <message>
         <source>Me</source>
-        <translation type="vanished">ང</translation>
+        <translation>ང</translation>
     </message>
     <message>
         <source>(Me)</source>
-        <translation type="vanished">(ང)</translation>
+        <translation>(ང)</translation>
     </message>
     <message>
         <source>Read</source>
-        <translation type="vanished">ཚགས་ཚུད།</translation>
+        <translation>ཚགས་ཚུད།</translation>
     </message>
     <message>
         <source>Type</source>
-        <translation type="vanished">རིགས་གྲས་</translation>
+        <translation>རིགས་གྲས་</translation>
     </message>
     <message>
         <source>User</source>
-        <translation type="vanished">སྤྱོད་མཁན།</translation>
+        <translation>སྤྱོད་མཁན།</translation>
     </message>
     <message>
         <source>Group</source>
-        <translation type="vanished">ཚོགས་པ།</translation>
+        <translation>ཚོགས་པ།</translation>
     </message>
     <message>
         <source>Other</source>
-        <translation type="vanished">གཞན་དག</translation>
+        <translation>གཞན་དག</translation>
     </message>
     <message>
         <source>Owner</source>
-        <translation type="vanished">བདག་པོ།</translation>
+        <translation>བདག་པོ།</translation>
     </message>
     <message>
         <source>Write</source>
-        <translation type="vanished">འབྲི་བ།</translation>
+        <translation>འབྲི་བ།</translation>
     </message>
     <message>
         <source>Can not get the permission info.</source>
@@ -1962,35 +1962,19 @@ Do you want to delete the link file?</source>
     </message>
     <message>
         <source>User or Group</source>
-        <translation type="vanished">སྤྱོད་མཁན་ནམ་ཚོ།</translation>
+        <translation>སྤྱོད་མཁན་ནམ་ཚོ།</translation>
     </message>
     <message>
         <source>Executable</source>
-        <translation type="vanished">ལག་བསྟར་ཐུབ་པའི་ཡིག་ཆ།</translation>
+        <translation>ལག་བསྟར་ཐུབ་པའི་ཡིག་ཆ།</translation>
     </message>
     <message>
         <source>Target: %1</source>
         <translation>དམིགས་འབེན།:</translation>
     </message>
-    <message>
-        <source>Group or User</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Read and Write</source>
-        <translation type="unfinished"></translation>
-    </message>
     <message>
         <source>Readonly</source>
-        <translation type="unfinished">ཀློག་ཙམ།</translation>
-    </message>
-    <message>
-        <source>(Current User)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Current User</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">ཀློག་ཙམ།</translation>
     </message>
 </context>
 <context>
diff --git a/translations/libpeony-qt/libpeony-qt_cs.ts b/translations/libpeony-qt/libpeony-qt_cs.ts
index a0f8fd6..5e3be4c 100644
--- a/translations/libpeony-qt/libpeony-qt_cs.ts
+++ b/translations/libpeony-qt/libpeony-qt_cs.ts
@@ -2399,52 +2399,82 @@ Do you want to delete the link file?</source>
 <context>
     <name>Peony::PermissionsPropertiesPage</name>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="81"/>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="157"/>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="80"/>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="156"/>
         <source>Target: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="137"/>
-        <source>Group or User</source>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="134"/>
+        <source>User or Group</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="137"/>
-        <source>Read and Write</source>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="134"/>
+        <source>Type</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="137"/>
-        <source>Readonly</source>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="134"/>
+        <source>Read</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="249"/>
-        <source>(Current User)</source>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="134"/>
+        <source>Write</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="329"/>
-        <source>Current User</source>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="134"/>
+        <source>Executable</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="179"/>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="188"/>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="178"/>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="187"/>
         <source>Can not get the permission info.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="318"/>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="248"/>
+        <source>(Me)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="317"/>
         <source>Others</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="325"/>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="320"/>
+        <source>Owner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="322"/>
+        <source>Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="324"/>
+        <source>Other</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="335"/>
         <source>You can not change the access of this file.</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="339"/>
+        <source>Me</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="343"/>
+        <source>User</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>Peony::PropertiesWindow</name>
diff --git a/translations/libpeony-qt/libpeony-qt_tr.ts b/translations/libpeony-qt/libpeony-qt_tr.ts
index d1b2f51..5229d08 100644
--- a/translations/libpeony-qt/libpeony-qt_tr.ts
+++ b/translations/libpeony-qt/libpeony-qt_tr.ts
@@ -2804,12 +2804,14 @@ Bağlantı dosyasını silmek istiyor musunuz?</translation>
 <context>
     <name>Peony::PermissionsPropertiesPage</name>
     <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="134"/>
         <source>User or Group</source>
-        <translation type="vanished">Kullanıcı veya Grup</translation>
+        <translation>Kullanıcı veya Grup</translation>
     </message>
     <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="134"/>
         <source>Type</source>
-        <translation type="vanished">Tür</translation>
+        <translation>Tür</translation>
     </message>
     <message>
         <source>Readable</source>
@@ -2828,79 +2830,83 @@ Bağlantı dosyasını silmek istiyor musunuz?</translation>
         <translation type="vanished">Dosya:%1</translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="81"/>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="157"/>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="80"/>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="156"/>
         <source>Target: %1</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="137"/>
         <source>Read and Write</source>
-        <translation>Okuma ve Yazma</translation>
+        <translation type="vanished">Okuma ve Yazma</translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="137"/>
         <source>Readonly</source>
-        <translation>Salt Okunur</translation>
+        <translation type="vanished">Salt Okunur</translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="137"/>
-        <source>Group or User</source>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="134"/>
+        <source>Read</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="249"/>
-        <source>(Current User)</source>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="134"/>
+        <source>Write</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="329"/>
-        <source>Current User</source>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="134"/>
+        <source>Executable</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="179"/>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="188"/>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="178"/>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="187"/>
         <source>Can not get the permission info.</source>
         <translation>İzin bilgileri alınamıyor.</translation>
     </message>
     <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="248"/>
         <source>(Me)</source>
-        <translation type="vanished">(Ben)</translation>
+        <translation>(Ben)</translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="318"/>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="317"/>
         <source>Others</source>
         <translation>Diğerleri</translation>
     </message>
     <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="320"/>
         <source>Owner</source>
-        <translation type="vanished">Sahibi</translation>
+        <translation>Sahibi</translation>
     </message>
     <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="322"/>
         <source>Group</source>
-        <translation type="vanished">Grup</translation>
+        <translation>Grup</translation>
     </message>
     <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="324"/>
         <source>Other</source>
-        <translation type="vanished">Diğer</translation>
+        <translation>Diğer</translation>
     </message>
     <message>
         <source>Other Users</source>
         <translation type="vanished">Diğer Kullanıcılar</translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="325"/>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="335"/>
         <source>You can not change the access of this file.</source>
         <translation>Bu dosyanın erişimini değiştiremezsiniz.</translation>
     </message>
     <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="339"/>
         <source>Me</source>
-        <translation type="vanished">Ben</translation>
+        <translation>Ben</translation>
     </message>
     <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="343"/>
         <source>User</source>
-        <translation type="vanished">Kullanıcı</translation>
+        <translation>Kullanıcı</translation>
     </message>
 </context>
 <context>
diff --git a/translations/libpeony-qt/libpeony-qt_zh_CN.ts b/translations/libpeony-qt/libpeony-qt_zh_CN.ts
index f1ea50a..bedcb31 100644
--- a/translations/libpeony-qt/libpeony-qt_zh_CN.ts
+++ b/translations/libpeony-qt/libpeony-qt_zh_CN.ts
@@ -2857,12 +2857,14 @@ Do you want to delete the link file?</source>
 <context>
     <name>Peony::PermissionsPropertiesPage</name>
     <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="134"/>
         <source>User or Group</source>
-        <translation type="vanished">用户或组</translation>
+        <translation>用户或组</translation>
     </message>
     <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="134"/>
         <source>Type</source>
-        <translation type="vanished">类型</translation>
+        <translation>类型</translation>
     </message>
     <message>
         <source>Readable</source>
@@ -2881,91 +2883,95 @@ Do you want to delete the link file?</source>
         <translation type="vanished">文件：%1</translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="81"/>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="157"/>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="80"/>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="156"/>
         <source>Target: %1</source>
         <translation>对象名称： %1</translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="137"/>
         <source>Read and Write</source>
-        <translation>读写</translation>
+        <translation type="vanished">读写</translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="137"/>
         <source>Readonly</source>
-        <translation>只读</translation>
+        <translation type="vanished">只读</translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="137"/>
         <source>Group or User</source>
-        <translation>组或用户名</translation>
+        <translation type="vanished">组或用户名</translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="249"/>
         <source>(Current User)</source>
-        <translation>(本用户)</translation>
+        <translation type="vanished">(本用户)</translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="329"/>
         <source>Current User</source>
-        <translation>本用户</translation>
+        <translation type="vanished">本用户</translation>
     </message>
     <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="134"/>
         <source>Read</source>
-        <translation type="vanished">可读</translation>
+        <translation>可读</translation>
     </message>
     <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="134"/>
         <source>Write</source>
-        <translation type="vanished">可写</translation>
+        <translation>可写</translation>
     </message>
     <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="134"/>
         <source>Executable</source>
-        <translation type="vanished">可执行</translation>
+        <translation>可执行</translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="179"/>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="188"/>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="178"/>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="187"/>
         <source>Can not get the permission info.</source>
         <translation>无法获取文件权限相关信息。</translation>
     </message>
     <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="248"/>
         <source>(Me)</source>
-        <translation type="vanished">(我)</translation>
+        <translation>(我)</translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="318"/>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="317"/>
         <source>Others</source>
         <translation>其他</translation>
     </message>
     <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="320"/>
         <source>Owner</source>
-        <translation type="vanished">拥有者</translation>
+        <translation>拥有者</translation>
     </message>
     <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="322"/>
         <source>Group</source>
-        <translation type="vanished">用户组</translation>
+        <translation>用户组</translation>
     </message>
     <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="324"/>
         <source>Other</source>
-        <translation type="vanished">其他</translation>
+        <translation>其他</translation>
     </message>
     <message>
         <source>Other Users</source>
         <translation type="vanished">其它用户</translation>
     </message>
     <message>
-        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="325"/>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="335"/>
         <source>You can not change the access of this file.</source>
         <translation>你无法修改该文件的权限。</translation>
     </message>
     <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="339"/>
         <source>Me</source>
-        <translation type="vanished">我</translation>
+        <translation>我</translation>
     </message>
     <message>
+        <location filename="../../libpeony-qt/controls/property-page/permissions-properties-page.cpp" line="343"/>
         <source>User</source>
-        <translation type="vanished">用户</translation>
+        <translation>用户</translation>
     </message>
 </context>
 <context>
diff --git a/translations/peony-qt-desktop/peony-qt-desktop_cs.ts b/translations/peony-qt-desktop/peony-qt-desktop_cs.ts
index 8c67a5d..23e1196 100644
--- a/translations/peony-qt-desktop/peony-qt-desktop_cs.ts
+++ b/translations/peony-qt-desktop/peony-qt-desktop_cs.ts
@@ -328,7 +328,7 @@
         <translation type="vanished">Masaüstünü kapatın ve çıkın</translation>
     </message>
     <message>
-        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="161"/>
+        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="164"/>
         <source>peony-qt-desktop</source>
         <translation>Masaüstü</translation>
     </message>
@@ -341,27 +341,27 @@
         <translation type="vanished">Masaüstü</translation>
     </message>
     <message>
-        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="308"/>
+        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="311"/>
         <source>Close the peony desktop window</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="311"/>
+        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="314"/>
         <source>Take over the dbus service.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="314"/>
+        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="317"/>
         <source>Take over the desktop displaying</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="317"/>
+        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="320"/>
         <source>Setup backgrounds</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="320"/>
+        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="323"/>
         <source>Open learning center.</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/translations/peony-qt-desktop/peony-qt-desktop_tr.ts b/translations/peony-qt-desktop/peony-qt-desktop_tr.ts
index 474439c..927940c 100644
--- a/translations/peony-qt-desktop/peony-qt-desktop_tr.ts
+++ b/translations/peony-qt-desktop/peony-qt-desktop_tr.ts
@@ -420,7 +420,7 @@
         <translation type="vanished">Masaüstünü kapatın ve çıkın</translation>
     </message>
     <message>
-        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="161"/>
+        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="164"/>
         <source>peony-qt-desktop</source>
         <translation>Masaüstü</translation>
     </message>
@@ -433,27 +433,27 @@
         <translation type="vanished">Masaüstü</translation>
     </message>
     <message>
-        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="308"/>
+        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="311"/>
         <source>Close the peony desktop window</source>
         <translation>Peony masaüstü penceresini kapat</translation>
     </message>
     <message>
-        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="311"/>
+        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="314"/>
         <source>Take over the dbus service.</source>
         <translation>Dbus servisini al</translation>
     </message>
     <message>
-        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="314"/>
+        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="317"/>
         <source>Take over the desktop displaying</source>
         <translation>Masaüstü görüntülemeyi al</translation>
     </message>
     <message>
-        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="317"/>
+        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="320"/>
         <source>Setup backgrounds</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="320"/>
+        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="323"/>
         <source>Open learning center.</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/translations/peony-qt-desktop/peony-qt-desktop_zh_CN.ts b/translations/peony-qt-desktop/peony-qt-desktop_zh_CN.ts
index d41388e..57f10dd 100644
--- a/translations/peony-qt-desktop/peony-qt-desktop_zh_CN.ts
+++ b/translations/peony-qt-desktop/peony-qt-desktop_zh_CN.ts
@@ -432,7 +432,7 @@
         <translation type="vanished">关闭桌面并退出</translation>
     </message>
     <message>
-        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="161"/>
+        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="164"/>
         <source>peony-qt-desktop</source>
         <translation>桌面</translation>
     </message>
@@ -445,27 +445,27 @@
         <translation type="vanished">桌面</translation>
     </message>
     <message>
-        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="308"/>
+        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="311"/>
         <source>Close the peony desktop window</source>
         <translation>关闭桌面程序</translation>
     </message>
     <message>
-        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="311"/>
+        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="314"/>
         <source>Take over the dbus service.</source>
         <translation>接管DBus服务。</translation>
     </message>
     <message>
-        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="314"/>
+        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="317"/>
         <source>Take over the desktop displaying</source>
         <translation>接管桌面</translation>
     </message>
     <message>
-        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="317"/>
+        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="320"/>
         <source>Setup backgrounds</source>
         <translation>Setup backgrounds</translation>
     </message>
     <message>
-        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="320"/>
+        <location filename="../../peony-qt-desktop/main/peony-desktop-application.cpp" line="323"/>
         <source>Open learning center.</source>
         <translation></translation>
     </message>
diff --git a/translations/peony-qt/peony-qt_cs.ts b/translations/peony-qt/peony-qt_cs.ts
index e73be0f..c795434 100644
--- a/translations/peony-qt/peony-qt_cs.ts
+++ b/translations/peony-qt/peony-qt_cs.ts
@@ -246,12 +246,12 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/windows/main-window.cpp" line="1397"/>
+        <location filename="../../src/windows/main-window.cpp" line="1400"/>
         <source>Tips info</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/windows/main-window.cpp" line="1398"/>
+        <location filename="../../src/windows/main-window.cpp" line="1401"/>
         <source>Trash has no file need to be cleaned.</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/translations/peony-qt/peony-qt_tr.ts b/translations/peony-qt/peony-qt_tr.ts
index bf7b7b9..320a4bf 100644
--- a/translations/peony-qt/peony-qt_tr.ts
+++ b/translations/peony-qt/peony-qt_tr.ts
@@ -270,12 +270,12 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished">Ara</translation>
     </message>
     <message>
-        <location filename="../../src/windows/main-window.cpp" line="1397"/>
+        <location filename="../../src/windows/main-window.cpp" line="1400"/>
         <source>Tips info</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/windows/main-window.cpp" line="1398"/>
+        <location filename="../../src/windows/main-window.cpp" line="1401"/>
         <source>Trash has no file need to be cleaned.</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/translations/peony-qt/peony-qt_zh_CN.ts b/translations/peony-qt/peony-qt_zh_CN.ts
index 58db5dc..2fcef0a 100644
--- a/translations/peony-qt/peony-qt_zh_CN.ts
+++ b/translations/peony-qt/peony-qt_zh_CN.ts
@@ -290,12 +290,12 @@ p, li { white-space: pre-wrap; }
         <translation>搜索</translation>
     </message>
     <message>
-        <location filename="../../src/windows/main-window.cpp" line="1397"/>
+        <location filename="../../src/windows/main-window.cpp" line="1400"/>
         <source>Tips info</source>
         <translation>温馨提示</translation>
     </message>
     <message>
-        <location filename="../../src/windows/main-window.cpp" line="1398"/>
+        <location filename="../../src/windows/main-window.cpp" line="1401"/>
         <source>Trash has no file need to be cleaned.</source>
         <translation>回收站没有文件需要被清空！</translation>
     </message>
-- 
2.43.0

