122508 【备份还原】备份名称限制中文、英文均为65位,且无超出长度的提示
This commit is contained in:
parent
a936536f5a
commit
4818e461d4
|
@ -0,0 +1,26 @@
|
||||||
|
#include "inputvalidator.h"
|
||||||
|
|
||||||
|
InputValidator::InputValidator(const QRegExp &rx, QObject *parent) :
|
||||||
|
QRegExpValidator(rx, parent)
|
||||||
|
{}
|
||||||
|
|
||||||
|
InputValidator::~InputValidator()
|
||||||
|
{}
|
||||||
|
|
||||||
|
QValidator::State InputValidator::validate(QString &input, int &pos) const
|
||||||
|
{
|
||||||
|
QString in = input;
|
||||||
|
int index = pos;
|
||||||
|
|
||||||
|
State state = QRegExpValidator::validate(in, index);
|
||||||
|
|
||||||
|
QChar c;
|
||||||
|
if (!in.isEmpty())
|
||||||
|
c = in.at(index - 1);
|
||||||
|
if (State::Acceptable == state)
|
||||||
|
emit checked(true, in, index, c);
|
||||||
|
else
|
||||||
|
emit checked(false, in, index, c);
|
||||||
|
|
||||||
|
return state;
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
#ifndef INPUTVALIDATOR_H
|
||||||
|
#define INPUTVALIDATOR_H
|
||||||
|
|
||||||
|
#include <QRegExpValidator>
|
||||||
|
|
||||||
|
class InputValidator : public QRegExpValidator
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
InputValidator(const QRegExp &rx, QObject *parent = nullptr);
|
||||||
|
virtual ~InputValidator();
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual QValidator::State validate(QString &input, int &pos) const override;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void checked(bool valid, QString input, int pos, QChar c) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // INPUTVALIDATOR_H
|
|
@ -46,6 +46,7 @@ HEADERS += \
|
||||||
component/filefilterproxymodelforbackup.h \
|
component/filefilterproxymodelforbackup.h \
|
||||||
component/hoverwidget.h \
|
component/hoverwidget.h \
|
||||||
component/imageutil.h \
|
component/imageutil.h \
|
||||||
|
component/inputvalidator.h \
|
||||||
component/linelabel.h \
|
component/linelabel.h \
|
||||||
component/mycheckbox.h \
|
component/mycheckbox.h \
|
||||||
component/myfileselect.h \
|
component/myfileselect.h \
|
||||||
|
@ -95,6 +96,7 @@ SOURCES += \
|
||||||
component/filefilterproxymodelforbackup.cpp \
|
component/filefilterproxymodelforbackup.cpp \
|
||||||
component/hoverwidget.cpp \
|
component/hoverwidget.cpp \
|
||||||
component/imageutil.cpp \
|
component/imageutil.cpp \
|
||||||
|
component/inputvalidator.cpp \
|
||||||
component/linelabel.cpp \
|
component/linelabel.cpp \
|
||||||
component/mycheckbox.cpp \
|
component/mycheckbox.cpp \
|
||||||
component/myfileselect.cpp \
|
component/myfileselect.cpp \
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include "../component/myfileselect.h"
|
#include "../component/myfileselect.h"
|
||||||
#include "../component/pixmaplabel.h"
|
#include "../component/pixmaplabel.h"
|
||||||
#include "../component/pixmapbutton.h"
|
#include "../component/pixmapbutton.h"
|
||||||
|
#include "../component/inputvalidator.h"
|
||||||
#include "../../common/utils.h"
|
#include "../../common/utils.h"
|
||||||
#include "../globalbackupinfo.h"
|
#include "../globalbackupinfo.h"
|
||||||
#include "managebackuppointlist.h"
|
#include "managebackuppointlist.h"
|
||||||
|
@ -1174,6 +1175,7 @@ void DataBackup::on_checkEnv_end(int result)
|
||||||
/**
|
/**
|
||||||
* @brief 初始化第四个页面
|
* @brief 初始化第四个页面
|
||||||
*/
|
*/
|
||||||
|
#define MAX_LEN_BACKUPNAME 64
|
||||||
void DataBackup::initForthWidget()
|
void DataBackup::initForthWidget()
|
||||||
{
|
{
|
||||||
QWidget *forth = new QWidget;
|
QWidget *forth = new QWidget;
|
||||||
|
@ -1240,7 +1242,7 @@ void DataBackup::initForthWidget()
|
||||||
MyLineEdit *editBackupName = new MyLineEdit(forth);
|
MyLineEdit *editBackupName = new MyLineEdit(forth);
|
||||||
editBackupName->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
|
editBackupName->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
|
||||||
editBackupName->setMinimumWidth(350);
|
editBackupName->setMinimumWidth(350);
|
||||||
editBackupName->setMaxLength(64);
|
editBackupName->setMaxLength(MAX_LEN_BACKUPNAME);
|
||||||
if (m_backupName.isEmpty())
|
if (m_backupName.isEmpty())
|
||||||
editBackupName->setPlaceholderText(QDateTime::currentDateTime().toString("yy-MM-dd hh:mm:ss"));
|
editBackupName->setPlaceholderText(QDateTime::currentDateTime().toString("yy-MM-dd hh:mm:ss"));
|
||||||
else {
|
else {
|
||||||
|
@ -1248,8 +1250,8 @@ void DataBackup::initForthWidget()
|
||||||
}
|
}
|
||||||
// 支持输入中英文数字和部分字符
|
// 支持输入中英文数字和部分字符
|
||||||
// QRegExp regx("^[\u4e00-\u9fa5a-zA-Z0-9~!@#$%^&*()-_+={}':;'\\[\\].<>/? ¥()——;《》‘’:“”、?]+$"); //其中匹配中文[\u4e00-\u9fa5]
|
// QRegExp regx("^[\u4e00-\u9fa5a-zA-Z0-9~!@#$%^&*()-_+={}':;'\\[\\].<>/? ¥()——;《》‘’:“”、?]+$"); //其中匹配中文[\u4e00-\u9fa5]
|
||||||
QRegExp regx("^[\u4e00-\u9fa5a-zA-Z0-9-@& +():'()——《》‘’:“”]*$");
|
QRegExp regx("[^<>,; `|#\\^\\$]+");//regx("^[\u4e00-\u9fa5a-zA-Z0-9-@& +():'()——《》‘’:“”]*$");
|
||||||
QValidator *validator = new QRegExpValidator(regx);
|
InputValidator *validator = new InputValidator(regx);
|
||||||
editBackupName->setValidator(validator);
|
editBackupName->setValidator(validator);
|
||||||
labelBackupName->setFixedHeight(editBackupName->height());
|
labelBackupName->setFixedHeight(editBackupName->height());
|
||||||
|
|
||||||
|
@ -1279,15 +1281,34 @@ void DataBackup::initForthWidget()
|
||||||
// hlayoutCenterLine2->setAlignment(Qt::AlignCenter);
|
// hlayoutCenterLine2->setAlignment(Qt::AlignCenter);
|
||||||
// vlayout->addLayout(hlayoutCenterLine2);
|
// vlayout->addLayout(hlayoutCenterLine2);
|
||||||
|
|
||||||
|
connect(validator, &InputValidator::checked, this, [=](bool valid, QString in, int pos, QChar c) {
|
||||||
|
QString text = editBackupName->text();
|
||||||
|
if (valid) {
|
||||||
|
if (pos >= MAX_LEN_BACKUPNAME) {
|
||||||
|
labelError->setDeplayText(tr("Maximum length reached"));
|
||||||
|
labelError->setVisible(true);
|
||||||
|
labelError->move(editBackupName->geometry().left(), editBackupName->geometry().bottom() + 10);
|
||||||
|
} else if (text == in) {
|
||||||
|
labelError->setVisible(false);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
labelError->setDeplayText(tr("Unsupported symbol : ") + c);
|
||||||
|
labelError->setVisible(true);
|
||||||
|
labelError->move(editBackupName->geometry().left(), editBackupName->geometry().bottom() + 10);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
connect(editBackupName, &MyLineEdit::textChanged, this, [=](const QString &text) {
|
connect(editBackupName, &MyLineEdit::textChanged, this, [=](const QString &text) {
|
||||||
if (!text.isEmpty() && text != this->m_backupName && this->isExistsBackupName(text)) {
|
if (!text.isEmpty() && text != this->m_backupName && this->isExistsBackupName(text)) {
|
||||||
labelError->setDeplayText(tr("Name already exists"));
|
labelError->setDeplayText(tr("Name already exists"));
|
||||||
labelError->setVisible(true);
|
labelError->setVisible(true);
|
||||||
|
|
||||||
labelError->move(editBackupName->geometry().left(), editBackupName->geometry().bottom() + 10);
|
labelError->move(editBackupName->geometry().left(), editBackupName->geometry().bottom() + 10);
|
||||||
} else {
|
} else if (text.isEmpty()) {
|
||||||
labelError->setDeplayText("");
|
labelError->setDeplayText("");
|
||||||
labelError->setVisible(false);
|
labelError->setVisible(false);
|
||||||
|
} else {
|
||||||
|
// 这里面的情况包含在了上面的InputValidator::checked信号处理逻辑中
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
connect(this, &DataBackup::clearBackupName, this, [=]() {
|
connect(this, &DataBackup::clearBackupName, this, [=]() {
|
||||||
|
|
|
@ -140,6 +140,7 @@ void GhostImage::initFirstWidget()
|
||||||
this->m_backupName = "";
|
this->m_backupName = "";
|
||||||
|
|
||||||
SelectRestorePoint * selectDialog = new SelectRestorePoint(this, SelectRestorePoint::SYSTEM, true);
|
SelectRestorePoint * selectDialog = new SelectRestorePoint(this, SelectRestorePoint::SYSTEM, true);
|
||||||
|
selectDialog->setNeedConfirm(false);
|
||||||
connect(selectDialog, &SelectRestorePoint::selected, this, [=](ParseBackupList::BackupPoint backupPoint){
|
connect(selectDialog, &SelectRestorePoint::selected, this, [=](ParseBackupList::BackupPoint backupPoint){
|
||||||
this->m_uuid = backupPoint.m_uuid;
|
this->m_uuid = backupPoint.m_uuid;
|
||||||
this->m_backupName = backupPoint.m_backupName;
|
this->m_backupName = backupPoint.m_backupName;
|
||||||
|
|
|
@ -52,7 +52,7 @@ SelectRestorePoint::SelectRestorePoint(QWidget *parent, BackupPointType backupTy
|
||||||
}
|
}
|
||||||
|
|
||||||
// 还原相应备份点
|
// 还原相应备份点
|
||||||
if (MessageBoxUtils::QMESSAGE_BOX_WARNING_CANCEL(this, QObject::tr("Information"), QObject::tr("Do you want to continue?"), QObject::tr("Continue"), QObject::tr("Cancel"))) {
|
if (!this->m_needConfirm || MessageBoxUtils::QMESSAGE_BOX_WARNING_CANCEL(this, QObject::tr("Information"), QObject::tr("Do you want to continue?"), QObject::tr("Continue"), QObject::tr("Cancel"))) {
|
||||||
int curRow = this->m_tableWidget->currentRow();
|
int curRow = this->m_tableWidget->currentRow();
|
||||||
ParseBackupList::BackupPoint backupPoint;
|
ParseBackupList::BackupPoint backupPoint;
|
||||||
backupPoint.m_backupName = this->text(curRow, Column_Index::Backup_Name);
|
backupPoint.m_backupName = this->text(curRow, Column_Index::Backup_Name);
|
||||||
|
|
|
@ -15,6 +15,10 @@ public:
|
||||||
explicit SelectRestorePoint(QWidget *parent = nullptr, BackupPointType backupType = BackupPointType::SYSTEM, bool isOnlyShowLocal = false);
|
explicit SelectRestorePoint(QWidget *parent = nullptr, BackupPointType backupType = BackupPointType::SYSTEM, bool isOnlyShowLocal = false);
|
||||||
virtual ~SelectRestorePoint();
|
virtual ~SelectRestorePoint();
|
||||||
|
|
||||||
|
void setNeedConfirm(bool needConfirm) {
|
||||||
|
m_needConfirm = needConfirm;
|
||||||
|
}
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void initTableWidget();
|
void initTableWidget();
|
||||||
|
|
||||||
|
@ -23,6 +27,7 @@ private:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BackupPointType m_backupType;
|
BackupPointType m_backupType;
|
||||||
|
bool m_needConfirm = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SELECTRESTOREPOINT_H
|
#endif // SELECTRESTOREPOINT_H
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "../component/linelabel.h"
|
#include "../component/linelabel.h"
|
||||||
#include "../component/ringsprogressbar.h"
|
#include "../component/ringsprogressbar.h"
|
||||||
#include "../component/pixmaplabel.h"
|
#include "../component/pixmaplabel.h"
|
||||||
|
#include "../component/inputvalidator.h"
|
||||||
#include "../../common/utils.h"
|
#include "../../common/utils.h"
|
||||||
#include "../globalbackupinfo.h"
|
#include "../globalbackupinfo.h"
|
||||||
#include "../gsettingswrapper.h"
|
#include "../gsettingswrapper.h"
|
||||||
|
@ -720,6 +721,7 @@ void SystemBackup::on_checkEnv_end(int result)
|
||||||
/**
|
/**
|
||||||
* @brief 初始化第四个页面
|
* @brief 初始化第四个页面
|
||||||
*/
|
*/
|
||||||
|
#define MAX_LEN_BACKUPNAME 64
|
||||||
void SystemBackup::initForthWidget()
|
void SystemBackup::initForthWidget()
|
||||||
{
|
{
|
||||||
QWidget *forth = new QWidget;
|
QWidget *forth = new QWidget;
|
||||||
|
@ -790,8 +792,8 @@ void SystemBackup::initForthWidget()
|
||||||
editBackupName->setPlaceholderText(QDateTime::currentDateTime().toString("yy-MM-dd hh:mm:ss"));
|
editBackupName->setPlaceholderText(QDateTime::currentDateTime().toString("yy-MM-dd hh:mm:ss"));
|
||||||
// 支持输入中英文数字和部分字符
|
// 支持输入中英文数字和部分字符
|
||||||
// QRegExp regx("^[\u4e00-\u9fa5a-zA-Z0-9~!@#$%^&*()-_+={}':;'\\[\\].<>/? ¥()——;《》‘’:“”、?]+$"); //其中匹配中文[\u4e00-\u9fa5]
|
// QRegExp regx("^[\u4e00-\u9fa5a-zA-Z0-9~!@#$%^&*()-_+={}':;'\\[\\].<>/? ¥()——;《》‘’:“”、?]+$"); //其中匹配中文[\u4e00-\u9fa5]
|
||||||
QRegExp regx("^[\u4e00-\u9fa5a-zA-Z0-9-@& +():'()——《》‘’:“”]*$");
|
QRegExp regx("[^<>,; `|#\\^\\$]+");//regx("^[\u4e00-\u9fa5a-zA-Z0-9-@& +():'()——《》‘’:“”]*$");
|
||||||
QValidator *validator = new QRegExpValidator(regx);
|
InputValidator *validator = new InputValidator(regx);
|
||||||
editBackupName->setValidator(validator);
|
editBackupName->setValidator(validator);
|
||||||
labelBackupName->setFixedHeight(editBackupName->height());
|
labelBackupName->setFixedHeight(editBackupName->height());
|
||||||
|
|
||||||
|
@ -810,15 +812,35 @@ void SystemBackup::initForthWidget()
|
||||||
labelError->setFontColor(Qt::red);
|
labelError->setFontColor(Qt::red);
|
||||||
labelError->setVisible(false);
|
labelError->setVisible(false);
|
||||||
labelError->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
|
labelError->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
|
||||||
|
|
||||||
|
connect(validator, &InputValidator::checked, this, [=](bool valid, QString in, int pos, QChar c) {
|
||||||
|
QString text = editBackupName->text();
|
||||||
|
if (valid) {
|
||||||
|
if (pos >= MAX_LEN_BACKUPNAME) {
|
||||||
|
labelError->setDeplayText(tr("Maximum length reached"));
|
||||||
|
labelError->setVisible(true);
|
||||||
|
labelError->move(editBackupName->geometry().left(), editBackupName->geometry().bottom() + 10);
|
||||||
|
} else if (text == in) {
|
||||||
|
labelError->setVisible(false);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
labelError->setDeplayText(tr("Unsupported symbol : ") + c);
|
||||||
|
labelError->setVisible(true);
|
||||||
|
labelError->move(editBackupName->geometry().left(), editBackupName->geometry().bottom() + 10);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
connect(editBackupName, &MyLineEdit::textChanged, this, [=](const QString &text) {
|
connect(editBackupName, &MyLineEdit::textChanged, this, [=](const QString &text) {
|
||||||
if (!text.isEmpty() && this->isExistsBackupName(text)) {
|
if (!text.isEmpty() && this->isExistsBackupName(text)) {
|
||||||
labelError->setDeplayText(tr("Name already exists"));
|
labelError->setDeplayText(tr("Name already exists"));
|
||||||
labelError->setVisible(true);
|
labelError->setVisible(true);
|
||||||
|
|
||||||
labelError->move(editBackupName->geometry().left(), editBackupName->geometry().bottom() + 10);
|
labelError->move(editBackupName->geometry().left(), editBackupName->geometry().bottom() + 10);
|
||||||
} else {
|
} else if (text.isEmpty()) {
|
||||||
labelError->setDeplayText("");
|
labelError->setDeplayText("");
|
||||||
labelError->setVisible(false);
|
labelError->setVisible(false);
|
||||||
|
} else {
|
||||||
|
// 这里面的情况包含在了上面的InputValidator::checked信号处理逻辑中
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
connect(this, &SystemBackup::clearBackupName, this, [=]() {
|
connect(this, &SystemBackup::clearBackupName, this, [=]() {
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue