diff --git a/debian/changelog b/debian/changelog index 18b6a94..f45e238 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,16 @@ +yhkylin-backup-tools (4.1.0.1-ok6) yangtze; urgency=medium + + * BUG :【备份还原】【次要】删除备份成功的弹窗,关闭按钮无悬浮提示 + 【备份还原】【次要】数据备份更新时,点击桌面再点回应用,列表第一行字体颜色变为白色 + 【备份还原】【次要】列表窗口关闭悬浮提示样式错误 + 【备份还原】【次要】列表窗口可以最小化 + 【备份还原】【次要】列表窗口标题栏无图标 + * 需求号:无 + * 其它改动:无 + * 其它影响域:无 + + -- zhaominyong Mon, 10 Apr 2023 16:33:25 +0800 + yhkylin-backup-tools (4.1.0.1-ok5) yangtze; urgency=medium * BUG 号:162643 【备份还原】所有提示框中右下角显示为Ok diff --git a/debian/patches/0005-openkylin.patch b/debian/patches/0005-openkylin.patch new file mode 100644 index 0000000..9616e0d --- /dev/null +++ b/debian/patches/0005-openkylin.patch @@ -0,0 +1,8422 @@ +From: =?utf-8?b?6LW15rCR5YuH?= +Date: Mon, 10 Apr 2023 16:39:03 +0800 +Subject: =?utf-8?b?5L+u5aSN5LqG5LiA5om5b3Blbmt5bGlu5LiK55qE6aG16Z2i5qC35byP?= + =?utf-8?b?6Zeu6aKY?= + +--- + backup-daemon/backup-daemon.pro | 2 +- + backup-daemon/backupmanager_adaptor.cpp | 8 + + backup-daemon/backupmanager_adaptor.h | 4 + + backup-daemon/customizesystemrestoreproxy.cpp | 14 +- + backup-daemon/mybackupmanager.cpp | 10 + + backup-daemon/mybackupmanager.h | 2 + + backup-daemon/mymountproxy.cpp | 74 ++ + backup-daemon/mymountproxy.h | 2 + + backup-daemon/myprocess/mountbackupprocess.cpp | 5 +- + backup-daemon/systemrestoreproxy.cpp | 8 +- + backup-daemon/udisksystemrestoreproxy.cpp | 8 +- + common/dynamiccreator.h | 2 +- + common/mydefine.h | 12 +- + common/utils.cpp | 126 ++- + common/utils.h | 38 + + kybackup/backup_manager_interface.h | 6 + + kybackup/backuppointlistdialog.cpp | 58 +- + kybackup/backuppointlistdialog.h | 2 + + kybackup/deletebackupdialog.cpp | 8 +- + kybackup/kybackup.pro | 7 +- + kybackup/main.cpp | 22 +- + kybackup/maindialog.cpp | 11 +- + kybackup/module/databackup.cpp | 237 ++--- + kybackup/module/datarestore.cpp | 142 +-- + kybackup/module/ghostimage.cpp | 164 ++-- + kybackup/module/managebackuppointlist.cpp | 2 + + kybackup/module/operationlog.cpp | 6 +- + kybackup/module/selectrestorepoint.cpp | 2 + + kybackup/module/systembackup.cpp | 225 ++--- + kybackup/module/systemrestore.cpp | 142 +-- + kybackup/qt_bo_CN.ts | 1157 ++++++++++++------------ + kybackup/qt_zh_CN.ts | 1145 +++++++++++------------ + kybackup/resource/language/qt_bo_CN.qm | Bin 50792 -> 50933 bytes + kybackup/resource/language/qt_zh_CN.qm | Bin 30592 -> 30703 bytes + 34 files changed, 2028 insertions(+), 1623 deletions(-) + +diff --git a/backup-daemon/backup-daemon.pro b/backup-daemon/backup-daemon.pro +index 33d92e9..3e37486 100755 +--- a/backup-daemon/backup-daemon.pro ++++ b/backup-daemon/backup-daemon.pro +@@ -19,7 +19,7 @@ DEFINES += QT_DEPRECATED_WARNINGS + # In order to do so, uncomment the following line. + # You can also select to disable deprecated APIs only up to a certain version of Qt. + #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 +-QMAKE_CXXFLAGS += -Wno-implicit-fallthrough ++QMAKE_CXXFLAGS += -Wall -ggdb -Wno-implicit-fallthrough + + HEADERS += \ + ../common/mydefine.h \ +diff --git a/backup-daemon/backupmanager_adaptor.cpp b/backup-daemon/backupmanager_adaptor.cpp +index b11352f..4c38ef0 100755 +--- a/backup-daemon/backupmanager_adaptor.cpp ++++ b/backup-daemon/backupmanager_adaptor.cpp +@@ -49,6 +49,14 @@ bool ManagerAdaptor::umountBackupPartition() + return out0; + } + ++bool ManagerAdaptor::remountPartitionsForCasperMode() ++{ ++ // handle method call com.kylin.backup.manager.remountPartitionsForCasperMode ++ bool out0; ++ QMetaObject::invokeMethod(parent(), "remountPartitionsForCasperMode", Q_RETURN_ARG(bool, out0)); ++ return out0; ++} ++ + void ManagerAdaptor::autoBackUpForSystemUpdate_noreturn(const QString &backupName, const QString &createNote, const QString &incNote, const QString &frontUserName, int frontUid) + { + // handle method call com.kylin.backup.manager.autoBackUpForSystemUpdate_noreturn +diff --git a/backup-daemon/backupmanager_adaptor.h b/backup-daemon/backupmanager_adaptor.h +index c2ac9f2..de5d921 100755 +--- a/backup-daemon/backupmanager_adaptor.h ++++ b/backup-daemon/backupmanager_adaptor.h +@@ -71,6 +71,9 @@ class ManagerAdaptor: public QDBusAbstractAdaptor + " \n" + " \n" + " \n" ++" \n" ++" \n" ++" \n" + " \n" + " \n" + " \n" +@@ -128,6 +131,7 @@ public: // PROPERTIES + public Q_SLOTS: // METHODS + int Mount_backup_partition(); + bool umountBackupPartition(); ++ bool remountPartitionsForCasperMode(); + void autoBackUpForSystemUpdate_noreturn(const QString &backupName, const QString &createNote, const QString &incNote, const QString &frontUserName, int frontUid); + void autoRestoreForSystemUpdate(const QString& frontUserName, int frontUid); + int checkEnv(BackupWrapper backupWrapper); +diff --git a/backup-daemon/customizesystemrestoreproxy.cpp b/backup-daemon/customizesystemrestoreproxy.cpp +index 5d2cde5..03c0bb7 100755 +--- a/backup-daemon/customizesystemrestoreproxy.cpp ++++ b/backup-daemon/customizesystemrestoreproxy.cpp +@@ -46,7 +46,7 @@ bool CustomizeSystemRestoreProxy::checkEnvEx() + } + + // 2、检测.user.txt是否存在 +- m_userFile = m_backupPoint.m_path + BACKUP_SNAPSHOTS_PATH + "/" + m_backupWrapper.m_uuid + "/" + PATHS_USER_FILE; ++ m_userFile = Utils::getSysRootPath() + m_backupPoint.m_path + BACKUP_SNAPSHOTS_PATH + "/" + m_backupWrapper.m_uuid + "/" + PATHS_USER_FILE; + m_userFile.replace("//", "/"); + if (!Utils::fileExists(m_userFile)) { + qCritical(".user.txt文件不存在"); +@@ -55,7 +55,7 @@ bool CustomizeSystemRestoreProxy::checkEnvEx() + } + + // 3、检测.exclude.user.txt是否存在 +- m_excludeUserFile = m_backupPoint.m_path + BACKUP_SNAPSHOTS_PATH + "/" + m_backupWrapper.m_uuid + "/" + EXCLUDE_PATHS_USER_FILE; ++ m_excludeUserFile = Utils::getSysRootPath() + m_backupPoint.m_path + BACKUP_SNAPSHOTS_PATH + "/" + m_backupWrapper.m_uuid + "/" + EXCLUDE_PATHS_USER_FILE; + m_excludeUserFile.replace("//", "/"); + if (!Utils::fileExists(m_excludeUserFile)) { + qCritical(".exclude.user.txt文件不存在"); +@@ -64,7 +64,7 @@ bool CustomizeSystemRestoreProxy::checkEnvEx() + } + + // 4、检测还原点是否存在 +- m_backupPath = m_backupPoint.m_path + BACKUP_SNAPSHOTS_PATH + "/" + m_backupWrapper.m_uuid + "/data"; ++ m_backupPath = Utils::getSysRootPath() + m_backupPoint.m_path + BACKUP_SNAPSHOTS_PATH + "/" + m_backupWrapper.m_uuid + "/data"; + m_backupPath.replace("//", "/"); + if (Utils::isDirEmpty(m_backupPath)) { + qCritical("还原点{uuid}/data目录不存在"); +@@ -260,8 +260,11 @@ QStringList CustomizeSystemRestoreProxy::getRsyncArgs(CustomizeSystemRestoreScen + + case CustomizeSystemRestoreScene::SYSTEM_RESTORE : + // 还原工具不还原自身 +- args << "--exclude=/usr/bin/backup-daemon"; +- args << "--exclude=/usr/bin/kybackup"; ++ if (Utils::getSysRootPath() != CASPER_ROOT_PATH) { ++ // 试用模式时可以还原/target下面的备份还原工具 ++ args << "--exclude=/usr/bin/backup-daemon"; ++ args << "--exclude=/usr/bin/kybackup"; ++ } + args << "--exclude=/usr/bin/mount_fstab_efi"; + args << "--exclude=/usr/bin/backup-auto-efi"; + args << "--exclude=/usr/bin/backup-auto"; +@@ -348,6 +351,7 @@ void CustomizeSystemRestoreProxy::restoreSystem() + // 兼容Qt库从5.12.8升级到5.15,系统还原的最后也将备份还原工具本身还原 + // QString version = Utils::getBackupVersion(); + // if (version.contains("4.0.13")) ++ if (Utils::getSysRootPath() != CASPER_ROOT_PATH) + { + // initrd.img已经还原为旧状态,需要将新版本的backup-auto-efi等脚本文件更新到initrd.img中,这样我们修改后的新逻辑才能生效 + QString msg; +diff --git a/backup-daemon/mybackupmanager.cpp b/backup-daemon/mybackupmanager.cpp +index b98240a..9c14b7e 100755 +--- a/backup-daemon/mybackupmanager.cpp ++++ b/backup-daemon/mybackupmanager.cpp +@@ -77,6 +77,16 @@ bool MyBackupManager::umountBackup() + return true; + } + ++/** ++ * @brief 试用模式重新挂载分区 ++ * @return bool ++ */ ++bool MyBackupManager::remountPartitionsForCasperMode() ++{ ++ MyMountProxy mymount; ++ return mymount.remountPartitionsForCasperMode(); ++} ++ + /** + * @brief 环境检测 + * @param backupWrapper,参数 +diff --git a/backup-daemon/mybackupmanager.h b/backup-daemon/mybackupmanager.h +index 34e1396..8679d9a 100755 +--- a/backup-daemon/mybackupmanager.h ++++ b/backup-daemon/mybackupmanager.h +@@ -47,6 +47,8 @@ public slots: + int Mount_backup_partition(); + // 卸载backup分区 + bool umountBackupPartition(); ++ // 试用模式重新挂载分区 ++ bool remountPartitionsForCasperMode(); + // 环境检测 + int checkEnv(const BackupWrapper& backupWrapper); + // 备份 +diff --git a/backup-daemon/mymountproxy.cpp b/backup-daemon/mymountproxy.cpp +index f3c2ced..e1fccd2 100755 +--- a/backup-daemon/mymountproxy.cpp ++++ b/backup-daemon/mymountproxy.cpp +@@ -43,3 +43,77 @@ bool MyMountProxy::umountBackupPartition() + return m_processMount->umountBackupPartition(); + } + ++bool MyMountProxy::remountPartitionsForCasperMode() ++{ ++ qDebug("MyMountProxy::remountPartitionsForCasperMode invoke begin"); ++ ++ // 1. 判断是否试用模式 ++ QString rootPath = Utils::getSysRootPath(); ++ if (rootPath != CASPER_ROOT_PATH) ++ return false; ++ Utils::mkpath(rootPath); ++ ++ // 2. 查询各个分区 ++ QHash partitions = Utils::getPartitions(); ++ ++ // 2.1 重新挂载根分区到/target上 ++ const PartitionInfo& root = partitions.value(LABEL_SYSROOT); ++ m_processMount->umount(root.m_device); ++// m_processMount->umount(rootPath); ++ if (!m_processMount->mount(root.m_device, rootPath)) { ++ qCritical("remount root to /target failed!"); ++ return false; ++ } ++ ++ // 2.2 获取/etc/fstab配置的分区挂载点信息 ++ QString fstabPath = Utils::getSysRootPath() + FSTAB_PATH; ++ fstabPath.replace("//", "/"); ++ QHash mountPointToUuid = Utils::getPartUuidMap(fstabPath); ++ QHash uuidToMountPoint = Utils::swapKeyValue(mountPointToUuid); ++ ++ // 2.3 重新将其它分区挂载到/target下的相应目录 ++ QStringList parts; ++ parts << LABEL_SYSBOOT << LABEL_EFI << LABEL_DATA << LABEL_KYLINBACKUP; ++ for (const QString& label : parts) { ++ const PartitionInfo& part = partitions.value(label); ++ m_processMount->umount(part.m_device); ++ ++ // 备份分区不用挂载,后面会挂 ++ if (part.m_label == LABEL_KYLINBACKUP) ++ continue; ++ QString mountPoint = uuidToMountPoint.value(part.m_uuid); ++ if (mountPoint.isEmpty()) { ++ if (part.m_label == LABEL_SYSBOOT) ++ mountPoint = "/boot"; ++ else if (part.m_label == LABEL_EFI) ++ mountPoint = "/boot/efi"; ++ else if (part.m_label == LABEL_DATA) ++ mountPoint = "/data"; ++ } ++ ++ if (mountPoint.isEmpty()) ++ continue; ++ mountPoint = rootPath + mountPoint; ++ mountPoint.replace("//", "/"); ++ Utils::mkpath(mountPoint); ++ m_processMount->umount(mountPoint); ++ m_processMount->mount(part.m_device, mountPoint); ++ } ++ ++ // 3. 将/etc/fstab里的bind配置挂载上 ++ QHash mapBind = Utils::getFstabBindInfo(); ++ for (QHash::const_iterator it = mapBind.constBegin(); it != mapBind.constEnd(); ++it) { ++ QString key = it.key(); ++ QString value = it.value(); ++ key = rootPath + key; ++ key.replace("//", "/"); ++ value = rootPath + value; ++ value.replace("//", "/"); ++ m_processMount->umount(value); ++ m_processMount->mount(key, value); ++ } ++ ++ qDebug("MyMountProxy::remountPartitionsForCasperMode invoke end"); ++ return true; ++} ++ +diff --git a/backup-daemon/mymountproxy.h b/backup-daemon/mymountproxy.h +index ecc920e..92a5cb4 100755 +--- a/backup-daemon/mymountproxy.h ++++ b/backup-daemon/mymountproxy.h +@@ -15,6 +15,8 @@ public: + + bool umountBackupPartition(); + ++ bool remountPartitionsForCasperMode(); ++ + private: + MountBackupProcess* m_processMount; + }; +diff --git a/backup-daemon/myprocess/mountbackupprocess.cpp b/backup-daemon/myprocess/mountbackupprocess.cpp +index 3585d62..97e06bc 100755 +--- a/backup-daemon/myprocess/mountbackupprocess.cpp ++++ b/backup-daemon/myprocess/mountbackupprocess.cpp +@@ -49,8 +49,10 @@ bool MountBackupProcess::Do(const QString& diskUuid) + + bool MountBackupProcess::umountBackupPartition() + { ++ QString backupPath = Utils::getSysRootPath() + BACKUP_PATH; ++ backupPath.replace("//","/"); + QStringList arguments; +- arguments << QString("/backup"); ++ arguments << backupPath; + m_p->start("umount", arguments); + if (!m_p->waitForStarted()) { + qCritical("umount /backup process start failed!"); +@@ -73,6 +75,7 @@ bool MountBackupProcess::umountBackupPartition() + bool MountBackupProcess::umount(const QString& mountPath) + { + QStringList arguments; ++ arguments << "-R"; + arguments << mountPath; + m_p->start("umount", arguments); + if (!m_p->waitForStarted()) { +diff --git a/backup-daemon/systemrestoreproxy.cpp b/backup-daemon/systemrestoreproxy.cpp +index 4836ecd..51aa8b5 100755 +--- a/backup-daemon/systemrestoreproxy.cpp ++++ b/backup-daemon/systemrestoreproxy.cpp +@@ -275,8 +275,11 @@ QStringList SystemRestoreProxy::getRsyncArgs(SystemRestoreScene scene) + + case SystemRestoreScene::SYSTEM_RESTORE : + // 还原工具不还原自身 +- args << "--exclude=/usr/bin/backup-daemon"; +- args << "--exclude=/usr/bin/kybackup"; ++ if (Utils::getSysRootPath() != CASPER_ROOT_PATH) { ++ // 试用模式时可以还原/target下面的备份还原工具 ++ args << "--exclude=/usr/bin/backup-daemon"; ++ args << "--exclude=/usr/bin/kybackup"; ++ } + args << "--exclude=/usr/bin/mount_fstab_efi"; + args << "--exclude=/usr/bin/backup-auto-efi"; + args << "--exclude=/usr/bin/backup-auto"; +@@ -419,6 +422,7 @@ void SystemRestoreProxy::restoreSystem() + // 兼容Qt库从5.12.8升级到5.15,系统还原的最后也将备份还原工具本身还原 + // QString version = Utils::getBackupVersion(); + // if (version.contains("4.0.13")) ++ if (Utils::getSysRootPath() != CASPER_ROOT_PATH) + { + // initrd.img已经还原为旧状态,需要将新版本的backup-auto-efi等脚本文件更新到initrd.img中,这样我们修改后的新逻辑才能生效 + QString msg; +diff --git a/backup-daemon/udisksystemrestoreproxy.cpp b/backup-daemon/udisksystemrestoreproxy.cpp +index bab2b5c..fe2939c 100755 +--- a/backup-daemon/udisksystemrestoreproxy.cpp ++++ b/backup-daemon/udisksystemrestoreproxy.cpp +@@ -278,8 +278,11 @@ QStringList UDiskSystemRestoreProxy::getRsyncArgs(SystemRestoreScene scene) + + case SystemRestoreScene::SYSTEM_RESTORE : + // 还原工具不还原自身 +- args << "--exclude=/usr/bin/backup-daemon"; +- args << "--exclude=/usr/bin/kybackup"; ++ if (Utils::getSysRootPath() != CASPER_ROOT_PATH) { ++ // 试用模式时可以还原/target下面的备份还原工具 ++ args << "--exclude=/usr/bin/backup-daemon"; ++ args << "--exclude=/usr/bin/kybackup"; ++ } + args << "--exclude=/usr/bin/mount_fstab_efi"; + args << "--exclude=/usr/bin/backup-auto-efi"; + args << "--exclude=/usr/bin/backup-auto"; +@@ -472,6 +475,7 @@ void UDiskSystemRestoreProxy::restoreSystem() + // 兼容Qt库从5.12.8升级到5.15,系统还原的最后也将备份还原工具本身还原 + // QString version = Utils::getBackupVersion(); + // if (version.contains("4.0.13")) ++ if (Utils::getSysRootPath() != CASPER_ROOT_PATH) + { + // initrd.img已经还原为旧状态,需要将新版本的backup-auto-efi等脚本文件更新到initrd.img中,这样我们修改后的新逻辑才能生效 + QString msg; +diff --git a/common/dynamiccreator.h b/common/dynamiccreator.h +index 1d33ce2..ea07706 100755 +--- a/common/dynamiccreator.h ++++ b/common/dynamiccreator.h +@@ -66,7 +66,7 @@ public: \ + #define IMPLEMENT_DYNCREATE_WITH_ONE_PARAM(class_name, return_type, param_type) \ + return_type class_name::create##class_name##Object(param_type arg1) \ + { \ +- return (return_type)(new class_name(arg1)); \ ++ return static_cast(new class_name(arg1)); \ + } \ + static int g_icreate##class_name##Object = DynamicCreator::registerClass(#class_name, class_name::create##class_name##Object); + +diff --git a/common/mydefine.h b/common/mydefine.h +index 6a530e3..2b065f8 100755 +--- a/common/mydefine.h ++++ b/common/mydefine.h +@@ -21,7 +21,7 @@ + #define GHOST_PATH "/ghost" + + #define DATA_PATH "/data" +- ++#define CASPER_ROOT_PATH "/target" + #define BOOTINFO_PATH "/etc/.bootinfo" + #define FSTAB_PATH "/etc/fstab" + #define LOCK_FILE "/tmp/lock/kylin-backup.lock" +@@ -69,6 +69,16 @@ + + #define END_LINE "\n" + ++// 分区label ++#define LABEL_SYSROOT "SYSROOT" ++#define LABEL_EFI "ESP" ++#define LABEL_SYSBOOT "SYSBOOT" ++#define LABEL_KYLINBACKUP "KYLIN-BACKUP" ++#define LABEL_DATA "DATA" ++ ++#define PC_TITLE_BAR_SIZE 30 ++#define TABLET_TITLE_BAR_SIZE 48 ++ + /** + * @brief 备份还原操作类型 + */ +diff --git a/common/utils.cpp b/common/utils.cpp +index 173cf81..12535b4 100755 +--- a/common/utils.cpp ++++ b/common/utils.cpp +@@ -47,7 +47,7 @@ void Utils::initSysRootPath() + { + QString sysRootPath = "/"; + if (Utils::isCasper()) +- sysRootPath = "/target"; ++ sysRootPath = CASPER_ROOT_PATH; + + m_sysRootPath = sysRootPath; + } +@@ -346,6 +346,68 @@ QHash Utils::getPartUuidMap(const QString &fstab) + return result; + } + ++/** ++ * @brief swapKeyValue ++ * @param hash ++ * @return ++ */ ++QHash Utils::swapKeyValue(const QHash& hash) ++{ ++ QHash result; ++ for (QHash::const_iterator it = hash.constBegin(); it != hash.constEnd(); ++it) { ++ result.insert(it.value(), it.key()); ++ } ++ ++ return result; ++} ++ ++/** ++ * @brief /etc/fstab中的绑定映射关系 ++ * @return src-dest键值对map ++ */ ++QHash Utils::getFstabBindInfo() ++{ ++ QHash result; ++ QString fstabPath = Utils::m_sysRootPath + FSTAB_PATH; ++ fstabPath.replace("//", "/"); ++ ++ QFile file(fstabPath); ++ if (!file.open(QIODevice::ReadOnly)) ++ return result; ++ QTextStream in(&file); ++ while (!in.atEnd()) { ++ const QString &line = in.readLine(); ++ if (line.startsWith("#")) ++ continue ; ++ if (line.startsWith("UUID=")) ++ continue ; ++ if (line.startsWith("/dev/")) ++ continue ; ++ if (line.isEmpty()) ++ continue ; ++ if (!line.contains("bind")) ++ continue ; ++ ++ // 配置文件/etc/fstab每行6个域: , 形如: ++ // UUID=232f5fb4-53e0-46b9-ba9b-22bfec64f2a2 /boot ext4 rw,relatime 0 0 ++ QStringList list = line.split(QRegularExpression("[ \t]+")); ++ QStringList fields; ++ for (int i = 0; i < list.size(); ++i) { ++ QString field = list.at(i); ++ field = field.trimmed(); ++ if (field.isEmpty()) ++ continue; ++ fields << field; ++ } ++ // 配置文件/etc/fstab每行6个域,第二个域为挂载路径, 为统一路径使用挂接点,排除第一个域 ++ if (6 == fields.size()) ++ result.insert(fields.at(0), fields.at(1)); ++ } ++ ++ file.close(); ++ return result; ++} ++ + /** + * @brief 路径不存在则创建,不支持递归创建 + * @param path +@@ -806,6 +868,68 @@ QHash Utils::getRemovableStorages() + return removalbeStorages; + } + ++/** ++ * @brief 获取分区信息 ++ * @return “LABEL-分区信息”键值对 ++ */ ++QHash Utils::getPartitions() ++{ ++ QString blkidResult = Utils::processCmd("blkid"); ++ QStringList lines = blkidResult.split("\n"); ++ /* ++ blkid命令结果形如: ++ /dev/sda3: LABEL="SYSROOT" UUID="0336d6bf-4ce5-4dcf-8976-4f51be65e0ea" TYPE="ext4" PARTLABEL="SYSROOT" PARTUUID="d255022a-597e-471a-8407-bf8f82c66f8c" ++ /dev/sda1: LABEL_FATBOOT="ESP" LABEL="ESP" UUID="A995-1AE9" TYPE="vfat" PARTLABEL="EFI" PARTUUID="98282378-7d21-4ee8-96f2-abbe9903b6db" ++ /dev/sda2: LABEL="SYSBOOT" UUID="939dc93e-6c81-4f50-8de8-abd8e5ad2058" TYPE="ext4" PARTLABEL="boot" PARTUUID="b3638559-0ebd-4df1-96ef-49058e703a7f" ++ /dev/sda4: LABEL="KYLIN-BACKUP" UUID="5f98378a-56fc-4ba5-a751-2bc51c59a0a4" TYPE="ext4" PARTLABEL="backup" PARTUUID="31a2e37b-2868-4959-8402-23e135ddd9aa" ++ /dev/sda5: LABEL="DATA" UUID="f363d368-ef4e-4a19-a997-be4c3bfaaca5" TYPE="ext4" PARTLABEL="data" PARTUUID="c24d9d39-9cb1-4eb2-9b88-e807decbb8e5" ++ /dev/sda6: LABEL="SWAP" UUID="577b58ad-78a4-4a68-84b6-07095d562614" TYPE="swap" PARTLABEL="logical" PARTUUID="acba62b4-0747-44d9-9d87-82013762af31" ++ */ ++ ++ QHash result; ++ for (const QString& line : lines) { ++ QStringList fields = line.split(QRegularExpression(":[ \t]+")); ++ if (fields.size() != 2) ++ continue; ++ QString device = fields.at(0); ++ QString desc = fields.at(1); ++ PartitionInfo partitionInfo; ++ partitionInfo.m_device = device; ++ QStringList attrs = desc.split(QRegularExpression("[ \t]+")); ++ for (const QString& attr : attrs) { ++ if (attr.startsWith("LABEL=")) { ++ QStringList pairs = attr.split("="); ++ if (pairs.size() != 2) ++ continue; ++ QString label = pairs.at(1); ++ label.replace("\"", ""); ++ partitionInfo.m_label = label; ++ } else if (attr.startsWith("UUID=")) { ++ QStringList pairs = attr.split("="); ++ if (pairs.size() != 2) ++ continue; ++ QString uuid = pairs.at(1); ++ uuid.replace("\"", ""); ++ partitionInfo.m_uuid = uuid; ++ } else if (attr.startsWith("TYPE=")) { ++ QStringList pairs = attr.split("="); ++ if (pairs.size() != 2) ++ continue; ++ QString type = pairs.at(1); ++ type.replace("\"", ""); ++ partitionInfo.m_type = type; ++ } ++ ++ if (!partitionInfo.m_label.isEmpty() && !partitionInfo.m_uuid.isEmpty() && !partitionInfo.m_type.isEmpty()) { ++ result.insert(partitionInfo.m_label, partitionInfo); ++ break; ++ } ++ } ++ } ++ ++ return result; ++} ++ + /** + * @brief 获取挂接的计算机内部磁盘 + * @return 内部磁盘挂接路径列表 +diff --git a/common/utils.h b/common/utils.h +index 673264f..f29d640 100755 +--- a/common/utils.h ++++ b/common/utils.h +@@ -16,6 +16,15 @@ public: + static QString m_archDetect; + }; + ++class PartitionInfo ++{ ++public: ++ QString m_device; ++ QString m_label; ++ QString m_uuid; ++ QString m_type; ++}; ++ + /** + * @brief 工具类 + * @author zhaominyong +@@ -102,6 +111,19 @@ public: + */ + static QHash getPartUuidMap(const QString &fstab); + ++ /** ++ * @brief swapKeyValue ++ * @param hash ++ * @return ++ */ ++ static QHash swapKeyValue(const QHash& hash); ++ ++ /** ++ * @brief /etc/fstab中的绑定映射关系 ++ * @return src-dest键值对map ++ */ ++ static QHash getFstabBindInfo(); ++ + /** + * @brief 路径不存在则创建,不支持递归创建 + * @param path +@@ -225,6 +247,22 @@ public: + */ + static QList getLocalDisks(); + ++ /** ++ * @brief 获取分区信息 ++ * @return “LABEL-分区信息”键值对 ++ */ ++ static QHash getPartitions(); ++ ++ /** ++ * @brief 向文件里面覆盖写文本内容 ++ * @param fileName ++ * @param text ++ * @return true-成功; false-失败 ++ */ ++ static bool writeFile(const QString& fileName, const QString& text); ++ ++ static void echoKysecStatus(bool flag); ++ + /** + * @brief 设置安全状态 + * @param enable——true,开启保护;false,关闭保护 +diff --git a/kybackup/backup_manager_interface.h b/kybackup/backup_manager_interface.h +index a735a92..5bc8c40 100755 +--- a/kybackup/backup_manager_interface.h ++++ b/kybackup/backup_manager_interface.h +@@ -49,6 +49,12 @@ public Q_SLOTS: // METHODS + return asyncCallWithArgumentList(QStringLiteral("umountBackupPartition"), argumentList); + } + ++ inline QDBusPendingReply remountPartitionsForCasperMode() ++ { ++ QList argumentList; ++ return asyncCallWithArgumentList(QStringLiteral("remountPartitionsForCasperMode"), argumentList); ++ } ++ + inline QDBusPendingReply<> autoBackUpForSystemUpdate_noreturn(const QString &autobackup_name, const QString &create_note, const QString &inc_note, const QString &frontUserName, int frontUid) + { + QList argumentList; +diff --git a/kybackup/backuppointlistdialog.cpp b/kybackup/backuppointlistdialog.cpp +index c690769..37d254b 100755 +--- a/kybackup/backuppointlistdialog.cpp ++++ b/kybackup/backuppointlistdialog.cpp +@@ -1,12 +1,16 @@ + #include "backuppointlistdialog.h" + #include "ui_backuppointlistdialog.h" + #include ++#include + #include +-#include "component/mylabel.h" ++#include ++#include + #include "component/mypushbutton.h" ++#include "../common/mydefine.h" + #include "../common/utils.h" + #include "globalbackupinfo.h" + #include "gsettingswrapper.h" ++#include "xatom-helper.h" + + BackupPointListDialog::BackupPointListDialog(QWidget *parent, bool isOnlyShowLocal) : + QDialog(parent), +@@ -22,14 +26,53 @@ BackupPointListDialog::BackupPointListDialog(QWidget *parent, bool isOnlyShowLoc + // this->setWindowFlags(Qt::WindowCloseButtonHint); + // this->setWindowFlags(this->windowFlags() & ~Qt::WindowMinMaxButtonsHint); + +- // this->setMinimumSize(QSize(800, 368)); + // 为解决贴边问题,设置为固定大小 +- this->setFixedSize(QSize(800, 368)); ++ this->setFixedSize(QSize(800, 408)); + this->setAutoFillBackground(true); + ++ // 添加窗管协议 ++ if (GlobelBackupInfo::instance().isWayland()){ ++ // 去除窗管标题栏,传入参数为QWidget * ++ kdk::UkuiStyleHelper::self()->removeHeader(this); ++ } else { ++ MotifWmHints hints; ++ hints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; ++ hints.functions = MWM_FUNC_ALL; ++ hints.decorations = MWM_DECOR_BORDER; ++ XAtomHelper::getInstance()->setWindowMotifHint(winId(), hints); ++ setWindowModality(Qt::WindowModal); ++ } ++ + // 纵向布局 + QVBoxLayout *vlayout = new QVBoxLayout; +- vlayout->setContentsMargins(20, 0, 20, 10); ++ ++ // 设置标题栏 ++ QHBoxLayout * titleLayout = new QHBoxLayout(); ++ // logo ++ PixmapLabel *titleIcon = new PixmapLabel; ++ titleIcon->setFixedSize(24, 24); ++ titleIcon->setThemeIconSchema(THEME_YHKYLIN_BACKUP_TOOLS, ":/images/yhkylin-backup-tools.png"); ++ // 标题 ++ m_titleLabel = new MyLabel; ++ m_titleLabel->setFixedHeight(30); ++ m_titleLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); ++ // 关闭按钮 ++ QPushButton *buttonClose = new QPushButton; ++ buttonClose->setProperty("isWindowButton", 0x2); ++ buttonClose->setProperty("useIconHighlightEffect", 0x8); ++ buttonClose->setFlat(true); ++ if (GlobelBackupInfo::instance().isTabletMode()) ++ buttonClose->setFixedSize(TABLET_TITLE_BAR_SIZE, TABLET_TITLE_BAR_SIZE); ++ else ++ buttonClose->setFixedSize(PC_TITLE_BAR_SIZE, PC_TITLE_BAR_SIZE); ++ buttonClose->setIcon(QIcon::fromTheme("window-close-symbolic")); ++ buttonClose->setToolTip(tr("Close")); ++ connect(buttonClose, &QPushButton::clicked, this, &BackupPointListDialog::close); ++ ++ titleLayout->addWidget(titleIcon); ++ titleLayout->addWidget(m_titleLabel); ++ titleLayout->addWidget(buttonClose); ++ vlayout->addLayout(titleLayout); + + QStringList headerLabels; + // 注意:此处的列需要和枚举Column_Index一一对应 +@@ -59,9 +102,14 @@ BackupPointListDialog::BackupPointListDialog(QWidget *parent, bool isOnlyShowLoc + m_tableWidget->setAlternatingRowColors(true); + m_tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); + m_tableWidget->setShowGrid(false); +- vlayout->addWidget(m_tableWidget); ++ ++ QHBoxLayout *tableLayout = new QHBoxLayout; ++ tableLayout->setContentsMargins(10, 0, 10, 0); ++ tableLayout->addWidget(m_tableWidget); ++ vlayout->addLayout(tableLayout); + + m_bottomLayout = new QHBoxLayout; ++ m_bottomLayout->setContentsMargins(10, 0, 10, 0); + vlayout->addLayout(m_bottomLayout); + this->setLayout(vlayout); + +diff --git a/kybackup/backuppointlistdialog.h b/kybackup/backuppointlistdialog.h +index 07148c0..a501b78 100755 +--- a/kybackup/backuppointlistdialog.h ++++ b/kybackup/backuppointlistdialog.h +@@ -10,6 +10,7 @@ + #include "../backup-daemon/parsebackuplist.h" + #include "module/udiskdetector.h" + #include "component/pixmaplabel.h" ++#include "component/mylabel.h" + + namespace Ui { + class BackupPointListDialog; +@@ -52,6 +53,7 @@ protected: + QHBoxLayout *m_bottomLayout = nullptr; + PixmapLabel *m_labelEmpty; // 空记录图片 + QLabel *m_labelEmptyText; // 空记录文本 ++ MyLabel *m_titleLabel; // 窗口标题 + private: + Ui::BackupPointListDialog *ui; + +diff --git a/kybackup/deletebackupdialog.cpp b/kybackup/deletebackupdialog.cpp +index d8d8aeb..f8ac6d8 100755 +--- a/kybackup/deletebackupdialog.cpp ++++ b/kybackup/deletebackupdialog.cpp +@@ -19,8 +19,6 @@ DeleteBackupDialog::DeleteBackupDialog(ParseBackupList::BackupPoint backupPonit, + m_pInterface(nullptr) + { + ui->setupUi(this); +- // setMinimumSize(450, 138); +- // setMaximumSize(450, 200); + // 为解决自动贴边问题,设置为固定大小 + setFixedSize(450, 200); + this->setAutoFillBackground(true); +@@ -58,8 +56,12 @@ DeleteBackupDialog::DeleteBackupDialog(ParseBackupList::BackupPoint backupPonit, + m_buttonClose->setProperty("isWindowButton", 0x2); + m_buttonClose->setProperty("useIconHighlightEffect", 0x8); + m_buttonClose->setFlat(true); +- m_buttonClose->setFixedSize(30, 30); ++ if (GlobelBackupInfo::instance().isTabletMode()) ++ m_buttonClose->setFixedSize(TABLET_TITLE_BAR_SIZE, TABLET_TITLE_BAR_SIZE); ++ else ++ m_buttonClose->setFixedSize(PC_TITLE_BAR_SIZE, PC_TITLE_BAR_SIZE); + m_buttonClose->setIcon(QIcon::fromTheme("window-close-symbolic")); ++ m_buttonClose->setToolTip(tr("Close")); + + titleLayout->addWidget(m_mTitleIcon); + titleLayout->addWidget(m_titleLabel); +diff --git a/kybackup/kybackup.pro b/kybackup/kybackup.pro +index 8e48481..820fd22 100755 +--- a/kybackup/kybackup.pro ++++ b/kybackup/kybackup.pro +@@ -28,6 +28,7 @@ DEFINES += QT_DEPRECATED_WARNINGS + # In order to do so, uncomment the following line. + # You can also select to disable deprecated APIs only up to a certain version of Qt. + #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 ++QMAKE_CXXFLAGS += -Wall -ggdb -Wno-implicit-fallthrough + + HEADERS += \ + ../backup-daemon/parsebackuplist.h \ +@@ -159,6 +160,6 @@ RESOURCES += \ + + + # Default rules for deployment. +-qnx: target.path = /tmp/$${TARGET}/bin +-else: unix:!android: target.path = /opt/$${TARGET}/bin +-!isEmpty(target.path): INSTALLS += target ++#qnx: target.path = /tmp/$${TARGET}/bin ++#else: unix:!android: target.path = /opt/$${TARGET}/bin ++#!isEmpty(target.path): INSTALLS += target +diff --git a/kybackup/main.cpp b/kybackup/main.cpp +index 8551611..cc85b58 100755 +--- a/kybackup/main.cpp ++++ b/kybackup/main.cpp +@@ -17,10 +17,12 @@ + #include "messageboxutils.h" + #include + #include ++#include "backup_manager_interface.h" + + // 声明 + void initApp(QApplication& a); + bool isManager(); ++void remountPartitionsForCasperMode(); + void centerToScreen(QWidget* widget); + + int main(int argc, char *argv[]) +@@ -149,9 +151,10 @@ void initApp(QApplication& a) + // 当前操作员是否管理员用户 + GlobelBackupInfo::instance().setIsManager(isManager()); + +- // 试安装模式运行时需要将原系统的根分区挂载到/target目录,并将其它分区分别挂载,以备后面系统还原使用 +- if (GlobelBackupInfo::instance().isCasper()) { +- // TODO:暂不支持此中模式 ++ // 试用模式运行时需要将原系统的根分区挂载到/target目录,并将其它分区分别挂载,以备后面系统还原使用 ++ if (GlobelBackupInfo::instance().isCasper()) ++ { ++ remountPartitionsForCasperMode(); + } + } + +@@ -168,7 +171,7 @@ bool isManager() + QString rootPath = Utils::getSysRootPath(); + // 只正常启动程序时需校验是否管理员账号启动 + if ("/" != rootPath) { +- // 试安装模式运行 ++ // 试用模式运行 + GlobelBackupInfo::instance().setIsCasper(true); + return true; + } +@@ -196,6 +199,17 @@ bool isManager() + return 0 == result ? false : true; + } + ++/** ++ * @brief CasperMode重新挂载分区 ++ * @note 试用模式使用备份还原时需将各个分区挂载到/target目录,当前进入试用模式后,各个分区是挂载到/media/xxx/目录下的,为了方便还原重新挂载到/target目录 ++ */ ++void remountPartitionsForCasperMode() ++{ ++ // 卸载/backup分区 ++ ComKylinBackupManagerInterface intf("com.kylin.backup", "/", QDBusConnection::systemBus()); ++ intf.remountPartitionsForCasperMode(); ++} ++ + /** + * @brief 居中显示窗口 + * @param widget +diff --git a/kybackup/maindialog.cpp b/kybackup/maindialog.cpp +index fcfbaa2..0eb6e03 100755 +--- a/kybackup/maindialog.cpp ++++ b/kybackup/maindialog.cpp +@@ -9,6 +9,7 @@ + #include + #include "xatom-helper.h" + #include "../common/mydefine.h" ++#include "../common/dynamiccreator.h" + #include "backup_manager_interface.h" + #include "globalbackupinfo.h" + #include "messageboxutils.h" +@@ -124,8 +125,6 @@ void MainDialog::initUI() + initTileBar(); + } + +-#define PC_TITLE_BAR_SIZE 30 +-#define TABLET_TITLE_BAR_SIZE 48 + void MainDialog::initTileBar() + { + m_titleLayout = new QHBoxLayout; +@@ -367,6 +366,10 @@ void MainDialog::sltMessageReceived(const QString &msg) + } + } + ++/** ++ * @brief 挂载备份分区 ++ * @note 程序开启时挂载备份分区 ++ */ + void MainDialog::mountBackupPartition() + { + // 挂载/backup分区 +@@ -400,6 +403,10 @@ void MainDialog::mountBackupPartition() + } + } + ++/** ++ * @brief 卸载备份分区 ++ * @note 应用关闭时卸载备份分区,以隐藏保护以防误删除 ++ */ + void MainDialog::umountBackupPartition() + { + // 卸载/backup分区 +diff --git a/kybackup/module/databackup.cpp b/kybackup/module/databackup.cpp +index bbc147b..dcffb66 100755 +--- a/kybackup/module/databackup.cpp ++++ b/kybackup/module/databackup.cpp +@@ -73,7 +73,7 @@ DataBackup::~DataBackup() + */ + void DataBackup::initFirstWidget() + { +- QWidget *first = new QWidget; ++ QWidget *homePage = new QWidget; + QVBoxLayout *vLayout = new QVBoxLayout; + vLayout->addStretch(); + +@@ -86,70 +86,70 @@ void DataBackup::initFirstWidget() + centerHBoxLayout->addStretch(); + vLayout->addLayout(centerHBoxLayout); + // 图片 +- PixmapLabel *imageBackup_firstPage = new PixmapLabel(center); +- imageBackup_firstPage->setGeometry(center->width() - 40 - PICTURE_SIZE, 160, PICTURE_SIZE, PICTURE_SIZE); +- imageBackup_firstPage->setScaledContents(true); +- imageBackup_firstPage->setLightAndDarkPixmap(":/images/data_backup.png", ":/images/data_backup_dark.png"); ++ PixmapLabel *imageBackup = new PixmapLabel(center); ++ imageBackup->setGeometry(center->width() - 40 - PICTURE_SIZE, 160, PICTURE_SIZE, PICTURE_SIZE); ++ imageBackup->setScaledContents(true); ++ imageBackup->setLightAndDarkPixmap(":/images/data_backup.png", ":/images/data_backup_dark.png"); + + // 系统备份大字提示 +- MyLabel *labelBackup_firstPage = new MyLabel(center); +- labelBackup_firstPage->setDeplayText(tr("Data Backup")); +- labelBackup_firstPage->setFixedWidth(center->width() - 200); +- labelBackup_firstPage->setFixedHeight(48); +- labelBackup_firstPage->move(41, 120); ++ MyLabel *labelBackup = new MyLabel(center); ++ labelBackup->setDeplayText(tr("Data Backup")); ++ labelBackup->setFixedWidth(center->width() - 200); ++ labelBackup->setFixedHeight(48); ++ labelBackup->move(41, 120); + // 默认水平左对齐,上下居中对齐;故不需要设置 +- // labelBackup_firstPage->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); +- // labelBackup_firstPage->setText(tr("System Backup")); ++ // labelBackup->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); ++ // labelBackup->setText(tr("System Backup")); + QFont font; + font.setBold(true); + font.setPixelSize(36); +- labelBackup_firstPage->setFont(font); +- // labelBackup_firstPage->setAttribute(Qt::WA_TranslucentBackground); +- labelBackup_firstPage->setScaledContents(true); +- labelBackup_firstPage->adjustSize(); ++ labelBackup->setFont(font); ++ // labelBackup->setAttribute(Qt::WA_TranslucentBackground); ++ labelBackup->setScaledContents(true); ++ labelBackup->adjustSize(); + + // 数据备份说明 +- MyLabel *labelNote_firstPage = new MyLabel(center); +- labelNote_firstPage->setFixedWidth(center->width() - 45); +- labelNote_firstPage->setFixedHeight(24); +- labelNote_firstPage->move(41, 180); ++ MyLabel *labelNote = new MyLabel(center); ++ labelNote->setFixedWidth(center->width() - 45); ++ labelNote->setFixedHeight(24); ++ labelNote->move(41, 180); + if (Utils::isHuawei990()) +- labelNote_firstPage->setDeplayText(tr("Only files in the /home, and /data directories can be backed up")); ++ labelNote->setDeplayText(tr("Only files in the /home, and /data directories can be backed up")); + else +- labelNote_firstPage->setDeplayText(tr("Only files in the /home, and /data/usershare directories can be backed up")); ++ labelNote->setDeplayText(tr("Only files in the /home, and /data/usershare directories can be backed up")); + font.setBold(false); + font.setPixelSize(18); +- labelNote_firstPage->setFont(font); +- labelNote_firstPage->setScaledContents(true); +- labelNote_firstPage->adjustSize(); ++ labelNote->setFont(font); ++ labelNote->setScaledContents(true); ++ labelNote->adjustSize(); + + // 多点还原 +- MyIconLabel *iconMultiBackup_firstPage = new MyIconLabel(center); +- iconMultiBackup_firstPage->setGeometry(41, 244, 210, 36); +- iconMultiBackup_firstPage->setThemeIcon("ukui-multipoint-symbolic", ":/symbos/ukui-multipoint-symbolic"); +- iconMultiBackup_firstPage->setDesplayText(tr("Multi-Spot")); +- iconMultiBackup_firstPage->setEnabled(false); ++ MyIconLabel *iconMultiBackup = new MyIconLabel(center); ++ iconMultiBackup->setGeometry(41, 244, 210, 36); ++ iconMultiBackup->setThemeIcon("ukui-multipoint-symbolic", ":/symbos/ukui-multipoint-symbolic"); ++ iconMultiBackup->setDesplayText(tr("Multi-Spot")); ++ iconMultiBackup->setEnabled(false); + + // 安全 +- MyIconLabel *iconSecurity_firstPage = new MyIconLabel(center); +- iconSecurity_firstPage->setGeometry(231, 244, 180, 36); +- iconSecurity_firstPage->setThemeIcon("ukui-bf-security-symbolic", ":/symbos/ukui-bf-security-symbolic"); +- iconSecurity_firstPage->setDesplayText(tr("Security")); +- iconSecurity_firstPage->setEnabled(false); ++ MyIconLabel *iconSecurity = new MyIconLabel(center); ++ iconSecurity->setGeometry(231, 244, 180, 36); ++ iconSecurity->setThemeIcon("ukui-bf-security-symbolic", ":/symbos/ukui-bf-security-symbolic"); ++ iconSecurity->setDesplayText(tr("Security")); ++ iconSecurity->setEnabled(false); + + // 防止数据丢失 +- MyIconLabel *iconDataLoss_firstPage = new MyIconLabel(center); +- iconDataLoss_firstPage->setGeometry(41, 296, 210, 36); +- iconDataLoss_firstPage->setThemeIcon("ukui-bf-dataloss-symbolic", ":/symbos/ukui-bf-dataloss-symbolic"); +- iconDataLoss_firstPage->setDesplayText(tr("Protect Data")); +- iconDataLoss_firstPage->setEnabled(false); ++ MyIconLabel *iconDataLoss = new MyIconLabel(center); ++ iconDataLoss->setGeometry(41, 296, 210, 36); ++ iconDataLoss->setThemeIcon("ukui-bf-dataloss-symbolic", ":/symbos/ukui-bf-dataloss-symbolic"); ++ iconDataLoss->setDesplayText(tr("Protect Data")); ++ iconDataLoss->setEnabled(false); + + // 方便快捷 +- MyIconLabel *iconSimple_firstPage = new MyIconLabel(center); +- iconSimple_firstPage->setGeometry(231, 296, 180, 36); +- iconSimple_firstPage->setThemeIcon("ukui-bf-fast-symbolic", ":/symbos/ukui-bf-fast-symbolic"); +- iconSimple_firstPage->setDesplayText(tr("Convenient")); +- iconSimple_firstPage->setEnabled(false); ++ MyIconLabel *iconSimple = new MyIconLabel(center); ++ iconSimple->setGeometry(231, 296, 180, 36); ++ iconSimple->setThemeIcon("ukui-bf-fast-symbolic", ":/symbos/ukui-bf-fast-symbolic"); ++ iconSimple->setDesplayText(tr("Convenient")); ++ iconSimple->setEnabled(false); + + // 开始备份按钮 + MyPushButton *beginBackup = new MyPushButton(center); +@@ -234,10 +234,10 @@ void DataBackup::initFirstWidget() + vLayout->addStretch(); + vLayout->addLayout(bottomHBoxLayout); + vLayout->addSpacing(20); +- first->setLayout(vLayout); ++ homePage->setLayout(vLayout); + + connect(backupPointManage, &MyPushButton::clicked, this, [=]() { +- ManageBackupPointList backupManager(first, ManageBackupPointList::DATA); ++ ManageBackupPointList backupManager(homePage, ManageBackupPointList::DATA); + backupManager.exec(); + }); + connect(GlobelBackupInfo::instance().getGlobalSignals(), &GlobalSignals::styleNameChanged, this, [=](bool isDark) { +@@ -256,7 +256,7 @@ void DataBackup::initFirstWidget() + backupPointManage->setPalette(pal); + }); + +- addWidget(first); ++ addWidget(homePage); + } + + /** +@@ -290,7 +290,7 @@ void DataBackup::on_next_clicked(bool checked) + */ + void DataBackup::initSecondWidget() + { +- QWidget *second = new QWidget; ++ QWidget *selectPathPage = new QWidget; + + // 纵向布局 + QVBoxLayout *vlayout = new QVBoxLayout; +@@ -300,7 +300,7 @@ void DataBackup::initSecondWidget() + QHBoxLayout * hlayoutLine1 = new QHBoxLayout; + hlayoutLine1->addSpacing(40); + // 备份路径选择提示(新建数据备份时显示) +- MyLabel* labelPathSelect = new MyLabel(second); ++ MyLabel* labelPathSelect = new MyLabel(selectPathPage); + labelPathSelect->setDeplayText(tr("Please select backup position")); + labelPathSelect->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + QFont font; +@@ -316,7 +316,7 @@ void DataBackup::initSecondWidget() + QHBoxLayout * hlayoutLine2 = new QHBoxLayout; + hlayoutLine2->addSpacing(40); + // 备份路径选择框 +- QComboBox* comboSelect = new QComboBox(second); ++ QComboBox* comboSelect = new QComboBox(selectPathPage); + comboSelect->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + KBorderButton *buttonBrowse = new KBorderButton; + buttonBrowse->setText(tr("Browse")); +@@ -430,7 +430,7 @@ void DataBackup::initSecondWidget() + hlayoutLastLine->setSpacing(16); + hlayoutLastLine->addStretch(); + // 上一步按钮 +- KBorderButton *preStep = new KBorderButton(second); ++ KBorderButton *preStep = new KBorderButton(selectPathPage); + preStep->setText(tr("Back")); + preStep->setEnabled(true); + // preStep->setAutoRepeat(true); +@@ -440,7 +440,7 @@ void DataBackup::initSecondWidget() + emit this->reset(); + }); + // 下一步按钮 +- MyPushButton *nextStep = new MyPushButton(second); ++ MyPushButton *nextStep = new MyPushButton(selectPathPage); + nextStep->setText(tr("Next")); + nextStep->setEnabled(false); + // nextStep->setAutoRepeat(true); +@@ -452,9 +452,9 @@ void DataBackup::initSecondWidget() + vlayout->addLayout(hlayoutLastLine); + + vlayout->addSpacing(40); +- second->setLayout(vlayout); ++ selectPathPage->setLayout(vlayout); + +- addWidget(second); ++ addWidget(selectPathPage); + + // 添加本地默认路径、移动设备目录 + connect(m_udector, &UdiskDetector::udiskListChanged, this, [=](QList diskList) { +@@ -516,7 +516,9 @@ void DataBackup::initSecondWidget() + QString fileName = selectFiles.at(0); + + // sdk重新实现了QFileDialog后很多功能已经丢失(如:文件夹过滤等),需要再次进行过滤,真难用 +- if (fileName == BACKUP_PATH || fileName.contains(BACKUP_SNAPSHOTS_PATH)) { ++ QString backupPath = Utils::getSysRootPath() + BACKUP_PATH; ++ backupPath.replace("//", "/"); ++ if (fileName == backupPath || fileName.contains(BACKUP_SNAPSHOTS_PATH)) { + // 不能嵌套备份,请选择其它目录 + MessageBoxUtils::QMESSAGE_BOX_WARNING(GlobelBackupInfo::instance().getMainWidget(), QObject::tr("Information"), + QObject::tr("Cannot nest backups, please select another directory."), +@@ -643,7 +645,8 @@ void DataBackup::initSecondWidget() + */ + void DataBackup::getPathsLimit(QStringList &pathLimits, QList &siderUrls) + { +- QString curPath = QDir::homePath(); //用户家目录 ++ QString curPath = Utils::getSysRootPath() + QDir::homePath(); //用户家目录 ++ curPath.replace("//", "/"); + pathLimits << curPath; + siderUrls << QUrl::fromLocalFile(curPath); + if (GlobelBackupInfo::instance().isManager()) { +@@ -670,7 +673,7 @@ void DataBackup::getPathsLimit(QStringList &pathLimits, QList &siderUrls) + */ + void DataBackup::initSecondWidget_inc() + { +- QWidget *second = new QWidget; ++ QWidget *incSelectPathPage = new QWidget; + + // 纵向布局 + QVBoxLayout *vlayout = new QVBoxLayout; +@@ -680,7 +683,7 @@ void DataBackup::initSecondWidget_inc() + QHBoxLayout * hlayoutLine1 = new QHBoxLayout; + hlayoutLine1->addSpacing(40); + // 默认备份位置 +- MyLabel* labelPathSelect = new MyLabel(second); ++ MyLabel* labelPathSelect = new MyLabel(incSelectPathPage); + labelPathSelect->setDeplayText(tr("Default backup location")); + labelPathSelect->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + QFont font; +@@ -696,7 +699,7 @@ void DataBackup::initSecondWidget_inc() + QHBoxLayout * hlayoutLine2 = new QHBoxLayout; + hlayoutLine2->addSpacing(40); + // 默认备份位置展示 +- MyLabel* labelBackupPosition = new MyLabel(second); ++ MyLabel* labelBackupPosition = new MyLabel(incSelectPathPage); + labelBackupPosition->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + labelBackupPosition->setEnabled(false); + hlayoutLine2->addWidget(labelBackupPosition); +@@ -807,7 +810,7 @@ void DataBackup::initSecondWidget_inc() + hlayoutLastLine->setSpacing(16); + hlayoutLastLine->addStretch(); + // 上一步按钮 +- KBorderButton *preStep = new KBorderButton(second); ++ KBorderButton *preStep = new KBorderButton(incSelectPathPage); + preStep->setText(tr("Back")); + preStep->setEnabled(true); + // preStep->setAutoRepeat(true); +@@ -817,7 +820,7 @@ void DataBackup::initSecondWidget_inc() + emit this->reset(); + }); + // 下一步按钮 +- MyPushButton *nextStep = new MyPushButton(second); ++ MyPushButton *nextStep = new MyPushButton(incSelectPathPage); + nextStep->setText(tr("Next")); + // nextStep->setAutoRepeat(true); + nextStep->setProperty("isImportant", true); +@@ -829,7 +832,7 @@ void DataBackup::initSecondWidget_inc() + vlayout->addLayout(hlayoutLastLine); + + vlayout->addSpacing(40); +- second->setLayout(vlayout); ++ incSelectPathPage->setLayout(vlayout); + + connect(buttonAdd, &PixmapLabel::clicked, this, [=]() { + if (editSelect->text().isEmpty()) +@@ -908,7 +911,7 @@ void DataBackup::initSecondWidget_inc() + listWidget->clearData(); + }); + +- addWidget(second); ++ addWidget(incSelectPathPage); + } + + /** +@@ -936,18 +939,18 @@ void DataBackup::addOldBackupPaths(BackupListWidget *listWidget) + */ + void DataBackup::initThirdWidget() + { +- QWidget *third = new QWidget; ++ QWidget *checkPage = new QWidget; + QVBoxLayout *vlayout = new QVBoxLayout; + vlayout->addSpacing(40); + + // 流程进度提示栏 +- CircleLable *one = new CircleLable("1", third, 24, QColor(COLOR_BLUE)); +- LineLabel *line1 = new LineLabel(third, QColor(COLOR_BLUE)); +- CircleLable *two = new CircleLable("2", third); +- LineLabel *line2 = new LineLabel(third); +- CircleLable *three = new CircleLable("3", third); +- LineLabel *line3 = new LineLabel(third); +- CircleLable *four = new CircleLable("4", third); ++ CircleLable *one = new CircleLable("1", checkPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line1 = new LineLabel(checkPage, QColor(COLOR_BLUE)); ++ CircleLable *two = new CircleLable("2", checkPage); ++ LineLabel *line2 = new LineLabel(checkPage); ++ CircleLable *three = new CircleLable("3", checkPage); ++ LineLabel *line3 = new LineLabel(checkPage); ++ CircleLable *four = new CircleLable("4", checkPage); + + QHBoxLayout *hlayoutTopLine1 = new QHBoxLayout; + hlayoutTopLine1->addSpacing(80); +@@ -961,16 +964,16 @@ void DataBackup::initThirdWidget() + hlayoutTopLine1->addSpacing(80); + vlayout->addLayout(hlayoutTopLine1); + +- MyLabel *label1 = new MyLabel(tr("checking"), third); ++ MyLabel *label1 = new MyLabel(tr("checking"), checkPage); + label1->setFontColor(QColor(COLOR_BLUE)); + label1->setFixedWidth(164); +- MyLabel *label2 = new MyLabel(tr("preparing"), third); ++ MyLabel *label2 = new MyLabel(tr("preparing"), checkPage); + label2->setEnabled(false); + label2->setFixedWidth(164); +- MyLabel *label3 = new MyLabel(tr("backuping"), third); ++ MyLabel *label3 = new MyLabel(tr("backuping"), checkPage); + label3->setEnabled(false); + label3->setFixedWidth(164); +- MyLabel *label4 = new MyLabel(tr("finished"), third); ++ MyLabel *label4 = new MyLabel(tr("finished"), checkPage); + label4->setEnabled(false); + label4->setFixedWidth(164); + +@@ -993,7 +996,7 @@ void DataBackup::initThirdWidget() + QHBoxLayout *hlayout = new QHBoxLayout; + hlayout->addStretch(); + hlayout->addSpacing(20); +- QWidget *centerFont = new QWidget(third); ++ QWidget *centerFont = new QWidget(checkPage); + centerFont->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + QVBoxLayout *vlayoutCenterFont = new QVBoxLayout; + +@@ -1106,7 +1109,7 @@ void DataBackup::initThirdWidget() + vlayout->addLayout(hlayout); + + vlayout->addStretch(); +- third->setLayout(vlayout); ++ checkPage->setLayout(vlayout); + // ------------ 中部布局end------------- + + // 开始检测 +@@ -1234,7 +1237,7 @@ void DataBackup::initThirdWidget() + } + }); + +- addWidget(third); ++ addWidget(checkPage); + } + + /** +@@ -1337,18 +1340,18 @@ void DataBackup::on_checkEnv_end(int result) + #define MAX_LEN_BACKUPNAME 64 + void DataBackup::initForthWidget() + { +- QWidget *forth = new QWidget; ++ QWidget *nameBackupPage = new QWidget; + QVBoxLayout *vlayout = new QVBoxLayout; + vlayout->addSpacing(40); + + // 流程进度提示栏 +- CircleLable *one = new CircleLable("1", forth, 24, QColor(COLOR_BLUE)); +- LineLabel *line1 = new LineLabel(forth, QColor(COLOR_BLUE)); +- CircleLable *two = new CircleLable("2", forth, 24, QColor(COLOR_BLUE)); +- LineLabel *line2 = new LineLabel(forth, QColor(COLOR_BLUE)); +- CircleLable *three = new CircleLable("3", forth); +- LineLabel *line3 = new LineLabel(forth); +- CircleLable *four = new CircleLable("4", forth); ++ CircleLable *one = new CircleLable("1", nameBackupPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line1 = new LineLabel(nameBackupPage, QColor(COLOR_BLUE)); ++ CircleLable *two = new CircleLable("2", nameBackupPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line2 = new LineLabel(nameBackupPage, QColor(COLOR_BLUE)); ++ CircleLable *three = new CircleLable("3", nameBackupPage); ++ LineLabel *line3 = new LineLabel(nameBackupPage); ++ CircleLable *four = new CircleLable("4", nameBackupPage); + + QHBoxLayout *hlayoutTopLine1 = new QHBoxLayout; + hlayoutTopLine1->addSpacing(80); +@@ -1362,16 +1365,16 @@ void DataBackup::initForthWidget() + hlayoutTopLine1->addSpacing(80); + vlayout->addLayout(hlayoutTopLine1); + +- MyLabel *label1 = new MyLabel(tr("checking"), forth); ++ MyLabel *label1 = new MyLabel(tr("checking"), nameBackupPage); + label1->setFontColor(QColor(COLOR_BLUE)); + label1->setFixedWidth(164); +- MyLabel *label2 = new MyLabel(tr("preparing"), forth); ++ MyLabel *label2 = new MyLabel(tr("preparing"), nameBackupPage); + label2->setFontColor(QColor(COLOR_BLUE)); + label2->setFixedWidth(164); +- MyLabel *label3 = new MyLabel(tr("backuping"), forth); ++ MyLabel *label3 = new MyLabel(tr("backuping"), nameBackupPage); + label3->setFixedWidth(164); + label3->setEnabled(false); +- MyLabel *label4 = new MyLabel(tr("finished"), forth); ++ MyLabel *label4 = new MyLabel(tr("finished"), nameBackupPage); + label4->setFixedWidth(164); + label4->setEnabled(false); + +@@ -1394,12 +1397,12 @@ void DataBackup::initForthWidget() + // 中部第一行 + QHBoxLayout *hlayoutCenterLine1 = new QHBoxLayout; + // 备份名称 +- MyLabel *labelBackupName = new MyLabel(forth); ++ MyLabel *labelBackupName = new MyLabel(nameBackupPage); + labelBackupName->setDeplayText(tr("Backup Name")); + QFontMetrics fontMetrics(labelBackupName->font()); + int fontSize = fontMetrics.width(labelBackupName->getOriginalText()); + labelBackupName->setFixedWidth(fontSize); +- MyLineEdit *editBackupName = new MyLineEdit(forth); ++ MyLineEdit *editBackupName = new MyLineEdit(nameBackupPage); + editBackupName->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + editBackupName->setMinimumWidth(350); + editBackupName->setMaxLength(MAX_LEN_BACKUPNAME); +@@ -1424,7 +1427,7 @@ void DataBackup::initForthWidget() + + // 中部第二行 + // 备份名称错误提示 +- MyLabel *labelError = new MyLabel(forth); ++ MyLabel *labelError = new MyLabel(nameBackupPage); + labelError->setFixedSize(editBackupName->size()); + labelError->setFontSize(14); + labelError->setFontColor(Qt::red); +@@ -1492,7 +1495,7 @@ void DataBackup::initForthWidget() + hlayoutCenterLine3->setSpacing(16); + hlayoutCenterLine3->addStretch(); + // 上一步按钮 +- KBorderButton *preStep = new KBorderButton(forth); ++ KBorderButton *preStep = new KBorderButton(nameBackupPage); + preStep->setText(tr("Back")); + preStep->setEnabled(true); + // preStep->setAutoRepeat(true); +@@ -1507,7 +1510,7 @@ void DataBackup::initForthWidget() + hlayoutCenterLine3->addWidget(preStep); + + // 下一步按钮 +- MyPushButton *nextStep = new MyPushButton(forth); ++ MyPushButton *nextStep = new MyPushButton(nameBackupPage); + nextStep->setText(tr("Next")); + nextStep->setEnabled(true); + // nextStep->setAutoRepeat(true); +@@ -1539,9 +1542,9 @@ void DataBackup::initForthWidget() + vlayout->addLayout(hlayoutCenterLine3); + + vlayout->addStretch(); +- forth->setLayout(vlayout); ++ nameBackupPage->setLayout(vlayout); + +- addWidget(forth); ++ addWidget(nameBackupPage); + } + + /** +@@ -1617,18 +1620,18 @@ bool DataBackup::isExistsBackupName(const QString & backupName) + */ + void DataBackup::initFifthWidget() + { +- QWidget *fifth = new QWidget; ++ QWidget *backupingPage = new QWidget; + QVBoxLayout *vlayout = new QVBoxLayout; + vlayout->addSpacing(40); + + // 流程进度提示栏 +- CircleLable *one = new CircleLable("1", fifth, 24, QColor(COLOR_BLUE)); +- LineLabel *line1 = new LineLabel(fifth, QColor(COLOR_BLUE)); +- CircleLable *two = new CircleLable("2", fifth, 24, QColor(COLOR_BLUE)); +- LineLabel *line2 = new LineLabel(fifth, QColor(COLOR_BLUE)); +- CircleLable *three = new CircleLable("3", fifth, 24, QColor(COLOR_BLUE)); +- LineLabel *line3 = new LineLabel(fifth, QColor(COLOR_BLUE)); +- CircleLable *four = new CircleLable("4", fifth); ++ CircleLable *one = new CircleLable("1", backupingPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line1 = new LineLabel(backupingPage, QColor(COLOR_BLUE)); ++ CircleLable *two = new CircleLable("2", backupingPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line2 = new LineLabel(backupingPage, QColor(COLOR_BLUE)); ++ CircleLable *three = new CircleLable("3", backupingPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line3 = new LineLabel(backupingPage, QColor(COLOR_BLUE)); ++ CircleLable *four = new CircleLable("4", backupingPage); + + QHBoxLayout *hlayoutTopLine1 = new QHBoxLayout; + hlayoutTopLine1->addSpacing(80); +@@ -1642,16 +1645,16 @@ void DataBackup::initFifthWidget() + hlayoutTopLine1->addSpacing(80); + vlayout->addLayout(hlayoutTopLine1); + +- MyLabel *label1 = new MyLabel(tr("checking"), fifth); ++ MyLabel *label1 = new MyLabel(tr("checking"), backupingPage); + label1->setFontColor(QColor(COLOR_BLUE)); + label1->setFixedWidth(164); +- MyLabel *label2 = new MyLabel(tr("preparing"), fifth); ++ MyLabel *label2 = new MyLabel(tr("preparing"), backupingPage); + label2->setFontColor(QColor(COLOR_BLUE)); + label2->setFixedWidth(164); +- MyLabel *label3 = new MyLabel(tr("backuping"), fifth); ++ MyLabel *label3 = new MyLabel(tr("backuping"), backupingPage); + label3->setFontColor(QColor(COLOR_BLUE)); + label3->setFixedWidth(164); +- MyLabel *label4 = new MyLabel(tr("finished"), fifth); ++ MyLabel *label4 = new MyLabel(tr("finished"), backupingPage); + label4->setFixedWidth(164); + label4->setEnabled(false); + +@@ -1674,14 +1677,14 @@ void DataBackup::initFifthWidget() + // 中部第一行 + QHBoxLayout *hlayoutCenterFont1 = new QHBoxLayout; + // 检测等待图标 +- QLabel *loadingGif = new QLabel(fifth); ++ QLabel *loadingGif = new QLabel(backupingPage); + // 环境检测等待动画 +- QMovie *movie = new QMovie(":/images/loading.gif", QByteArray(), fifth); ++ QMovie *movie = new QMovie(":/images/loading.gif", QByteArray(), backupingPage); + loadingGif->setMovie(movie); + loadingGif->setFixedSize(24,24); + loadingGif->setVisible(false); + // 进度条 +- RingsProgressbar *progressBar = new RingsProgressbar(fifth); ++ RingsProgressbar *progressBar = new RingsProgressbar(backupingPage); + progressBar->setFixedSize(100, 100); + hlayoutCenterFont1->addStretch(); + hlayoutCenterFont1->addWidget(loadingGif); +@@ -1694,7 +1697,7 @@ void DataBackup::initFifthWidget() + vlayout->addSpacing(16); + QHBoxLayout *hlayoutCenterFont2 = new QHBoxLayout; + // 提醒 +- MyLabel *labelTip = new MyLabel(fifth); ++ MyLabel *labelTip = new MyLabel(backupingPage); + labelTip->setAlignment(Qt::AlignCenter); + labelTip->setIsOriginal(true); + labelTip->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); +@@ -1708,7 +1711,7 @@ void DataBackup::initFifthWidget() + // 第三行 + QHBoxLayout *hlayoutCenterFont3 = new QHBoxLayout; + // 取消按钮 +- MyPushButton *cancel = new MyPushButton(fifth); ++ MyPushButton *cancel = new MyPushButton(backupingPage); + cancel->setText(tr("Cancel")); + // cancel->setAutoRepeat(true); + cancel->setProperty("isImportant", true); +@@ -1721,7 +1724,7 @@ void DataBackup::initFifthWidget() + // ------------ 中部布局end------------- + + vlayout->addStretch(); +- fifth->setLayout(vlayout); ++ backupingPage->setLayout(vlayout); + + connect(this, &DataBackup::backupWarnning, labelTip, [=](const QString& msg) { + labelTip->setDeplayText(msg); +@@ -1757,7 +1760,7 @@ void DataBackup::initFifthWidget() + m_pInterface->cancel(); + }); + +- addWidget(fifth); ++ addWidget(backupingPage); + } + + /** +diff --git a/kybackup/module/datarestore.cpp b/kybackup/module/datarestore.cpp +index 401ae00..fdd7f7c 100755 +--- a/kybackup/module/datarestore.cpp ++++ b/kybackup/module/datarestore.cpp +@@ -56,7 +56,7 @@ DataRestore::~DataRestore() + */ + void DataRestore::initFirstWidget() + { +- QWidget *first = new QWidget; ++ QWidget *homePage = new QWidget; + QVBoxLayout *vLayout = new QVBoxLayout; + vLayout->addStretch(); + +@@ -70,67 +70,67 @@ void DataRestore::initFirstWidget() + vLayout->addLayout(centerHBoxLayout); + vLayout->addStretch(); + vLayout->addSpacing(60); +- first->setLayout(vLayout); ++ homePage->setLayout(vLayout); + // 图片 +- PixmapLabel *imageRestore_firstPage = new PixmapLabel(center); +- imageRestore_firstPage->setGeometry(center->width() - 40 - PICTURE_SIZE, 160, PICTURE_SIZE, PICTURE_SIZE); +- imageRestore_firstPage->setScaledContents(true); +- imageRestore_firstPage->setLightAndDarkPixmap(":/images/data_restore.png", ":/images/data_restore_dark.png"); ++ PixmapLabel *imageRestore = new PixmapLabel(center); ++ imageRestore->setGeometry(center->width() - 40 - PICTURE_SIZE, 160, PICTURE_SIZE, PICTURE_SIZE); ++ imageRestore->setScaledContents(true); ++ imageRestore->setLightAndDarkPixmap(":/images/data_restore.png", ":/images/data_restore_dark.png"); + + // 数据还原大字提示 +- MyLabel *labelRestore_firstPage = new MyLabel(center); +- labelRestore_firstPage->setDeplayText(tr("Data Restore")); +- labelRestore_firstPage->setFixedWidth(center->width() - 200); +- labelRestore_firstPage->setFixedHeight(48); +- labelRestore_firstPage->move(41, 120); ++ MyLabel *labelRestore = new MyLabel(center); ++ labelRestore->setDeplayText(tr("Data Restore")); ++ labelRestore->setFixedWidth(center->width() - 200); ++ labelRestore->setFixedHeight(48); ++ labelRestore->move(41, 120); + QFont font; + font.setBold(true); + font.setPixelSize(36); +- labelRestore_firstPage->setFont(font); +- // labelRestore_firstPage->setAttribute(Qt::WA_TranslucentBackground); +- labelRestore_firstPage->setScaledContents(true); +- labelRestore_firstPage->adjustSize(); ++ labelRestore->setFont(font); ++ // labelRestore->setAttribute(Qt::WA_TranslucentBackground); ++ labelRestore->setScaledContents(true); ++ labelRestore->adjustSize(); + + // 数据还原说明 +- MyLabel *labelNote_firstPage = new MyLabel(center); +- labelNote_firstPage->setFixedWidth(center->width() - 45); +- labelNote_firstPage->setFixedHeight(24); +- labelNote_firstPage->move(41, 180); ++ MyLabel *labelNote = new MyLabel(center); ++ labelNote->setFixedWidth(center->width() - 45); ++ labelNote->setFixedHeight(24); ++ labelNote->move(41, 180); + // 必须先进行数据备份,否则无法进行数据还原操作 +- labelNote_firstPage->setDeplayText(tr("Backed up first, then can be restored")); ++ labelNote->setDeplayText(tr("Backed up first, then can be restored")); + font.setBold(false); + font.setPixelSize(18); +- labelNote_firstPage->setFont(font); +- labelNote_firstPage->setScaledContents(true); +- labelNote_firstPage->adjustSize(); ++ labelNote->setFont(font); ++ labelNote->setScaledContents(true); ++ labelNote->adjustSize(); + + // 快速恢复 +- MyIconLabel *iconSimple_firstPage = new MyIconLabel(center); +- iconSimple_firstPage->setGeometry(41, 244, 210, 36); +- iconSimple_firstPage->setThemeIcon("object-rotate-left-symbolic", ":/symbos/object-rotate-left-symbolic"); +- iconSimple_firstPage->setDesplayText(tr("Fast Recovery")); +- iconSimple_firstPage->setEnabled(false); ++ MyIconLabel *iconSimple = new MyIconLabel(center); ++ iconSimple->setGeometry(41, 244, 210, 36); ++ iconSimple->setThemeIcon("object-rotate-left-symbolic", ":/symbos/object-rotate-left-symbolic"); ++ iconSimple->setDesplayText(tr("Fast Recovery")); ++ iconSimple->setEnabled(false); + + // 安全可靠 +- MyIconLabel *iconSecurity_firstPage = new MyIconLabel(center); +- iconSecurity_firstPage->setGeometry(231, 244, 180, 36); +- iconSecurity_firstPage->setThemeIcon("ukui-bf-security-symbolic", ":/symbos/ukui-bf-security-symbolic"); +- iconSecurity_firstPage->setDesplayText(tr("Security")); +- iconSecurity_firstPage->setEnabled(false); ++ MyIconLabel *iconSecurity = new MyIconLabel(center); ++ iconSecurity->setGeometry(231, 244, 180, 36); ++ iconSecurity->setThemeIcon("ukui-bf-security-symbolic", ":/symbos/ukui-bf-security-symbolic"); ++ iconSecurity->setDesplayText(tr("Security")); ++ iconSecurity->setEnabled(false); + + // 防止数据丢失 +- MyIconLabel *iconMultiBackup_firstPage = new MyIconLabel(center); +- iconMultiBackup_firstPage->setGeometry(41, 296, 210, 36); +- iconMultiBackup_firstPage->setThemeIcon("ukui-bf-dataloss-symbolic", ":/symbos/ukui-bf-dataloss-symbolic"); +- iconMultiBackup_firstPage->setDesplayText(tr("Protect Data")); +- iconMultiBackup_firstPage->setEnabled(false); ++ MyIconLabel *iconMultiBackup = new MyIconLabel(center); ++ iconMultiBackup->setGeometry(41, 296, 210, 36); ++ iconMultiBackup->setThemeIcon("ukui-bf-dataloss-symbolic", ":/symbos/ukui-bf-dataloss-symbolic"); ++ iconMultiBackup->setDesplayText(tr("Protect Data")); ++ iconMultiBackup->setEnabled(false); + + // 自主操作 +- MyIconLabel *iconSmallSize_firstPage = new MyIconLabel(center); +- iconSmallSize_firstPage->setGeometry(231, 296, 180, 36); +- iconSmallSize_firstPage->setThemeIcon("ukui-self-help-symbolic", ":/symbos/ukui-self-help-symbolic"); +- iconSmallSize_firstPage->setDesplayText(tr("Independent")); +- iconSmallSize_firstPage->setEnabled(false); ++ MyIconLabel *iconSmallSize = new MyIconLabel(center); ++ iconSmallSize->setGeometry(231, 296, 180, 36); ++ iconSmallSize->setThemeIcon("ukui-self-help-symbolic", ":/symbos/ukui-self-help-symbolic"); ++ iconSmallSize->setDesplayText(tr("Independent")); ++ iconSmallSize->setEnabled(false); + + // 开始还原按钮 + MyPushButton *beginRestore = new MyPushButton(center); +@@ -143,7 +143,7 @@ void DataRestore::initFirstWidget() + beginRestore->setFont(font); + connect(beginRestore, &MyPushButton::clicked, this, &DataRestore::on_button_beginRestore_clicked); + +- addWidget(first); ++ addWidget(homePage); + } + + /** +@@ -243,14 +243,14 @@ bool DataRestore::checkIsNeedReboot() + */ + void DataRestore::initSecondWidget() + { +- QWidget *second = new QWidget; ++ QWidget *checkPage = new QWidget; + + // 流程进度提示栏 +- CircleLable *one = new CircleLable("1", second, 24, QColor(COLOR_BLUE)); +- LineLabel *line1 = new LineLabel(second, QColor(COLOR_BLUE)); +- CircleLable *two = new CircleLable("2", second); +- LineLabel *line2 = new LineLabel(second, QColor(COLOR_GRAY)); +- CircleLable *three = new CircleLable("3", second); ++ CircleLable *one = new CircleLable("1", checkPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line1 = new LineLabel(checkPage, QColor(COLOR_BLUE)); ++ CircleLable *two = new CircleLable("2", checkPage); ++ LineLabel *line2 = new LineLabel(checkPage, QColor(COLOR_GRAY)); ++ CircleLable *three = new CircleLable("3", checkPage); + QHBoxLayout *layoutLine1 = new QHBoxLayout; + layoutLine1->addSpacing(128); + layoutLine1->addWidget(one); +@@ -260,15 +260,15 @@ void DataRestore::initSecondWidget() + layoutLine1->addWidget(three); + layoutLine1->addSpacing(128); + +- MyLabel *label1 = new MyLabel(tr("checking"), second); ++ MyLabel *label1 = new MyLabel(tr("checking"), checkPage); + label1->setIsOriginal(true); + label1->setFontColor(QColor(COLOR_BLUE)); + label1->setFixedWidth(164); +- MyLabel *label2 = new MyLabel(tr("restoring"), second); ++ MyLabel *label2 = new MyLabel(tr("restoring"), checkPage); + label2->setIsOriginal(true); + label2->setEnabled(false); + label2->setFixedWidth(164); +- MyLabel *label3 = new MyLabel(tr("finished"), second); ++ MyLabel *label3 = new MyLabel(tr("finished"), checkPage); + label3->setIsOriginal(true); + label3->setEnabled(false); + label3->setFixedWidth(164); +@@ -282,7 +282,7 @@ void DataRestore::initSecondWidget() + layoutLine2->addSpacing(54); + + // ------------ 中部布局begin------------- +- QWidget *centerFont = new QWidget(second); ++ QWidget *centerFont = new QWidget(checkPage); + centerFont->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + QVBoxLayout *vlayoutCenterFont = new QVBoxLayout; + +@@ -397,7 +397,7 @@ void DataRestore::initSecondWidget() + vlayout->addSpacing(80); + vlayout->addLayout(layoutLine3); + vlayout->addStretch(); +- second->setLayout(vlayout); ++ checkPage->setLayout(vlayout); + + // 开始检测 + connect(this, &DataRestore::startCheckEnv, this, [=]() { +@@ -524,7 +524,7 @@ void DataRestore::initSecondWidget() + emit this->startCheckEnv(); + }); + +- addWidget(second); ++ addWidget(checkPage); + } + + /** +@@ -613,14 +613,14 @@ void DataRestore::on_checkEnv_end(int result) + */ + void DataRestore::initThirdWidget() + { +- QWidget *third = new QWidget; ++ QWidget *restoringPage = new QWidget; + + // 流程进度提示栏 +- CircleLable *one = new CircleLable("1", third, 24, QColor(COLOR_BLUE)); +- LineLabel *line1 = new LineLabel(third, QColor(COLOR_BLUE)); +- CircleLable *two = new CircleLable("2", third, 24, QColor(COLOR_BLUE)); +- LineLabel *line2 = new LineLabel(third, QColor(COLOR_GRAY)); +- CircleLable *three = new CircleLable("3", third); ++ CircleLable *one = new CircleLable("1", restoringPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line1 = new LineLabel(restoringPage, QColor(COLOR_BLUE)); ++ CircleLable *two = new CircleLable("2", restoringPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line2 = new LineLabel(restoringPage, QColor(COLOR_GRAY)); ++ CircleLable *three = new CircleLable("3", restoringPage); + QHBoxLayout *layoutLine1 = new QHBoxLayout; + layoutLine1->addSpacing(128); + layoutLine1->addWidget(one); +@@ -630,15 +630,15 @@ void DataRestore::initThirdWidget() + layoutLine1->addWidget(three); + layoutLine1->addSpacing(128); + +- MyLabel *label1 = new MyLabel(tr("checking"), third); ++ MyLabel *label1 = new MyLabel(tr("checking"), restoringPage); + label1->setIsOriginal(true); + label1->setFontColor(QColor(COLOR_BLUE)); + label1->setFixedWidth(164); +- MyLabel *label2 = new MyLabel(tr("restoring"), third); ++ MyLabel *label2 = new MyLabel(tr("restoring"), restoringPage); + label2->setIsOriginal(true); + label2->setFontColor(QColor(COLOR_BLUE)); + label2->setFixedWidth(164); +- MyLabel *label3 = new MyLabel(tr("finished"), third); ++ MyLabel *label3 = new MyLabel(tr("finished"), restoringPage); + label3->setIsOriginal(true); + label3->setEnabled(false); + label3->setFixedWidth(164); +@@ -655,13 +655,13 @@ void DataRestore::initThirdWidget() + // 中部第一行 + QHBoxLayout *hlayoutCenterFont1 = new QHBoxLayout; + // 检测等待图标 +- QLabel *loadingGif = new QLabel(third); ++ QLabel *loadingGif = new QLabel(restoringPage); + // 环境检测等待动画 +- QMovie *movie = new QMovie(":/images/loading.gif", QByteArray(), third); ++ QMovie *movie = new QMovie(":/images/loading.gif", QByteArray(), restoringPage); + loadingGif->setMovie(movie); + loadingGif->setVisible(false); + // 进度条 +- RingsProgressbar *progressBar = new RingsProgressbar(third); ++ RingsProgressbar *progressBar = new RingsProgressbar(restoringPage); + progressBar->setFixedSize(100, 100); + hlayoutCenterFont1->addStretch(); + hlayoutCenterFont1->addWidget(loadingGif); +@@ -672,7 +672,7 @@ void DataRestore::initThirdWidget() + // 第二行 + QHBoxLayout *hlayoutCenterFont2 = new QHBoxLayout; + // 提醒 +- MyLabel *labelTip = new MyLabel(third); ++ MyLabel *labelTip = new MyLabel(restoringPage); + labelTip->setAlignment(Qt::AlignCenter); + labelTip->setIsOriginal(true); + labelTip->setFontWordWrap(true); +@@ -696,7 +696,7 @@ void DataRestore::initThirdWidget() + vlayout->addSpacing(16); + vlayout->addLayout(hlayoutCenterFont2); + vlayout->addStretch(); +- third->setLayout(vlayout); ++ restoringPage->setLayout(vlayout); + + // 开始还原 + connect(this, &DataRestore::startRestore, this, [=] { +@@ -713,7 +713,7 @@ void DataRestore::initThirdWidget() + progressBar->setPersent(rate); + }); + +- addWidget(third); ++ addWidget(restoringPage); + } + + /** +diff --git a/kybackup/module/ghostimage.cpp b/kybackup/module/ghostimage.cpp +index cf25233..d13156a 100755 +--- a/kybackup/module/ghostimage.cpp ++++ b/kybackup/module/ghostimage.cpp +@@ -65,7 +65,7 @@ GhostImage::~GhostImage() + */ + void GhostImage::initFirstWidget() + { +- QWidget *first = new QWidget; ++ QWidget *homePage = new QWidget; + QVBoxLayout *vLayout = new QVBoxLayout; + vLayout->addStretch(); + +@@ -79,70 +79,70 @@ void GhostImage::initFirstWidget() + vLayout->addLayout(centerHBoxLayout); + vLayout->addStretch(); + vLayout->addSpacing(60); +- first->setLayout(vLayout); ++ homePage->setLayout(vLayout); + // 图片 +- PixmapLabel *imageGhost_firstPage = new PixmapLabel(center); +- imageGhost_firstPage->setGeometry(center->width() - 40 - PICTURE_SIZE, 160, PICTURE_SIZE, PICTURE_SIZE); +- imageGhost_firstPage->setScaledContents(true); +- imageGhost_firstPage->setLightAndDarkPixmap(":/images/ghost_image.png", ":/images/ghost_image_dark.png"); ++ PixmapLabel *imageGhost = new PixmapLabel(center); ++ imageGhost->setGeometry(center->width() - 40 - PICTURE_SIZE, 160, PICTURE_SIZE, PICTURE_SIZE); ++ imageGhost->setScaledContents(true); ++ imageGhost->setLightAndDarkPixmap(":/images/ghost_image.png", ":/images/ghost_image_dark.png"); + + // Ghost Image大字提示 +- MyLabel *labelGhost_firstPage = new MyLabel(center); +- labelGhost_firstPage->setDeplayText(tr("Ghost Image")); +- labelGhost_firstPage->setFixedWidth(center->width() - 200); +- labelGhost_firstPage->setFixedHeight(48); +- labelGhost_firstPage->move(41, 120); ++ MyLabel *labelGhost = new MyLabel(center); ++ labelGhost->setDeplayText(tr("Ghost Image")); ++ labelGhost->setFixedWidth(center->width() - 200); ++ labelGhost->setFixedHeight(48); ++ labelGhost->move(41, 120); + // 默认水平左对齐,上下居中对齐;故不需要设置 +- // labelGhost_firstPage->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); +- // labelGhost_firstPage->setText(tr("System Backup")); ++ // labelGhost->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); ++ // labelGhost->setText(tr("System Backup")); + QFont font; + font.setBold(true); + font.setPixelSize(36); +- labelGhost_firstPage->setFont(font); +- // labelGhost_firstPage->setAttribute(Qt::WA_TranslucentBackground); +- labelGhost_firstPage->setScaledContents(true); +- labelGhost_firstPage->adjustSize(); ++ labelGhost->setFont(font); ++ // labelGhost->setAttribute(Qt::WA_TranslucentBackground); ++ labelGhost->setScaledContents(true); ++ labelGhost->adjustSize(); + + // Ghost说明 +- MyLabel *labelNote_firstPage = new MyLabel(center); +- labelNote_firstPage->setFixedWidth(center->width() - 45); +- labelNote_firstPage->setFixedHeight(24); +- labelNote_firstPage->move(41, 180); ++ MyLabel *labelNote = new MyLabel(center); ++ labelNote->setFixedWidth(center->width() - 45); ++ labelNote->setFixedHeight(24); ++ labelNote->move(41, 180); + // 必须存在本地系统备份,才能制作镜像文件 +- labelNote_firstPage->setDeplayText(tr("A ghost image file can only be created after backup system to local disk")); ++ labelNote->setDeplayText(tr("A ghost image file can only be created after backup system to local disk")); + font.setBold(false); + font.setPixelSize(18); +- labelNote_firstPage->setFont(font); +- labelNote_firstPage->setScaledContents(true); +- labelNote_firstPage->adjustSize(); ++ labelNote->setFont(font); ++ labelNote->setScaledContents(true); ++ labelNote->adjustSize(); + + // 操作简单 +- MyIconLabel *iconSimple_firstPage = new MyIconLabel(center); +- iconSimple_firstPage->setGeometry(41, 244, 180, 36); +- iconSimple_firstPage->setThemeIcon("ukui-bf-simple-symbolic", ":/symbos/ukui-bf-simple-symbolic"); +- iconSimple_firstPage->setDesplayText(tr("Simple")); +- iconSimple_firstPage->setEnabled(false); ++ MyIconLabel *iconSimple = new MyIconLabel(center); ++ iconSimple->setGeometry(41, 244, 180, 36); ++ iconSimple->setThemeIcon("ukui-bf-simple-symbolic", ":/symbos/ukui-bf-simple-symbolic"); ++ iconSimple->setDesplayText(tr("Simple")); ++ iconSimple->setEnabled(false); + + // 快速 +- MyIconLabel *iconFast_firstPage = new MyIconLabel(center); +- iconFast_firstPage->setGeometry(206, 244, 180, 36); +- iconFast_firstPage->setThemeIcon("ukui-bf-fast-symbolic", ":/symbos/ukui-bf-fast-symbolic"); +- iconFast_firstPage->setDesplayText(tr("Fast")); +- iconFast_firstPage->setEnabled(false); ++ MyIconLabel *iconFast = new MyIconLabel(center); ++ iconFast->setGeometry(206, 244, 180, 36); ++ iconFast->setThemeIcon("ukui-bf-fast-symbolic", ":/symbos/ukui-bf-fast-symbolic"); ++ iconFast->setDesplayText(tr("Fast")); ++ iconFast->setEnabled(false); + + // 安全 +- MyIconLabel *iconSecurity_firstPage = new MyIconLabel(center); +- iconSecurity_firstPage->setGeometry(41, 296, 180, 36); +- iconSecurity_firstPage->setThemeIcon("ukui-bf-security-symbolic", ":/symbos/ukui-bf-security-symbolic"); +- iconSecurity_firstPage->setDesplayText(tr("Security")); +- iconSecurity_firstPage->setEnabled(false); ++ MyIconLabel *iconSecurity = new MyIconLabel(center); ++ iconSecurity->setGeometry(41, 296, 180, 36); ++ iconSecurity->setThemeIcon("ukui-bf-security-symbolic", ":/symbos/ukui-bf-security-symbolic"); ++ iconSecurity->setDesplayText(tr("Security")); ++ iconSecurity->setEnabled(false); + + // 节省时间 +- MyIconLabel *iconSimple_firstPage1 = new MyIconLabel(center); +- iconSimple_firstPage1->setGeometry(206, 296, 180, 36); +- iconSimple_firstPage1->setThemeIcon("document-open-recent-symbolic", ":/symbos/document-open-recent-symbolic"); +- iconSimple_firstPage1->setDesplayText(tr("Timesaving")); +- iconSimple_firstPage1->setEnabled(false); ++ MyIconLabel *iconSimple1 = new MyIconLabel(center); ++ iconSimple1->setGeometry(206, 296, 180, 36); ++ iconSimple1->setThemeIcon("document-open-recent-symbolic", ":/symbos/document-open-recent-symbolic"); ++ iconSimple1->setDesplayText(tr("Timesaving")); ++ iconSimple1->setEnabled(false); + + // 制作镜像按钮 + MyPushButton *beginBackup = new MyPushButton(center); +@@ -185,7 +185,7 @@ void GhostImage::initFirstWidget() + + }); + +- addWidget(first); ++ addWidget(homePage); + } + + /** +@@ -219,7 +219,7 @@ void GhostImage::on_next_clicked(bool checked) + */ + void GhostImage::initSecondWidget() + { +- QWidget *second = new QWidget; ++ QWidget *savePathPage = new QWidget; + // 纵向布局 + QVBoxLayout *vlayout = new QVBoxLayout; + vlayout->addSpacing(40); +@@ -228,7 +228,7 @@ void GhostImage::initSecondWidget() + QHBoxLayout * hlayoutLine1 = new QHBoxLayout; + hlayoutLine1->addSpacing(40); + // 请选择存储位置 +- MyLabel* labelSelect = new MyLabel(second); ++ MyLabel* labelSelect = new MyLabel(savePathPage); + labelSelect->setDeplayText(tr("Please select storage location")); + labelSelect->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + QFont font; +@@ -246,7 +246,7 @@ void GhostImage::initSecondWidget() + QHBoxLayout * hlayoutLine2 = new QHBoxLayout; + hlayoutLine2->addSpacing(40); + // 备份路径选择框 +- QComboBox* comboSelect = new QComboBox(second); ++ QComboBox* comboSelect = new QComboBox(savePathPage); + // 添加本地默认路径、移动设备目录 + connect(m_udector, &UdiskDetector::udiskListChanged, this, [=](QList diskList) { + comboSelect->clear(); +@@ -275,7 +275,7 @@ void GhostImage::initSecondWidget() + hlayoutLine3->setSpacing(16); + hlayoutLine3->addStretch(); + // 上一步按钮 +- KBorderButton *preStep = new KBorderButton(second); ++ KBorderButton *preStep = new KBorderButton(savePathPage); + preStep->setText(tr("Back")); + preStep->setEnabled(true); + // preStep->setAutoRepeat(true); +@@ -284,7 +284,7 @@ void GhostImage::initSecondWidget() + hlayoutLine3->addWidget(preStep); + + // 下一步按钮 +- MyPushButton *nextStep = new MyPushButton(second); ++ MyPushButton *nextStep = new MyPushButton(savePathPage); + nextStep->setText(tr("Next")); + nextStep->setEnabled(true); + // nextStep->setAutoRepeat(true); +@@ -305,9 +305,9 @@ void GhostImage::initSecondWidget() + vlayout->addLayout(hlayoutLine3); + + vlayout->addStretch(); +- second->setLayout(vlayout); ++ savePathPage->setLayout(vlayout); + +- addWidget(second); ++ addWidget(savePathPage); + } + + /** +@@ -315,14 +315,14 @@ void GhostImage::initSecondWidget() + */ + void GhostImage::initThirdWidget() + { +- QWidget *third = new QWidget; ++ QWidget *checkPage = new QWidget; + + // 流程进度提示栏 +- CircleLable *one = new CircleLable("1", third, 24, QColor(COLOR_BLUE)); +- LineLabel *line1 = new LineLabel(third, QColor(COLOR_BLUE)); +- CircleLable *two = new CircleLable("2", third); +- LineLabel *line2 = new LineLabel(third, QColor(COLOR_GRAY)); +- CircleLable *three = new CircleLable("3", third); ++ CircleLable *one = new CircleLable("1", checkPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line1 = new LineLabel(checkPage, QColor(COLOR_BLUE)); ++ CircleLable *two = new CircleLable("2", checkPage); ++ LineLabel *line2 = new LineLabel(checkPage, QColor(COLOR_GRAY)); ++ CircleLable *three = new CircleLable("3", checkPage); + QHBoxLayout *layoutLine1 = new QHBoxLayout; + layoutLine1->addSpacing(128); + layoutLine1->addWidget(one); +@@ -332,15 +332,15 @@ void GhostImage::initThirdWidget() + layoutLine1->addWidget(three); + layoutLine1->addSpacing(128); + +- MyLabel *label1 = new MyLabel(tr("checking"), third); ++ MyLabel *label1 = new MyLabel(tr("checking"), checkPage); + label1->setIsOriginal(true); + label1->setFontColor(QColor(COLOR_BLUE)); + label1->setFixedWidth(164); +- MyLabel *label2 = new MyLabel(tr("ghosting"), third); ++ MyLabel *label2 = new MyLabel(tr("ghosting"), checkPage); + label2->setIsOriginal(true); + label2->setEnabled(false); + label2->setFixedWidth(164); +- MyLabel *label3 = new MyLabel(tr("finished"), third); ++ MyLabel *label3 = new MyLabel(tr("finished"), checkPage); + label3->setIsOriginal(true); + label3->setEnabled(false); + label3->setFixedWidth(164); +@@ -354,7 +354,7 @@ void GhostImage::initThirdWidget() + layoutLine2->addSpacing(54); + + // ------------ 中部布局begin------------- +- QWidget *centerFont = new QWidget(third); ++ QWidget *centerFont = new QWidget(checkPage); + centerFont->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + QVBoxLayout *vlayoutCenterFont = new QVBoxLayout; + +@@ -469,7 +469,7 @@ void GhostImage::initThirdWidget() + vlayout->addSpacing(80); + vlayout->addLayout(layoutLine3); + vlayout->addStretch(); +- third->setLayout(vlayout); ++ checkPage->setLayout(vlayout); + + // 开始检测 + connect(this, &GhostImage::startCheckEnv, this, [=]() { +@@ -596,7 +596,7 @@ void GhostImage::initThirdWidget() + emit this->startCheckEnv(); + }); + +- addWidget(third); ++ addWidget(checkPage); + } + + /** +@@ -746,14 +746,14 @@ QString GhostImage::createGhostImageName(const QString& backupName) + */ + void GhostImage::initForthWidget() + { +- QWidget *forth = new QWidget; ++ QWidget *ghostingPage = new QWidget; + + // 流程进度提示栏 +- CircleLable *one = new CircleLable("1", forth, 24, QColor(COLOR_BLUE)); +- LineLabel *line1 = new LineLabel(forth, QColor(COLOR_BLUE)); +- CircleLable *two = new CircleLable("2", forth, 24, QColor(COLOR_BLUE)); +- LineLabel *line2 = new LineLabel(forth, QColor(COLOR_BLUE)); +- CircleLable *three = new CircleLable("3", forth); ++ CircleLable *one = new CircleLable("1", ghostingPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line1 = new LineLabel(ghostingPage, QColor(COLOR_BLUE)); ++ CircleLable *two = new CircleLable("2", ghostingPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line2 = new LineLabel(ghostingPage, QColor(COLOR_BLUE)); ++ CircleLable *three = new CircleLable("3", ghostingPage); + QHBoxLayout *layoutLine1 = new QHBoxLayout; + layoutLine1->addSpacing(128); + layoutLine1->addWidget(one); +@@ -763,15 +763,15 @@ void GhostImage::initForthWidget() + layoutLine1->addWidget(three); + layoutLine1->addSpacing(128); + +- MyLabel *label1 = new MyLabel(tr("checking"), forth); ++ MyLabel *label1 = new MyLabel(tr("checking"), ghostingPage); + label1->setIsOriginal(true); + label1->setFontColor(QColor(COLOR_BLUE)); + label1->setFixedWidth(164); +- MyLabel *label2 = new MyLabel(tr("ghosting"), forth); ++ MyLabel *label2 = new MyLabel(tr("ghosting"), ghostingPage); + label2->setIsOriginal(true); + label2->setFontColor(QColor(COLOR_BLUE)); + label2->setFixedWidth(164); +- MyLabel *label3 = new MyLabel(tr("finished"), forth); ++ MyLabel *label3 = new MyLabel(tr("finished"), ghostingPage); + label3->setIsOriginal(true); + label3->setEnabled(false); + label3->setFixedWidth(164); +@@ -788,14 +788,14 @@ void GhostImage::initForthWidget() + // 中部第一行 + QHBoxLayout *hlayoutCenterFont1 = new QHBoxLayout; + // 检测等待图标 +- QLabel *loadingGif = new QLabel(forth); ++ QLabel *loadingGif = new QLabel(ghostingPage); + // 环境检测等待动画 +- QMovie *movie = new QMovie(":/images/loading.gif", QByteArray(), forth); ++ QMovie *movie = new QMovie(":/images/loading.gif", QByteArray(), ghostingPage); + loadingGif->setMovie(movie); + loadingGif->setFixedSize(24,24); + loadingGif->setVisible(false); + // 进度条 +- RingsProgressbar *progressBar = new RingsProgressbar(forth); ++ RingsProgressbar *progressBar = new RingsProgressbar(ghostingPage); + progressBar->setFixedSize(100, 100); + hlayoutCenterFont1->addStretch(); + hlayoutCenterFont1->addWidget(loadingGif); +@@ -806,7 +806,7 @@ void GhostImage::initForthWidget() + // 第二行 + QHBoxLayout *hlayoutCenterFont2 = new QHBoxLayout; + // 提醒 +- MyLabel *labelTip = new MyLabel(forth); ++ MyLabel *labelTip = new MyLabel(ghostingPage); + labelTip->setAlignment(Qt::AlignCenter); + labelTip->setIsOriginal(true); + labelTip->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); +@@ -817,7 +817,7 @@ void GhostImage::initForthWidget() + // 第二行 + QHBoxLayout *hlayoutCenterFont2_1 = new QHBoxLayout; + // 备份过程提醒信息 +- MyLabel *labelTip_1 = new MyLabel(forth); ++ MyLabel *labelTip_1 = new MyLabel(ghostingPage); + labelTip_1->setAlignment(Qt::AlignCenter); + labelTip_1->setIsOriginal(true); + labelTip_1->setFontWordWrap(true); +@@ -831,7 +831,7 @@ void GhostImage::initForthWidget() + // 第三行 + QHBoxLayout *hlayoutCenterFont3 = new QHBoxLayout; + // 取消按钮 +- MyPushButton *cancel = new MyPushButton(forth); ++ MyPushButton *cancel = new MyPushButton(ghostingPage); + cancel->setText(tr("Cancel")); + cancel->setEnabled(true); + // cancel->setAutoRepeat(true); +@@ -856,7 +856,7 @@ void GhostImage::initForthWidget() + vlayout->addSpacing(56); + vlayout->addLayout(hlayoutCenterFont3); + vlayout->addStretch(); +- forth->setLayout(vlayout); ++ ghostingPage->setLayout(vlayout); + + // 开始制作ghost镜像 + connect(this, &GhostImage::startGhost, this, [=] { +@@ -895,7 +895,7 @@ void GhostImage::initForthWidget() + m_pInterface->cancel(); + }); + +- addWidget(forth); ++ addWidget(ghostingPage); + } + + /** +diff --git a/kybackup/module/managebackuppointlist.cpp b/kybackup/module/managebackuppointlist.cpp +index e823ab7..62862d4 100755 +--- a/kybackup/module/managebackuppointlist.cpp ++++ b/kybackup/module/managebackuppointlist.cpp +@@ -14,8 +14,10 @@ ManageBackupPointList::ManageBackupPointList(QWidget *parent, BackupPointType ba + { + if (BackupPointType::SYSTEM == backupType) { + this->setWindowTitle(tr("System Backup Information")); ++ m_titleLabel->setDeplayText(tr("System Backup Information")); + } else { + this->setWindowTitle(tr("Data Backup Information")); ++ m_titleLabel->setDeplayText(tr("Data Backup Information")); + } + + // 隐藏备份点大小Backup Size字段 +diff --git a/kybackup/module/operationlog.cpp b/kybackup/module/operationlog.cpp +index 20ba626..d271d81 100755 +--- a/kybackup/module/operationlog.cpp ++++ b/kybackup/module/operationlog.cpp +@@ -26,7 +26,7 @@ OperationLog::~OperationLog() + */ + void OperationLog::initFirstWidget() + { +- QWidget *first = new QWidget; ++ QWidget *homePage = new QWidget; + + QVBoxLayout *vlayout = new QVBoxLayout; + vlayout->setContentsMargins(40, 20, 40, 40); +@@ -83,7 +83,7 @@ void OperationLog::initFirstWidget() + hlayoutLine3->addWidget(m_tableWidget); + vlayout->addLayout(hlayoutLine3); + +- first->setLayout(vlayout); ++ homePage->setLayout(vlayout); + + QList list = Utils::getBackupLogList(); + if (list.isEmpty()) { +@@ -97,7 +97,7 @@ void OperationLog::initFirstWidget() + initOperationLogs(list); + } + +- addWidget(first); ++ addWidget(homePage); + } + + /** +diff --git a/kybackup/module/selectrestorepoint.cpp b/kybackup/module/selectrestorepoint.cpp +index 5afa7a8..a7e303b 100755 +--- a/kybackup/module/selectrestorepoint.cpp ++++ b/kybackup/module/selectrestorepoint.cpp +@@ -12,8 +12,10 @@ SelectRestorePoint::SelectRestorePoint(QWidget *parent, BackupPointType backupTy + { + if (BackupPointType::SYSTEM == backupType) { + this->setWindowTitle(tr("System Backup Information")); ++ m_titleLabel->setDeplayText(tr("System Backup Information")); + } else { + this->setWindowTitle(tr("Data Backup Information")); ++ m_titleLabel->setDeplayText(tr("Data Backup Information")); + } + + // 隐藏备份点状态Backup State字段 +diff --git a/kybackup/module/systembackup.cpp b/kybackup/module/systembackup.cpp +index 4fb0d28..031d82a 100755 +--- a/kybackup/module/systembackup.cpp ++++ b/kybackup/module/systembackup.cpp +@@ -67,7 +67,7 @@ SystemBackup::~SystemBackup() + */ + void SystemBackup::initFirstWidget() + { +- QWidget *first = new QWidget; ++ QWidget *homePage = new QWidget; + QVBoxLayout *vLayout = new QVBoxLayout; + vLayout->addStretch(); + +@@ -80,67 +80,67 @@ void SystemBackup::initFirstWidget() + centerHBoxLayout->addStretch(); + vLayout->addLayout(centerHBoxLayout); + // 图片 +- PixmapLabel *imageBackup_firstPage = new PixmapLabel(center); +- imageBackup_firstPage->setGeometry(center->width() - 40 - PICTURE_SIZE, 160, PICTURE_SIZE, PICTURE_SIZE); +- imageBackup_firstPage->setScaledContents(true); +- imageBackup_firstPage->setLightAndDarkPixmap(":/images/system_backup.png", ":/images/system_backup_dark.png"); ++ PixmapLabel *imageBackup = new PixmapLabel(center); ++ imageBackup->setGeometry(center->width() - 40 - PICTURE_SIZE, 160, PICTURE_SIZE, PICTURE_SIZE); ++ imageBackup->setScaledContents(true); ++ imageBackup->setLightAndDarkPixmap(":/images/system_backup.png", ":/images/system_backup_dark.png"); + + // 系统备份大字提示 +- MyLabel *labelBackup_firstPage = new MyLabel(center); +- labelBackup_firstPage->setDeplayText(tr("System Backup")); +- labelBackup_firstPage->setFixedWidth(center->width() - 200); +- labelBackup_firstPage->setFixedHeight(48); +- labelBackup_firstPage->move(41, 120); ++ MyLabel *labelBackup = new MyLabel(center); ++ labelBackup->setDeplayText(tr("System Backup")); ++ labelBackup->setFixedWidth(center->width() - 200); ++ labelBackup->setFixedHeight(48); ++ labelBackup->move(41, 120); + // 默认水平左对齐,上下居中对齐;故不需要设置 +- // labelBackup_firstPage->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); +- // labelBackup_firstPage->setText(tr("System Backup")); ++ // labelBackup->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); ++ // labelBackup->setText(tr("System Backup")); + QFont font; + font.setBold(true); + font.setPixelSize(36); +- labelBackup_firstPage->setFont(font); +- // labelBackup_firstPage->setAttribute(Qt::WA_TranslucentBackground); +- labelBackup_firstPage->setScaledContents(true); +- labelBackup_firstPage->adjustSize(); ++ labelBackup->setFont(font); ++ // labelBackup->setAttribute(Qt::WA_TranslucentBackground); ++ labelBackup->setScaledContents(true); ++ labelBackup->adjustSize(); + + // 系统备份说明 +- MyLabel *labelNote_firstPage = new MyLabel(center); +- labelNote_firstPage->setFixedWidth(center->width() - 45); +- labelNote_firstPage->setFixedHeight(24); +- labelNote_firstPage->move(41, 180); +- labelNote_firstPage->setDeplayText(tr("Can be restored when files are damaged or lost")); ++ MyLabel *labelNote = new MyLabel(center); ++ labelNote->setFixedWidth(center->width() - 45); ++ labelNote->setFixedHeight(24); ++ labelNote->move(41, 180); ++ labelNote->setDeplayText(tr("Can be restored when files are damaged or lost")); + font.setBold(false); + font.setPixelSize(18); +- labelNote_firstPage->setFont(font); +- labelNote_firstPage->setScaledContents(true); +- labelNote_firstPage->adjustSize(); ++ labelNote->setFont(font); ++ labelNote->setScaledContents(true); ++ labelNote->adjustSize(); + + // 多点还原 +- MyIconLabel *iconMultiBackup_firstPage = new MyIconLabel(center); +- iconMultiBackup_firstPage->setGeometry(41, 244, 180, 36); +- iconMultiBackup_firstPage->setThemeIcon("ukui-multipoint-symbolic", ":/symbos/ukui-multipoint-symbolic"); +- iconMultiBackup_firstPage->setDesplayText(tr("Multi-Spot")); +- iconMultiBackup_firstPage->setEnabled(false); ++ MyIconLabel *iconMultiBackup = new MyIconLabel(center); ++ iconMultiBackup->setGeometry(41, 244, 180, 36); ++ iconMultiBackup->setThemeIcon("ukui-multipoint-symbolic", ":/symbos/ukui-multipoint-symbolic"); ++ iconMultiBackup->setDesplayText(tr("Multi-Spot")); ++ iconMultiBackup->setEnabled(false); + + // 体积小 +- MyIconLabel *iconSmallSize_firstPage = new MyIconLabel(center); +- iconSmallSize_firstPage->setGeometry(201, 244, 180, 36); +- iconSmallSize_firstPage->setThemeIcon("ukui-volume-symbolic", ":/symbos/ukui-volume-symbolic"); +- iconSmallSize_firstPage->setDesplayText(tr("Small Size")); +- iconSmallSize_firstPage->setEnabled(false); ++ MyIconLabel *iconSmallSize = new MyIconLabel(center); ++ iconSmallSize->setGeometry(201, 244, 180, 36); ++ iconSmallSize->setThemeIcon("ukui-volume-symbolic", ":/symbos/ukui-volume-symbolic"); ++ iconSmallSize->setDesplayText(tr("Small Size")); ++ iconSmallSize->setEnabled(false); + + // 安全 +- MyIconLabel *iconSecurity_firstPage = new MyIconLabel(center); +- iconSecurity_firstPage->setGeometry(41, 296, 180, 36); +- iconSecurity_firstPage->setThemeIcon("ukui-bf-security-symbolic", ":/symbos/ukui-bf-security-symbolic"); +- iconSecurity_firstPage->setDesplayText(tr("Security")); +- iconSecurity_firstPage->setEnabled(false); ++ MyIconLabel *iconSecurity = new MyIconLabel(center); ++ iconSecurity->setGeometry(41, 296, 180, 36); ++ iconSecurity->setThemeIcon("ukui-bf-security-symbolic", ":/symbos/ukui-bf-security-symbolic"); ++ iconSecurity->setDesplayText(tr("Security")); ++ iconSecurity->setEnabled(false); + + // 操作简单 +- MyIconLabel *iconSimple_firstPage = new MyIconLabel(center); +- iconSimple_firstPage->setGeometry(201, 296, 180, 36); +- iconSimple_firstPage->setThemeIcon("ukui-bf-simple-symbolic", ":/symbos/ukui-bf-simple-symbolic"); +- iconSimple_firstPage->setDesplayText(tr("Simple")); +- iconSimple_firstPage->setEnabled(false); ++ MyIconLabel *iconSimple = new MyIconLabel(center); ++ iconSimple->setGeometry(201, 296, 180, 36); ++ iconSimple->setThemeIcon("ukui-bf-simple-symbolic", ":/symbos/ukui-bf-simple-symbolic"); ++ iconSimple->setDesplayText(tr("Simple")); ++ iconSimple->setEnabled(false); + + // 开始备份按钮 + MyPushButton *beginBackup = new MyPushButton(center); +@@ -176,10 +176,10 @@ void SystemBackup::initFirstWidget() + vLayout->addStretch(); + vLayout->addLayout(bottomHBoxLayout); + vLayout->addSpacing(20); +- first->setLayout(vLayout); ++ homePage->setLayout(vLayout); + + connect(backupPointManage, &MyPushButton::clicked, this, [=]() { +- ManageBackupPointList backupManager(first, ManageBackupPointList::SYSTEM); ++ ManageBackupPointList backupManager(homePage, ManageBackupPointList::SYSTEM); + backupManager.exec(); + }); + connect(GlobelBackupInfo::instance().getGlobalSignals(), &GlobalSignals::styleNameChanged, this, [=](bool isDark) { +@@ -198,7 +198,7 @@ void SystemBackup::initFirstWidget() + backupPointManage->setPalette(pal); + }); + +- addWidget(first); ++ addWidget(homePage); + } + + /** +@@ -232,7 +232,7 @@ void SystemBackup::on_next_clicked(bool checked) + */ + void SystemBackup::initSecondWidget() + { +- QWidget *second = new QWidget; ++ QWidget *selectPathPage = new QWidget; + // 纵向布局 + QVBoxLayout *vlayout = new QVBoxLayout; + vlayout->addSpacing(40); +@@ -241,7 +241,7 @@ void SystemBackup::initSecondWidget() + QHBoxLayout * hlayoutLine1 = new QHBoxLayout; + hlayoutLine1->addSpacing(40); + // 备份路径选择提示 +- MyLabel* labelSelect = new MyLabel(second); ++ MyLabel* labelSelect = new MyLabel(selectPathPage); + labelSelect->setDeplayText(tr("Please select backup position")); + labelSelect->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + QFont font; +@@ -257,7 +257,7 @@ void SystemBackup::initSecondWidget() + QHBoxLayout * hlayoutLine2 = new QHBoxLayout; + hlayoutLine2->addSpacing(40); + // 备份路径选择框 +- QComboBox* comboSelect = new QComboBox(second); ++ QComboBox* comboSelect = new QComboBox(selectPathPage); + comboSelect->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + KBorderButton *buttonBrowse = new KBorderButton; + buttonBrowse->setText(tr("Browse")); +@@ -272,7 +272,7 @@ void SystemBackup::initSecondWidget() + hlayoutLine3->setSpacing(16); + hlayoutLine3->addStretch(); + // 上一步按钮 +- KBorderButton *preStep = new KBorderButton(second); ++ KBorderButton *preStep = new KBorderButton(selectPathPage); + preStep->setText(tr("Back")); + preStep->setEnabled(true); + // preStep->setAutoRepeat(true); +@@ -281,7 +281,7 @@ void SystemBackup::initSecondWidget() + hlayoutLine3->addWidget(preStep); + + // 下一步按钮 +- MyPushButton *nextStep = new MyPushButton(second); ++ MyPushButton *nextStep = new MyPushButton(selectPathPage); + nextStep->setText(tr("Next")); + nextStep->setEnabled(false); + // nextStep->setAutoRepeat(true); +@@ -292,9 +292,9 @@ void SystemBackup::initSecondWidget() + vlayout->addLayout(hlayoutLine3); + + vlayout->addStretch(); +- second->setLayout(vlayout); ++ selectPathPage->setLayout(vlayout); + +- addWidget(second); ++ addWidget(selectPathPage); + + // 添加本地默认路径、移动设备目录 + connect(m_udector, &UdiskDetector::udiskListChanged, this, [=](QList diskList) { +@@ -355,7 +355,9 @@ void SystemBackup::initSecondWidget() + QString fileName = selectFiles.at(0); + + // sdk重新实现了QFileDialog后很多功能已经丢失,需要再次进行过滤,真难用 +- if (fileName == BACKUP_PATH || fileName.contains(BACKUP_SNAPSHOTS_PATH)) { ++ QString backupPath = Utils::getSysRootPath() + BACKUP_PATH; ++ backupPath.replace("//", "/"); ++ if (fileName == backupPath || fileName.contains(BACKUP_SNAPSHOTS_PATH)) { + // 不能嵌套备份,请选择其它目录 + MessageBoxUtils::QMESSAGE_BOX_WARNING(GlobelBackupInfo::instance().getMainWidget(), QObject::tr("Information"), + QObject::tr("Cannot nest backups, please select another directory."), +@@ -425,18 +427,18 @@ void SystemBackup::initSecondWidget() + */ + void SystemBackup::initThirdWidget() + { +- QWidget *third = new QWidget; ++ QWidget *checkPage = new QWidget; + QVBoxLayout *vlayout = new QVBoxLayout; + vlayout->addSpacing(40); + + // 流程进度提示栏 +- CircleLable *one = new CircleLable("1", third, 24, QColor(COLOR_BLUE)); +- LineLabel *line1 = new LineLabel(third, QColor(COLOR_BLUE)); +- CircleLable *two = new CircleLable("2", third); +- LineLabel *line2 = new LineLabel(third); +- CircleLable *three = new CircleLable("3", third); +- LineLabel *line3 = new LineLabel(third); +- CircleLable *four = new CircleLable("4", third); ++ CircleLable *one = new CircleLable("1", checkPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line1 = new LineLabel(checkPage, QColor(COLOR_BLUE)); ++ CircleLable *two = new CircleLable("2", checkPage); ++ LineLabel *line2 = new LineLabel(checkPage); ++ CircleLable *three = new CircleLable("3", checkPage); ++ LineLabel *line3 = new LineLabel(checkPage); ++ CircleLable *four = new CircleLable("4", checkPage); + + QHBoxLayout *hlayoutTopLine1 = new QHBoxLayout; + hlayoutTopLine1->addSpacing(80); +@@ -450,16 +452,16 @@ void SystemBackup::initThirdWidget() + hlayoutTopLine1->addSpacing(80); + vlayout->addLayout(hlayoutTopLine1); + +- MyLabel *label1 = new MyLabel(tr("checking"), third); ++ MyLabel *label1 = new MyLabel(tr("checking"), checkPage); + label1->setFontColor(QColor(COLOR_BLUE)); + label1->setFixedWidth(164); +- MyLabel *label2 = new MyLabel(tr("preparing"), third); ++ MyLabel *label2 = new MyLabel(tr("preparing"), checkPage); + label2->setFixedWidth(164); + label2->setEnabled(false); +- MyLabel *label3 = new MyLabel(tr("backuping"), third); ++ MyLabel *label3 = new MyLabel(tr("backuping"), checkPage); + label3->setFixedWidth(164); + label3->setEnabled(false); +- MyLabel *label4 = new MyLabel(tr("finished"), third); ++ MyLabel *label4 = new MyLabel(tr("finished"), checkPage); + label4->setFixedWidth(164); + label4->setEnabled(false); + +@@ -481,7 +483,7 @@ void SystemBackup::initThirdWidget() + QHBoxLayout *hlayout = new QHBoxLayout; + hlayout->addStretch(); + hlayout->addSpacing(20); +- QWidget *centerFont = new QWidget(third); ++ QWidget *centerFont = new QWidget(checkPage); + centerFont->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + QVBoxLayout *vlayoutCenterFont = new QVBoxLayout; + +@@ -589,7 +591,7 @@ void SystemBackup::initThirdWidget() + vlayout->addLayout(hlayout); + + vlayout->addStretch(); +- third->setLayout(vlayout); ++ checkPage->setLayout(vlayout); + // ------------ 中部布局end------------- + + // 开始检测 +@@ -716,7 +718,7 @@ void SystemBackup::initThirdWidget() + } + }); + +- addWidget(third); ++ addWidget(checkPage); + } + + /** +@@ -825,18 +827,18 @@ void SystemBackup::on_checkEnv_end(int result) + #define MAX_LEN_BACKUPNAME 64 + void SystemBackup::initForthWidget() + { +- QWidget *forth = new QWidget; ++ QWidget *nameBackupPage = new QWidget; + QVBoxLayout *vlayout = new QVBoxLayout; + vlayout->addSpacing(40); + + // 流程进度提示栏 +- CircleLable *one = new CircleLable("1", forth, 24, QColor(COLOR_BLUE)); +- LineLabel *line1 = new LineLabel(forth, QColor(COLOR_BLUE)); +- CircleLable *two = new CircleLable("2", forth, 24, QColor(COLOR_BLUE)); +- LineLabel *line2 = new LineLabel(forth, QColor(COLOR_BLUE)); +- CircleLable *three = new CircleLable("3", forth); +- LineLabel *line3 = new LineLabel(forth); +- CircleLable *four = new CircleLable("4", forth); ++ CircleLable *one = new CircleLable("1", nameBackupPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line1 = new LineLabel(nameBackupPage, QColor(COLOR_BLUE)); ++ CircleLable *two = new CircleLable("2", nameBackupPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line2 = new LineLabel(nameBackupPage, QColor(COLOR_BLUE)); ++ CircleLable *three = new CircleLable("3", nameBackupPage); ++ LineLabel *line3 = new LineLabel(nameBackupPage); ++ CircleLable *four = new CircleLable("4", nameBackupPage); + + QHBoxLayout *hlayoutTopLine1 = new QHBoxLayout; + hlayoutTopLine1->addSpacing(80); +@@ -850,16 +852,16 @@ void SystemBackup::initForthWidget() + hlayoutTopLine1->addSpacing(80); + vlayout->addLayout(hlayoutTopLine1); + +- MyLabel *label1 = new MyLabel(tr("checking"), forth); ++ MyLabel *label1 = new MyLabel(tr("checking"), nameBackupPage); + label1->setFontColor(QColor(COLOR_BLUE)); + label1->setFixedWidth(164); +- MyLabel *label2 = new MyLabel(tr("preparing"), forth); ++ MyLabel *label2 = new MyLabel(tr("preparing"), nameBackupPage); + label2->setFontColor(QColor(COLOR_BLUE)); + label2->setFixedWidth(164); +- MyLabel *label3 = new MyLabel(tr("backuping"), forth); ++ MyLabel *label3 = new MyLabel(tr("backuping"), nameBackupPage); + label3->setFixedWidth(164); + label3->setEnabled(false); +- MyLabel *label4 = new MyLabel(tr("finished"), forth); ++ MyLabel *label4 = new MyLabel(tr("finished"), nameBackupPage); + label4->setFixedWidth(164); + label4->setEnabled(false); + +@@ -882,12 +884,12 @@ void SystemBackup::initForthWidget() + // 中部第一行 + QHBoxLayout *hlayoutCenterLine1 = new QHBoxLayout; + // 备份名称 +- MyLabel *labelBackupName = new MyLabel(forth); ++ MyLabel *labelBackupName = new MyLabel(nameBackupPage); + labelBackupName->setDeplayText(tr("Backup Name")); + QFontMetrics fontMetrics(labelBackupName->font()); + int fontSize = fontMetrics.width(labelBackupName->getOriginalText()); + labelBackupName->setFixedWidth(fontSize); +- MyLineEdit *editBackupName = new MyLineEdit(forth); ++ MyLineEdit *editBackupName = new MyLineEdit(nameBackupPage); + editBackupName->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + editBackupName->setMinimumWidth(350); + editBackupName->setMaxLength(64); +@@ -907,7 +909,7 @@ void SystemBackup::initForthWidget() + vlayout->addLayout(hlayoutCenterLine1); + + // 备份名称错误提示 +- MyLabel *labelError = new MyLabel(forth); ++ MyLabel *labelError = new MyLabel(nameBackupPage); + labelError->setFixedSize(editBackupName->size()); + labelError->setFontSize(14); + labelError->setFontColor(Qt::red); +@@ -932,7 +934,10 @@ void SystemBackup::initForthWidget() + labelError->setDeplayText(tr("Maximum length reached")); + labelError->setVisible(true); + labelError->move(editBackupName->geometry().left(), editBackupName->geometry().bottom() + 10); +- } else if (text == in) { ++ } else if (!text.isEmpty() && this->isExistsBackupName(text)) { ++ labelError->setDeplayText(tr("Name already exists")); ++ labelError->setVisible(true); ++ } else if (text == in) { + labelError->setVisible(false); + } + } else { +@@ -970,7 +975,7 @@ void SystemBackup::initForthWidget() + hlayoutCenterLine3->setSpacing(16); + hlayoutCenterLine3->addStretch(); + // 上一步按钮 +- KBorderButton *preStep = new KBorderButton(forth); ++ KBorderButton *preStep = new KBorderButton(nameBackupPage); + preStep->setText(tr("Back")); + preStep->setEnabled(true); + // preStep->setAutoRepeat(true); +@@ -982,7 +987,7 @@ void SystemBackup::initForthWidget() + hlayoutCenterLine3->addWidget(preStep); + + // 下一步按钮 +- MyPushButton *nextStep = new MyPushButton(forth); ++ MyPushButton *nextStep = new MyPushButton(nameBackupPage); + nextStep->setText(tr("Next")); + nextStep->setEnabled(true); + // nextStep->setAutoRepeat(true); +@@ -1015,9 +1020,9 @@ void SystemBackup::initForthWidget() + vlayout->addLayout(hlayoutCenterLine3); + + vlayout->addStretch(); +- forth->setLayout(vlayout); ++ nameBackupPage->setLayout(vlayout); + +- addWidget(forth); ++ addWidget(nameBackupPage); + } + + /** +@@ -1097,19 +1102,19 @@ bool SystemBackup::isExistsBackupName(const QString & backupName) + */ + void SystemBackup::initFifthWidget() + { +- QWidget *fifth = new QWidget; ++ QWidget *backupingPage = new QWidget; + QVBoxLayout *vlayout = new QVBoxLayout; + vlayout->setSpacing(10); + vlayout->addSpacing(40); + + // 流程进度提示栏 +- CircleLable *one = new CircleLable("1", fifth, 24, QColor(COLOR_BLUE)); +- LineLabel *line1 = new LineLabel(fifth, QColor(COLOR_BLUE)); +- CircleLable *two = new CircleLable("2", fifth, 24, QColor(COLOR_BLUE)); +- LineLabel *line2 = new LineLabel(fifth, QColor(COLOR_BLUE)); +- CircleLable *three = new CircleLable("3", fifth, 24, QColor(COLOR_BLUE)); +- LineLabel *line3 = new LineLabel(fifth, QColor(COLOR_BLUE)); +- CircleLable *four = new CircleLable("4", fifth); ++ CircleLable *one = new CircleLable("1", backupingPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line1 = new LineLabel(backupingPage, QColor(COLOR_BLUE)); ++ CircleLable *two = new CircleLable("2", backupingPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line2 = new LineLabel(backupingPage, QColor(COLOR_BLUE)); ++ CircleLable *three = new CircleLable("3", backupingPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line3 = new LineLabel(backupingPage, QColor(COLOR_BLUE)); ++ CircleLable *four = new CircleLable("4", backupingPage); + + QHBoxLayout *hlayoutTopLine1 = new QHBoxLayout; + hlayoutTopLine1->addSpacing(80); +@@ -1123,16 +1128,16 @@ void SystemBackup::initFifthWidget() + hlayoutTopLine1->addSpacing(80); + vlayout->addLayout(hlayoutTopLine1); + +- MyLabel *label1 = new MyLabel(tr("checking"), fifth); ++ MyLabel *label1 = new MyLabel(tr("checking"), backupingPage); + label1->setFontColor(QColor(COLOR_BLUE)); + label1->setFixedWidth(164); +- MyLabel *label2 = new MyLabel(tr("preparing"), fifth); ++ MyLabel *label2 = new MyLabel(tr("preparing"), backupingPage); + label2->setFontColor(QColor(COLOR_BLUE)); + label2->setFixedWidth(164); +- MyLabel *label3 = new MyLabel(tr("backuping"), fifth); ++ MyLabel *label3 = new MyLabel(tr("backuping"), backupingPage); + label3->setFontColor(QColor(COLOR_BLUE)); + label3->setFixedWidth(164); +- MyLabel *label4 = new MyLabel(tr("finished"), fifth); ++ MyLabel *label4 = new MyLabel(tr("finished"), backupingPage); + label4->setFixedWidth(164); + label4->setEnabled(false); + +@@ -1154,14 +1159,14 @@ void SystemBackup::initFifthWidget() + // 中部第一行 + QHBoxLayout *hlayoutCenterFont1 = new QHBoxLayout; + // 检测等待图标 +- QLabel *loadingGif = new QLabel(fifth); ++ QLabel *loadingGif = new QLabel(backupingPage); + // 环境检测等待动画 +- QMovie *movie = new QMovie(":/images/loading.gif", QByteArray(), fifth); ++ QMovie *movie = new QMovie(":/images/loading.gif", QByteArray(), backupingPage); + loadingGif->setMovie(movie); + loadingGif->setFixedSize(24,24); + loadingGif->setVisible(false); + // 进度条 +- RingsProgressbar *progressBar = new RingsProgressbar(fifth); ++ RingsProgressbar *progressBar = new RingsProgressbar(backupingPage); + progressBar->setFixedSize(100, 100); + hlayoutCenterFont1->addStretch(); + hlayoutCenterFont1->addWidget(loadingGif); +@@ -1174,7 +1179,7 @@ void SystemBackup::initFifthWidget() + vlayout->addSpacing(16); + QHBoxLayout *hlayoutCenterFont2 = new QHBoxLayout; + // 提醒 +- MyLabel *labelTip = new MyLabel(fifth); ++ MyLabel *labelTip = new MyLabel(backupingPage); + labelTip->setAlignment(Qt::AlignCenter); + labelTip->setIsOriginal(true); + labelTip->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); +@@ -1187,7 +1192,7 @@ void SystemBackup::initFifthWidget() + // 第二行(隐) + QHBoxLayout *hlayoutCenterFont2_1 = new QHBoxLayout; + // 备份过程提醒信息 +- MyLabel *labelTip_1 = new MyLabel(fifth); ++ MyLabel *labelTip_1 = new MyLabel(backupingPage); + labelTip_1->setAlignment(Qt::AlignCenter); + labelTip_1->setIsOriginal(true); + labelTip_1->setFontWordWrap(true); +@@ -1203,7 +1208,7 @@ void SystemBackup::initFifthWidget() + // 第三行 + QHBoxLayout *hlayoutCenterFont3 = new QHBoxLayout; + // 取消按钮 +- MyPushButton *cancel = new MyPushButton(fifth); ++ MyPushButton *cancel = new MyPushButton(backupingPage); + cancel->setText(tr("Cancel")); + // cancel->setAutoRepeat(true); + cancel->setProperty("isImportant", true); +@@ -1214,7 +1219,7 @@ void SystemBackup::initFifthWidget() + vlayout->addLayout(hlayoutCenterFont3); + + vlayout->addStretch(); +- fifth->setLayout(vlayout); ++ backupingPage->setLayout(vlayout); + + // ------------ 中部布局end------------- + +@@ -1255,7 +1260,7 @@ void SystemBackup::initFifthWidget() + m_pInterface->cancel(); + }); + +- addWidget(fifth); ++ addWidget(backupingPage); + } + + /** +diff --git a/kybackup/module/systemrestore.cpp b/kybackup/module/systemrestore.cpp +index 2076a1e..79d5586 100755 +--- a/kybackup/module/systemrestore.cpp ++++ b/kybackup/module/systemrestore.cpp +@@ -59,7 +59,7 @@ SystemRestore::~SystemRestore() + */ + void SystemRestore::initFirstWidget() + { +- QWidget *first = new QWidget; ++ QWidget *homePage = new QWidget; + QVBoxLayout *vLayout = new QVBoxLayout; + vLayout->addStretch(); + +@@ -72,65 +72,65 @@ void SystemRestore::initFirstWidget() + centerHBoxLayout->addStretch(); + vLayout->addLayout(centerHBoxLayout); + // 图片 +- PixmapLabel *imageRestore_firstPage = new PixmapLabel(center); +- imageRestore_firstPage->setGeometry(center->width() - 40 - PICTURE_SIZE, 160, PICTURE_SIZE, PICTURE_SIZE); +- imageRestore_firstPage->setScaledContents(true); +- imageRestore_firstPage->setLightAndDarkPixmap(":/images/system_restore.png", ":/images/system_restore_dark.png"); ++ PixmapLabel *imageRestore = new PixmapLabel(center); ++ imageRestore->setGeometry(center->width() - 40 - PICTURE_SIZE, 160, PICTURE_SIZE, PICTURE_SIZE); ++ imageRestore->setScaledContents(true); ++ imageRestore->setLightAndDarkPixmap(":/images/system_restore.png", ":/images/system_restore_dark.png"); + + // 系统还原大字提示 +- MyLabel *labelRestore_firstPage = new MyLabel(center); +- labelRestore_firstPage->setDeplayText(tr("System Restore")); +- labelRestore_firstPage->setFixedWidth(center->width() - 200); +- labelRestore_firstPage->setFixedHeight(48); +- labelRestore_firstPage->move(41, 120); ++ MyLabel *labelRestore = new MyLabel(center); ++ labelRestore->setDeplayText(tr("System Restore")); ++ labelRestore->setFixedWidth(center->width() - 200); ++ labelRestore->setFixedHeight(48); ++ labelRestore->move(41, 120); + QFont font; + font.setBold(true); + font.setPixelSize(36); +- labelRestore_firstPage->setFont(font); +- // labelRestore_firstPage->setAttribute(Qt::WA_TranslucentBackground); +- labelRestore_firstPage->setScaledContents(true); +- labelRestore_firstPage->adjustSize(); ++ labelRestore->setFont(font); ++ // labelRestore->setAttribute(Qt::WA_TranslucentBackground); ++ labelRestore->setScaledContents(true); ++ labelRestore->adjustSize(); + + // 系统还原说明 +- MyLabel *labelNote_firstPage = new MyLabel(center); +- labelNote_firstPage->setFixedWidth(center->width() - 45); +- labelNote_firstPage->setFixedHeight(24); +- labelNote_firstPage->move(41, 180); ++ MyLabel *labelNote = new MyLabel(center); ++ labelNote->setFixedWidth(center->width() - 45); ++ labelNote->setFixedHeight(24); ++ labelNote->move(41, 180); + // 在您遇到问题时可将系统还原到以前的状态 +- labelNote_firstPage->setDeplayText(tr("You can restore the system to its previous state")); ++ labelNote->setDeplayText(tr("You can restore the system to its previous state")); + font.setBold(false); + font.setPixelSize(18); +- labelNote_firstPage->setFont(font); +- labelNote_firstPage->setScaledContents(true); +- labelNote_firstPage->adjustSize(); ++ labelNote->setFont(font); ++ labelNote->setScaledContents(true); ++ labelNote->adjustSize(); + + // 操作简单 +- MyIconLabel *iconSimple_firstPage = new MyIconLabel(center); +- iconSimple_firstPage->setGeometry(41, 244, 210, 36); +- iconSimple_firstPage->setThemeIcon("ukui-bf-simple-symbolic", ":/symbos/ukui-bf-simple-symbolic"); +- iconSimple_firstPage->setDesplayText(tr("Simple")); +- iconSimple_firstPage->setEnabled(false); ++ MyIconLabel *iconSimple = new MyIconLabel(center); ++ iconSimple->setGeometry(41, 244, 210, 36); ++ iconSimple->setThemeIcon("ukui-bf-simple-symbolic", ":/symbos/ukui-bf-simple-symbolic"); ++ iconSimple->setDesplayText(tr("Simple")); ++ iconSimple->setEnabled(false); + + // 安全可靠 +- MyIconLabel *iconSecurity_firstPage = new MyIconLabel(center); +- iconSecurity_firstPage->setGeometry(231, 244, 180, 36); +- iconSecurity_firstPage->setThemeIcon("ukui-bf-security-symbolic", ":/symbos/ukui-bf-security-symbolic"); +- iconSecurity_firstPage->setDesplayText(tr("Security")); +- iconSecurity_firstPage->setEnabled(false); ++ MyIconLabel *iconSecurity = new MyIconLabel(center); ++ iconSecurity->setGeometry(231, 244, 180, 36); ++ iconSecurity->setThemeIcon("ukui-bf-security-symbolic", ":/symbos/ukui-bf-security-symbolic"); ++ iconSecurity->setDesplayText(tr("Security")); ++ iconSecurity->setEnabled(false); + + // 修复系统损坏 +- MyIconLabel *iconMultiBackup_firstPage = new MyIconLabel(center); +- iconMultiBackup_firstPage->setGeometry(41, 296, 210, 36); +- iconMultiBackup_firstPage->setThemeIcon("ukui-bf-damage-symbolic", ":/symbos/ukui-bf-damage-symbolic"); +- iconMultiBackup_firstPage->setDesplayText(tr("Repair")); +- iconMultiBackup_firstPage->setEnabled(false); ++ MyIconLabel *iconMultiBackup = new MyIconLabel(center); ++ iconMultiBackup->setGeometry(41, 296, 210, 36); ++ iconMultiBackup->setThemeIcon("ukui-bf-damage-symbolic", ":/symbos/ukui-bf-damage-symbolic"); ++ iconMultiBackup->setDesplayText(tr("Repair")); ++ iconMultiBackup->setEnabled(false); + + // 自主操作 +- MyIconLabel *iconSmallSize_firstPage = new MyIconLabel(center); +- iconSmallSize_firstPage->setGeometry(231, 296, 180, 36); +- iconSmallSize_firstPage->setThemeIcon("ukui-self-help-symbolic", ":/symbos/ukui-self-help-symbolic"); +- iconSmallSize_firstPage->setDesplayText(tr("Independent")); +- iconSmallSize_firstPage->setEnabled(false); ++ MyIconLabel *iconSmallSize = new MyIconLabel(center); ++ iconSmallSize->setGeometry(231, 296, 180, 36); ++ iconSmallSize->setThemeIcon("ukui-self-help-symbolic", ":/symbos/ukui-self-help-symbolic"); ++ iconSmallSize->setDesplayText(tr("Independent")); ++ iconSmallSize->setEnabled(false); + + // 开始还原按钮 + MyPushButton *beginRestore = new MyPushButton(center); +@@ -162,7 +162,7 @@ void SystemRestore::initFirstWidget() + vLayout->addStretch(); + vLayout->addLayout(bottomHBoxLayout); + vLayout->addSpacing(20); +- first->setLayout(vLayout); ++ homePage->setLayout(vLayout); + + connect(checkFactoryRestore, &MyCheckBox::stateChanged, this, [=](int state) { + this->m_isFactoryRestore = Qt::Unchecked == state ? false : true; +@@ -177,7 +177,7 @@ void SystemRestore::initFirstWidget() + } + }); + +- addWidget(first); ++ addWidget(homePage); + } + + /** +@@ -261,14 +261,14 @@ void SystemRestore::on_button_beginRestore_clicked(bool checked) + */ + void SystemRestore::initSecondWidget() + { +- QWidget *second = new QWidget; ++ QWidget *checkPage = new QWidget; + + // 流程进度提示栏 +- CircleLable *one = new CircleLable("1", second, 24, QColor(COLOR_BLUE)); +- LineLabel *line1 = new LineLabel(second, QColor(COLOR_BLUE)); +- CircleLable *two = new CircleLable("2", second); +- LineLabel *line2 = new LineLabel(second, QColor(COLOR_GRAY)); +- CircleLable *three = new CircleLable("3", second); ++ CircleLable *one = new CircleLable("1", checkPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line1 = new LineLabel(checkPage, QColor(COLOR_BLUE)); ++ CircleLable *two = new CircleLable("2", checkPage); ++ LineLabel *line2 = new LineLabel(checkPage, QColor(COLOR_GRAY)); ++ CircleLable *three = new CircleLable("3", checkPage); + QHBoxLayout *layoutLine1 = new QHBoxLayout; + layoutLine1->addSpacing(128); + layoutLine1->addWidget(one); +@@ -278,15 +278,15 @@ void SystemRestore::initSecondWidget() + layoutLine1->addWidget(three); + layoutLine1->addSpacing(128); + +- MyLabel *label1 = new MyLabel(tr("checking"), second); ++ MyLabel *label1 = new MyLabel(tr("checking"), checkPage); + label1->setIsOriginal(true); + label1->setFontColor(QColor(COLOR_BLUE)); + label1->setFixedWidth(164); +- MyLabel *label2 = new MyLabel(tr("restoring"), second); ++ MyLabel *label2 = new MyLabel(tr("restoring"), checkPage); + label2->setIsOriginal(true); + label2->setEnabled(false); + label2->setFixedWidth(164); +- MyLabel *label3 = new MyLabel(tr("finished"), second); ++ MyLabel *label3 = new MyLabel(tr("finished"), checkPage); + label3->setIsOriginal(true); + label3->setEnabled(false); + label3->setFixedWidth(164); +@@ -300,7 +300,7 @@ void SystemRestore::initSecondWidget() + layoutLine2->addSpacing(54); + + // ------------ 中部布局begin------------- +- QWidget *centerFont = new QWidget(second); ++ QWidget *centerFont = new QWidget(checkPage); + centerFont->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + QVBoxLayout *vlayoutCenterFont = new QVBoxLayout; + +@@ -415,7 +415,7 @@ void SystemRestore::initSecondWidget() + vlayout->addSpacing(80); + vlayout->addLayout(layoutLine3); + vlayout->addStretch(); +- second->setLayout(vlayout); ++ checkPage->setLayout(vlayout); + + // 开始检测 + connect(this, &SystemRestore::startCheckEnv, this, [=]() { +@@ -542,7 +542,7 @@ void SystemRestore::initSecondWidget() + emit this->startCheckEnv(); + }); + +- addWidget(second); ++ addWidget(checkPage); + } + + /** +@@ -639,14 +639,14 @@ void SystemRestore::on_checkEnv_end(int result) + */ + void SystemRestore::initThirdWidget() + { +- QWidget *third = new QWidget; ++ QWidget *restoringPage = new QWidget; + + // 流程进度提示栏 +- CircleLable *one = new CircleLable("1", third, 24, QColor(COLOR_BLUE)); +- LineLabel *line1 = new LineLabel(third, QColor(COLOR_BLUE)); +- CircleLable *two = new CircleLable("2", third, 24, QColor(COLOR_BLUE)); +- LineLabel *line2 = new LineLabel(third, QColor(COLOR_BLUE)); +- CircleLable *three = new CircleLable("3", third); ++ CircleLable *one = new CircleLable("1", restoringPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line1 = new LineLabel(restoringPage, QColor(COLOR_BLUE)); ++ CircleLable *two = new CircleLable("2", restoringPage, 24, QColor(COLOR_BLUE)); ++ LineLabel *line2 = new LineLabel(restoringPage, QColor(COLOR_BLUE)); ++ CircleLable *three = new CircleLable("3", restoringPage); + QHBoxLayout *layoutLine1 = new QHBoxLayout; + layoutLine1->addSpacing(128); + layoutLine1->addWidget(one); +@@ -656,15 +656,15 @@ void SystemRestore::initThirdWidget() + layoutLine1->addWidget(three); + layoutLine1->addSpacing(128); + +- MyLabel *label1 = new MyLabel(tr("checking"), third); ++ MyLabel *label1 = new MyLabel(tr("checking"), restoringPage); + label1->setIsOriginal(true); + label1->setFontColor(QColor(COLOR_BLUE)); + label1->setFixedWidth(164); +- MyLabel *label2 = new MyLabel(tr("restoring"), third); ++ MyLabel *label2 = new MyLabel(tr("restoring"), restoringPage); + label2->setIsOriginal(true); + label2->setFontColor(QColor(COLOR_BLUE)); + label2->setFixedWidth(164); +- MyLabel *label3 = new MyLabel(tr("finished"), third); ++ MyLabel *label3 = new MyLabel(tr("finished"), restoringPage); + label3->setIsOriginal(true); + label3->setEnabled(false); + label3->setFixedWidth(164); +@@ -681,13 +681,13 @@ void SystemRestore::initThirdWidget() + // 中部第一行 + QHBoxLayout *hlayoutCenterFont1 = new QHBoxLayout; + // 检测等待图标 +- QLabel *loadingGif = new QLabel(third); ++ QLabel *loadingGif = new QLabel(restoringPage); + // 环境检测等待动画 +- QMovie *movie = new QMovie(":/images/loading.gif", QByteArray(), third); ++ QMovie *movie = new QMovie(":/images/loading.gif", QByteArray(), restoringPage); + loadingGif->setMovie(movie); + loadingGif->setVisible(false); + // 进度条 +- RingsProgressbar *progressBar = new RingsProgressbar(third); ++ RingsProgressbar *progressBar = new RingsProgressbar(restoringPage); + progressBar->setFixedSize(100, 100); + hlayoutCenterFont1->addStretch(); + hlayoutCenterFont1->addWidget(loadingGif); +@@ -698,7 +698,7 @@ void SystemRestore::initThirdWidget() + // 第二行 + QHBoxLayout *hlayoutCenterFont2 = new QHBoxLayout; + // 提醒 +- MyLabel *labelTip = new MyLabel(third); ++ MyLabel *labelTip = new MyLabel(restoringPage); + labelTip->setAlignment(Qt::AlignCenter); + labelTip->setIsOriginal(true); + labelTip->setFontWordWrap(true); +@@ -722,7 +722,7 @@ void SystemRestore::initThirdWidget() + vlayout->addSpacing(16); + vlayout->addLayout(hlayoutCenterFont2); + vlayout->addStretch(); +- third->setLayout(vlayout); ++ restoringPage->setLayout(vlayout); + + // 开始还原 + connect(this, &SystemRestore::startRestore, this, [=] { +@@ -739,7 +739,7 @@ void SystemRestore::initThirdWidget() + progressBar->setPersent(rate); + }); + +- addWidget(third); ++ addWidget(restoringPage); + } + + /** +diff --git a/kybackup/qt_bo_CN.ts b/kybackup/qt_bo_CN.ts +index d4fe289..82de35d 100644 +--- a/kybackup/qt_bo_CN.ts ++++ b/kybackup/qt_bo_CN.ts +@@ -48,32 +48,37 @@ + གླེང་མོལ། + + +- ++ ++ Close ++ སྒོ་རྒྱག་པ། ++ ++ ++ + Backup Name + རྗེས་གྲབས་མིང་། + + +- ++ + UUID + UUID + + +- ++ + Backup Time + རྗེས་གྲབས་དུས་ཚོད། + + +- ++ + Backup Size + རྗེས་གྲབས་གཞི་ཁྱོན། + + +- ++ + Position + གོ་གནས། + + +- ++ + No Backup + རྗེས་གྲབས་དཔུང་ཁག་མེད་པ། + +@@ -89,370 +94,371 @@ + + DataBackup + +- ++ + Data Backup + གཞི་གྲངས་གྲབས་སྒྲིག + + +- ++ + Only files in the /home, and /data directories can be backed up + /home,/data དཀར་ཆག་ནང་གི་ཡིག་ཆ་མ་གཏོགས་རྒྱབ་སྐྱོར་བྱེད་མི་ཐུབ། + + +- ++ + Only files in the /home, and /data/usershare directories can be backed up + /home,/data/usershare དཀར་ཆག་ནང་གི་ཡིག་ཆ་མ་གཏོགས་རྒྱབ་སྐྱོར་བྱེད་མི་ཐུབ། + + +- ++ + Multi-Spot + ས་ཆ་མང་པོ། + + +- ++ + Security + བདེ་འཇགས། + + +- ++ + Protect Data + གཞི་གྲངས་ལ་སྲུང་སྐྱོབ་ + + +- ++ + Convenient + སྟབས་བདེ། + + +- ++ + Start Backup + གསར་འཛུགས། + + +- ++ + Update Backup + གསར་སྒྱུར་ + + +- ++ + Backup Management >> + རྗེས་གྲབས་དོ་དམ་>> + + +- ++ + Please select backup position + རྗེས་གྲབས་ལས་གནས་གདམ་གསེས་གནང་རོགས། + + +- +- ++ ++ + local default path : + ས་གནས་དེ་གའི་ཁ་ཆད་དང་འགལ་ + + +- +- ++ ++ + removable devices path : + གནས་སྤོ་ཐུབ་པའི་སྒྲིག་ཆས་ཀྱི་ལམ་བུ། + + +- +- ++ ++ + Select backup data + རྗེས་གྲབས་གཞི་གྲངས་བདམས་པ། + + +- +- ++ ++ + Add + ཁ་སྣོན་བརྒྱབ་པ། + + +- +- ++ ++ + Select + བདམས་ཐོན་བྱུང་བ། + + +- +- ++ ++ + Please select file to backup + ཁྱོད་ཀྱིས་ཡིག་ཆ་བདམས་ནས་རྗེས་གྲབས་བྱེད་རོགས། + + +- +- +- +- ++ ++ ++ ++ + Back + ཕྱིར་ལོག་པ། + + +- ++ + Browse + བལྟས་པ་ཙམ་གྱིས་ + + +- +- ++ ++ + Clear + གསལ་པོར་བཤད་ན། + + +- +- +- +- ++ ++ ++ ++ + Next + གོམ་སྟབས་རྗེས་མར། + + +- +- +- ++ ++ ++ + customize path : + ཡུལ་སྲོལ་གོམས་གཤིས་ཀྱི་ལམ་བུ། + + +- ++ + Default backup location + སྔོན་ལ་རྗེས་གྲབས་གནས་ཡུལ། + + +- +- +- +- ++ ++ ++ ++ + checking + ཞིབ་བཤེར་བྱ་དགོས། + + +- +- +- +- ++ ++ ++ ++ + preparing + གྲ་སྒྲིག་བྱེད་བཞིན་ཡོད། + + +- +- +- +- ++ ++ ++ ++ + backuping + རྗེས་གྲབས་དཔུང་ཁག + + +- +- +- +- ++ ++ ++ ++ + finished + ལེགས་གྲུབ་བྱུང་བ། + + +- ++ + Recheck + ཞིབ་བཤེར་བྱ་དགོས། + + +- ++ + Checking, wait a moment ... + ཞིབ་བཤེར་བྱས་ནས་ཅུང་ཙམ་སྒུགས་དང་། ... + + +- ++ + Do not perform other operations during backup to avoid data loss + རྗེས་གྲབས་བྱེད་རིང་གཞི་གྲངས་བོར་བརླག་མི་ཡོང་བའི་ཆེད་དུ་ལས་ཀ་གཞན་དག་མི་བྱེད་པ། + + +- ++ + Check whether the remaining capacity of the backup partition is sufficient + རྗེས་གྲབས་ཁག་བགོས་ཀྱི་ལྷག་མའི་ཤོང་ཚད་འདང་མིན་ལ་ཞིབ་བཤེར་བྱ་དགོས། + + +- ++ + Check whether the remaining capacity of the removable device is sufficient + གནས་སྤོ་ཐུབ་པའི་སྒྲིག་ཆས་ཀྱི་ལྷག་འཕྲོའི་ཤོང་ཚད་འདང་མིན་ལ་ཞིབ་བཤེར་བྱ་དགོས། + + +- ++ + Check success + ཞིབ་བཤེར་ལེགས་འགྲུབ་བྱུང་ + + +- ++ + The storage for backup is enough + རྗེས་གྲབས་གསོག་འཇོག་བྱས་པ་འདང་ངེས་ཤིག་ཡོད། + + +- ++ + Make sure the computer is plugged in or the battery level is above 60% + གློག་ཀླད་ནང་དུ་འཇུག་པའམ་ཡང་ན་གློག་གཡིས་ཀྱི་ཆུ་ཚད་བརྒྱ་ཆ་60ཡན་ཟིན་པར་ཁག་ཐེག་བྱེད་དགོས། + + +- ++ + Check failure + ཞིབ་བཤེར་བྱེད་མ་ཐུབ་པ + + +- +- ++ ++ + Program lock failed, please retry + གོ་རིམ་གྱི་ཟྭ་ལ་སྐྱོན་ཤོར་བ་དང་། བསྐྱར་དུ་ཞིབ་བཤེར་བྱེད་ + + +- +- ++ ++ + There may be other backups or restores being performed + ད་དུང་ལག་བསྟར་བྱེད་བཞིན་པའི་རྗེས་གྲབས་དཔུང་ཁག་གམ་ཡང་ན་སླར་གསོ་བྱེད་བཞིན་ཡོད། + + +- +- ++ ++ + Unsupported task type + རྒྱབ་སྐྱོར་མི་བྱེད་པའི་ལས་འགན་གྱི་རིགས་དབྱིབས། + + +- +- ++ ++ + No processing logic was found in the service + ཞབས་ཞུའི་ཁྲོད་དུ་ཐག་གཅོད་བྱེད་པའི་གཏན་ཚིགས་མ་རྙེད། + + +- +- ++ ++ + Failed to mount the backup partition + རྗེས་གྲབས་ཁག་བགོས་བྱས་ནས་སྒྲིག་སྦྱོར་བྱེད་མ་ཐུབ་པ། + + +- +- ++ ++ + Check whether there is a backup partition + རྗེས་གྲབས་ཁག་བགོས་ཡོད་མེད་ལ་ཞིབ་བཤེར་བྱ་དགོས། + + +- ++ + The filesystem of device is vfat format + སྒྲིག་ཆས་ཀྱི་ཡིག་ཚགས་མ་ལག་ནི་vfatཡི་རྣམ་གཞག་ཡིན། + + +- ++ + Please change filesystem format to ext3、ext4 or ntfs + ཡིག་ཚགས་མ་ལག་གི་རྣམ་གཞག་དེ་ext3、ext4འམ་ཡང་ན་ntfsལ་བསྒྱུར་རོགས། + + +- ++ + The device is read only + སྒྲིག་ཆས་འདི་ཁོ་ནར་བལྟས་པ་ཙམ་ཡིན། + + +- ++ + Please chmod to rw + ཁྱེད་ཀྱིས་ཆི་མོ་ཏི་ལ་གུས་ལུགས་གནང་རོགས། + + +- +- ++ ++ + The storage for backup is not enough + རྗེས་གྲབས་གསོག་འཇོག་བྱས་པ་མི་འདང་བ། + + +- +- ++ ++ + Retry after release space + བར་སྟོང་འགྲེམ་སྤེལ་བྱས་རྗེས་ཡང་བསྐྱར་ཞིབ་བཤེར་བྱས + + +- +- ++ ++ + Other backup or restore task is being performed + ད་དུང་རྗེས་གྲབས་ལས་འགན་གཞན་དག་གམ་ཡང་ན་སླར་གསོ་བྱེད་པའི་ལས་འགན + + +- +- ++ ++ + Please try again later + ཅུང་ཙམ་འགོར་རྗེས་ཡང་བསྐྱར་ཚོད་ལྟ་ + + +- ++ + Backup Name + རྗེས་གྲབས་མིང་། + + +- ++ + Maximum length reached + རིང་ཚད་ཡས་མཐའི་ཚད་ལ་སླེབས་འདུག + + +- ++ + Unsupported symbol : + རྒྱབ་སྐྱོར་མི་བྱེད་པའི་རྟགས། + + +- +- ++ ++ ++ + Name already exists + མིང་ཡོད་པ། + + +- ++ + Cancel + ཕྱིར་འཐེན། + + +- ++ + Do not use computer in case of data loss + གཞི་གྲངས་བོར་བརླག་ཏུ་སོང་བའི་གནས་ཚུལ་འོག་རྩིས་འཁོར་བཀོལ་སྤྱོད་མི་ + + +- ++ + Failed to create the backup point directory + རྗེས་གྲབས་ས་གནས་ཀྱི་དཀར་ཆག་གསར་སྐྲུན་བྱེད་མ་ཐུབ་པ། + + +- ++ + Please check backup partition permissions + རྗེས་གྲབས་ཁག་བགོས་ཀྱི་ཆོག་འཐུས་ལ་ཞིབ་བཤེར་གནང་རོགས། + + +- ++ + The backup had been canceled + རྗེས་གྲབས་དཔུང་ཁག་དེ་མེད་པར་བཟོས་ཟིན། + + +- ++ + Re-initiate the backup if necessary + དགོས་ངེས་ཀྱི་སྐབས་སུ་ཡང་བསྐྱར་རྗེས་གྲབས་དཔུང་ཁག་འཛུགས་དགོས། + + +- ++ + An error occurred during backup + རྗེས་གྲབས་བྱེད་རིང་ནོར་འཁྲུལ་བྱུང་བ། + + +- ++ + Error messages refer to log file : /var/log/backup.log + ནོར་འཁྲུལ་གྱི་ཆ་འཕྲིན་ཞེས་པ་ནི་ཐོ་འགོད་ཡིག་ཚགས་ལ་ཟེར.log + + +- ++ + Home Page + ཁྱིམ་ཚང་གི་ཤོག་ལྷེ + + +- ++ + Retry + བསྐྱར་དུ་ཞིབ་བཤེར་བྱ་དགོས། + + +- ++ + The backup is successful + རྗེས་གྲབས་ལེགས་འགྲུབ་བྱུང་བ། + + +- ++ + The backup is failed + རྗེས་གྲབས་དཔུང་ཁག་ལ་ཕམ་ཉེས་བྱུང་། + +@@ -460,221 +466,221 @@ + + DataRestore + +- ++ + Data Restore + གཞི་གྲངས་སླར་གསོ + + +- ++ + Backed up first, then can be restored + སྔོན་ལ་རྒྱབ་སྐྱོར་བྱས་ན་སླར་གསོ་བྱེད་ཐུབ། + + +- ++ + Fast Recovery + མགྱོགས་མྱུར་སླར་གསོ་བྱུང་བ། + + +- ++ + Security + བདེ་འཇགས། + + +- ++ + Protect Data + གཞི་གྲངས་ལ་སྲུང་སྐྱོབ་ + + +- ++ + Independent + རང་རྐྱ་འཕེར་བའི + + +- ++ + Start Restore + འགོ་ཚུགས་པ་ + + +- +- +- ++ ++ ++ + checking + ཞིབ་བཤེར་བྱ་དགོས། + + +- +- +- ++ ++ ++ + restoring + སླར་གསོ་བྱེད་པ། + + +- +- +- ++ ++ ++ + finished + ལེགས་གྲུབ་བྱུང་བ། + + +- ++ + Back + ཕྱིར་ལོག་པ། + + +- ++ + Next + གོམ་སྟབས་རྗེས་མར། + + +- ++ + Recheck + ཞིབ་བཤེར་བྱ་དགོས། + + +- ++ + Checking, wait a moment ... + ཞིབ་བཤེར་བྱས་ནས་ཅུང་ཙམ་སྒུགས་དང་། ... + + +- ++ + Check whether the restore environment meets the requirements + སླར་གསོ་བྱེད་པའི་ཁོར་ཡུག་དེ་བླང་བྱ་དང་མཐུན་མིན་ལ་ཞིབ་བཤེར་བྱ་དགོས། + + +- ++ + Do not perform other operations during restore to avoid data loss + གཞི་གྲངས་བོར་བརླག་མི་ཡོང་བའི་ཆེད་དུ་སླར་གསོ་བྱེད་རིང་ལས་སྒོ་གཞན་དག་མི་སྒྲུབ་པ། + + +- ++ + Check success + ཞིབ་བཤེར་ལེགས་འགྲུབ་བྱུང་ + + +- +- ++ ++ + Do not use computer in case of data loss + གཞི་གྲངས་བོར་བརླག་ཏུ་སོང་བའི་གནས་ཚུལ་འོག་རྩིས་འཁོར་བཀོལ་སྤྱོད་མི་ + + +- ++ + Make sure the computer is plugged in or the battery level is above 60% + གློག་ཀླད་ནང་དུ་འཇུག་པའམ་ཡང་ན་གློག་གཡིས་ཀྱི་ཆུ་ཚད་བརྒྱ་ཆ་60ཡན་ཟིན་པར་ཁག་ཐེག་བྱེད་དགོས། + + +- ++ + Check failure + ཞིབ་བཤེར་བྱེད་མ་ཐུབ་པ + + +- +- ++ ++ + Program lock failed, please retry + གོ་རིམ་གྱི་ཟྭ་ལ་སྐྱོན་ཤོར་བ་དང་། བསྐྱར་དུ་ཞིབ་བཤེར་བྱེད་ + + +- +- ++ ++ + There may be other backups or restores being performed + ད་དུང་ལག་བསྟར་བྱེད་བཞིན་པའི་རྗེས་གྲབས་དཔུང་ཁག་གམ་ཡང་ན་སླར་གསོ་བྱེད་བཞིན་ཡོད། + + +- +- ++ ++ + Unsupported task type + རྒྱབ་སྐྱོར་མི་བྱེད་པའི་ལས་འགན་གྱི་རིགས་དབྱིབས། + + +- +- ++ ++ + No processing logic was found in the service + ཞབས་ཞུའི་ཁྲོད་དུ་ཐག་གཅོད་བྱེད་པའི་གཏན་ཚིགས་མ་རྙེད། + + +- +- ++ ++ + The .user.txt file does not exist + .user.txt ཡིག་ཆ་གནས་མེད། + + +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ + Backup points may be corrupted + རྗེས་གྲབས་ས་ཚིགས་རུལ་སུངས་སུ་འགྱུར་སྲིད། + + +- +- ++ ++ + The .exclude.user.txt file does not exist + .exclude.user.txtཡིག་ཆ། + + +- +- ++ ++ + The backup point data directory does not exist + རྗེས་གྲབས་ས་གནས་ཀྱི་གཞི་གྲངས་དཀར་ཆག་མེད། + + +- ++ + Failed to rsync /boot/efi + rsync /boot/efiལ་ཕམ་ཉེས་བྱུང་བ། + + +- ++ + Check the mounting mode of the /boot/efi partition + /boot/efiས་ཁུལ་གྱི་སྒྲིག་སྦྱོར་བྱེད་སྟངས་ལ་ཞིབ་བཤེར་བྱ་དགོས། + + +- ++ + Failed to prepare the restore directory + སླར་གསོ་བྱས་པའི་དཀར་ཆག་གྲ་སྒྲིག་བྱེད་མ་ཐུབ་པ། + + +- ++ + Refer to log :/var/log/backup.log for more information + དེ་བས་མང་བའི་ཆ་འཕྲིན་རོགས་།དཔྱད་གཞིའི་ཉིན་ཐོ་།:/var/log/backup.log + + +- ++ + An error occurred during restore + སླར་གསོ་བྱེད་རིང་ནོར་འཁྲུལ་བྱུང་བ། + + +- ++ + Error messages refer to log file : /var/log/backup.log + ནོར་འཁྲུལ་གྱི་ཆ་འཕྲིན་དཔྱད་གཞིའི་ཉིན་ཐོའི་ཡིག་ཆ་རོགས་།:/var/log/backup.log + + +- ++ + Home Page + ཁྱིམ་ཚང་གི་ཤོག་ལྷེ + + +- ++ + Retry + བསྐྱར་དུ་ཞིབ་བཤེར་བྱ་དགོས། + + +- ++ + Reboot System + བསྐྱར་དུ་མ་ལག་བསྐྱར་དུ་སྒྲིག་པ། + + +- ++ + Successfully restoring the data + གཞི་གྲངས་བདེ་བླག་ངང་སླར་གསོ་བྱེད་པ། + + +- ++ + The system needs to reboot. Otherwise, some tools cannot be used. + མ་ལག་འདི་བསྐྱར་དུ་ཐོན་དགོས། དེ་འདྲ་མ་བྱས་ན་ཡོ་བྱད་ཁ་ཤས་བེད་སྤྱོད་བྱེད་མི་ཐུབ། + + +- ++ + Restoring the data failed + གཞི་གྲངས་སླར་གསོ་བྱེད་པར་ཕམ་ཉེས་བྱུང་བ། + +@@ -687,43 +693,48 @@ + གླེང་མོལ། + + +- +- ++ ++ + Please wait while data is being removed + གཞི་གྲངས་མེད་པར་བཟོ་བཞིན་པའི་སྐབས་སུ་སྒུག་རོགས། + + +- ++ ++ Close ++ སྒོ་རྒྱག་པ། ++ ++ ++ + Removing backup point... + རྗེས་གྲབས་ས་ཆ་མེད་པར་བཟོ་དགོས། + + +- ++ + OK + འགྲིགས། + + +- ++ + Other backup or restore task is being performed + ད་དུང་རྗེས་གྲབས་ལས་འགན་གཞན་དག་གམ་ཡང་ན་སླར་གསོ་བྱེད་པའི་ལས་འགན + + +- ++ + Program lock failed, please retry + གོ་རིམ་གྱི་ཟྭ་ལ་སྐྱོན་ཤོར་བ་དང་། བསྐྱར་དུ་ཞིབ་བཤེར་བྱེད་ + + +- ++ + Unsupported task type + རྒྱབ་སྐྱོར་མི་བྱེད་པའི་ལས་འགན་གྱི་རིགས་དབྱིབས། + + +- ++ + Deleted backup successfully. + བདེ་བླག་ངང་རྗེས་གྲབས་དཔུང་ཁག་བསུབ་པ་རེད། + + +- ++ + Failed to delete backup. + རྗེས་གྲབས་དཔུང་ཁག་བསུབ་མ་ཐུབ་པ་རེད། + +@@ -731,32 +742,32 @@ + + FuncTypeConverter + +- ++ + System Backup + མ་ལག་གི་རྗེས་གྲབས་དཔུང་ཁག + + +- ++ + System Recovery + མ་ལག་སླར་གསོ་ + + +- ++ + Data Backup + གཞི་གྲངས་གྲབས་སྒྲིག + + +- ++ + Data Recovery + གཞི་གྲངས་སླར་གསོ་ + + +- ++ + Log Records + ཟིན་ཐོ་འགོད་པ། + + +- ++ + Ghost Image + གདོན་འདྲེའི་གཟུགས་བརྙན། + +@@ -764,294 +775,294 @@ + + GhostImage + +- ++ + Ghost Image + གདོན་འདྲེའི་གཟུགས་བརྙན། + + +- ++ + A ghost image file can only be created after backup system to local disk + ས་གནས་དེ་གའི་རྒྱུད་ཁོངས་གྲབས་ཉར་གྲུབ་པའི་ཤེལ་བརྙན། + + +- ++ + Simple + སྟབས་བདེ་ + + +- ++ + Fast + མགྱོགས་མྱུར། + + +- ++ + Security + བདེ་འཇགས། + + +- ++ + Timesaving + དུས་ཚོད་ཀྱི་འཁོར་སྐྱོད། + + +- ++ + Start Ghost + གསར་འཛུགས་ + + +- ++ + Please select storage location + གསོག་ཉར་བྱེད་ས་འདེམས་རོགས། + + +- ++ + local default path : + ས་གནས་དེ་གའི་ཁ་ཆད་དང་འགལ་ + + +- ++ + removable devices path : + གནས་སྤོ་ཐུབ་པའི་སྒྲིག་ཆས་ཀྱི་ལམ་བུ། + + +- +- ++ ++ + Back + ཕྱིར་ལོག་པ། + + +- +- ++ ++ + Next + གོམ་སྟབས་རྗེས་མར། + + +- +- +- ++ ++ ++ + checking + ཞིབ་བཤེར་བྱ་དགོས། + + +- +- +- ++ ++ ++ + ghosting + གདོན་འདྲེའི་གདོན་འདྲེ། + + +- +- +- ++ ++ ++ + finished + ལེགས་གྲུབ་བྱུང་བ། + + +- ++ + Recheck + ཞིབ་བཤེར་བྱ་དགོས། + + +- ++ + Checking, wait a moment ... + ཞིབ་བཤེར་བྱས་ནས་ཅུང་ཙམ་སྒུགས་དང་། ... + + +- ++ + Check whether the conditions for creating an ghost image are met + གདོན་འདྲེའི་གཟུགས་བརྙན་གསར་སྐྲུན་བྱེད་པའི་ཆ་རྐྱེན་དང་མཐུན་མིན་ལ་ཞིབ་བཤེར་བྱ་དགོས། + + +- ++ + Do not perform other operations to avoid data loss + གདོན་འདྲེའི་གཟུགས་བརྙན་གསར་སྐྲུན་བྱེད་རིང་གཞི་གྲངས་བོར་བརླག་མི་ཡོང་བའི་ཆེད་དུ་བཀོལ་སྤྱོད་གཞན་དག་མི་བྱེད་པ། + + +- ++ + Check success + ཞིབ་བཤེར་ལེགས་འགྲུབ་བྱུང་ + + +- ++ + The storage space is enough + གསོག་ཉར་གྱི་བར་སྟོང་འདང་ངེས་ཤིག་ཡོད། + + +- ++ + Make sure the computer is plugged in or the battery level is above 60% + གློག་ཀླད་ནང་དུ་འཇུག་པའམ་ཡང་ན་གློག་གཡིས་ཀྱི་ཆུ་ཚད་བརྒྱ་ཆ་60ཡན་ཟིན་པར་ཁག་ཐེག་བྱེད་དགོས། + + +- ++ + Check failure + ཞིབ་བཤེར་བྱེད་མ་ཐུབ་པ + + +- +- ++ ++ + Program lock failed, please retry + གོ་རིམ་གྱི་ཟྭ་ལ་སྐྱོན་ཤོར་བ་དང་། བསྐྱར་དུ་ཞིབ་བཤེར་བྱེད་ + + +- +- ++ ++ + There may be other backups or restores being performed + ད་དུང་ལག་བསྟར་བྱེད་བཞིན་པའི་རྗེས་གྲབས་དཔུང་ཁག་གམ་ཡང་ན་སླར་གསོ་བྱེད་བཞིན་ཡོད། + + +- +- ++ ++ + Unsupported task type + རྒྱབ་སྐྱོར་མི་བྱེད་པའི་ལས་འགན་གྱི་རིགས་དབྱིབས། + + +- +- ++ ++ + No processing logic was found in the service + ཞབས་ཞུའི་ཁྲོད་དུ་ཐག་གཅོད་བྱེད་པའི་གཏན་ཚིགས་མ་རྙེད། + + +- +- ++ ++ + Failed to mount the backup partition + རྗེས་གྲབས་ཁག་བགོས་བྱས་ནས་སྒྲིག་སྦྱོར་བྱེད་མ་ཐུབ་པ། + + +- +- ++ ++ + Check whether there is a backup partition + རྗེས་གྲབས་ཁག་བགོས་ཡོད་མེད་ལ་ཞིབ་བཤེར་བྱ་དགོས། + + +- +- ++ ++ + The filesystem of device is vfat format + སྒྲིག་ཆས་ཀྱི་ཡིག་ཚགས་མ་ལག་ནི་vfatཡི་རྣམ་གཞག་ཡིན། + + +- +- ++ ++ + Please change filesystem format to ext3、ext4 or ntfs + ཡིག་ཚགས་མ་ལག་གི་རྣམ་གཞག་དེ་ext3、ext4འམ་ཡང་ན་ntfsལ་བསྒྱུར་རོགས། + + +- +- ++ ++ + The device is read only + སྒྲིག་ཆས་འདི་ཁོ་ནར་བལྟས་པ་ཙམ་ཡིན། + + +- +- ++ ++ + Please chmod to rw + ཁྱེད་ཀྱིས་ཆི་མོ་ཏི་ལ་གུས་ལུགས་གནང་རོགས། + + +- +- ++ ++ + The storage for ghost is not enough + གདོན་འདྲེའི་གསོག་ཉར་མི་འདང་བ། + + +- +- +- +- ++ ++ ++ ++ + Retry after release space + བར་སྟོང་འགྲེམ་སྤེལ་བྱས་རྗེས་ཡང་བསྐྱར་ཞིབ་བཤེར་བྱས + + +- +- ++ ++ + There is not enough space for temporary .kyimg file + གནས་སྐབས་ཀྱི་ཡིག་ཚགས་ཀྱི་བར་སྟོང་མི་འདང་བ། + + +- +- ++ ++ + Other backup or restore task is being performed + ད་དུང་རྗེས་གྲབས་ལས་འགན་གཞན་དག་གམ་ཡང་ན་སླར་གསོ་བྱེད་པའི་ལས་འགན + + +- +- ++ ++ + Please try again later + ཅུང་ཙམ་འགོར་རྗེས་ཡང་བསྐྱར་ཚོད་ལྟ་ + + +- +- ++ ++ + The backup node does not exist + རྗེས་གྲབས་ཀྱི་གནས་ཚུལ་མི་གནས་པ། + + +- +- ++ ++ + Check whether the backup point has been deleted + རྗེས་གྲབས་ས་ཚིགས་སུབ་ཡོད་མེད་ལ་ཞིབ་བཤེར་བྱས། + + +- ++ + Cancel + ཕྱིར་འཐེན། + + +- ++ + Do not use computer in case of data loss + གཞི་གྲངས་བོར་བརླག་ཏུ་སོང་བའི་གནས་ཚུལ་འོག་རྩིས་འཁོར་བཀོལ་སྤྱོད་མི་ + + +- ++ + The data is being compressed to the local disk, please wait patiently... + གཞི་གྲངས་དེ་དག་ས་གནས་དེ་གའི་ཁབ་ལེན་དྲ་བར་གནོན་བཙིར་བྱེད་བཞིན་ཡོད་པས་ངང་རྒྱུད་རིང་པོས་སྒུག་རོགས། + + +- ++ + Transferring image file to mobile device, about to be completed... + པར་རིས་ཡིག་ཆ་དེ་སྒུལ་བདེའི་སྒྲིག་ཆས་སུ་སྤོ་སྒྱུར་བྱས་ནས་མི་རིང་བར་ལེགས་འགྲུབ་བྱ་རྒྱུ་རེད། + + +- ++ + The image creation had been canceled + པར་རིས་གསར་རྩོམ་བྱེད་རྒྱུ་མེད་པར་བཟོས། + + +- ++ + Re-initiate the image creation if necessary + དགོས་ངེས་ཀྱི་སྐབས་སུ་ཡང་བསྐྱར་པར་རིས་གསར་རྩོམ་བྱེད་འགོ་ཚུགས། + + +- ++ + An error occurred during make ghost image + གདོན་འདྲེའི་གཟུགས་བརྙན་བཟོ་བའི་བརྒྱུད་རིམ་ཁྲོད་ནོར་འཁྲུལ་བྱུང་བ། + + +- ++ + Error messages refer to log file : /var/log/backup.log + ནོར་འཁྲུལ་གྱི་ཆ་འཕྲིན་ཞེས་པ་ནི་ཐོ་འགོད་ཡིག་ཚགས་ལ་ཟེར.log + + +- ++ + Home Page + ཁྱིམ་ཚང་གི་ཤོག་ལྷེ + + +- ++ + Retry + བསྐྱར་དུ་ཞིབ་བཤེར་བྱ་དགོས། + + +- ++ + Ghost image creation is successful + གདོན་འདྲེའི་གཟུགས་བརྙན་གསར་རྩོམ་ལེགས་འགྲུབ་བྱུང + + +- ++ + You can view it in the directory : %1 + ཁྱོད་ཀྱིས་དཀར་ཆག་ནང་དུ་ལྟ་ཞིབ་བྱས་ཆོག་སྟེ། %1 + + +- ++ + Ghost image creation is failed + གདོན་འདྲེའི་གཟུགས་བརྙན་གསར་རྩོམ་བྱེད་པར་ཕམ་ཉེས་ + +@@ -1059,12 +1070,12 @@ + + LeftsiderbarWidget + +- +- + +- +- +- ++ ++ ++ ++ ++ + Backup & Restore + རྗེས་གྲབས་དང་སླར་གསོ་བྱེད་དགོས། + +@@ -1072,39 +1083,39 @@ + + MainDialog + +- +- Main menu +- ཟས་ཐོ་གཙོ་བོ། ++ ++ Options ++ འདེམས་ཚན་ + + +- ++ + Minimize + ཉུང་དུ་གཏོང་གང་ཐུབ་བྱ་དགོས། + + +- ++ + + Maximize + ཚད་གཞི་མཐོ་ཤོས་ཀྱི་སྒོ་ནས + + +- ++ + Close + སྒོ་རྒྱག་པ། + + +- ++ + Help + རོགས་རམ་བྱེད་པ། + + +- ++ + About + འབྲེལ་ཡོད་ཀྱི་སྐོར། + + +- +- Exit ++ ++ Quit + ཕྱིར་འཐེན་བྱེད་པ། + + +@@ -1113,7 +1124,7 @@ + རྒྱུན་ལྡན་གྱི་གནས་ + + +- ++ + Backup & Restore + རྗེས་གྲབས་དང་སླར་གསོ་བྱེད་དགོས། + +@@ -1122,31 +1133,33 @@ + ManageBackupPointList + + ++ + System Backup Information + མ་ལག་གི་རྗེས་གྲབས་ཆ་འཕྲིན། + + +- ++ ++ + Data Backup Information + གཞི་གྲངས་རྗེས་གྲབས་ཆ་འཕྲིན། + + +- ++ + You can delete the backup that does not need, refer operation logs for more details + ཁྱེད་ཚོས་མི་དགོས་པའི་རྗེས་གྲབས་དཔུང་ཁག་བསུབ་ཆོག་པ་དང་། བཀོལ་སྤྱོད་ཀྱི་ཟིན་ཐོ་དཔྱད་གཞིར་བཟུང་ནས་ཞིབ་ཕྲའི་གནས་ཚུལ་ཞིབ་ཕྲ་ཤེས་སུ་ + + +- ++ + Delete + བསུབ་པ། + + +- ++ + backup finished + རྗེས་གྲབས་ལས་དོན་མཇུག་འགྲིལ་བ། + + +- ++ + backup unfinished + ལེགས་འགྲུབ་བྱུང་མེད་པའི་རྗེས་གྲབས་དཔུང་ཁག + +@@ -1154,72 +1167,72 @@ + + OperationLog + +- ++ + No operation log + བཀོལ་སྤྱོད་ཀྱི་ཟིན་ཐོ་མེད་པ། + + +- ++ + Backup Name + རྗེས་གྲབས་མིང་། + + +- ++ + UUID + UUID + + +- ++ + Operation + བཀོལ་སྤྱོད། + + +- ++ + Operation Time + འཁོར་སྐྱོད་དུས་ཚོད། + + +- ++ + new system backup + མ་ལག་གསར་པའི་རྗེས་གྲབས་དཔུང་ཁག + + +- ++ + udpate system backup + udpateམ་ལག་གི་རྗེས་གྲབས་དཔུང་ཁག + + +- ++ + new data backup + གཞི་གྲངས་གསར་པའི་རྗེས་གྲབས་དཔུང་ཁག + + +- ++ + update data backup + གཞི་གྲངས་གསར་སྒྱུར་གྱི་རྗེས་གྲབས་ + + +- ++ + restore system + མ་ལག་སླར་གསོ་བྱེད་ + + +- ++ + restore retaining user data + ཉར་ཚགས་བྱས་པའི་སྤྱོད་མཁན་གྱི་གཞི་གྲངས་ + + +- ++ + restore data + གཞི་གྲངས་སླར་གསོ་བྱེད་ + + +- ++ + delete backup + རྗེས་གྲབས་དཔུང་ཁག་བསུབ་པ། + + +- ++ + make ghost image + གདོན་འདྲེའི་གཟུགས་བརྙན་བཟོ་བ། + +@@ -1227,23 +1240,23 @@ + + QObject + +- ++ + factory backup + བཟོ་གྲྭའི་རྗེས་གྲབས་དཔུང་ཁག + + +- +- ++ ++ + Factory Backup + བཟོ་གྲྭའི་རྗེས་གྲབས་དཔུང་ཁག + + +- ++ + Backup State + རྗེས་གྲབས་གནས་ཚུལ། + + +- ++ + PrefixPath + སྔོན་འགོག་བྱེད་པའི་ལམ་ཕྱོགས། + +@@ -1251,17 +1264,17 @@ + + + +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + Warning + ཐ་ཚིག་སྒྲོག་པ། + +@@ -1270,44 +1283,40 @@ + འགྲོ་ལམ་ནང་དུ་"$()"དང་།${}"སོགས་ཀྱི་མཚོན་རྟགས་ཚུད་མི་ཐུབ་པ |་དཔེར་ན། " + + ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + OK +- འགྲིགས། ++ འགྲིགས། + + + + Path already exists : + འགྲོ་ལམ་ཡོད་པ་གཤམ་གསལ། + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- OK +- འགྲིགས། +- + + + The file or directory does not exist : +@@ -1321,21 +1330,21 @@ + Path:%2ནི་ཁོ་ཚོའི་ནང་ན་མེད། + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + Information + ཆ་འཕྲིན། + +@@ -1344,17 +1353,17 @@ + 此功能只能由系统管理员使用。 + + +- ++ + Another user had opened kybackup, you can not start it again. + སྤྱོད་མཁན་གཞན་ཞིག་གིས་ཁ་ཕྱེ་ཟིན་པས་ཁྱེད་ཀྱིས་ཡང་བསྐྱར་མགོ་རྩོམ་མི་ཐུབ། + + +- ++ + kybackup + ཅིན་པུའུ་ལུའུ་ཕུའུ། + + +- ++ + An exception occurred when mounting backup partition. + རྗེས་གྲབས་ཁག་བགོས་སྒྲིག་སྦྱོར་བྱེད་སྐབས་དམིགས་བསལ་གྱི་གནས་ཚུལ་བྱུང་བ་རེད། + +@@ -1363,125 +1372,125 @@ + 请检查备份还原分区是否存在,在安装操作系统时必须创建备份还原分区。 + + +- ++ + Failed to mount backup partition. + རྗེས་གྲབས་ཁག་བགོས་བྱེད་མ་ཐུབ་པ་རེད། + + +- +- ++ ++ + It's busy, please wait + བྲེལ་བ་ཧ་ཅང་ཆེ་བས་སྒུག་དང་། + + +- +- ++ ++ + Are you sure to continue customizing the path? + The custom path backup file is not protected, which may cause the backup file to be lost or damaged + ཁྱོད་ཀྱིས་ངེས་པར་དུ་མུ་མཐུད་དུ་ལམ་འདི་གཏན་འཁེལ་བྱེད་དགོས་སམ། + འགག་སྒོའི་ལམ་ཕྲན་གྱི་རྗེས་གྲབས་ཡིག་ཚགས་ལ་སྲུང་སྐྱོབ་མི་བྱེད་པར་རྗེས་གྲབས་ཡིག་ཆ་བོར་བརླག་ཏུ་སོང་བའམ་ཡང་ན་གཏོར་བརླག་ཐེབས་སྲིད། + + +- +- +- +- ++ ++ ++ ++ + Cannot nest backups, please select another directory. + གྲབས་ཉར་ཆ་ཚང་འཛུད་མི་ཐུབ་།གདམ་ག་བྱེད་རོགས་།དཀར་ཆག་གཞན་དག་། + + +- +- ++ ++ + Mobile devices can only select the mount directory itself. + སྒུལ་བདེའི་སྒྲིག་ཆས་བདམས་ནས་བཀལ་རིགས་དཀར་ཆག་དེ་ཉིད་ལས་། + + +- +- ++ ++ + Please select backup position + རྗེས་གྲབས་ལས་གནས་གདམ་གསེས་གནང་རོགས། + + +- +- ++ ++ + Please select a backup file or directory + ཁྱེད་ཀྱིས་རྗེས་གྲབས་ཡིག་ཆ་དང་དཀར་ཆག་འདེམས་རོགས། + + +- +- +- ++ ++ ++ + Are you sure to cancel the operation? + ཁྱོད་ཀྱིས་ངེས་པར་དུ་གཤག་བཅོས་དེ་མེད་པར་བཟོ་དགོས་སམ། + + +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ + Cancel + ཕྱིར་འཐེན། + + +- +- +- ++ ++ ++ + Continue + མུ་མཐུད་དུ་རྒྱུན་ + + +- ++ + Contains the user's home directory, which need to reboot after restoration. Are you sure to continue? + དེའི་ནང་དུ་སྤྱོད་མཁན་གྱི་ཁྱིམ་ཚང་གི་དཀར་ཆག་འདུས་ཡོད་པས་སླར་གསོ་བྱས་རྗེས་བསྐྱར་དུ་འགོ་འཛུགས་དགོས། ཁྱོད་ཀྱིས་ད་དུང་མུ་མཐུད་དུ་རྒྱུན་འཁྱོངས་བྱེད་ཐུབ + + +- +- ++ ++ + Please select one backup to continue. + མུ་མཐུད་དུ་རྗེས་གྲབས་དཔུང་ཁག་ཅིག་འདེམས་རོགས། + + +- ++ + Are you sure to delete the backup ? + ཁྱོད་ཀྱིས་ངེས་པར་དུ་རྗེས་གྲབས་དཔུང་ཁག་དེ་བསུབ་དགོས་སམ། + + +- +- +- ++ ++ ++ + Customize: + ཡུལ་སྲོལ་གོམས་གཤིས་ནི། + + +- +- ++ ++ + Udisk Device: + ཝུའུ་ཁི་ལན་གྱི་སྒྲིག་ཆས་ནི། + + +- +- +- ++ ++ ++ + Local Disk: + ས་གནས་ཀྱི་ཁབ་ལེན་འཁོར་ལོ་ནི། + + +- ++ + Do you want to continue? + ཁྱོད་ཀྱིས་ད་དུང་མུ་མཐུད་དུ་རྒྱུན་འཁྱོངས་བྱེད་དགོས + + +- ++ + Other machine: + འཕྲུལ་འཁོར་གཞན་དག་སྟེ། + + +- ++ + Restore factory settings, your system user data will not be retained. Are you sure to continue? + བཟོ་གྲྭའི་སྒྲིག་བཀོད་སླར་གསོ་བྱས་ན་ཁྱེད་ཚོའི་མ་ལག་གི་སྤྱོད་མཁན་གྱི་གཞི་གྲངས་སོར་འཇོག་བྱེད་མི་ཐུབ། ཁྱོད་ཀྱིས་ད་དུང་མུ་མཐུད་དུ་རྒྱུན་འཁྱོངས་བྱེད་ཐུབ + +@@ -1490,31 +1499,33 @@ The custom path backup file is not protected, which may cause the backup file to + SelectRestorePoint + + ++ + System Backup Information + མ་ལག་གི་རྗེས་གྲབས་ཆ་འཕྲིན། + + +- ++ ++ + Data Backup Information + གཞི་གྲངས་རྗེས་གྲབས་ཆ་འཕྲིན། + + +- ++ + OK + འགྲིགས། + + +- ++ + Other machine: + འཕྲུལ་འཁོར་གཞན་དག་སྟེ། + + +- ++ + Customize: + ཡུལ་སྲོལ་གོམས་གཤིས་ནི། + + +- ++ + Udisk Device: + ཝུའུ་ཁི་ལན་གྱི་སྒྲིག་ཆས་ནི། + +@@ -1522,341 +1533,341 @@ The custom path backup file is not protected, which may cause the backup file to + + SystemBackup + +- ++ + System Backup + མ་ལག་གི་རྗེས་གྲབས་དཔུང་ཁག + + +- ++ + Can be restored when files are damaged or lost + ཡིག་ཚགས་ལ་གཏོར་སྐྱོན་ཕོག་པའམ་ཡང་ན་བོར་བརླག་ཏུ་སོང་བའི་སྐབས་སུ་སླར་གསོ་བྱས་ + + +- ++ + Multi-Spot + ས་ཆ་མང་པོ། + + +- ++ + Small Size + གཞི་ཁྱོན་ཆུང་བ། + + +- ++ + Security + བདེ་འཇགས། + + +- ++ + Simple + སྟབས་བདེ་ + + +- ++ + Start Backup + གསར་འཛུགས། + + +- ++ + Backup Management >> + རྗེས་གྲབས་དོ་དམ་>> + + +- ++ + Please select backup position + རྗེས་གྲབས་ལས་གནས་གདམ་གསེས་གནང་རོགས། + + +- ++ + local default path : + ས་གནས་དེ་གའི་ཁ་ཆད་དང་འགལ་ + + +- ++ + removable devices path : + གནས་སྤོ་ཐུབ་པའི་སྒྲིག་ཆས་ཀྱི་ལམ་བུ། + + +- +- +- ++ ++ ++ + Back + ཕྱིར་ལོག་པ། + + +- ++ + Browse + བལྟས་པ་ཙམ་གྱིས་ + + +- +- +- ++ ++ ++ + Next + གོམ་སྟབས་རྗེས་མར། + + +- +- ++ ++ + customize path : + ཡུལ་སྲོལ་གོམས་གཤིས་ཀྱི་ལམ་བུ། + + +- +- +- +- ++ ++ ++ ++ + checking + ཞིབ་བཤེར་བྱ་དགོས། + + +- +- +- +- ++ ++ ++ ++ + preparing + གྲ་སྒྲིག་བྱེད་བཞིན་ཡོད། + + +- +- +- +- ++ ++ ++ ++ + backuping + རྗེས་གྲབས་དཔུང་ཁག + + +- +- +- +- ++ ++ ++ ++ + finished + ལེགས་གྲུབ་བྱུང་བ། + + +- ++ + Recheck + ཞིབ་བཤེར་བྱ་དགོས། + + +- ++ + Checking, wait a moment ... + ཞིབ་བཤེར་བྱས་ནས་ཅུང་ཙམ་སྒུགས་དང་། ... + + +- ++ + Do not perform other operations during backup to avoid data loss + རྗེས་གྲབས་བྱེད་རིང་གཞི་གྲངས་བོར་བརླག་མི་ཡོང་བའི་ཆེད་དུ་ལས་ཀ་གཞན་དག་མི་བྱེད་པ། + + +- ++ + Check whether the remaining capacity of the backup partition is sufficient + རྗེས་གྲབས་ཁག་བགོས་ཀྱི་ལྷག་མའི་ཤོང་ཚད་འདང་མིན་ལ་ཞིབ་བཤེར་བྱ་དགོས། + + +- ++ + Check whether the remaining capacity of the removable device is sufficient + གནས་སྤོ་ཐུབ་པའི་སྒྲིག་ཆས་ཀྱི་ལྷག་འཕྲོའི་ཤོང་ཚད་འདང་མིན་ལ་ཞིབ་བཤེར་བྱ་དགོས། + + +- ++ + Check success + ཞིབ་བཤེར་ལེགས་འགྲུབ་བྱུང་ + + +- ++ + The storage for backup is enough + རྗེས་གྲབས་གསོག་འཇོག་བྱས་པ་འདང་ངེས་ཤིག་ཡོད། + + +- ++ + Make sure the computer is plugged in or the battery level is above 60% + གློག་ཀླད་ནང་དུ་འཇུག་པའམ་ཡང་ན་གློག་གཡིས་ཀྱི་ཆུ་ཚད་བརྒྱ་ཆ་60ཡན་ཟིན་པར་ཁག་ཐེག་བྱེད་དགོས། + + +- ++ + Check failure + ཞིབ་བཤེར་བྱེད་མ་ཐུབ་པ + + +- +- ++ ++ + Program lock failed, please retry + གོ་རིམ་གྱི་ཟྭ་ལ་སྐྱོན་ཤོར་བ་དང་། བསྐྱར་དུ་ཞིབ་བཤེར་བྱེད་ + + +- +- ++ ++ + There may be other backups or restores being performed + ད་དུང་ལག་བསྟར་བྱེད་བཞིན་པའི་རྗེས་གྲབས་དཔུང་ཁག་གམ་ཡང་ན་སླར་གསོ་བྱེད་བཞིན་ཡོད། + + +- +- ++ ++ + Unsupported task type + རྒྱབ་སྐྱོར་མི་བྱེད་པའི་ལས་འགན་གྱི་རིགས་དབྱིབས། + + +- +- ++ ++ + No processing logic was found in the service + ཞབས་ཞུའི་ཁྲོད་དུ་ཐག་གཅོད་བྱེད་པའི་གཏན་ཚིགས་མ་རྙེད། + + +- +- ++ ++ + Failed to mount the backup partition + རྗེས་གྲབས་ཁག་བགོས་བྱས་ནས་སྒྲིག་སྦྱོར་བྱེད་མ་ཐུབ་པ། + + +- +- ++ ++ + Check whether there is a backup partition + རྗེས་གྲབས་ཁག་བགོས་ཡོད་མེད་ལ་ཞིབ་བཤེར་བྱ་དགོས། + + +- +- ++ ++ + The filesystem of device is vfat format + སྒྲིག་ཆས་ཀྱི་ཡིག་ཚགས་མ་ལག་ནི་vfatཡི་རྣམ་གཞག་ཡིན། + + +- +- ++ ++ + Please change filesystem format to ext3、ext4 or ntfs + ཡིག་ཚགས་མ་ལག་གི་རྣམ་གཞག་དེ་ext3、ext4འམ་ཡང་ན་ntfsལ་བསྒྱུར་རོགས། + + +- +- ++ ++ + The device is read only + སྒྲིག་ཆས་འདི་ཁོ་ནར་བལྟས་པ་ཙམ་ཡིན། + + +- +- ++ ++ + Please chmod to rw + ཁྱེད་ཀྱིས་ཆི་མོ་ཏི་ལ་གུས་ལུགས་གནང་རོགས། + + +- +- ++ ++ + The storage for backup is not enough + རྗེས་གྲབས་གསོག་འཇོག་བྱས་པ་མི་འདང་བ། + + +- +- ++ ++ + Retry after release space + བར་སྟོང་འགྲེམ་སྤེལ་བྱས་རྗེས་ཡང་བསྐྱར་ཞིབ་བཤེར་བྱས + + +- +- ++ ++ + Other backup or restore task is being performed + ད་དུང་རྗེས་གྲབས་ལས་འགན་གཞན་དག་གམ་ཡང་ན་སླར་གསོ་བྱེད་པའི་ལས་འགན + + +- +- ++ ++ + Please try again later + ཅུང་ཙམ་འགོར་རྗེས་ཡང་བསྐྱར་ཚོད་ལྟ་ + + +- ++ + Backup Name + རྗེས་གྲབས་མིང་། + + +- ++ + Maximum length reached + རིང་ཚད་ཡས་མཐའི་ཚད་ལ་སླེབས་འདུག + + +- ++ + Unsupported symbol : + རྒྱབ་སྐྱོར་མི་བྱེད་པའི་རྟགས། + + +- +- ++ ++ + Name already exists + མིང་ཡོད་པ། + + +- ++ + factory backup + བཟོ་གྲྭའི་རྗེས་གྲབས་དཔུང་ཁག + + +- ++ + Cancel + ཕྱིར་འཐེན། + + +- ++ + Do not use computer in case of data loss + གཞི་གྲངས་བོར་བརླག་ཏུ་སོང་བའི་གནས་ཚུལ་འོག་རྩིས་འཁོར་བཀོལ་སྤྱོད་མི་ + + +- ++ + Failed to create the backup point directory + རྗེས་གྲབས་ས་གནས་ཀྱི་དཀར་ཆག་གསར་སྐྲུན་བྱེད་མ་ཐུབ་པ། + + +- ++ + Please check backup partition permissions + རྗེས་གྲབས་ཁག་བགོས་ཀྱི་ཆོག་འཐུས་ལ་ཞིབ་བཤེར་གནང་རོགས། + + +- ++ + The system is being compressed to the local disk, please wait patiently... + མ་ལག་དེ་ས་གནས་དེ་གའི་ཁབ་ལེན་དྲ་བར་གནོན་བཙིར་བྱེད་བཞིན་ཡོད་པས་ངང་རྒྱུད་རིང་པོས་སྒུག་རོགས། + + +- ++ + Transferring image file to mobile device, about to be completed... + པར་རིས་ཡིག་ཆ་དེ་སྒུལ་བདེའི་སྒྲིག་ཆས་སུ་སྤོ་སྒྱུར་བྱས་ནས་མི་རིང་བར་ལེགས་འགྲུབ་བྱ་རྒྱུ་རེད། + + +- ++ + The backup had been canceled + རྗེས་གྲབས་དཔུང་ཁག་དེ་མེད་པར་བཟོས་ཟིན། + + +- ++ + Re-initiate the backup if necessary + དགོས་ངེས་ཀྱི་སྐབས་སུ་ཡང་བསྐྱར་རྗེས་གྲབས་དཔུང་ཁག་འཛུགས་དགོས། + + +- +- ++ ++ + An error occurred during backup + རྗེས་གྲབས་བྱེད་རིང་ནོར་འཁྲུལ་བྱུང་བ། + + +- +- ++ ++ + Error messages refer to log file : /var/log/backup.log + ནོར་འཁྲུལ་གྱི་ཆ་འཕྲིན་ཞེས་པ་ནི་ཐོ་འགོད་ཡིག་ཚགས་ལ་ཟེར.log + + +- ++ + Home Page + ཁྱིམ་ཚང་གི་ཤོག་ལྷེ + + +- ++ + Retry + བསྐྱར་དུ་ཞིབ་བཤེར་བྱ་དགོས། + + +- ++ + The backup is successful + རྗེས་གྲབས་ལེགས་འགྲུབ་བྱུང་བ། + + +- ++ + The backup is failed + རྗེས་གྲབས་དཔུང་ཁག་ལ་ཕམ་ཉེས་བྱུང་། + +@@ -1864,237 +1875,237 @@ The custom path backup file is not protected, which may cause the backup file to + + SystemRestore + +- ++ + System Restore + མ་ལག་སླར་གསོ + + +- ++ + You can restore the system to its previous state + ཁྱེད་ཚོས་མ་ལག་དེ་སྔོན་ཆད་ཀྱི་རྣམ་པ་སླར་གསོ་བྱས་ཆོག། + + +- ++ + Simple + སྟབས་བདེ་ + + +- ++ + Security + བདེ་འཇགས། + + +- ++ + Repair + ཞིག་གསོ་ + + +- ++ + Independent + རང་རྐྱ་འཕེར་བའི + + +- ++ + Start Restore + འགོ་ཚུགས་པ་ + + +- ++ + Factory Restore + བཟོ་གྲྭ་སླར་གསོ་བྱེད་ + + +- ++ + Retaining User Data + སྤྱོད་མཁན་གྱི་གཞི་གྲངས་སོར་འཇོག་བྱ + + +- +- +- ++ ++ ++ + checking + ཞིབ་བཤེར་བྱ་དགོས། + + +- +- +- ++ ++ ++ + restoring + སླར་གསོ་བྱེད་པ། + + +- +- +- ++ ++ ++ + finished + ལེགས་གྲུབ་བྱུང་བ། + + +- ++ + Back + ཕྱིར་ལོག་པ། + + +- ++ + Next + གོམ་སྟབས་རྗེས་མར། + + +- ++ + Recheck + ཞིབ་བཤེར་བྱ་དགོས། + + +- ++ + Checking, wait a moment ... + ཞིབ་བཤེར་བྱས་ནས་ཅུང་ཙམ་སྒུགས་དང་། ... + + +- ++ + Check whether the restore environment meets the requirements + སླར་གསོ་བྱེད་པའི་ཁོར་ཡུག་དེ་བླང་བྱ་དང་མཐུན་མིན་ལ་ཞིབ་བཤེར་བྱ་དགོས། + + +- ++ + Do not perform other operations during restore to avoid data loss + གཞི་གྲངས་བོར་བརླག་མི་ཡོང་བའི་ཆེད་དུ་སླར་གསོ་བྱེད་རིང་ལས་སྒོ་གཞན་དག་མི་སྒྲུབ་པ། + + +- ++ + Check success + ཞིབ་བཤེར་ལེགས་འགྲུབ་བྱུང་ + + +- ++ + The system will reboot automatically after the restore is successful + སླར་གསོ་བྱས་རྗེས་མ་ལག་རང་འགུལ་གྱིས་བསྐྱར་དུ་ཐོན་རྒྱུ་རེད། + + +- ++ + Make sure the computer is plugged in or the battery level is above 60% + གློག་ཀླད་ནང་དུ་འཇུག་པའམ་ཡང་ན་གློག་གཡིས་ཀྱི་ཆུ་ཚད་བརྒྱ་ཆ་60ཡན་ཟིན་པར་ཁག་ཐེག་བྱེད་དགོས། + + +- ++ + Check failure + ཞིབ་བཤེར་བྱེད་མ་ཐུབ་པ + + +- +- ++ ++ + Program lock failed, please retry + གོ་རིམ་གྱི་ཟྭ་ལ་སྐྱོན་ཤོར་བ་དང་། བསྐྱར་དུ་ཞིབ་བཤེར་བྱེད་ + + +- +- ++ ++ + There may be other backups or restores being performed + ད་དུང་ལག་བསྟར་བྱེད་བཞིན་པའི་རྗེས་གྲབས་དཔུང་ཁག་གམ་ཡང་ན་སླར་གསོ་བྱེད་བཞིན་ཡོད། + + +- +- ++ ++ + Unsupported task type + རྒྱབ་སྐྱོར་མི་བྱེད་པའི་ལས་འགན་གྱི་རིགས་དབྱིབས། + + +- +- ++ ++ + No processing logic was found in the service + ཞབས་ཞུའི་ཁྲོད་དུ་ཐག་གཅོད་བྱེད་པའི་གཏན་ཚིགས་མ་རྙེད། + + +- +- ++ ++ + The .user.txt file does not exist + .user.txt ཡིག་ཆ་གནས་མེད། + + +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ + Backup points may be corrupted + རྗེས་གྲབས་ས་ཚིགས་རུལ་སུངས་སུ་འགྱུར་སྲིད། + + +- +- ++ ++ + The .exclude.user.txt file does not exist + .exclude.user.txtཡིག་ཆ། + + +- +- ++ ++ + The backup point data directory does not exist + རྗེས་གྲབས་ས་གནས་ཀྱི་གཞི་གྲངས་དཀར་ཆག་མེད། + + +- +- ++ ++ + Failed to rsync /boot/efi + rsync /boot/efiལ་ཕམ་ཉེས་བྱུང་བ། + + +- +- ++ ++ + Check the mounting mode of the /boot/efi partition + /boot/efiས་ཁུལ་གྱི་སྒྲིག་སྦྱོར་བྱེད་སྟངས་ལ་ཞིབ་བཤེར་བྱ་དགོས། + + +- ++ + Do not use computer in case of data loss + གཞི་གྲངས་བོར་བརླག་ཏུ་སོང་བའི་གནས་ཚུལ་འོག་རྩིས་འཁོར་བཀོལ་སྤྱོད་མི་ + + +- ++ + Failed to prepare the restore directory + སླར་གསོ་བྱས་པའི་དཀར་ཆག་གྲ་སྒྲིག་བྱེད་མ་ཐུབ་པ། + + +- ++ + Refer to log :/var/log/backup.log for more information + དཔྱད་གཞིའི་ཡིག་ཆ་དེ་བས་མང་བ་མཁོ་འདོན་བྱ་རྒྱུའི་རེ་བ་ཡོད.log་ཅེས་གསུངས་པ་རེད། + + +- ++ + An error occurred during restore + སླར་གསོ་བྱེད་རིང་ནོར་འཁྲུལ་བྱུང་བ། + + +- ++ + Error messages refer to log file : /var/log/backup.log + ནོར་འཁྲུལ་གྱི་ཆ་འཕྲིན་ཞེས་པ་ནི་ཐོ་འགོད་ཡིག་ཚགས་ལ་ཟེར.log + + +- ++ + Home Page + ཁྱིམ་ཚང་གི་ཤོག་ལྷེ + + +- ++ + Retry + བསྐྱར་དུ་ཞིབ་བཤེར་བྱ་དགོས། + + +- ++ + Successfully restoring the system + མ་ལག་བདེ་བླག་ངང་སླར་གསོ་བྱེད་པ། + + +- ++ + The system will automatically reboot. + མ་ལག་རང་འགུལ་གྱིས་བསྐྱར་དུ་འཁོར་སྐྱོད་བྱེད་སྲིད། + + +- ++ + Or not, please force shutdown and restart. + དེ་མིན་ལག་རྩལ་ཐོག་ལས་ཨུ་ཚུགས་བཀོལ་ནས་སླར་ལོག་འབད། + + +- ++ + Restoring the system failed + མ་ལག་སླར་གསོ་བྱེད་པར་ཕམ་ཉེས་བྱུང་བ། + +@@ -2102,7 +2113,7 @@ The custom path backup file is not protected, which may cause the backup file to + + restore + +- ++ + system restore + མ་ལག་སླར་གསོ་བྱེད་པ + +diff --git a/kybackup/qt_zh_CN.ts b/kybackup/qt_zh_CN.ts +index cd7469e..fa5ee31 100755 +--- a/kybackup/qt_zh_CN.ts ++++ b/kybackup/qt_zh_CN.ts +@@ -48,32 +48,37 @@ + 对话框 + + +- ++ ++ Close ++ 关闭 ++ ++ ++ + Backup Name + 备份名称 + + +- ++ + UUID + 备份标识 + + +- ++ + Backup Time + 备份时间 + + +- ++ + Backup Size + 大小 + + +- ++ + Position + 备份位置 + + +- ++ + No Backup + 暂无备份 + +@@ -89,370 +94,371 @@ + + DataBackup + +- ++ + Data Backup + 数据备份 + + +- ++ + Only files in the /home, and /data directories can be backed up + 仅支持备份/home、/data目录下的文件 + + +- ++ + Only files in the /home, and /data/usershare directories can be backed up + 仅支持备份/home、/data/usershare目录下的文件 + + +- ++ + Multi-Spot + 多点还原 + + +- ++ + Security + 安全可靠 + + +- ++ + Protect Data + 防止数据丢失 + + +- ++ + Convenient + 便捷快速 + + +- ++ + Start Backup + 开始备份 + + +- ++ + Update Backup + 备份更新 + + +- ++ + Backup Management >> + 备份管理 >> + + +- ++ + Please select backup position + 请选择备份位置 + + +- ++ + Browse + 浏览 + + +- +- ++ ++ + local default path : + 本地默认路径: + + +- +- ++ ++ + removable devices path : + 移动设备: + + +- +- ++ ++ + Select backup data + 选择备份数据 + + +- +- ++ ++ + Add + 添加 + + +- +- ++ ++ + Select + 选择 + + +- +- ++ ++ + Please select file to backup + 请选择备份文件 + + +- +- +- +- ++ ++ ++ ++ + Back + 上一步 + + +- +- ++ ++ + Clear + 清空 + + +- +- +- +- ++ ++ ++ ++ + Next + 下一步 + + +- +- +- ++ ++ ++ + customize path : + 自定义路径: + + +- ++ + Default backup location + 默认备份位置 + + +- +- +- +- ++ ++ ++ ++ + checking + 环境检测 + + +- +- +- +- ++ ++ ++ ++ + preparing + 备份准备 + + +- +- +- +- ++ ++ ++ ++ + backuping + 备份中 + + +- +- +- +- ++ ++ ++ ++ + finished + 备份完成 + + +- ++ + Recheck + 重新检测 + + +- ++ + Checking, wait a moment ... + 正在检测,请稍等... + + +- ++ + Do not perform other operations during backup to avoid data loss + 备份过程中不要做其它操作,以防数据丢失 + + +- ++ + Check whether the remaining capacity of the backup partition is sufficient + 检测备份位置空间是否充足··· + + +- ++ + Check whether the remaining capacity of the removable device is sufficient + 检测移动设备空间是否充足··· + + +- ++ + Check success + 检测成功 + + +- ++ + The storage for backup is enough + 备份空间充足 + + +- ++ + Make sure the computer is plugged in or the battery level is above 60% + 请确保电脑已连接电源或电量超过60% + + +- ++ + Check failure + 检测失败 + + +- +- ++ ++ + Program lock failed, please retry + 程序锁定失败,请重试 + + +- +- ++ ++ + There may be other backups or restores being performed + 可能有其它备份/还原等任务在执行 + + +- +- ++ ++ + Unsupported task type + 不支持的任务类型 + + +- +- ++ ++ + No processing logic was found in the service + 没有找到相应的处理逻辑 + + +- +- ++ ++ + Failed to mount the backup partition + 备份分区挂载失败 + + +- +- ++ ++ + Check whether there is a backup partition + 检查是否有备份分区 + + +- ++ + The filesystem of device is vfat format + 移动设备的文件系统是vfat格式 + + +- ++ + Please change filesystem format to ext3、ext4 or ntfs + 请换成ext3、ext4、ntfs等文件系统格式 + + +- ++ + The device is read only + 移动设备是只读挂载的 + + +- ++ + Please chmod to rw + 请修改为读写模式 + + +- +- ++ ++ + The storage for backup is not enough + 备份空间不足 + + +- +- ++ ++ + Retry after release space + 建议释放空间后重试 + + +- +- ++ ++ + Other backup or restore task is being performed + 其它备份还原等操作正在执行 + + +- +- ++ ++ + Please try again later + 请稍后重试 + + +- ++ + Backup Name + 备份名称 + + +- ++ + Maximum length reached + 长度已达上限 + + +- ++ + Unsupported symbol : + 不支持符号: + + +- +- ++ ++ ++ + Name already exists + 名称已存在 + + +- ++ + Cancel + 取消 + + +- ++ + Do not use computer in case of data loss + 请勿使用电脑,以防数据丢失 + + +- ++ + Failed to create the backup point directory + 创建备份目录失败 + + +- ++ + Please check backup partition permissions + 请检查备份分区权限 + + +- ++ + The backup had been canceled + 备份已取消 + + +- ++ + Re-initiate the backup if necessary + 如需要可重新进行备份 + + +- ++ + An error occurred during backup + 备份期间发生错误 + + +- ++ + Error messages refer to log file : /var/log/backup.log + 错误信息请参考日志文件:/var/log/backup.log + + +- ++ + Home Page + 返回首页 + + +- ++ + Retry + 再试一次 + + +- ++ + The backup is successful + 备份成功 + + +- ++ + The backup is failed + 备份失败 + +@@ -460,221 +466,221 @@ + + DataRestore + +- ++ + Data Restore + 数据还原 + + +- ++ + Backed up first, then can be restored + 必须先进行数据备份,否则无法进行数据还原操作 + + +- ++ + Fast Recovery + 快速恢复 + + +- ++ + Security + 安全可靠 + + +- ++ + Protect Data + 解决数据丢失 + + +- ++ + Independent + 自主操作 + + +- ++ + Start Restore + 开始还原 + + +- +- +- ++ ++ ++ + checking + 环境检测 + + +- +- +- ++ ++ ++ + restoring + 还原中 + + +- +- +- ++ ++ ++ + finished + 还原完成 + + +- ++ + Back + 上一步 + + +- ++ + Next + 下一步 + + +- ++ + Recheck + 重新检测 + + +- ++ + Checking, wait a moment ... + 正在检测,请稍等... + + +- ++ + Check whether the restore environment meets the requirements + 检查恢复环境是否符合要求 + + +- ++ + Do not perform other operations during restore to avoid data loss + 还原期间不要做其它操作,以防数据丢失 + + +- ++ + Check success + 检测成功 + + +- +- ++ ++ + Do not use computer in case of data loss + 请勿使用电脑,以防数据丢失 + + +- ++ + Make sure the computer is plugged in or the battery level is above 60% + 请确保电脑已连接电源或电量超过60% + + +- ++ + Check failure + 检测失败 + + +- +- ++ ++ + Program lock failed, please retry + 程序锁定失败,请重试 + + +- +- ++ ++ + There may be other backups or restores being performed + 可能有其它备份/还原等任务在执行 + + +- +- ++ ++ + Unsupported task type + 不支持的任务类型 + + +- +- ++ ++ + No processing logic was found in the service + 没有找到相应的处理逻辑 + + +- +- ++ ++ + The .user.txt file does not exist + .user.txt文件不存在 + + +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ + Backup points may be corrupted + 备份点可能被损坏 + + +- +- ++ ++ + The .exclude.user.txt file does not exist + .exclude.user.txt文件不存在 + + +- +- ++ ++ + The backup point data directory does not exist + 备份点数据目录不存在 + + +- ++ + Failed to rsync /boot/efi + 同步/boot/efi失败 + + +- ++ + Check the mounting mode of the /boot/efi partition + 请检查/boot/efi分区挂载方式 + + +- ++ + Failed to prepare the restore directory + 还原目录准备失败 + + +- ++ + Refer to log :/var/log/backup.log for more information + 更多信息请参考日志/var/log/backup.log + + +- ++ + An error occurred during restore + 还原时发生错误 + + +- ++ + Error messages refer to log file : /var/log/backup.log + 错误信息请参考日志文件:/var/log/backup.log + + +- ++ + Home Page + 返回首页 + + +- ++ + Retry + 再试一次 + + +- ++ + Reboot System + 重启系统 + + +- ++ + Successfully restoring the data + 还原成功 + + +- ++ + The system needs to reboot. Otherwise, some tools cannot be used. + 系统需要重启,否则某些工具可能无法使用 + + +- ++ + Restoring the data failed + 还原失败 + +@@ -687,43 +693,48 @@ + 对话框 + + +- +- ++ ++ + Please wait while data is being removed + 正在删除数据,请稍候 + + +- ++ ++ Close ++ 关闭 ++ ++ ++ + Removing backup point... + 正在删除备份点... + + +- ++ + OK + 确定 + + +- ++ + Other backup or restore task is being performed + 其它备份还原等操作正在执行 + + +- ++ + Program lock failed, please retry + 程序锁定失败,请重试 + + +- ++ + Unsupported task type + 不支持的任务类型 + + +- ++ + Deleted backup successfully. + 删除备份成功。 + + +- ++ + Failed to delete backup. + 删除备份失败。 + +@@ -731,32 +742,32 @@ + + FuncTypeConverter + +- ++ + System Backup + 系统备份 + + +- ++ + System Recovery + 系统还原 + + +- ++ + Data Backup + 数据备份 + + +- ++ + Data Recovery + 数据还原 + + +- ++ + Log Records + 操作日志 + + +- ++ + Ghost Image + Ghost镜像 + +@@ -764,294 +775,294 @@ + + GhostImage + +- ++ + Ghost Image + Ghost镜像 + + +- ++ + A ghost image file can only be created after backup system to local disk + 必须先进行本地系统备份,否则无法创建镜像文件 + + +- ++ + Simple + 操作简单 + + +- ++ + Fast + 创建速度快 + + +- ++ + Security + 安全可靠 + + +- ++ + Timesaving + 节省时间 + + +- ++ + Start Ghost + 创建镜像 + + +- ++ + Please select storage location + 请选择存储位置 + + +- ++ + local default path : + 本地默认路径: + + +- ++ + removable devices path : + 移动设备: + + +- +- ++ ++ + Back + 上一步 + + +- +- ++ ++ + Next + 下一步 + + +- +- +- ++ ++ ++ + checking + 环境检测 + + +- +- +- ++ ++ ++ + ghosting + 创建中 + + +- +- +- ++ ++ ++ + finished + 创建完成 + + +- ++ + Recheck + 重新检测 + + +- ++ + Checking, wait a moment ... + 正在检测,请稍等... + + +- ++ + Check whether the conditions for creating an ghost image are met + 检测是否具备制作Ghost镜像条件 + + +- ++ + Do not perform other operations to avoid data loss + 不要做其它操作,以防数据丢失 + + +- ++ + Check success + 检测成功 + + +- ++ + The storage space is enough + 存储空间充足 + + +- ++ + Make sure the computer is plugged in or the battery level is above 60% + 请确保电脑已连接电源或电量超过60% + + +- ++ + Check failure + 检测失败 + + +- +- ++ ++ + Program lock failed, please retry + 程序锁定失败,请重试 + + +- +- ++ ++ + There may be other backups or restores being performed + 可能有其它备份/还原等任务在执行 + + +- +- ++ ++ + Unsupported task type + 不支持的任务类型 + + +- +- ++ ++ + No processing logic was found in the service + 没有找到相应的处理逻辑 + + +- +- ++ ++ + Failed to mount the backup partition + 备份分区挂载失败 + + +- +- ++ ++ + Check whether there is a backup partition + 检查是否有备份分区 + + +- +- ++ ++ + The filesystem of device is vfat format + 移动设备的文件系统是vfat格式 + + +- +- ++ ++ + Please change filesystem format to ext3、ext4 or ntfs + 请换成ext3、ext4、ntfs等文件系统格式 + + +- +- ++ ++ + The device is read only + 移动设备是只读挂载的 + + +- +- ++ ++ + Please chmod to rw + 请修改为读写模式 + + +- +- ++ ++ + The storage for ghost is not enough + Ghost存储空间不足 + + +- +- +- +- ++ ++ ++ ++ + Retry after release space + 建议释放空间后重试 + + +- +- ++ ++ + There is not enough space for temporary .kyimg file + 没有足够的空间存放临时.kyimg文件 + + +- +- ++ ++ + Other backup or restore task is being performed + 其它备份还原等操作正在执行 + + +- +- ++ ++ + Please try again later + 请稍后重试 + + +- +- ++ ++ + The backup node does not exist + 相应的备份节点不存在 + + +- +- ++ ++ + Check whether the backup point has been deleted + 请检查备份点是否已经被删除 + + +- ++ + Cancel + 取消 + + +- ++ + Do not use computer in case of data loss + 请勿使用电脑,以防数据丢失 + + +- ++ + The data is being compressed to the local disk, please wait patiently... + 正压缩数据到本地磁盘,请耐心等待... + + +- ++ + Transferring image file to mobile device, about to be completed... + 正在传输image文件到移动设备,即将完成... + + +- ++ + The image creation had been canceled + 已取消制作Ghost镜像 + + +- ++ + Re-initiate the image creation if necessary + 如需要可以重新进行Ghost镜像制作 + + +- ++ + An error occurred during make ghost image + 制作Ghost镜像时发生错误 + + +- ++ + Error messages refer to log file : /var/log/backup.log + 错误信息请参考日志文件:/var/log/backup.log + + +- ++ + Home Page + 返回首页 + + +- ++ + Retry + 再试一次 + + +- ++ + Ghost image creation is successful + 创建成功 + + +- ++ + You can view it in the directory : %1 + 您可以在“%1”目录下查看 + + +- ++ + Ghost image creation is failed + 创建失败 + +@@ -1059,12 +1070,12 @@ + + LeftsiderbarWidget + +- +- + +- +- +- ++ ++ ++ ++ ++ + Backup & Restore + 备份还原工具 + +@@ -1072,39 +1083,39 @@ + + MainDialog + +- +- Main menu +- 主菜单 ++ ++ Options ++ 选项 + + +- ++ + Minimize + 最小化 + + +- ++ + + Maximize + 最大化 + + +- ++ + Close + 关闭 + + +- ++ + Help + 帮助 + + +- ++ + About + 关于 + + +- +- Exit ++ ++ Quit + 退出 + + +@@ -1113,7 +1124,7 @@ + 还原 + + +- ++ + Backup & Restore + 备份还原工具 + +@@ -1122,31 +1133,33 @@ + ManageBackupPointList + + ++ + System Backup Information + 系统备份信息列表 + + +- ++ ++ + Data Backup Information + 数据备份信息列表 + + +- ++ + You can delete the backup that does not need, refer operation logs for more details + 您可以删除不需要的备份,更多细节请参考“操作日志” + + +- ++ + Delete + 删除 + + +- ++ + backup finished + 备份完成 + + +- ++ + backup unfinished + 备份未完成 + +@@ -1154,72 +1167,72 @@ + + OperationLog + +- ++ + No operation log + 无操作日志 + + +- ++ + Backup Name + 备份名称 + + +- ++ + UUID + 备份标识 + + +- ++ + Operation + 操作 + + +- ++ + Operation Time + 操作时间 + + +- ++ + new system backup + 新建系统备份 + + +- ++ + udpate system backup + 增量系统备份 + + +- ++ + new data backup + 新建数据备份 + + +- ++ + update data backup + 更新数据备份 + + +- ++ + restore system + 系统还原 + + +- ++ + restore retaining user data + 保留用户数据还原 + + +- ++ + restore data + 数据还原 + + +- ++ + delete backup + 删除备份 + + +- ++ + make ghost image + 制作ghost镜像 + +@@ -1227,23 +1240,23 @@ + + QObject + +- ++ + factory backup + 出厂备份 + + +- +- ++ ++ + Factory Backup + 出厂备份 + + +- ++ + Backup State + 备份状态 + + +- ++ + PrefixPath + + +@@ -1251,17 +1264,17 @@ + + + +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + Warning + 备份还原工具 + +@@ -1273,29 +1286,29 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + OK + 确定 + +@@ -1317,21 +1330,21 @@ + 路径:%2不在其中。 + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + Information + 备份还原工具 + +@@ -1340,17 +1353,17 @@ + 此功能只能由系统管理员使用。 + + +- ++ + Another user had opened kybackup, you can not start it again. + 其他用户已开启备份还原工具,不能再开启 + + +- ++ + kybackup + 备份还原工具 + + +- ++ + An exception occurred when mounting backup partition. + 挂载备份分区时发生错误。 + +@@ -1359,125 +1372,125 @@ + 请检查备份还原分区是否存在,在安装操作系统时必须创建备份还原分区。 + + +- ++ + Failed to mount backup partition. + 挂载备份分区失败。 + + +- +- ++ ++ + It's busy, please wait + 系统正忙,请稍等 + + +- +- ++ ++ + Are you sure to continue customizing the path? + The custom path backup file is not protected, which may cause the backup file to be lost or damaged + 确定自定义路径? + 自定义路径备份文件不受保护,可能导致备份文件丢失或损坏 + + +- +- +- +- ++ ++ ++ ++ + Cannot nest backups, please select another directory. + 不能嵌套备份,请选择其它目录 + + +- +- ++ ++ + Mobile devices can only select the mount directory itself. + 移动设备只能选择挂载目录本身 + + +- +- ++ ++ + Please select backup position + 请选择备份位置 + + +- +- ++ ++ + Please select a backup file or directory + 请选择一个备份文件或目录 + + +- +- +- ++ ++ ++ + Are you sure to cancel the operation? + 确定取消当前操作? + + +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ + Cancel + 取消 + + +- +- +- ++ ++ ++ + Continue + 继续 + + +- ++ + Contains the user's home directory, which need to reboot after restoration. Are you sure to continue? + 包含用户家目录,还原完成后需要重启系统。是否继续? + + +- +- ++ ++ + Please select one backup to continue. + 请选择一个备份再继续。 + + +- ++ + Are you sure to delete the backup ? + 是否确定删除此备份? + + +- +- +- ++ ++ ++ + Customize: + 自定义位置: + + +- +- ++ ++ + Udisk Device: + 移动设备: + + +- +- +- ++ ++ ++ + Local Disk: + 本地磁盘: + + +- ++ + Do you want to continue? + 是否继续? + + +- ++ + Other machine: + 异机备份: + + +- ++ + Restore factory settings, your system user data will not be retained. Are you sure to continue? + 恢复出厂设置,您的系统用户数据都将会消失。是否继续? + +@@ -1486,31 +1499,33 @@ The custom path backup file is not protected, which may cause the backup file to + SelectRestorePoint + + ++ + System Backup Information + 系统备份信息列表 + + +- ++ ++ + Data Backup Information + 数据备份信息列表 + + +- ++ + OK + 确定 + + +- ++ + Other machine: + 异机备份: + + +- ++ + Customize: + 自定义位置: + + +- ++ + Udisk Device: + 移动设备: + +@@ -1518,341 +1533,341 @@ The custom path backup file is not protected, which may cause the backup file to + + SystemBackup + +- ++ + System Backup + 系统备份 + + +- ++ + Can be restored when files are damaged or lost + 系统原始文件受损或丢失时可以进行还原 + + +- ++ + Multi-Spot + 多还原点 + + +- ++ + Small Size + 体积小 + + +- ++ + Security + 安全保障 + + +- ++ + Simple + 操作简单 + + +- ++ + Start Backup + 开始备份 + + +- ++ + Backup Management >> + 备份管理 >> + + +- ++ + Please select backup position + 请选择备份位置 + + +- ++ + Browse + 浏览 + + +- ++ + local default path : + 本地默认路径: + + +- ++ + removable devices path : + 移动设备: + + +- +- +- ++ ++ ++ + Back + 上一步 + + +- +- +- ++ ++ ++ + Next + 下一步 + + +- +- ++ ++ + customize path : + 自定义路径: + + +- +- +- +- ++ ++ ++ ++ + checking + 环境检测 + + +- +- +- +- ++ ++ ++ ++ + preparing + 备份准备 + + +- +- +- +- ++ ++ ++ ++ + backuping + 备份中 + + +- +- +- +- ++ ++ ++ ++ + finished + 备份完成 + + +- ++ + Recheck + 重新检测 + + +- ++ + Checking, wait a moment ... + 正在检测,请稍等... + + +- ++ + Do not perform other operations during backup to avoid data loss + 备份期间不要做其它操作,以防数据丢失 + + +- ++ + Check whether the remaining capacity of the backup partition is sufficient + 检测备份位置空间是否充足··· + + +- ++ + Check whether the remaining capacity of the removable device is sufficient + 检测移动设备空间是否充足··· + + +- ++ + Check success + 检测成功 + + +- ++ + The storage for backup is enough + 备份空间充足 + + +- ++ + Make sure the computer is plugged in or the battery level is above 60% + 请确保电脑已连接电源或电量超过60% + + +- ++ + Check failure + 检测失败 + + +- +- ++ ++ + Program lock failed, please retry + 程序锁定失败,请重试 + + +- +- ++ ++ + There may be other backups or restores being performed + 可能有其它备份/还原等任务在执行 + + +- +- ++ ++ + Unsupported task type + 不支持的任务类型 + + +- +- ++ ++ + No processing logic was found in the service + 没有找到相应的处理逻辑 + + +- +- ++ ++ + Failed to mount the backup partition + 备份分区挂载失败 + + +- +- ++ ++ + Check whether there is a backup partition + 检查是否有备份分区 + + +- +- ++ ++ + The filesystem of device is vfat format + 移动设备的文件系统是vfat格式 + + +- +- ++ ++ + Please change filesystem format to ext3、ext4 or ntfs + 请换成ext3、ext4、ntfs等文件系统格式 + + +- +- ++ ++ + The device is read only + 移动设备是只读挂载的 + + +- +- ++ ++ + Please chmod to rw + 请修改为读写模式 + + +- +- ++ ++ + The storage for backup is not enough + 备份空间不足 + + +- +- ++ ++ + Retry after release space + 建议释放空间后重试 + + +- +- ++ ++ + Other backup or restore task is being performed + 其它备份还原等操作正在执行 + + +- +- ++ ++ + Please try again later + 请稍后重试 + + +- ++ + Backup Name + 备份名称 + + +- ++ + Maximum length reached + 长度已达上限 + + +- ++ + Unsupported symbol : + 不支持符号: + + +- +- ++ ++ + Name already exists + 名称已存在 + + +- ++ + factory backup + 出厂备份 + + +- ++ + Cancel + 取消 + + +- ++ + Do not use computer in case of data loss + 请勿使用电脑,以防数据丢失 + + +- ++ + Failed to create the backup point directory + 创建备份目录失败 + + +- ++ + Please check backup partition permissions + 请检查备份分区权限 + + +- ++ + The system is being compressed to the local disk, please wait patiently... + 正压缩系统到本地磁盘,请耐心等待... + + +- ++ + Transferring image file to mobile device, about to be completed... + 正在传输image文件到移动设备,即将完成... + + +- ++ + The backup had been canceled + 已取消备份 + + +- ++ + Re-initiate the backup if necessary + 如需要可重新进行备份 + + +- +- ++ ++ + An error occurred during backup + 备份时发生错误 + + +- +- ++ ++ + Error messages refer to log file : /var/log/backup.log + 错误信息请参考日志文件:/var/log/backup.log + + +- ++ + Home Page + 返回首页 + + +- ++ + Retry + 再试一次 + + +- ++ + The backup is successful + 备份成功 + + +- ++ + The backup is failed + 备份失败 + +@@ -1860,237 +1875,237 @@ The custom path backup file is not protected, which may cause the backup file to + + SystemRestore + +- ++ + System Restore + 系统还原 + + +- ++ + You can restore the system to its previous state + 在您遇到问题时可将系统还原到以前的状态 + + +- ++ + Simple + 操作简单 + + +- ++ + Security + 安全可靠 + + +- ++ + Repair + 修复系统损坏 + + +- ++ + Independent + 自主操作 + + +- ++ + Start Restore + 开始还原 + + +- ++ + Factory Restore + 出厂还原 + + +- ++ + Retaining User Data + 保留用户数据 + + +- +- +- ++ ++ ++ + checking + 环境检测 + + +- +- +- ++ ++ ++ + restoring + 还原中 + + +- +- +- ++ ++ ++ + finished + 还原完成 + + +- ++ + Back + 上一步 + + +- ++ + Next + 下一步 + + +- ++ + Recheck + 重新检测 + + +- ++ + Checking, wait a moment ... + 正在检测,请稍等... + + +- ++ + Check whether the restore environment meets the requirements + 检查恢复环境是否符合要求 + + +- ++ + Do not perform other operations during restore to avoid data loss + 还原期间不要做其它操作,以防数据丢失 + + +- ++ + Check success + 检测成功 + + +- ++ + The system will reboot automatically after the restore is successful + 还原成功后系统将自动重启 + + +- ++ + Make sure the computer is plugged in or the battery level is above 60% + 请确保电脑已连接电源或电量超过60% + + +- ++ + Check failure + 检测失败 + + +- +- ++ ++ + Program lock failed, please retry + 程序锁定失败,请重试 + + +- +- ++ ++ + There may be other backups or restores being performed + 可能有其它备份/还原等任务在执行 + + +- +- ++ ++ + Unsupported task type + 不支持的任务类型 + + +- +- ++ ++ + No processing logic was found in the service + 没有找到相应的处理逻辑 + + +- +- ++ ++ + The .user.txt file does not exist + .user.txt文件不存在 + + +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ + Backup points may be corrupted + 备份点可能被损坏 + + +- +- ++ ++ + The .exclude.user.txt file does not exist + .exclude.user.txt文件不存在 + + +- +- ++ ++ + The backup point data directory does not exist + 备份点数据目录不存在 + + +- +- ++ ++ + Failed to rsync /boot/efi + 同步/boot/efi失败 + + +- +- ++ ++ + Check the mounting mode of the /boot/efi partition + 请检查/boot/efi分区挂载方式 + + +- ++ + Do not use computer in case of data loss + 请勿使用电脑,以防数据丢失 + + +- ++ + Failed to prepare the restore directory + 还原目录准备失败 + + +- ++ + Refer to log :/var/log/backup.log for more information + 更多信息请参考日志/var/log/backup.log + + +- ++ + An error occurred during restore + 还原时发生错误 + + +- ++ + Error messages refer to log file : /var/log/backup.log + 错误信息请参考日志文件:/var/log/backup.log + + +- ++ + Home Page + 返回首页 + + +- ++ + Retry + 再试一次 + + +- ++ + Successfully restoring the system + 系统还原成功 + + +- ++ + The system will automatically reboot. + 系统将自动重启。 + + +- ++ + Or not, please force shutdown and restart. + 若未能自动重启,请手动强制关机重启。 + + +- ++ + Restoring the system failed + 系统还原失败 + +@@ -2098,7 +2113,7 @@ The custom path backup file is not protected, which may cause the backup file to + + restore + +- ++ + system restore + + +diff --git a/kybackup/resource/language/qt_bo_CN.qm b/kybackup/resource/language/qt_bo_CN.qm +index 05788b8..8ea3135 100644 +--- a/kybackup/resource/language/qt_bo_CN.qm ++++ b/kybackup/resource/language/qt_bo_CN.qm +@@ -1,34 +1,36 @@ +-[y[GP(E}ȤMc0cdLL2LP(L_LiicGb.J+ *J6bPFEd@Pd&Pd<Pd`5PdhPd)X˙X˙7 X˙UX˙X˙/&ɀEɀEV.ɀE2yn&n {ejb-n-nLY-n]0uQ5%,YBk- - -+|-+MbC|d|d!M[?1OTS+rS3B36vFw3t 3tH3t]Y!7b@7b@l1x9sUl|)dr\DB^>DZ4-wR R*IRF{RRu(9u(1Ou(Nu(u(Bzү}|P&|P`|P +- DT")T"ST":#V:#. :#J:#:#7]  cfӀ$KӀ@ThKZ"BKZb{Wb{WRb{W}4(#I 1IEIsSInn,e]WnWW=egWvjT8djTt!?!i( (Bl5V|d`{`{aNmh.S4h j)F%TI+G%WG% G%Oijij3;ijPmijij6ķ#^:\guBuM;^4W8!N.+PmV,zA3NN3N>3NQ3NW[u|gk!kYk^y.Ws +-es1^e^,Y0cnOcnN"RZPr|0=?`,eO`.Ef_om*m_5_UI1C(%IF5c .Ĵ6 ]?tN h>x _N 4? %$ %; %A| %^ %l %  Q ! :. :.,R :.I" :. :. Ԟe( Ԟe ++ZDZ-wR ++R*RGR)Ru(~u(1u(OTu(u(zү~g|P'|PaX|P0 ++cErT"nT"T,T"&:#:#.e:#KR:#:#]: cfӀ$Ӏy@Th}KZ"KZ:b{Wb{WS<b{W!}4)9#I vIFsIsIn 3nn,eWnWW>YgWjT8jTt!!i( (Bm`5V|d`{`{QaNnHh.Sh *7F+G%WG%G%ijij3ijPij#ijķe#;*\uuCGuM^4W!N+Pm,zA3N3N?T3NQ3N[vn{d|hk!kZk^y}.t ++es1^f^*,Y11cncn#[JPr0=`,e`.E;f_pm*m5V 1C(%F5c .Ĵ6 ]?t h>x _ 4@$ %$ %< %B %_E % % [ Rk :. :., :.I :. :.. Ԟe(T Ԟet + u +- ua +- ubx +-=TM +-,7% +-,7 +-İh +-JR +-JR|t +-JR% +-h+G +-j8g +-j8g. +-j8gK +-j8g +-j8g +-s @ +-s +-46 +-89 +-< +-u +-T +-T +-C!$ +-CY +-C +-# x48 x4 Ml Js%[ h*v7 h*D z z `p' `pa9 `pu ) )7b )V ) ) PV т т* 7d  7d T v  , Ehj a( b, c'I h'9 h m> m> m>h m> mY m% >i@ H$9L H$  w]T n ^ j i i | } )̍4 -@ r{ rL sn{r P[ @kAPxOw.%bzf BVf QD fb Bf| VzQ QB|f Backup & Restore AboutDialogBzD X|c Dialog AboutDialogBVf Ib cB F f|Q XAS Br B^r BDf c BO|b f|S U|B T`X aD S X cB c `GV b|c VzQ fVf a| VQ @rf fVf VftS Brf bzf BVf Q V`r BSf Ztc fb Bf| VzQ PtV bc SD Br XAzBf Ff QD XIzS Ff @r fzBf Vt XD T| ^rB czBf ftb QD Bfb BO|Q Vf a|Q %The backup tool is a tool that supports system backup and data backup. When the user data is damaged or the system is attacked, the tool can flexibly restore the status of the backup node. A lot of optimization and innovation have been carried out for domestic hardware and software platforms. AboutDialog&Tb B^r `Qr c fz version: AboutDialogLarB F `QtQ `PzS QD Xb ctD V`r f A|DfFile drag and drop areaBackupListWidgetbzf BVf XrD   Backup NameBackupPointListDialog&bzf BVf B^r A|S  Backup SizeBackupPointListDialog$bzf BVf Qtf Z|Q  Backup TimeBackupPointListDialogBzD X|c DialogBackupPointListDialog0bzf BVf QTtD AB XzQ T  No BackupBackupPointListDialogB| BSf PositionBackupPointListDialogUUIDUUIDBackupPointListDialog@A|Q @rf cX US ^rB `QzXf b|Bf Please select a pathBackupPositionSelectDialogA f|S VbV T Add ++ ub@ ++ ub ++=TN ++,7% ++,7{ ++İiT ++JRY ++JR| ++JR ++h+H ++j8gd ++j8g// ++j8gL ++j8gc ++j8g ++s ++s0 ++4 ++8:/ ++== ++ ++TJ ++TU ++C!i ++CY ++C ++ x49 x4 Mm Js%\H h*v h* z, zq `p' `pa `p G ) )7 )WO )K ) P т т 7d L 7dt US v9   Ehj a(K b- c'J- h'~ h m> m> m>i ++ m>$ mY m% >i H$9 H$  w] o+ ^ i) i* }p ~ )̍59 -@ r{ r sn{ P @kPyOw.&<`sZ4/-h/9:)9:)409:)@9:)T9:)9:)F^^2F^dHtpjas DwI`CI`I@@Xx#3#3ec!\|0kJl,i>bzf BVf QD fb Bf| VzQ QB|f Backup & Restore AboutDialogBzD X|c Dialog AboutDialogBVf Ib cB F f|Q XAS Br B^r BDf c BO|b f|S U|B T`X aD S X cB c `GV b|c VzQ fVf a| VQ @rf fVf VftS Brf bzf BVf Q V`r BSf Ztc fb Bf| VzQ PtV bc SD Br XAzBf Ff QD XIzS Ff @r fzBf Vt XD T| ^rB czBf ftb QD Bfb BO|Q Vf a|Q %The backup tool is a tool that supports system backup and data backup. When the user data is damaged or the system is attacked, the tool can flexibly restore the status of the backup node. A lot of optimization and innovation have been carried out for domestic hardware and software platforms. AboutDialog&Tb B^r `Qr c fz version: AboutDialogLarB F `QtQ `PzS QD Xb ctD V`r f A|DfFile drag and drop areaBackupListWidgetbzf BVf XrD   Backup NameBackupPointListDialog&bzf BVf B^r A|S  Backup SizeBackupPointListDialog$bzf BVf Qtf Z|Q  Backup TimeBackupPointListDialogf| bB T CloseBackupPointListDialogBzD X|c DialogBackupPointListDialog0bzf BVf QTtD AB XzQ T  No BackupBackupPointListDialogB| BSf PositionBackupPointListDialogUUIDUUIDBackupPointListDialog@A|Q @rf cX US ^rB `QzXf b|Bf Please select a pathBackupPositionSelectDialogA f|S VbV T Add + DataBackupHbzf BVf VzQ brD S|b `Atc VtD V An error occurred during backup + DataBackupUrb c|B T Back + DataBackup$bzf BVf Q| QX >>Backup Management >> +@@ -96,7 +98,7 @@ DataBackup"czBf B + DataBackup4f BSf Qz B`r A FQ QD `Bc local default path :  + DataBackup.B frB VzQ V^rS a|Q  preparing + DataBackupHBSf f| PtV T`r frB Ff @r cX Vt removable devices path :  +-DataBackupDfb Bf| VzQ brD S|b `Atc VtD V  An error occurred during restore DataRestoreUrb c|B T Back DataRestoreRf|S c bV f|b Vf S fb Bf| VzQ PtV %Backed up first, then can be restored DataRestorePbzf BVf f ZrBf btc ftDf ft `Btb frQ Backup points may be corrupted DataRestore*^rV Vdzb VzQ X PtV T Check failure DataRestore2^rV Vdzb czBf `BtV VtD  Check success DataRestorex/boot/efif Atc Br frB f|b VzQ fDf c ^rV Vdzb V QB|f 2Check the mounting mode of the /boot/efi partition DataRestorefb Bf| VzQ T`r A|b atB Qz VD V QD XPtS XrS c ^rV Vdzb V QB|f rsync /boot/efic UX Izf VtD V Failed to rsync /boot/efi DataRestore6XB|Bf Xtb fb Bf| VtD V  Fast Recovery DataRestore$ArX ZD Br d|B cz Home Page DataRestorebD b `Uzb V`r Independent DataRestoreB|B @Q SD Qt `GtB T`X aD S B|B Barf @r Ft ZQ Vb F 60aS _rS Tb AB PzB VzQ QB|f FMake sure the computer is plugged in or the battery level is above 60% DataRestore"B|X fVf bzf Xb Next DataRestored^Vf ^t`r A|Q Qt PB BE|Q VzQ T`r BOS ZrBf X bzQ ,No processing logic was found in the service DataRestorepB| brX Br _ c f|S d|b V QD  Vfb Qt ^rV Vdzb VzQ !Program lock failed, please retry DataRestore,B^r BDf c ftD f|V  Protect Data DataRestore>Vfb Qt X cB Vfb Qt frB T  Reboot System DataRestore"^rV Vdzb V QB|f Recheck DataRestoreQz Vf XD V`r F `UrS b|Bf  QTQ B^r`r IrS P|  :/var/log/backup.log6Refer to log :/var/log/backup.log for more information DataRestoreNB^r BDf fb Bf| VzQ Tb UX Izf VtD V Restoring the data failed DataRestore4Vfb Qt ^rV Vdzb V QB|f Retry DataRestoreVQz `GBf Security DataRestore`B| ZtBf T  Start Restore DataRestoreFB^r BDf VQz VB DD fb Bf| VzQ T Successfully restoring the data DataRestore..exclude.user.txtarB F )The .exclude.user.txt file does not exist DataRestore0.user.txt arB F BSf XzQ !The .user.txt file does not exist DataRestorePbzf BVf f BSf @r B^r BDf Q@b FB XzQ .The backup point data directory does not exist DataRestoreX cB `Qr Vfb Qt P|S QB|f Qz `Q X Vf S a| VQ A df VzQ f|Q VzQ Xr PtV AThe system needs to reboot. Otherwise, some tools cannot be used. DataRestoreQ QtD cB Vfb VzQ V^rS T`r bzf BVf QTtD AB BX aD S fb Bf| VzQ V^rS a|Q 6There may be other backups or restores being performed DataRestore\bV f|b Xr VzQ T`r cf `BS Br brBf QVrVf Unsupported task type DataRestore"^rV Vdzb V QB|f checking DataRestore"czBf BtV VtD V finished DataRestorefb Bf| VzQ T  restoring DataRestorePVQz VB DD bzf BVf QTtD AB VftV T bzQ Deleted backup successfully.DeleteBackupDialogBzD X|c DialogDeleteBackupDialogFbzf BVf QTtD AB VftV X PtV T bzQ Failed to delete backup.DeleteBackupDialog`BrBf OkDeleteBackupDialogzQ QtD bzf BVf cf `BS B^S QB BX aD S fb Bf| VzQ T`r cf `BS/Other backup or restore task is being performedDeleteBackupDialog^B^r BDf XzQ Tb V_| V^rS T`r fVf ft ftB b|Bf 'Please wait while data is being removedDeleteBackupDialogpB| brX Br _ c f|S d|b V QD  Vfb Qt ^rV Vdzb VzQ !Program lock failed, please retryDeleteBackupDialog<bzf BVf f F XzQ Tb V_| QB|f Removing backup point...DeleteBackupDialog\bV f|b Xr VzQ T`r cf `BS Br brBf QVrVf Unsupported task typeDeleteBackupDialog&B^r BDf BVf frB Data BackupFuncTypeConverter"B^r BDf fb Bf|  Data RecoveryFuncTypeConverter.BQ|S `Qz`r B_tBf VbS  Ghost ImageFuncTypeConverter_rS P| `B|Q T  Log RecordsFuncTypeConverter2X cB Br bzf BVf QTtD AB System BackupFuncTypeConverterX cB fb Bf| System RecoveryFuncTypeConverterdf BSf Qz B`r btQ A|Df BVf Ib BtV T`r dzc VbS HA ghost image file can only be created after backup system to local disk ++DataBackupDfb Bf| VzQ brD S|b `Atc VtD V  An error occurred during restore DataRestoreUrb c|B T Back DataRestoreRf|S c bV f|b Vf S fb Bf| VzQ PtV %Backed up first, then can be restored DataRestorePbzf BVf f ZrBf btc ftDf ft `Btb frQ Backup points may be corrupted DataRestore*^rV Vdzb VzQ X PtV T Check failure DataRestore2^rV Vdzb czBf `BtV VtD  Check success DataRestorex/boot/efif Atc Br frB f|b VzQ fDf c ^rV Vdzb V QB|f 2Check the mounting mode of the /boot/efi partition DataRestorefb Bf| VzQ T`r A|b atB Qz VD V QD XPtS XrS c ^rV Vdzb V QB|f rsync /boot/efic UX Izf VtD V Failed to rsync /boot/efi DataRestore6XB|Bf Xtb fb Bf| VtD V  Fast Recovery DataRestore$ArX ZD Br d|B cz Home Page DataRestorebD b `Uzb V`r Independent DataRestoreB|B @Q SD Qt `GtB T`X aD S B|B Barf @r Ft ZQ Vb F 60aS _rS Tb AB PzB VzQ QB|f FMake sure the computer is plugged in or the battery level is above 60% DataRestore"B|X fVf bzf Xb Next DataRestored^Vf ^t`r A|Q Qt PB BE|Q VzQ T`r BOS ZrBf X bzQ ,No processing logic was found in the service DataRestorepB| brX Br _ c f|S d|b V QD  Vfb Qt ^rV Vdzb VzQ !Program lock failed, please retry DataRestore,B^r BDf c ftD f|V  Protect Data DataRestore>Vfb Qt X cB Vfb Qt frB T  Reboot System DataRestore"^rV Vdzb V QB|f Recheck DataRestoreQz Vf XD V`r F `UrS b|Bf  QTQ B^r`r IrS P|  :/var/log/backup.log6Refer to log :/var/log/backup.log for more information DataRestoreNB^r BDf fb Bf| VzQ Tb UX Izf VtD V Restoring the data failed DataRestore4Vfb Qt ^rV Vdzb V QB|f Retry DataRestoreVQz `GBf Security DataRestore`B| ZtBf T  Start Restore DataRestoreFB^r BDf VQz VB DD fb Bf| VzQ T Successfully restoring the data DataRestore..exclude.user.txtarB F )The .exclude.user.txt file does not exist DataRestore0.user.txt arB F BSf XzQ !The .user.txt file does not exist DataRestorePbzf BVf f BSf @r B^r BDf Q@b FB XzQ .The backup point data directory does not exist DataRestoreX cB `Qr Vfb Qt P|S QB|f Qz `Q X Vf S a| VQ A df VzQ f|Q VzQ Xr PtV AThe system needs to reboot. Otherwise, some tools cannot be used. DataRestoreQ QtD cB Vfb VzQ V^rS T`r bzf BVf QTtD AB BX aD S fb Bf| VzQ V^rS a|Q 6There may be other backups or restores being performed DataRestore\bV f|b Xr VzQ T`r cf `BS Br brBf QVrVf Unsupported task type DataRestore"^rV Vdzb V QB|f checking DataRestore"czBf BtV VtD V finished DataRestorefb Bf| VzQ T  restoring DataRestoref| bB T CloseDeleteBackupDialogPVQz VB DD bzf BVf QTtD AB VftV T bzQ Deleted backup successfully.DeleteBackupDialogBzD X|c DialogDeleteBackupDialogFbzf BVf QTtD AB VftV X PtV T bzQ Failed to delete backup.DeleteBackupDialog`BrBf OKDeleteBackupDialogzQ QtD bzf BVf cf `BS B^S QB BX aD S fb Bf| VzQ T`r cf `BS/Other backup or restore task is being performedDeleteBackupDialog^B^r BDf XzQ Tb V_| V^rS T`r fVf ft ftB b|Bf 'Please wait while data is being removedDeleteBackupDialogpB| brX Br _ c f|S d|b V QD  Vfb Qt ^rV Vdzb VzQ !Program lock failed, please retryDeleteBackupDialog<bzf BVf f F XzQ Tb V_| QB|f Removing backup point...DeleteBackupDialog\bV f|b Xr VzQ T`r cf `BS Br brBf QVrVf Unsupported task typeDeleteBackupDialog&B^r BDf BVf frB Data BackupFuncTypeConverter"B^r BDf fb Bf|  Data RecoveryFuncTypeConverter.BQ|S `Qz`r B_tBf VbS  Ghost ImageFuncTypeConverter_rS P| `B|Q T  Log RecordsFuncTypeConverter2X cB Br bzf BVf QTtD AB System BackupFuncTypeConverterX cB fb Bf| System RecoveryFuncTypeConverterdf BSf Qz B`r btQ A|Df BVf Ib BtV T`r dzc VbS HA ghost image file can only be created after backup system to local disk + GhostImageBQ|S `Qz`r B_tBf VbS V_| V`r VbtQ brX A|Q S|b `Atc VtD V )An error occurred during make ghost image + GhostImageUrb c|B T Back + GhostImageUrb `PzS Cancel +@@ -153,19 +155,19 @@ GhostImageHBSf f + GhostImage>bzf BVf QD fb Bf| VzQ QB|f Backup & RestoreLeftsiderbarWidget&`Vzc a|Q @r f|b About + MainDialog>bzf BVf QD fb Bf| VzQ QB|f Backup & Restore + MainDialogf| bB T Close +-MainDialog"Urb `PzS VzQ T Exit + MainDialogb|Bf bX VzQ T Help +-MainDialog_f P| BY| V|  Main menu + MainDialog2ZQ B^r XP| d|f @r f| SfMaximize + MainDialog6ItD Qt BO|D BD PtV V QB|f Minimize + MainDialog$btS cS Br BSf Normal ++MainDialog`QzXf ZS Options ++MainDialog"Urb `PzS VzQ T Quit + MainDialog6B^r BDf bzf BVf F `UrS Data Backup InformationManageBackupPointListVftV T DeleteManageBackupPointList4X cB Br bzf BVf F `UrS System Backup InformationManageBackupPointListAzQ Z|f Xr QB|f T`r bzf BVf QTtD AB VftV F|B T QD  V@|c f|Q @r _rS P| QTQ B^rb V_tD Sf ^rV U`r BSf Ztc ^rV U dzf ft SYou can delete the backup that does not need, refer operation logs for more detailsManageBackupPointList<bzf BVf cf Q|S XGtB `Brc V backup finishedManageBackupPointListRczBf `BtV VtD XzQ T`r bzf BVf QTtD ABbackup unfinishedManageBackupPointListbzf BVf XrD   Backup Name OperationLog8V@|c f|Q @r _rS P| XzQ T No operation log OperationLogV@|c f|Q  Operation OperationLog&`A|b f|Q Qtf Z|Q Operation Time OperationLogUUIDUUID OperationLog2bzf BVf QTtD AB VftV T  delete backup OperationLog:BQ|S `Qz`r B_tBf VbS V_| V make ghost image OperationLogDB^r BDf Bfb T`r bzf BVf QTtD ABnew data backup OperationLog<X cB Bfb T`r bzf BVf QTtD ABnew system backup OperationLog,B^r BDf fb Bf| VzQ  restore data OperationLogLIb ZBf Vf T`r f|Q XAS Br B^r BDf restore retaining user data OperationLog$X cB fb Bf| VzQ restore system OperationLog>udpateX cB Br bzf BVf QTtD ABudpate system backup OperationLogBB^r BDf Bfb ftb Br bzf BVf update data backup OperationLogbzf BVf AB VB|f frB f|b VzQ fVf QXrBf Vfc Br BSf Ztc VtD V bzQ 5An exception occurred when mounting backup partition.QObjectf|Q XAS B^S ^rB Brf A Uz _rS Tf AzQ @rf aD Vfb XB| b|X Xr PtV =Another user had opened kybackup, you can not start it again.QObjectfA|Q @rf Dzf Tb Qt BdB VE|f Qz XzQ Tb V_| QB|f fX 'Are you sure to cancel the operation?QObjectrA|Q @rf Dzf Tb Qt Xt XPtQ Qt cX `Qr BOS `Azc VzQ QB|f fX + `BB f|`r cX US Br bzf BVf arB ZBf c ftD f|V Xr VzQ Tb bzf BVf arB F V|b VbB Ot f|D V`X aD S BO|b VbB PzVf frQ Are you sure to continue customizing the path? + The custom path backup file is not protected, which may cause the backup file to be lost or damagedQObjectlA|Q @rf Dzf Tb Qt bzf BVf QTtD AB Qz VftV QB|f fX #Are you sure to delete the backup ?QObject$bzf BVf BSf Ztc  Backup StateQObjectUrb `PzS CancelQObjecttBVf Ib F ZD `[tQ Xr PtV  BQX B VzQ b|Bf  Q@b FB B^S QB  5Cannot nest backups, please select another directory.QObject"Qz`r SD Qt f|Q XAS Br ArX ZD Br Q@b FB `Qtf a|Q Tf fb Bf| Vf bzf Vfb Qt `B| `[tBf QB|f A|Q @rf Q QtD Xt XPtQ Qt btS `A|Df VzQ PtVeContains the user's home directory, which need to reboot after restoration. Are you sure to continue?QObject"Xt XPtQ Qt btS ContinueQObject,atc f|c B|Xf Bdrf Sr  +-Customize:QObjectbA|Q @rf Q QtD Xt XPtQ Qt btS `A|Df VzQ QB|fDo you want to continue?QObject6V_| B`r bzf BVf QTtD ABFactory BackupQObjectFbzf BVf AB VB|f VzQ X PtV T bzQ !Failed to mount backup partition.QObjectF `UrS  InformationQObject6Vzc V g ED Fz Vf ftB QD  It's busy, please waitQObject8f BSf @r AV czS `A|b c| Sr  Local Disk:QObjectnftc VQz`r frB Ff VQXf Sf V@c brBf Q@b FB Qz IrQ cf  :Mobile devices can only select the mount directory itself.QObject`BrBf OkQObjectBdX Br Q@b FB SD Qt BSf T`r B^r BDf A| S VQXf F|B T fz %1 ++Customize:QObjectbA|Q @rf Q QtD Xt XPtQ Qt btS `A|Df VzQ QB|fDo you want to continue?QObject6V_| B`r bzf BVf QTtD ABFactory BackupQObjectFbzf BVf AB VB|f VzQ X PtV T bzQ !Failed to mount backup partition.QObjectF `UrS  InformationQObject6Vzc V g ED Fz Vf ftB QD  It's busy, please waitQObject8f BSf @r AV czS `A|b c| Sr  Local Disk:QObjectnftc VQz`r frB Ff VQXf Sf V@c brBf Q@b FB Qz IrQ cf  :Mobile devices can only select the mount directory itself.QObject`BrBf OKQObjectBdX Br Q@b FB SD Qt BSf T`r B^r BDf A| S VQXf F|B T fz %1 + Path:%2Sr A| Z|`r SD S XzQ \Only data that exists in the follow directorys can be selected: %1. + Path:%2 is not in them.QObject,`Utc `A|b B^S QB fz Other machine:QObject.`B| cX a|Q T BdX Bfc Path already exists : QObject^AzQ @rf bzf BVf arB F QD Q@b FB `QzXf b|Bf (Please select a backup file or directoryQObjectFbzf BVf cf BSf BQX Bfzf BSD b|Bf Please select backup positionQObjectXXt XPtQ Qt bzf BVf QTtD AB ErB `QzXf b|Bf %Please select one backup to continue.QObject8f|S `B|B VzQ T`r cX U|Bf  + PrefixPathQObject$V_| B`r frB V@|Q fb Bf| Vf S AzQ Z|`r X cB Br f|Q XAS Br B^r BDf f|b `G|B VzQ Xr PtV A|Q @rf Q QtD Xt XPtQ Qt btS `A|Df VzQ PtV_Restore factory settings, your system user data will not be retained. Are you sure to continue?QObject0arB F QD Q@b FB XzQ T  'The file or directory does not exist : QObject6]t`t Ar cS Br frB Ff Sr  Udisk Device:QObjectP ZrB f|B T WarningQObject6V_| B`r bzf BVf QTtD ABfactory backupQObject&ErS Tt`t ct`t Ut`t kybackupQObject,atc f|c B|Xf Bdrf Sr  +-Customize:SelectRestorePoint6B^r BDf bzf BVf F `UrS Data Backup InformationSelectRestorePoint`BrBf OkSelectRestorePoint,`Utc `A|b B^S QB fz Other machine:SelectRestorePoint4X cB Br bzf BVf F `UrS System Backup InformationSelectRestorePoint6]t`t Ar cS Br frB Ff Sr  Udisk Device:SelectRestorePointHbzf BVf VzQ brD S|b `Atc VtD V An error occurred during backup SystemBackupUrb c|B T Back SystemBackup$bzf BVf Q| QX >>Backup Management >> SystemBackupbzf BVf XrD   Backup Name SystemBackupVcf T YX Brf Browse SystemBackuparB ZBf c BO|b f|S U|B T`X aD S V|b VbB Ot f|D V`r fVf ft fb Bf| Vf .Can be restored when files are damaged or lost SystemBackupUrb `PzS Cancel SystemBackup*^rV Vdzb VzQ X PtV T Check failure SystemBackup2^rV Vdzb czBf `BtV VtD  Check success SystemBackupbzf BVf AB VB|f @r cB X`r d|D ZQ `QD XrS c ^rV Vdzb V QB|f JCheck whether the remaining capacity of the backup partition is sufficient SystemBackupBSf f| PtV T`r frB Ff @r cB `U|`r d|D ZQ `QD XrS c ^rV Vdzb V QB|f JCheck whether the remaining capacity of the removable device is sufficient SystemBackupZbzf BVf AB VB|f a|Q XzQ c ^rV Vdzb V QB|f )Check whether there is a backup partition SystemBackupJ^rV Vdzb Vf Sf EtD YX ftBf QD  ...Checking, wait a moment ... SystemBackupbzf BVf VzQ brD B^r BDf V|b VbB Xr a|D V`r FzQ Qt cf @ B^S QB Xr VzQ T @Do not perform other operations during backup to avoid data loss SystemBackupB^r BDf V|b VbB Ot f|D V`r BSf Ztc `|B brf `A|b V@|c f|Q Xr (Do not use computer in case of data loss SystemBackuppS|b `Atc Br F `UrS ^zf T Sr P| `B|Q arB ZBf c _zb.log6Error messages refer to log file : /var/log/backup.log SystemBackupdbzf BVf f BSf @r Q@b FB Bfb ftS VzQ X PtV T +Failed to create the backup point directory SystemBackupdbzf BVf AB VB|f Vf Sf frB f|b VzQ X PtV T $Failed to mount the backup partition SystemBackup$ArX ZD Br d|B cz Home Page SystemBackupB|B @Q SD Qt `GtB T`X aD S B|B Barf @r Ft ZQ Vb F 60aS _rS Tb AB PzB VzQ QB|f FMake sure the computer is plugged in or the battery level is above 60% SystemBackup<brD ZQ af XP`r ZQ c fzVf `QtBMaximum length reached SystemBackupf F XD T|  ++Customize:SelectRestorePoint6B^r BDf bzf BVf F `UrS Data Backup InformationSelectRestorePoint`BrBf OKSelectRestorePoint,`Utc `A|b B^S QB fz Other machine:SelectRestorePoint4X cB Br bzf BVf F `UrS System Backup InformationSelectRestorePoint6]t`t Ar cS Br frB Ff Sr  Udisk Device:SelectRestorePointHbzf BVf VzQ brD S|b `Atc VtD V An error occurred during backup SystemBackupUrb c|B T Back SystemBackup$bzf BVf Q| QX >>Backup Management >> SystemBackupbzf BVf XrD   Backup Name SystemBackupVcf T YX Brf Browse SystemBackuparB ZBf c BO|b f|S U|B T`X aD S V|b VbB Ot f|D V`r fVf ft fb Bf| Vf .Can be restored when files are damaged or lost SystemBackupUrb `PzS Cancel SystemBackup*^rV Vdzb VzQ X PtV T Check failure SystemBackup2^rV Vdzb czBf `BtV VtD  Check success SystemBackupbzf BVf AB VB|f @r cB X`r d|D ZQ `QD XrS c ^rV Vdzb V QB|f JCheck whether the remaining capacity of the backup partition is sufficient SystemBackupBSf f| PtV T`r frB Ff @r cB `U|`r d|D ZQ `QD XrS c ^rV Vdzb V QB|f JCheck whether the remaining capacity of the removable device is sufficient SystemBackupZbzf BVf AB VB|f a|Q XzQ c ^rV Vdzb V QB|f )Check whether there is a backup partition SystemBackupJ^rV Vdzb Vf Sf EtD YX ftBf QD  ...Checking, wait a moment ... SystemBackupbzf BVf VzQ brD B^r BDf V|b VbB Xr a|D V`r FzQ Qt cf @ B^S QB Xr VzQ T @Do not perform other operations during backup to avoid data loss SystemBackupB^r BDf V|b VbB Ot f|D V`r BSf Ztc `|B brf `A|b V@|c f|Q Xr (Do not use computer in case of data loss SystemBackuppS|b `Atc Br F `UrS ^zf T Sr P| `B|Q arB ZBf c _zb.log6Error messages refer to log file : /var/log/backup.log SystemBackupdbzf BVf f BSf @r Q@b FB Bfb ftS VzQ X PtV T +Failed to create the backup point directory SystemBackupdbzf BVf AB VB|f Vf Sf frB f|b VzQ X PtV T $Failed to mount the backup partition SystemBackup$ArX ZD Br d|B cz Home Page SystemBackupB|B @Q SD Qt `GtB T`X aD S B|B Barf @r Ft ZQ Vb F 60aS _rS Tb AB PzB VzQ QB|f FMake sure the computer is plugged in or the battery level is above 60% SystemBackup<brD ZQ af XP`r ZQ c fzVf `QtBMaximum length reached SystemBackupf F XD T|  + Multi-Spot SystemBackupXrD a|Q T Name already exists SystemBackup"B|X fVf bzf Xb Next SystemBackupd^Vf ^t`r A|Q Qt PB BE|Q VzQ T`r BOS ZrBf X bzQ ,No processing logic was found in the service SystemBackupzQ QtD bzf BVf cf `BS B^S QB BX aD S fb Bf| VzQ T`r cf `BS/Other backup or restore task is being performed SystemBackup|arB ZBf X cB Br bX B^B Qz ext30ext4`X aD S ntfsc Vftb b|Bf 6Please change filesystem format to ext3、ext4 or ntfs SystemBackupfbzf BVf AB VB|f @r F|B `Ptf c ^rV Vdzb BSD b|Bf )Please check backup partition permissions SystemBackupNAzQ @rf Fr X| Or c Btf ctBf BSD b|Bf Please chmod to rw SystemBackupFbzf BVf cf BSf BQX Bfzf BSD b|Bf Please select backup position SystemBackupBEtD YX `B|b bzf aD Vfb Z|Q c Please try again later SystemBackuppB| brX Br _ c f|S d|b V QD  Vfb Qt ^rV Vdzb VzQ !Program lock failed, please retry SystemBackupvQB|f Dzf @r fVf ft aD Vfb bzf BVf QTtD AB `[tBf QB|f #Re-initiate the backup if necessary SystemBackup"^rV Vdzb V QB|f Recheck SystemBackup4Vfb Qt ^rV Vdzb V QB|f Retry SystemBackupbVb f|D `BzX fzc Vf bzf aD Vfb ^rV Vdzb VfRetry after release space SystemBackupVQz `GBf Security SystemBackupfVf VQz Simple SystemBackupB^r A|S FtD V  + Small Size SystemBackupBfb `[tBf  Start Backup SystemBackup2X cB Br bzf BVf QTtD AB System Backup SystemBackupJbzf BVf QTtD AB Qz XzQ Tb V_|f _rS The backup had been canceled SystemBackupBbzf BVf QTtD AB c UX Izf VtD  The backup is failed SystemBackup8bzf BVf czBf `BtV VtD V The backup is successful SystemBackupBfrB Ff `Qr A| Sb Vcf T YX arS The device is read only SystemBackup`frB Ff @r arB ZBf X cB Sr vfatar bX B^B arS 'The filesystem of device is vfat format SystemBackupTbzf BVf Bf|B `G|B Vf T `QD Dzf drB a|Q  The storage for backup is enough SystemBackupFbzf BVf Bf|B `G|B Vf T Xr `QD V $The storage for backup is not enough SystemBackupX cB Qz f BSf Qz B`r AV czS Q Vb BS|S VYrb VzQ V^rS a|Q Tf DD btQ brD T|f ftB b|Bf JThe system is being compressed to the local disk, please wait patiently... SystemBackupQ QtD cB Vfb VzQ V^rS T`r bzf BVf QTtD AB BX aD S fb Bf| VzQ V^rS a|Q 6There may be other backups or restores being performed SystemBackupTb brf arB F Qz ftc VQz`r frB Ff ft f| ftb Vf Sf Xr brD Vb czBf `BtV V bt bzQ BTransferring image file to mobile device, about to be completed... SystemBackup:bV f|b Xr VzQ T`r bBf Unsupported symbol :  SystemBackup\bV f|b Xr VzQ T`r cf `BS Br brBf QVrVf Unsupported task type SystemBackup"bzf BVf QTtD AB backuping SystemBackup"^rV Vdzb V QB|f checking SystemBackup<atc f|c B|Xf Bdrf @r cX Vt customize path :  SystemBackup6V_| B`r bzf BVf QTtD ABfactory backup SystemBackup"czBf BtV VtD V finished SystemBackup4f BSf Qz B`r A FQ QD `Bc local default path :  SystemBackup.B frB VzQ V^rS a|Q  preparing SystemBackupHBSf f| PtV T`r frB Ff @r cX Vt removable devices path :  SystemBackupDfb Bf| VzQ brD S|b `Atc VtD V  An error occurred during restore SystemRestoreUrb c|B T Back SystemRestorePbzf BVf f ZrBf btc ftDf ft `Btb frQ Backup points may be corrupted SystemRestore*^rV Vdzb VzQ X PtV T Check failure SystemRestore2^rV Vdzb czBf `BtV VtD  Check success SystemRestorex/boot/efif Atc Br frB f|b VzQ fDf c ^rV Vdzb V QB|f 2Check the mounting mode of the /boot/efi partition SystemRestorefb Bf| VzQ T`r A|b atB Qz VD V QD XPtS XrS c ^rV Vdzb V QB|f rsync /boot/efic UX Izf VtD V Failed to rsync /boot/efi SystemRestore$ArX ZD Br d|B cz Home Page SystemRestorebD b `Uzb V`r Independent SystemRestoreB|B @Q SD Qt `GtB T`X aD S B|B Barf @r Ft ZQ Vb F 60aS _rS Tb AB PzB VzQ QB|f FMake sure the computer is plugged in or the battery level is above 60% SystemRestore"B|X fVf bzf Xb Next SystemRestored^Vf ^t`r A|Q Qt PB BE|Q VzQ T`r BOS ZrBf X bzQ ,No processing logic was found in the service SystemRestorebQz XrS cB bc P|B cf ht ZtBf V@|c Sf fb c|B `VQ *Or not, please force shutdown and restart. SystemRestorepB| brX Br _ c f|S d|b V QD  Vfb Qt ^rV Vdzb VzQ !Program lock failed, please retry SystemRestore"^rV Vdzb V QB|f Recheck SystemRestoreQTQ B^r`r arB F Qz Vf XD V XA| `Q|S V bt`r bz V a|Q.log Ezf BftDf T bzQ 6Refer to log :/var/log/backup.log for more information SystemRestore^rB Bf| Repair SystemRestoreFX cB fb Bf| VzQ Tb UX Izf VtD V Restoring the system failed SystemRestoreDf|Q XAS Br B^r BDf f|b `G|B VRetaining User Data SystemRestore4Vfb Qt ^rV Vdzb V QB|f Retry SystemRestoreVQz `GBf Security SystemRestorefVf VQz Simple SystemRestore`B| ZtBf T  Start Restore SystemRestore>X cB VQz VB DD fb Bf| VzQ T !Successfully restoring the system SystemRestoreX cB fb Bf|System Restore SystemRestore..exclude.user.txtarB F )The .exclude.user.txt file does not exist SystemRestore0.user.txt arB F BSf XzQ !The .user.txt file does not exist SystemRestorePbzf BVf f BSf @r B^r BDf Q@b FB XzQ .The backup point data directory does not exist SystemRestore`X cB bD `Btc Brf Vfb Qt `A|b f|Q VzQ frQ %The system will automatically reboot. SystemRestorerfb Bf| Vf bzf X cB bD `Btc Brf Vfb Qt P|S bt bzQ DThe system will reboot automatically after the restore is successful SystemRestoreQ QtD cB Vfb VzQ V^rS T`r bzf BVf QTtD AB BX aD S fb Bf| VzQ V^rS a|Q 6There may be other backups or restores being performed SystemRestore\bV f|b Xr VzQ T`r cf `BS Br brBf QVrVf Unsupported task type SystemRestorefAzQ Z|f X cB Qz f|S FQ @r bX T fb Bf| Vf F|B 0You can restore the system to its previous state SystemRestore"^rV Vdzb V QB|f checking SystemRestore"czBf BtV VtD V finished SystemRestorefb Bf| VzQ T  restoring SystemRestore&X cB fb Bf| VzQ Tsystem restorerestore +\ No newline at end of file +diff --git a/kybackup/resource/language/qt_zh_CN.qm b/kybackup/resource/language/qt_zh_CN.qm +index 7ada3de..c69310c 100644 +--- a/kybackup/resource/language/qt_zh_CN.qm ++++ b/kybackup/resource/language/qt_zh_CN.qm +@@ -1,35 +1,36 @@ +-2-n +--n--nQbQ5k),Y'5- I- ]=-+-+WMb(#|dI|dKM5{ c}.{R&cSS`3 ^3S'6D}*D3t3t*3tO]Y! b@ b@gl1EosU?$|b[^BZDW^$Z{D4-DRTRR)RMR_bu( 3u(u(.Ku(Qu(cBzүH|P|P8|P]N(T"qT"1T"U:# :#D:#,:#PK:#aa] c;Ӏ{Ӏ\@T<KZlKZYb{Wb{W0{b{WU@}4'II)IBIMonnL,;?W<WW$ Rg3:jT!,jTh[t!f!=((&?eV|:`{;`{VfaN@'h.0hfN )M_++dG%2G%WG%gmij ij1ij/-ijSijdbķd"69[ jju'pu-^43!.+P?,z&]3NV3N%/3N/3NS[D#|E< 7 4% % %#] %& %7p %\X %j  / T] :. :.: :.+T :.Ot :.` Ԟe Ԟe^_ ++.G9J+sJ6J6$dJ6:*PFE:PdPd$Pd8Pd]Pdl2X˙X˙ X˙2X˙WMX˙gk[mbɀEɀE2ɀEW{Fnn]^ Ge>-n -n-h-nQcLQ5k,Y'- JY- ]-+-+XXMb(|dI|dLM5 .Rd SS`p3 3S6D*tEL3t3t+]3tOw]Y!!b@ b@gl1EsU?|b_:BDX'^%ZD5+-ERRNR*@RN/R_u( fu(Lu(.u(RSu(czүH|P.|P9|P^Ne)VT"T"1jT"V.:# :#w:#,t:#P:#a] c<%ӀӀ\u@T=KZKZZ<b{Wb{W0b{WU}4ZI*I)IC<IMnnM0,;W<WW$ Sg3jT!_jTht!g*!=(('_@fV|:`{n`{VaN@h.1hfS* M_+G%3>G%WG%gij ijdij/ijSijdķe%9#6[kju'u-^43k!.e+P@G,z&3N3N%3N/3NTR[D{:|<k9k4kY^FA.0Cb ++eC }c^;^K,YcncnLZ5PIr W0$`,ehf_Anmm_2kWe1((2F5:y .Ĵ E ]?C h>E 8 4& % %# %' %7 %\ %kA  0Y T :.# :.m :.+ :.O :.` Ԟe Ԟe^ + u +- u9! +- u9 +-=T- +-,73 +-,7\ +-İ=/ +-JR +-JRG +-JRU +-h+*y +-j8g +-j8g +-j8g,r +-j8gP +-j8ga +-sB +-sX +-4L +-8"` +-$ +-l +-T - +-TR +-C +-C4 +-CY) +-i x4! x4h M?p Js%5 h*DK h*J\ zC zT `pm `p8 `p^ i )5 ) )2 )Wh )g; P т} тX 7d 7dN 1 vf  Xd Eh= a(g b c'+ h= h] m> m> m>< m>L mO m% >=j H$! H$i1 W w6 @ ^h i +- iQC H? )̍ -@m rG( rK snG\ PI @>PEOw.ha#8\k//`9:)9:)9:)&9:)1F9:)V9:)e6F^6F^[HtAdj8ps (`J,I`'I`X.@@K3#3 #3O:J!|0>u>il6 YNS]QwBackup & Restore AboutDialog[hFDialog AboutDialogYNS]Qwf/Nk>e/c|~YNSTepcnYNSv]Qw _Su(b7epcnc_WOb|~ߐmSe;QeYNj]Qwpum;vSR0YNpvr`0[VNoxlN^sS_\UNY'vOSTRe0%The backup tool is a tool that supports system backup and data backup. When the user data is damaged or the system is attacked, the tool can flexibly restore the status of the backup node. A lot of optimization and innovation have been carried out for domestic hardware and software platforms. AboutDialogrHg,version: AboutDialogbe>eNbeNY9R+_File drag and drop areaBackupListWidgetYNT y Backup NameBackupPointListDialogY'\ Backup SizeBackupPointListDialogYNe Backup TimeBackupPointListDialog[hFDialogBackupPointListDialogfeYN No BackupBackupPointListDialogYNOMnPositionBackupPointListDialogYNhUUIDBackupPointListDialog bNN*_Please select a pathBackupPositionSelectDialogmRAdd ++ u9 ++ u9 ++=T. ++,7f ++,7\ ++İ= ++JR ++JRHW ++JRU ++h+* ++j8g ++& ++j8g ++j8g, ++j8gQ ++j8gb$ ++su ++sY ++ ++4M[ ++8" ++$5 ++ld ++T ` ++TSS ++C ++C4{ ++CY ++i x4! x4i1 M? Js%6$ h*D h*J zv zUC `p `p9B `p^z jK )h ) )3 )W )g P т тYG 7dB 7dN 1 vf 0 X Eh>[ a(h3 b c', hp h^H m> m> m>=Z m>L mO m% >= H$"1 H$i W w7 @ ^ i ++ iQ H )̍S -@ rG rKs snG PJ* @?PFOw.h#8u]-l7//a99:)9:)9:)&d9:)19:)Vo9:)eF^7BF^[HtAj8s (JI`(KI`X@@L@3#3 @#3P%;MJ!|0>?Nil YNS]QwBackup & Restore AboutDialog[hFDialog AboutDialogYNS]Qwf/Nk>e/c|~YNSTepcnYNSv]Qw _Su(b7epcnc_WOb|~ߐmSe;QeYNj]Qwpum;vSR0YNpvr`0[VNoxlN^sS_\UNY'vOSTRe0%The backup tool is a tool that supports system backup and data backup. When the user data is damaged or the system is attacked, the tool can flexibly restore the status of the backup node. A lot of optimization and innovation have been carried out for domestic hardware and software platforms. AboutDialogrHg,version: AboutDialogbe>eNbeNY9R+_File drag and drop areaBackupListWidgetYNT y Backup NameBackupPointListDialogY'\ Backup SizeBackupPointListDialogYNe Backup TimeBackupPointListDialogQsCloseBackupPointListDialog[hFDialogBackupPointListDialogfeYN No BackupBackupPointListDialogYNOMnPositionBackupPointListDialogYNhUUIDBackupPointListDialog bNN*_Please select a pathBackupPositionSelectDialogmRAdd + DataBackupYNgSuAn error occurred during backup + DataBackupN + NkeBack +@@ -104,7 +105,7 @@ DataBackupYN + DataBackup + yRYremovable devices path :  + DataBackupSeSu An error occurred during restore DataRestoreN +-NkeBack DataRestore,_Ř{QHۈLepcnYN T&RelՏۈLepcnSdO\%Backed up first, then can be restored DataRestoreYNpSc_WOBackup points may be corrupted DataRestorehmKY1% Check failure DataRestorehmKbR Check success DataRestore$hg/boot/efiRS:c}e_2Check the mounting mode of the /boot/efi partition DataRestorehg`bY sXf/T&{&TlBO`oS€e_eN/var/log/backup.log6Error messages refer to log file : /var/log/backup.log DataRestoreSv_UQYY1%'Failed to prepare the restore directory DataRestoreT ke/boot/efiY1%Failed to rsync /boot/efi DataRestore_`bY  Fast Recovery DataRestoreVޙu Home Page DataRestoreN;dO\ Independent DataRestore$xnOu5]cu5nbu5ύ60%FMake sure the computer is plugged in or the battery level is above 60% DataRestoreN NkeNext DataRestorelg b~R0v^vYt;,No processing logic was found in the service DataRestorez ^[Y1% ͋!Program lock failed, please retry DataRestore QepcnN"Y1 Protect Data DataRestoreT/|~ Reboot System DataRestoreehmKRecheck DataRestore8fYO`oS€e_/var/log/backup.log6Refer to log :/var/log/backup.log for more information DataRestoreSY1%Restoring the data failed DataRestoreQNk!Retry DataRestore[QhS`Security DataRestore_YˏS Start Restore DataRestoreSbRSuccessfully restoring the data DataRestore,.exclude.user.txteNN [XW()The .exclude.user.txt file does not exist DataRestore.user.txteNN [XW(!The .user.txt file does not exist DataRestoreYNpepcnv_UN [XW(.The backup point data directory does not exist DataRestore&|~ߗT/ T&RgN]QwSelOu(AThe system needs to reboot. Otherwise, some tools cannot be used. DataRestore Sg Qv[YN/S{INRW(bgL6There may be other backups or restores being performed DataRestoreN e/cvNR|{WUnsupported task type DataRestoresXhmKchecking DataRestoreS[bfinished DataRestoreSN- restoring DataRestoreR dYNbR0Deleted backup successfully.DeleteBackupDialog[hFDialogDeleteBackupDialogR dYNY1%0Failed to delete backup.DeleteBackupDialogxn[OkDeleteBackupDialogQv[YNS{IdO\kcW(bgL/Other backup or restore task is being performedDeleteBackupDialogkcW(R depcn z P'Please wait while data is being removedDeleteBackupDialogz ^[Y1% ͋!Program lock failed, please retryDeleteBackupDialogkcW(R dYNp...Removing backup point...DeleteBackupDialogN e/cvNR|{WUnsupported task typeDeleteBackupDialogepcnYN Data BackupFuncTypeConverterepcnS Data RecoveryFuncTypeConverterGhost\P Ghost ImageFuncTypeConverterdO\e_ Log RecordsFuncTypeConverter|~YN System BackupFuncTypeConverter|~ߏSSystem RecoveryFuncTypeConverter,_Ř{QHۈLg,W0|~YN T&RelR^\PeNHA ghost image file can only be created after backup system to local disk ++NkeBack DataRestore,_Ř{QHۈLepcnYN T&RelՏۈLepcnSdO\%Backed up first, then can be restored DataRestoreYNpSc_WOBackup points may be corrupted DataRestorehmKY1% Check failure DataRestorehmKbR Check success DataRestore$hg/boot/efiRS:c}e_2Check the mounting mode of the /boot/efi partition DataRestorehg`bY sXf/T&{&TlBO`oS€e_eN/var/log/backup.log6Error messages refer to log file : /var/log/backup.log DataRestoreSv_UQYY1%'Failed to prepare the restore directory DataRestoreT ke/boot/efiY1%Failed to rsync /boot/efi DataRestore_`bY  Fast Recovery DataRestoreVޙu Home Page DataRestoreN;dO\ Independent DataRestore$xnOu5]cu5nbu5ύ60%FMake sure the computer is plugged in or the battery level is above 60% DataRestoreN NkeNext DataRestorelg b~R0v^vYt;,No processing logic was found in the service DataRestorez ^[Y1% ͋!Program lock failed, please retry DataRestore QepcnN"Y1 Protect Data DataRestoreT/|~ Reboot System DataRestoreehmKRecheck DataRestore8fYO`oS€e_/var/log/backup.log6Refer to log :/var/log/backup.log for more information DataRestoreSY1%Restoring the data failed DataRestoreQNk!Retry DataRestore[QhS`Security DataRestore_YˏS Start Restore DataRestoreSbRSuccessfully restoring the data DataRestore,.exclude.user.txteNN [XW()The .exclude.user.txt file does not exist DataRestore.user.txteNN [XW(!The .user.txt file does not exist DataRestoreYNpepcnv_UN [XW(.The backup point data directory does not exist DataRestore&|~ߗT/ T&RgN]QwSelOu(AThe system needs to reboot. Otherwise, some tools cannot be used. DataRestore Sg Qv[YN/S{INRW(bgL6There may be other backups or restores being performed DataRestoreN e/cvNR|{WUnsupported task type DataRestoresXhmKchecking DataRestoreS[bfinished DataRestoreSN- restoring DataRestoreQsCloseDeleteBackupDialogR dYNbR0Deleted backup successfully.DeleteBackupDialog[hFDialogDeleteBackupDialogR dYNY1%0Failed to delete backup.DeleteBackupDialogxn[OKDeleteBackupDialogQv[YNS{IdO\kcW(bgL/Other backup or restore task is being performedDeleteBackupDialogkcW(R depcn z P'Please wait while data is being removedDeleteBackupDialogz ^[Y1% ͋!Program lock failed, please retryDeleteBackupDialogkcW(R dYNp...Removing backup point...DeleteBackupDialogN e/cvNR|{WUnsupported task typeDeleteBackupDialogepcnYN Data BackupFuncTypeConverterepcnS Data RecoveryFuncTypeConverterGhost\P Ghost ImageFuncTypeConverterdO\e_ Log RecordsFuncTypeConverter|~YN System BackupFuncTypeConverter|~ߏSSystem RecoveryFuncTypeConverter,_Ř{QHۈLg,W0|~YN T&RelR^\PeNHA ghost image file can only be created after backup system to local disk + GhostImageR6O\Ghost\PeSu)An error occurred during make ghost image + GhostImageN + NkeBack +@@ -165,12 +166,12 @@ y + GhostImage YNS]QwBackup & RestoreLeftsiderbarWidgetQsNAbout + MainDialog YNS]QwBackup & Restore + MainDialogQsClose +-MainDialogQExit + MainDialog^.RHelp +-MainDialogN;SU Main menu + MainDialoggY'SMaximize + MainDialogg\SMinimize + MainDialogSNormal ++MainDialog yOptions ++MainDialogQQuit + MainDialogepcnYNO`oRhData Backup InformationManageBackupPointListR dDeleteManageBackupPointList|~YNO`oRhSystem Backup InformationManageBackupPointList2`SNR dN vYN fY~ƂS€ dO\e_ SYou can delete the backup that does not need, refer operation logs for more detailsManageBackupPointListYN[bbackup finishedManageBackupPointList + YNg*[bbackup unfinishedManageBackupPointListYNT y Backup Name OperationLog + edO\e_No operation log OperationLogdO\ Operation OperationLogdO\eOperation Time OperationLogYNhUUID OperationLogR dYN delete backup OperationLogR6O\ghost\Pmake ghost image OperationLog e^epcnYNnew data backup OperationLog e^|~YNnew system backup OperationLogepcnS restore data OperationLogOuYu(b7epcnSrestore retaining user data OperationLog|~ߏSrestore system OperationLog X|~YNudpate system backup OperationLog feepcnYNupdate data backup OperationLogc}YNRS:eSu05An exception occurred when mounting backup partition.QObject&QvNu(b7]_T/YNS]Qw N Q_T/=Another user had opened kybackup, you can not start it again.QObjectxn[Sm_SRMdO\'Are you sure to cancel the operation?QObjectHxn[[NI_ +@@ -178,12 +179,12 @@ e + The custom path backup file is not protected, which may cause the backup file to be lost or damagedQObjectf/T&xn[R dkdYN#Are you sure to delete the backup ?QObjectYNr` Backup StateQObjectSmCancelQObjectN ]LYWYN bQv[v_U5Cannot nest backups, please select another directory.QObject2ST+u(b7[v_U S[bTT/|~0f/T&~~eContains the user's home directory, which need to reboot after restoration. Are you sure to continue?QObject~~ContinueQObject [NIOMn + Customize:QObject + f/T&~~Do you want to continue?QObjectQSYNFactory BackupQObjectc}YNRS:Y1%0!Failed to mount backup partition.QObject YNS]Qw InformationQObject|~kc_ z {IIt's busy, please waitQObject +-g,W0xv Local Disk:QObjectyRYS bc}v_Ug,:Mobile devices can only select the mount directory itself.QObjectxn[OkQObject:Sg Tbv_UN-vepcnSN b%10 ++g,W0xv Local Disk:QObjectyRYS bc}v_Ug,:Mobile devices can only select the mount directory itself.QObjectxn[OKQObject:Sg Tbv_UN-vepcnSN b%10 + _%2N W(QvN-0\Only data that exists in the follow directorys can be selected: %1. + Path:%2 is not in them.QObject + _g:YNOther machine:QObject_]~[XW(Path already exists : QObject bNN*YNeNbv_U(Please select a backup file or directoryQObject bYNOMnPlease select backup positionQObject bNN*YNQ~~0%Please select one backup to continue.QObject4`bY QSn `v|~u(b7epcn\OmY10f/T&~~_Restore factory settings, your system user data will not be retained. Are you sure to continue?QObjecteNbv_UN [XW('The file or directory does not exist : QObject + yRY Udisk Device:QObject YNS]QwWarningQObjectQSYNfactory backupQObject YNS]QwkybackupQObject [NIOMn +-Customize:SelectRestorePointepcnYNO`oRhData Backup InformationSelectRestorePointxn[OkSelectRestorePoint ++Customize:SelectRestorePointepcnYNO`oRhData Backup InformationSelectRestorePointxn[OKSelectRestorePoint + _g:YNOther machine:SelectRestorePoint|~YNO`oRhSystem Backup InformationSelectRestorePoint + yRY Udisk Device:SelectRestorePointYNeSuAn error occurred during backup SystemBackupN + NkeBack SystemBackupYN{t >>Backup Management >> SystemBackupYNT y Backup Name SystemBackupmOBrowse SystemBackup$|~SYeNSc_bN"Y1eSNۈLS.Can be restored when files are damaged or lost SystemBackupSmCancel SystemBackuphmKY1% Check failure SystemBackuphmKbR Check success SystemBackuphmKYNOMnzzf/T&QEJCheck whether the remaining capacity of the backup partition is sufficient SystemBackuphmKyRYzzf/T&QEJCheck whether the remaining capacity of the removable device is sufficient SystemBackuphgf/T&g YNRS:)Check whether there is a backup partition SystemBackupkcW(hmK z {I...Checking, wait a moment ... SystemBackup$YNgN PZQv[dO\ N2epcnN"Y1@Do not perform other operations during backup to avoid data loss SystemBackupROu(u5 N2epcnN"Y1(Do not use computer in case of data loss SystemBackup>O`oS€e_eN/var/log/backup.log6Error messages refer to log file : /var/log/backup.log SystemBackupR^YNv_UY1%+Failed to create the backup point directory SystemBackupYNRS:c}Y1%$Failed to mount the backup partition SystemBackupVޙu Home Page SystemBackup$xnOu5]cu5nbu5ύ60%FMake sure the computer is plugged in or the battery level is above 60% SystemBackup ^]N diff --git a/debian/patches/series b/debian/patches/series index 8365469..e27c14e 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -2,3 +2,4 @@ 0002-.patch 0003-.patch 0004-.patch +0005-openkylin.patch