Fix filename validity check

This commit is contained in:
ArsenArsen 2017-07-05 12:36:44 +02:00
parent 38d8226204
commit 6c5dff0be6
3 changed files with 19 additions and 2 deletions

View File

@ -28,8 +28,8 @@ private slots:
void on_actionSettings_triggered();
void on_actionColor_Picker_triggered();
void on_actionAbout_triggered();
void on_actionActive_window_triggered();
void on_actionAbort_triggered();
public:
static MainWindow *inst();

View File

@ -84,6 +84,7 @@
</property>
<addaction name="actionStart"/>
<addaction name="actionStop"/>
<addaction name="actionAbort"/>
</widget>
<addaction name="menuFile"/>
<addaction name="menuScreenshot"/>
@ -136,6 +137,11 @@
<string>Active window</string>
</property>
</action>
<action name="actionAbort">
<property name="text">
<string>Abort</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>

View File

@ -29,6 +29,17 @@ WId PlatformBackend::getActiveWID() {
return (WId)GetForegroundWindow();
}
QString illegal(QStringLiteral("<>:\"/\|?*"));
QStringList illegalNames({ "CON", "PRN", "AUX", "NUL", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7",
"COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9" });
bool PlatformBackend::filenamValid(QString name) {
return IsValidFileName(name.toLocal8Bit().constData()) == 0;
unsigned int periods = 0;
for (QChar c : name) {
if (c == '.') periods++;
if (illegal.contains(c)) return false;
if (c < 32) return false;
}
if (periods == name.length()) return false;
return !illegalNames.contains(name);
}