mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-02-02 09:55:55 +00:00
- Validate label names to make sure there is no character forbidden by the file system
This commit is contained in:
parent
2b289655c1
commit
037e57b687
14
src/misc.h
14
src/misc.h
@ -183,6 +183,20 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
static QString toValidFileSystemName(QString filename) {
|
||||
filename = filename.replace("\\", "/");
|
||||
QRegExp regex("[/:!?\"*<>|]");
|
||||
return filename.replace(regex, " ");
|
||||
}
|
||||
|
||||
static bool isValidFileSystemName(QString filename) {
|
||||
filename = filename.replace("\\", "/");
|
||||
QRegExp regex("[/:!?\"*<>|]");
|
||||
if(filename.contains(regex))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef Q_WS_MAC
|
||||
static QString getFullPath(const FSRef &ref)
|
||||
{
|
||||
|
@ -424,6 +424,10 @@ public slots:
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (!misc::isValidFileSystemName(comboLabel->currentText().trimmed())) {
|
||||
QMessageBox::warning(this, tr("Invalid label name"), tr("Please don't use any special characters in the label name."));
|
||||
return;
|
||||
}
|
||||
// Save savepath
|
||||
TorrentTempData::setSavePath(hash, savePath.path());
|
||||
qDebug("Torrent label is: %s", comboLabel->currentText().trimmed().toLocal8Bit().data());
|
||||
|
@ -41,6 +41,7 @@
|
||||
#include <QInputDialog>
|
||||
#include <QDragMoveEvent>
|
||||
#include <QStandardItemModel>
|
||||
#include <QMessageBox>
|
||||
|
||||
#include "transferlistdelegate.h"
|
||||
#include "transferlistwidget.h"
|
||||
@ -244,8 +245,8 @@ protected slots:
|
||||
}
|
||||
|
||||
void addLabel(QString label) {
|
||||
if(label.trimmed().isEmpty()) return;
|
||||
if(customLabels.contains(label)) return;
|
||||
label = misc::toValidFileSystemName(label.trimmed());
|
||||
if(label.isEmpty() || customLabels.contains(label)) return;
|
||||
QListWidgetItem *newLabel = new QListWidgetItem(labelFilters);
|
||||
newLabel->setText(label + " (0)");
|
||||
newLabel->setData(Qt::DecorationRole, QIcon(":/Icons/oxygen/folder.png"));
|
||||
@ -269,10 +270,20 @@ protected slots:
|
||||
}
|
||||
if(act == addAct) {
|
||||
bool ok;
|
||||
QString label = QInputDialog::getText(this, tr("New Label"), tr("Label:"), QLineEdit::Normal, "", &ok);
|
||||
if (ok && !label.isEmpty()) {
|
||||
addLabel(label);
|
||||
}
|
||||
QString label = "";
|
||||
bool invalid;
|
||||
do {
|
||||
invalid = false;
|
||||
label = QInputDialog::getText(this, tr("New Label"), tr("Label:"), QLineEdit::Normal, label, &ok);
|
||||
if (ok && !label.isEmpty()) {
|
||||
if(misc::isValidFileSystemName(label)) {
|
||||
addLabel(label);
|
||||
} else {
|
||||
QMessageBox::warning(this, tr("Invalid label name"), tr("Please don't use any special characters in the label name."));
|
||||
invalid = true;
|
||||
}
|
||||
}
|
||||
}while(invalid);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -868,11 +868,20 @@ void TransferListWidget::toggleSelectedFirstLastPiecePrio() {
|
||||
void TransferListWidget::askNewLabelForSelection() {
|
||||
// Ask for label
|
||||
bool ok;
|
||||
QString label = QInputDialog::getText(this, tr("New Label"), tr("Label:"), QLineEdit::Normal, "", &ok);
|
||||
if (ok && !label.isEmpty()) {
|
||||
// Assign label to selection
|
||||
setSelectionLabel(label);
|
||||
}
|
||||
QString label = "";
|
||||
bool invalid;
|
||||
do {
|
||||
invalid = false;
|
||||
label = QInputDialog::getText(this, tr("New Label"), tr("Label:"), QLineEdit::Normal, label, &ok);
|
||||
if (ok && !label.isEmpty()) {
|
||||
if(misc::isValidFileSystemName(label)) {
|
||||
setSelectionLabel(label);
|
||||
} else {
|
||||
QMessageBox::warning(this, tr("Invalid label name"), tr("Please don't use any special characters in the label name."));
|
||||
invalid = true;
|
||||
}
|
||||
}
|
||||
}while(invalid);
|
||||
}
|
||||
|
||||
void TransferListWidget::renameSelectedTorrent() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user