mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-10-11 04:58:31 -04:00
extract syntax checking methods as static methods to the Autotype class
This commit is contained in:
parent
2bf68b7970
commit
70127bad4b
3 changed files with 51 additions and 62 deletions
|
@ -692,3 +692,43 @@ bool AutoType::windowMatchesUrl(const QString& windowTitle, const QString& resol
|
|||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool AutoType::checkSynatx(const QString &string)
|
||||
{
|
||||
//checks things like {word 23}{F1 23}{~ 23}{% 23}{^}{F12}{(}{) 23}{[}{[}{]}{Delay=23}{+}{-}~+%@fixedstring
|
||||
QString allowRepetition = "(\\s[0-9]*){0,1}";
|
||||
QString normalCommands = "[A-Z]*" + allowRepetition;
|
||||
QString specialLiterals = "[\\^\\%\\(\\)~\\{\\}\\[\\]\\+-]" + allowRepetition;
|
||||
QString functionKeys = "(F[1-9]" + allowRepetition + "|F1[0-2])" + allowRepetition;
|
||||
QString numpad = "NUMPAD[0-9]" + allowRepetition;
|
||||
QString delay = "DELAY=[0-9]+";
|
||||
QString beep = "BEEP\\s[0-9]*\\s[0-9]*";
|
||||
QString vkey = "VKEY(-[EN]X){0,1}" + allowRepetition;
|
||||
|
||||
//these arent in parenthesis
|
||||
QString shortcutKeys = "[\\^\\%~\\+@]";
|
||||
QString fixedStrings = "[^\\^\\%~\\+@\\{\\}]*";
|
||||
|
||||
QRegExp autoTypeSyntax
|
||||
("(" + shortcutKeys + "|" + fixedStrings + "|\\{(" + normalCommands + "|" + specialLiterals + "|"
|
||||
+ functionKeys
|
||||
+ "|" + numpad + "|" + delay + "|" + beep + "|" + vkey + ")\\})*");
|
||||
autoTypeSyntax.setCaseSensitivity(Qt::CaseInsensitive);
|
||||
autoTypeSyntax.setPatternSyntax(QRegExp::RegExp);
|
||||
return autoTypeSyntax.exactMatch(string);
|
||||
}
|
||||
|
||||
bool AutoType::checkHighDelay(const QString &string)
|
||||
{
|
||||
QRegExp highDelay(".*\\{Delay\\s[0-9]{5,}\\}.*"); //the 3 means 3 digitnumbers are too much
|
||||
highDelay.setCaseSensitivity(Qt::CaseInsensitive);
|
||||
highDelay.setPatternSyntax(QRegExp::RegExp);
|
||||
return highDelay.exactMatch(string);
|
||||
}
|
||||
|
||||
bool AutoType::checkHighRepetition(const QString &string)
|
||||
{
|
||||
QRegExp highRepetition(".*\\s[0-9]{3,}.*");
|
||||
highRepetition.setPatternSyntax(QRegExp::RegExp);
|
||||
return highRepetition.exactMatch(string);
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ class AutoType : public QObject
|
|||
{
|
||||
Q_OBJECT
|
||||
|
||||
|
||||
public:
|
||||
QStringList windowTitles();
|
||||
void performAutoType(const Entry* entry, QWidget* hideWindow = nullptr,
|
||||
|
@ -41,6 +42,9 @@ public:
|
|||
bool registerGlobalShortcut(Qt::Key key, Qt::KeyboardModifiers modifiers);
|
||||
void unregisterGlobalShortcut();
|
||||
int callEventFilter(void* event);
|
||||
static bool checkSynatx(const QString &string);
|
||||
static bool checkHighRepetition(const QString &string);
|
||||
static bool checkHighDelay(const QString &string);
|
||||
|
||||
inline bool isAvailable() {
|
||||
return m_plugin;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue