summaryrefslogtreecommitdiff
path: root/plugins/CopyEngine/Ultracopier/Filters.cpp
diff options
context:
space:
mode:
authorThomas Preud'homme <robotux@celest.fr>2018-02-23 23:49:48 +0000
committerThomas Preud'homme <robotux@celest.fr>2018-02-23 23:49:48 +0000
commitbd56579c7d9de94c17287adefa118290e6b7ba33 (patch)
tree666d7d0b6945b442573b7a3145969f66a53aa460 /plugins/CopyEngine/Ultracopier/Filters.cpp
parentb3c8bdcc0d1e4b2ab298847a7902b6d60410a5bc (diff)
New upstream version 1.4.0.3
Diffstat (limited to 'plugins/CopyEngine/Ultracopier/Filters.cpp')
-rw-r--r--plugins/CopyEngine/Ultracopier/Filters.cpp171
1 files changed, 87 insertions, 84 deletions
diff --git a/plugins/CopyEngine/Ultracopier/Filters.cpp b/plugins/CopyEngine/Ultracopier/Filters.cpp
index 3bb81d1..c7b1526 100644
--- a/plugins/CopyEngine/Ultracopier/Filters.cpp
+++ b/plugins/CopyEngine/Ultracopier/Filters.cpp
@@ -1,5 +1,6 @@
#include "Filters.h"
#include "ui_Filters.h"
+#include "../../../cpp11addition.h"
#include <QRegularExpression>
@@ -15,35 +16,35 @@ Filters::~Filters()
delete ui;
}
-void Filters::setFilters(QStringList includeStrings,QStringList includeOptions,QStringList excludeStrings,QStringList excludeOptions)
+void Filters::setFilters(std::vector<std::string> includeStrings,std::vector<std::string> includeOptions,std::vector<std::string> excludeStrings,std::vector<std::string> excludeOptions)
{
if(includeStrings.size()!=includeOptions.size() || excludeStrings.size()!=excludeOptions.size())
return;
Filters_rules new_item;
include.clear();
- int index=0;
- while(index<includeStrings.size())
+ unsigned int index=0;
+ while(index<(unsigned int)includeStrings.size())
{
new_item.search_text=includeStrings.at(index);
- QStringList options=includeOptions.at(index).split(QStringLiteral(";"));
+ std::vector<std::string> options=stringsplit(includeOptions.at(index),';');
new_item.need_match_all=false;
new_item.search_type=SearchType_rawText;
new_item.apply_on=ApplyOn_fileAndFolder;
- if(options.contains(QStringLiteral("SearchType_simpleRegex")))
+ if(vectorcontainsAtLeastOne(options,std::string("SearchType_simpleRegex")))
new_item.search_type=SearchType_simpleRegex;
- if(options.contains(QStringLiteral("SearchType_perlRegex")))
+ if(vectorcontainsAtLeastOne(options,std::string("SearchType_perlRegex")))
new_item.search_type=SearchType_perlRegex;
- if(options.contains(QStringLiteral("ApplyOn_file")))
+ if(vectorcontainsAtLeastOne(options,std::string("ApplyOn_file")))
new_item.apply_on=ApplyOn_file;
- if(options.contains(QStringLiteral("ApplyOn_folder")))
+ if(vectorcontainsAtLeastOne(options,std::string("ApplyOn_folder")))
new_item.apply_on=ApplyOn_folder;
- if(options.contains(QStringLiteral("need_match_all")))
+ if(vectorcontainsAtLeastOne(options,std::string("need_match_all")))
new_item.need_match_all=true;
if(convertToRegex(new_item))
- include << new_item;
+ include.push_back(new_item);
index++;
}
@@ -53,24 +54,24 @@ void Filters::setFilters(QStringList includeStrings,QStringList includeOptions,Q
while(index<excludeStrings.size())
{
new_item.search_text=excludeStrings.at(index);
- QStringList options=excludeOptions.at(index).split(QStringLiteral(";"));
+ std::vector<std::string> options=stringsplit(excludeOptions.at(index),';');
new_item.need_match_all=false;
new_item.search_type=SearchType_rawText;
new_item.apply_on=ApplyOn_fileAndFolder;
- if(options.contains(QStringLiteral("SearchType_simpleRegex")))
+ if(vectorcontainsAtLeastOne(options,std::string("SearchType_simpleRegex")))
new_item.search_type=SearchType_simpleRegex;
- if(options.contains(QStringLiteral("SearchType_perlRegex")))
+ if(vectorcontainsAtLeastOne(options,std::string("SearchType_perlRegex")))
new_item.search_type=SearchType_perlRegex;
- if(options.contains(QStringLiteral("ApplyOn_file")))
+ if(vectorcontainsAtLeastOne(options,std::string("ApplyOn_file")))
new_item.apply_on=ApplyOn_file;
- if(options.contains(QStringLiteral("ApplyOn_folder")))
+ if(vectorcontainsAtLeastOne(options,std::string("ApplyOn_folder")))
new_item.apply_on=ApplyOn_folder;
- if(options.contains(QStringLiteral("need_match_all")))
+ if(vectorcontainsAtLeastOne(options,std::string("need_match_all")))
new_item.need_match_all=true;
if(convertToRegex(new_item))
- exclude << new_item;
+ exclude.push_back(new_item);
index++;
}
@@ -81,21 +82,21 @@ void Filters::setFilters(QStringList includeStrings,QStringList includeOptions,Q
void Filters::reShowAll()
{
ui->inclusion->clear();
- int index=0;
- while(index<include.size())
+ unsigned int index=0;
+ while(index<(unsigned int)include.size())
{
- QString entryShow=include.at(index).search_text+QStringLiteral(" (");
- QStringList optionsToShow;
+ std::string entryShow=include.at(index).search_text+" (";
+ std::vector<std::string> optionsToShow;
switch(include.at(index).search_type)
{
case SearchType_rawText:
- optionsToShow << tr("Raw text");
+ optionsToShow.push_back(tr("Raw text").toStdString());
break;
case SearchType_simpleRegex:
- optionsToShow << tr("Simplified regex");
+ optionsToShow.push_back(tr("Simplified regex").toStdString());
break;
case SearchType_perlRegex:
- optionsToShow << tr("Perl's regex");
+ optionsToShow.push_back(tr("Perl's regex").toStdString());
break;
default:
break;
@@ -103,37 +104,37 @@ void Filters::reShowAll()
switch(include.at(index).apply_on)
{
case ApplyOn_file:
- optionsToShow << tr("Only on file");
+ optionsToShow.push_back(tr("Only on file").toStdString());
break;
case ApplyOn_folder:
- optionsToShow << tr("Only on folder");
+ optionsToShow.push_back(tr("Only on folder").toStdString());
break;
default:
break;
}
if(include.at(index).need_match_all)
- optionsToShow << tr("Full match");
- entryShow+=optionsToShow.join(QStringLiteral(","));
+ optionsToShow.push_back(tr("Full match").toStdString());
+ entryShow+=stringimplode(optionsToShow,",");
entryShow+=")";
- ui->inclusion->addItem(new QListWidgetItem(entryShow));
+ ui->inclusion->addItem(new QListWidgetItem(QString::fromStdString(entryShow)));
index++;
}
ui->exclusion->clear();
index=0;
- while(index<exclude.size())
+ while(index<(unsigned int)exclude.size())
{
- QString entryShow=exclude.at(index).search_text+QStringLiteral(" (");
- QStringList optionsToShow;
+ std::string entryShow=exclude.at(index).search_text+" (";
+ std::vector<std::string> optionsToShow;
switch(exclude.at(index).search_type)
{
case SearchType_rawText:
- optionsToShow << tr("Raw text");
+ optionsToShow.push_back(tr("Raw text").toStdString());
break;
case SearchType_simpleRegex:
- optionsToShow << tr("Simplified regex");
+ optionsToShow.push_back(tr("Simplified regex").toStdString());
break;
case SearchType_perlRegex:
- optionsToShow << tr("Perl's regex");
+ optionsToShow.push_back(tr("Perl's regex").toStdString());
break;
default:
break;
@@ -141,29 +142,29 @@ void Filters::reShowAll()
switch(exclude.at(index).apply_on)
{
case ApplyOn_file:
- optionsToShow << tr("Only on file");
+ optionsToShow.push_back(tr("Only on file").toStdString());
break;
case ApplyOn_folder:
- optionsToShow << tr("Only on folder");
+ optionsToShow.push_back(tr("Only on folder").toStdString());
break;
default:
break;
}
if(exclude.at(index).need_match_all)
- optionsToShow << tr("Full match");
- entryShow+=optionsToShow.join(QStringLiteral(","));
+ optionsToShow.push_back(tr("Full match").toStdString());
+ entryShow+=stringimplode(optionsToShow,",");
entryShow+=")";
- ui->exclusion->addItem(new QListWidgetItem(entryShow));
+ ui->exclusion->addItem(new QListWidgetItem(QString::fromStdString(entryShow)));
index++;
}
}
-QList<Filters_rules> Filters::getInclude() const
+std::vector<Filters_rules> Filters::getInclude() const
{
return include;
}
-QList<Filters_rules> Filters::getExclude() const
+std::vector<Filters_rules> Filters::getExclude() const
{
return exclude;
}
@@ -176,23 +177,23 @@ void Filters::newLanguageLoaded()
void Filters::updateFilters()
{
- QStringList includeStrings,includeOptions,excludeStrings,excludeOptions;
- int index=0;
- while(index<include.size())
+ std::vector<std::string> includeStrings,includeOptions,excludeStrings,excludeOptions;
+ unsigned int index=0;
+ while(index<(unsigned int)include.size())
{
- includeStrings<<include.at(index).search_text;
- QStringList optionsToShow;
+ includeStrings.push_back(include.at(index).search_text);
+ std::vector<std::string> optionsToShow;
switch(include.at(index).search_type)
{
case SearchType_rawText:
- optionsToShow << QStringLiteral("SearchType_rawText");
+ optionsToShow.push_back("SearchType_rawText");
break;
case SearchType_simpleRegex:
- optionsToShow << QStringLiteral("SearchType_simpleRegex");
+ optionsToShow.push_back("SearchType_simpleRegex");
break;
case SearchType_perlRegex:
- optionsToShow << QStringLiteral("SearchType_perlRegex");
+ optionsToShow.push_back("SearchType_perlRegex");
break;
default:
break;
@@ -200,38 +201,38 @@ void Filters::updateFilters()
switch(include.at(index).apply_on)
{
case ApplyOn_file:
- optionsToShow << QStringLiteral("ApplyOn_file");
+ optionsToShow.push_back("ApplyOn_file");
break;
case ApplyOn_fileAndFolder:
- optionsToShow << QStringLiteral("ApplyOn_fileAndFolder");
+ optionsToShow.push_back("ApplyOn_fileAndFolder");
break;
case ApplyOn_folder:
- optionsToShow << QStringLiteral("ApplyOn_folder");
+ optionsToShow.push_back("ApplyOn_folder");
break;
default:
break;
}
if(include.at(index).need_match_all)
- optionsToShow << tr("Full match");
- includeOptions<<optionsToShow.join(QStringLiteral(";"));
+ optionsToShow.push_back(tr("Full match").toStdString());
+ includeOptions.push_back(stringimplode(optionsToShow,";"));
index++;
}
index=0;
- while(index<exclude.size())
+ while(index<(unsigned int)exclude.size())
{
- excludeStrings<<exclude.at(index).search_text;
- QStringList optionsToShow;
+ excludeStrings.push_back(exclude.at(index).search_text);
+ std::vector<std::string> optionsToShow;
switch(exclude.at(index).search_type)
{
case SearchType_rawText:
- optionsToShow << QStringLiteral("SearchType_rawText");
+ optionsToShow.push_back("SearchType_rawText");
break;
case SearchType_simpleRegex:
- optionsToShow << QStringLiteral("SearchType_simpleRegex");
+ optionsToShow.push_back("SearchType_simpleRegex");
break;
case SearchType_perlRegex:
- optionsToShow << QStringLiteral("SearchType_perlRegex");
+ optionsToShow.push_back("SearchType_perlRegex");
break;
default:
break;
@@ -239,20 +240,20 @@ void Filters::updateFilters()
switch(exclude.at(index).apply_on)
{
case ApplyOn_file:
- optionsToShow << QStringLiteral("ApplyOn_file");
+ optionsToShow.push_back("ApplyOn_file");
break;
case ApplyOn_fileAndFolder:
- optionsToShow << QStringLiteral("ApplyOn_fileAndFolder");
+ optionsToShow.push_back("ApplyOn_fileAndFolder");
break;
case ApplyOn_folder:
- optionsToShow << QStringLiteral("ApplyOn_folder");
+ optionsToShow.push_back("ApplyOn_folder");
break;
default:
break;
}
if(exclude.at(index).need_match_all)
- optionsToShow << tr("Full match");
- excludeOptions<<optionsToShow.join(QStringLiteral(";"));
+ optionsToShow.push_back(tr("Full match").toStdString());
+ excludeOptions.push_back(stringimplode(optionsToShow,";"));
index++;
}
emit sendNewFilters(includeStrings,includeOptions,excludeStrings,excludeOptions);
@@ -261,38 +262,40 @@ void Filters::updateFilters()
bool Filters::convertToRegex(Filters_rules &item)
{
- bool isValid=!item.search_text.isEmpty();
+ bool isValid=!item.search_text.empty();
if(isValid)
{
- QRegularExpression regex;
- QString tempString;
+ std::regex regex;
+ std::string tempString;
if(item.search_type==SearchType_rawText)
{
- tempString=QRegularExpression::escape(item.search_text);
- if(tempString.contains('/') || tempString.contains('\\'))
+ tempString=QRegularExpression::escape(QString::fromStdString(item.search_text)).toStdString();
+ if(tempString.find('/') != std::string::npos || tempString.find('\\') != std::string::npos)
isValid=false;
}
else if(item.search_type==SearchType_simpleRegex)
{
- tempString=QRegularExpression::escape(item.search_text);
- tempString.replace(QStringLiteral("\\*"),QStringLiteral("[^\\\\/]*"));
+ tempString=QRegularExpression::escape(QString::fromStdString(item.search_text)).toStdString();
+ stringreplaceAll(tempString,"\\*","[^\\\\/]*");
}
else if(item.search_type==SearchType_perlRegex)
{
tempString=item.search_text;
- if(tempString.startsWith('^') && tempString.endsWith('$'))
+ if(stringStartWith(tempString,'^') && stringEndsWith(tempString,'$'))
{
item.need_match_all=true;
- tempString.remove(QRegularExpression("^\\^"));
- tempString.remove(QRegularExpression("\\$$"));
+ if(stringStartWith(tempString,'^'))
+ tempString=tempString.substr(1,tempString.size()-1);
+ if(stringEndsWith(tempString,'$'))
+ tempString=tempString.substr(0,tempString.size()-1);
item.search_text=tempString;
}
}
if(isValid)
{
if(item.need_match_all==true)
- tempString=QStringLiteral("^")+tempString+QStringLiteral("$");
- regex=QRegularExpression(tempString);
+ tempString="^"+tempString+"$";
+ regex=std::regex(tempString);
//isValid=regex.isValid();
item.regex=regex;
return true;
@@ -312,7 +315,7 @@ void Filters::on_remove_exclusion_clicked()
if(ui->exclusion->item(index)->isSelected())
{
delete ui->exclusion->item(index);
- exclude.removeAt(index);
+ exclude.erase(exclude.cbegin()+index);
removedEntry=true;
}
else
@@ -334,7 +337,7 @@ void Filters::on_remove_inclusion_clicked()
if(ui->inclusion->item(index)->isSelected())
{
delete ui->inclusion->item(index);
- include.removeAt(index);
+ include.erase(include.cbegin()+index);
removedEntry=true;
}
else
@@ -358,7 +361,7 @@ void Filters::on_add_exclusion_clicked()
new_item.need_match_all=dialog.get_need_match_all();
new_item.search_text=dialog.get_search_text();
new_item.search_type=dialog.get_search_type();
- exclude << new_item;
+ exclude.push_back(new_item);
reShowAll();
updateFilters();
}
@@ -382,7 +385,7 @@ void Filters::on_add_inclusion_clicked()
new_item.search_text=dialog.get_search_text();
new_item.search_type=dialog.get_search_type();
if(convertToRegex(new_item))
- include << new_item;
+ include.push_back(new_item);
reShowAll();
updateFilters();
}
@@ -409,7 +412,7 @@ void Filters::on_edit_exclusion_clicked()
exclude[index].search_text=dialog.get_search_text();
exclude[index].search_type=dialog.get_search_type();
if(!convertToRegex(exclude[index]))
- exclude.removeAt(index);
+ exclude.erase(exclude.cbegin()+index);
editedEntry=true;
}
}
@@ -443,7 +446,7 @@ void Filters::on_edit_inclusion_clicked()
exclude[index].search_text=dialog.get_search_text();
exclude[index].search_type=dialog.get_search_type();
if(!convertToRegex(exclude[index]))
- exclude.removeAt(index);
+ exclude.erase(exclude.cbegin()+index);
editedEntry=true;
}
}