diff options
Diffstat (limited to 'plugins/CopyEngine/Ultracopier-0.3')
61 files changed, 12606 insertions, 2823 deletions
diff --git a/plugins/CopyEngine/Ultracopier-0.3/FilterRules.cpp b/plugins/CopyEngine/Ultracopier-0.3/FilterRules.cpp new file mode 100644 index 0000000..0e6ba25 --- /dev/null +++ b/plugins/CopyEngine/Ultracopier-0.3/FilterRules.cpp @@ -0,0 +1,193 @@ +#include "FilterRules.h" +#include "ui_FilterRules.h" + +#include <QMessageBox> + +FilterRules::FilterRules(QWidget *parent) : + QDialog(parent), + ui(new Ui::FilterRules) +{ + ui->setupUi(this); + updateChecking(); + haveBeenValided=false; +} + +FilterRules::~FilterRules() +{ + delete ui; +} + +bool FilterRules::getIsValid() +{ + return isValid && haveBeenValided; +} + +QString FilterRules::get_search_text() +{ + return ui->search->text(); +} + +SearchType FilterRules::get_search_type() +{ + switch(ui->search_type->currentIndex()) + { + case 0: + return SearchType_rawText; + case 1: + return SearchType_simpleRegex; + case 2: + return SearchType_perlRegex; + } + return SearchType_simpleRegex; +} + +ApplyOn FilterRules::get_apply_on() +{ + switch(ui->apply_on->currentIndex()) + { + case 0: + return ApplyOn_file; + case 1: + return ApplyOn_fileAndFolder; + case 2: + return ApplyOn_folder; + } + return ApplyOn_fileAndFolder; +} + +bool FilterRules::get_need_match_all() +{ + return ui->need_match_all->isChecked(); +} + +void FilterRules::set_search_text(QString search_text) +{ + ui->search->setText(search_text); +} + +void FilterRules::set_search_type(SearchType search_type) +{ + switch(search_type) + { + case SearchType_rawText: + ui->search_type->setCurrentIndex(0); + break; + case SearchType_simpleRegex: + ui->search_type->setCurrentIndex(1); + break; + case SearchType_perlRegex: + ui->search_type->setCurrentIndex(2); + break; + } +} + +void FilterRules::set_apply_on(ApplyOn apply_on) +{ + switch(apply_on) + { + case ApplyOn_file: + ui->apply_on->setCurrentIndex(0); + break; + case ApplyOn_fileAndFolder: + ui->apply_on->setCurrentIndex(1); + break; + case ApplyOn_folder: + ui->apply_on->setCurrentIndex(2); + break; + } +} + +void FilterRules::set_need_match_all(bool need_match_all) +{ + ui->need_match_all->setChecked(need_match_all); +} + +void FilterRules::on_search_textChanged(const QString &arg1) +{ + Q_UNUSED(arg1); + updateChecking(); +} + +void FilterRules::updateChecking() +{ + QRegExp regex; + isValid=!ui->search->text().isEmpty(); + if(isValid) + { + QString tempString; + if(ui->search_type->currentIndex()==0) + { + tempString=QRegExp::escape(ui->search->text()); + if(tempString.contains('/') || tempString.contains('\\')) + isValid=false; + } + else if(ui->search_type->currentIndex()==1) + { + tempString=QRegExp::escape(ui->search->text()); + tempString.replace("\\*","[^\\\\/]*"); + } + else if(ui->search_type->currentIndex()==2) + { + tempString=ui->search->text(); + if(tempString.startsWith('^') && tempString.endsWith('$')) + { + ui->need_match_all->setChecked(true); + tempString.remove(QRegExp("^\\^")); + tempString.remove(QRegExp("\\$$")); + ui->search->setText(tempString); + } + } + if(isValid) + { + if(ui->need_match_all->isChecked()) + tempString="^"+tempString+"$"; + regex=QRegExp(tempString); + isValid=regex.isValid() && !regex.isEmpty(); + } + } + + ui->isValid->setChecked(isValid); + ui->testString->setEnabled(isValid); + ui->label_test_string->setEnabled(isValid); + ui->matched->setEnabled(isValid); + ui->matched->setChecked(isValid && ui->testString->text().contains(regex)); + ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(isValid); +} + +void FilterRules::on_isValid_clicked() +{ + updateChecking(); +} + +void FilterRules::on_testString_textChanged(const QString &arg1) +{ + Q_UNUSED(arg1); + updateChecking(); +} + +void FilterRules::on_matched_clicked() +{ + updateChecking(); +} + +void FilterRules::on_search_type_currentIndexChanged(int index) +{ + Q_UNUSED(index); + updateChecking(); +} + +void FilterRules::on_need_match_all_clicked() +{ + updateChecking(); +} + +void FilterRules::on_buttonBox_clicked(QAbstractButton *button) +{ + if(ui->buttonBox->buttonRole(button)==QDialogButtonBox::RejectRole) + reject(); + else + { + haveBeenValided=true; + accept(); + } +} diff --git a/plugins/CopyEngine/Ultracopier-0.3/FilterRules.h b/plugins/CopyEngine/Ultracopier-0.3/FilterRules.h new file mode 100644 index 0000000..f06f0cb --- /dev/null +++ b/plugins/CopyEngine/Ultracopier-0.3/FilterRules.h @@ -0,0 +1,46 @@ +#ifndef FILTERRULES_H +#define FILTERRULES_H + +#include <QDialog> +#include <QAbstractButton> +#include <QPushButton> + +#include "StructEnumDefinition_CopyEngine.h" + +namespace Ui { +class FilterRules; +} + +/** All the filter rules to include/exclude some file during the listing */ +class FilterRules : public QDialog +{ + Q_OBJECT + +public: + explicit FilterRules(QWidget *parent = 0); + ~FilterRules(); + bool getIsValid(); + QString get_search_text(); + SearchType get_search_type(); + ApplyOn get_apply_on(); + bool get_need_match_all(); + void set_search_text(QString search_text); + void set_search_type(SearchType search_type); + void set_apply_on(ApplyOn apply_on); + void set_need_match_all(bool need_match_all); +private slots: + void on_search_textChanged(const QString &arg1); + void on_isValid_clicked(); + void on_testString_textChanged(const QString &arg1); + void on_matched_clicked(); + void on_search_type_currentIndexChanged(int index); + void on_need_match_all_clicked(); + void on_buttonBox_clicked(QAbstractButton *button); +private: + Ui::FilterRules *ui; + void updateChecking(); + bool isValid; + bool haveBeenValided; +}; + +#endif // FILTERRULES_H diff --git a/plugins/CopyEngine/Ultracopier-0.3/FilterRules.ui b/plugins/CopyEngine/Ultracopier-0.3/FilterRules.ui new file mode 100644 index 0000000..fad35cd --- /dev/null +++ b/plugins/CopyEngine/Ultracopier-0.3/FilterRules.ui @@ -0,0 +1,162 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>FilterRules</class> + <widget class="QDialog" name="FilterRules"> + <property name="windowModality"> + <enum>Qt::WindowModal</enum> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>289</width> + <height>231</height> + </rect> + </property> + <property name="windowTitle"> + <string>Filters dialog</string> + </property> + <property name="windowIcon"> + <iconset resource="resources.qrc"> + <normaloff>:/resources/filter.png</normaloff>:/resources/filter.png</iconset> + </property> + <layout class="QGridLayout" name="gridLayout_2"> + <property name="margin"> + <number>1</number> + </property> + <property name="spacing"> + <number>1</number> + </property> + <item row="0" column="0"> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Search:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QLineEdit" name="search"/> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>Search type:</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QComboBox" name="search_type"> + <item> + <property name="text"> + <string>Raw text</string> + </property> + </item> + <item> + <property name="text"> + <string>Simplified regex</string> + </property> + </item> + <item> + <property name="text"> + <string>Perl's regex</string> + </property> + </item> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>Apply on:</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QComboBox" name="apply_on"> + <item> + <property name="text"> + <string>File</string> + </property> + </item> + <item> + <property name="text"> + <string>Folder</string> + </property> + </item> + <item> + <property name="text"> + <string>File and folder</string> + </property> + </item> + </widget> + </item> + <item row="3" column="0" colspan="2"> + <widget class="QCheckBox" name="need_match_all"> + <property name="text"> + <string>All string need match</string> + </property> + </widget> + </item> + <item row="4" column="0" colspan="2"> + <widget class="QGroupBox" name="groupBoxChecking"> + <property name="title"> + <string>Checking</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0" colspan="2"> + <widget class="QCheckBox" name="isValid"> + <property name="text"> + <string>The regex is valid</string> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_test_string"> + <property name="text"> + <string>Test string:</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLineEdit" name="testString"/> + </item> + <item row="2" column="0" colspan="2"> + <widget class="QCheckBox" name="matched"> + <property name="text"> + <string>The test string match with the regex</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="5" column="0" colspan="2"> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>68</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <resources> + <include location="resources.qrc"/> + </resources> + <connections/> +</ui> diff --git a/plugins/CopyEngine/Ultracopier-0.3/Filters.cpp b/plugins/CopyEngine/Ultracopier-0.3/Filters.cpp new file mode 100644 index 0000000..ce87b52 --- /dev/null +++ b/plugins/CopyEngine/Ultracopier-0.3/Filters.cpp @@ -0,0 +1,456 @@ +#include "Filters.h" +#include "ui_Filters.h" + +#include <QMessageBox> + +Filters::Filters(QWidget *parent) : + QDialog(parent), + ui(new Ui::Filters) +{ + ui->setupUi(this); +} + +Filters::~Filters() +{ + delete ui; +} + +void Filters::setFilters(QStringList includeStrings,QStringList includeOptions,QStringList excludeStrings,QStringList excludeOptions) +{ + if(includeStrings.size()!=includeOptions.size() || excludeStrings.size()!=excludeOptions.size()) + return; + Filters_rules new_item; + + include.clear(); + int index=0; + while(index<includeStrings.size()) + { + new_item.search_text=includeStrings.at(index); + QStringList options=includeOptions.at(index).split(";"); + new_item.need_match_all=false; + new_item.search_type=SearchType_rawText; + new_item.apply_on=ApplyOn_fileAndFolder; + + if(options.contains("SearchType_simpleRegex")) + new_item.search_type=SearchType_simpleRegex; + if(options.contains("SearchType_perlRegex")) + new_item.search_type=SearchType_perlRegex; + if(options.contains("ApplyOn_file")) + new_item.apply_on=ApplyOn_file; + if(options.contains("ApplyOn_folder")) + new_item.apply_on=ApplyOn_folder; + if(options.contains("need_match_all")) + new_item.need_match_all=true; + + if(convertToRegex(new_item)) + include << new_item; + + index++; + } + + exclude.clear(); + index=0; + while(index<excludeStrings.size()) + { + new_item.search_text=excludeStrings.at(index); + QStringList options=excludeOptions.at(index).split(";"); + new_item.need_match_all=false; + new_item.search_type=SearchType_rawText; + new_item.apply_on=ApplyOn_fileAndFolder; + + if(options.contains("SearchType_simpleRegex")) + new_item.search_type=SearchType_simpleRegex; + if(options.contains("SearchType_perlRegex")) + new_item.search_type=SearchType_perlRegex; + if(options.contains("ApplyOn_file")) + new_item.apply_on=ApplyOn_file; + if(options.contains("ApplyOn_folder")) + new_item.apply_on=ApplyOn_folder; + if(options.contains("need_match_all")) + new_item.need_match_all=true; + + if(convertToRegex(new_item)) + exclude << new_item; + + index++; + } + + reShowAll(); +} + +void Filters::reShowAll() +{ + ui->inclusion->clear(); + int index=0; + while(index<include.size()) + { + QString entryShow=include.at(index).search_text+" ("; + QStringList optionsToShow; + switch(include.at(index).search_type) + { + case SearchType_rawText: + optionsToShow << tr("Raw text"); + break; + case SearchType_simpleRegex: + optionsToShow << tr("Simplified regex"); + break; + case SearchType_perlRegex: + optionsToShow << tr("Perl's regex"); + break; + default: + break; + } + switch(include.at(index).apply_on) + { + case ApplyOn_file: + optionsToShow << tr("Only on file"); + break; + case ApplyOn_folder: + optionsToShow << tr("Only on folder"); + break; + default: + break; + } + if(include.at(index).need_match_all) + optionsToShow << tr("Full match"); + entryShow+=optionsToShow.join(","); + entryShow+=")"; + ui->inclusion->addItem(new QListWidgetItem(entryShow)); + index++; + } + ui->exclusion->clear(); + index=0; + while(index<exclude.size()) + { + QString entryShow=exclude.at(index).search_text+" ("; + QStringList optionsToShow; + switch(exclude.at(index).search_type) + { + case SearchType_rawText: + optionsToShow << tr("Raw text"); + break; + case SearchType_simpleRegex: + optionsToShow << tr("Simplified regex"); + break; + case SearchType_perlRegex: + optionsToShow << tr("Perl's regex"); + break; + default: + break; + } + switch(exclude.at(index).apply_on) + { + case ApplyOn_file: + optionsToShow << tr("Only on file"); + break; + case ApplyOn_folder: + optionsToShow << tr("Only on folder"); + break; + default: + break; + } + if(exclude.at(index).need_match_all) + optionsToShow << tr("Full match"); + entryShow+=optionsToShow.join(","); + entryShow+=")"; + ui->exclusion->addItem(new QListWidgetItem(entryShow)); + index++; + } +} + +QList<Filters_rules> Filters::getInclude() +{ + return include; +} + +QList<Filters_rules> Filters::getExclude() +{ + return exclude; +} + +void Filters::newLanguageLoaded() +{ + ui->retranslateUi(this); + reShowAll(); +} + +void Filters::haveNewFilters() +{ + QStringList includeStrings,includeOptions,excludeStrings,excludeOptions; + int index=0; + while(index<include.size()) + { + includeStrings<<include.at(index).search_text; + QStringList optionsToShow; + + switch(include.at(index).search_type) + { + case SearchType_rawText: + optionsToShow << "SearchType_rawText"; + break; + case SearchType_simpleRegex: + optionsToShow << "SearchType_simpleRegex"; + break; + case SearchType_perlRegex: + optionsToShow << "SearchType_perlRegex"; + break; + default: + break; + } + switch(include.at(index).apply_on) + { + case ApplyOn_file: + optionsToShow << "ApplyOn_file"; + break; + case ApplyOn_fileAndFolder: + optionsToShow << "ApplyOn_fileAndFolder"; + break; + case ApplyOn_folder: + optionsToShow << "ApplyOn_folder"; + break; + default: + break; + } + if(include.at(index).need_match_all) + optionsToShow << tr("Full match"); + includeOptions<<optionsToShow.join(";"); + index++; + } + index=0; + while(index<exclude.size()) + { + excludeStrings<<exclude.at(index).search_text; + QStringList optionsToShow; + + switch(exclude.at(index).search_type) + { + case SearchType_rawText: + optionsToShow << "SearchType_rawText"; + break; + case SearchType_simpleRegex: + optionsToShow << "SearchType_simpleRegex"; + break; + case SearchType_perlRegex: + optionsToShow << "SearchType_perlRegex"; + break; + default: + break; + } + switch(exclude.at(index).apply_on) + { + case ApplyOn_file: + optionsToShow << "ApplyOn_file"; + break; + case ApplyOn_fileAndFolder: + optionsToShow << "ApplyOn_fileAndFolder"; + break; + case ApplyOn_folder: + optionsToShow << "ApplyOn_folder"; + break; + default: + break; + } + if(exclude.at(index).need_match_all) + optionsToShow << tr("Full match"); + excludeOptions<<optionsToShow.join(";"); + index++; + } + emit sendNewFilters(includeStrings,includeOptions,excludeStrings,excludeOptions); +} + +bool Filters::convertToRegex(Filters_rules &item) +{ + bool isValid=!item.search_text.isEmpty(); + if(isValid) + { + QRegExp regex; + QString tempString; + if(item.search_type==SearchType_rawText) + { + tempString=QRegExp::escape(item.search_text); + if(tempString.contains('/') || tempString.contains('\\')) + isValid=false; + } + else if(item.search_type==SearchType_simpleRegex) + { + tempString=QRegExp::escape(item.search_text); + tempString.replace("\\*","[^\\\\/]*"); + } + else if(item.search_type==SearchType_perlRegex) + { + tempString=item.search_text; + if(tempString.startsWith('^') && tempString.endsWith('$')) + { + item.need_match_all=true; + tempString.remove(QRegExp("^\\^")); + tempString.remove(QRegExp("\\$$")); + item.search_text=tempString; + } + } + if(isValid) + { + if(item.need_match_all==true) + tempString="^"+tempString+"$"; + regex=QRegExp(tempString); + isValid=regex.isValid() && !regex.isEmpty(); + item.regex=regex; + return true; + } + else + return false; + } + return false; +} + +void Filters::on_remove_exclusion_clicked() +{ + bool removedEntry=false; + int index=0; + while(index<ui->exclusion->count()) + { + if(ui->exclusion->item(index)->isSelected()) + { + delete ui->exclusion->item(index); + exclude.removeAt(index); + removedEntry=true; + } + else + index++; + } + if(removedEntry) + { + reShowAll(); + haveNewFilters(); + } +} + +void Filters::on_remove_inclusion_clicked() +{ + bool removedEntry=false; + int index=0; + while(index<ui->inclusion->count()) + { + if(ui->inclusion->item(index)->isSelected()) + { + delete ui->inclusion->item(index); + include.removeAt(index); + removedEntry=true; + } + else + index++; + } + if(removedEntry) + { + reShowAll(); + haveNewFilters(); + } +} + +void Filters::on_add_exclusion_clicked() +{ + FilterRules dialog(this); + dialog.exec(); + if(dialog.getIsValid()) + { + Filters_rules new_item; + new_item.apply_on=dialog.get_apply_on(); + 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; + reShowAll(); + haveNewFilters(); + } +} + +void Filters::on_buttonBox_clicked(QAbstractButton *button) +{ + if(ui->buttonBox->buttonRole(button)==QDialogButtonBox::RejectRole) + reject(); +} + +void Filters::on_add_inclusion_clicked() +{ + FilterRules dialog(this); + dialog.exec(); + if(dialog.getIsValid()) + { + Filters_rules new_item; + new_item.apply_on=dialog.get_apply_on(); + 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(); + if(convertToRegex(new_item)) + include << new_item; + reShowAll(); + haveNewFilters(); + } +} + +void Filters::on_edit_exclusion_clicked() +{ + bool editedEntry=false; + int index=0; + while(index<ui->exclusion->count()) + { + if(ui->exclusion->item(index)->isSelected()) + { + FilterRules dialog(this); + dialog.set_apply_on(exclude[index].apply_on); + dialog.set_need_match_all(exclude[index].need_match_all); + dialog.set_search_text(exclude[index].search_text); + dialog.set_search_type(exclude[index].search_type); + dialog.exec(); + if(dialog.getIsValid()) + { + exclude[index].apply_on=dialog.get_apply_on(); + exclude[index].need_match_all=dialog.get_need_match_all(); + exclude[index].search_text=dialog.get_search_text(); + exclude[index].search_type=dialog.get_search_type(); + if(!convertToRegex(exclude[index])) + exclude.removeAt(index); + editedEntry=true; + } + } + index++; + } + if(editedEntry) + { + reShowAll(); + haveNewFilters(); + } +} + +void Filters::on_edit_inclusion_clicked() +{ + bool editedEntry=false; + int index=0; + while(index<ui->inclusion->count()) + { + if(ui->inclusion->item(index)->isSelected()) + { + FilterRules dialog(this); + dialog.set_apply_on(exclude[index].apply_on); + dialog.set_need_match_all(exclude[index].need_match_all); + dialog.set_search_text(exclude[index].search_text); + dialog.set_search_type(exclude[index].search_type); + dialog.exec(); + if(dialog.getIsValid()) + { + exclude[index].apply_on=dialog.get_apply_on(); + exclude[index].need_match_all=dialog.get_need_match_all(); + exclude[index].search_text=dialog.get_search_text(); + exclude[index].search_type=dialog.get_search_type(); + if(!convertToRegex(exclude[index])) + exclude.removeAt(index); + editedEntry=true; + } + } + index++; + } + if(editedEntry) + { + reShowAll(); + haveNewFilters(); + } +} diff --git a/plugins/CopyEngine/Ultracopier-0.3/Filters.h b/plugins/CopyEngine/Ultracopier-0.3/Filters.h new file mode 100644 index 0000000..dcdcb36 --- /dev/null +++ b/plugins/CopyEngine/Ultracopier-0.3/Filters.h @@ -0,0 +1,44 @@ +#ifndef FILTERS_H +#define FILTERS_H + +#include <QDialog> +#include <QStringList> + +#include "FilterRules.h" +#include "StructEnumDefinition_CopyEngine.h" + +namespace Ui { +class Filters; +} + +/** To add/edit one filter rules */ +class Filters : public QDialog +{ + Q_OBJECT +public: + explicit Filters(QWidget *parent = 0); + ~Filters(); + void setFilters(QStringList includeStrings,QStringList includeOptions,QStringList excludeStrings,QStringList excludeOptions); + void reShowAll(); + QList<Filters_rules> getInclude(); + QList<Filters_rules> getExclude(); + void newLanguageLoaded(); +private: + Ui::Filters *ui; + QList<Filters_rules> include; + QList<Filters_rules> exclude; + void haveNewFilters(); + bool convertToRegex(Filters_rules &item); +signals: + void sendNewFilters(QStringList includeStrings,QStringList includeOptions,QStringList excludeStrings,QStringList excludeOptions); +private slots: + void on_remove_exclusion_clicked(); + void on_remove_inclusion_clicked(); + void on_add_exclusion_clicked(); + void on_buttonBox_clicked(QAbstractButton *button); + void on_add_inclusion_clicked(); + void on_edit_exclusion_clicked(); + void on_edit_inclusion_clicked(); +}; + +#endif // FILTERS_H diff --git a/plugins/CopyEngine/Ultracopier-0.3/Filters.ui b/plugins/CopyEngine/Ultracopier-0.3/Filters.ui new file mode 100644 index 0000000..db8577c --- /dev/null +++ b/plugins/CopyEngine/Ultracopier-0.3/Filters.ui @@ -0,0 +1,194 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Filters</class> + <widget class="QDialog" name="Filters"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>507</width> + <height>502</height> + </rect> + </property> + <property name="windowTitle"> + <string>Filters</string> + </property> + <property name="windowIcon"> + <iconset resource="resources.qrc"> + <normaloff>:/resources/filter.png</normaloff>:/resources/filter.png</iconset> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <property name="spacing"> + <number>1</number> + </property> + <property name="margin"> + <number>1</number> + </property> + <item> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>Exclusion filter</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <property name="spacing"> + <number>1</number> + </property> + <property name="margin"> + <number>2</number> + </property> + <item> + <widget class="QListWidget" name="exclusion"> + <property name="selectionMode"> + <enum>QAbstractItemView::MultiSelection</enum> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QToolButton" name="add_exclusion"> + <property name="icon"> + <iconset resource="resources.qrc"> + <normaloff>:/resources/add.png</normaloff>:/resources/add.png</iconset> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="edit_exclusion"> + <property name="icon"> + <iconset resource="resources.qrc"> + <normaloff>:/resources/edit.png</normaloff>:/resources/edit.png</iconset> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="remove_exclusion"> + <property name="icon"> + <iconset resource="resources.qrc"> + <normaloff>:/resources/remove.png</normaloff>:/resources/remove.png</iconset> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer_2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_2"> + <property name="title"> + <string>Inclusion filter</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <property name="spacing"> + <number>1</number> + </property> + <property name="margin"> + <number>2</number> + </property> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>None = Include all</string> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QListWidget" name="inclusion"> + <property name="selectionMode"> + <enum>QAbstractItemView::MultiSelection</enum> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <widget class="QToolButton" name="add_inclusion"> + <property name="icon"> + <iconset resource="resources.qrc"> + <normaloff>:/resources/add.png</normaloff>:/resources/add.png</iconset> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="edit_inclusion"> + <property name="icon"> + <iconset resource="resources.qrc"> + <normaloff>:/resources/edit.png</normaloff>:/resources/edit.png</iconset> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="remove_inclusion"> + <property name="icon"> + <iconset resource="resources.qrc"> + <normaloff>:/resources/remove.png</normaloff>:/resources/remove.png</iconset> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel</set> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <resources> + <include location="resources.qrc"/> + </resources> + <connections/> +</ui> diff --git a/plugins/CopyEngine/Ultracopier-0.3/Languages/ar/translation.ts b/plugins/CopyEngine/Ultracopier-0.3/Languages/ar/translation.ts index 1c3692c..0898631 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/Languages/ar/translation.ts +++ b/plugins/CopyEngine/Ultracopier-0.3/Languages/ar/translation.ts @@ -4,27 +4,229 @@ <context> <name>AvancedQFile</name> <message> - <location filename="../../AvancedQFile.cpp" line="17"/> - <location filename="../../AvancedQFile.cpp" line="48"/> - <location filename="../../AvancedQFile.cpp" line="79"/> + <location filename="../../AvancedQFile.cpp" line="28"/> + <location filename="../../AvancedQFile.cpp" line="59"/> + <location filename="../../AvancedQFile.cpp" line="90"/> <source>Not supported on this platform</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="31"/> + <location filename="../../AvancedQFile.cpp" line="42"/> <source>Last modified date is wrong</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="62"/> + <location filename="../../AvancedQFile.cpp" line="73"/> <source>Last access date is wrong</source> <translation type="unfinished"></translation> </message> </context> <context> + <name>Factory</name> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>FilterRules</name> + <message> + <location filename="../../FilterRules.ui" line="33"/> + <source>Search:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="43"/> + <source>Search type:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="51"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="56"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="61"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="69"/> + <source>Apply on:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="77"/> + <source>File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="82"/> + <source>Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="87"/> + <source>File and folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="95"/> + <source>All string need match</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="102"/> + <source>Checking</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="115"/> + <source>Test string:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="17"/> + <source>Filters dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="108"/> + <source>The regex is valid</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="125"/> + <source>The test string match with the regex</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Filters</name> + <message> + <location filename="../../Filters.ui" line="14"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="30"/> + <source>Exclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="93"/> + <source>Inclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="105"/> + <source>None = Include all</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="92"/> + <location filename="../../Filters.cpp" line="130"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="95"/> + <location filename="../../Filters.cpp" line="133"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="98"/> + <location filename="../../Filters.cpp" line="136"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="106"/> + <location filename="../../Filters.cpp" line="144"/> + <source>Only on file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="109"/> + <location filename="../../Filters.cpp" line="147"/> + <source>Only on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="115"/> + <location filename="../../Filters.cpp" line="153"/> + <location filename="../../Filters.cpp" line="215"/> + <location filename="../../Filters.cpp" line="254"/> + <source>Full match</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ListThread</name> + <message> + <location filename="../../ListThread.cpp" line="1162"/> + <source>Unable do to move or copy item into wrong forced mode: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1169"/> + <source>Unable to save the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1185"/> + <source>Problem at the reading, or file size is null</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1192"/> + <source>Wrong header: "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1201"/> + <source>The transfer list is in mixed mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1210"/> + <source>The transfer list is in copy mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1216"/> + <source>The transfer list is in move mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1263"/> + <source>Some error have been found during the line parsing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1269"/> + <source>Unable to open the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>MkPath</name> <message> - <location filename="../../MkPath.cpp" line="51"/> + <location filename="../../MkPath.cpp" line="62"/> <source>Unable to create the folder</source> <translation type="unfinished"></translation> </message> @@ -32,426 +234,560 @@ <context> <name>ReadThread</name> <message> - <location filename="../../ReadThread.cpp" line="231"/> + <location filename="../../ReadThread.cpp" line="154"/> + <location filename="../../ReadThread.cpp" line="316"/> <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>RmPath</name> <message> - <location filename="../../RmPath.cpp" line="51"/> - <source>Unable to remove the folder</source> + <location filename="../../ReadThread.cpp" line="193"/> + <location filename="../../ReadThread.cpp" line="373"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>TransferThread</name> + <name>RenamingRules</name> + <message> + <location filename="../../RenamingRules.ui" line="26"/> + <source>First renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="32"/> + <source>%name% - copy</source> + <extracomment>%name% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="39"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p></body></html></source> + <extracomment> should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="49"/> + <source>Second renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="55"/> + <source>%name% - copy (%number%)</source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="62"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p><p><span style=" font-weight:600;">%number%</span> for the extra number</p></body></html></source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="39"/> + <location filename="../../RenamingRules.cpp" line="62"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="43"/> + <location filename="../../RenamingRules.cpp" line="73"/> + <source>%1 - copy (%2)</source> + <translation type="unfinished"></translation> + </message> <message> - <location filename="../../TransferThread.cpp" line="281"/> - <location filename="../../TransferThread.cpp" line="282"/> - <source>Copy of </source> + <location filename="../../RenamingRules.ui" line="14"/> + <source>Renaming rules</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>copyEngine</name> + <name>RmPath</name> <message> - <location filename="../../copyEngine.cpp" line="124"/> - <location filename="../../copyEngine.cpp" line="141"/> - <source>Select destination directory</source> + <location filename="../../RmPath.cpp" line="59"/> + <source>Unable to remove the folder</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>TransferThread</name> <message> - <location filename="../../copyEngine.cpp" line="188"/> - <location filename="../../copyEngine.cpp" line="201"/> - <source>Ask</source> + <location filename="../../TransferThread.cpp" line="311"/> + <source>%1 - copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="189"/> - <location filename="../../copyEngine.cpp" line="202"/> - <source>Skip</source> + <location filename="../../TransferThread.cpp" line="321"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="190"/> - <source>Overwrite</source> + <location filename="../../TransferThread.cpp" line="626"/> + <source>The checksums not match</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>WriteThread</name> <message> - <location filename="../../copyEngine.cpp" line="191"/> - <source>Overwrite if newer</source> + <location filename="../../WriteThread.cpp" line="443"/> + <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="192"/> - <source>Overwrite if not same modification date</source> + <location filename="../../WriteThread.cpp" line="481"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>copyEngine</name> <message> - <location filename="../../copyEngine.cpp" line="193"/> - <source>Rename</source> + <location filename="../../copyEngine.cpp" line="257"/> + <location filename="../../copyEngine.cpp" line="275"/> + <source>The engine is forced to move, you can't copy with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="203"/> - <source>Put to end of the list</source> + <location filename="../../copyEngine.cpp" line="286"/> + <location filename="../../copyEngine.cpp" line="304"/> + <source>The engine is forced to copy, you can't move with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="225"/> - <source>Select source directory</source> + <location filename="../../copyEngine.cpp" line="511"/> + <source>The mode have been forced previously, it's internal error, please report it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="239"/> - <source>Select one or more files to open</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="241"/> - <source>All files</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options engine is not loaded, can't access to the filters</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileErrorDialog</name> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="14"/> <source>Error on file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="20"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="56"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="73"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="90"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="136"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="156"/> <source>Put to bottom</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="163"/> <source>Retry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="170"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="177"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="29"/> + <source>Error on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="32"/> + <source>Folder name</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>fileExistsDialog</name> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="14"/> <source>The file exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="82"/> + <location filename="../../fileExistsDialog.ui" line="153"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="99"/> + <location filename="../../fileExistsDialog.ui" line="170"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="116"/> + <location filename="../../fileExistsDialog.ui" line="187"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="243"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="254"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="274"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="281"/> <source>&Overwrite</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="291"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="298"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="307"/> <source>Overwrite if newer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="312"/> <source>Overwrite if not same modification date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.cpp" line="70"/> - <location filename="../../fileExistsDialog.cpp" line="71"/> - <source>Copy of </source> + <location filename="../../fileExistsDialog.cpp" line="102"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileExistsDialog.cpp" line="112"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileIsSameDialog</name> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="14"/> <source>This files are the same file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="20"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="47"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="64"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="81"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="137"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="148"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="168"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="175"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="182"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.cpp" line="66"/> - <location filename="../../fileIsSameDialog.cpp" line="67"/> - <source>Copy of </source> + <location filename="../../fileIsSameDialog.cpp" line="87"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileIsSameDialog.cpp" line="97"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>folderExistsDialog</name> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="14"/> <source>This folders are the same folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="62"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="89"/> + <location filename="../../folderExistsDialog.ui" line="140"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="106"/> + <location filename="../../folderExistsDialog.ui" line="150"/> <source>Folder name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="200"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="211"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="218"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="225"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="232"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="239"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.cpp" line="61"/> - <source>Copy of </source> + <location filename="../../folderExistsDialog.cpp" line="29"/> + <source>Folder already exists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="85"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="95"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>options</name> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="23"/> <source>Transfer the file rights</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="33"/> <source>Keep the file date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="214"/> <source>Block size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="43"/> + <location filename="../../options.ui" line="198"/> <source>KB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="56"/> <source>Auto start the transfer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="66"/> <source>When folder error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="74"/> + <location filename="../../options.ui" line="95"/> <source>Ask</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="79"/> + <location filename="../../options.ui" line="105"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> - <source>When folder colision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="100"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="110"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="118"/> <source>Check if destination folder exists</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../options.ui" line="87"/> + <source>When folder collision</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="128"/> + <source>Checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="144"/> + <source>Only after error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="154"/> + <source>Ignore if impossible</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="171"/> + <source>Do checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="181"/> + <source>Enable OS buffer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="234"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="241"/> + <source>Renaming rules</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="191"/> + <source>OS buffer only if smaller than</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>scanFileOrFolder</name> <message> - <location filename="../../scanFileOrFolder.cpp" line="112"/> - <location filename="../../scanFileOrFolder.cpp" line="138"/> - <source>Copy of </source> + <location filename="../../scanFileOrFolder.cpp" line="218"/> + <location filename="../../scanFileOrFolder.cpp" line="282"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../scanFileOrFolder.cpp" line="228"/> + <location filename="../../scanFileOrFolder.cpp" line="292"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="157"/> + <location filename="../../scanFileOrFolder.cpp" line="326"/> <source>The folder not exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="159"/> + <location filename="../../scanFileOrFolder.cpp" line="328"/> <source>The folder is not readable</source> <translation type="unfinished"></translation> </message> diff --git a/plugins/CopyEngine/Ultracopier-0.3/Languages/de/translation.ts b/plugins/CopyEngine/Ultracopier-0.3/Languages/de/translation.ts index 1c3692c..08c7422 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/Languages/de/translation.ts +++ b/plugins/CopyEngine/Ultracopier-0.3/Languages/de/translation.ts @@ -1,459 +1,795 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0"> +<TS version="2.0" language="de" sourcelanguage="en"> <context> <name>AvancedQFile</name> <message> - <location filename="../../AvancedQFile.cpp" line="17"/> - <location filename="../../AvancedQFile.cpp" line="48"/> - <location filename="../../AvancedQFile.cpp" line="79"/> + <location filename="../../AvancedQFile.cpp" line="28"/> + <location filename="../../AvancedQFile.cpp" line="59"/> + <location filename="../../AvancedQFile.cpp" line="90"/> <source>Not supported on this platform</source> - <translation type="unfinished"></translation> + <translation>Auf dieser Plattform nicht unterstützt</translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="31"/> + <location filename="../../AvancedQFile.cpp" line="42"/> <source>Last modified date is wrong</source> - <translation type="unfinished"></translation> + <translation>Datum der letzten Änderung ist falsch</translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="62"/> + <location filename="../../AvancedQFile.cpp" line="73"/> <source>Last access date is wrong</source> - <translation type="unfinished"></translation> + <translation>Datum des letzten Zugriffs ist falsch</translation> + </message> +</context> +<context> + <name>Factory</name> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options error</source> + <translation>Optionen Fehler</translation> + </message> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation>Optionen Motor nicht geladen wird, kann nicht auf die Filter zu übersetzen</translation> + </message> +</context> +<context> + <name>FilterRules</name> + <message> + <location filename="../../FilterRules.ui" line="33"/> + <source>Search:</source> + <translation>Suche:</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="43"/> + <source>Search type:</source> + <translation>Suche Typ:</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="51"/> + <source>Raw text</source> + <translation>Roh text</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="56"/> + <source>Simplified regex</source> + <translation>Vereinfachte regex</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="61"/> + <source>Perl's regex</source> + <translation>Perl's regex</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="69"/> + <source>Apply on:</source> + <translation>Anwenden auf:</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="77"/> + <source>File</source> + <translation>Datei</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="82"/> + <source>Folder</source> + <translation>Ordner</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="87"/> + <source>File and folder</source> + <translation>Datei-und Ordnernamen</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="95"/> + <source>All string need match</source> + <translation>Alle Saite muss passen</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="102"/> + <source>Checking</source> + <translation>Überprüfung</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="115"/> + <source>Test string:</source> + <translation>Test-String:</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="17"/> + <source>Filters dialog</source> + <translation>Filters dialog</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="108"/> + <source>The regex is valid</source> + <translation>Die Regex ist gültig</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="125"/> + <source>The test string match with the regex</source> + <translation>Der Test-String Match mit dem regex</translation> + </message> +</context> +<context> + <name>Filters</name> + <message> + <location filename="../../Filters.ui" line="14"/> + <source>Filters</source> + <translation>Filter</translation> + </message> + <message> + <location filename="../../Filters.ui" line="30"/> + <source>Exclusion filter</source> + <translation>Ausschluss-Filter</translation> + </message> + <message> + <location filename="../../Filters.ui" line="93"/> + <source>Inclusion filter</source> + <translation>Einbeziehungsfilter</translation> + </message> + <message> + <location filename="../../Filters.ui" line="105"/> + <source>None = Include all</source> + <translation>None = Schließt alle</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="92"/> + <location filename="../../Filters.cpp" line="130"/> + <source>Raw text</source> + <translation>Roh text</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="95"/> + <location filename="../../Filters.cpp" line="133"/> + <source>Simplified regex</source> + <translation>Vereinfachte regex</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="98"/> + <location filename="../../Filters.cpp" line="136"/> + <source>Perl's regex</source> + <translation>Perl's regex</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="106"/> + <location filename="../../Filters.cpp" line="144"/> + <source>Only on file</source> + <translation>Nur auf Datei</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="109"/> + <location filename="../../Filters.cpp" line="147"/> + <source>Only on folder</source> + <translation>Nur auf Ordner</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="115"/> + <location filename="../../Filters.cpp" line="153"/> + <location filename="../../Filters.cpp" line="215"/> + <location filename="../../Filters.cpp" line="254"/> + <source>Full match</source> + <translation>Spielaufzeichnung</translation> + </message> +</context> +<context> + <name>ListThread</name> + <message> + <location filename="../../ListThread.cpp" line="1162"/> + <source>Unable do to move or copy item into wrong forced mode: %1</source> + <translation>Kann nicht tun, verschieben oder kopieren Artikel in den falschen gezwungen Modus: %1</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1169"/> + <source>Unable to save the transfer list: %1</source> + <translation>Unfähig, die Transferliste sparen: %1</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1185"/> + <source>Problem at the reading, or file size is null</source> + <translation>Problem an der Lektüre, der Oder Dateigröße IST Null</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1192"/> + <source>Wrong header: "%1"</source> + <translation>Falsche Header: "%1"</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1201"/> + <source>The transfer list is in mixed mode, but this instance is not in this mode</source> + <translation>Die Transferliste ist im gemischten Modus, aber diese Instanz ist in diesem Modus nicht</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1210"/> + <source>The transfer list is in copy mode, but this instance is not in this mode</source> + <translation>Die Transferliste ist im Copy-Mode, aber dieser Fall ist in diesem Modus nicht</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1216"/> + <source>The transfer list is in move mode, but this instance is not in this mode</source> + <translation>Die Transferliste ist in Verschiebe-Modus, aber diese Instanz ist in diesem Modus nicht</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1263"/> + <source>Some error have been found during the line parsing</source> + <translation>Einige Fehler wurden während des Parsing gefunden</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1269"/> + <source>Unable to open the transfer list: %1</source> + <translation>Unfähig, die Transferliste geöffnet: %1</translation> </message> </context> <context> <name>MkPath</name> <message> - <location filename="../../MkPath.cpp" line="51"/> + <location filename="../../MkPath.cpp" line="62"/> <source>Unable to create the folder</source> - <translation type="unfinished"></translation> + <translation>Der Ordner kann nicht erstellt</translation> </message> </context> <context> <name>ReadThread</name> <message> - <location filename="../../ReadThread.cpp" line="231"/> + <location filename="../../ReadThread.cpp" line="154"/> + <location filename="../../ReadThread.cpp" line="316"/> <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> + <translation>Unfähig, die Quelldatei zu lesen: </translation> </message> -</context> -<context> - <name>RmPath</name> <message> - <location filename="../../RmPath.cpp" line="51"/> - <source>Unable to remove the folder</source> - <translation type="unfinished"></translation> + <location filename="../../ReadThread.cpp" line="193"/> + <location filename="../../ReadThread.cpp" line="373"/> + <source>File truncated during the read, possible data change</source> + <translation>Datei während der Lese, möglich Datenänderung abgeschnitten</translation> </message> </context> <context> - <name>TransferThread</name> + <name>RenamingRules</name> + <message> + <location filename="../../RenamingRules.ui" line="26"/> + <source>First renaming</source> + <translation>erste Umbenennung</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="32"/> + <source>%name% - copy</source> + <extracomment>%name% should not be translated</extracomment> + <translation>%name% - kopieren</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="39"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p></body></html></source> + <extracomment> should not be translated</extracomment> + <translation><html><head/><body><p>Variablen: <span style=" font-weight:600;">%name%</span> für den ursprünglichen Dateinamen</p></body></html></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="49"/> + <source>Second renaming</source> + <translation>zweite Umbenennung</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="55"/> + <source>%name% - copy (%number%)</source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation>%name% - kopieren (%number%)</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="62"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p><p><span style=" font-weight:600;">%number%</span> for the extra number</p></body></html></source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation><html><head/><body><p>Variablen: <span style=" font-weight:600;">%name%</span> für den ursprünglichen Dateinamen</p><p><span style=" font-weight:600;">%number%</span> für die zusätzliche Zahl</p></body></html></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="39"/> + <location filename="../../RenamingRules.cpp" line="62"/> + <source>%1 - copy</source> + <translation>%1 - kopieren</translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="43"/> + <location filename="../../RenamingRules.cpp" line="73"/> + <source>%1 - copy (%2)</source> + <translation>%1 - kopieren (%2)</translation> + </message> <message> - <location filename="../../TransferThread.cpp" line="281"/> - <location filename="../../TransferThread.cpp" line="282"/> - <source>Copy of </source> - <translation type="unfinished"></translation> + <location filename="../../RenamingRules.ui" line="14"/> + <source>Renaming rules</source> + <translation>Umbenennen von Regeln</translation> </message> </context> <context> - <name>copyEngine</name> + <name>RmPath</name> <message> - <location filename="../../copyEngine.cpp" line="124"/> - <location filename="../../copyEngine.cpp" line="141"/> - <source>Select destination directory</source> - <translation type="unfinished"></translation> + <location filename="../../RmPath.cpp" line="59"/> + <source>Unable to remove the folder</source> + <translation>Der Ordner kann nicht entfernen</translation> </message> +</context> +<context> + <name>TransferThread</name> <message> - <location filename="../../copyEngine.cpp" line="188"/> - <location filename="../../copyEngine.cpp" line="201"/> - <source>Ask</source> - <translation type="unfinished"></translation> + <location filename="../../TransferThread.cpp" line="311"/> + <source>%1 - copy</source> + <translation>%1 - kopieren</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="189"/> - <location filename="../../copyEngine.cpp" line="202"/> - <source>Skip</source> - <translation type="unfinished"></translation> + <location filename="../../TransferThread.cpp" line="321"/> + <source>%1 - copy (%2)</source> + <translation>%1 - kopieren (%2)</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="190"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> + <location filename="../../TransferThread.cpp" line="626"/> + <source>The checksums not match</source> + <translation>Die Prüfsummen nicht überein</translation> </message> +</context> +<context> + <name>WriteThread</name> <message> - <location filename="../../copyEngine.cpp" line="191"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> + <location filename="../../WriteThread.cpp" line="443"/> + <source>Unable to read the source file: </source> + <translation>Unfähig, die Quelldatei zu lesen: </translation> </message> <message> - <location filename="../../copyEngine.cpp" line="192"/> - <source>Overwrite if not same modification date</source> - <translation type="unfinished"></translation> + <location filename="../../WriteThread.cpp" line="481"/> + <source>File truncated during the read, possible data change</source> + <translation>Datei während der Lese, möglich Datenänderung abgeschnitten</translation> </message> +</context> +<context> + <name>copyEngine</name> <message> - <location filename="../../copyEngine.cpp" line="193"/> - <source>Rename</source> - <translation type="unfinished"></translation> + <location filename="../../copyEngine.cpp" line="257"/> + <location filename="../../copyEngine.cpp" line="275"/> + <source>The engine is forced to move, you can't copy with it</source> + <translation>Der Motor wird gezwungen sich zu bewegen, können Sie mit ihr nicht zu kopieren</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="203"/> - <source>Put to end of the list</source> - <translation type="unfinished"></translation> + <location filename="../../copyEngine.cpp" line="286"/> + <location filename="../../copyEngine.cpp" line="304"/> + <source>The engine is forced to copy, you can't move with it</source> + <translation>Der Motor ist gezwungen, zu kopieren, können Sie nicht mit ihm bewegen</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="225"/> - <source>Select source directory</source> - <translation type="unfinished"></translation> + <location filename="../../copyEngine.cpp" line="511"/> + <source>The mode have been forced previously, it's internal error, please report it</source> + <translation>Der Modus wurden vorher gezwungen, es interner Fehler ist, melden Sie dies bitte</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="239"/> - <source>Select one or more files to open</source> - <translation type="unfinished"></translation> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options error</source> + <translation>Optionen Fehler</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="241"/> - <source>All files</source> - <translation type="unfinished"></translation> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation>Optionen Motor nicht geladen wird, kann nicht auf die Filter zu übersetzen</translation> </message> </context> <context> <name>fileErrorDialog</name> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="14"/> <source>Error on file</source> - <translation type="unfinished"></translation> + <translation>Fehler bei der Datei</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="20"/> <source>Error</source> - <translation type="unfinished"></translation> + <translation>Fehler</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="56"/> <source>Size</source> - <translation type="unfinished"></translation> + <translation>Größe</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="73"/> <source>Modified</source> - <translation type="unfinished"></translation> + <translation>Geändert</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="90"/> <source>File name</source> - <translation type="unfinished"></translation> + <translation>Dateiname</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="136"/> <source>&Always do this action</source> - <translation type="unfinished"></translation> + <translation>Immer diese Aktion</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="156"/> <source>Put to bottom</source> - <translation type="unfinished"></translation> + <translation>Legen Sie nach unten</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="163"/> <source>Retry</source> - <translation type="unfinished"></translation> + <translation>Wiederholen</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="170"/> <source>&Skip</source> - <translation type="unfinished"></translation> + <translation>überspringen</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="177"/> <source>&Cancel</source> - <translation type="unfinished"></translation> + <translation>Stornieren</translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="29"/> + <source>Error on folder</source> + <translation>Fehler auf Ordner</translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="32"/> + <source>Folder name</source> + <translation>Ordnername</translation> </message> </context> <context> <name>fileExistsDialog</name> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="14"/> <source>The file exists</source> - <translation type="unfinished"></translation> + <translation>Die Datei existiert</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="34"/> <source>Source</source> - <translation type="unfinished"></translation> + <translation>Quelle</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="50"/> <source>Destination</source> - <translation type="unfinished"></translation> + <translation>Ziel</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="82"/> + <location filename="../../fileExistsDialog.ui" line="153"/> <source>Size</source> - <translation type="unfinished"></translation> + <translation>Größe</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="99"/> + <location filename="../../fileExistsDialog.ui" line="170"/> <source>Modified</source> - <translation type="unfinished"></translation> + <translation>Geändert</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="116"/> + <location filename="../../fileExistsDialog.ui" line="187"/> <source>File name</source> - <translation type="unfinished"></translation> + <translation>Dateiname</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="243"/> <source>Suggest new &name</source> - <translation type="unfinished"></translation> + <translation>Schlagen neuen Namen</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="254"/> <source>&Always do this action</source> - <translation type="unfinished"></translation> + <translation>Immer diese Aktion</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="274"/> <source>&Rename</source> - <translation type="unfinished"></translation> + <translation>Umbenennen</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="281"/> <source>&Overwrite</source> - <translation type="unfinished"></translation> + <translation>überschreiben</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="291"/> <source>&Skip</source> - <translation type="unfinished"></translation> + <translation>überspringen</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="298"/> <source>&Cancel</source> - <translation type="unfinished"></translation> + <translation>Stornieren</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="307"/> <source>Overwrite if newer</source> - <translation type="unfinished"></translation> + <translation>Überschreiben, wenn neuere</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="312"/> <source>Overwrite if not same modification date</source> - <translation type="unfinished"></translation> + <translation>Überschreiben, wenn nicht gleiche Änderungsdatum</translation> + </message> + <message> + <location filename="../../fileExistsDialog.cpp" line="102"/> + <source>%1 - copy</source> + <translation>%1 - kopieren</translation> </message> <message> - <location filename="../../fileExistsDialog.cpp" line="70"/> - <location filename="../../fileExistsDialog.cpp" line="71"/> - <source>Copy of </source> - <translation type="unfinished"></translation> + <location filename="../../fileExistsDialog.cpp" line="112"/> + <source>%1 - copy (%2)</source> + <translation>%1 - kopieren (%2)</translation> </message> </context> <context> <name>fileIsSameDialog</name> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="14"/> <source>This files are the same file</source> - <translation type="unfinished"></translation> + <translation>Diese Dateien sind die gleiche Datei</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="20"/> <source>The source and destination is same</source> - <translation type="unfinished"></translation> + <translation>Die Quelle und das Ziel ist dasselbe</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="47"/> <source>Size</source> - <translation type="unfinished"></translation> + <translation>Größe</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="64"/> <source>Modified</source> - <translation type="unfinished"></translation> + <translation>Geändert</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="81"/> <source>File name</source> - <translation type="unfinished"></translation> + <translation>Dateiname</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="137"/> <source>Suggest new &name</source> - <translation type="unfinished"></translation> + <translation>Schlagen neuen Namen</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="148"/> <source>&Always do this action</source> - <translation type="unfinished"></translation> + <translation>Immer diese Aktion</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="168"/> <source>&Rename</source> - <translation type="unfinished"></translation> + <translation>Umbenennen</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="175"/> <source>&Skip</source> - <translation type="unfinished"></translation> + <translation>überspringen</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="182"/> <source>&Cancel</source> - <translation type="unfinished"></translation> + <translation>Stornieren</translation> </message> <message> - <location filename="../../fileIsSameDialog.cpp" line="66"/> - <location filename="../../fileIsSameDialog.cpp" line="67"/> - <source>Copy of </source> - <translation type="unfinished"></translation> + <location filename="../../fileIsSameDialog.cpp" line="87"/> + <source>%1 - copy</source> + <translation>%1 - kopieren</translation> + </message> + <message> + <location filename="../../fileIsSameDialog.cpp" line="97"/> + <source>%1 - copy (%2)</source> + <translation>%1 - kopieren (%2)</translation> </message> </context> <context> <name>folderExistsDialog</name> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="14"/> <source>This folders are the same folder</source> - <translation type="unfinished"></translation> + <translation>Diese Ordner sind die gleichen Ordner</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="34"/> <source>Source</source> - <translation type="unfinished"></translation> + <translation>Quelle</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="50"/> <source>Destination</source> - <translation type="unfinished"></translation> + <translation>Ziel</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="62"/> <source>The source and destination is same</source> - <translation type="unfinished"></translation> + <translation>Die Quelle und das Ziel ist dasselbe</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="89"/> + <location filename="../../folderExistsDialog.ui" line="140"/> <source>Modified</source> - <translation type="unfinished"></translation> + <translation>Geändert</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="106"/> + <location filename="../../folderExistsDialog.ui" line="150"/> <source>Folder name</source> - <translation type="unfinished"></translation> + <translation>Ordnername</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="200"/> <source>Suggest new &name</source> - <translation type="unfinished"></translation> + <translation>Schlagen neuen Namen</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="211"/> <source>&Always do this action</source> - <translation type="unfinished"></translation> + <translation>Immer diese Aktion</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="218"/> <source>&Rename</source> - <translation type="unfinished"></translation> + <translation>Umbenennen</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="225"/> <source>Merge</source> - <translation type="unfinished"></translation> + <translation>Fusionieren</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="232"/> <source>Skip</source> - <translation type="unfinished"></translation> + <translation>überspringen</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="239"/> <source>&Cancel</source> - <translation type="unfinished"></translation> + <translation>Stornieren</translation> </message> <message> - <location filename="../../folderExistsDialog.cpp" line="61"/> - <source>Copy of </source> - <translation type="unfinished"></translation> + <location filename="../../folderExistsDialog.cpp" line="29"/> + <source>Folder already exists</source> + <translation>Ordner bereits vorhanden ist</translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="85"/> + <source>%1 - copy</source> + <translation>%1 - kopieren</translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="95"/> + <source>%1 - copy (%2)</source> + <translation>%1 - kopieren (%2)</translation> </message> </context> <context> <name>options</name> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="23"/> <source>Transfer the file rights</source> - <translation type="unfinished"></translation> + <translation>Übertragen Sie die Datei Rechte</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="33"/> <source>Keep the file date</source> - <translation type="unfinished"></translation> + <translation>Halten Sie das Datei-Datum</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="214"/> <source>Block size</source> - <translation type="unfinished"></translation> + <translation>Blockgröße</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="43"/> + <location filename="../../options.ui" line="198"/> <source>KB</source> - <translation type="unfinished"></translation> + <translation>KB</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="56"/> <source>Auto start the transfer</source> - <translation type="unfinished"></translation> + <translation>Auto starten Sie die Übertragung</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="66"/> <source>When folder error</source> - <translation type="unfinished"></translation> + <translation>Wenn Ordner Fehler</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="74"/> + <location filename="../../options.ui" line="95"/> <source>Ask</source> - <translation type="unfinished"></translation> + <translation>Fragen</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="79"/> + <location filename="../../options.ui" line="105"/> <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../options.ui"/> - <source>When folder colision</source> - <translation type="unfinished"></translation> + <translation>überspringen</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="100"/> <source>Merge</source> - <translation type="unfinished"></translation> + <translation>Fusionieren</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="110"/> <source>Rename</source> - <translation type="unfinished"></translation> + <translation>Umbenennen</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="118"/> <source>Check if destination folder exists</source> - <translation type="unfinished"></translation> + <translation>Prüfen Sie, ob Zielordner vorhanden ist</translation> + </message> + <message> + <location filename="../../options.ui" line="87"/> + <source>When folder collision</source> + <translation>Wenn Ordner Kollision</translation> + </message> + <message> + <location filename="../../options.ui" line="128"/> + <source>Checksum</source> + <translation>Checksum</translation> + </message> + <message> + <location filename="../../options.ui" line="144"/> + <source>Only after error</source> + <translation>Erst nach dem Fehler</translation> + </message> + <message> + <location filename="../../options.ui" line="154"/> + <source>Ignore if impossible</source> + <translation>Ignorieren, wenn nicht</translation> + </message> + <message> + <location filename="../../options.ui" line="171"/> + <source>Do checksum</source> + <translation>Haben checksum</translation> + </message> + <message> + <location filename="../../options.ui" line="181"/> + <source>Enable OS buffer</source> + <translation>Aktivieren Sie OS-Puffer</translation> + </message> + <message> + <location filename="../../options.ui" line="234"/> + <source>Filters</source> + <translation>Filter</translation> + </message> + <message> + <location filename="../../options.ui" line="241"/> + <source>Renaming rules</source> + <translation>Umbenennen von Regeln</translation> + </message> + <message> + <location filename="../../options.ui" line="191"/> + <source>OS buffer only if smaller than</source> + <translation>OS-Puffer, wenn kleiner als</translation> </message> </context> <context> <name>scanFileOrFolder</name> <message> - <location filename="../../scanFileOrFolder.cpp" line="112"/> - <location filename="../../scanFileOrFolder.cpp" line="138"/> - <source>Copy of </source> - <translation type="unfinished"></translation> + <location filename="../../scanFileOrFolder.cpp" line="218"/> + <location filename="../../scanFileOrFolder.cpp" line="282"/> + <source>%1 - copy</source> + <translation>%1 - kopieren</translation> + </message> + <message> + <location filename="../../scanFileOrFolder.cpp" line="228"/> + <location filename="../../scanFileOrFolder.cpp" line="292"/> + <source>%1 - copy (%2)</source> + <translation>%1 - kopieren (%2)</translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="157"/> + <location filename="../../scanFileOrFolder.cpp" line="326"/> <source>The folder not exists</source> - <translation type="unfinished"></translation> + <translation>Der Ordner existiert nicht</translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="159"/> + <location filename="../../scanFileOrFolder.cpp" line="328"/> <source>The folder is not readable</source> - <translation type="unfinished"></translation> + <translation>Der Ordner ist nicht lesbar</translation> </message> </context> </TS> diff --git a/plugins/CopyEngine/Ultracopier-0.3/Languages/el/translation.ts b/plugins/CopyEngine/Ultracopier-0.3/Languages/el/translation.ts index 1c3692c..0898631 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/Languages/el/translation.ts +++ b/plugins/CopyEngine/Ultracopier-0.3/Languages/el/translation.ts @@ -4,27 +4,229 @@ <context> <name>AvancedQFile</name> <message> - <location filename="../../AvancedQFile.cpp" line="17"/> - <location filename="../../AvancedQFile.cpp" line="48"/> - <location filename="../../AvancedQFile.cpp" line="79"/> + <location filename="../../AvancedQFile.cpp" line="28"/> + <location filename="../../AvancedQFile.cpp" line="59"/> + <location filename="../../AvancedQFile.cpp" line="90"/> <source>Not supported on this platform</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="31"/> + <location filename="../../AvancedQFile.cpp" line="42"/> <source>Last modified date is wrong</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="62"/> + <location filename="../../AvancedQFile.cpp" line="73"/> <source>Last access date is wrong</source> <translation type="unfinished"></translation> </message> </context> <context> + <name>Factory</name> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>FilterRules</name> + <message> + <location filename="../../FilterRules.ui" line="33"/> + <source>Search:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="43"/> + <source>Search type:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="51"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="56"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="61"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="69"/> + <source>Apply on:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="77"/> + <source>File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="82"/> + <source>Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="87"/> + <source>File and folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="95"/> + <source>All string need match</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="102"/> + <source>Checking</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="115"/> + <source>Test string:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="17"/> + <source>Filters dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="108"/> + <source>The regex is valid</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="125"/> + <source>The test string match with the regex</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Filters</name> + <message> + <location filename="../../Filters.ui" line="14"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="30"/> + <source>Exclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="93"/> + <source>Inclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="105"/> + <source>None = Include all</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="92"/> + <location filename="../../Filters.cpp" line="130"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="95"/> + <location filename="../../Filters.cpp" line="133"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="98"/> + <location filename="../../Filters.cpp" line="136"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="106"/> + <location filename="../../Filters.cpp" line="144"/> + <source>Only on file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="109"/> + <location filename="../../Filters.cpp" line="147"/> + <source>Only on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="115"/> + <location filename="../../Filters.cpp" line="153"/> + <location filename="../../Filters.cpp" line="215"/> + <location filename="../../Filters.cpp" line="254"/> + <source>Full match</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ListThread</name> + <message> + <location filename="../../ListThread.cpp" line="1162"/> + <source>Unable do to move or copy item into wrong forced mode: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1169"/> + <source>Unable to save the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1185"/> + <source>Problem at the reading, or file size is null</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1192"/> + <source>Wrong header: "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1201"/> + <source>The transfer list is in mixed mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1210"/> + <source>The transfer list is in copy mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1216"/> + <source>The transfer list is in move mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1263"/> + <source>Some error have been found during the line parsing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1269"/> + <source>Unable to open the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>MkPath</name> <message> - <location filename="../../MkPath.cpp" line="51"/> + <location filename="../../MkPath.cpp" line="62"/> <source>Unable to create the folder</source> <translation type="unfinished"></translation> </message> @@ -32,426 +234,560 @@ <context> <name>ReadThread</name> <message> - <location filename="../../ReadThread.cpp" line="231"/> + <location filename="../../ReadThread.cpp" line="154"/> + <location filename="../../ReadThread.cpp" line="316"/> <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>RmPath</name> <message> - <location filename="../../RmPath.cpp" line="51"/> - <source>Unable to remove the folder</source> + <location filename="../../ReadThread.cpp" line="193"/> + <location filename="../../ReadThread.cpp" line="373"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>TransferThread</name> + <name>RenamingRules</name> + <message> + <location filename="../../RenamingRules.ui" line="26"/> + <source>First renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="32"/> + <source>%name% - copy</source> + <extracomment>%name% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="39"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p></body></html></source> + <extracomment> should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="49"/> + <source>Second renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="55"/> + <source>%name% - copy (%number%)</source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="62"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p><p><span style=" font-weight:600;">%number%</span> for the extra number</p></body></html></source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="39"/> + <location filename="../../RenamingRules.cpp" line="62"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="43"/> + <location filename="../../RenamingRules.cpp" line="73"/> + <source>%1 - copy (%2)</source> + <translation type="unfinished"></translation> + </message> <message> - <location filename="../../TransferThread.cpp" line="281"/> - <location filename="../../TransferThread.cpp" line="282"/> - <source>Copy of </source> + <location filename="../../RenamingRules.ui" line="14"/> + <source>Renaming rules</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>copyEngine</name> + <name>RmPath</name> <message> - <location filename="../../copyEngine.cpp" line="124"/> - <location filename="../../copyEngine.cpp" line="141"/> - <source>Select destination directory</source> + <location filename="../../RmPath.cpp" line="59"/> + <source>Unable to remove the folder</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>TransferThread</name> <message> - <location filename="../../copyEngine.cpp" line="188"/> - <location filename="../../copyEngine.cpp" line="201"/> - <source>Ask</source> + <location filename="../../TransferThread.cpp" line="311"/> + <source>%1 - copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="189"/> - <location filename="../../copyEngine.cpp" line="202"/> - <source>Skip</source> + <location filename="../../TransferThread.cpp" line="321"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="190"/> - <source>Overwrite</source> + <location filename="../../TransferThread.cpp" line="626"/> + <source>The checksums not match</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>WriteThread</name> <message> - <location filename="../../copyEngine.cpp" line="191"/> - <source>Overwrite if newer</source> + <location filename="../../WriteThread.cpp" line="443"/> + <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="192"/> - <source>Overwrite if not same modification date</source> + <location filename="../../WriteThread.cpp" line="481"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>copyEngine</name> <message> - <location filename="../../copyEngine.cpp" line="193"/> - <source>Rename</source> + <location filename="../../copyEngine.cpp" line="257"/> + <location filename="../../copyEngine.cpp" line="275"/> + <source>The engine is forced to move, you can't copy with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="203"/> - <source>Put to end of the list</source> + <location filename="../../copyEngine.cpp" line="286"/> + <location filename="../../copyEngine.cpp" line="304"/> + <source>The engine is forced to copy, you can't move with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="225"/> - <source>Select source directory</source> + <location filename="../../copyEngine.cpp" line="511"/> + <source>The mode have been forced previously, it's internal error, please report it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="239"/> - <source>Select one or more files to open</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="241"/> - <source>All files</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options engine is not loaded, can't access to the filters</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileErrorDialog</name> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="14"/> <source>Error on file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="20"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="56"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="73"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="90"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="136"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="156"/> <source>Put to bottom</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="163"/> <source>Retry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="170"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="177"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="29"/> + <source>Error on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="32"/> + <source>Folder name</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>fileExistsDialog</name> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="14"/> <source>The file exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="82"/> + <location filename="../../fileExistsDialog.ui" line="153"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="99"/> + <location filename="../../fileExistsDialog.ui" line="170"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="116"/> + <location filename="../../fileExistsDialog.ui" line="187"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="243"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="254"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="274"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="281"/> <source>&Overwrite</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="291"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="298"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="307"/> <source>Overwrite if newer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="312"/> <source>Overwrite if not same modification date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.cpp" line="70"/> - <location filename="../../fileExistsDialog.cpp" line="71"/> - <source>Copy of </source> + <location filename="../../fileExistsDialog.cpp" line="102"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileExistsDialog.cpp" line="112"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileIsSameDialog</name> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="14"/> <source>This files are the same file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="20"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="47"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="64"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="81"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="137"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="148"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="168"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="175"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="182"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.cpp" line="66"/> - <location filename="../../fileIsSameDialog.cpp" line="67"/> - <source>Copy of </source> + <location filename="../../fileIsSameDialog.cpp" line="87"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileIsSameDialog.cpp" line="97"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>folderExistsDialog</name> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="14"/> <source>This folders are the same folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="62"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="89"/> + <location filename="../../folderExistsDialog.ui" line="140"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="106"/> + <location filename="../../folderExistsDialog.ui" line="150"/> <source>Folder name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="200"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="211"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="218"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="225"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="232"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="239"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.cpp" line="61"/> - <source>Copy of </source> + <location filename="../../folderExistsDialog.cpp" line="29"/> + <source>Folder already exists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="85"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="95"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>options</name> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="23"/> <source>Transfer the file rights</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="33"/> <source>Keep the file date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="214"/> <source>Block size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="43"/> + <location filename="../../options.ui" line="198"/> <source>KB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="56"/> <source>Auto start the transfer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="66"/> <source>When folder error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="74"/> + <location filename="../../options.ui" line="95"/> <source>Ask</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="79"/> + <location filename="../../options.ui" line="105"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> - <source>When folder colision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="100"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="110"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="118"/> <source>Check if destination folder exists</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../options.ui" line="87"/> + <source>When folder collision</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="128"/> + <source>Checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="144"/> + <source>Only after error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="154"/> + <source>Ignore if impossible</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="171"/> + <source>Do checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="181"/> + <source>Enable OS buffer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="234"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="241"/> + <source>Renaming rules</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="191"/> + <source>OS buffer only if smaller than</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>scanFileOrFolder</name> <message> - <location filename="../../scanFileOrFolder.cpp" line="112"/> - <location filename="../../scanFileOrFolder.cpp" line="138"/> - <source>Copy of </source> + <location filename="../../scanFileOrFolder.cpp" line="218"/> + <location filename="../../scanFileOrFolder.cpp" line="282"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../scanFileOrFolder.cpp" line="228"/> + <location filename="../../scanFileOrFolder.cpp" line="292"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="157"/> + <location filename="../../scanFileOrFolder.cpp" line="326"/> <source>The folder not exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="159"/> + <location filename="../../scanFileOrFolder.cpp" line="328"/> <source>The folder is not readable</source> <translation type="unfinished"></translation> </message> diff --git a/plugins/CopyEngine/Ultracopier-0.3/Languages/es/translation.ts b/plugins/CopyEngine/Ultracopier-0.3/Languages/es/translation.ts index 1c3692c..fd90e5e 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/Languages/es/translation.ts +++ b/plugins/CopyEngine/Ultracopier-0.3/Languages/es/translation.ts @@ -1,459 +1,795 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0"> +<TS version="2.0" language="es" sourcelanguage="en"> <context> <name>AvancedQFile</name> <message> - <location filename="../../AvancedQFile.cpp" line="17"/> - <location filename="../../AvancedQFile.cpp" line="48"/> - <location filename="../../AvancedQFile.cpp" line="79"/> + <location filename="../../AvancedQFile.cpp" line="28"/> + <location filename="../../AvancedQFile.cpp" line="59"/> + <location filename="../../AvancedQFile.cpp" line="90"/> <source>Not supported on this platform</source> - <translation type="unfinished"></translation> + <translation>No es compatible con esta plataforma</translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="31"/> + <location filename="../../AvancedQFile.cpp" line="42"/> <source>Last modified date is wrong</source> - <translation type="unfinished"></translation> + <translation>Fecha de última modificación es incorrecto</translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="62"/> + <location filename="../../AvancedQFile.cpp" line="73"/> <source>Last access date is wrong</source> - <translation type="unfinished"></translation> + <translation>Fecha de último acceso es incorrecto</translation> + </message> +</context> +<context> + <name>Factory</name> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options error</source> + <translation>Error de opciones</translation> + </message> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation>Opciones del motor no está cargado, no se puede acceder a los filtros</translation> + </message> +</context> +<context> + <name>FilterRules</name> + <message> + <location filename="../../FilterRules.ui" line="33"/> + <source>Search:</source> + <translation>Buscar:</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="43"/> + <source>Search type:</source> + <translation>Tipo de búsqueda:</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="51"/> + <source>Raw text</source> + <translation>texto Fuente</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="56"/> + <source>Simplified regex</source> + <translation>Regex simplificado</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="61"/> + <source>Perl's regex</source> + <translation>Perl's regex</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="69"/> + <source>Apply on:</source> + <translation>Aplicar sobre:</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="77"/> + <source>File</source> + <translation>Archivos</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="82"/> + <source>Folder</source> + <translation>Carpeta</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="87"/> + <source>File and folder</source> + <translation>Archivos y carpeta</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="95"/> + <source>All string need match</source> + <translation>Todas las líneas tiene por qué coincidir</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="102"/> + <source>Checking</source> + <translation>Verification</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="115"/> + <source>Test string:</source> + <translation>Prueba de la cuerda:</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="17"/> + <source>Filters dialog</source> + <translation>Filtros de diálogo</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="108"/> + <source>The regex is valid</source> + <translation>La expresión regular es válido</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="125"/> + <source>The test string match with the regex</source> + <translation>La coincidencia con la cadena de prueba con la expresión regular</translation> + </message> +</context> +<context> + <name>Filters</name> + <message> + <location filename="../../Filters.ui" line="14"/> + <source>Filters</source> + <translation>Filtros</translation> + </message> + <message> + <location filename="../../Filters.ui" line="30"/> + <source>Exclusion filter</source> + <translation>Exclusión filtro</translation> + </message> + <message> + <location filename="../../Filters.ui" line="93"/> + <source>Inclusion filter</source> + <translation>La inclusión del filtro</translation> + </message> + <message> + <location filename="../../Filters.ui" line="105"/> + <source>None = Include all</source> + <translation>Ninguno = Incluya todos los</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="92"/> + <location filename="../../Filters.cpp" line="130"/> + <source>Raw text</source> + <translation>texto Fuente</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="95"/> + <location filename="../../Filters.cpp" line="133"/> + <source>Simplified regex</source> + <translation>Simplificado regex</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="98"/> + <location filename="../../Filters.cpp" line="136"/> + <source>Perl's regex</source> + <translation>Perl's regex</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="106"/> + <location filename="../../Filters.cpp" line="144"/> + <source>Only on file</source> + <translation>Sólo en el archivo</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="109"/> + <location filename="../../Filters.cpp" line="147"/> + <source>Only on folder</source> + <translation>Sólo en la carpeta</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="115"/> + <location filename="../../Filters.cpp" line="153"/> + <location filename="../../Filters.cpp" line="215"/> + <location filename="../../Filters.cpp" line="254"/> + <source>Full match</source> + <translation>Partido completo</translation> + </message> +</context> +<context> + <name>ListThread</name> + <message> + <location filename="../../ListThread.cpp" line="1162"/> + <source>Unable do to move or copy item into wrong forced mode: %1</source> + <translation>No se puede hacer para mover o copiar elemento en modo incorrecto obligado: %1</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1169"/> + <source>Unable to save the transfer list: %1</source> + <translation>No se puede guardar la lista de transferencias: %1</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1185"/> + <source>Problem at the reading, or file size is null</source> + <translation>Problema en la lectura, o el tamaño del archivo es nulo</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1192"/> + <source>Wrong header: "%1"</source> + <translation>Encabezado incorrecto: "%1"</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1201"/> + <source>The transfer list is in mixed mode, but this instance is not in this mode</source> + <translation>La lista de transferencia está en modo mixto, pero este caso no es de este modo</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1210"/> + <source>The transfer list is in copy mode, but this instance is not in this mode</source> + <translation>La lista de transferencia está en el modo de copia, pero esta instancia no está en este modo</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1216"/> + <source>The transfer list is in move mode, but this instance is not in this mode</source> + <translation>La lista de transferencia es el modo de desplazamiento, pero esta instancia no está en este modo</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1263"/> + <source>Some error have been found during the line parsing</source> + <translation>Algunos errores han sido encontrados durante el análisis de línea</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1269"/> + <source>Unable to open the transfer list: %1</source> + <translation>No se puede abrir la lista de transferencias: %1</translation> </message> </context> <context> <name>MkPath</name> <message> - <location filename="../../MkPath.cpp" line="51"/> + <location filename="../../MkPath.cpp" line="62"/> <source>Unable to create the folder</source> - <translation type="unfinished"></translation> + <translation>No se puede crear la carpeta</translation> </message> </context> <context> <name>ReadThread</name> <message> - <location filename="../../ReadThread.cpp" line="231"/> + <location filename="../../ReadThread.cpp" line="154"/> + <location filename="../../ReadThread.cpp" line="316"/> <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> + <translation>No se puede leer el archivo de origen: </translation> </message> -</context> -<context> - <name>RmPath</name> <message> - <location filename="../../RmPath.cpp" line="51"/> - <source>Unable to remove the folder</source> - <translation type="unfinished"></translation> + <location filename="../../ReadThread.cpp" line="193"/> + <location filename="../../ReadThread.cpp" line="373"/> + <source>File truncated during the read, possible data change</source> + <translation>Archivo truncada durante el cambio de lectura, los datos posibles</translation> </message> </context> <context> - <name>TransferThread</name> + <name>RenamingRules</name> + <message> + <location filename="../../RenamingRules.ui" line="26"/> + <source>First renaming</source> + <translation>En primer lugar el cambio de nombre</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="32"/> + <source>%name% - copy</source> + <extracomment>%name% should not be translated</extracomment> + <translation>%name% - copia</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="39"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p></body></html></source> + <extracomment> should not be translated</extracomment> + <translation><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> para el nombre del archivo original</p></body></html></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="49"/> + <source>Second renaming</source> + <translation>En segundo lugar el cambio de nombre</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="55"/> + <source>%name% - copy (%number%)</source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation>%name% - copia (%number%)</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="62"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p><p><span style=" font-weight:600;">%number%</span> for the extra number</p></body></html></source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> para el nombre del archivo original</p><p><span style=" font-weight:600;">%number%</span> para el número adicional</p></body></html></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="39"/> + <location filename="../../RenamingRules.cpp" line="62"/> + <source>%1 - copy</source> + <translation>%1 - copia</translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="43"/> + <location filename="../../RenamingRules.cpp" line="73"/> + <source>%1 - copy (%2)</source> + <translation>%1 - copia (%2)</translation> + </message> <message> - <location filename="../../TransferThread.cpp" line="281"/> - <location filename="../../TransferThread.cpp" line="282"/> - <source>Copy of </source> - <translation type="unfinished"></translation> + <location filename="../../RenamingRules.ui" line="14"/> + <source>Renaming rules</source> + <translation>Reglas de Cambio de nombre</translation> </message> </context> <context> - <name>copyEngine</name> + <name>RmPath</name> <message> - <location filename="../../copyEngine.cpp" line="124"/> - <location filename="../../copyEngine.cpp" line="141"/> - <source>Select destination directory</source> - <translation type="unfinished"></translation> + <location filename="../../RmPath.cpp" line="59"/> + <source>Unable to remove the folder</source> + <translation>No se puede eliminar la carpeta</translation> </message> +</context> +<context> + <name>TransferThread</name> <message> - <location filename="../../copyEngine.cpp" line="188"/> - <location filename="../../copyEngine.cpp" line="201"/> - <source>Ask</source> - <translation type="unfinished"></translation> + <location filename="../../TransferThread.cpp" line="311"/> + <source>%1 - copy</source> + <translation>%1 - copia</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="189"/> - <location filename="../../copyEngine.cpp" line="202"/> - <source>Skip</source> - <translation type="unfinished"></translation> + <location filename="../../TransferThread.cpp" line="321"/> + <source>%1 - copy (%2)</source> + <translation>%1 - copia (%2)</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="190"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> + <location filename="../../TransferThread.cpp" line="626"/> + <source>The checksums not match</source> + <translation>Las sumas de comprobación no coincide</translation> </message> +</context> +<context> + <name>WriteThread</name> <message> - <location filename="../../copyEngine.cpp" line="191"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> + <location filename="../../WriteThread.cpp" line="443"/> + <source>Unable to read the source file: </source> + <translation>No se puede leer el archivo de origen: </translation> </message> <message> - <location filename="../../copyEngine.cpp" line="192"/> - <source>Overwrite if not same modification date</source> - <translation type="unfinished"></translation> + <location filename="../../WriteThread.cpp" line="481"/> + <source>File truncated during the read, possible data change</source> + <translation>Archivo truncada durante el cambio de lectura, los datos posibles</translation> </message> +</context> +<context> + <name>copyEngine</name> <message> - <location filename="../../copyEngine.cpp" line="193"/> - <source>Rename</source> - <translation type="unfinished"></translation> + <location filename="../../copyEngine.cpp" line="257"/> + <location filename="../../copyEngine.cpp" line="275"/> + <source>The engine is forced to move, you can't copy with it</source> + <translation>El motor se ve obligado a moverse, no se puede copiar con ella</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="203"/> - <source>Put to end of the list</source> - <translation type="unfinished"></translation> + <location filename="../../copyEngine.cpp" line="286"/> + <location filename="../../copyEngine.cpp" line="304"/> + <source>The engine is forced to copy, you can't move with it</source> + <translation>El motor se ve obligado a copiar, no te puedes mover con él</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="225"/> - <source>Select source directory</source> - <translation type="unfinished"></translation> + <location filename="../../copyEngine.cpp" line="511"/> + <source>The mode have been forced previously, it's internal error, please report it</source> + <translation>El modo se han visto obligados con anterioridad, es un error interno, por favor repórtelo</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="239"/> - <source>Select one or more files to open</source> - <translation type="unfinished"></translation> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options error</source> + <translation>Opciones de error</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="241"/> - <source>All files</source> - <translation type="unfinished"></translation> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation>Opciones del motor no está cargado, no se puede acceder a los filtros</translation> </message> </context> <context> <name>fileErrorDialog</name> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="14"/> <source>Error on file</source> - <translation type="unfinished"></translation> + <translation>Error en el archivo</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="20"/> <source>Error</source> - <translation type="unfinished"></translation> + <translation>Error</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="56"/> <source>Size</source> - <translation type="unfinished"></translation> + <translation>Tamaño</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="73"/> <source>Modified</source> - <translation type="unfinished"></translation> + <translation>Modificado</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="90"/> <source>File name</source> - <translation type="unfinished"></translation> + <translation>Nombre de archivo</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="136"/> <source>&Always do this action</source> - <translation type="unfinished"></translation> + <translation>Siempre hacer esta acción</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="156"/> <source>Put to bottom</source> - <translation type="unfinished"></translation> + <translation>Ponga a abajo</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="163"/> <source>Retry</source> - <translation type="unfinished"></translation> + <translation>Reintentar</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="170"/> <source>&Skip</source> - <translation type="unfinished"></translation> + <translation>Omitir</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="177"/> <source>&Cancel</source> - <translation type="unfinished"></translation> + <translation>Cancelar</translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="29"/> + <source>Error on folder</source> + <translation>Error en la carpeta</translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="32"/> + <source>Folder name</source> + <translation>Nombre de la carpeta</translation> </message> </context> <context> <name>fileExistsDialog</name> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="14"/> <source>The file exists</source> - <translation type="unfinished"></translation> + <translation>El archivo ya existe</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="34"/> <source>Source</source> - <translation type="unfinished"></translation> + <translation>Fuente</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="50"/> <source>Destination</source> - <translation type="unfinished"></translation> + <translation>Destino</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="82"/> + <location filename="../../fileExistsDialog.ui" line="153"/> <source>Size</source> - <translation type="unfinished"></translation> + <translation>Tamaño</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="99"/> + <location filename="../../fileExistsDialog.ui" line="170"/> <source>Modified</source> - <translation type="unfinished"></translation> + <translation>Modificado</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="116"/> + <location filename="../../fileExistsDialog.ui" line="187"/> <source>File name</source> - <translation type="unfinished"></translation> + <translation>Nombre de archivo</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="243"/> <source>Suggest new &name</source> - <translation type="unfinished"></translation> + <translation>Sugerir nuevo nombre</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="254"/> <source>&Always do this action</source> - <translation type="unfinished"></translation> + <translation>Siempre hacer esta acción</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="274"/> <source>&Rename</source> - <translation type="unfinished"></translation> + <translation>Cambiar el nombre</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="281"/> <source>&Overwrite</source> - <translation type="unfinished"></translation> + <translation>Sobrescribir</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="291"/> <source>&Skip</source> - <translation type="unfinished"></translation> + <translation>Omitir</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="298"/> <source>&Cancel</source> - <translation type="unfinished"></translation> + <translation>Cancelar</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="307"/> <source>Overwrite if newer</source> - <translation type="unfinished"></translation> + <translation>Sobrescribir si nuevo</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="312"/> <source>Overwrite if not same modification date</source> - <translation type="unfinished"></translation> + <translation>Sobrescribir si no es misma fecha de modificación</translation> + </message> + <message> + <location filename="../../fileExistsDialog.cpp" line="102"/> + <source>%1 - copy</source> + <translation>%1 - copia</translation> </message> <message> - <location filename="../../fileExistsDialog.cpp" line="70"/> - <location filename="../../fileExistsDialog.cpp" line="71"/> - <source>Copy of </source> - <translation type="unfinished"></translation> + <location filename="../../fileExistsDialog.cpp" line="112"/> + <source>%1 - copy (%2)</source> + <translation>%1 - copia (%2)</translation> </message> </context> <context> <name>fileIsSameDialog</name> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="14"/> <source>This files are the same file</source> - <translation type="unfinished"></translation> + <translation>Estos archivos son el mismo archivo</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="20"/> <source>The source and destination is same</source> - <translation type="unfinished"></translation> + <translation>La fuente y el destino es el mismo</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="47"/> <source>Size</source> - <translation type="unfinished"></translation> + <translation>Tamaño</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="64"/> <source>Modified</source> - <translation type="unfinished"></translation> + <translation>Modificado</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="81"/> <source>File name</source> - <translation type="unfinished"></translation> + <translation>Nombre de archivo</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="137"/> <source>Suggest new &name</source> - <translation type="unfinished"></translation> + <translation>Sugerir nuevo nombre</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="148"/> <source>&Always do this action</source> - <translation type="unfinished"></translation> + <translation>Siempre hacer esta acción</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="168"/> <source>&Rename</source> - <translation type="unfinished"></translation> + <translation>Cambiar el nombre</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="175"/> <source>&Skip</source> - <translation type="unfinished"></translation> + <translation>Omitir</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="182"/> <source>&Cancel</source> - <translation type="unfinished"></translation> + <translation>Cancelar</translation> </message> <message> - <location filename="../../fileIsSameDialog.cpp" line="66"/> - <location filename="../../fileIsSameDialog.cpp" line="67"/> - <source>Copy of </source> - <translation type="unfinished"></translation> + <location filename="../../fileIsSameDialog.cpp" line="87"/> + <source>%1 - copy</source> + <translation>%1 - copia</translation> + </message> + <message> + <location filename="../../fileIsSameDialog.cpp" line="97"/> + <source>%1 - copy (%2)</source> + <translation>%1 - copia (%2)</translation> </message> </context> <context> <name>folderExistsDialog</name> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="14"/> <source>This folders are the same folder</source> - <translation type="unfinished"></translation> + <translation>Esta carpeta es la misma carpeta</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="34"/> <source>Source</source> - <translation type="unfinished"></translation> + <translation>Fuente</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="50"/> <source>Destination</source> - <translation type="unfinished"></translation> + <translation>Destino</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="62"/> <source>The source and destination is same</source> - <translation type="unfinished"></translation> + <translation>La fuente y el destino es el mismo</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="89"/> + <location filename="../../folderExistsDialog.ui" line="140"/> <source>Modified</source> - <translation type="unfinished"></translation> + <translation>Modificado</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="106"/> + <location filename="../../folderExistsDialog.ui" line="150"/> <source>Folder name</source> - <translation type="unfinished"></translation> + <translation>Nombre de la carpeta</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="200"/> <source>Suggest new &name</source> - <translation type="unfinished"></translation> + <translation>Sugerir nuevo nombre</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="211"/> <source>&Always do this action</source> - <translation type="unfinished"></translation> + <translation>Siempre hacer esta acción</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="218"/> <source>&Rename</source> - <translation type="unfinished"></translation> + <translation>Cambiar el nombre</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="225"/> <source>Merge</source> - <translation type="unfinished"></translation> + <translation>Unir</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="232"/> <source>Skip</source> - <translation type="unfinished"></translation> + <translation>Omitir</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="239"/> <source>&Cancel</source> - <translation type="unfinished"></translation> + <translation>Cancelar</translation> </message> <message> - <location filename="../../folderExistsDialog.cpp" line="61"/> - <source>Copy of </source> - <translation type="unfinished"></translation> + <location filename="../../folderExistsDialog.cpp" line="29"/> + <source>Folder already exists</source> + <translation>Carpeta ya existe</translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="85"/> + <source>%1 - copy</source> + <translation>%1 - copia</translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="95"/> + <source>%1 - copy (%2)</source> + <translation>%1 - copia (%2)</translation> </message> </context> <context> <name>options</name> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="23"/> <source>Transfer the file rights</source> - <translation type="unfinished"></translation> + <translation>Transferencia de los derechos de archivo</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="33"/> <source>Keep the file date</source> - <translation type="unfinished"></translation> + <translation>Mantener la fecha de archivo</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="214"/> <source>Block size</source> - <translation type="unfinished"></translation> + <translation>Tamaño del bloque</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="43"/> + <location filename="../../options.ui" line="198"/> <source>KB</source> - <translation type="unfinished"></translation> + <translation>KB</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="56"/> <source>Auto start the transfer</source> - <translation type="unfinished"></translation> + <translation>Auto iniciar la transferencia</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="66"/> <source>When folder error</source> - <translation type="unfinished"></translation> + <translation>Cuando el error carpeta</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="74"/> + <location filename="../../options.ui" line="95"/> <source>Ask</source> - <translation type="unfinished"></translation> + <translation>Pedir</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="79"/> + <location filename="../../options.ui" line="105"/> <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../options.ui"/> - <source>When folder colision</source> - <translation type="unfinished"></translation> + <translation>Omitir</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="100"/> <source>Merge</source> - <translation type="unfinished"></translation> + <translation>Unir</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="110"/> <source>Rename</source> - <translation type="unfinished"></translation> + <translation>Cambiar el nombre</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="118"/> <source>Check if destination folder exists</source> - <translation type="unfinished"></translation> + <translation>Compruebe si existe la carpeta de destino</translation> + </message> + <message> + <location filename="../../options.ui" line="87"/> + <source>When folder collision</source> + <translation>Cuando la colisión carpeta</translation> + </message> + <message> + <location filename="../../options.ui" line="128"/> + <source>Checksum</source> + <translation>Suma de comprobación</translation> + </message> + <message> + <location filename="../../options.ui" line="144"/> + <source>Only after error</source> + <translation>Sólo después de un error</translation> + </message> + <message> + <location filename="../../options.ui" line="154"/> + <source>Ignore if impossible</source> + <translation>No haga caso si no es posible</translation> + </message> + <message> + <location filename="../../options.ui" line="171"/> + <source>Do checksum</source> + <translation>Hacer suma de comprobación</translation> + </message> + <message> + <location filename="../../options.ui" line="181"/> + <source>Enable OS buffer</source> + <translation>Habilitar el OS de amortiguación</translation> + </message> + <message> + <location filename="../../options.ui" line="234"/> + <source>Filters</source> + <translation>Filtros</translation> + </message> + <message> + <location filename="../../options.ui" line="241"/> + <source>Renaming rules</source> + <translation>Reglas de Cambio de nombre</translation> + </message> + <message> + <location filename="../../options.ui" line="191"/> + <source>OS buffer only if smaller than</source> + <translation>OS de amortiguación sólo si menor que</translation> </message> </context> <context> <name>scanFileOrFolder</name> <message> - <location filename="../../scanFileOrFolder.cpp" line="112"/> - <location filename="../../scanFileOrFolder.cpp" line="138"/> - <source>Copy of </source> - <translation type="unfinished"></translation> + <location filename="../../scanFileOrFolder.cpp" line="218"/> + <location filename="../../scanFileOrFolder.cpp" line="282"/> + <source>%1 - copy</source> + <translation>%1 - copia</translation> + </message> + <message> + <location filename="../../scanFileOrFolder.cpp" line="228"/> + <location filename="../../scanFileOrFolder.cpp" line="292"/> + <source>%1 - copy (%2)</source> + <translation>%1 - copia (%2)</translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="157"/> + <location filename="../../scanFileOrFolder.cpp" line="326"/> <source>The folder not exists</source> - <translation type="unfinished"></translation> + <translation>La carpeta no existe</translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="159"/> + <location filename="../../scanFileOrFolder.cpp" line="328"/> <source>The folder is not readable</source> - <translation type="unfinished"></translation> + <translation>La carpeta no se puede leer</translation> </message> </context> </TS> diff --git a/plugins/CopyEngine/Ultracopier-0.3/Languages/fr/translation.ts b/plugins/CopyEngine/Ultracopier-0.3/Languages/fr/translation.ts index dcf87c6..56e2373 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/Languages/fr/translation.ts +++ b/plugins/CopyEngine/Ultracopier-0.3/Languages/fr/translation.ts @@ -4,27 +4,229 @@ <context> <name>AvancedQFile</name> <message> - <location filename="../../AvancedQFile.cpp" line="17"/> - <location filename="../../AvancedQFile.cpp" line="48"/> - <location filename="../../AvancedQFile.cpp" line="79"/> + <location filename="../../AvancedQFile.cpp" line="28"/> + <location filename="../../AvancedQFile.cpp" line="59"/> + <location filename="../../AvancedQFile.cpp" line="90"/> <source>Not supported on this platform</source> <translation>Non supporté sur cette plateforme</translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="31"/> + <location filename="../../AvancedQFile.cpp" line="42"/> <source>Last modified date is wrong</source> <translation>Date de dernière modification du fichier fausse</translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="62"/> + <location filename="../../AvancedQFile.cpp" line="73"/> <source>Last access date is wrong</source> <translation>Date du dernier accès au fichier fausse</translation> </message> </context> <context> + <name>Factory</name> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options error</source> + <translation>Erreur d'options</translation> + </message> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation>Moteur d'options non chargé, impossible d'accédrer aux filtres</translation> + </message> +</context> +<context> + <name>FilterRules</name> + <message> + <location filename="../../FilterRules.ui" line="33"/> + <source>Search:</source> + <translation>Recherche:</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="43"/> + <source>Search type:</source> + <translation>Type de recherche:</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="51"/> + <source>Raw text</source> + <translation>Texte brute</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="56"/> + <source>Simplified regex</source> + <translation>Regex simplifié</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="61"/> + <source>Perl's regex</source> + <translation>Regex perl</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="69"/> + <source>Apply on:</source> + <translation>Appliquer sur:</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="77"/> + <source>File</source> + <translation>Fichier</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="82"/> + <source>Folder</source> + <translation>Dossier</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="87"/> + <source>File and folder</source> + <translation>Fichier et dossier</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="95"/> + <source>All string need match</source> + <translation>Toute la chaine doit correspondre</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="102"/> + <source>Checking</source> + <translation>Vérification</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="115"/> + <source>Test string:</source> + <translation>Chaine de teste:</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="17"/> + <source>Filters dialog</source> + <translation>Dialogue des filtres</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="108"/> + <source>The regex is valid</source> + <translation>La regex est valid</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="125"/> + <source>The test string match with the regex</source> + <translation>La chaine de teste corresponds avec la regex</translation> + </message> +</context> +<context> + <name>Filters</name> + <message> + <location filename="../../Filters.ui" line="14"/> + <source>Filters</source> + <translation>Filtres</translation> + </message> + <message> + <location filename="../../Filters.ui" line="30"/> + <source>Exclusion filter</source> + <translation>Filtre d'exclusion</translation> + </message> + <message> + <location filename="../../Filters.ui" line="93"/> + <source>Inclusion filter</source> + <translation>Filtre d'inclusion</translation> + </message> + <message> + <location filename="../../Filters.ui" line="105"/> + <source>None = Include all</source> + <translation>Aucun = tout inclure</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="92"/> + <location filename="../../Filters.cpp" line="130"/> + <source>Raw text</source> + <translation>Texte brute</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="95"/> + <location filename="../../Filters.cpp" line="133"/> + <source>Simplified regex</source> + <translation>Regex simplifié</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="98"/> + <location filename="../../Filters.cpp" line="136"/> + <source>Perl's regex</source> + <translation>Regex perl</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="106"/> + <location filename="../../Filters.cpp" line="144"/> + <source>Only on file</source> + <translation>Appliquer sur fichier</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="109"/> + <location filename="../../Filters.cpp" line="147"/> + <source>Only on folder</source> + <translation>Appliquer sur dossier</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="115"/> + <location filename="../../Filters.cpp" line="153"/> + <location filename="../../Filters.cpp" line="215"/> + <location filename="../../Filters.cpp" line="254"/> + <source>Full match</source> + <translation>Correspondance totale</translation> + </message> +</context> +<context> + <name>ListThread</name> + <message> + <location filename="../../ListThread.cpp" line="1162"/> + <source>Unable do to move or copy item into wrong forced mode: %1</source> + <translation>Impossible de faire un déplacement ou une copie dans le mauvais mode forcé: %1</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1169"/> + <source>Unable to save the transfer list: %1</source> + <translation>Impossible de sauvegarde la liste de transfer: %1</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1185"/> + <source>Problem at the reading, or file size is null</source> + <translation>Probléme à la lecture, ou fichier de taille nulle</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1192"/> + <source>Wrong header: "%1"</source> + <translation>Mauvaise en-tête: "%1"</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1201"/> + <source>The transfer list is in mixed mode, but this instance is not in this mode</source> + <translation>La list de transfer est en mode mixte, mais l'instance n'est pas dans ce mode</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1210"/> + <source>The transfer list is in copy mode, but this instance is not in this mode</source> + <translation>La list de transfer est en mode copie, mais l'instance n'est pas dans ce mode</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1216"/> + <source>The transfer list is in move mode, but this instance is not in this mode</source> + <translation>La list de transfer est en mode déplacement, mais l'instance n'est pas dans ce mode</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1263"/> + <source>Some error have been found during the line parsing</source> + <translation>Quelque erreur ont été trouvé durrant l'analise des lignes</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1269"/> + <source>Unable to open the transfer list: %1</source> + <translation>Impossible d'ouvrir la list de transfer: %1</translation> + </message> +</context> +<context> <name>MkPath</name> <message> - <location filename="../../MkPath.cpp" line="52"/> + <location filename="../../MkPath.cpp" line="62"/> <source>Unable to create the folder</source> <translation>Impossible de créer le répertoire</translation> </message> @@ -32,426 +234,564 @@ <context> <name>ReadThread</name> <message> - <location filename="../../ReadThread.cpp" line="234"/> + <location filename="../../ReadThread.cpp" line="154"/> + <location filename="../../ReadThread.cpp" line="316"/> <source>Unable to read the source file: </source> <translation>Impossible de lire le fichier source: </translation> </message> -</context> -<context> - <name>RmPath</name> <message> - <location filename="../../RmPath.cpp" line="52"/> - <source>Unable to remove the folder</source> - <translation>Impossible de supprimer le répertoire</translation> + <location filename="../../ReadThread.cpp" line="193"/> + <location filename="../../ReadThread.cpp" line="373"/> + <source>File truncated during the read, possible data change</source> + <translation>Fichier diminué durrant la lecture, possible changement de données</translation> </message> </context> <context> - <name>TransferThread</name> + <name>RenamingRules</name> + <message> + <location filename="../../RenamingRules.ui" line="26"/> + <source>First renaming</source> + <translation>Premier renommage</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="32"/> + <source>%name% - copy</source> + <extracomment>%name% should not be translated</extracomment> + <translatorcomment>variables need never be translated</translatorcomment> + <translation>%name% - copie</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="39"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p></body></html></source> + <extracomment> should not be translated</extracomment> + <translatorcomment>variables need never be translated</translatorcomment> + <translation><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> pour le nom originel</p></body></html></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="49"/> + <source>Second renaming</source> + <translation>Seconds renommage</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="55"/> + <source>%name% - copy (%number%)</source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translatorcomment>variables need never be translated</translatorcomment> + <translation>%name% - copie (%number%)</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="62"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p><p><span style=" font-weight:600;">%number%</span> for the extra number</p></body></html></source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translatorcomment>variables need never be translated</translatorcomment> + <translation><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> pour le nom originel</p><p><span style=" font-weight:600;">%number%</span> pour le nombre extra</p></body></html></translation> + </message> <message> - <location filename="../../TransferThread.cpp" line="281"/> - <location filename="../../TransferThread.cpp" line="282"/> - <source>Copy of </source> - <translation>Copie de </translation> + <location filename="../../RenamingRules.cpp" line="39"/> + <location filename="../../RenamingRules.cpp" line="62"/> + <source>%1 - copy</source> + <translation>%1 - copie</translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="43"/> + <location filename="../../RenamingRules.cpp" line="73"/> + <source>%1 - copy (%2)</source> + <translation>%1 - copie (%2)</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="14"/> + <source>Renaming rules</source> + <translation>Régles de renommage</translation> </message> </context> <context> - <name>copyEngine</name> + <name>RmPath</name> <message> - <location filename="../../copyEngine.cpp" line="225"/> - <source>Select source directory</source> - <translation>Choisir le répertoire source</translation> + <location filename="../../RmPath.cpp" line="59"/> + <source>Unable to remove the folder</source> + <translation>Impossible de supprimer le répertoire</translation> </message> +</context> +<context> + <name>TransferThread</name> <message> - <location filename="../../copyEngine.cpp" line="239"/> - <source>Select one or more files to open</source> - <translation>Sélectionnez un ou plusieurs fichiers à ouvrir</translation> + <location filename="../../TransferThread.cpp" line="311"/> + <source>%1 - copy</source> + <translation>%1 - copie</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="241"/> - <source>All files</source> - <translation>Tous les fichiers</translation> + <location filename="../../TransferThread.cpp" line="321"/> + <source>%1 - copy (%2)</source> + <translation>%1 - copie (%2)</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="124"/> - <location filename="../../copyEngine.cpp" line="141"/> - <source>Select destination directory</source> - <translation>Selectionnez le répertoire de destination</translation> + <location filename="../../TransferThread.cpp" line="626"/> + <source>The checksums not match</source> + <translation>Les checksums ne correspondent pas</translation> </message> +</context> +<context> + <name>WriteThread</name> <message> - <location filename="../../copyEngine.cpp" line="188"/> - <location filename="../../copyEngine.cpp" line="201"/> - <source>Ask</source> - <translation>Demander</translation> + <location filename="../../WriteThread.cpp" line="443"/> + <source>Unable to read the source file: </source> + <translation>Impossible de lire le fichier source: </translation> </message> <message> - <location filename="../../copyEngine.cpp" line="189"/> - <location filename="../../copyEngine.cpp" line="202"/> - <source>Skip</source> - <translation>Passer</translation> + <location filename="../../WriteThread.cpp" line="481"/> + <source>File truncated during the read, possible data change</source> + <translation>Fichier diminué durrant la lecture, possible changement de données</translation> </message> +</context> +<context> + <name>copyEngine</name> <message> - <location filename="../../copyEngine.cpp" line="190"/> - <source>Overwrite</source> - <translation>Ecraser</translation> + <location filename="../../copyEngine.cpp" line="257"/> + <location filename="../../copyEngine.cpp" line="275"/> + <source>The engine is forced to move, you can't copy with it</source> + <translation>Le moteur est forcé en déplacement, vous ne pouvez pas copier avec</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="191"/> - <source>Overwrite if newer</source> - <translation>Ecraser si plus récent</translation> + <location filename="../../copyEngine.cpp" line="286"/> + <location filename="../../copyEngine.cpp" line="304"/> + <source>The engine is forced to copy, you can't move with it</source> + <translation>Le moteur est forcé en copie, vous ne pouvez pas déplacer avec</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="192"/> - <source>Overwrite if the last modification dates are different</source> - <translation>Ecraser si les dates de modifications sont différentes</translation> + <location filename="../../copyEngine.cpp" line="511"/> + <source>The mode have been forced previously, it's internal error, please report it</source> + <translation>Le mode as été forcé précédement, c'est une erreur interne, merci de le repporter</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="193"/> - <source>Rename</source> - <translation>Renommer</translation> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options error</source> + <translation>Erreur d'options</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="203"/> - <source>Put to end of the list</source> - <translation>Mettre à la fin de la liste</translation> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation>Moteur d'options non chargé, impossible d'accédrer aux filtres</translation> </message> </context> <context> <name>fileErrorDialog</name> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="14"/> <source>Error on file</source> <translation>Erreur sur le fichier</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="20"/> <source>Error</source> <translation>Erreur</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="56"/> <source>Size</source> <translation>Taille</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="73"/> <source>Modified</source> <translation>Modifié</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="90"/> <source>File name</source> <translation>Nom de fichier</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="136"/> <source>&Always do this action</source> <translation>&Toujours effectuer cette action</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="156"/> <source>Put to bottom</source> <translation>Mettre à la fin</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="163"/> <source>Retry</source> <translation>Réessayer</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="170"/> <source>&Skip</source> <translation>&Passer</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="177"/> <source>&Cancel</source> <translation>&Annuler</translation> </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="29"/> + <source>Error on folder</source> + <translation>Erreur sur un dossier</translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="32"/> + <source>Folder name</source> + <translation>Nom de répertoire</translation> + </message> </context> <context> <name>fileExistsDialog</name> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="14"/> <source>The file exists</source> <translation>Le fichier existe</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="34"/> <source>Source</source> <translation>Source</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="50"/> <source>Destination</source> <translation>Destination</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="82"/> + <location filename="../../fileExistsDialog.ui" line="153"/> <source>Size</source> <translation>Taille</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="99"/> + <location filename="../../fileExistsDialog.ui" line="170"/> <source>Modified</source> <translation>Modifié</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="116"/> + <location filename="../../fileExistsDialog.ui" line="187"/> <source>File name</source> <translation>Nom de fichier</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="243"/> <source>Suggest new &name</source> <translation>Suggérer un &nouveau nom</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="254"/> <source>&Always do this action</source> <translation>&Toujours effectuer cette action</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="274"/> <source>&Rename</source> <translation>&Renommer</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="281"/> <source>&Overwrite</source> <translation>&Ecraser</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="291"/> <source>&Skip</source> <translation>&Passer</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="298"/> <source>&Cancel</source> <translation>&Annuler</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="307"/> <source>Overwrite if newer</source> <translation>Ecraser si plus récent</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="312"/> <source>Overwrite if not same modification date</source> <translation>Ecraser si la date de modification est différente</translation> </message> <message> - <location filename="../../fileExistsDialog.cpp" line="70"/> - <location filename="../../fileExistsDialog.cpp" line="71"/> - <source>Copy of </source> - <translation>Copie de </translation> + <location filename="../../fileExistsDialog.cpp" line="102"/> + <source>%1 - copy</source> + <translation>%1 - copie</translation> + </message> + <message> + <location filename="../../fileExistsDialog.cpp" line="112"/> + <source>%1 - copy (%2)</source> + <translation>%1 - copie (%2)</translation> </message> </context> <context> <name>fileIsSameDialog</name> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="14"/> <source>This files are the same file</source> <translation>Ces fichiers sont identiques</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="20"/> <source>The source and destination is same</source> <translation>La source et la destination sont identiques</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="47"/> <source>Size</source> <translation>Taille</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="64"/> <source>Modified</source> <translation>Modifié</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="81"/> <source>File name</source> <translation>Nom de fichier</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="137"/> <source>Suggest new &name</source> <translation>Suggérer un &nouveau nom</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="148"/> <source>&Always do this action</source> <translation>&Toujours effectuer cette action</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="168"/> <source>&Rename</source> <translation>&Renommer</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="175"/> <source>&Skip</source> <translation>&Passer</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="182"/> <source>&Cancel</source> <translation>&Annuler</translation> </message> <message> - <location filename="../../fileIsSameDialog.cpp" line="66"/> - <location filename="../../fileIsSameDialog.cpp" line="67"/> - <source>Copy of </source> - <translation>Copie de </translation> + <location filename="../../fileIsSameDialog.cpp" line="87"/> + <source>%1 - copy</source> + <translation>%1 - copie</translation> + </message> + <message> + <location filename="../../fileIsSameDialog.cpp" line="97"/> + <source>%1 - copy (%2)</source> + <translation>%1 - copie (%2)</translation> </message> </context> <context> <name>folderExistsDialog</name> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="14"/> <source>This folders are the same folder</source> <translation>Les répertoires sont identiques</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="34"/> <source>Source</source> <translation>Source</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="50"/> <source>Destination</source> <translation>Destination</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="62"/> <source>The source and destination is same</source> <translation>La source et la destination sont identiques</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="89"/> + <location filename="../../folderExistsDialog.ui" line="140"/> <source>Modified</source> <translation>Modifié</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="106"/> + <location filename="../../folderExistsDialog.ui" line="150"/> <source>Folder name</source> <translation>Nom de répertoire</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="200"/> <source>Suggest new &name</source> <translation>Suggérer un &nouveau nom</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="211"/> <source>&Always do this action</source> <translation>&Toujours effectuer cette action</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="218"/> <source>&Rename</source> <translation>&Renommer</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="225"/> <source>Merge</source> <translation>Fusionner</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="232"/> <source>Skip</source> <translation>Passer</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="239"/> <source>&Cancel</source> <translation>&Annuler</translation> </message> <message> - <location filename="../../folderExistsDialog.cpp" line="61"/> - <source>Copy of </source> - <translation>Copie de </translation> + <location filename="../../folderExistsDialog.cpp" line="29"/> + <source>Folder already exists</source> + <translation>Dossier déjà existant</translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="85"/> + <source>%1 - copy</source> + <translation>%1 - copie</translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="95"/> + <source>%1 - copy (%2)</source> + <translation>%1 - copie (%2)</translation> </message> </context> <context> <name>options</name> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="23"/> <source>Transfer the file rights</source> <translation>Transférer les droits des fichiers</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="33"/> <source>Keep the file date</source> <translation>Garder la date du fichier</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="66"/> <source>When folder error</source> <translation>En cas d'erreur de répertoire</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="74"/> + <location filename="../../options.ui" line="95"/> <source>Ask</source> <translation>Demander</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="79"/> + <location filename="../../options.ui" line="105"/> <source>Skip</source> <translation>Passer</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="100"/> <source>Merge</source> <translation>Fusionner</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="110"/> <source>Rename</source> <translation>Renommer</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="118"/> <source>Check if destination folder exists</source> <translation>Vérifier si le répertoire de destination existe</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="214"/> <source>Block size</source> <translation>Taille de block</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="43"/> + <location filename="../../options.ui" line="198"/> <source>KB</source> <translation>Ko</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="56"/> <source>Auto start the transfer</source> <translation>Démmarer automatiquement le transfert</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="87"/> <source>When folder collision</source> <translation>Lors d'une collision de dossier</translation> </message> + <message> + <location filename="../../options.ui" line="128"/> + <source>Checksum</source> + <translation>Checksum</translation> + </message> + <message> + <location filename="../../options.ui" line="144"/> + <source>Only after error</source> + <translation>Seulement après erreur</translation> + </message> + <message> + <location filename="../../options.ui" line="154"/> + <source>Ignore if impossible</source> + <translation>Ignorer si impossible</translation> + </message> + <message> + <location filename="../../options.ui" line="171"/> + <source>Do checksum</source> + <translation>Faire un checksum</translation> + </message> + <message> + <location filename="../../options.ui" line="181"/> + <source>Enable OS buffer</source> + <translation>Activer le buffer de l'OS</translation> + </message> + <message> + <location filename="../../options.ui" line="234"/> + <source>Filters</source> + <translation>Filtres</translation> + </message> + <message> + <location filename="../../options.ui" line="241"/> + <source>Renaming rules</source> + <translation>Régles de renommage</translation> + </message> + <message> + <location filename="../../options.ui" line="191"/> + <source>OS buffer only if smaller than</source> + <translation>Buffer de l'OS seulement si plus petit que</translation> + </message> </context> <context> <name>scanFileOrFolder</name> <message> - <location filename="../../scanFileOrFolder.cpp" line="112"/> - <location filename="../../scanFileOrFolder.cpp" line="138"/> - <source>Copy of </source> - <translation>Copie de </translation> + <location filename="../../scanFileOrFolder.cpp" line="218"/> + <location filename="../../scanFileOrFolder.cpp" line="282"/> + <source>%1 - copy</source> + <translation>%1 - copie</translation> + </message> + <message> + <location filename="../../scanFileOrFolder.cpp" line="228"/> + <location filename="../../scanFileOrFolder.cpp" line="292"/> + <source>%1 - copy (%2)</source> + <translation>%1 - copie (%2)</translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="157"/> + <location filename="../../scanFileOrFolder.cpp" line="326"/> <source>The folder not exists</source> <translation>Le répertoire n'existe pas</translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="159"/> + <location filename="../../scanFileOrFolder.cpp" line="328"/> <source>The folder is not readable</source> <translation>Le répertoire n'est pas lisible</translation> </message> diff --git a/plugins/CopyEngine/Ultracopier-0.3/Languages/hi/translation.ts b/plugins/CopyEngine/Ultracopier-0.3/Languages/hi/translation.ts index 1c3692c..0898631 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/Languages/hi/translation.ts +++ b/plugins/CopyEngine/Ultracopier-0.3/Languages/hi/translation.ts @@ -4,27 +4,229 @@ <context> <name>AvancedQFile</name> <message> - <location filename="../../AvancedQFile.cpp" line="17"/> - <location filename="../../AvancedQFile.cpp" line="48"/> - <location filename="../../AvancedQFile.cpp" line="79"/> + <location filename="../../AvancedQFile.cpp" line="28"/> + <location filename="../../AvancedQFile.cpp" line="59"/> + <location filename="../../AvancedQFile.cpp" line="90"/> <source>Not supported on this platform</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="31"/> + <location filename="../../AvancedQFile.cpp" line="42"/> <source>Last modified date is wrong</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="62"/> + <location filename="../../AvancedQFile.cpp" line="73"/> <source>Last access date is wrong</source> <translation type="unfinished"></translation> </message> </context> <context> + <name>Factory</name> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>FilterRules</name> + <message> + <location filename="../../FilterRules.ui" line="33"/> + <source>Search:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="43"/> + <source>Search type:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="51"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="56"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="61"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="69"/> + <source>Apply on:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="77"/> + <source>File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="82"/> + <source>Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="87"/> + <source>File and folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="95"/> + <source>All string need match</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="102"/> + <source>Checking</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="115"/> + <source>Test string:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="17"/> + <source>Filters dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="108"/> + <source>The regex is valid</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="125"/> + <source>The test string match with the regex</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Filters</name> + <message> + <location filename="../../Filters.ui" line="14"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="30"/> + <source>Exclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="93"/> + <source>Inclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="105"/> + <source>None = Include all</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="92"/> + <location filename="../../Filters.cpp" line="130"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="95"/> + <location filename="../../Filters.cpp" line="133"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="98"/> + <location filename="../../Filters.cpp" line="136"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="106"/> + <location filename="../../Filters.cpp" line="144"/> + <source>Only on file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="109"/> + <location filename="../../Filters.cpp" line="147"/> + <source>Only on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="115"/> + <location filename="../../Filters.cpp" line="153"/> + <location filename="../../Filters.cpp" line="215"/> + <location filename="../../Filters.cpp" line="254"/> + <source>Full match</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ListThread</name> + <message> + <location filename="../../ListThread.cpp" line="1162"/> + <source>Unable do to move or copy item into wrong forced mode: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1169"/> + <source>Unable to save the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1185"/> + <source>Problem at the reading, or file size is null</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1192"/> + <source>Wrong header: "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1201"/> + <source>The transfer list is in mixed mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1210"/> + <source>The transfer list is in copy mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1216"/> + <source>The transfer list is in move mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1263"/> + <source>Some error have been found during the line parsing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1269"/> + <source>Unable to open the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>MkPath</name> <message> - <location filename="../../MkPath.cpp" line="51"/> + <location filename="../../MkPath.cpp" line="62"/> <source>Unable to create the folder</source> <translation type="unfinished"></translation> </message> @@ -32,426 +234,560 @@ <context> <name>ReadThread</name> <message> - <location filename="../../ReadThread.cpp" line="231"/> + <location filename="../../ReadThread.cpp" line="154"/> + <location filename="../../ReadThread.cpp" line="316"/> <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>RmPath</name> <message> - <location filename="../../RmPath.cpp" line="51"/> - <source>Unable to remove the folder</source> + <location filename="../../ReadThread.cpp" line="193"/> + <location filename="../../ReadThread.cpp" line="373"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>TransferThread</name> + <name>RenamingRules</name> + <message> + <location filename="../../RenamingRules.ui" line="26"/> + <source>First renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="32"/> + <source>%name% - copy</source> + <extracomment>%name% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="39"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p></body></html></source> + <extracomment> should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="49"/> + <source>Second renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="55"/> + <source>%name% - copy (%number%)</source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="62"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p><p><span style=" font-weight:600;">%number%</span> for the extra number</p></body></html></source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="39"/> + <location filename="../../RenamingRules.cpp" line="62"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="43"/> + <location filename="../../RenamingRules.cpp" line="73"/> + <source>%1 - copy (%2)</source> + <translation type="unfinished"></translation> + </message> <message> - <location filename="../../TransferThread.cpp" line="281"/> - <location filename="../../TransferThread.cpp" line="282"/> - <source>Copy of </source> + <location filename="../../RenamingRules.ui" line="14"/> + <source>Renaming rules</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>copyEngine</name> + <name>RmPath</name> <message> - <location filename="../../copyEngine.cpp" line="124"/> - <location filename="../../copyEngine.cpp" line="141"/> - <source>Select destination directory</source> + <location filename="../../RmPath.cpp" line="59"/> + <source>Unable to remove the folder</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>TransferThread</name> <message> - <location filename="../../copyEngine.cpp" line="188"/> - <location filename="../../copyEngine.cpp" line="201"/> - <source>Ask</source> + <location filename="../../TransferThread.cpp" line="311"/> + <source>%1 - copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="189"/> - <location filename="../../copyEngine.cpp" line="202"/> - <source>Skip</source> + <location filename="../../TransferThread.cpp" line="321"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="190"/> - <source>Overwrite</source> + <location filename="../../TransferThread.cpp" line="626"/> + <source>The checksums not match</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>WriteThread</name> <message> - <location filename="../../copyEngine.cpp" line="191"/> - <source>Overwrite if newer</source> + <location filename="../../WriteThread.cpp" line="443"/> + <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="192"/> - <source>Overwrite if not same modification date</source> + <location filename="../../WriteThread.cpp" line="481"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>copyEngine</name> <message> - <location filename="../../copyEngine.cpp" line="193"/> - <source>Rename</source> + <location filename="../../copyEngine.cpp" line="257"/> + <location filename="../../copyEngine.cpp" line="275"/> + <source>The engine is forced to move, you can't copy with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="203"/> - <source>Put to end of the list</source> + <location filename="../../copyEngine.cpp" line="286"/> + <location filename="../../copyEngine.cpp" line="304"/> + <source>The engine is forced to copy, you can't move with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="225"/> - <source>Select source directory</source> + <location filename="../../copyEngine.cpp" line="511"/> + <source>The mode have been forced previously, it's internal error, please report it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="239"/> - <source>Select one or more files to open</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="241"/> - <source>All files</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options engine is not loaded, can't access to the filters</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileErrorDialog</name> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="14"/> <source>Error on file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="20"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="56"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="73"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="90"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="136"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="156"/> <source>Put to bottom</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="163"/> <source>Retry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="170"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="177"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="29"/> + <source>Error on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="32"/> + <source>Folder name</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>fileExistsDialog</name> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="14"/> <source>The file exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="82"/> + <location filename="../../fileExistsDialog.ui" line="153"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="99"/> + <location filename="../../fileExistsDialog.ui" line="170"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="116"/> + <location filename="../../fileExistsDialog.ui" line="187"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="243"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="254"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="274"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="281"/> <source>&Overwrite</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="291"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="298"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="307"/> <source>Overwrite if newer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="312"/> <source>Overwrite if not same modification date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.cpp" line="70"/> - <location filename="../../fileExistsDialog.cpp" line="71"/> - <source>Copy of </source> + <location filename="../../fileExistsDialog.cpp" line="102"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileExistsDialog.cpp" line="112"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileIsSameDialog</name> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="14"/> <source>This files are the same file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="20"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="47"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="64"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="81"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="137"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="148"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="168"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="175"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="182"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.cpp" line="66"/> - <location filename="../../fileIsSameDialog.cpp" line="67"/> - <source>Copy of </source> + <location filename="../../fileIsSameDialog.cpp" line="87"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileIsSameDialog.cpp" line="97"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>folderExistsDialog</name> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="14"/> <source>This folders are the same folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="62"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="89"/> + <location filename="../../folderExistsDialog.ui" line="140"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="106"/> + <location filename="../../folderExistsDialog.ui" line="150"/> <source>Folder name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="200"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="211"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="218"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="225"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="232"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="239"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.cpp" line="61"/> - <source>Copy of </source> + <location filename="../../folderExistsDialog.cpp" line="29"/> + <source>Folder already exists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="85"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="95"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>options</name> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="23"/> <source>Transfer the file rights</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="33"/> <source>Keep the file date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="214"/> <source>Block size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="43"/> + <location filename="../../options.ui" line="198"/> <source>KB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="56"/> <source>Auto start the transfer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="66"/> <source>When folder error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="74"/> + <location filename="../../options.ui" line="95"/> <source>Ask</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="79"/> + <location filename="../../options.ui" line="105"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> - <source>When folder colision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="100"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="110"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="118"/> <source>Check if destination folder exists</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../options.ui" line="87"/> + <source>When folder collision</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="128"/> + <source>Checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="144"/> + <source>Only after error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="154"/> + <source>Ignore if impossible</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="171"/> + <source>Do checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="181"/> + <source>Enable OS buffer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="234"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="241"/> + <source>Renaming rules</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="191"/> + <source>OS buffer only if smaller than</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>scanFileOrFolder</name> <message> - <location filename="../../scanFileOrFolder.cpp" line="112"/> - <location filename="../../scanFileOrFolder.cpp" line="138"/> - <source>Copy of </source> + <location filename="../../scanFileOrFolder.cpp" line="218"/> + <location filename="../../scanFileOrFolder.cpp" line="282"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../scanFileOrFolder.cpp" line="228"/> + <location filename="../../scanFileOrFolder.cpp" line="292"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="157"/> + <location filename="../../scanFileOrFolder.cpp" line="326"/> <source>The folder not exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="159"/> + <location filename="../../scanFileOrFolder.cpp" line="328"/> <source>The folder is not readable</source> <translation type="unfinished"></translation> </message> diff --git a/plugins/CopyEngine/Ultracopier-0.3/Languages/id/translation.ts b/plugins/CopyEngine/Ultracopier-0.3/Languages/id/translation.ts index 1c3692c..0898631 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/Languages/id/translation.ts +++ b/plugins/CopyEngine/Ultracopier-0.3/Languages/id/translation.ts @@ -4,27 +4,229 @@ <context> <name>AvancedQFile</name> <message> - <location filename="../../AvancedQFile.cpp" line="17"/> - <location filename="../../AvancedQFile.cpp" line="48"/> - <location filename="../../AvancedQFile.cpp" line="79"/> + <location filename="../../AvancedQFile.cpp" line="28"/> + <location filename="../../AvancedQFile.cpp" line="59"/> + <location filename="../../AvancedQFile.cpp" line="90"/> <source>Not supported on this platform</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="31"/> + <location filename="../../AvancedQFile.cpp" line="42"/> <source>Last modified date is wrong</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="62"/> + <location filename="../../AvancedQFile.cpp" line="73"/> <source>Last access date is wrong</source> <translation type="unfinished"></translation> </message> </context> <context> + <name>Factory</name> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>FilterRules</name> + <message> + <location filename="../../FilterRules.ui" line="33"/> + <source>Search:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="43"/> + <source>Search type:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="51"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="56"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="61"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="69"/> + <source>Apply on:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="77"/> + <source>File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="82"/> + <source>Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="87"/> + <source>File and folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="95"/> + <source>All string need match</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="102"/> + <source>Checking</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="115"/> + <source>Test string:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="17"/> + <source>Filters dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="108"/> + <source>The regex is valid</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="125"/> + <source>The test string match with the regex</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Filters</name> + <message> + <location filename="../../Filters.ui" line="14"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="30"/> + <source>Exclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="93"/> + <source>Inclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="105"/> + <source>None = Include all</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="92"/> + <location filename="../../Filters.cpp" line="130"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="95"/> + <location filename="../../Filters.cpp" line="133"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="98"/> + <location filename="../../Filters.cpp" line="136"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="106"/> + <location filename="../../Filters.cpp" line="144"/> + <source>Only on file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="109"/> + <location filename="../../Filters.cpp" line="147"/> + <source>Only on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="115"/> + <location filename="../../Filters.cpp" line="153"/> + <location filename="../../Filters.cpp" line="215"/> + <location filename="../../Filters.cpp" line="254"/> + <source>Full match</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ListThread</name> + <message> + <location filename="../../ListThread.cpp" line="1162"/> + <source>Unable do to move or copy item into wrong forced mode: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1169"/> + <source>Unable to save the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1185"/> + <source>Problem at the reading, or file size is null</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1192"/> + <source>Wrong header: "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1201"/> + <source>The transfer list is in mixed mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1210"/> + <source>The transfer list is in copy mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1216"/> + <source>The transfer list is in move mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1263"/> + <source>Some error have been found during the line parsing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1269"/> + <source>Unable to open the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>MkPath</name> <message> - <location filename="../../MkPath.cpp" line="51"/> + <location filename="../../MkPath.cpp" line="62"/> <source>Unable to create the folder</source> <translation type="unfinished"></translation> </message> @@ -32,426 +234,560 @@ <context> <name>ReadThread</name> <message> - <location filename="../../ReadThread.cpp" line="231"/> + <location filename="../../ReadThread.cpp" line="154"/> + <location filename="../../ReadThread.cpp" line="316"/> <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>RmPath</name> <message> - <location filename="../../RmPath.cpp" line="51"/> - <source>Unable to remove the folder</source> + <location filename="../../ReadThread.cpp" line="193"/> + <location filename="../../ReadThread.cpp" line="373"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>TransferThread</name> + <name>RenamingRules</name> + <message> + <location filename="../../RenamingRules.ui" line="26"/> + <source>First renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="32"/> + <source>%name% - copy</source> + <extracomment>%name% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="39"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p></body></html></source> + <extracomment> should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="49"/> + <source>Second renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="55"/> + <source>%name% - copy (%number%)</source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="62"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p><p><span style=" font-weight:600;">%number%</span> for the extra number</p></body></html></source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="39"/> + <location filename="../../RenamingRules.cpp" line="62"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="43"/> + <location filename="../../RenamingRules.cpp" line="73"/> + <source>%1 - copy (%2)</source> + <translation type="unfinished"></translation> + </message> <message> - <location filename="../../TransferThread.cpp" line="281"/> - <location filename="../../TransferThread.cpp" line="282"/> - <source>Copy of </source> + <location filename="../../RenamingRules.ui" line="14"/> + <source>Renaming rules</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>copyEngine</name> + <name>RmPath</name> <message> - <location filename="../../copyEngine.cpp" line="124"/> - <location filename="../../copyEngine.cpp" line="141"/> - <source>Select destination directory</source> + <location filename="../../RmPath.cpp" line="59"/> + <source>Unable to remove the folder</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>TransferThread</name> <message> - <location filename="../../copyEngine.cpp" line="188"/> - <location filename="../../copyEngine.cpp" line="201"/> - <source>Ask</source> + <location filename="../../TransferThread.cpp" line="311"/> + <source>%1 - copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="189"/> - <location filename="../../copyEngine.cpp" line="202"/> - <source>Skip</source> + <location filename="../../TransferThread.cpp" line="321"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="190"/> - <source>Overwrite</source> + <location filename="../../TransferThread.cpp" line="626"/> + <source>The checksums not match</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>WriteThread</name> <message> - <location filename="../../copyEngine.cpp" line="191"/> - <source>Overwrite if newer</source> + <location filename="../../WriteThread.cpp" line="443"/> + <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="192"/> - <source>Overwrite if not same modification date</source> + <location filename="../../WriteThread.cpp" line="481"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>copyEngine</name> <message> - <location filename="../../copyEngine.cpp" line="193"/> - <source>Rename</source> + <location filename="../../copyEngine.cpp" line="257"/> + <location filename="../../copyEngine.cpp" line="275"/> + <source>The engine is forced to move, you can't copy with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="203"/> - <source>Put to end of the list</source> + <location filename="../../copyEngine.cpp" line="286"/> + <location filename="../../copyEngine.cpp" line="304"/> + <source>The engine is forced to copy, you can't move with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="225"/> - <source>Select source directory</source> + <location filename="../../copyEngine.cpp" line="511"/> + <source>The mode have been forced previously, it's internal error, please report it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="239"/> - <source>Select one or more files to open</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="241"/> - <source>All files</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options engine is not loaded, can't access to the filters</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileErrorDialog</name> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="14"/> <source>Error on file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="20"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="56"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="73"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="90"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="136"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="156"/> <source>Put to bottom</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="163"/> <source>Retry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="170"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="177"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="29"/> + <source>Error on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="32"/> + <source>Folder name</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>fileExistsDialog</name> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="14"/> <source>The file exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="82"/> + <location filename="../../fileExistsDialog.ui" line="153"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="99"/> + <location filename="../../fileExistsDialog.ui" line="170"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="116"/> + <location filename="../../fileExistsDialog.ui" line="187"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="243"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="254"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="274"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="281"/> <source>&Overwrite</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="291"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="298"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="307"/> <source>Overwrite if newer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="312"/> <source>Overwrite if not same modification date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.cpp" line="70"/> - <location filename="../../fileExistsDialog.cpp" line="71"/> - <source>Copy of </source> + <location filename="../../fileExistsDialog.cpp" line="102"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileExistsDialog.cpp" line="112"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileIsSameDialog</name> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="14"/> <source>This files are the same file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="20"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="47"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="64"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="81"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="137"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="148"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="168"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="175"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="182"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.cpp" line="66"/> - <location filename="../../fileIsSameDialog.cpp" line="67"/> - <source>Copy of </source> + <location filename="../../fileIsSameDialog.cpp" line="87"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileIsSameDialog.cpp" line="97"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>folderExistsDialog</name> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="14"/> <source>This folders are the same folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="62"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="89"/> + <location filename="../../folderExistsDialog.ui" line="140"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="106"/> + <location filename="../../folderExistsDialog.ui" line="150"/> <source>Folder name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="200"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="211"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="218"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="225"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="232"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="239"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.cpp" line="61"/> - <source>Copy of </source> + <location filename="../../folderExistsDialog.cpp" line="29"/> + <source>Folder already exists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="85"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="95"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>options</name> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="23"/> <source>Transfer the file rights</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="33"/> <source>Keep the file date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="214"/> <source>Block size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="43"/> + <location filename="../../options.ui" line="198"/> <source>KB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="56"/> <source>Auto start the transfer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="66"/> <source>When folder error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="74"/> + <location filename="../../options.ui" line="95"/> <source>Ask</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="79"/> + <location filename="../../options.ui" line="105"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> - <source>When folder colision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="100"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="110"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="118"/> <source>Check if destination folder exists</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../options.ui" line="87"/> + <source>When folder collision</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="128"/> + <source>Checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="144"/> + <source>Only after error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="154"/> + <source>Ignore if impossible</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="171"/> + <source>Do checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="181"/> + <source>Enable OS buffer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="234"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="241"/> + <source>Renaming rules</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="191"/> + <source>OS buffer only if smaller than</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>scanFileOrFolder</name> <message> - <location filename="../../scanFileOrFolder.cpp" line="112"/> - <location filename="../../scanFileOrFolder.cpp" line="138"/> - <source>Copy of </source> + <location filename="../../scanFileOrFolder.cpp" line="218"/> + <location filename="../../scanFileOrFolder.cpp" line="282"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../scanFileOrFolder.cpp" line="228"/> + <location filename="../../scanFileOrFolder.cpp" line="292"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="157"/> + <location filename="../../scanFileOrFolder.cpp" line="326"/> <source>The folder not exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="159"/> + <location filename="../../scanFileOrFolder.cpp" line="328"/> <source>The folder is not readable</source> <translation type="unfinished"></translation> </message> diff --git a/plugins/CopyEngine/Ultracopier-0.3/Languages/it/translation.ts b/plugins/CopyEngine/Ultracopier-0.3/Languages/it/translation.ts index 1c3692c..92743de 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/Languages/it/translation.ts +++ b/plugins/CopyEngine/Ultracopier-0.3/Languages/it/translation.ts @@ -1,459 +1,795 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0"> +<TS version="2.0" language="it" sourcelanguage="en"> <context> <name>AvancedQFile</name> <message> - <location filename="../../AvancedQFile.cpp" line="17"/> - <location filename="../../AvancedQFile.cpp" line="48"/> - <location filename="../../AvancedQFile.cpp" line="79"/> + <location filename="../../AvancedQFile.cpp" line="28"/> + <location filename="../../AvancedQFile.cpp" line="59"/> + <location filename="../../AvancedQFile.cpp" line="90"/> <source>Not supported on this platform</source> - <translation type="unfinished"></translation> + <translation>Non supportato su questa piattaforma</translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="31"/> + <location filename="../../AvancedQFile.cpp" line="42"/> <source>Last modified date is wrong</source> - <translation type="unfinished"></translation> + <translation>Ultima modifica è sbagliato</translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="62"/> + <location filename="../../AvancedQFile.cpp" line="73"/> <source>Last access date is wrong</source> - <translation type="unfinished"></translation> + <translation>Ultima data di accesso è sbagliato</translation> + </message> +</context> +<context> + <name>Factory</name> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options error</source> + <translation>opzioni di errore</translation> + </message> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation>Opzioni del motore non viene caricato, non possono accedere ai filtri</translation> + </message> +</context> +<context> + <name>FilterRules</name> + <message> + <location filename="../../FilterRules.ui" line="33"/> + <source>Search:</source> + <translation>Cerca:</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="43"/> + <source>Search type:</source> + <translation>Tipo di ricerca:</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="51"/> + <source>Raw text</source> + <translation>testo Raw</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="56"/> + <source>Simplified regex</source> + <translation>semplificato regex</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="61"/> + <source>Perl's regex</source> + <translation>Perl's regex</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="69"/> + <source>Apply on:</source> + <translation>Applicare su:</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="77"/> + <source>File</source> + <translation>File</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="82"/> + <source>Folder</source> + <translation>Cartella</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="87"/> + <source>File and folder</source> + <translation>File e cartelle</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="95"/> + <source>All string need match</source> + <translation>Tutti stringa bisogno di corrispondere</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="102"/> + <source>Checking</source> + <translation>Verifica</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="115"/> + <source>Test string:</source> + <translation>Test stringa:</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="17"/> + <source>Filters dialog</source> + <translation>Filtri di dialogo</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="108"/> + <source>The regex is valid</source> + <translation>La regex è valido</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="125"/> + <source>The test string match with the regex</source> + <translation>La stringa di test match con la regex</translation> + </message> +</context> +<context> + <name>Filters</name> + <message> + <location filename="../../Filters.ui" line="14"/> + <source>Filters</source> + <translation>Filtri</translation> + </message> + <message> + <location filename="../../Filters.ui" line="30"/> + <source>Exclusion filter</source> + <translation>Esclusione filtro</translation> + </message> + <message> + <location filename="../../Filters.ui" line="93"/> + <source>Inclusion filter</source> + <translation>inclusione filtro</translation> + </message> + <message> + <location filename="../../Filters.ui" line="105"/> + <source>None = Include all</source> + <translation>Nessuno = Includi tutte le</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="92"/> + <location filename="../../Filters.cpp" line="130"/> + <source>Raw text</source> + <translation>testo Raw</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="95"/> + <location filename="../../Filters.cpp" line="133"/> + <source>Simplified regex</source> + <translation>semplificato regex</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="98"/> + <location filename="../../Filters.cpp" line="136"/> + <source>Perl's regex</source> + <translation>Perl's regex</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="106"/> + <location filename="../../Filters.cpp" line="144"/> + <source>Only on file</source> + <translation>Solo su file</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="109"/> + <location filename="../../Filters.cpp" line="147"/> + <source>Only on folder</source> + <translation>Solo sulla cartella</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="115"/> + <location filename="../../Filters.cpp" line="153"/> + <location filename="../../Filters.cpp" line="215"/> + <location filename="../../Filters.cpp" line="254"/> + <source>Full match</source> + <translation>partita completa</translation> + </message> +</context> +<context> + <name>ListThread</name> + <message> + <location filename="../../ListThread.cpp" line="1162"/> + <source>Unable do to move or copy item into wrong forced mode: %1</source> + <translation>Impossibile fare per spostare o copiare elemento in male modo forzato: %1</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1169"/> + <source>Unable to save the transfer list: %1</source> + <translation>Impossibile salvare la lista dei trasferimenti: %1</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1185"/> + <source>Problem at the reading, or file size is null</source> + <translation>Problema alla lettura, o la dimensione del file è nullo</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1192"/> + <source>Wrong header: "%1"</source> + <translation>Sbagliato intestazione: "%1"</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1201"/> + <source>The transfer list is in mixed mode, but this instance is not in this mode</source> + <translation>La lista di trasferimento è in modalità mista, ma questa istanza non è in questa modalità</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1210"/> + <source>The transfer list is in copy mode, but this instance is not in this mode</source> + <translation>La lista di trasferimento è in modalità di copia, ma questa istanza non è in questa modalità</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1216"/> + <source>The transfer list is in move mode, but this instance is not in this mode</source> + <translation>La lista di trasferimento è in modalità di spostamento, ma questa istanza non è in questa modalità</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1263"/> + <source>Some error have been found during the line parsing</source> + <translation>Alcuni errori sono stati trovati durante l'analisi linea</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1269"/> + <source>Unable to open the transfer list: %1</source> + <translation>Impossibile aprire la lista di trasferimento: %1</translation> </message> </context> <context> <name>MkPath</name> <message> - <location filename="../../MkPath.cpp" line="51"/> + <location filename="../../MkPath.cpp" line="62"/> <source>Unable to create the folder</source> - <translation type="unfinished"></translation> + <translation>Impossibile creare la cartella</translation> </message> </context> <context> <name>ReadThread</name> <message> - <location filename="../../ReadThread.cpp" line="231"/> + <location filename="../../ReadThread.cpp" line="154"/> + <location filename="../../ReadThread.cpp" line="316"/> <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> + <translation>Impossibile leggere il file sorgente: </translation> </message> -</context> -<context> - <name>RmPath</name> <message> - <location filename="../../RmPath.cpp" line="51"/> - <source>Unable to remove the folder</source> - <translation type="unfinished"></translation> + <location filename="../../ReadThread.cpp" line="193"/> + <location filename="../../ReadThread.cpp" line="373"/> + <source>File truncated during the read, possible data change</source> + <translation>File troncato durante la lettura, i possibili cambiamenti di dati</translation> </message> </context> <context> - <name>TransferThread</name> + <name>RenamingRules</name> + <message> + <location filename="../../RenamingRules.ui" line="26"/> + <source>First renaming</source> + <translation>Prima ridenominazione</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="32"/> + <source>%name% - copy</source> + <extracomment>%name% should not be translated</extracomment> + <translation>%name% - copia</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="39"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p></body></html></source> + <extracomment> should not be translated</extracomment> + <translation><html><head/><body><p>variabili: <span style=" font-weight:600;">%name%</span> per il nome del file originale</p></body></html></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="49"/> + <source>Second renaming</source> + <translation>Secondo ridenominazione</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="55"/> + <source>%name% - copy (%number%)</source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation>%name% - copia (%number%)</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="62"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p><p><span style=" font-weight:600;">%number%</span> for the extra number</p></body></html></source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation><html><head/><body><p>variabili: <span style=" font-weight:600;">%name%</span> per il nome del file originale</p><p><span style=" font-weight:600;">%number%</span> per il numero aggiuntivo</p></body></html></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="39"/> + <location filename="../../RenamingRules.cpp" line="62"/> + <source>%1 - copy</source> + <translation>%1 - copia</translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="43"/> + <location filename="../../RenamingRules.cpp" line="73"/> + <source>%1 - copy (%2)</source> + <translation>%1 - copia (%2)</translation> + </message> <message> - <location filename="../../TransferThread.cpp" line="281"/> - <location filename="../../TransferThread.cpp" line="282"/> - <source>Copy of </source> - <translation type="unfinished"></translation> + <location filename="../../RenamingRules.ui" line="14"/> + <source>Renaming rules</source> + <translation>Rinominare le regole</translation> </message> </context> <context> - <name>copyEngine</name> + <name>RmPath</name> <message> - <location filename="../../copyEngine.cpp" line="124"/> - <location filename="../../copyEngine.cpp" line="141"/> - <source>Select destination directory</source> - <translation type="unfinished"></translation> + <location filename="../../RmPath.cpp" line="59"/> + <source>Unable to remove the folder</source> + <translation>Impossibile rimuovere la cartella</translation> </message> +</context> +<context> + <name>TransferThread</name> <message> - <location filename="../../copyEngine.cpp" line="188"/> - <location filename="../../copyEngine.cpp" line="201"/> - <source>Ask</source> - <translation type="unfinished"></translation> + <location filename="../../TransferThread.cpp" line="311"/> + <source>%1 - copy</source> + <translation>%1 - copia</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="189"/> - <location filename="../../copyEngine.cpp" line="202"/> - <source>Skip</source> - <translation type="unfinished"></translation> + <location filename="../../TransferThread.cpp" line="321"/> + <source>%1 - copy (%2)</source> + <translation>%1 - copia (%2)</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="190"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> + <location filename="../../TransferThread.cpp" line="626"/> + <source>The checksums not match</source> + <translation>Il checksum non corrisponde</translation> </message> +</context> +<context> + <name>WriteThread</name> <message> - <location filename="../../copyEngine.cpp" line="191"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> + <location filename="../../WriteThread.cpp" line="443"/> + <source>Unable to read the source file: </source> + <translation>Impossibile leggere il file sorgente: </translation> </message> <message> - <location filename="../../copyEngine.cpp" line="192"/> - <source>Overwrite if not same modification date</source> - <translation type="unfinished"></translation> + <location filename="../../WriteThread.cpp" line="481"/> + <source>File truncated during the read, possible data change</source> + <translation>File troncato durante la lettura, i possibili cambiamenti di dati</translation> </message> +</context> +<context> + <name>copyEngine</name> <message> - <location filename="../../copyEngine.cpp" line="193"/> - <source>Rename</source> - <translation type="unfinished"></translation> + <location filename="../../copyEngine.cpp" line="257"/> + <location filename="../../copyEngine.cpp" line="275"/> + <source>The engine is forced to move, you can't copy with it</source> + <translation>Il motore è costretto a muoversi, non è possibile copiare con esso</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="203"/> - <source>Put to end of the list</source> - <translation type="unfinished"></translation> + <location filename="../../copyEngine.cpp" line="286"/> + <location filename="../../copyEngine.cpp" line="304"/> + <source>The engine is forced to copy, you can't move with it</source> + <translation>Il motore è costretto a copiare, non è possibile spostare con esso</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="225"/> - <source>Select source directory</source> - <translation type="unfinished"></translation> + <location filename="../../copyEngine.cpp" line="511"/> + <source>The mode have been forced previously, it's internal error, please report it</source> + <translation>La modalità sono stati costretti in precedenza, è un errore interno, si prega di segnalarlo</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="239"/> - <source>Select one or more files to open</source> - <translation type="unfinished"></translation> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options error</source> + <translation>opzioni di errore</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="241"/> - <source>All files</source> - <translation type="unfinished"></translation> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation>Opzioni del motore non viene caricato, non possono accedere ai filtri</translation> </message> </context> <context> <name>fileErrorDialog</name> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="14"/> <source>Error on file</source> - <translation type="unfinished"></translation> + <translation>Errore su file</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="20"/> <source>Error</source> - <translation type="unfinished"></translation> + <translation>Errore</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="56"/> <source>Size</source> - <translation type="unfinished"></translation> + <translation>Dimensione</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="73"/> <source>Modified</source> - <translation type="unfinished"></translation> + <translation>Modificato</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="90"/> <source>File name</source> - <translation type="unfinished"></translation> + <translation>Nome file</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="136"/> <source>&Always do this action</source> - <translation type="unfinished"></translation> + <translation>Eseguire sempre questa azione</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="156"/> <source>Put to bottom</source> - <translation type="unfinished"></translation> + <translation>Mettere a fondo</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="163"/> <source>Retry</source> - <translation type="unfinished"></translation> + <translation>Riprova</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="170"/> <source>&Skip</source> - <translation type="unfinished"></translation> + <translation>Saltare</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="177"/> <source>&Cancel</source> - <translation type="unfinished"></translation> + <translation>Annullare</translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="29"/> + <source>Error on folder</source> + <translation>Errore cartella</translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="32"/> + <source>Folder name</source> + <translation>Nome della cartella</translation> </message> </context> <context> <name>fileExistsDialog</name> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="14"/> <source>The file exists</source> - <translation type="unfinished"></translation> + <translation>Il file esiste</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="34"/> <source>Source</source> - <translation type="unfinished"></translation> + <translation>Fonte</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="50"/> <source>Destination</source> - <translation type="unfinished"></translation> + <translation>Destinazione</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="82"/> + <location filename="../../fileExistsDialog.ui" line="153"/> <source>Size</source> - <translation type="unfinished"></translation> + <translation>Dimensione</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="99"/> + <location filename="../../fileExistsDialog.ui" line="170"/> <source>Modified</source> - <translation type="unfinished"></translation> + <translation>Modificato</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="116"/> + <location filename="../../fileExistsDialog.ui" line="187"/> <source>File name</source> - <translation type="unfinished"></translation> + <translation>Nome file</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="243"/> <source>Suggest new &name</source> - <translation type="unfinished"></translation> + <translation>Suggerisci nuovo nome</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="254"/> <source>&Always do this action</source> - <translation type="unfinished"></translation> + <translation>Eseguire sempre questa azione</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="274"/> <source>&Rename</source> - <translation type="unfinished"></translation> + <translation>Rinominare</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="281"/> <source>&Overwrite</source> - <translation type="unfinished"></translation> + <translation>Sovrascrivi</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="291"/> <source>&Skip</source> - <translation type="unfinished"></translation> + <translation>Saltare</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="298"/> <source>&Cancel</source> - <translation type="unfinished"></translation> + <translation>Annullare</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="307"/> <source>Overwrite if newer</source> - <translation type="unfinished"></translation> + <translation>Sovrascrivi se più recente</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="312"/> <source>Overwrite if not same modification date</source> - <translation type="unfinished"></translation> + <translation>Sovrascrivi se non la data di modifica stessa</translation> + </message> + <message> + <location filename="../../fileExistsDialog.cpp" line="102"/> + <source>%1 - copy</source> + <translation>%1 - copia</translation> </message> <message> - <location filename="../../fileExistsDialog.cpp" line="70"/> - <location filename="../../fileExistsDialog.cpp" line="71"/> - <source>Copy of </source> - <translation type="unfinished"></translation> + <location filename="../../fileExistsDialog.cpp" line="112"/> + <source>%1 - copy (%2)</source> + <translation>%1 - copia (%2)</translation> </message> </context> <context> <name>fileIsSameDialog</name> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="14"/> <source>This files are the same file</source> - <translation type="unfinished"></translation> + <translation>Questi file sono lo stesso file</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="20"/> <source>The source and destination is same</source> - <translation type="unfinished"></translation> + <translation>La sorgente e destinazione è uguale</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="47"/> <source>Size</source> - <translation type="unfinished"></translation> + <translation>Dimensione</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="64"/> <source>Modified</source> - <translation type="unfinished"></translation> + <translation>Modificato</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="81"/> <source>File name</source> - <translation type="unfinished"></translation> + <translation>Nome file</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="137"/> <source>Suggest new &name</source> - <translation type="unfinished"></translation> + <translation>Suggerisci nuovo nome</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="148"/> <source>&Always do this action</source> - <translation type="unfinished"></translation> + <translation>Eseguire sempre questa azione</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="168"/> <source>&Rename</source> - <translation type="unfinished"></translation> + <translation>Rinominare</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="175"/> <source>&Skip</source> - <translation type="unfinished"></translation> + <translation>Saltare</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="182"/> <source>&Cancel</source> - <translation type="unfinished"></translation> + <translation>Annullare</translation> </message> <message> - <location filename="../../fileIsSameDialog.cpp" line="66"/> - <location filename="../../fileIsSameDialog.cpp" line="67"/> - <source>Copy of </source> - <translation type="unfinished"></translation> + <location filename="../../fileIsSameDialog.cpp" line="87"/> + <source>%1 - copy</source> + <translation>%1 - copia</translation> + </message> + <message> + <location filename="../../fileIsSameDialog.cpp" line="97"/> + <source>%1 - copy (%2)</source> + <translation>%1 - copia (%2)</translation> </message> </context> <context> <name>folderExistsDialog</name> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="14"/> <source>This folders are the same folder</source> - <translation type="unfinished"></translation> + <translation>Questo cartelle sono nella stessa cartella</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="34"/> <source>Source</source> - <translation type="unfinished"></translation> + <translation>Fonte</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="50"/> <source>Destination</source> - <translation type="unfinished"></translation> + <translation>Destinazione</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="62"/> <source>The source and destination is same</source> - <translation type="unfinished"></translation> + <translation>La sorgente e destinazione è uguale</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="89"/> + <location filename="../../folderExistsDialog.ui" line="140"/> <source>Modified</source> - <translation type="unfinished"></translation> + <translation>Modificato</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="106"/> + <location filename="../../folderExistsDialog.ui" line="150"/> <source>Folder name</source> - <translation type="unfinished"></translation> + <translation>Nome della cartella</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="200"/> <source>Suggest new &name</source> - <translation type="unfinished"></translation> + <translation>Suggerisci nuovo nome</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="211"/> <source>&Always do this action</source> - <translation type="unfinished"></translation> + <translation>Eseguire sempre questa azione</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="218"/> <source>&Rename</source> - <translation type="unfinished"></translation> + <translation>Rinominare</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="225"/> <source>Merge</source> - <translation type="unfinished"></translation> + <translation>Unire</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="232"/> <source>Skip</source> - <translation type="unfinished"></translation> + <translation>Saltare</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="239"/> <source>&Cancel</source> - <translation type="unfinished"></translation> + <translation>Annullare</translation> </message> <message> - <location filename="../../folderExistsDialog.cpp" line="61"/> - <source>Copy of </source> - <translation type="unfinished"></translation> + <location filename="../../folderExistsDialog.cpp" line="29"/> + <source>Folder already exists</source> + <translation>Cartella esiste già</translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="85"/> + <source>%1 - copy</source> + <translation>%1 - copia</translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="95"/> + <source>%1 - copy (%2)</source> + <translation>%1 - copia (%2)</translation> </message> </context> <context> <name>options</name> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="23"/> <source>Transfer the file rights</source> - <translation type="unfinished"></translation> + <translation>Trasferire i diritti di file</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="33"/> <source>Keep the file date</source> - <translation type="unfinished"></translation> + <translation>Tenere la data del file</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="214"/> <source>Block size</source> - <translation type="unfinished"></translation> + <translation>Dimensione del blocco</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="43"/> + <location filename="../../options.ui" line="198"/> <source>KB</source> - <translation type="unfinished"></translation> + <translation></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="56"/> <source>Auto start the transfer</source> - <translation type="unfinished"></translation> + <translation>Auto iniziare il trasferimento</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="66"/> <source>When folder error</source> - <translation type="unfinished"></translation> + <translation>Quando errore cartella</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="74"/> + <location filename="../../options.ui" line="95"/> <source>Ask</source> - <translation type="unfinished"></translation> + <translation>Chiedere</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="79"/> + <location filename="../../options.ui" line="105"/> <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../options.ui"/> - <source>When folder colision</source> - <translation type="unfinished"></translation> + <translation>Saltare</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="100"/> <source>Merge</source> - <translation type="unfinished"></translation> + <translation>Unire</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="110"/> <source>Rename</source> - <translation type="unfinished"></translation> + <translation>Rinominare</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="118"/> <source>Check if destination folder exists</source> - <translation type="unfinished"></translation> + <translation>Controllare se la cartella di destinazione esiste</translation> + </message> + <message> + <location filename="../../options.ui" line="87"/> + <source>When folder collision</source> + <translation>Quando collisione cartella</translation> + </message> + <message> + <location filename="../../options.ui" line="128"/> + <source>Checksum</source> + <translation></translation> + </message> + <message> + <location filename="../../options.ui" line="144"/> + <source>Only after error</source> + <translation>Solo dopo l'errore</translation> + </message> + <message> + <location filename="../../options.ui" line="154"/> + <source>Ignore if impossible</source> + <translation>Ignora se impossibile</translation> + </message> + <message> + <location filename="../../options.ui" line="171"/> + <source>Do checksum</source> + <translation>Fare checksum</translation> + </message> + <message> + <location filename="../../options.ui" line="181"/> + <source>Enable OS buffer</source> + <translation>Abilita OS tampone</translation> + </message> + <message> + <location filename="../../options.ui" line="234"/> + <source>Filters</source> + <translation>Filtri</translation> + </message> + <message> + <location filename="../../options.ui" line="241"/> + <source>Renaming rules</source> + <translation>Rinominare le regole</translation> + </message> + <message> + <location filename="../../options.ui" line="191"/> + <source>OS buffer only if smaller than</source> + <translation>OS tampone solo se inferiori</translation> </message> </context> <context> <name>scanFileOrFolder</name> <message> - <location filename="../../scanFileOrFolder.cpp" line="112"/> - <location filename="../../scanFileOrFolder.cpp" line="138"/> - <source>Copy of </source> - <translation type="unfinished"></translation> + <location filename="../../scanFileOrFolder.cpp" line="218"/> + <location filename="../../scanFileOrFolder.cpp" line="282"/> + <source>%1 - copy</source> + <translation>%1 - copia</translation> + </message> + <message> + <location filename="../../scanFileOrFolder.cpp" line="228"/> + <location filename="../../scanFileOrFolder.cpp" line="292"/> + <source>%1 - copy (%2)</source> + <translation>%1 - copia (%2)</translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="157"/> + <location filename="../../scanFileOrFolder.cpp" line="326"/> <source>The folder not exists</source> - <translation type="unfinished"></translation> + <translation>La cartella non esiste</translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="159"/> + <location filename="../../scanFileOrFolder.cpp" line="328"/> <source>The folder is not readable</source> - <translation type="unfinished"></translation> + <translation>La cartella non è leggibile</translation> </message> </context> </TS> diff --git a/plugins/CopyEngine/Ultracopier-0.3/Languages/ja/translation.ts b/plugins/CopyEngine/Ultracopier-0.3/Languages/ja/translation.ts index 1c3692c..9a215b1 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/Languages/ja/translation.ts +++ b/plugins/CopyEngine/Ultracopier-0.3/Languages/ja/translation.ts @@ -4,27 +4,229 @@ <context> <name>AvancedQFile</name> <message> - <location filename="../../AvancedQFile.cpp" line="17"/> - <location filename="../../AvancedQFile.cpp" line="48"/> - <location filename="../../AvancedQFile.cpp" line="79"/> + <location filename="../../AvancedQFile.cpp" line="28"/> + <location filename="../../AvancedQFile.cpp" line="59"/> + <location filename="../../AvancedQFile.cpp" line="90"/> <source>Not supported on this platform</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="31"/> + <location filename="../../AvancedQFile.cpp" line="42"/> <source>Last modified date is wrong</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="62"/> + <location filename="../../AvancedQFile.cpp" line="73"/> <source>Last access date is wrong</source> <translation type="unfinished"></translation> </message> </context> <context> + <name>Factory</name> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>FilterRules</name> + <message> + <location filename="../../FilterRules.ui" line="17"/> + <source>Filters dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="33"/> + <source>Search:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="43"/> + <source>Search type:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="51"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="56"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="61"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="69"/> + <source>Apply on:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="77"/> + <source>File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="82"/> + <source>Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="87"/> + <source>File and folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="95"/> + <source>All string need match</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="102"/> + <source>Checking</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="108"/> + <source>The regex is valid</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="115"/> + <source>Test string:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="125"/> + <source>The test string match with the regex</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Filters</name> + <message> + <location filename="../../Filters.ui" line="14"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="30"/> + <source>Exclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="93"/> + <source>Inclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="105"/> + <source>None = Include all</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="92"/> + <location filename="../../Filters.cpp" line="130"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="95"/> + <location filename="../../Filters.cpp" line="133"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="98"/> + <location filename="../../Filters.cpp" line="136"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="106"/> + <location filename="../../Filters.cpp" line="144"/> + <source>Only on file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="109"/> + <location filename="../../Filters.cpp" line="147"/> + <source>Only on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="115"/> + <location filename="../../Filters.cpp" line="153"/> + <location filename="../../Filters.cpp" line="215"/> + <location filename="../../Filters.cpp" line="254"/> + <source>Full match</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ListThread</name> + <message> + <location filename="../../ListThread.cpp" line="1162"/> + <source>Unable do to move or copy item into wrong forced mode: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1169"/> + <source>Unable to save the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1185"/> + <source>Problem at the reading, or file size is null</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1192"/> + <source>Wrong header: "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1201"/> + <source>The transfer list is in mixed mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1210"/> + <source>The transfer list is in copy mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1216"/> + <source>The transfer list is in move mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1263"/> + <source>Some error have been found during the line parsing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1269"/> + <source>Unable to open the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>MkPath</name> <message> - <location filename="../../MkPath.cpp" line="51"/> + <location filename="../../MkPath.cpp" line="62"/> <source>Unable to create the folder</source> <translation type="unfinished"></translation> </message> @@ -32,426 +234,560 @@ <context> <name>ReadThread</name> <message> - <location filename="../../ReadThread.cpp" line="231"/> + <location filename="../../ReadThread.cpp" line="154"/> + <location filename="../../ReadThread.cpp" line="316"/> <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>RmPath</name> <message> - <location filename="../../RmPath.cpp" line="51"/> - <source>Unable to remove the folder</source> + <location filename="../../ReadThread.cpp" line="193"/> + <location filename="../../ReadThread.cpp" line="373"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>TransferThread</name> + <name>RenamingRules</name> + <message> + <location filename="../../RenamingRules.ui" line="14"/> + <source>Renaming rules</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="26"/> + <source>First renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="32"/> + <source>%name% - copy</source> + <extracomment>%name% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="39"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p></body></html></source> + <extracomment> should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="49"/> + <source>Second renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="55"/> + <source>%name% - copy (%number%)</source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="62"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p><p><span style=" font-weight:600;">%number%</span> for the extra number</p></body></html></source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="39"/> + <location filename="../../RenamingRules.cpp" line="62"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> <message> - <location filename="../../TransferThread.cpp" line="281"/> - <location filename="../../TransferThread.cpp" line="282"/> - <source>Copy of </source> + <location filename="../../RenamingRules.cpp" line="43"/> + <location filename="../../RenamingRules.cpp" line="73"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>copyEngine</name> + <name>RmPath</name> <message> - <location filename="../../copyEngine.cpp" line="124"/> - <location filename="../../copyEngine.cpp" line="141"/> - <source>Select destination directory</source> + <location filename="../../RmPath.cpp" line="59"/> + <source>Unable to remove the folder</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>TransferThread</name> <message> - <location filename="../../copyEngine.cpp" line="188"/> - <location filename="../../copyEngine.cpp" line="201"/> - <source>Ask</source> + <location filename="../../TransferThread.cpp" line="311"/> + <source>%1 - copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="189"/> - <location filename="../../copyEngine.cpp" line="202"/> - <source>Skip</source> + <location filename="../../TransferThread.cpp" line="321"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="190"/> - <source>Overwrite</source> + <location filename="../../TransferThread.cpp" line="626"/> + <source>The checksums not match</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>WriteThread</name> <message> - <location filename="../../copyEngine.cpp" line="191"/> - <source>Overwrite if newer</source> + <location filename="../../WriteThread.cpp" line="443"/> + <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="192"/> - <source>Overwrite if not same modification date</source> + <location filename="../../WriteThread.cpp" line="481"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>copyEngine</name> <message> - <location filename="../../copyEngine.cpp" line="193"/> - <source>Rename</source> + <location filename="../../copyEngine.cpp" line="257"/> + <location filename="../../copyEngine.cpp" line="275"/> + <source>The engine is forced to move, you can't copy with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="203"/> - <source>Put to end of the list</source> + <location filename="../../copyEngine.cpp" line="286"/> + <location filename="../../copyEngine.cpp" line="304"/> + <source>The engine is forced to copy, you can't move with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="225"/> - <source>Select source directory</source> + <location filename="../../copyEngine.cpp" line="511"/> + <source>The mode have been forced previously, it's internal error, please report it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="239"/> - <source>Select one or more files to open</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="241"/> - <source>All files</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options engine is not loaded, can't access to the filters</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileErrorDialog</name> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="14"/> <source>Error on file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="20"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="56"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="73"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="90"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="136"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="156"/> <source>Put to bottom</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="163"/> <source>Retry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="170"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="177"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="29"/> + <source>Error on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="32"/> + <source>Folder name</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>fileExistsDialog</name> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="14"/> <source>The file exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="82"/> + <location filename="../../fileExistsDialog.ui" line="153"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="99"/> + <location filename="../../fileExistsDialog.ui" line="170"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="116"/> + <location filename="../../fileExistsDialog.ui" line="187"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="243"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="254"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="274"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="281"/> <source>&Overwrite</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="291"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="298"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="307"/> <source>Overwrite if newer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="312"/> <source>Overwrite if not same modification date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.cpp" line="70"/> - <location filename="../../fileExistsDialog.cpp" line="71"/> - <source>Copy of </source> + <location filename="../../fileExistsDialog.cpp" line="102"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileExistsDialog.cpp" line="112"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileIsSameDialog</name> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="14"/> <source>This files are the same file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="20"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="47"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="64"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="81"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="137"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="148"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="168"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="175"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="182"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.cpp" line="66"/> - <location filename="../../fileIsSameDialog.cpp" line="67"/> - <source>Copy of </source> + <location filename="../../fileIsSameDialog.cpp" line="87"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileIsSameDialog.cpp" line="97"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>folderExistsDialog</name> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="14"/> <source>This folders are the same folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="62"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="89"/> + <location filename="../../folderExistsDialog.ui" line="140"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="106"/> + <location filename="../../folderExistsDialog.ui" line="150"/> <source>Folder name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="200"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="211"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="218"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="225"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="232"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="239"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.cpp" line="61"/> - <source>Copy of </source> + <location filename="../../folderExistsDialog.cpp" line="29"/> + <source>Folder already exists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="85"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="95"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>options</name> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="23"/> <source>Transfer the file rights</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="33"/> <source>Keep the file date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="128"/> + <source>Checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="144"/> + <source>Only after error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="154"/> + <source>Ignore if impossible</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="171"/> + <source>Do checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="181"/> + <source>Enable OS buffer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="191"/> + <source>OS buffer only if smaller than</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="214"/> <source>Block size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="234"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="241"/> + <source>Renaming rules</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="43"/> + <location filename="../../options.ui" line="198"/> <source>KB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="56"/> <source>Auto start the transfer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="66"/> <source>When folder error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="74"/> + <location filename="../../options.ui" line="95"/> <source>Ask</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="79"/> + <location filename="../../options.ui" line="105"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> - <source>When folder colision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="100"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="110"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="118"/> <source>Check if destination folder exists</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../options.ui" line="87"/> + <source>When folder collision</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>scanFileOrFolder</name> <message> - <location filename="../../scanFileOrFolder.cpp" line="112"/> - <location filename="../../scanFileOrFolder.cpp" line="138"/> - <source>Copy of </source> + <location filename="../../scanFileOrFolder.cpp" line="218"/> + <location filename="../../scanFileOrFolder.cpp" line="282"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../scanFileOrFolder.cpp" line="228"/> + <location filename="../../scanFileOrFolder.cpp" line="292"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="157"/> + <location filename="../../scanFileOrFolder.cpp" line="326"/> <source>The folder not exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="159"/> + <location filename="../../scanFileOrFolder.cpp" line="328"/> <source>The folder is not readable</source> <translation type="unfinished"></translation> </message> diff --git a/plugins/CopyEngine/Ultracopier-0.3/Languages/ko/translation.ts b/plugins/CopyEngine/Ultracopier-0.3/Languages/ko/translation.ts new file mode 100644 index 0000000..6210b83 --- /dev/null +++ b/plugins/CopyEngine/Ultracopier-0.3/Languages/ko/translation.ts @@ -0,0 +1,795 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="ko_KR"> +<context> + <name>AvancedQFile</name> + <message> + <location filename="../../AvancedQFile.cpp" line="28"/> + <location filename="../../AvancedQFile.cpp" line="59"/> + <location filename="../../AvancedQFile.cpp" line="90"/> + <source>Not supported on this platform</source> + <translation>이 플랫폼에서 지원되지 않습니다</translation> + </message> + <message> + <location filename="../../AvancedQFile.cpp" line="42"/> + <source>Last modified date is wrong</source> + <translation>마지막 수정 날짜가 잘못되었습니다</translation> + </message> + <message> + <location filename="../../AvancedQFile.cpp" line="73"/> + <source>Last access date is wrong</source> + <translation>마지막 엑세스 날짜가 잘못되었습니다</translation> + </message> +</context> +<context> + <name>Factory</name> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>FilterRules</name> + <message> + <location filename="../../FilterRules.ui" line="17"/> + <source>Filters dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="33"/> + <source>Search:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="43"/> + <source>Search type:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="51"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="56"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="61"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="69"/> + <source>Apply on:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="77"/> + <source>File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="82"/> + <source>Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="87"/> + <source>File and folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="95"/> + <source>All string need match</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="102"/> + <source>Checking</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="108"/> + <source>The regex is valid</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="115"/> + <source>Test string:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="125"/> + <source>The test string match with the regex</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Filters</name> + <message> + <location filename="../../Filters.ui" line="14"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="30"/> + <source>Exclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="93"/> + <source>Inclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="105"/> + <source>None = Include all</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="92"/> + <location filename="../../Filters.cpp" line="130"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="95"/> + <location filename="../../Filters.cpp" line="133"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="98"/> + <location filename="../../Filters.cpp" line="136"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="106"/> + <location filename="../../Filters.cpp" line="144"/> + <source>Only on file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="109"/> + <location filename="../../Filters.cpp" line="147"/> + <source>Only on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="115"/> + <location filename="../../Filters.cpp" line="153"/> + <location filename="../../Filters.cpp" line="215"/> + <location filename="../../Filters.cpp" line="254"/> + <source>Full match</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ListThread</name> + <message> + <location filename="../../ListThread.cpp" line="1162"/> + <source>Unable do to move or copy item into wrong forced mode: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1169"/> + <source>Unable to save the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1185"/> + <source>Problem at the reading, or file size is null</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1192"/> + <source>Wrong header: "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1201"/> + <source>The transfer list is in mixed mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1210"/> + <source>The transfer list is in copy mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1216"/> + <source>The transfer list is in move mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1263"/> + <source>Some error have been found during the line parsing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1269"/> + <source>Unable to open the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MkPath</name> + <message> + <location filename="../../MkPath.cpp" line="62"/> + <source>Unable to create the folder</source> + <translation>폴더를 생성할 수 없습니다</translation> + </message> +</context> +<context> + <name>ReadThread</name> + <message> + <location filename="../../ReadThread.cpp" line="154"/> + <location filename="../../ReadThread.cpp" line="316"/> + <source>Unable to read the source file: </source> + <translation>원본 파일 읽기 불가:</translation> + </message> + <message> + <location filename="../../ReadThread.cpp" line="193"/> + <location filename="../../ReadThread.cpp" line="373"/> + <source>File truncated during the read, possible data change</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RenamingRules</name> + <message> + <location filename="../../RenamingRules.ui" line="14"/> + <source>Renaming rules</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="26"/> + <source>First renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="32"/> + <source>%name% - copy</source> + <extracomment>%name% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="39"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p></body></html></source> + <extracomment> should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="49"/> + <source>Second renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="55"/> + <source>%name% - copy (%number%)</source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="62"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p><p><span style=" font-weight:600;">%number%</span> for the extra number</p></body></html></source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="39"/> + <location filename="../../RenamingRules.cpp" line="62"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="43"/> + <location filename="../../RenamingRules.cpp" line="73"/> + <source>%1 - copy (%2)</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RmPath</name> + <message> + <location filename="../../RmPath.cpp" line="59"/> + <source>Unable to remove the folder</source> + <translation>폴더를 제거할 수 없습니다</translation> + </message> +</context> +<context> + <name>TransferThread</name> + <message> + <location filename="../../TransferThread.cpp" line="311"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../TransferThread.cpp" line="321"/> + <source>%1 - copy (%2)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../TransferThread.cpp" line="626"/> + <source>The checksums not match</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>WriteThread</name> + <message> + <location filename="../../WriteThread.cpp" line="443"/> + <source>Unable to read the source file: </source> + <translation type="unfinished">원본 파일 읽기 불가:</translation> + </message> + <message> + <location filename="../../WriteThread.cpp" line="481"/> + <source>File truncated during the read, possible data change</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>copyEngine</name> + <message> + <location filename="../../copyEngine.cpp" line="257"/> + <location filename="../../copyEngine.cpp" line="275"/> + <source>The engine is forced to move, you can't copy with it</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../copyEngine.cpp" line="286"/> + <location filename="../../copyEngine.cpp" line="304"/> + <source>The engine is forced to copy, you can't move with it</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../copyEngine.cpp" line="511"/> + <source>The mode have been forced previously, it's internal error, please report it</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>fileErrorDialog</name> + <message> + <location filename="../../fileErrorDialog.ui" line="14"/> + <source>Error on file</source> + <translation>파일 오류가 발생했습니다</translation> + </message> + <message> + <location filename="../../fileErrorDialog.ui" line="20"/> + <source>Error</source> + <translation>오류</translation> + </message> + <message> + <location filename="../../fileErrorDialog.ui" line="56"/> + <source>Size</source> + <translation>크기</translation> + </message> + <message> + <location filename="../../fileErrorDialog.ui" line="73"/> + <source>Modified</source> + <translation>수정 날짜</translation> + </message> + <message> + <location filename="../../fileErrorDialog.ui" line="90"/> + <source>File name</source> + <translation>파일 이름</translation> + </message> + <message> + <location filename="../../fileErrorDialog.ui" line="136"/> + <source>&Always do this action</source> + <translation>&항상 이 작동 실행</translation> + </message> + <message> + <location filename="../../fileErrorDialog.ui" line="156"/> + <source>Put to bottom</source> + <translation>아래에 놓기</translation> + </message> + <message> + <location filename="../../fileErrorDialog.ui" line="163"/> + <source>Retry</source> + <translation>재시도</translation> + </message> + <message> + <location filename="../../fileErrorDialog.ui" line="170"/> + <source>&Skip</source> + <translation>&건너뛰기</translation> + </message> + <message> + <location filename="../../fileErrorDialog.ui" line="177"/> + <source>&Cancel</source> + <translation>&취소</translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="29"/> + <source>Error on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="32"/> + <source>Folder name</source> + <translation type="unfinished">폴더 이름</translation> + </message> +</context> +<context> + <name>fileExistsDialog</name> + <message> + <location filename="../../fileExistsDialog.ui" line="14"/> + <source>The file exists</source> + <translation>파일이 존재합니다</translation> + </message> + <message> + <location filename="../../fileExistsDialog.ui" line="34"/> + <source>Source</source> + <translation>원본</translation> + </message> + <message> + <location filename="../../fileExistsDialog.ui" line="50"/> + <source>Destination</source> + <translation>대상</translation> + </message> + <message> + <location filename="../../fileExistsDialog.ui" line="82"/> + <location filename="../../fileExistsDialog.ui" line="153"/> + <source>Size</source> + <translation>크기</translation> + </message> + <message> + <location filename="../../fileExistsDialog.ui" line="99"/> + <location filename="../../fileExistsDialog.ui" line="170"/> + <source>Modified</source> + <translation>수정 날짜</translation> + </message> + <message> + <location filename="../../fileExistsDialog.ui" line="116"/> + <location filename="../../fileExistsDialog.ui" line="187"/> + <source>File name</source> + <translation>파일 이름</translation> + </message> + <message> + <location filename="../../fileExistsDialog.ui" line="243"/> + <source>Suggest new &name</source> + <translation>새 &이름 제안</translation> + </message> + <message> + <location filename="../../fileExistsDialog.ui" line="254"/> + <source>&Always do this action</source> + <translation>&항상 이 작동 실행</translation> + </message> + <message> + <location filename="../../fileExistsDialog.ui" line="274"/> + <source>&Rename</source> + <translation>&이름 바꾸기</translation> + </message> + <message> + <location filename="../../fileExistsDialog.ui" line="281"/> + <source>&Overwrite</source> + <translation>&덮어씌우기</translation> + </message> + <message> + <location filename="../../fileExistsDialog.ui" line="291"/> + <source>&Skip</source> + <translation>&건너뛰기</translation> + </message> + <message> + <location filename="../../fileExistsDialog.ui" line="298"/> + <source>&Cancel</source> + <translation>&취소</translation> + </message> + <message> + <location filename="../../fileExistsDialog.ui" line="307"/> + <source>Overwrite if newer</source> + <translation>더 최신이면 덮어씌우기</translation> + </message> + <message> + <location filename="../../fileExistsDialog.ui" line="312"/> + <source>Overwrite if not same modification date</source> + <translation>수정 날짜가 다르면 덮어씌우기</translation> + </message> + <message> + <location filename="../../fileExistsDialog.cpp" line="102"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileExistsDialog.cpp" line="112"/> + <source>%1 - copy (%2)</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>fileIsSameDialog</name> + <message> + <location filename="../../fileIsSameDialog.ui" line="14"/> + <source>This files are the same file</source> + <translation>이 파일들은 동일한 파일입니다</translation> + </message> + <message> + <location filename="../../fileIsSameDialog.ui" line="20"/> + <source>The source and destination is same</source> + <translation>원본과 대상이 동일합니다</translation> + </message> + <message> + <location filename="../../fileIsSameDialog.ui" line="47"/> + <source>Size</source> + <translation>크기</translation> + </message> + <message> + <location filename="../../fileIsSameDialog.ui" line="64"/> + <source>Modified</source> + <translation>수정 날짜</translation> + </message> + <message> + <location filename="../../fileIsSameDialog.ui" line="81"/> + <source>File name</source> + <translation>파일 이름</translation> + </message> + <message> + <location filename="../../fileIsSameDialog.ui" line="137"/> + <source>Suggest new &name</source> + <translation>새 &이름 제안</translation> + </message> + <message> + <location filename="../../fileIsSameDialog.ui" line="148"/> + <source>&Always do this action</source> + <translation>&항상 이 작동 실행</translation> + </message> + <message> + <location filename="../../fileIsSameDialog.ui" line="168"/> + <source>&Rename</source> + <translation>&이름 바꾸기</translation> + </message> + <message> + <location filename="../../fileIsSameDialog.ui" line="175"/> + <source>&Skip</source> + <translation>&건너뛰기</translation> + </message> + <message> + <location filename="../../fileIsSameDialog.ui" line="182"/> + <source>&Cancel</source> + <translation>&취소</translation> + </message> + <message> + <location filename="../../fileIsSameDialog.cpp" line="87"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileIsSameDialog.cpp" line="97"/> + <source>%1 - copy (%2)</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>folderExistsDialog</name> + <message> + <location filename="../../folderExistsDialog.ui" line="14"/> + <source>This folders are the same folder</source> + <translation>이 폴더들은 동일한 폴더입니다</translation> + </message> + <message> + <location filename="../../folderExistsDialog.ui" line="34"/> + <source>Source</source> + <translation>원본</translation> + </message> + <message> + <location filename="../../folderExistsDialog.ui" line="50"/> + <source>Destination</source> + <translation>대상</translation> + </message> + <message> + <location filename="../../folderExistsDialog.ui" line="62"/> + <source>The source and destination is same</source> + <translation>원본과 대상이 동일합니다</translation> + </message> + <message> + <location filename="../../folderExistsDialog.ui" line="89"/> + <location filename="../../folderExistsDialog.ui" line="140"/> + <source>Modified</source> + <translation>수정 날짜</translation> + </message> + <message> + <location filename="../../folderExistsDialog.ui" line="106"/> + <location filename="../../folderExistsDialog.ui" line="150"/> + <source>Folder name</source> + <translation>폴더 이름</translation> + </message> + <message> + <location filename="../../folderExistsDialog.ui" line="200"/> + <source>Suggest new &name</source> + <translation>새 &이름 제안</translation> + </message> + <message> + <location filename="../../folderExistsDialog.ui" line="211"/> + <source>&Always do this action</source> + <translation>&항상 이 작동 실행</translation> + </message> + <message> + <location filename="../../folderExistsDialog.ui" line="218"/> + <source>&Rename</source> + <translation>&이름 바꾸기</translation> + </message> + <message> + <location filename="../../folderExistsDialog.ui" line="225"/> + <source>Merge</source> + <translation>합치기</translation> + </message> + <message> + <location filename="../../folderExistsDialog.ui" line="232"/> + <source>Skip</source> + <translation>건너뛰기</translation> + </message> + <message> + <location filename="../../folderExistsDialog.ui" line="239"/> + <source>&Cancel</source> + <translation>&취소</translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="29"/> + <source>Folder already exists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="85"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="95"/> + <source>%1 - copy (%2)</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>options</name> + <message> + <location filename="../../options.ui" line="23"/> + <source>Transfer the file rights</source> + <translation>파일 권한 전송</translation> + </message> + <message> + <location filename="../../options.ui" line="33"/> + <source>Keep the file date</source> + <translation>파일 날짜 보존</translation> + </message> + <message> + <location filename="../../options.ui" line="128"/> + <source>Checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="144"/> + <source>Only after error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="154"/> + <source>Ignore if impossible</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="171"/> + <source>Do checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="181"/> + <source>Enable OS buffer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="191"/> + <source>OS buffer only if smaller than</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="214"/> + <source>Block size</source> + <translation>블럭 크기</translation> + </message> + <message> + <location filename="../../options.ui" line="234"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="241"/> + <source>Renaming rules</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="43"/> + <location filename="../../options.ui" line="198"/> + <source>KB</source> + <translation>KB</translation> + </message> + <message> + <location filename="../../options.ui" line="56"/> + <source>Auto start the transfer</source> + <translation>전송 자동 시작</translation> + </message> + <message> + <location filename="../../options.ui" line="66"/> + <source>When folder error</source> + <translation>폴더 오류시</translation> + </message> + <message> + <location filename="../../options.ui" line="74"/> + <location filename="../../options.ui" line="95"/> + <source>Ask</source> + <translation>확인</translation> + </message> + <message> + <location filename="../../options.ui" line="79"/> + <location filename="../../options.ui" line="105"/> + <source>Skip</source> + <translation>건너뛰기</translation> + </message> + <message> + <location filename="../../options.ui" line="100"/> + <source>Merge</source> + <translation>합치기</translation> + </message> + <message> + <location filename="../../options.ui" line="110"/> + <source>Rename</source> + <translation>이름 바꾸기</translation> + </message> + <message> + <location filename="../../options.ui" line="118"/> + <source>Check if destination folder exists</source> + <translation>대상 폴드 존재시 확인</translation> + </message> + <message> + <location filename="../../options.ui" line="87"/> + <source>When folder collision</source> + <translation>폴더 충돌시</translation> + </message> +</context> +<context> + <name>scanFileOrFolder</name> + <message> + <location filename="../../scanFileOrFolder.cpp" line="218"/> + <location filename="../../scanFileOrFolder.cpp" line="282"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../scanFileOrFolder.cpp" line="228"/> + <location filename="../../scanFileOrFolder.cpp" line="292"/> + <source>%1 - copy (%2)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../scanFileOrFolder.cpp" line="326"/> + <source>The folder not exists</source> + <translation>폴더가 존재하지 않습니다</translation> + </message> + <message> + <location filename="../../scanFileOrFolder.cpp" line="328"/> + <source>The folder is not readable</source> + <translation>폴더를 읽을 수 없습니다</translation> + </message> +</context> +</TS> diff --git a/plugins/CopyEngine/Ultracopier-0.3/Languages/nl/translation.ts b/plugins/CopyEngine/Ultracopier-0.3/Languages/nl/translation.ts index 1c3692c..0898631 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/Languages/nl/translation.ts +++ b/plugins/CopyEngine/Ultracopier-0.3/Languages/nl/translation.ts @@ -4,27 +4,229 @@ <context> <name>AvancedQFile</name> <message> - <location filename="../../AvancedQFile.cpp" line="17"/> - <location filename="../../AvancedQFile.cpp" line="48"/> - <location filename="../../AvancedQFile.cpp" line="79"/> + <location filename="../../AvancedQFile.cpp" line="28"/> + <location filename="../../AvancedQFile.cpp" line="59"/> + <location filename="../../AvancedQFile.cpp" line="90"/> <source>Not supported on this platform</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="31"/> + <location filename="../../AvancedQFile.cpp" line="42"/> <source>Last modified date is wrong</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="62"/> + <location filename="../../AvancedQFile.cpp" line="73"/> <source>Last access date is wrong</source> <translation type="unfinished"></translation> </message> </context> <context> + <name>Factory</name> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>FilterRules</name> + <message> + <location filename="../../FilterRules.ui" line="33"/> + <source>Search:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="43"/> + <source>Search type:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="51"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="56"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="61"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="69"/> + <source>Apply on:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="77"/> + <source>File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="82"/> + <source>Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="87"/> + <source>File and folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="95"/> + <source>All string need match</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="102"/> + <source>Checking</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="115"/> + <source>Test string:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="17"/> + <source>Filters dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="108"/> + <source>The regex is valid</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="125"/> + <source>The test string match with the regex</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Filters</name> + <message> + <location filename="../../Filters.ui" line="14"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="30"/> + <source>Exclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="93"/> + <source>Inclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="105"/> + <source>None = Include all</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="92"/> + <location filename="../../Filters.cpp" line="130"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="95"/> + <location filename="../../Filters.cpp" line="133"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="98"/> + <location filename="../../Filters.cpp" line="136"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="106"/> + <location filename="../../Filters.cpp" line="144"/> + <source>Only on file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="109"/> + <location filename="../../Filters.cpp" line="147"/> + <source>Only on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="115"/> + <location filename="../../Filters.cpp" line="153"/> + <location filename="../../Filters.cpp" line="215"/> + <location filename="../../Filters.cpp" line="254"/> + <source>Full match</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ListThread</name> + <message> + <location filename="../../ListThread.cpp" line="1162"/> + <source>Unable do to move or copy item into wrong forced mode: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1169"/> + <source>Unable to save the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1185"/> + <source>Problem at the reading, or file size is null</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1192"/> + <source>Wrong header: "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1201"/> + <source>The transfer list is in mixed mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1210"/> + <source>The transfer list is in copy mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1216"/> + <source>The transfer list is in move mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1263"/> + <source>Some error have been found during the line parsing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1269"/> + <source>Unable to open the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>MkPath</name> <message> - <location filename="../../MkPath.cpp" line="51"/> + <location filename="../../MkPath.cpp" line="62"/> <source>Unable to create the folder</source> <translation type="unfinished"></translation> </message> @@ -32,426 +234,560 @@ <context> <name>ReadThread</name> <message> - <location filename="../../ReadThread.cpp" line="231"/> + <location filename="../../ReadThread.cpp" line="154"/> + <location filename="../../ReadThread.cpp" line="316"/> <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>RmPath</name> <message> - <location filename="../../RmPath.cpp" line="51"/> - <source>Unable to remove the folder</source> + <location filename="../../ReadThread.cpp" line="193"/> + <location filename="../../ReadThread.cpp" line="373"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>TransferThread</name> + <name>RenamingRules</name> + <message> + <location filename="../../RenamingRules.ui" line="26"/> + <source>First renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="32"/> + <source>%name% - copy</source> + <extracomment>%name% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="39"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p></body></html></source> + <extracomment> should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="49"/> + <source>Second renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="55"/> + <source>%name% - copy (%number%)</source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="62"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p><p><span style=" font-weight:600;">%number%</span> for the extra number</p></body></html></source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="39"/> + <location filename="../../RenamingRules.cpp" line="62"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="43"/> + <location filename="../../RenamingRules.cpp" line="73"/> + <source>%1 - copy (%2)</source> + <translation type="unfinished"></translation> + </message> <message> - <location filename="../../TransferThread.cpp" line="281"/> - <location filename="../../TransferThread.cpp" line="282"/> - <source>Copy of </source> + <location filename="../../RenamingRules.ui" line="14"/> + <source>Renaming rules</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>copyEngine</name> + <name>RmPath</name> <message> - <location filename="../../copyEngine.cpp" line="124"/> - <location filename="../../copyEngine.cpp" line="141"/> - <source>Select destination directory</source> + <location filename="../../RmPath.cpp" line="59"/> + <source>Unable to remove the folder</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>TransferThread</name> <message> - <location filename="../../copyEngine.cpp" line="188"/> - <location filename="../../copyEngine.cpp" line="201"/> - <source>Ask</source> + <location filename="../../TransferThread.cpp" line="311"/> + <source>%1 - copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="189"/> - <location filename="../../copyEngine.cpp" line="202"/> - <source>Skip</source> + <location filename="../../TransferThread.cpp" line="321"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="190"/> - <source>Overwrite</source> + <location filename="../../TransferThread.cpp" line="626"/> + <source>The checksums not match</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>WriteThread</name> <message> - <location filename="../../copyEngine.cpp" line="191"/> - <source>Overwrite if newer</source> + <location filename="../../WriteThread.cpp" line="443"/> + <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="192"/> - <source>Overwrite if not same modification date</source> + <location filename="../../WriteThread.cpp" line="481"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>copyEngine</name> <message> - <location filename="../../copyEngine.cpp" line="193"/> - <source>Rename</source> + <location filename="../../copyEngine.cpp" line="257"/> + <location filename="../../copyEngine.cpp" line="275"/> + <source>The engine is forced to move, you can't copy with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="203"/> - <source>Put to end of the list</source> + <location filename="../../copyEngine.cpp" line="286"/> + <location filename="../../copyEngine.cpp" line="304"/> + <source>The engine is forced to copy, you can't move with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="225"/> - <source>Select source directory</source> + <location filename="../../copyEngine.cpp" line="511"/> + <source>The mode have been forced previously, it's internal error, please report it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="239"/> - <source>Select one or more files to open</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="241"/> - <source>All files</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options engine is not loaded, can't access to the filters</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileErrorDialog</name> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="14"/> <source>Error on file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="20"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="56"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="73"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="90"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="136"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="156"/> <source>Put to bottom</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="163"/> <source>Retry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="170"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="177"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="29"/> + <source>Error on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="32"/> + <source>Folder name</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>fileExistsDialog</name> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="14"/> <source>The file exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="82"/> + <location filename="../../fileExistsDialog.ui" line="153"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="99"/> + <location filename="../../fileExistsDialog.ui" line="170"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="116"/> + <location filename="../../fileExistsDialog.ui" line="187"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="243"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="254"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="274"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="281"/> <source>&Overwrite</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="291"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="298"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="307"/> <source>Overwrite if newer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="312"/> <source>Overwrite if not same modification date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.cpp" line="70"/> - <location filename="../../fileExistsDialog.cpp" line="71"/> - <source>Copy of </source> + <location filename="../../fileExistsDialog.cpp" line="102"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileExistsDialog.cpp" line="112"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileIsSameDialog</name> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="14"/> <source>This files are the same file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="20"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="47"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="64"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="81"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="137"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="148"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="168"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="175"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="182"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.cpp" line="66"/> - <location filename="../../fileIsSameDialog.cpp" line="67"/> - <source>Copy of </source> + <location filename="../../fileIsSameDialog.cpp" line="87"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileIsSameDialog.cpp" line="97"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>folderExistsDialog</name> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="14"/> <source>This folders are the same folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="62"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="89"/> + <location filename="../../folderExistsDialog.ui" line="140"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="106"/> + <location filename="../../folderExistsDialog.ui" line="150"/> <source>Folder name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="200"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="211"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="218"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="225"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="232"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="239"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.cpp" line="61"/> - <source>Copy of </source> + <location filename="../../folderExistsDialog.cpp" line="29"/> + <source>Folder already exists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="85"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="95"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>options</name> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="23"/> <source>Transfer the file rights</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="33"/> <source>Keep the file date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="214"/> <source>Block size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="43"/> + <location filename="../../options.ui" line="198"/> <source>KB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="56"/> <source>Auto start the transfer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="66"/> <source>When folder error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="74"/> + <location filename="../../options.ui" line="95"/> <source>Ask</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="79"/> + <location filename="../../options.ui" line="105"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> - <source>When folder colision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="100"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="110"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="118"/> <source>Check if destination folder exists</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../options.ui" line="87"/> + <source>When folder collision</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="128"/> + <source>Checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="144"/> + <source>Only after error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="154"/> + <source>Ignore if impossible</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="171"/> + <source>Do checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="181"/> + <source>Enable OS buffer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="234"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="241"/> + <source>Renaming rules</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="191"/> + <source>OS buffer only if smaller than</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>scanFileOrFolder</name> <message> - <location filename="../../scanFileOrFolder.cpp" line="112"/> - <location filename="../../scanFileOrFolder.cpp" line="138"/> - <source>Copy of </source> + <location filename="../../scanFileOrFolder.cpp" line="218"/> + <location filename="../../scanFileOrFolder.cpp" line="282"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../scanFileOrFolder.cpp" line="228"/> + <location filename="../../scanFileOrFolder.cpp" line="292"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="157"/> + <location filename="../../scanFileOrFolder.cpp" line="326"/> <source>The folder not exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="159"/> + <location filename="../../scanFileOrFolder.cpp" line="328"/> <source>The folder is not readable</source> <translation type="unfinished"></translation> </message> diff --git a/plugins/CopyEngine/Ultracopier-0.3/Languages/no/translation.ts b/plugins/CopyEngine/Ultracopier-0.3/Languages/no/translation.ts index 1c3692c..0898631 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/Languages/no/translation.ts +++ b/plugins/CopyEngine/Ultracopier-0.3/Languages/no/translation.ts @@ -4,27 +4,229 @@ <context> <name>AvancedQFile</name> <message> - <location filename="../../AvancedQFile.cpp" line="17"/> - <location filename="../../AvancedQFile.cpp" line="48"/> - <location filename="../../AvancedQFile.cpp" line="79"/> + <location filename="../../AvancedQFile.cpp" line="28"/> + <location filename="../../AvancedQFile.cpp" line="59"/> + <location filename="../../AvancedQFile.cpp" line="90"/> <source>Not supported on this platform</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="31"/> + <location filename="../../AvancedQFile.cpp" line="42"/> <source>Last modified date is wrong</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="62"/> + <location filename="../../AvancedQFile.cpp" line="73"/> <source>Last access date is wrong</source> <translation type="unfinished"></translation> </message> </context> <context> + <name>Factory</name> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>FilterRules</name> + <message> + <location filename="../../FilterRules.ui" line="33"/> + <source>Search:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="43"/> + <source>Search type:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="51"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="56"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="61"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="69"/> + <source>Apply on:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="77"/> + <source>File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="82"/> + <source>Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="87"/> + <source>File and folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="95"/> + <source>All string need match</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="102"/> + <source>Checking</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="115"/> + <source>Test string:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="17"/> + <source>Filters dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="108"/> + <source>The regex is valid</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="125"/> + <source>The test string match with the regex</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Filters</name> + <message> + <location filename="../../Filters.ui" line="14"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="30"/> + <source>Exclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="93"/> + <source>Inclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="105"/> + <source>None = Include all</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="92"/> + <location filename="../../Filters.cpp" line="130"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="95"/> + <location filename="../../Filters.cpp" line="133"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="98"/> + <location filename="../../Filters.cpp" line="136"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="106"/> + <location filename="../../Filters.cpp" line="144"/> + <source>Only on file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="109"/> + <location filename="../../Filters.cpp" line="147"/> + <source>Only on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="115"/> + <location filename="../../Filters.cpp" line="153"/> + <location filename="../../Filters.cpp" line="215"/> + <location filename="../../Filters.cpp" line="254"/> + <source>Full match</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ListThread</name> + <message> + <location filename="../../ListThread.cpp" line="1162"/> + <source>Unable do to move or copy item into wrong forced mode: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1169"/> + <source>Unable to save the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1185"/> + <source>Problem at the reading, or file size is null</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1192"/> + <source>Wrong header: "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1201"/> + <source>The transfer list is in mixed mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1210"/> + <source>The transfer list is in copy mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1216"/> + <source>The transfer list is in move mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1263"/> + <source>Some error have been found during the line parsing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1269"/> + <source>Unable to open the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>MkPath</name> <message> - <location filename="../../MkPath.cpp" line="51"/> + <location filename="../../MkPath.cpp" line="62"/> <source>Unable to create the folder</source> <translation type="unfinished"></translation> </message> @@ -32,426 +234,560 @@ <context> <name>ReadThread</name> <message> - <location filename="../../ReadThread.cpp" line="231"/> + <location filename="../../ReadThread.cpp" line="154"/> + <location filename="../../ReadThread.cpp" line="316"/> <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>RmPath</name> <message> - <location filename="../../RmPath.cpp" line="51"/> - <source>Unable to remove the folder</source> + <location filename="../../ReadThread.cpp" line="193"/> + <location filename="../../ReadThread.cpp" line="373"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>TransferThread</name> + <name>RenamingRules</name> + <message> + <location filename="../../RenamingRules.ui" line="26"/> + <source>First renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="32"/> + <source>%name% - copy</source> + <extracomment>%name% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="39"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p></body></html></source> + <extracomment> should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="49"/> + <source>Second renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="55"/> + <source>%name% - copy (%number%)</source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="62"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p><p><span style=" font-weight:600;">%number%</span> for the extra number</p></body></html></source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="39"/> + <location filename="../../RenamingRules.cpp" line="62"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="43"/> + <location filename="../../RenamingRules.cpp" line="73"/> + <source>%1 - copy (%2)</source> + <translation type="unfinished"></translation> + </message> <message> - <location filename="../../TransferThread.cpp" line="281"/> - <location filename="../../TransferThread.cpp" line="282"/> - <source>Copy of </source> + <location filename="../../RenamingRules.ui" line="14"/> + <source>Renaming rules</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>copyEngine</name> + <name>RmPath</name> <message> - <location filename="../../copyEngine.cpp" line="124"/> - <location filename="../../copyEngine.cpp" line="141"/> - <source>Select destination directory</source> + <location filename="../../RmPath.cpp" line="59"/> + <source>Unable to remove the folder</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>TransferThread</name> <message> - <location filename="../../copyEngine.cpp" line="188"/> - <location filename="../../copyEngine.cpp" line="201"/> - <source>Ask</source> + <location filename="../../TransferThread.cpp" line="311"/> + <source>%1 - copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="189"/> - <location filename="../../copyEngine.cpp" line="202"/> - <source>Skip</source> + <location filename="../../TransferThread.cpp" line="321"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="190"/> - <source>Overwrite</source> + <location filename="../../TransferThread.cpp" line="626"/> + <source>The checksums not match</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>WriteThread</name> <message> - <location filename="../../copyEngine.cpp" line="191"/> - <source>Overwrite if newer</source> + <location filename="../../WriteThread.cpp" line="443"/> + <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="192"/> - <source>Overwrite if not same modification date</source> + <location filename="../../WriteThread.cpp" line="481"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>copyEngine</name> <message> - <location filename="../../copyEngine.cpp" line="193"/> - <source>Rename</source> + <location filename="../../copyEngine.cpp" line="257"/> + <location filename="../../copyEngine.cpp" line="275"/> + <source>The engine is forced to move, you can't copy with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="203"/> - <source>Put to end of the list</source> + <location filename="../../copyEngine.cpp" line="286"/> + <location filename="../../copyEngine.cpp" line="304"/> + <source>The engine is forced to copy, you can't move with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="225"/> - <source>Select source directory</source> + <location filename="../../copyEngine.cpp" line="511"/> + <source>The mode have been forced previously, it's internal error, please report it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="239"/> - <source>Select one or more files to open</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="241"/> - <source>All files</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options engine is not loaded, can't access to the filters</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileErrorDialog</name> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="14"/> <source>Error on file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="20"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="56"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="73"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="90"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="136"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="156"/> <source>Put to bottom</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="163"/> <source>Retry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="170"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="177"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="29"/> + <source>Error on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="32"/> + <source>Folder name</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>fileExistsDialog</name> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="14"/> <source>The file exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="82"/> + <location filename="../../fileExistsDialog.ui" line="153"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="99"/> + <location filename="../../fileExistsDialog.ui" line="170"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="116"/> + <location filename="../../fileExistsDialog.ui" line="187"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="243"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="254"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="274"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="281"/> <source>&Overwrite</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="291"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="298"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="307"/> <source>Overwrite if newer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="312"/> <source>Overwrite if not same modification date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.cpp" line="70"/> - <location filename="../../fileExistsDialog.cpp" line="71"/> - <source>Copy of </source> + <location filename="../../fileExistsDialog.cpp" line="102"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileExistsDialog.cpp" line="112"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileIsSameDialog</name> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="14"/> <source>This files are the same file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="20"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="47"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="64"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="81"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="137"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="148"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="168"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="175"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="182"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.cpp" line="66"/> - <location filename="../../fileIsSameDialog.cpp" line="67"/> - <source>Copy of </source> + <location filename="../../fileIsSameDialog.cpp" line="87"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileIsSameDialog.cpp" line="97"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>folderExistsDialog</name> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="14"/> <source>This folders are the same folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="62"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="89"/> + <location filename="../../folderExistsDialog.ui" line="140"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="106"/> + <location filename="../../folderExistsDialog.ui" line="150"/> <source>Folder name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="200"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="211"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="218"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="225"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="232"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="239"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.cpp" line="61"/> - <source>Copy of </source> + <location filename="../../folderExistsDialog.cpp" line="29"/> + <source>Folder already exists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="85"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="95"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>options</name> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="23"/> <source>Transfer the file rights</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="33"/> <source>Keep the file date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="214"/> <source>Block size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="43"/> + <location filename="../../options.ui" line="198"/> <source>KB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="56"/> <source>Auto start the transfer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="66"/> <source>When folder error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="74"/> + <location filename="../../options.ui" line="95"/> <source>Ask</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="79"/> + <location filename="../../options.ui" line="105"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> - <source>When folder colision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="100"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="110"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="118"/> <source>Check if destination folder exists</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../options.ui" line="87"/> + <source>When folder collision</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="128"/> + <source>Checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="144"/> + <source>Only after error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="154"/> + <source>Ignore if impossible</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="171"/> + <source>Do checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="181"/> + <source>Enable OS buffer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="234"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="241"/> + <source>Renaming rules</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="191"/> + <source>OS buffer only if smaller than</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>scanFileOrFolder</name> <message> - <location filename="../../scanFileOrFolder.cpp" line="112"/> - <location filename="../../scanFileOrFolder.cpp" line="138"/> - <source>Copy of </source> + <location filename="../../scanFileOrFolder.cpp" line="218"/> + <location filename="../../scanFileOrFolder.cpp" line="282"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../scanFileOrFolder.cpp" line="228"/> + <location filename="../../scanFileOrFolder.cpp" line="292"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="157"/> + <location filename="../../scanFileOrFolder.cpp" line="326"/> <source>The folder not exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="159"/> + <location filename="../../scanFileOrFolder.cpp" line="328"/> <source>The folder is not readable</source> <translation type="unfinished"></translation> </message> diff --git a/plugins/CopyEngine/Ultracopier-0.3/Languages/pl/translation.ts b/plugins/CopyEngine/Ultracopier-0.3/Languages/pl/translation.ts index 1c3692c..0898631 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/Languages/pl/translation.ts +++ b/plugins/CopyEngine/Ultracopier-0.3/Languages/pl/translation.ts @@ -4,27 +4,229 @@ <context> <name>AvancedQFile</name> <message> - <location filename="../../AvancedQFile.cpp" line="17"/> - <location filename="../../AvancedQFile.cpp" line="48"/> - <location filename="../../AvancedQFile.cpp" line="79"/> + <location filename="../../AvancedQFile.cpp" line="28"/> + <location filename="../../AvancedQFile.cpp" line="59"/> + <location filename="../../AvancedQFile.cpp" line="90"/> <source>Not supported on this platform</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="31"/> + <location filename="../../AvancedQFile.cpp" line="42"/> <source>Last modified date is wrong</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="62"/> + <location filename="../../AvancedQFile.cpp" line="73"/> <source>Last access date is wrong</source> <translation type="unfinished"></translation> </message> </context> <context> + <name>Factory</name> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>FilterRules</name> + <message> + <location filename="../../FilterRules.ui" line="33"/> + <source>Search:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="43"/> + <source>Search type:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="51"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="56"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="61"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="69"/> + <source>Apply on:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="77"/> + <source>File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="82"/> + <source>Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="87"/> + <source>File and folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="95"/> + <source>All string need match</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="102"/> + <source>Checking</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="115"/> + <source>Test string:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="17"/> + <source>Filters dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="108"/> + <source>The regex is valid</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="125"/> + <source>The test string match with the regex</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Filters</name> + <message> + <location filename="../../Filters.ui" line="14"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="30"/> + <source>Exclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="93"/> + <source>Inclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="105"/> + <source>None = Include all</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="92"/> + <location filename="../../Filters.cpp" line="130"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="95"/> + <location filename="../../Filters.cpp" line="133"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="98"/> + <location filename="../../Filters.cpp" line="136"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="106"/> + <location filename="../../Filters.cpp" line="144"/> + <source>Only on file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="109"/> + <location filename="../../Filters.cpp" line="147"/> + <source>Only on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="115"/> + <location filename="../../Filters.cpp" line="153"/> + <location filename="../../Filters.cpp" line="215"/> + <location filename="../../Filters.cpp" line="254"/> + <source>Full match</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ListThread</name> + <message> + <location filename="../../ListThread.cpp" line="1162"/> + <source>Unable do to move or copy item into wrong forced mode: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1169"/> + <source>Unable to save the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1185"/> + <source>Problem at the reading, or file size is null</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1192"/> + <source>Wrong header: "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1201"/> + <source>The transfer list is in mixed mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1210"/> + <source>The transfer list is in copy mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1216"/> + <source>The transfer list is in move mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1263"/> + <source>Some error have been found during the line parsing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1269"/> + <source>Unable to open the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>MkPath</name> <message> - <location filename="../../MkPath.cpp" line="51"/> + <location filename="../../MkPath.cpp" line="62"/> <source>Unable to create the folder</source> <translation type="unfinished"></translation> </message> @@ -32,426 +234,560 @@ <context> <name>ReadThread</name> <message> - <location filename="../../ReadThread.cpp" line="231"/> + <location filename="../../ReadThread.cpp" line="154"/> + <location filename="../../ReadThread.cpp" line="316"/> <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>RmPath</name> <message> - <location filename="../../RmPath.cpp" line="51"/> - <source>Unable to remove the folder</source> + <location filename="../../ReadThread.cpp" line="193"/> + <location filename="../../ReadThread.cpp" line="373"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>TransferThread</name> + <name>RenamingRules</name> + <message> + <location filename="../../RenamingRules.ui" line="26"/> + <source>First renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="32"/> + <source>%name% - copy</source> + <extracomment>%name% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="39"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p></body></html></source> + <extracomment> should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="49"/> + <source>Second renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="55"/> + <source>%name% - copy (%number%)</source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="62"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p><p><span style=" font-weight:600;">%number%</span> for the extra number</p></body></html></source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="39"/> + <location filename="../../RenamingRules.cpp" line="62"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="43"/> + <location filename="../../RenamingRules.cpp" line="73"/> + <source>%1 - copy (%2)</source> + <translation type="unfinished"></translation> + </message> <message> - <location filename="../../TransferThread.cpp" line="281"/> - <location filename="../../TransferThread.cpp" line="282"/> - <source>Copy of </source> + <location filename="../../RenamingRules.ui" line="14"/> + <source>Renaming rules</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>copyEngine</name> + <name>RmPath</name> <message> - <location filename="../../copyEngine.cpp" line="124"/> - <location filename="../../copyEngine.cpp" line="141"/> - <source>Select destination directory</source> + <location filename="../../RmPath.cpp" line="59"/> + <source>Unable to remove the folder</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>TransferThread</name> <message> - <location filename="../../copyEngine.cpp" line="188"/> - <location filename="../../copyEngine.cpp" line="201"/> - <source>Ask</source> + <location filename="../../TransferThread.cpp" line="311"/> + <source>%1 - copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="189"/> - <location filename="../../copyEngine.cpp" line="202"/> - <source>Skip</source> + <location filename="../../TransferThread.cpp" line="321"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="190"/> - <source>Overwrite</source> + <location filename="../../TransferThread.cpp" line="626"/> + <source>The checksums not match</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>WriteThread</name> <message> - <location filename="../../copyEngine.cpp" line="191"/> - <source>Overwrite if newer</source> + <location filename="../../WriteThread.cpp" line="443"/> + <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="192"/> - <source>Overwrite if not same modification date</source> + <location filename="../../WriteThread.cpp" line="481"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>copyEngine</name> <message> - <location filename="../../copyEngine.cpp" line="193"/> - <source>Rename</source> + <location filename="../../copyEngine.cpp" line="257"/> + <location filename="../../copyEngine.cpp" line="275"/> + <source>The engine is forced to move, you can't copy with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="203"/> - <source>Put to end of the list</source> + <location filename="../../copyEngine.cpp" line="286"/> + <location filename="../../copyEngine.cpp" line="304"/> + <source>The engine is forced to copy, you can't move with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="225"/> - <source>Select source directory</source> + <location filename="../../copyEngine.cpp" line="511"/> + <source>The mode have been forced previously, it's internal error, please report it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="239"/> - <source>Select one or more files to open</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="241"/> - <source>All files</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options engine is not loaded, can't access to the filters</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileErrorDialog</name> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="14"/> <source>Error on file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="20"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="56"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="73"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="90"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="136"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="156"/> <source>Put to bottom</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="163"/> <source>Retry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="170"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="177"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="29"/> + <source>Error on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="32"/> + <source>Folder name</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>fileExistsDialog</name> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="14"/> <source>The file exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="82"/> + <location filename="../../fileExistsDialog.ui" line="153"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="99"/> + <location filename="../../fileExistsDialog.ui" line="170"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="116"/> + <location filename="../../fileExistsDialog.ui" line="187"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="243"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="254"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="274"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="281"/> <source>&Overwrite</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="291"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="298"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="307"/> <source>Overwrite if newer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="312"/> <source>Overwrite if not same modification date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.cpp" line="70"/> - <location filename="../../fileExistsDialog.cpp" line="71"/> - <source>Copy of </source> + <location filename="../../fileExistsDialog.cpp" line="102"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileExistsDialog.cpp" line="112"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileIsSameDialog</name> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="14"/> <source>This files are the same file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="20"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="47"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="64"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="81"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="137"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="148"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="168"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="175"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="182"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.cpp" line="66"/> - <location filename="../../fileIsSameDialog.cpp" line="67"/> - <source>Copy of </source> + <location filename="../../fileIsSameDialog.cpp" line="87"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileIsSameDialog.cpp" line="97"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>folderExistsDialog</name> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="14"/> <source>This folders are the same folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="62"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="89"/> + <location filename="../../folderExistsDialog.ui" line="140"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="106"/> + <location filename="../../folderExistsDialog.ui" line="150"/> <source>Folder name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="200"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="211"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="218"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="225"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="232"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="239"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.cpp" line="61"/> - <source>Copy of </source> + <location filename="../../folderExistsDialog.cpp" line="29"/> + <source>Folder already exists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="85"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="95"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>options</name> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="23"/> <source>Transfer the file rights</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="33"/> <source>Keep the file date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="214"/> <source>Block size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="43"/> + <location filename="../../options.ui" line="198"/> <source>KB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="56"/> <source>Auto start the transfer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="66"/> <source>When folder error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="74"/> + <location filename="../../options.ui" line="95"/> <source>Ask</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="79"/> + <location filename="../../options.ui" line="105"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> - <source>When folder colision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="100"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="110"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="118"/> <source>Check if destination folder exists</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../options.ui" line="87"/> + <source>When folder collision</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="128"/> + <source>Checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="144"/> + <source>Only after error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="154"/> + <source>Ignore if impossible</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="171"/> + <source>Do checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="181"/> + <source>Enable OS buffer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="234"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="241"/> + <source>Renaming rules</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="191"/> + <source>OS buffer only if smaller than</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>scanFileOrFolder</name> <message> - <location filename="../../scanFileOrFolder.cpp" line="112"/> - <location filename="../../scanFileOrFolder.cpp" line="138"/> - <source>Copy of </source> + <location filename="../../scanFileOrFolder.cpp" line="218"/> + <location filename="../../scanFileOrFolder.cpp" line="282"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../scanFileOrFolder.cpp" line="228"/> + <location filename="../../scanFileOrFolder.cpp" line="292"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="157"/> + <location filename="../../scanFileOrFolder.cpp" line="326"/> <source>The folder not exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="159"/> + <location filename="../../scanFileOrFolder.cpp" line="328"/> <source>The folder is not readable</source> <translation type="unfinished"></translation> </message> diff --git a/plugins/CopyEngine/Ultracopier-0.3/Languages/pt/translation.ts b/plugins/CopyEngine/Ultracopier-0.3/Languages/pt/translation.ts index 1c3692c..0898631 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/Languages/pt/translation.ts +++ b/plugins/CopyEngine/Ultracopier-0.3/Languages/pt/translation.ts @@ -4,27 +4,229 @@ <context> <name>AvancedQFile</name> <message> - <location filename="../../AvancedQFile.cpp" line="17"/> - <location filename="../../AvancedQFile.cpp" line="48"/> - <location filename="../../AvancedQFile.cpp" line="79"/> + <location filename="../../AvancedQFile.cpp" line="28"/> + <location filename="../../AvancedQFile.cpp" line="59"/> + <location filename="../../AvancedQFile.cpp" line="90"/> <source>Not supported on this platform</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="31"/> + <location filename="../../AvancedQFile.cpp" line="42"/> <source>Last modified date is wrong</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="62"/> + <location filename="../../AvancedQFile.cpp" line="73"/> <source>Last access date is wrong</source> <translation type="unfinished"></translation> </message> </context> <context> + <name>Factory</name> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>FilterRules</name> + <message> + <location filename="../../FilterRules.ui" line="33"/> + <source>Search:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="43"/> + <source>Search type:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="51"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="56"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="61"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="69"/> + <source>Apply on:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="77"/> + <source>File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="82"/> + <source>Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="87"/> + <source>File and folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="95"/> + <source>All string need match</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="102"/> + <source>Checking</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="115"/> + <source>Test string:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="17"/> + <source>Filters dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="108"/> + <source>The regex is valid</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="125"/> + <source>The test string match with the regex</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Filters</name> + <message> + <location filename="../../Filters.ui" line="14"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="30"/> + <source>Exclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="93"/> + <source>Inclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="105"/> + <source>None = Include all</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="92"/> + <location filename="../../Filters.cpp" line="130"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="95"/> + <location filename="../../Filters.cpp" line="133"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="98"/> + <location filename="../../Filters.cpp" line="136"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="106"/> + <location filename="../../Filters.cpp" line="144"/> + <source>Only on file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="109"/> + <location filename="../../Filters.cpp" line="147"/> + <source>Only on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="115"/> + <location filename="../../Filters.cpp" line="153"/> + <location filename="../../Filters.cpp" line="215"/> + <location filename="../../Filters.cpp" line="254"/> + <source>Full match</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ListThread</name> + <message> + <location filename="../../ListThread.cpp" line="1162"/> + <source>Unable do to move or copy item into wrong forced mode: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1169"/> + <source>Unable to save the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1185"/> + <source>Problem at the reading, or file size is null</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1192"/> + <source>Wrong header: "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1201"/> + <source>The transfer list is in mixed mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1210"/> + <source>The transfer list is in copy mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1216"/> + <source>The transfer list is in move mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1263"/> + <source>Some error have been found during the line parsing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1269"/> + <source>Unable to open the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>MkPath</name> <message> - <location filename="../../MkPath.cpp" line="51"/> + <location filename="../../MkPath.cpp" line="62"/> <source>Unable to create the folder</source> <translation type="unfinished"></translation> </message> @@ -32,426 +234,560 @@ <context> <name>ReadThread</name> <message> - <location filename="../../ReadThread.cpp" line="231"/> + <location filename="../../ReadThread.cpp" line="154"/> + <location filename="../../ReadThread.cpp" line="316"/> <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>RmPath</name> <message> - <location filename="../../RmPath.cpp" line="51"/> - <source>Unable to remove the folder</source> + <location filename="../../ReadThread.cpp" line="193"/> + <location filename="../../ReadThread.cpp" line="373"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>TransferThread</name> + <name>RenamingRules</name> + <message> + <location filename="../../RenamingRules.ui" line="26"/> + <source>First renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="32"/> + <source>%name% - copy</source> + <extracomment>%name% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="39"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p></body></html></source> + <extracomment> should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="49"/> + <source>Second renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="55"/> + <source>%name% - copy (%number%)</source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="62"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p><p><span style=" font-weight:600;">%number%</span> for the extra number</p></body></html></source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="39"/> + <location filename="../../RenamingRules.cpp" line="62"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="43"/> + <location filename="../../RenamingRules.cpp" line="73"/> + <source>%1 - copy (%2)</source> + <translation type="unfinished"></translation> + </message> <message> - <location filename="../../TransferThread.cpp" line="281"/> - <location filename="../../TransferThread.cpp" line="282"/> - <source>Copy of </source> + <location filename="../../RenamingRules.ui" line="14"/> + <source>Renaming rules</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>copyEngine</name> + <name>RmPath</name> <message> - <location filename="../../copyEngine.cpp" line="124"/> - <location filename="../../copyEngine.cpp" line="141"/> - <source>Select destination directory</source> + <location filename="../../RmPath.cpp" line="59"/> + <source>Unable to remove the folder</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>TransferThread</name> <message> - <location filename="../../copyEngine.cpp" line="188"/> - <location filename="../../copyEngine.cpp" line="201"/> - <source>Ask</source> + <location filename="../../TransferThread.cpp" line="311"/> + <source>%1 - copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="189"/> - <location filename="../../copyEngine.cpp" line="202"/> - <source>Skip</source> + <location filename="../../TransferThread.cpp" line="321"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="190"/> - <source>Overwrite</source> + <location filename="../../TransferThread.cpp" line="626"/> + <source>The checksums not match</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>WriteThread</name> <message> - <location filename="../../copyEngine.cpp" line="191"/> - <source>Overwrite if newer</source> + <location filename="../../WriteThread.cpp" line="443"/> + <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="192"/> - <source>Overwrite if not same modification date</source> + <location filename="../../WriteThread.cpp" line="481"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>copyEngine</name> <message> - <location filename="../../copyEngine.cpp" line="193"/> - <source>Rename</source> + <location filename="../../copyEngine.cpp" line="257"/> + <location filename="../../copyEngine.cpp" line="275"/> + <source>The engine is forced to move, you can't copy with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="203"/> - <source>Put to end of the list</source> + <location filename="../../copyEngine.cpp" line="286"/> + <location filename="../../copyEngine.cpp" line="304"/> + <source>The engine is forced to copy, you can't move with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="225"/> - <source>Select source directory</source> + <location filename="../../copyEngine.cpp" line="511"/> + <source>The mode have been forced previously, it's internal error, please report it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="239"/> - <source>Select one or more files to open</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="241"/> - <source>All files</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options engine is not loaded, can't access to the filters</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileErrorDialog</name> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="14"/> <source>Error on file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="20"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="56"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="73"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="90"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="136"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="156"/> <source>Put to bottom</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="163"/> <source>Retry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="170"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="177"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="29"/> + <source>Error on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="32"/> + <source>Folder name</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>fileExistsDialog</name> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="14"/> <source>The file exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="82"/> + <location filename="../../fileExistsDialog.ui" line="153"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="99"/> + <location filename="../../fileExistsDialog.ui" line="170"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="116"/> + <location filename="../../fileExistsDialog.ui" line="187"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="243"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="254"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="274"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="281"/> <source>&Overwrite</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="291"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="298"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="307"/> <source>Overwrite if newer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="312"/> <source>Overwrite if not same modification date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.cpp" line="70"/> - <location filename="../../fileExistsDialog.cpp" line="71"/> - <source>Copy of </source> + <location filename="../../fileExistsDialog.cpp" line="102"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileExistsDialog.cpp" line="112"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileIsSameDialog</name> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="14"/> <source>This files are the same file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="20"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="47"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="64"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="81"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="137"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="148"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="168"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="175"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="182"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.cpp" line="66"/> - <location filename="../../fileIsSameDialog.cpp" line="67"/> - <source>Copy of </source> + <location filename="../../fileIsSameDialog.cpp" line="87"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileIsSameDialog.cpp" line="97"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>folderExistsDialog</name> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="14"/> <source>This folders are the same folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="62"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="89"/> + <location filename="../../folderExistsDialog.ui" line="140"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="106"/> + <location filename="../../folderExistsDialog.ui" line="150"/> <source>Folder name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="200"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="211"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="218"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="225"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="232"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="239"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.cpp" line="61"/> - <source>Copy of </source> + <location filename="../../folderExistsDialog.cpp" line="29"/> + <source>Folder already exists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="85"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="95"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>options</name> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="23"/> <source>Transfer the file rights</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="33"/> <source>Keep the file date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="214"/> <source>Block size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="43"/> + <location filename="../../options.ui" line="198"/> <source>KB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="56"/> <source>Auto start the transfer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="66"/> <source>When folder error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="74"/> + <location filename="../../options.ui" line="95"/> <source>Ask</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="79"/> + <location filename="../../options.ui" line="105"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> - <source>When folder colision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="100"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="110"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="118"/> <source>Check if destination folder exists</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../options.ui" line="87"/> + <source>When folder collision</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="128"/> + <source>Checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="144"/> + <source>Only after error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="154"/> + <source>Ignore if impossible</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="171"/> + <source>Do checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="181"/> + <source>Enable OS buffer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="234"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="241"/> + <source>Renaming rules</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="191"/> + <source>OS buffer only if smaller than</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>scanFileOrFolder</name> <message> - <location filename="../../scanFileOrFolder.cpp" line="112"/> - <location filename="../../scanFileOrFolder.cpp" line="138"/> - <source>Copy of </source> + <location filename="../../scanFileOrFolder.cpp" line="218"/> + <location filename="../../scanFileOrFolder.cpp" line="282"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../scanFileOrFolder.cpp" line="228"/> + <location filename="../../scanFileOrFolder.cpp" line="292"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="157"/> + <location filename="../../scanFileOrFolder.cpp" line="326"/> <source>The folder not exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="159"/> + <location filename="../../scanFileOrFolder.cpp" line="328"/> <source>The folder is not readable</source> <translation type="unfinished"></translation> </message> diff --git a/plugins/CopyEngine/Ultracopier-0.3/Languages/ru/translation.ts b/plugins/CopyEngine/Ultracopier-0.3/Languages/ru/translation.ts index 1c3692c..90f4c0f 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/Languages/ru/translation.ts +++ b/plugins/CopyEngine/Ultracopier-0.3/Languages/ru/translation.ts @@ -1,459 +1,795 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0"> +<TS version="2.0" language="ru" sourcelanguage="en"> <context> <name>AvancedQFile</name> <message> - <location filename="../../AvancedQFile.cpp" line="17"/> - <location filename="../../AvancedQFile.cpp" line="48"/> - <location filename="../../AvancedQFile.cpp" line="79"/> + <location filename="../../AvancedQFile.cpp" line="28"/> + <location filename="../../AvancedQFile.cpp" line="59"/> + <location filename="../../AvancedQFile.cpp" line="90"/> <source>Not supported on this platform</source> - <translation type="unfinished"></translation> + <translation>Не поддерживается на этой платформе</translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="31"/> + <location filename="../../AvancedQFile.cpp" line="42"/> <source>Last modified date is wrong</source> - <translation type="unfinished"></translation> + <translation>Дата обновления неправильно</translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="62"/> + <location filename="../../AvancedQFile.cpp" line="73"/> <source>Last access date is wrong</source> - <translation type="unfinished"></translation> + <translation>Дата последнего доступа не так</translation> + </message> +</context> +<context> + <name>Factory</name> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options error</source> + <translation>Опции ошибке</translation> + </message> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation>Параметры двигателя не загружается, не может получить доступ к фильтрам</translation> + </message> +</context> +<context> + <name>FilterRules</name> + <message> + <location filename="../../FilterRules.ui" line="33"/> + <source>Search:</source> + <translation>Поиск по сайту:</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="43"/> + <source>Search type:</source> + <translation>Тип поиска:</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="51"/> + <source>Raw text</source> + <translation>Сырой текст</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="56"/> + <source>Simplified regex</source> + <translation>упрощенный regex</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="61"/> + <source>Perl's regex</source> + <translation>Perl's regex</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="69"/> + <source>Apply on:</source> + <translation>Нанесите на:</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="77"/> + <source>File</source> + <translation>файл</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="82"/> + <source>Folder</source> + <translation>папка</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="87"/> + <source>File and folder</source> + <translation>Файлов и папок</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="95"/> + <source>All string need match</source> + <translation>Все строки нужно соответствовать</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="102"/> + <source>Checking</source> + <translation>контроль</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="115"/> + <source>Test string:</source> + <translation>Испытание строки:</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="17"/> + <source>Filters dialog</source> + <translation>Фильтры диалогового</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="108"/> + <source>The regex is valid</source> + <translation>Регулярное действует</translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="125"/> + <source>The test string match with the regex</source> + <translation>Матч тестовую строку с регулярным выражением</translation> + </message> +</context> +<context> + <name>Filters</name> + <message> + <location filename="../../Filters.ui" line="14"/> + <source>Filters</source> + <translation>Фильтры</translation> + </message> + <message> + <location filename="../../Filters.ui" line="30"/> + <source>Exclusion filter</source> + <translation>Исключение фильтра</translation> + </message> + <message> + <location filename="../../Filters.ui" line="93"/> + <source>Inclusion filter</source> + <translation>Включение фильтра</translation> + </message> + <message> + <location filename="../../Filters.ui" line="105"/> + <source>None = Include all</source> + <translation>Ни = Включить все</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="92"/> + <location filename="../../Filters.cpp" line="130"/> + <source>Raw text</source> + <translation>Сырой текст</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="95"/> + <location filename="../../Filters.cpp" line="133"/> + <source>Simplified regex</source> + <translation>Упрощенная регулярных выражений</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="98"/> + <location filename="../../Filters.cpp" line="136"/> + <source>Perl's regex</source> + <translation>Perl's regex</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="106"/> + <location filename="../../Filters.cpp" line="144"/> + <source>Only on file</source> + <translation>Только на файл</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="109"/> + <location filename="../../Filters.cpp" line="147"/> + <source>Only on folder</source> + <translation>Только на папку</translation> + </message> + <message> + <location filename="../../Filters.cpp" line="115"/> + <location filename="../../Filters.cpp" line="153"/> + <location filename="../../Filters.cpp" line="215"/> + <location filename="../../Filters.cpp" line="254"/> + <source>Full match</source> + <translation>Полный матч</translation> + </message> +</context> +<context> + <name>ListThread</name> + <message> + <location filename="../../ListThread.cpp" line="1162"/> + <source>Unable do to move or copy item into wrong forced mode: %1</source> + <translation>Невозможно сделать, чтобы скопировать или переместить элемент в неправильном форсированном режиме: %1</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1169"/> + <source>Unable to save the transfer list: %1</source> + <translation>Невозможно сохранить трансфер: %1</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1185"/> + <source>Problem at the reading, or file size is null</source> + <translation>Проблема при чтении или размер файла нулевой</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1192"/> + <source>Wrong header: "%1"</source> + <translation>Неправильный заголовок: "%1"</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1201"/> + <source>The transfer list is in mixed mode, but this instance is not in this mode</source> + <translation>Трансфер в смешанном режиме, но этот экземпляр не в этом режиме</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1210"/> + <source>The transfer list is in copy mode, but this instance is not in this mode</source> + <translation>Передача списка в режиме копирования, но этот экземпляр не в этом режиме</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1216"/> + <source>The transfer list is in move mode, but this instance is not in this mode</source> + <translation>Трансфер в режим перемещения, но этот экземпляр не в этом режиме</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1263"/> + <source>Some error have been found during the line parsing</source> + <translation>Некоторые ошибки были обнаружены в ходе разбора линия</translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1269"/> + <source>Unable to open the transfer list: %1</source> + <translation>Не удается открыть трансфер: %1</translation> </message> </context> <context> <name>MkPath</name> <message> - <location filename="../../MkPath.cpp" line="51"/> + <location filename="../../MkPath.cpp" line="62"/> <source>Unable to create the folder</source> - <translation type="unfinished"></translation> + <translation>Невозможно создать папку</translation> </message> </context> <context> <name>ReadThread</name> <message> - <location filename="../../ReadThread.cpp" line="231"/> + <location filename="../../ReadThread.cpp" line="154"/> + <location filename="../../ReadThread.cpp" line="316"/> <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> + <translation>Невозможно прочитать исходный файл: </translation> </message> -</context> -<context> - <name>RmPath</name> <message> - <location filename="../../RmPath.cpp" line="51"/> - <source>Unable to remove the folder</source> - <translation type="unfinished"></translation> + <location filename="../../ReadThread.cpp" line="193"/> + <location filename="../../ReadThread.cpp" line="373"/> + <source>File truncated during the read, possible data change</source> + <translation>Файл усечены во время чтения, возможность изменения данных</translation> </message> </context> <context> - <name>TransferThread</name> + <name>RenamingRules</name> + <message> + <location filename="../../RenamingRules.ui" line="26"/> + <source>First renaming</source> + <translation>Первое переименование</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="32"/> + <source>%name% - copy</source> + <extracomment>%name% should not be translated</extracomment> + <translation>%name% - копия</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="39"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p></body></html></source> + <extracomment> should not be translated</extracomment> + <translation><html><head/><body><p>Переменные: <span style=" font-weight:600;">%name%</span> по оригинальному названию файла</p></body></html></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="49"/> + <source>Second renaming</source> + <translation>Второе переименование</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="55"/> + <source>%name% - copy (%number%)</source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation>%name% - копия (%number%)</translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="62"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p><p><span style=" font-weight:600;">%number%</span> for the extra number</p></body></html></source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation><html><head/><body><p>Переменные: <span style=" font-weight:600;">%name%</span> по оригинальному названию файла</p><p><span style=" font-weight:600;">%number%</span> за дополнительный номер</p></body></html></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="39"/> + <location filename="../../RenamingRules.cpp" line="62"/> + <source>%1 - copy</source> + <translation>%1 - копия</translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="43"/> + <location filename="../../RenamingRules.cpp" line="73"/> + <source>%1 - copy (%2)</source> + <translation>%1 - копия (%2)</translation> + </message> <message> - <location filename="../../TransferThread.cpp" line="281"/> - <location filename="../../TransferThread.cpp" line="282"/> - <source>Copy of </source> - <translation type="unfinished"></translation> + <location filename="../../RenamingRules.ui" line="14"/> + <source>Renaming rules</source> + <translation>Переименование правила</translation> </message> </context> <context> - <name>copyEngine</name> + <name>RmPath</name> <message> - <location filename="../../copyEngine.cpp" line="124"/> - <location filename="../../copyEngine.cpp" line="141"/> - <source>Select destination directory</source> - <translation type="unfinished"></translation> + <location filename="../../RmPath.cpp" line="59"/> + <source>Unable to remove the folder</source> + <translation>Не удается удалить папку</translation> </message> +</context> +<context> + <name>TransferThread</name> <message> - <location filename="../../copyEngine.cpp" line="188"/> - <location filename="../../copyEngine.cpp" line="201"/> - <source>Ask</source> - <translation type="unfinished"></translation> + <location filename="../../TransferThread.cpp" line="311"/> + <source>%1 - copy</source> + <translation>%1 - копия</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="189"/> - <location filename="../../copyEngine.cpp" line="202"/> - <source>Skip</source> - <translation type="unfinished"></translation> + <location filename="../../TransferThread.cpp" line="321"/> + <source>%1 - copy (%2)</source> + <translation>%1 - копия (%2)</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="190"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> + <location filename="../../TransferThread.cpp" line="626"/> + <source>The checksums not match</source> + <translation>Контрольные суммы не совпадают</translation> </message> +</context> +<context> + <name>WriteThread</name> <message> - <location filename="../../copyEngine.cpp" line="191"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> + <location filename="../../WriteThread.cpp" line="443"/> + <source>Unable to read the source file: </source> + <translation>Невозможно прочитать исходный файл: </translation> </message> <message> - <location filename="../../copyEngine.cpp" line="192"/> - <source>Overwrite if not same modification date</source> - <translation type="unfinished"></translation> + <location filename="../../WriteThread.cpp" line="481"/> + <source>File truncated during the read, possible data change</source> + <translation>Файл усечены во время чтения, возможность изменения данных</translation> </message> +</context> +<context> + <name>copyEngine</name> <message> - <location filename="../../copyEngine.cpp" line="193"/> - <source>Rename</source> - <translation type="unfinished"></translation> + <location filename="../../copyEngine.cpp" line="257"/> + <location filename="../../copyEngine.cpp" line="275"/> + <source>The engine is forced to move, you can't copy with it</source> + <translation>Двигатель вынуждены покинуть свои дома, вы не можете скопировать с ним</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="203"/> - <source>Put to end of the list</source> - <translation type="unfinished"></translation> + <location filename="../../copyEngine.cpp" line="286"/> + <location filename="../../copyEngine.cpp" line="304"/> + <source>The engine is forced to copy, you can't move with it</source> + <translation>Двигатель вынужден копии, вы не можете двигаться вместе с ним</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="225"/> - <source>Select source directory</source> - <translation type="unfinished"></translation> + <location filename="../../copyEngine.cpp" line="511"/> + <source>The mode have been forced previously, it's internal error, please report it</source> + <translation>Режим был вынужден ранее, это внутренняя ошибка, пожалуйста, сообщите об этом</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="239"/> - <source>Select one or more files to open</source> - <translation type="unfinished"></translation> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options error</source> + <translation>Опции ошибке</translation> </message> <message> - <location filename="../../copyEngine.cpp" line="241"/> - <source>All files</source> - <translation type="unfinished"></translation> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation>Параметры двигателя не загружается, не может получить доступ к фильтрам</translation> </message> </context> <context> <name>fileErrorDialog</name> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="14"/> <source>Error on file</source> - <translation type="unfinished"></translation> + <translation>Ошибка в файле</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="20"/> <source>Error</source> - <translation type="unfinished"></translation> + <translation>ошибка</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="56"/> <source>Size</source> - <translation type="unfinished"></translation> + <translation>размер</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="73"/> <source>Modified</source> - <translation type="unfinished"></translation> + <translation>модифицированный</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="90"/> <source>File name</source> - <translation type="unfinished"></translation> + <translation>имя файла</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="136"/> <source>&Always do this action</source> - <translation type="unfinished"></translation> + <translation>Всегда делайте это действие</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="156"/> <source>Put to bottom</source> - <translation type="unfinished"></translation> + <translation>Положить в нижней</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="163"/> <source>Retry</source> - <translation type="unfinished"></translation> + <translation>Повторить</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="170"/> <source>&Skip</source> - <translation type="unfinished"></translation> + <translation>пропускать</translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="177"/> <source>&Cancel</source> - <translation type="unfinished"></translation> + <translation>отменить</translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="29"/> + <source>Error on folder</source> + <translation>Ошибка в папку</translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="32"/> + <source>Folder name</source> + <translation>имя папки</translation> </message> </context> <context> <name>fileExistsDialog</name> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="14"/> <source>The file exists</source> - <translation type="unfinished"></translation> + <translation>Файл существует</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="34"/> <source>Source</source> - <translation type="unfinished"></translation> + <translation>источник</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="50"/> <source>Destination</source> - <translation type="unfinished"></translation> + <translation>назначение</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="82"/> + <location filename="../../fileExistsDialog.ui" line="153"/> <source>Size</source> - <translation type="unfinished"></translation> + <translation>размер</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="99"/> + <location filename="../../fileExistsDialog.ui" line="170"/> <source>Modified</source> - <translation type="unfinished"></translation> + <translation>модифицированный</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="116"/> + <location filename="../../fileExistsDialog.ui" line="187"/> <source>File name</source> - <translation type="unfinished"></translation> + <translation>имя файла</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="243"/> <source>Suggest new &name</source> - <translation type="unfinished"></translation> + <translation>Предложить новое имя</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="254"/> <source>&Always do this action</source> - <translation type="unfinished"></translation> + <translation>Всегда делайте это действие</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="274"/> <source>&Rename</source> - <translation type="unfinished"></translation> + <translation>переименовать</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="281"/> <source>&Overwrite</source> - <translation type="unfinished"></translation> + <translation>переписывать</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="291"/> <source>&Skip</source> - <translation type="unfinished"></translation> + <translation>пропускать</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="298"/> <source>&Cancel</source> - <translation type="unfinished"></translation> + <translation>отменить</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="307"/> <source>Overwrite if newer</source> - <translation type="unfinished"></translation> + <translation>Заменить, если новее</translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="312"/> <source>Overwrite if not same modification date</source> - <translation type="unfinished"></translation> + <translation>Заменить, если не ту же дату модификации</translation> + </message> + <message> + <location filename="../../fileExistsDialog.cpp" line="102"/> + <source>%1 - copy</source> + <translation>%1 - копия</translation> </message> <message> - <location filename="../../fileExistsDialog.cpp" line="70"/> - <location filename="../../fileExistsDialog.cpp" line="71"/> - <source>Copy of </source> - <translation type="unfinished"></translation> + <location filename="../../fileExistsDialog.cpp" line="112"/> + <source>%1 - copy (%2)</source> + <translation>%1 - копия (%2)</translation> </message> </context> <context> <name>fileIsSameDialog</name> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="14"/> <source>This files are the same file</source> - <translation type="unfinished"></translation> + <translation>Эти файлы имеют тот же файл</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="20"/> <source>The source and destination is same</source> - <translation type="unfinished"></translation> + <translation>Источник и назначение такое же,</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="47"/> <source>Size</source> - <translation type="unfinished"></translation> + <translation>размер</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="64"/> <source>Modified</source> - <translation type="unfinished"></translation> + <translation>модифицированный</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="81"/> <source>File name</source> - <translation type="unfinished"></translation> + <translation>имя файла</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="137"/> <source>Suggest new &name</source> - <translation type="unfinished"></translation> + <translation>Предложить новое имя</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="148"/> <source>&Always do this action</source> - <translation type="unfinished"></translation> + <translation>Всегда делайте это действие</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="168"/> <source>&Rename</source> - <translation type="unfinished"></translation> + <translation>переименовать</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="175"/> <source>&Skip</source> - <translation type="unfinished"></translation> + <translation>пропускать</translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="182"/> <source>&Cancel</source> - <translation type="unfinished"></translation> + <translation>отменить</translation> </message> <message> - <location filename="../../fileIsSameDialog.cpp" line="66"/> - <location filename="../../fileIsSameDialog.cpp" line="67"/> - <source>Copy of </source> - <translation type="unfinished"></translation> + <location filename="../../fileIsSameDialog.cpp" line="87"/> + <source>%1 - copy</source> + <translation>%1 - копия</translation> + </message> + <message> + <location filename="../../fileIsSameDialog.cpp" line="97"/> + <source>%1 - copy (%2)</source> + <translation>%1 - копия (%2)</translation> </message> </context> <context> <name>folderExistsDialog</name> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="14"/> <source>This folders are the same folder</source> - <translation type="unfinished"></translation> + <translation>Это папки той же папке,</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="34"/> <source>Source</source> - <translation type="unfinished"></translation> + <translation>источник</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="50"/> <source>Destination</source> - <translation type="unfinished"></translation> + <translation>назначение</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="62"/> <source>The source and destination is same</source> - <translation type="unfinished"></translation> + <translation>Источник и назначение такое же,</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="89"/> + <location filename="../../folderExistsDialog.ui" line="140"/> <source>Modified</source> - <translation type="unfinished"></translation> + <translation>модифицированный</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="106"/> + <location filename="../../folderExistsDialog.ui" line="150"/> <source>Folder name</source> - <translation type="unfinished"></translation> + <translation>имя папки</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="200"/> <source>Suggest new &name</source> - <translation type="unfinished"></translation> + <translation>Предложить новое имя</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="211"/> <source>&Always do this action</source> - <translation type="unfinished"></translation> + <translation>Всегда делайте это действие</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="218"/> <source>&Rename</source> - <translation type="unfinished"></translation> + <translation>переименовать</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="225"/> <source>Merge</source> - <translation type="unfinished"></translation> + <translation>слияние</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="232"/> <source>Skip</source> - <translation type="unfinished"></translation> + <translation>пропускать</translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="239"/> <source>&Cancel</source> - <translation type="unfinished"></translation> + <translation>отменить</translation> </message> <message> - <location filename="../../folderExistsDialog.cpp" line="61"/> - <source>Copy of </source> - <translation type="unfinished"></translation> + <location filename="../../folderExistsDialog.cpp" line="29"/> + <source>Folder already exists</source> + <translation>Папка уже существует</translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="85"/> + <source>%1 - copy</source> + <translation>%1 - копия</translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="95"/> + <source>%1 - copy (%2)</source> + <translation>%1 - копия (%2)</translation> </message> </context> <context> <name>options</name> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="23"/> <source>Transfer the file rights</source> - <translation type="unfinished"></translation> + <translation>Передача файлов прав</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="33"/> <source>Keep the file date</source> - <translation type="unfinished"></translation> + <translation>Держите дату файла</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="214"/> <source>Block size</source> - <translation type="unfinished"></translation> + <translation>размер блока</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="43"/> + <location filename="../../options.ui" line="198"/> <source>KB</source> - <translation type="unfinished"></translation> + <translation>KB</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="56"/> <source>Auto start the transfer</source> - <translation type="unfinished"></translation> + <translation>Авто начать передачу</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="66"/> <source>When folder error</source> - <translation type="unfinished"></translation> + <translation>Когда папка ошибка</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="74"/> + <location filename="../../options.ui" line="95"/> <source>Ask</source> - <translation type="unfinished"></translation> + <translation>просить</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="79"/> + <location filename="../../options.ui" line="105"/> <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../options.ui"/> - <source>When folder colision</source> - <translation type="unfinished"></translation> + <translation>пропускать</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="100"/> <source>Merge</source> - <translation type="unfinished"></translation> + <translation>слияние</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="110"/> <source>Rename</source> - <translation type="unfinished"></translation> + <translation>переименовать</translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="118"/> <source>Check if destination folder exists</source> - <translation type="unfinished"></translation> + <translation>Убедитесь, что папка существует</translation> + </message> + <message> + <location filename="../../options.ui" line="87"/> + <source>When folder collision</source> + <translation>Когда папка столкновения</translation> + </message> + <message> + <location filename="../../options.ui" line="128"/> + <source>Checksum</source> + <translation>Контрольная</translation> + </message> + <message> + <location filename="../../options.ui" line="144"/> + <source>Only after error</source> + <translation>Только после того, как ошибка</translation> + </message> + <message> + <location filename="../../options.ui" line="154"/> + <source>Ignore if impossible</source> + <translation>Игнорировать, если невозможно</translation> + </message> + <message> + <location filename="../../options.ui" line="171"/> + <source>Do checksum</source> + <translation>У контрольной суммы</translation> + </message> + <message> + <location filename="../../options.ui" line="181"/> + <source>Enable OS buffer</source> + <translation>Включить OS буфер</translation> + </message> + <message> + <location filename="../../options.ui" line="234"/> + <source>Filters</source> + <translation>Фильтры</translation> + </message> + <message> + <location filename="../../options.ui" line="241"/> + <source>Renaming rules</source> + <translation>Переименование правила</translation> + </message> + <message> + <location filename="../../options.ui" line="191"/> + <source>OS buffer only if smaller than</source> + <translation>ОС буфер, только если меньше</translation> </message> </context> <context> <name>scanFileOrFolder</name> <message> - <location filename="../../scanFileOrFolder.cpp" line="112"/> - <location filename="../../scanFileOrFolder.cpp" line="138"/> - <source>Copy of </source> - <translation type="unfinished"></translation> + <location filename="../../scanFileOrFolder.cpp" line="218"/> + <location filename="../../scanFileOrFolder.cpp" line="282"/> + <source>%1 - copy</source> + <translation>%1 - копия</translation> + </message> + <message> + <location filename="../../scanFileOrFolder.cpp" line="228"/> + <location filename="../../scanFileOrFolder.cpp" line="292"/> + <source>%1 - copy (%2)</source> + <translation>%1 - копия (%2)</translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="157"/> + <location filename="../../scanFileOrFolder.cpp" line="326"/> <source>The folder not exists</source> - <translation type="unfinished"></translation> + <translation>Папка не существует</translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="159"/> + <location filename="../../scanFileOrFolder.cpp" line="328"/> <source>The folder is not readable</source> - <translation type="unfinished"></translation> + <translation>Папки не читается</translation> </message> </context> </TS> diff --git a/plugins/CopyEngine/Ultracopier-0.3/Languages/th/translation.ts b/plugins/CopyEngine/Ultracopier-0.3/Languages/th/translation.ts index 1c3692c..0898631 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/Languages/th/translation.ts +++ b/plugins/CopyEngine/Ultracopier-0.3/Languages/th/translation.ts @@ -4,27 +4,229 @@ <context> <name>AvancedQFile</name> <message> - <location filename="../../AvancedQFile.cpp" line="17"/> - <location filename="../../AvancedQFile.cpp" line="48"/> - <location filename="../../AvancedQFile.cpp" line="79"/> + <location filename="../../AvancedQFile.cpp" line="28"/> + <location filename="../../AvancedQFile.cpp" line="59"/> + <location filename="../../AvancedQFile.cpp" line="90"/> <source>Not supported on this platform</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="31"/> + <location filename="../../AvancedQFile.cpp" line="42"/> <source>Last modified date is wrong</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="62"/> + <location filename="../../AvancedQFile.cpp" line="73"/> <source>Last access date is wrong</source> <translation type="unfinished"></translation> </message> </context> <context> + <name>Factory</name> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>FilterRules</name> + <message> + <location filename="../../FilterRules.ui" line="33"/> + <source>Search:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="43"/> + <source>Search type:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="51"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="56"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="61"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="69"/> + <source>Apply on:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="77"/> + <source>File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="82"/> + <source>Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="87"/> + <source>File and folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="95"/> + <source>All string need match</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="102"/> + <source>Checking</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="115"/> + <source>Test string:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="17"/> + <source>Filters dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="108"/> + <source>The regex is valid</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="125"/> + <source>The test string match with the regex</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Filters</name> + <message> + <location filename="../../Filters.ui" line="14"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="30"/> + <source>Exclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="93"/> + <source>Inclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="105"/> + <source>None = Include all</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="92"/> + <location filename="../../Filters.cpp" line="130"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="95"/> + <location filename="../../Filters.cpp" line="133"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="98"/> + <location filename="../../Filters.cpp" line="136"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="106"/> + <location filename="../../Filters.cpp" line="144"/> + <source>Only on file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="109"/> + <location filename="../../Filters.cpp" line="147"/> + <source>Only on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="115"/> + <location filename="../../Filters.cpp" line="153"/> + <location filename="../../Filters.cpp" line="215"/> + <location filename="../../Filters.cpp" line="254"/> + <source>Full match</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ListThread</name> + <message> + <location filename="../../ListThread.cpp" line="1162"/> + <source>Unable do to move or copy item into wrong forced mode: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1169"/> + <source>Unable to save the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1185"/> + <source>Problem at the reading, or file size is null</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1192"/> + <source>Wrong header: "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1201"/> + <source>The transfer list is in mixed mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1210"/> + <source>The transfer list is in copy mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1216"/> + <source>The transfer list is in move mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1263"/> + <source>Some error have been found during the line parsing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1269"/> + <source>Unable to open the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>MkPath</name> <message> - <location filename="../../MkPath.cpp" line="51"/> + <location filename="../../MkPath.cpp" line="62"/> <source>Unable to create the folder</source> <translation type="unfinished"></translation> </message> @@ -32,426 +234,560 @@ <context> <name>ReadThread</name> <message> - <location filename="../../ReadThread.cpp" line="231"/> + <location filename="../../ReadThread.cpp" line="154"/> + <location filename="../../ReadThread.cpp" line="316"/> <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>RmPath</name> <message> - <location filename="../../RmPath.cpp" line="51"/> - <source>Unable to remove the folder</source> + <location filename="../../ReadThread.cpp" line="193"/> + <location filename="../../ReadThread.cpp" line="373"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>TransferThread</name> + <name>RenamingRules</name> + <message> + <location filename="../../RenamingRules.ui" line="26"/> + <source>First renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="32"/> + <source>%name% - copy</source> + <extracomment>%name% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="39"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p></body></html></source> + <extracomment> should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="49"/> + <source>Second renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="55"/> + <source>%name% - copy (%number%)</source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="62"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p><p><span style=" font-weight:600;">%number%</span> for the extra number</p></body></html></source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="39"/> + <location filename="../../RenamingRules.cpp" line="62"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="43"/> + <location filename="../../RenamingRules.cpp" line="73"/> + <source>%1 - copy (%2)</source> + <translation type="unfinished"></translation> + </message> <message> - <location filename="../../TransferThread.cpp" line="281"/> - <location filename="../../TransferThread.cpp" line="282"/> - <source>Copy of </source> + <location filename="../../RenamingRules.ui" line="14"/> + <source>Renaming rules</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>copyEngine</name> + <name>RmPath</name> <message> - <location filename="../../copyEngine.cpp" line="124"/> - <location filename="../../copyEngine.cpp" line="141"/> - <source>Select destination directory</source> + <location filename="../../RmPath.cpp" line="59"/> + <source>Unable to remove the folder</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>TransferThread</name> <message> - <location filename="../../copyEngine.cpp" line="188"/> - <location filename="../../copyEngine.cpp" line="201"/> - <source>Ask</source> + <location filename="../../TransferThread.cpp" line="311"/> + <source>%1 - copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="189"/> - <location filename="../../copyEngine.cpp" line="202"/> - <source>Skip</source> + <location filename="../../TransferThread.cpp" line="321"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="190"/> - <source>Overwrite</source> + <location filename="../../TransferThread.cpp" line="626"/> + <source>The checksums not match</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>WriteThread</name> <message> - <location filename="../../copyEngine.cpp" line="191"/> - <source>Overwrite if newer</source> + <location filename="../../WriteThread.cpp" line="443"/> + <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="192"/> - <source>Overwrite if not same modification date</source> + <location filename="../../WriteThread.cpp" line="481"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>copyEngine</name> <message> - <location filename="../../copyEngine.cpp" line="193"/> - <source>Rename</source> + <location filename="../../copyEngine.cpp" line="257"/> + <location filename="../../copyEngine.cpp" line="275"/> + <source>The engine is forced to move, you can't copy with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="203"/> - <source>Put to end of the list</source> + <location filename="../../copyEngine.cpp" line="286"/> + <location filename="../../copyEngine.cpp" line="304"/> + <source>The engine is forced to copy, you can't move with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="225"/> - <source>Select source directory</source> + <location filename="../../copyEngine.cpp" line="511"/> + <source>The mode have been forced previously, it's internal error, please report it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="239"/> - <source>Select one or more files to open</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="241"/> - <source>All files</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options engine is not loaded, can't access to the filters</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileErrorDialog</name> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="14"/> <source>Error on file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="20"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="56"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="73"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="90"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="136"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="156"/> <source>Put to bottom</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="163"/> <source>Retry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="170"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="177"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="29"/> + <source>Error on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="32"/> + <source>Folder name</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>fileExistsDialog</name> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="14"/> <source>The file exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="82"/> + <location filename="../../fileExistsDialog.ui" line="153"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="99"/> + <location filename="../../fileExistsDialog.ui" line="170"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="116"/> + <location filename="../../fileExistsDialog.ui" line="187"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="243"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="254"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="274"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="281"/> <source>&Overwrite</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="291"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="298"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="307"/> <source>Overwrite if newer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="312"/> <source>Overwrite if not same modification date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.cpp" line="70"/> - <location filename="../../fileExistsDialog.cpp" line="71"/> - <source>Copy of </source> + <location filename="../../fileExistsDialog.cpp" line="102"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileExistsDialog.cpp" line="112"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileIsSameDialog</name> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="14"/> <source>This files are the same file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="20"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="47"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="64"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="81"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="137"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="148"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="168"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="175"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="182"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.cpp" line="66"/> - <location filename="../../fileIsSameDialog.cpp" line="67"/> - <source>Copy of </source> + <location filename="../../fileIsSameDialog.cpp" line="87"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileIsSameDialog.cpp" line="97"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>folderExistsDialog</name> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="14"/> <source>This folders are the same folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="62"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="89"/> + <location filename="../../folderExistsDialog.ui" line="140"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="106"/> + <location filename="../../folderExistsDialog.ui" line="150"/> <source>Folder name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="200"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="211"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="218"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="225"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="232"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="239"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.cpp" line="61"/> - <source>Copy of </source> + <location filename="../../folderExistsDialog.cpp" line="29"/> + <source>Folder already exists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="85"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="95"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>options</name> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="23"/> <source>Transfer the file rights</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="33"/> <source>Keep the file date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="214"/> <source>Block size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="43"/> + <location filename="../../options.ui" line="198"/> <source>KB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="56"/> <source>Auto start the transfer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="66"/> <source>When folder error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="74"/> + <location filename="../../options.ui" line="95"/> <source>Ask</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="79"/> + <location filename="../../options.ui" line="105"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> - <source>When folder colision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="100"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="110"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="118"/> <source>Check if destination folder exists</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../options.ui" line="87"/> + <source>When folder collision</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="128"/> + <source>Checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="144"/> + <source>Only after error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="154"/> + <source>Ignore if impossible</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="171"/> + <source>Do checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="181"/> + <source>Enable OS buffer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="234"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="241"/> + <source>Renaming rules</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="191"/> + <source>OS buffer only if smaller than</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>scanFileOrFolder</name> <message> - <location filename="../../scanFileOrFolder.cpp" line="112"/> - <location filename="../../scanFileOrFolder.cpp" line="138"/> - <source>Copy of </source> + <location filename="../../scanFileOrFolder.cpp" line="218"/> + <location filename="../../scanFileOrFolder.cpp" line="282"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../scanFileOrFolder.cpp" line="228"/> + <location filename="../../scanFileOrFolder.cpp" line="292"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="157"/> + <location filename="../../scanFileOrFolder.cpp" line="326"/> <source>The folder not exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="159"/> + <location filename="../../scanFileOrFolder.cpp" line="328"/> <source>The folder is not readable</source> <translation type="unfinished"></translation> </message> diff --git a/plugins/CopyEngine/Ultracopier-0.3/Languages/tr/translation.ts b/plugins/CopyEngine/Ultracopier-0.3/Languages/tr/translation.ts index 1c3692c..0898631 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/Languages/tr/translation.ts +++ b/plugins/CopyEngine/Ultracopier-0.3/Languages/tr/translation.ts @@ -4,27 +4,229 @@ <context> <name>AvancedQFile</name> <message> - <location filename="../../AvancedQFile.cpp" line="17"/> - <location filename="../../AvancedQFile.cpp" line="48"/> - <location filename="../../AvancedQFile.cpp" line="79"/> + <location filename="../../AvancedQFile.cpp" line="28"/> + <location filename="../../AvancedQFile.cpp" line="59"/> + <location filename="../../AvancedQFile.cpp" line="90"/> <source>Not supported on this platform</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="31"/> + <location filename="../../AvancedQFile.cpp" line="42"/> <source>Last modified date is wrong</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="62"/> + <location filename="../../AvancedQFile.cpp" line="73"/> <source>Last access date is wrong</source> <translation type="unfinished"></translation> </message> </context> <context> + <name>Factory</name> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>FilterRules</name> + <message> + <location filename="../../FilterRules.ui" line="33"/> + <source>Search:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="43"/> + <source>Search type:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="51"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="56"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="61"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="69"/> + <source>Apply on:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="77"/> + <source>File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="82"/> + <source>Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="87"/> + <source>File and folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="95"/> + <source>All string need match</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="102"/> + <source>Checking</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="115"/> + <source>Test string:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="17"/> + <source>Filters dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="108"/> + <source>The regex is valid</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="125"/> + <source>The test string match with the regex</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Filters</name> + <message> + <location filename="../../Filters.ui" line="14"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="30"/> + <source>Exclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="93"/> + <source>Inclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="105"/> + <source>None = Include all</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="92"/> + <location filename="../../Filters.cpp" line="130"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="95"/> + <location filename="../../Filters.cpp" line="133"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="98"/> + <location filename="../../Filters.cpp" line="136"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="106"/> + <location filename="../../Filters.cpp" line="144"/> + <source>Only on file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="109"/> + <location filename="../../Filters.cpp" line="147"/> + <source>Only on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="115"/> + <location filename="../../Filters.cpp" line="153"/> + <location filename="../../Filters.cpp" line="215"/> + <location filename="../../Filters.cpp" line="254"/> + <source>Full match</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ListThread</name> + <message> + <location filename="../../ListThread.cpp" line="1162"/> + <source>Unable do to move or copy item into wrong forced mode: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1169"/> + <source>Unable to save the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1185"/> + <source>Problem at the reading, or file size is null</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1192"/> + <source>Wrong header: "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1201"/> + <source>The transfer list is in mixed mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1210"/> + <source>The transfer list is in copy mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1216"/> + <source>The transfer list is in move mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1263"/> + <source>Some error have been found during the line parsing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1269"/> + <source>Unable to open the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>MkPath</name> <message> - <location filename="../../MkPath.cpp" line="51"/> + <location filename="../../MkPath.cpp" line="62"/> <source>Unable to create the folder</source> <translation type="unfinished"></translation> </message> @@ -32,426 +234,560 @@ <context> <name>ReadThread</name> <message> - <location filename="../../ReadThread.cpp" line="231"/> + <location filename="../../ReadThread.cpp" line="154"/> + <location filename="../../ReadThread.cpp" line="316"/> <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>RmPath</name> <message> - <location filename="../../RmPath.cpp" line="51"/> - <source>Unable to remove the folder</source> + <location filename="../../ReadThread.cpp" line="193"/> + <location filename="../../ReadThread.cpp" line="373"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>TransferThread</name> + <name>RenamingRules</name> + <message> + <location filename="../../RenamingRules.ui" line="26"/> + <source>First renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="32"/> + <source>%name% - copy</source> + <extracomment>%name% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="39"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p></body></html></source> + <extracomment> should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="49"/> + <source>Second renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="55"/> + <source>%name% - copy (%number%)</source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="62"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p><p><span style=" font-weight:600;">%number%</span> for the extra number</p></body></html></source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="39"/> + <location filename="../../RenamingRules.cpp" line="62"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="43"/> + <location filename="../../RenamingRules.cpp" line="73"/> + <source>%1 - copy (%2)</source> + <translation type="unfinished"></translation> + </message> <message> - <location filename="../../TransferThread.cpp" line="281"/> - <location filename="../../TransferThread.cpp" line="282"/> - <source>Copy of </source> + <location filename="../../RenamingRules.ui" line="14"/> + <source>Renaming rules</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>copyEngine</name> + <name>RmPath</name> <message> - <location filename="../../copyEngine.cpp" line="124"/> - <location filename="../../copyEngine.cpp" line="141"/> - <source>Select destination directory</source> + <location filename="../../RmPath.cpp" line="59"/> + <source>Unable to remove the folder</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>TransferThread</name> <message> - <location filename="../../copyEngine.cpp" line="188"/> - <location filename="../../copyEngine.cpp" line="201"/> - <source>Ask</source> + <location filename="../../TransferThread.cpp" line="311"/> + <source>%1 - copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="189"/> - <location filename="../../copyEngine.cpp" line="202"/> - <source>Skip</source> + <location filename="../../TransferThread.cpp" line="321"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="190"/> - <source>Overwrite</source> + <location filename="../../TransferThread.cpp" line="626"/> + <source>The checksums not match</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>WriteThread</name> <message> - <location filename="../../copyEngine.cpp" line="191"/> - <source>Overwrite if newer</source> + <location filename="../../WriteThread.cpp" line="443"/> + <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="192"/> - <source>Overwrite if not same modification date</source> + <location filename="../../WriteThread.cpp" line="481"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>copyEngine</name> <message> - <location filename="../../copyEngine.cpp" line="193"/> - <source>Rename</source> + <location filename="../../copyEngine.cpp" line="257"/> + <location filename="../../copyEngine.cpp" line="275"/> + <source>The engine is forced to move, you can't copy with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="203"/> - <source>Put to end of the list</source> + <location filename="../../copyEngine.cpp" line="286"/> + <location filename="../../copyEngine.cpp" line="304"/> + <source>The engine is forced to copy, you can't move with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="225"/> - <source>Select source directory</source> + <location filename="../../copyEngine.cpp" line="511"/> + <source>The mode have been forced previously, it's internal error, please report it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="239"/> - <source>Select one or more files to open</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="241"/> - <source>All files</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options engine is not loaded, can't access to the filters</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileErrorDialog</name> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="14"/> <source>Error on file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="20"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="56"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="73"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="90"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="136"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="156"/> <source>Put to bottom</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="163"/> <source>Retry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="170"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="177"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="29"/> + <source>Error on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="32"/> + <source>Folder name</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>fileExistsDialog</name> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="14"/> <source>The file exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="82"/> + <location filename="../../fileExistsDialog.ui" line="153"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="99"/> + <location filename="../../fileExistsDialog.ui" line="170"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="116"/> + <location filename="../../fileExistsDialog.ui" line="187"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="243"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="254"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="274"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="281"/> <source>&Overwrite</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="291"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="298"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="307"/> <source>Overwrite if newer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="312"/> <source>Overwrite if not same modification date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.cpp" line="70"/> - <location filename="../../fileExistsDialog.cpp" line="71"/> - <source>Copy of </source> + <location filename="../../fileExistsDialog.cpp" line="102"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileExistsDialog.cpp" line="112"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileIsSameDialog</name> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="14"/> <source>This files are the same file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="20"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="47"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="64"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="81"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="137"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="148"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="168"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="175"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="182"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.cpp" line="66"/> - <location filename="../../fileIsSameDialog.cpp" line="67"/> - <source>Copy of </source> + <location filename="../../fileIsSameDialog.cpp" line="87"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileIsSameDialog.cpp" line="97"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>folderExistsDialog</name> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="14"/> <source>This folders are the same folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="62"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="89"/> + <location filename="../../folderExistsDialog.ui" line="140"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="106"/> + <location filename="../../folderExistsDialog.ui" line="150"/> <source>Folder name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="200"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="211"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="218"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="225"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="232"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="239"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.cpp" line="61"/> - <source>Copy of </source> + <location filename="../../folderExistsDialog.cpp" line="29"/> + <source>Folder already exists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="85"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="95"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>options</name> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="23"/> <source>Transfer the file rights</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="33"/> <source>Keep the file date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="214"/> <source>Block size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="43"/> + <location filename="../../options.ui" line="198"/> <source>KB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="56"/> <source>Auto start the transfer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="66"/> <source>When folder error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="74"/> + <location filename="../../options.ui" line="95"/> <source>Ask</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="79"/> + <location filename="../../options.ui" line="105"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> - <source>When folder colision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="100"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="110"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="118"/> <source>Check if destination folder exists</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../options.ui" line="87"/> + <source>When folder collision</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="128"/> + <source>Checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="144"/> + <source>Only after error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="154"/> + <source>Ignore if impossible</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="171"/> + <source>Do checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="181"/> + <source>Enable OS buffer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="234"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="241"/> + <source>Renaming rules</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="191"/> + <source>OS buffer only if smaller than</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>scanFileOrFolder</name> <message> - <location filename="../../scanFileOrFolder.cpp" line="112"/> - <location filename="../../scanFileOrFolder.cpp" line="138"/> - <source>Copy of </source> + <location filename="../../scanFileOrFolder.cpp" line="218"/> + <location filename="../../scanFileOrFolder.cpp" line="282"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../scanFileOrFolder.cpp" line="228"/> + <location filename="../../scanFileOrFolder.cpp" line="292"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="157"/> + <location filename="../../scanFileOrFolder.cpp" line="326"/> <source>The folder not exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="159"/> + <location filename="../../scanFileOrFolder.cpp" line="328"/> <source>The folder is not readable</source> <translation type="unfinished"></translation> </message> diff --git a/plugins/CopyEngine/Ultracopier-0.3/Languages/zh/translation.ts b/plugins/CopyEngine/Ultracopier-0.3/Languages/zh/translation.ts index 1c3692c..9a215b1 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/Languages/zh/translation.ts +++ b/plugins/CopyEngine/Ultracopier-0.3/Languages/zh/translation.ts @@ -4,27 +4,229 @@ <context> <name>AvancedQFile</name> <message> - <location filename="../../AvancedQFile.cpp" line="17"/> - <location filename="../../AvancedQFile.cpp" line="48"/> - <location filename="../../AvancedQFile.cpp" line="79"/> + <location filename="../../AvancedQFile.cpp" line="28"/> + <location filename="../../AvancedQFile.cpp" line="59"/> + <location filename="../../AvancedQFile.cpp" line="90"/> <source>Not supported on this platform</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="31"/> + <location filename="../../AvancedQFile.cpp" line="42"/> <source>Last modified date is wrong</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../AvancedQFile.cpp" line="62"/> + <location filename="../../AvancedQFile.cpp" line="73"/> <source>Last access date is wrong</source> <translation type="unfinished"></translation> </message> </context> <context> + <name>Factory</name> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../factory.cpp" line="356"/> + <location filename="../../factory.cpp" line="393"/> + <source>Options engine is not loaded, can't access to the filters</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>FilterRules</name> + <message> + <location filename="../../FilterRules.ui" line="17"/> + <source>Filters dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="33"/> + <source>Search:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="43"/> + <source>Search type:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="51"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="56"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="61"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="69"/> + <source>Apply on:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="77"/> + <source>File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="82"/> + <source>Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="87"/> + <source>File and folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="95"/> + <source>All string need match</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="102"/> + <source>Checking</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="108"/> + <source>The regex is valid</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="115"/> + <source>Test string:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../FilterRules.ui" line="125"/> + <source>The test string match with the regex</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Filters</name> + <message> + <location filename="../../Filters.ui" line="14"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="30"/> + <source>Exclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="93"/> + <source>Inclusion filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.ui" line="105"/> + <source>None = Include all</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="92"/> + <location filename="../../Filters.cpp" line="130"/> + <source>Raw text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="95"/> + <location filename="../../Filters.cpp" line="133"/> + <source>Simplified regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="98"/> + <location filename="../../Filters.cpp" line="136"/> + <source>Perl's regex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="106"/> + <location filename="../../Filters.cpp" line="144"/> + <source>Only on file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="109"/> + <location filename="../../Filters.cpp" line="147"/> + <source>Only on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../Filters.cpp" line="115"/> + <location filename="../../Filters.cpp" line="153"/> + <location filename="../../Filters.cpp" line="215"/> + <location filename="../../Filters.cpp" line="254"/> + <source>Full match</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ListThread</name> + <message> + <location filename="../../ListThread.cpp" line="1162"/> + <source>Unable do to move or copy item into wrong forced mode: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1169"/> + <source>Unable to save the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1185"/> + <source>Problem at the reading, or file size is null</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1192"/> + <source>Wrong header: "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1201"/> + <source>The transfer list is in mixed mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1210"/> + <source>The transfer list is in copy mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1216"/> + <source>The transfer list is in move mode, but this instance is not in this mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1263"/> + <source>Some error have been found during the line parsing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../ListThread.cpp" line="1269"/> + <source>Unable to open the transfer list: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>MkPath</name> <message> - <location filename="../../MkPath.cpp" line="51"/> + <location filename="../../MkPath.cpp" line="62"/> <source>Unable to create the folder</source> <translation type="unfinished"></translation> </message> @@ -32,426 +234,560 @@ <context> <name>ReadThread</name> <message> - <location filename="../../ReadThread.cpp" line="231"/> + <location filename="../../ReadThread.cpp" line="154"/> + <location filename="../../ReadThread.cpp" line="316"/> <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>RmPath</name> <message> - <location filename="../../RmPath.cpp" line="51"/> - <source>Unable to remove the folder</source> + <location filename="../../ReadThread.cpp" line="193"/> + <location filename="../../ReadThread.cpp" line="373"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>TransferThread</name> + <name>RenamingRules</name> + <message> + <location filename="../../RenamingRules.ui" line="14"/> + <source>Renaming rules</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="26"/> + <source>First renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="32"/> + <source>%name% - copy</source> + <extracomment>%name% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="39"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p></body></html></source> + <extracomment> should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="49"/> + <source>Second renaming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="55"/> + <source>%name% - copy (%number%)</source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.ui" line="62"/> + <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p><p><span style=" font-weight:600;">%number%</span> for the extra number</p></body></html></source> + <extracomment>%name%, %number% should not be translated</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../RenamingRules.cpp" line="39"/> + <location filename="../../RenamingRules.cpp" line="62"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> <message> - <location filename="../../TransferThread.cpp" line="281"/> - <location filename="../../TransferThread.cpp" line="282"/> - <source>Copy of </source> + <location filename="../../RenamingRules.cpp" line="43"/> + <location filename="../../RenamingRules.cpp" line="73"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>copyEngine</name> + <name>RmPath</name> <message> - <location filename="../../copyEngine.cpp" line="124"/> - <location filename="../../copyEngine.cpp" line="141"/> - <source>Select destination directory</source> + <location filename="../../RmPath.cpp" line="59"/> + <source>Unable to remove the folder</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>TransferThread</name> <message> - <location filename="../../copyEngine.cpp" line="188"/> - <location filename="../../copyEngine.cpp" line="201"/> - <source>Ask</source> + <location filename="../../TransferThread.cpp" line="311"/> + <source>%1 - copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="189"/> - <location filename="../../copyEngine.cpp" line="202"/> - <source>Skip</source> + <location filename="../../TransferThread.cpp" line="321"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="190"/> - <source>Overwrite</source> + <location filename="../../TransferThread.cpp" line="626"/> + <source>The checksums not match</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>WriteThread</name> <message> - <location filename="../../copyEngine.cpp" line="191"/> - <source>Overwrite if newer</source> + <location filename="../../WriteThread.cpp" line="443"/> + <source>Unable to read the source file: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="192"/> - <source>Overwrite if not same modification date</source> + <location filename="../../WriteThread.cpp" line="481"/> + <source>File truncated during the read, possible data change</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>copyEngine</name> <message> - <location filename="../../copyEngine.cpp" line="193"/> - <source>Rename</source> + <location filename="../../copyEngine.cpp" line="257"/> + <location filename="../../copyEngine.cpp" line="275"/> + <source>The engine is forced to move, you can't copy with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="203"/> - <source>Put to end of the list</source> + <location filename="../../copyEngine.cpp" line="286"/> + <location filename="../../copyEngine.cpp" line="304"/> + <source>The engine is forced to copy, you can't move with it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="225"/> - <source>Select source directory</source> + <location filename="../../copyEngine.cpp" line="511"/> + <source>The mode have been forced previously, it's internal error, please report it</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="239"/> - <source>Select one or more files to open</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../copyEngine.cpp" line="241"/> - <source>All files</source> + <location filename="../../copyEngine.cpp" line="772"/> + <source>Options engine is not loaded, can't access to the filters</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileErrorDialog</name> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="14"/> <source>Error on file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="20"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="56"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="73"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="90"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="136"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="156"/> <source>Put to bottom</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="163"/> <source>Retry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="170"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileErrorDialog.ui"/> + <location filename="../../fileErrorDialog.ui" line="177"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="29"/> + <source>Error on folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileErrorDialog.cpp" line="32"/> + <source>Folder name</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>fileExistsDialog</name> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="14"/> <source>The file exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="82"/> + <location filename="../../fileExistsDialog.ui" line="153"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="99"/> + <location filename="../../fileExistsDialog.ui" line="170"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="116"/> + <location filename="../../fileExistsDialog.ui" line="187"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="243"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="254"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="274"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="281"/> <source>&Overwrite</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="291"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="298"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="307"/> <source>Overwrite if newer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.ui"/> + <location filename="../../fileExistsDialog.ui" line="312"/> <source>Overwrite if not same modification date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileExistsDialog.cpp" line="70"/> - <location filename="../../fileExistsDialog.cpp" line="71"/> - <source>Copy of </source> + <location filename="../../fileExistsDialog.cpp" line="102"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileExistsDialog.cpp" line="112"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>fileIsSameDialog</name> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="14"/> <source>This files are the same file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="20"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="47"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="64"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="81"/> <source>File name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="137"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="148"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="168"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="175"/> <source>&Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.ui"/> + <location filename="../../fileIsSameDialog.ui" line="182"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../fileIsSameDialog.cpp" line="66"/> - <location filename="../../fileIsSameDialog.cpp" line="67"/> - <source>Copy of </source> + <location filename="../../fileIsSameDialog.cpp" line="87"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../fileIsSameDialog.cpp" line="97"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>folderExistsDialog</name> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="14"/> <source>This folders are the same folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="34"/> <source>Source</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="50"/> <source>Destination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="62"/> <source>The source and destination is same</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="89"/> + <location filename="../../folderExistsDialog.ui" line="140"/> <source>Modified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="106"/> + <location filename="../../folderExistsDialog.ui" line="150"/> <source>Folder name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="200"/> <source>Suggest new &name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="211"/> <source>&Always do this action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="218"/> <source>&Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="225"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="232"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.ui"/> + <location filename="../../folderExistsDialog.ui" line="239"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../folderExistsDialog.cpp" line="61"/> - <source>Copy of </source> + <location filename="../../folderExistsDialog.cpp" line="29"/> + <source>Folder already exists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="85"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../folderExistsDialog.cpp" line="95"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>options</name> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="23"/> <source>Transfer the file rights</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="33"/> <source>Keep the file date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="128"/> + <source>Checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="144"/> + <source>Only after error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="154"/> + <source>Ignore if impossible</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="171"/> + <source>Do checksum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="181"/> + <source>Enable OS buffer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="191"/> + <source>OS buffer only if smaller than</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="214"/> <source>Block size</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="234"/> + <source>Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="241"/> + <source>Renaming rules</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../options.ui" line="43"/> + <location filename="../../options.ui" line="198"/> <source>KB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="56"/> <source>Auto start the transfer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="66"/> <source>When folder error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="74"/> + <location filename="../../options.ui" line="95"/> <source>Ask</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="79"/> + <location filename="../../options.ui" line="105"/> <source>Skip</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> - <source>When folder colision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="100"/> <source>Merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="110"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../options.ui"/> + <location filename="../../options.ui" line="118"/> <source>Check if destination folder exists</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../options.ui" line="87"/> + <source>When folder collision</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>scanFileOrFolder</name> <message> - <location filename="../../scanFileOrFolder.cpp" line="112"/> - <location filename="../../scanFileOrFolder.cpp" line="138"/> - <source>Copy of </source> + <location filename="../../scanFileOrFolder.cpp" line="218"/> + <location filename="../../scanFileOrFolder.cpp" line="282"/> + <source>%1 - copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../scanFileOrFolder.cpp" line="228"/> + <location filename="../../scanFileOrFolder.cpp" line="292"/> + <source>%1 - copy (%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="157"/> + <location filename="../../scanFileOrFolder.cpp" line="326"/> <source>The folder not exists</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../scanFileOrFolder.cpp" line="159"/> + <location filename="../../scanFileOrFolder.cpp" line="328"/> <source>The folder is not readable</source> <translation type="unfinished"></translation> </message> diff --git a/plugins/CopyEngine/Ultracopier-0.3/ListThread.cpp b/plugins/CopyEngine/Ultracopier-0.3/ListThread.cpp index 7f022d8..9856c3c 100644..100755 --- a/plugins/CopyEngine/Ultracopier-0.3/ListThread.cpp +++ b/plugins/CopyEngine/Ultracopier-0.3/ListThread.cpp @@ -1,22 +1,13 @@ #include "ListThread.h" -/// \todo do pushed or instant mount point (setDrive, ...) -/// \todo semaphore to prevent dual mkpath -/// \todo repair the mkpath, to use mkpath class before file transfer to have the folder -/// \todo do QThread( parent ) -/** \todo when overwrite with large inode operation, it not start specificly the first in the list - When that's is finish, send start file at real transfer start, not inode operation start **/ -/** \todo group setCollisionAction(FileExistsAction alwaysDoThisActionForFileExists) and setAlwaysFileExistsAction(FileExistsAction alwaysDoThisActionForFileExists) - and check if I can choose case by case if I wish overwrite, skip, ... */ -/// \todo move directly the folder when it's needed -/// \todo connect folder error of mkpath and rmpath class - ListThread::ListThread(FacilityInterface * facilityInterface) { qRegisterMetaType<DebugLevel>("DebugLevel"); qRegisterMetaType<ItemOfCopyList>("ItemOfCopyList"); qRegisterMetaType<QFileInfo>("QFileInfo"); qRegisterMetaType<CopyMode>("CopyMode"); + qRegisterMetaType<QList<Filters_rules> >("QList<Filters_rules>"); + qRegisterMetaType<TransferStat>("TransferStat"); moveToThread(this); start(HighPriority); @@ -39,7 +30,14 @@ ListThread::ListThread(FacilityInterface * facilityInterface) doRightTransfer = false; keepDate = false; blockSize = 1024; + osBufferLimit = 512; alwaysDoThisActionForFileExists = FileExists_NotSet; + doChecksum = false; + checksumIgnoreIfImpossible = true; + checksumOnlyOnError = true; + osBuffer = false; + osBufferLimited = false; + forcedMode = false; #if ! defined (Q_CC_GNU) ui->keepDate->setEnabled(false); @@ -49,8 +47,6 @@ ListThread::ListThread(FacilityInterface * facilityInterface) connect(&timerUpdateDebugDialog,SIGNAL(timeout()),this,SLOT(timedUpdateDebugDialog())); timerUpdateDebugDialog.start(ULTRACOPIER_PLUGIN_DEBUG_WINDOW_TIMER); #endif - connect(&timerActionDone,SIGNAL(timeout()), this,SLOT(sendActionDone())); - connect(&timerProgression,SIGNAL(timeout()), this,SLOT(sendProgression())); connect(this, SIGNAL(tryCancel()), this,SLOT(cancel()), Qt::QueuedConnection); connect(this, SIGNAL(askNewTransferThread()), this,SLOT(createTransferThread()), Qt::QueuedConnection); connect(&mkPathQueue, SIGNAL(firstFolderFinish()), this,SLOT(mkPathFirstFolderFinish()), Qt::QueuedConnection); @@ -65,16 +61,13 @@ ListThread::ListThread(FacilityInterface * facilityInterface) emit askNewTransferThread(); mkpathTransfer.release(); - timerActionDone.setSingleShot(true); - timerActionDone.setInterval(ULTRACOPIER_PLUGIN_TIME_UPDATE_TRASNFER_LIST); - timerProgression.setSingleShot(true); - timerProgression.setInterval(ULTRACOPIER_PLUGIN_TIME_UPDATE_PROGRESSION); } ListThread::~ListThread() { emit tryCancel(); waitCancel.acquire(); + quit(); wait(); } @@ -92,7 +85,7 @@ void ListThread::transferInodeIsClosed() #ifdef ULTRACOPIER_PLUGIN_DEBUG int countLocalParse=0; #endif - if(temp_transfer_thread->getStat()!=TransferThread::Idle) + if(temp_transfer_thread->getStat()!=TransferStat_Idle) { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,QString("transfer thread not idle!")); return; @@ -113,8 +106,7 @@ void ListThread::transferInodeIsClosed() actionToDoListTransfer.removeAt(int_for_internal_loop); if(actionToDoListTransfer.size()==0 && actionToDoListInode.size()==0 && actionToDoListInode_afterTheTransfer.size()==0) updateTheStatus(); - /// \todo add the oversize to all size here - bytesTransfered+=temp_transfer_thread->transferSize; + temp_transfer_thread->transferId=0; temp_transfer_thread->transferSize=0; #ifdef ULTRACOPIER_PLUGIN_DEBUG @@ -157,6 +149,17 @@ void ListThread::transferIsFinished() ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,QString("transfer thread not located!")); return; } + + //add the current size of file, to general size because it's finish + copiedSize=temp_transfer_thread->copiedSize(); + if(copiedSize>(qint64)temp_transfer_thread->transferSize) + { + oversize=copiedSize-temp_transfer_thread->transferSize; + bytesToTransfer+=oversize; + bytesTransfered+=oversize; + } + bytesTransfered+=temp_transfer_thread->transferSize; + // emit newTransferStop(temp_transfer_thread->transferId); numberOfTranferRuning--; ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start transferIsFinished(), numberOfTranferRuning: "+QString::number(numberOfTranferRuning)); @@ -178,47 +181,37 @@ void ListThread::transferPutAtBottom() #ifdef ULTRACOPIER_PLUGIN_DEBUG int countLocalParse=0; #endif - int index=0; - loop_sub_size_transfer_thread_search=transferThreadList.size(); - while(index<loop_sub_size_transfer_thread_search) + int indexAction=0; + while(indexAction<actionToDoListTransfer.size()) { - if(transferThreadList.at(index)==transfer) + if(actionToDoListTransfer.at(indexAction).id==transfer->transferId) { - int indexAction=0; - while(indexAction<actionToDoListTransfer.size()) - { - if(actionToDoListTransfer.at(indexAction).id==transferThreadList.at(index)->transferId) - { - //push for interface at the end - returnActionOnCopyList newAction; - newAction.type=MoveItem; - newAction.addAction.id=transferThreadList.at(index)->transferId; - newAction.userAction.position=actionToDoListTransfer.size()-1; - actionDone << newAction; - //do the wait stat - actionToDoListTransfer[index].isRunning=false; - //move at the end - actionToDoListTransfer.move(indexAction,actionToDoListTransfer.size()-1); - //reset the thread list stat - transferThreadList[index]->transferId=0; - transferThreadList[index]->transferSize=0; - #ifdef ULTRACOPIER_PLUGIN_DEBUG - countLocalParse++; - #endif - isFound=true; - break; - } - indexAction++; - } - if(!isFound) - { - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,QString("unable to found item into the todo list, id: %1, index: %2").arg(transferThreadList.at(index)->transferId).arg(index)); - transferThreadList[index]->transferId=0; - transferThreadList[index]->transferSize=0; - } + //push for interface at the end + returnActionOnCopyList newAction; + newAction.type=MoveItem; + newAction.addAction.id=transfer->transferId; + newAction.userAction.position=actionToDoListTransfer.size()-1; + actionDone << newAction; + //do the wait stat + actionToDoListTransfer[indexAction].isRunning=false; + //move at the end + actionToDoListTransfer.move(indexAction,actionToDoListTransfer.size()-1); + //reset the thread list stat + transfer->transferId=0; + transfer->transferSize=0; + #ifdef ULTRACOPIER_PLUGIN_DEBUG + countLocalParse++; + #endif + isFound=true; break; } - index++; + indexAction++; + } + if(!isFound) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,QString("unable to found item into the todo list, id: %1, index: %2").arg(transfer->transferId)); + transfer->transferId=0; + transfer->transferSize=0; } ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("countLocalParse: %1").arg(countLocalParse)); #ifdef ULTRACOPIER_PLUGIN_DEBUG @@ -338,9 +331,12 @@ scanFileOrFolder * ListThread::newScanThread(CopyMode mode) connect(scanFileOrFolderThreadsPool.last(),SIGNAL(errorOnFolder(QFileInfo,QString)), this,SLOT(errorOnFolder(QFileInfo,QString)), Qt::QueuedConnection); connect(scanFileOrFolderThreadsPool.last(),SIGNAL(folderAlreadyExists(QFileInfo,QFileInfo,bool)), this,SLOT(folderAlreadyExists(QFileInfo,QFileInfo,bool)), Qt::QueuedConnection); + + scanFileOrFolderThreadsPool.last()->setFilters(include,exclude); scanFileOrFolderThreadsPool.last()->setCheckDestinationFolderExists(checkDestinationFolderExists && alwaysDoThisActionForFolderExists!=FolderExists_Merge); if(scanFileOrFolderThreadsPool.size()==1) updateTheStatus(); + scanFileOrFolderThreadsPool.last()->setRenamingRules(firstRenamingRule,otherRenamingRule); return scanFileOrFolderThreadsPool.last(); } @@ -349,31 +345,16 @@ void ListThread::scanThreadHaveFinish(bool skipFirstRemove) ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"listing thread have finish, skipFirstRemove: "+QString::number(skipFirstRemove)); if(!skipFirstRemove) { - QObject * senderThread = sender(); + scanFileOrFolder * senderThread = qobject_cast<scanFileOrFolder *>(QObject::sender()); if(senderThread==NULL) ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"sender pointer null (plugin copy engine)"); else { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start the next thread, scanFileOrFolderThreadsPool.size(): "+QString::number(scanFileOrFolderThreadsPool.size())); - bool isFound=false; - int index=0; - while(index<scanFileOrFolderThreadsPool.size()) - { - if(senderThread==scanFileOrFolderThreadsPool.at(index)) - { - if(index!=0) - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"scanFileOrFolderThread is not the first (plugin copy engine)"); - delete scanFileOrFolderThreadsPool.at(index); - scanFileOrFolderThreadsPool.removeAt(index); - if(scanFileOrFolderThreadsPool.size()==0) - updateTheStatus(); - isFound=true; - break; - } - index++; - } - if(!isFound) - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"sender pointer not found (plugin copy engine)"); + delete senderThread; + scanFileOrFolderThreadsPool.removeOne(senderThread); + if(scanFileOrFolderThreadsPool.size()==0) + updateTheStatus(); } } ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start the next thread, scanFileOrFolderThreadsPool.size(): "+QString::number(scanFileOrFolderThreadsPool.size())); @@ -407,7 +388,6 @@ void ListThread::scanThreadHaveFinish(bool skipFirstRemove) void ListThread::startGeneralTransfer() { doNewActions_inode_manipulation(); - timerProgression.start(); } // -> add thread safe, by Qt::BlockingQueuedConnection @@ -512,6 +492,79 @@ ItemOfCopyList ListThread::getReturnItemOfCopyListToCopyEngine() return returnItemOfCopyListToCopyEngine; } +void ListThread::set_doChecksum(bool doChecksum) +{ + this->doChecksum=doChecksum; + int index=0; + loop_sub_size_transfer_thread_search=transferThreadList.size(); + while(index<loop_sub_size_transfer_thread_search) + { + transferThreadList.at(index)->set_doChecksum(doChecksum); + index++; + } +} + +void ListThread::set_checksumIgnoreIfImpossible(bool checksumIgnoreIfImpossible) +{ + this->checksumIgnoreIfImpossible=checksumIgnoreIfImpossible; + int index=0; + loop_sub_size_transfer_thread_search=transferThreadList.size(); + while(index<loop_sub_size_transfer_thread_search) + { + transferThreadList.at(index)->set_checksumIgnoreIfImpossible(checksumIgnoreIfImpossible); + index++; + } +} + +void ListThread::set_checksumOnlyOnError(bool checksumOnlyOnError) +{ + this->checksumOnlyOnError=checksumOnlyOnError; + int index=0; + loop_sub_size_transfer_thread_search=transferThreadList.size(); + while(index<loop_sub_size_transfer_thread_search) + { + transferThreadList.at(index)->set_checksumOnlyOnError(checksumOnlyOnError); + index++; + } +} + +void ListThread::set_osBuffer(bool osBuffer) +{ + this->osBuffer=osBuffer; + int index=0; + loop_sub_size_transfer_thread_search=transferThreadList.size(); + while(index<loop_sub_size_transfer_thread_search) + { + transferThreadList.at(index)->set_osBuffer(osBuffer); + index++; + } +} + +void ListThread::set_osBufferLimited(bool osBufferLimited) +{ + this->osBufferLimited=osBufferLimited; + int index=0; + loop_sub_size_transfer_thread_search=transferThreadList.size(); + while(index<loop_sub_size_transfer_thread_search) + { + transferThreadList.at(index)->set_osBufferLimited(osBufferLimited); + index++; + } +} + +void ListThread::realByteTransfered() +{ + quint64 totalRealByteTransfered=0; + int index=0; + loop_sub_size_transfer_thread_search=transferThreadList.size(); + while(index<loop_sub_size_transfer_thread_search) + { + totalRealByteTransfered+=transferThreadList.at(index)->realByteTransfered(); + index++; + } + emit send_realBytesTransfered(totalRealByteTransfered); +} + void ListThread::pause() { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start"); @@ -603,7 +656,6 @@ void ListThread::cancel() return; } stopIt=true; - disconnect(this); int index=0; loop_size=transferThreadList.size(); while(index<loop_size) @@ -624,6 +676,7 @@ void ListThread::cancel() } quit(); waitCancel.release(); + emit canBeDeleted(); } //speed limitation @@ -634,7 +687,7 @@ qint64 ListThread::getSpeedLimitation() bool ListThread::setSpeedLimitation(const qint64 &speedLimitation) { - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"maxSpeed: "+QString::number(maxSpeed)); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"maxSpeed: "+QString::number(speedLimitation)); maxSpeed=speedLimitation; int_for_loop=0; loop_size=transferThreadList.size(); @@ -713,11 +766,10 @@ void ListThread::sendActionDone() { if(actionDone.size()>0) { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start"); emit newActionOnList(actionDone); actionDone.clear(); } - if(actionToDoListTransfer.size()>0) - timerActionDone.start(); } //send progression @@ -725,38 +777,48 @@ void ListThread::sendProgression() { if(actionToDoListTransfer.size()==0) return; - qint64 copiedSize,totalSize,localOverSize; - QList<ProgressionItem> progressionList; - TransferThread *thread; oversize=0; currentProgression=0; int_for_loop=0; loop_size=transferThreadList.size(); while(int_for_loop<loop_size) { - thread=transferThreadList.at(int_for_loop); - if(thread->getStat()==TransferThread::Transfer) + temp_transfer_thread=transferThreadList.at(int_for_loop); + if(temp_transfer_thread->getStat()==TransferStat_Transfer || temp_transfer_thread->getStat()==TransferStat_Checksum) { - copiedSize=thread->copiedSize(); + copiedSize=temp_transfer_thread->copiedSize(); + + //for the general progression currentProgression+=copiedSize; - if(copiedSize>(qint64)thread->transferSize) - localOverSize=copiedSize-thread->transferSize; - totalSize=thread->transferSize+localOverSize; - ProgressionItem tempItem; - tempItem.current=copiedSize; - tempItem.id=thread->transferId; + + //the oversize (when the file is bigger after/during the copy then what was during the listing) + if(copiedSize>(qint64)temp_transfer_thread->transferSize) + localOverSize=copiedSize-temp_transfer_thread->transferSize; + else + localOverSize=0; + + //the current size copied + totalSize=temp_transfer_thread->transferSize+localOverSize; + if(temp_transfer_thread->getStat()==TransferStat_Checksum) + tempItem.current=temp_transfer_thread->realByteTransfered(); + else + tempItem.current=copiedSize; + tempItem.id=temp_transfer_thread->transferId; tempItem.total=totalSize; progressionList << tempItem; + + //add the oversize to the general progression oversize+=localOverSize; } int_for_loop++; } emit pushFileProgression(progressionList); + progressionList.clear(); emit pushGeneralProgression(bytesTransfered+currentProgression,bytesToTransfer+oversize); - timerProgression.start(); + realByteTransfered(); } -//send the progression +//send the progression, after full reset of the interface (then all is empty) void ListThread::syncTransferList_internal() { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start"); @@ -770,7 +832,7 @@ void ListThread::syncTransferList_internal() for(int_for_loop=0; int_for_loop<loop_size; ++int_for_loop) { const actionToDoTransfer &item=actionToDoListTransfer.at(int_for_loop); returnActionOnCopyList newAction; - newAction.type = AddingItem; + newAction.type = PreOperation; newAction.addAction.id = item.id; newAction.addAction.sourceFullPath = item.source.absoluteFilePath(); newAction.addAction.sourceFileName = item.source.fileName(); @@ -779,6 +841,7 @@ void ListThread::syncTransferList_internal() newAction.addAction.size = item.size; newAction.addAction.mode = item.mode; actionDone << newAction; + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("id: %1, size: %2, name: %3, size2: %4").arg(item.id).arg(item.size).arg(item.source.absoluteFilePath()).arg(newAction.addAction.size)); if(item.isRunning) { for(int_for_internal_loop=0; int_for_internal_loop<loop_sub_size; ++int_for_internal_loop) { @@ -793,15 +856,15 @@ void ListThread::syncTransferList_internal() newAction.addAction.size = item.size; newAction.addAction.mode = item.mode; actionDone << newAction; - if(transferThread->getStat()!=TransferThread::PreOperation) + if(transferThread->getStat()!=TransferStat_PreOperation) { returnActionOnCopyList newAction; switch(transferThread->getStat()) { - case TransferThread::Transfer: + case TransferStat_Transfer: newAction.type=Transfer; break; - case TransferThread::PostTransfer: + case TransferStat_PostTransfer: newAction.type=PostOperation; break; default: @@ -818,9 +881,6 @@ void ListThread::syncTransferList_internal() //add file transfer to do quint64 ListThread::addToTransfer(const QFileInfo& source,const QFileInfo& destination,const CopyMode& mode) { - //ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"source: "+source.absoluteFilePath()+", destination: "+destination.absoluteFilePath()); - if(actionToDoListTransfer.size()==0) - timerActionDone.start(); //add to transfer list numberOfTransferIntoToDoList++; bytesToTransfer+= source.size(); @@ -843,7 +903,7 @@ quint64 ListThread::addToTransfer(const QFileInfo& source,const QFileInfo& desti newAction.addAction.size = temp.size; newAction.addAction.mode = mode; actionDone << newAction; - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"source: "+source.absoluteFilePath()+",destination: "+destination.absoluteFilePath()+", add entry: "+QString::number(temp.id)); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("source: %1, destination: %2, add entry: %3, size: %4, size2: %5").arg(source.absoluteFilePath()).arg(destination.absoluteFilePath()).arg(temp.id).arg(temp.size).arg(newAction.addAction.size)); return temp.id; } @@ -867,6 +927,11 @@ void ListThread::removeItems(const QList<int> &ids) //put on top void ListThread::moveItemsOnTop(QList<int> ids) { + if(actionToDoListTransfer.size()<=1) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"list size is empty"); + return; + } ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start"); //do list operation int indexToMove=0; @@ -897,6 +962,11 @@ void ListThread::moveItemsOnTop(QList<int> ids) //move up void ListThread::moveItemsUp(QList<int> ids) { + if(actionToDoListTransfer.size()<=1) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"list size is empty"); + return; + } ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start"); //do list operation int lastGoodPositionExtern=0; @@ -943,6 +1013,11 @@ void ListThread::moveItemsUp(QList<int> ids) //move down void ListThread::moveItemsDown(QList<int> ids) { + if(actionToDoListTransfer.size()<=1) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"list size is empty"); + return; + } ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start"); //do list operation int lastGoodPositionExtern=numberOfTransferIntoToDoList; @@ -990,6 +1065,11 @@ void ListThread::moveItemsDown(QList<int> ids) //put on bottom void ListThread::moveItemsOnBottom(QList<int> ids) { + if(actionToDoListTransfer.size()<=1) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"list size is empty"); + return; + } ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start"); //do list operation int lastGoodPositionExtern=numberOfTransferIntoToDoList; @@ -1020,19 +1100,66 @@ void ListThread::moveItemsOnBottom(QList<int> ids) ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"stop"); } +/** \brief give the forced mode, to export/import transfer list */ +void ListThread::forceMode(const CopyMode &mode) +{ + if(mode==Copy) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("Force mode to copy")); + else + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("Force mode to move")); + this->mode=mode; + forcedMode=true; +} + void ListThread::exportTransferList(const QString &fileName) { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start"); QFile transferFile(fileName); if(transferFile.open(QIODevice::WriteOnly|QIODevice::Truncate)) { - transferFile.write(QString("Ultracopier-0.3;CopyEngine-0.3\n").toUtf8()); + transferFile.write(QString("Ultracopier-0.3;Transfer-list;").toUtf8()); + if(!forcedMode) + transferFile.write(QString("Transfer;").toUtf8()); + else + { + if(mode==Copy) + transferFile.write(QString("Copy;").toUtf8()); + else + transferFile.write(QString("Move;").toUtf8()); + } + transferFile.write(QString("Ultracopier-0.3\n").toUtf8()); + bool haveError=false; int size=actionToDoListTransfer.size(); for (int index=0;index<size;++index) { if(actionToDoListTransfer.at(index).mode==Copy) - transferFile.write(QString("Copy;%1;%2\n").arg(actionToDoListTransfer.at(index).source.absoluteFilePath()).arg(actionToDoListTransfer.at(index).destination.absoluteFilePath()).toUtf8()); - else - transferFile.write(QString("Move;%1;%2\n").arg(actionToDoListTransfer.at(index).source.absoluteFilePath()).arg(actionToDoListTransfer.at(index).destination.absoluteFilePath()).toUtf8()); + { + if(!forcedMode || mode==Copy) + { + if(forcedMode) + transferFile.write(QString("%1;%2\n").arg(actionToDoListTransfer.at(index).source.absoluteFilePath()).arg(actionToDoListTransfer.at(index).destination.absoluteFilePath()).toUtf8()); + else + transferFile.write(QString("Copy;%1;%2\n").arg(actionToDoListTransfer.at(index).source.absoluteFilePath()).arg(actionToDoListTransfer.at(index).destination.absoluteFilePath()).toUtf8()); + } + else + haveError=true; + } + else if(actionToDoListTransfer.at(index).mode==Move) + { + if(!forcedMode || mode==Move) + { + if(forcedMode) + transferFile.write(QString("Move;%1;%2\n").arg(actionToDoListTransfer.at(index).source.absoluteFilePath()).arg(actionToDoListTransfer.at(index).destination.absoluteFilePath()).toUtf8()); + else + transferFile.write(QString("%1;%2\n").arg(actionToDoListTransfer.at(index).source.absoluteFilePath()).arg(actionToDoListTransfer.at(index).destination.absoluteFilePath()).toUtf8()); + } + else + haveError=true; + } + } + if(haveError) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("Unable do to move or copy item into wrong forced mode: %1").arg(transferFile.errorString())); + emit errorTransferList(tr("Unable do to move or copy item into wrong forced mode: %1").arg(transferFile.errorString())); } transferFile.close(); } @@ -1051,7 +1178,7 @@ void ListThread::importTransferList(const QString &fileName) if(transferFile.open(QIODevice::ReadOnly)) { QString content; - QByteArray data=transferFile.readLine(); + QByteArray data=transferFile.readLine(64); if(data.size()<=0) { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("Problem at the reading, or file size is null")); @@ -1059,19 +1186,47 @@ void ListThread::importTransferList(const QString &fileName) return; } content=QString::fromUtf8(data); - if(content!="Ultracopier-0.3;CopyEngine-0.3\n") + if(content!="Ultracopier-0.3;Transfer-list;Transfer;Ultracopier-0.3\n" && content!="Ultracopier-0.3;Transfer-list;Copy;Ultracopier-0.3\n" && content!="Ultracopier-0.3;Transfer-list;Move;Ultracopier-0.3\n") { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("Wrong header: \"%1\"").arg(content)); emit errorTransferList(tr("Wrong header: \"%1\"").arg(content)); return; } - bool errorFound=false,ignored_by_wrong_type=false; - QRegExp correctLine("^(Copy|Move);[^;]+;[^;]+\n$"); + bool transferListMixedMode=false; + if(content=="Ultracopier-0.3;Transfer-list;Transfer;Ultracopier-0.3\n") + { + if(forcedMode) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("The transfer list is in mixed mode, but this instance is not in this mode")); + emit errorTransferList(tr("The transfer list is in mixed mode, but this instance is not in this mode")); + return; + } + else + transferListMixedMode=true; + } + if(content=="Ultracopier-0.3;Transfer-list;Copy;Ultracopier-0.3\n" && (forcedMode && mode==Move)) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("The transfer list is in copy mode, but this instance is not in this mode: forcedMode: %1, mode: %2").arg(forcedMode).arg(mode)); + emit errorTransferList(tr("The transfer list is in copy mode, but this instance is not in this mode")); + return; + } + if(content=="Ultracopier-0.3;Transfer-list;Move;Ultracopier-0.3\n" && (forcedMode && mode==Copy)) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("The transfer list is in move mode, but this instance is not in this mode: forcedMode: %1, mode: %2").arg(forcedMode).arg(mode)); + emit errorTransferList(tr("The transfer list is in move mode, but this instance is not in this mode")); + return; + } + bool errorFound=false; + QRegExp correctLine; + if(transferListMixedMode) + correctLine=QRegExp("^(Copy|Move);[^;]+;[^;]+\n$"); + else + correctLine=QRegExp("^[^;]+;[^;]+\n$"); QStringList args; - CopyMode mode; + CopyMode tempMode; do { - data=transferFile.readLine(); + data=transferFile.readLine(65535*2); if(data.size()>0) { content=QString::fromUtf8(data); @@ -1080,12 +1235,20 @@ void ListThread::importTransferList(const QString &fileName) { content.remove("\n"); args=content.split(";"); - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("New data to import: %1,%2,%3").arg(args.at(0)).arg(args.at(1)).arg(args.at(2))); - if(args.at(0)=="Copy") - mode=Copy; + if(forcedMode) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("New data to import in forced mode: %2,%3").arg(args.at(0)).arg(args.at(1))); + addToTransfer(QFileInfo(args.at(0)),QFileInfo(args.at(1)),mode); + } else - mode=Move; - addToTransfer(QFileInfo(args.at(1)),QFileInfo(args.at(2)),mode); + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("New data to import: %1,%2,%3").arg(args.at(0)).arg(args.at(1)).arg(args.at(2))); + if(args.at(0)=="Copy") + tempMode=Copy; + else + tempMode=Move; + addToTransfer(QFileInfo(args.at(1)),QFileInfo(args.at(2)),tempMode); + } } else { @@ -1098,8 +1261,6 @@ void ListThread::importTransferList(const QString &fileName) transferFile.close(); if(errorFound) emit warningTransferList(tr("Some error have been found during the line parsing")); - else if(ignored_by_wrong_type) - emit warningTransferList(tr("Some list is ignored because it not corresponds to the window transfer type")); // emit newActionOnList(); } else @@ -1113,7 +1274,7 @@ void ListThread::importTransferList(const QString &fileName) //do new actions void ListThread::doNewActions_start_transfer() { - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("actionToDoListTransfer.size(): %1, numberOfTranferRuning: ").arg(actionToDoListTransfer.size()).arg(numberOfTranferRuning)); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("actionToDoListTransfer.size(): %1, numberOfTranferRuning: %2").arg(actionToDoListTransfer.size()).arg(numberOfTranferRuning)); if(stopIt || putInPause) return; ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start"); @@ -1122,7 +1283,7 @@ void ListThread::doNewActions_start_transfer() loop_size=transferThreadList.size(); while(int_for_loop<loop_size && numberOfTranferRuning<ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER) { - if(transferThreadList.at(int_for_loop)->getStat()==TransferThread::WaitForTheTransfer) + if(transferThreadList.at(int_for_loop)->getStat()==TransferStat_WaitForTheTransfer) { transferThreadList.at(int_for_loop)->startTheTransfer(); numberOfTranferRuning++; @@ -1132,7 +1293,7 @@ void ListThread::doNewActions_start_transfer() int_for_loop=0; while(int_for_loop<loop_size && numberOfTranferRuning<ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER) { - if(transferThreadList.at(int_for_loop)->getStat()==TransferThread::PreOperation) + if(transferThreadList.at(int_for_loop)->getStat()==TransferStat_PreOperation) { transferThreadList.at(int_for_loop)->startTheTransfer(); numberOfTranferRuning++; @@ -1195,7 +1356,7 @@ void ListThread::doNewActions_inode_manipulation() I this case it lose all data */ currentTransferThread=transferThreadList[int_for_transfer_thread_search]; - if(currentTransferThread->getStat()==TransferThread::Idle && currentTransferThread->transferId==0) // /!\ important! + if(currentTransferThread->getStat()==TransferStat_Idle && currentTransferThread->transferId==0) // /!\ important! { currentTransferThread->transferId=currentActionToDoTransfer.id; currentTransferThread->transferSize=currentActionToDoTransfer.size; @@ -1265,7 +1426,7 @@ void ListThread::restartTransferIfItCan() ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,QString("transfer thread not located!")); return; } - if(numberOfTranferRuning<ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER && transfer->getStat()==TransferThread::WaitForTheTransfer) + if(numberOfTranferRuning<ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER && transfer->getStat()==TransferStat_WaitForTheTransfer) { transfer->startTheTransfer(); numberOfTranferRuning++; @@ -1274,36 +1435,70 @@ void ListThread::restartTransferIfItCan() } /// \brief update the transfer stat -void ListThread::newTransferStat(TransferThread::TransferStat stat,quint64 id) +void ListThread::newTransferStat(TransferStat stat,quint64 id) { returnActionOnCopyList newAction; switch(stat) { - case TransferThread::Idle: + case TransferStat_Idle: return; break; - case TransferThread::PreOperation: + case TransferStat_PreOperation: return; break; - case TransferThread::WaitForTheTransfer: + case TransferStat_WaitForTheTransfer: return; break; - case TransferThread::Transfer: + case TransferStat_Transfer: newAction.type=Transfer; break; - case TransferThread::PostTransfer: + case TransferStat_PostTransfer: + case TransferStat_PostOperation: newAction.type=PostOperation; break; - case TransferThread::PostOperation: - return; + case TransferStat_Checksum: + newAction.type=CustomOperation; break; default: + return; break; } newAction.addAction.id = id; actionDone << newAction; } +void ListThread::set_osBufferLimit(unsigned int osBufferLimit) +{ + this->osBufferLimit=osBufferLimit; + int index=0; + loop_sub_size_transfer_thread_search=transferThreadList.size(); + while(index<loop_sub_size_transfer_thread_search) + { + transferThreadList.at(index)->set_osBufferLimit(osBufferLimit); + index++; + } +} + +void ListThread::set_setFilters(QList<Filters_rules> include,QList<Filters_rules> exclude) +{ + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("include.size(): %1, exclude.size(): %2").arg(include.size()).arg(exclude.size())); + this->include=include; + this->exclude=exclude; + int index=0; + while(index<scanFileOrFolderThreadsPool.size()) + { + scanFileOrFolderThreadsPool.at(index)->setFilters(include,exclude); + index++; + } +} + +void ListThread::set_sendNewRenamingRules(QString firstRenamingRule,QString otherRenamingRule) +{ + this->firstRenamingRule=firstRenamingRule; + this->otherRenamingRule=otherRenamingRule; + emit send_sendNewRenamingRules(firstRenamingRule,otherRenamingRule); +} + void ListThread::mkPathFirstFolderFinish() { int_for_loop=0; @@ -1358,24 +1553,27 @@ void ListThread::timedUpdateDebugDialog() QString stat; switch(transferThreadList.at(index)->getStat()) { - case TransferThread::Idle: + case TransferStat_Idle: stat="Idle"; break; - case TransferThread::PreOperation: + case TransferStat_PreOperation: stat="PreOperation"; break; - case TransferThread::WaitForTheTransfer: + case TransferStat_WaitForTheTransfer: stat="WaitForTheTransfer"; break; - case TransferThread::Transfer: + case TransferStat_Transfer: stat="Transfer"; break; - case TransferThread::PostOperation: + case TransferStat_PostOperation: stat="PostOperation"; break; - case TransferThread::PostTransfer: + case TransferStat_PostTransfer: stat="PostTransfer"; break; + case TransferStat_Checksum: + stat="Checksum"; + break; default: stat=QString("??? (%1)").arg(transferThreadList.at(index)->getStat()); break; @@ -1454,6 +1652,13 @@ void ListThread::createTransferThread() last->setDrive(drives); last->setAlwaysFileExistsAction(alwaysDoThisActionForFileExists); last->setMaxSpeed(maxSpeed/ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER); + last->set_doChecksum(doChecksum); + last->set_checksumIgnoreIfImpossible(checksumIgnoreIfImpossible); + last->set_checksumOnlyOnError(checksumOnlyOnError); + last->set_osBuffer(osBuffer); + last->set_osBufferLimited(osBufferLimited); + last->set_osBufferLimit(osBufferLimit); + #ifdef ULTRACOPIER_PLUGIN_DEBUG connect(last,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)),this,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)), Qt::QueuedConnection); #endif // ULTRACOPIER_PLUGIN_DEBUG @@ -1464,9 +1669,14 @@ void ListThread::createTransferThread() connect(last,SIGNAL(preOperationStopped()), this,SLOT(doNewActions_start_transfer()), Qt::QueuedConnection); connect(last,SIGNAL(postOperationStopped()), this,SLOT(transferInodeIsClosed()), Qt::QueuedConnection); connect(last,SIGNAL(checkIfItCanBeResumed()), this,SLOT(restartTransferIfItCan()), Qt::QueuedConnection); + connect(last,SIGNAL(pushStat(TransferStat,quint64)), this,SLOT(newTransferStat(TransferStat,quint64)), Qt::QueuedConnection); + + connect(this,SIGNAL(send_sendNewRenamingRules(QString,QString)), last,SLOT(setRenamingRules(QString,QString)), Qt::QueuedConnection); + last->start(); last->setObjectName(QString("transfer %1").arg(transferThreadList.size()-1)); last->setMkpathTransfer(&mkpathTransfer); + last->setRenamingRules(firstRenamingRule,otherRenamingRule); #ifdef ULTRACOPIER_PLUGIN_DEBUG last->setId(transferThreadList.size()-1); #endif diff --git a/plugins/CopyEngine/Ultracopier-0.3/ListThread.h b/plugins/CopyEngine/Ultracopier-0.3/ListThread.h index f053e86..ef6b7f8 100644..100755 --- a/plugins/CopyEngine/Ultracopier-0.3/ListThread.h +++ b/plugins/CopyEngine/Ultracopier-0.3/ListThread.h @@ -98,6 +98,12 @@ public: bool getReturnBoolToCopyEngine(); QPair<quint64,quint64> getReturnPairQuint64ToCopyEngine(); ItemOfCopyList getReturnItemOfCopyListToCopyEngine(); + + void set_doChecksum(bool doChecksum); + void set_checksumIgnoreIfImpossible(bool checksumIgnoreIfImpossible); + void set_checksumOnlyOnError(bool checksumOnlyOnError); + void set_osBuffer(bool osBuffer); + void set_osBufferLimited(bool osBufferLimited); public slots: //action on the copy /// \brief put the transfer in pause @@ -128,10 +134,14 @@ public slots: /** \brief move on bottom of the list the selected item * \param ids ids is the id list of the selected items */ void moveItemsOnBottom(QList<int> ids); + + /** \brief give the forced mode, to export/import transfer list */ + void forceMode(const CopyMode &mode); /// \brief export the transfer list into a file void exportTransferList(const QString &fileName); /// \brief import the transfer list into a file void importTransferList(const QString &fileName); + /// \brief set the folder local colision void setFolderColision(FolderExistsAction alwaysDoThisActionForFolderExists); /** \brief to set the speed limitation @@ -162,7 +172,16 @@ public slots: void restartTransferIfItCan(); /// \brief update the transfer stat - void newTransferStat(TransferThread::TransferStat stat,quint64 id); + void newTransferStat(TransferStat stat,quint64 id); + + void set_osBufferLimit(unsigned int osBufferLimit); + void set_setFilters(QList<Filters_rules> include,QList<Filters_rules> exclude); + void set_sendNewRenamingRules(QString firstRenamingRule,QString otherRenamingRule); + + //send action done + void sendActionDone(); + //send progression + void sendProgression(); private: QSemaphore mkpathTransfer; QString sourceDrive; @@ -183,10 +202,20 @@ private: qint64 actualRealByteTransfered; int preOperationNumber; int numberOfTranferRuning; - QList<quint64> orderStarted;///< list the order id - int maxSpeed; + int maxSpeed;///< in KB/s, assume as 0KB/s as default like every where FolderExistsAction alwaysDoThisActionForFolderExists; bool checkDestinationFolderExists; + bool doChecksum; + bool checksumIgnoreIfImpossible; + bool checksumOnlyOnError; + bool osBuffer; + bool osBufferLimited; + unsigned int osBufferLimit; + QList<Filters_rules> include,exclude; + CopyMode mode; + bool forcedMode; + QString firstRenamingRule; + QString otherRenamingRule; //add file transfer to do quint64 addToTransfer(const QFileInfo& source,const QFileInfo& destination,const CopyMode& mode); @@ -218,7 +247,10 @@ private: QSemaphore waitConstructor,waitCancel; int actionToDoListTransfer_count,actionToDoListInode_count; bool doTransfer,doInode; - qint64 oversize,currentProgression; + qint64 oversize;//used as temp variable + qint64 currentProgression; + qint64 copiedSize,totalSize,localOverSize; + QList<ProgressionItem> progressionList; TransferThread* currentTransferThread; //memory variable for transfer thread creation bool doRightTransfer; @@ -231,10 +263,9 @@ private: QPair<quint64,quint64> returnPairQuint64ToCopyEngine; QList<ItemOfCopyList> returnListItemOfCopyListToCopyEngine; ItemOfCopyList returnItemOfCopyListToCopyEngine; - //send action done timer - QTimer timerActionDone; - //send progression timer - QTimer timerProgression; + ProgressionItem tempItem; + + void realByteTransfered(); private slots: void scanThreadHaveFinish(bool skipFirstRemove=false); void updateTheStatus(); @@ -271,11 +302,7 @@ private slots: quint64 addToMkPath(const QString& folder); //add rm path to do void addToRmPath(const QString& folder,const int& inodeToRemove); - //send action done - void sendActionDone(); - //send progression - void sendProgression(); - //send the progression + //send the progression, after full reset of the interface (then all is empty) void syncTransferList_internal(); signals: //send information about the copy @@ -298,7 +325,8 @@ signals: void newErrorAction(QString action); void isInPause(bool); - void cancelAll(); + //when can be deleted + void canBeDeleted(); //send error occurred void error(QString path,quint64 size,QDateTime mtime,QString error); @@ -335,6 +363,8 @@ signals: void warningTransferList(QString warning); void errorTransferList(QString error); + void send_sendNewRenamingRules(QString firstRenamingRule,QString otherRenamingRule); + void send_realBytesTransfered(quint64); }; #endif // LISTTHREAD_H diff --git a/plugins/CopyEngine/Ultracopier-0.3/ListThread_InodeAction.cpp b/plugins/CopyEngine/Ultracopier-0.3/ListThread_InodeAction.cpp index 0fd2cf2..0f4c2f4 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/ListThread_InodeAction.cpp +++ b/plugins/CopyEngine/Ultracopier-0.3/ListThread_InodeAction.cpp @@ -5,6 +5,8 @@ \version 0.3 \date 2011 */ +#ifdef LISTTHREAD_H + //do the inode action actionToDoInode& currentActionToDoInode=actionToDoListInode[int_for_internal_loop]; switch(currentActionToDoInode.type) @@ -52,3 +54,5 @@ default: ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("Wrong type at inode action")); return; } + +#endif diff --git a/plugins/CopyEngine/Ultracopier-0.3/ReadThread.cpp b/plugins/CopyEngine/Ultracopier-0.3/ReadThread.cpp index fb97ec5..3c7bfc1 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/ReadThread.cpp +++ b/plugins/CopyEngine/Ultracopier-0.3/ReadThread.cpp @@ -33,6 +33,7 @@ void ReadThread::run() connect(this,SIGNAL(internalStartRead()), this,SLOT(internalRead()), Qt::QueuedConnection); connect(this,SIGNAL(internalStartClose()), this,SLOT(internalClose()), Qt::QueuedConnection); connect(this,SIGNAL(checkIfIsWait()), this,SLOT(isInWait()), Qt::QueuedConnection); + connect(this,SIGNAL(internalStartChecksum()), this,SLOT(checkSum()), Qt::QueuedConnection); exec(); } @@ -69,6 +70,8 @@ void ReadThread::stop() { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] stop()"); stopIt=true; + if(isOpen.available()>0) + return; emit internalStartClose(); } @@ -114,7 +117,6 @@ bool ReadThread::seek(qint64 position) ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start with: "+QString::number(position)); if(position>file.size()) return false; - lastGoodPosition=position; return file.seek(position); } @@ -128,6 +130,84 @@ void ReadThread::postOperation() emit internalStartClose(); } +void ReadThread::checkSum() +{ + QByteArray blockArray; + QCryptographicHash hash(QCryptographicHash::Sha1); + isInReadLoop=true; + lastGoodPosition=0; + seek(0); + int sizeReaden=0; + do + { + //read one block + #ifdef ULTRACOPIER_PLUGIN_DEBUG + stat=Read; + #endif + blockArray=file.read(blockSize); + #ifdef ULTRACOPIER_PLUGIN_DEBUG + stat=Idle; + #endif + + if(file.error()!=QFile::NoError) + { + errorString_internal=tr("Unable to read the source file: ")+file.errorString()+" ("+QString::number(file.error())+")"; + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+QString("file.error()!=QFile::NoError: %1, error: %2").arg(QString::number(file.error())).arg(errorString_internal)); + emit error(); + isInReadLoop=false; + return; + } + sizeReaden=blockArray.size(); + if(sizeReaden>0) + { + #ifdef ULTRACOPIER_PLUGIN_DEBUG + stat=Checksum; + #endif + hash.addData(blockArray); + #ifdef ULTRACOPIER_PLUGIN_DEBUG + stat=Idle; + #endif + + if(stopIt) + break; + + lastGoodPosition+=blockArray.size(); + + //wait for limitation speed if stop not query + if(maxSpeed>0) + { + numberOfBlockCopied++; + if(numberOfBlockCopied>=MultiForBigSpeed) + { + numberOfBlockCopied=0; + waitNewClockForSpeed.acquire(); + if(stopIt) + break; + } + } + } + } + while(sizeReaden>0 && !stopIt); + if(lastGoodPosition>file.size()) + { + errorString_internal=tr("File truncated during the read, possible data change"); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+QString("Source truncated during the read: %1 (%2)").arg(file.errorString()).arg(QString::number(file.error()))); + emit error(); + isInReadLoop=false; + return; + } + isInReadLoop=false; + if(stopIt) + { + if(putInPause) + emit isInPause(); + stopIt=false; + return; + } + emit checksumFinish(hash.result()); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] stop the read"); +} + bool ReadThread::internalOpen(bool resetLastGoodPosition) { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] internalOpen source: "+name); @@ -156,6 +236,7 @@ bool ReadThread::internalOpen(bool resetLastGoodPosition) putInPause=false; if(resetLastGoodPosition) { + lastGoodPosition=0; seek(0); emit opened(); } @@ -274,8 +355,6 @@ void ReadThread::internalRead() break; } } - /*if(lastGoodPosition>size) - oversize=lastGoodPosition-size;*/ } /* if(lastGoodPosition>16*1024) @@ -415,15 +494,21 @@ void ReadThread::fakeReadIsStopped() emit readIsStopped(); } +/// do the checksum +void ReadThread::startCheckSum() +{ + emit internalStartChecksum(); +} + qint64 ReadThread::getLastGoodPosition() { - if(lastGoodPosition>file.size()) + /*if(lastGoodPosition>file.size()) { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] Bug, the lastGoodPosition is greater than the file size!"); return file.size(); } - else - return lastGoodPosition; + else*/ + return lastGoodPosition; } //reopen after an error @@ -448,8 +533,7 @@ bool ReadThread::internalReopen() { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] source file have changed since the last open, restart all"); //fix this function like the close function - lastGoodPosition=0; - if(internalOpen(false)) + if(internalOpen(true)) { emit resumeAfterErrorByRestartAll(); return true; diff --git a/plugins/CopyEngine/Ultracopier-0.3/ReadThread.h b/plugins/CopyEngine/Ultracopier-0.3/ReadThread.h index 537134a..1d1eabc 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/ReadThread.h +++ b/plugins/CopyEngine/Ultracopier-0.3/ReadThread.h @@ -13,14 +13,13 @@ #include <QTimer> #include <QDateTime> #include <QFileInfo> +#include <QCryptographicHash> #include "WriteThread.h" #include "Environment.h" #include "StructEnumDefinition_CopyEngine.h" #include "AvancedQFile.h" -/// \todo do fake open/close - /// \brief Thread changed to open/close and read the source file class ReadThread : public QThread { @@ -65,7 +64,8 @@ public: Idle=0, InodeOperation=1, Read=2, - WaitWritePipe=3 + WaitWritePipe=3, + Checksum=4 }; ReadStat stat; #endif @@ -79,9 +79,14 @@ public: void fakeReadIsStarted(); /// \brief do the fake readIsStopped void fakeReadIsStopped(); + /// do the checksum + void startCheckSum(); public slots: /// \brief to reset the copy, and put at the same state when it just open void seekToZeroAndWait(); + void postOperation(); + /// do the checksum + void checkSum(); signals: void error(); void isInPause(); @@ -93,13 +98,16 @@ signals: void checkIfIsWait(); void resumeAfterErrorByRestartAll(); void resumeAfterErrorByRestartAtTheLastPosition(); + void checksumFinish(const QByteArray&); // internal signals - void internalStartOpen(); + void internalStartOpen(); + void internalStartChecksum(); void internalStartReopen(); void internalStartRead(); void internalStartClose(); /// \brief To debug source void debugInformation(DebugLevel level,QString fonction,QString text,QString file,int ligne); + private: QString name; QString errorString_internal; @@ -130,7 +138,6 @@ private slots: bool internalReopen(); void internalRead(); void internalClose(bool callByTheDestructor=false); - void postOperation(); void isInWait(); }; diff --git a/plugins/CopyEngine/Ultracopier-0.3/RenamingRules.cpp b/plugins/CopyEngine/Ultracopier-0.3/RenamingRules.cpp new file mode 100644 index 0000000..a09f66a --- /dev/null +++ b/plugins/CopyEngine/Ultracopier-0.3/RenamingRules.cpp @@ -0,0 +1,85 @@ +#include "RenamingRules.h" +#include "ui_RenamingRules.h" + +#include <QMessageBox> + +RenamingRules::RenamingRules(QWidget *parent) : + QDialog(parent), + ui(new Ui::RenamingRules) +{ + ui->setupUi(this); + connectUI(); + setRenamingRules("",""); +} + +RenamingRules::~RenamingRules() +{ + delete ui; +} + +void RenamingRules::on_buttonBox_clicked(QAbstractButton *button) +{ + if(ui->buttonBox->buttonRole(button)==QDialogButtonBox::RejectRole) + reject(); + if(ui->buttonBox->buttonRole(button)==QDialogButtonBox::ResetRole) + { + setRenamingRules("",""); + emit sendNewRenamingRules(firstRenamingRule,otherRenamingRule); + } +} + +void RenamingRules::setRenamingRules(QString firstRenamingRule,QString otherRenamingRule) +{ + disconnectUI(); + this->firstRenamingRule=firstRenamingRule; + this->otherRenamingRule=otherRenamingRule; + if(!firstRenamingRule.isEmpty()) + ui->firstRenamingRule->setText(firstRenamingRule); + else + ui->firstRenamingRule->setText(tr("%1 - copy").arg("%name%")); + if(!otherRenamingRule.isEmpty()) + ui->otherRenamingRule->setText(otherRenamingRule); + else + ui->otherRenamingRule->setText(tr("%1 - copy (%2)").arg("%name%").arg("%number%")); + connectUI(); +} + +void RenamingRules::connectUI() +{ + connect(ui->firstRenamingRule,SIGNAL(editingFinished()),this,SLOT(firstRenamingRule_haveChanged())); + connect(ui->otherRenamingRule,SIGNAL(editingFinished()),this,SLOT(otherRenamingRule_haveChanged())); +} + +void RenamingRules::disconnectUI() +{ + disconnect(ui->firstRenamingRule,SIGNAL(editingFinished()),this,SLOT(firstRenamingRule_haveChanged())); + disconnect(ui->otherRenamingRule,SIGNAL(editingFinished()),this,SLOT(otherRenamingRule_haveChanged())); +} + +void RenamingRules::firstRenamingRule_haveChanged() +{ + QString newValue=ui->firstRenamingRule->text(); + if(newValue==tr("%1 - copy").arg("%name%")) + newValue=""; + if(newValue==firstRenamingRule) + return; + firstRenamingRule=newValue; + emit sendNewRenamingRules(firstRenamingRule,otherRenamingRule); +} + +void RenamingRules::otherRenamingRule_haveChanged() +{ + QString newValue=ui->otherRenamingRule->text(); + if(newValue==tr("%1 - copy (%2)").arg("%name%").arg("%number%")) + newValue=""; + if(newValue==otherRenamingRule) + return; + otherRenamingRule=newValue; + emit sendNewRenamingRules(firstRenamingRule,otherRenamingRule); +} + +void RenamingRules::newLanguageLoaded() +{ + ui->retranslateUi(this); + setRenamingRules(firstRenamingRule,otherRenamingRule); +} diff --git a/plugins/CopyEngine/Ultracopier-0.3/RenamingRules.h b/plugins/CopyEngine/Ultracopier-0.3/RenamingRules.h new file mode 100644 index 0000000..2fd9580 --- /dev/null +++ b/plugins/CopyEngine/Ultracopier-0.3/RenamingRules.h @@ -0,0 +1,34 @@ +#ifndef RENAMINGRULES_H +#define RENAMINGRULES_H + +#include <QDialog> +#include <QAbstractButton> + +namespace Ui { +class RenamingRules; +} + +/** Define rules for renaming */ +class RenamingRules : public QDialog +{ + Q_OBJECT +public: + explicit RenamingRules(QWidget *parent = 0); + ~RenamingRules(); + void setRenamingRules(QString firstRenamingRule,QString otherRenamingRule); + void newLanguageLoaded(); +private: + Ui::RenamingRules *ui; + void connectUI(); + void disconnectUI(); + QString firstRenamingRule; + QString otherRenamingRule; +private slots: + void on_buttonBox_clicked(QAbstractButton *button); + void firstRenamingRule_haveChanged(); + void otherRenamingRule_haveChanged(); +signals: + void sendNewRenamingRules(QString firstRenamingRule,QString otherRenamingRule); +}; + +#endif // RENAMINGRULES_H diff --git a/plugins/CopyEngine/Ultracopier-0.3/RenamingRules.ui b/plugins/CopyEngine/Ultracopier-0.3/RenamingRules.ui new file mode 100644 index 0000000..9e84f4b --- /dev/null +++ b/plugins/CopyEngine/Ultracopier-0.3/RenamingRules.ui @@ -0,0 +1,129 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>RenamingRules</class> + <widget class="QDialog" name="RenamingRules"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>303</width> + <height>213</height> + </rect> + </property> + <property name="windowTitle"> + <string>Renaming rules</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <property name="spacing"> + <number>2</number> + </property> + <property name="margin"> + <number>2</number> + </property> + <item> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>First renaming</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLineEdit" name="firstRenamingRule"> + <property name="placeholderText"> + <string extracomment="%name% should not be translated">%name% - copy</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string extracomment=" should not be translated"><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p></body></html></string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_2"> + <property name="title"> + <string>Second renaming</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QLineEdit" name="otherRenamingRule"> + <property name="placeholderText"> + <string extracomment="%name%, %number% should not be translated">%name% - copy (%number%)</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_4"> + <property name="text"> + <string extracomment="%name%, %number% should not be translated"><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name</p><p><span style=" font-weight:600;">%number%</span> for the extra number</p></body></html></string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>1</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Close|QDialogButtonBox::RestoreDefaults</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>RenamingRules</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>RenamingRules</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/plugins/CopyEngine/Ultracopier-0.3/RmPath.cpp b/plugins/CopyEngine/Ultracopier-0.3/RmPath.cpp index e7617fc..a65fb97 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/RmPath.cpp +++ b/plugins/CopyEngine/Ultracopier-0.3/RmPath.cpp @@ -83,7 +83,7 @@ bool RmPath::rmpath(const QDir &dir) else { //return the fonction for scan the new folder - if(!rmpath(dir.absolutePath()+fileInfo.fileName()+'/')) + if(!rmpath(dir.absolutePath()+'/'+fileInfo.fileName()+'/')) allHaveWork=false; } } diff --git a/plugins/CopyEngine/Ultracopier-0.3/StructEnumDefinition_CopyEngine.h b/plugins/CopyEngine/Ultracopier-0.3/StructEnumDefinition_CopyEngine.h index 88971aa..90af91b 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/StructEnumDefinition_CopyEngine.h +++ b/plugins/CopyEngine/Ultracopier-0.3/StructEnumDefinition_CopyEngine.h @@ -4,6 +4,9 @@ \version 0.3 \date 2010 */ +#include <QString> +#include <QRegExp> + #ifndef STRUCTDEF_COPYENGINE_H #define STRUCTDEF_COPYENGINE_H @@ -29,6 +32,18 @@ enum FileErrorAction FileError_PutToEndOfTheList }; +/// \brief to have the transfer status +enum TransferStat +{ + TransferStat_Idle=0, + TransferStat_PreOperation=1, + TransferStat_WaitForTheTransfer=2, + TransferStat_Transfer=3, + TransferStat_Checksum=4, + TransferStat_PostTransfer=5, + TransferStat_PostOperation=6 +}; + /// \brief Define overwrite mode /*enum OverwriteMode { @@ -48,4 +63,28 @@ enum FolderExistsAction FolderExists_Rename }; +enum SearchType +{ + SearchType_rawText, + SearchType_simpleRegex, + SearchType_perlRegex, +}; + +enum ApplyOn +{ + ApplyOn_file, + ApplyOn_fileAndFolder, + ApplyOn_folder, +}; + +/** to store into different way the filter rules to be exported */ +struct Filters_rules +{ + QString search_text; + SearchType search_type; + ApplyOn apply_on; + bool need_match_all; + QRegExp regex; +}; + #endif // STRUCTDEF_COPYENGINE_H diff --git a/plugins/CopyEngine/Ultracopier-0.3/TransferThread.cpp b/plugins/CopyEngine/Ultracopier-0.3/TransferThread.cpp index 359a705..7550d8c 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/TransferThread.cpp +++ b/plugins/CopyEngine/Ultracopier-0.3/TransferThread.cpp @@ -6,22 +6,21 @@ #ifdef Q_CC_GNU //this next header is needed to change file time/date under gcc #include <utime.h> +#include <time.h> +#include <unistd.h> +#include <sys/stat.h> #endif -/// \todo manage case resume after error, because previously inode opt free before -/// \todo manage error in pre and post operation -/// \todo remove destination when canceled -/// \todo test if source if closed by end but write error -/// \todo pointer for readThread and writeThread to destroy the read before the write (prevent dead lock) - -/// \bug continue progress when write error +#ifndef Q_OS_UNIX +#include <windows.h> +#endif TransferThread::TransferThread() { start(); moveToThread(this); needSkip = false; - stat = Idle; + transfer_stat = TransferStat_Idle; stopIt = false; fileExistsAction = FileExists_NotSet; alwaysDoFileExistsAction= FileExists_NotSet; @@ -46,7 +45,7 @@ TransferThread::~TransferThread() void TransferThread::run() { //ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start: "+QString::number((qint64)QThread::currentThreadId())); - stat = Idle; + transfer_stat = TransferStat_Idle; stopIt = false; fileExistsAction = FileExists_NotSet; alwaysDoFileExistsAction= FileExists_NotSet; @@ -57,17 +56,18 @@ void TransferThread::run() connect(this,SIGNAL(internalStartPreOperation()), this, SLOT(preOperation()), Qt::QueuedConnection); connect(this,SIGNAL(internalStartPostOperation()), this, SLOT(postOperation()), Qt::QueuedConnection); //the state change operation - connect(&readThread,SIGNAL(readIsStopped()), &readThread, SLOT(postOperation()), Qt::QueuedConnection); + //connect(&readThread,SIGNAL(readIsStopped()), &readThread, SLOT(postOperation()), Qt::QueuedConnection);//commented to do the checksum connect(&readThread,SIGNAL(opened()), this, SLOT(readIsReady()), Qt::QueuedConnection); connect(&writeThread,SIGNAL(opened()), this, SLOT(writeIsReady()), Qt::QueuedConnection); connect(&readThread,SIGNAL(readIsStopped()), this, SLOT(readIsStopped()), Qt::QueuedConnection); connect(&writeThread,SIGNAL(writeIsStopped()), this, SLOT(writeIsStopped()), Qt::QueuedConnection); connect(&readThread,SIGNAL(readIsStopped()), &writeThread, SLOT(endIsDetected()), Qt::QueuedConnection); - connect(&writeThread,SIGNAL(writeIsStopped()), &writeThread, SLOT(postOperation()), Qt::QueuedConnection); - connect(&readThread,SIGNAL(readIsStopped()), this, SLOT(readIsFinish()), Qt::QueuedConnection); + //connect(&writeThread,SIGNAL(writeIsStopped()), &writeThread, SLOT(postOperation()), Qt::QueuedConnection);//commented to do the checksum connect(&readThread,SIGNAL(closed()), this, SLOT(readIsClosed()), Qt::QueuedConnection); connect(&writeThread,SIGNAL(closed()), this, SLOT(writeIsClosed()), Qt::QueuedConnection); connect(&writeThread,SIGNAL(reopened()), this, SLOT(writeThreadIsReopened()), Qt::QueuedConnection); + connect(&readThread,SIGNAL(checksumFinish(QByteArray)), this, SLOT(readChecksumFinish(QByteArray)), Qt::QueuedConnection); + connect(&writeThread,SIGNAL(checksumFinish(QByteArray)),this, SLOT(writeChecksumFinish(QByteArray)), Qt::QueuedConnection); //error management connect(&readThread,SIGNAL(isSeekToZeroAndWait()), this, SLOT(readThreadIsSeekToZeroAndWait()), Qt::QueuedConnection); connect(&readThread,SIGNAL(resumeAfterErrorByRestartAtTheLastPosition()), this, SLOT(readThreadResumeAfterError()), Qt::QueuedConnection); @@ -80,13 +80,12 @@ void TransferThread::run() connect(&writeThread,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)),this,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)),Qt::QueuedConnection); #endif - /// \todo do the current post opt only after the read write opt exec(); } -TransferThread::TransferStat TransferThread::getStat() +TransferStat TransferThread::getStat() { - return stat; + return transfer_stat; } void TransferThread::startTheTransfer() @@ -96,7 +95,7 @@ void TransferThread::startTheTransfer() void TransferThread::internalStartTheTransfer() { - if(stat==Idle) + if(transfer_stat==TransferStat_Idle) { if(mode!=Move) { @@ -105,12 +104,12 @@ void TransferThread::internalStartTheTransfer() } return; } - if(stat==PostOperation) + if(transfer_stat==TransferStat_PostOperation) { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] can't start transfert at PostOperation"); return; } - if(stat==Transfer) + if(transfer_stat==TransferStat_Transfer) { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] can't start transfert at Transfer"); return; @@ -133,13 +132,13 @@ void TransferThread::internalStartTheTransfer() void TransferThread::setFiles(const QString &source,const qint64 &size,const QString &destination,const CopyMode &mode) { - if(stat!=Idle) + if(transfer_stat!=TransferStat_Idle) { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] already used, source: "+source+", destination: "+destination); return; } //to prevent multiple file alocation into ListThread::doNewActions_inode_manipulation() - stat = PreOperation; + transfer_stat = TransferStat_PreOperation; //emit pushStat(stat,transferId); ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start, source: "+source+", destination: "+destination); this->source = source; @@ -150,13 +149,14 @@ void TransferThread::setFiles(const QString &source,const qint64 &size,const QSt canStartTransfer = false; sended_state_preOperationStopped= false; canBeMovedDirectlyVariable = false; + fileContentError = false; resetExtraVariable(); emit internalStartPreOperation(); } void TransferThread::setFileExistsAction(const FileExistsAction &action) { - if(stat!=PreOperation) + if(transfer_stat!=TransferStat_PreOperation) { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] already used, source: "+source+", destination: "+destination); return; @@ -177,7 +177,7 @@ void TransferThread::setFileExistsAction(const FileExistsAction &action) void TransferThread::setFileRename(const QString &nameForRename) { - if(stat!=PreOperation) + if(transfer_stat!=TransferStat_PreOperation) { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] already used, source: "+source+", destination: "+destination); return; @@ -207,6 +207,7 @@ void TransferThread::resetExtraVariable() readIsReadyVariable = false; writeIsReadyVariable = false; readIsFinishVariable = false; + writeIsFinishVariable = false; readIsClosedVariable = false; writeIsClosedVariable = false; needSkip = false; @@ -217,7 +218,7 @@ void TransferThread::resetExtraVariable() void TransferThread::preOperation() { - if(stat!=PreOperation) + if(transfer_stat!=TransferStat_PreOperation) { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] already used, source: "+source+", destination: "+destination); return; @@ -258,7 +259,7 @@ void TransferThread::tryOpen() if(!writeIsOpenVariable) { writeError=false; - writeThread.open(destination,sourceInfo.size()); + writeThread.open(destination,size,osBuffer && (!osBufferLimited || (osBufferLimited && size<osBufferLimit))); } } @@ -275,7 +276,6 @@ bool TransferThread::isSame() bool TransferThread::destinationExists() { - /// \todo do the overwrite: FileExists_OverwriteIfNotSameModificationDate //check if destination exists ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] overwrite: "+QString::number(fileExistsAction)+", always action: "+QString::number(alwaysDoFileExistsAction)); if(alwaysDoFileExistsAction==FileExists_Overwrite || readError || writeError) @@ -284,7 +284,7 @@ bool TransferThread::destinationExists() { if(fileExistsAction==FileExists_NotSet && alwaysDoFileExistsAction==FileExists_Skip) { - stat=Idle; + transfer_stat=TransferStat_Idle; emit postOperationStopped(); return true; } @@ -293,31 +293,42 @@ bool TransferThread::destinationExists() QString absolutePath=destinationInfo.absolutePath(); QString fileName=destinationInfo.fileName(); QString suffix=""; + QString newFileName; + //resolv the suffix if(fileName.contains(QRegExp("^(.*)(\\.[a-z0-9]+)$"))) { suffix=fileName; suffix.replace(QRegExp("^(.*)(\\.[a-z0-9]+)$"),"\\2"); fileName.replace(QRegExp("^(.*)(\\.[a-z0-9]+)$"),"\\1"); } + //resolv the new name + int num=1; do { - if(!fileName.startsWith(tr("Copy of "))) - fileName=tr("Copy of ")+fileName; - else + if(num==1) { - if(fileName.contains(QRegExp("_[0-9]+$"))) + if(firstRenamingRule=="") + newFileName=tr("%1 - copy").arg(fileName); + else { - QString number=fileName; - number.replace(QRegExp("^.*_([0-9]+)$"),"\\1"); - int num=number.toInt()+1; - fileName.remove(QRegExp("[0-9]+$")); - fileName+=QString::number(num); + newFileName=firstRenamingRule; + newFileName.replace("%name%",fileName); } + } + else + { + if(otherRenamingRule=="") + newFileName=tr("%1 - copy (%2)").arg(fileName).arg(num); else - fileName+="_2"; + { + newFileName=otherRenamingRule; + newFileName.replace("%name%",fileName); + newFileName.replace("%number%",QString::number(num)); + } } - destination=absolutePath+QDir::separator()+fileName+suffix; + destination=absolutePath+QDir::separator()+newFileName+suffix; destinationInfo.setFile(destination); + num++; } while(destinationInfo.exists()); return false; @@ -328,7 +339,7 @@ bool TransferThread::destinationExists() return false; else { - stat=Idle; + transfer_stat=TransferStat_Idle; emit postOperationStopped(); return true; } @@ -339,7 +350,7 @@ bool TransferThread::destinationExists() return false; else { - stat=Idle; + transfer_stat=TransferStat_Idle; emit postOperationStopped(); return true; } @@ -423,7 +434,7 @@ void TransferThread::ifCanStartTransfer() ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] readIsReadyVariable: "+QString::number(readIsReadyVariable)+", writeIsReadyVariable: "+QString::number(writeIsReadyVariable)); if(readIsReadyVariable && writeIsReadyVariable) { - stat=WaitForTheTransfer; + transfer_stat=TransferStat_WaitForTheTransfer; sended_state_readStopped = false; sended_state_writeStopped = false; ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] stat=WaitForTheTransfer"); @@ -435,7 +446,7 @@ void TransferThread::ifCanStartTransfer() if(canStartTransfer) { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] stat=Transfer"); - stat=Transfer; + transfer_stat=TransferStat_Transfer; if(!canBeMovedDirectlyVariable) { needRemove=true; @@ -443,7 +454,7 @@ void TransferThread::ifCanStartTransfer() } else tryMoveDirectly(); - emit pushStat(stat,transferId); + emit pushStat(transfer_stat,transferId); } //else //emit pushStat(stat,transferId); @@ -481,6 +492,7 @@ void TransferThread::setKeepDate(const bool keepDate) void TransferThread::setMaxSpeed(int maxSpeed) { int interval=readThread.setMaxSpeed(maxSpeed); + writeThread.setMaxSpeed(maxSpeed); if(maxSpeed>0) { clockForTheCopySpeed.setInterval(interval); @@ -498,18 +510,22 @@ void TransferThread::setMaxSpeed(int maxSpeed) bool TransferThread::setBlockSize(const unsigned int blockSize) { this->blockSize=blockSize; - return readThread.setBlockSize(blockSize); + return readThread.setBlockSize(blockSize) && writeThread.setBlockSize(blockSize); } //pause the copy void TransferThread::pause() { + if(transfer_stat==TransferStat_Idle) + return; readThread.pause(); } //resume the copy void TransferThread::resume() { + if(transfer_stat==TransferStat_Idle) + return; readThread.resume(); } @@ -517,6 +533,8 @@ void TransferThread::resume() void TransferThread::stop() { stopIt=true; + if(transfer_stat==TransferStat_Idle) + return; readThread.stop(); writeThread.stop(); } @@ -531,8 +549,82 @@ void TransferThread::readIsFinish() ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start"); readIsFinishVariable=true; canStartTransfer=false; - stat=PostTransfer; - emit pushStat(stat,transferId); + //check here if need start checksuming or not + real_doChecksum=doChecksum && (!checksumOnlyOnError || fileContentError); + if(real_doChecksum) + { + readIsFinishVariable=false; + transfer_stat=TransferStat_Checksum; + sourceChecksum=QByteArray(); + destinationChecksum=QByteArray(); + readThread.startCheckSum(); + } + else + { + transfer_stat=TransferStat_PostTransfer; + readThread.postOperation(); + } + emit pushStat(transfer_stat,transferId); +} + +void TransferThread::writeIsFinish() +{ + if(writeIsFinishVariable) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] double event dropped"); + return; + } + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start"); + writeIsFinishVariable=true; + //check here if need start checksuming or not + if(real_doChecksum) + { + writeIsFinishVariable=false; + transfer_stat=TransferStat_Checksum; + writeThread.startCheckSum(); + } + else + writeThread.postOperation(); +} + +void TransferThread::readChecksumFinish(const QByteArray& checksum) +{ + sourceChecksum=checksum; + compareChecksum(); +} + +void TransferThread::writeChecksumFinish(const QByteArray& checksum) +{ + destinationChecksum=checksum; + compareChecksum(); +} + +void TransferThread::compareChecksum() +{ + if(sourceChecksum.size()==0) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] the checksum of source is missing"); + return; + } + if(destinationChecksum.size()==0) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] the checksum of destination is missing"); + return; + } + if(sourceChecksum==destinationChecksum) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] the checksum match"); + readThread.postOperation(); + writeThread.postOperation(); + transfer_stat=TransferStat_PostTransfer; + emit pushStat(transfer_stat,transferId); + } + else + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] the checksum not match"); + //emit error here, and wait to resume + emit errorOnFile(destinationInfo,tr("The checksums not match")); + } } void TransferThread::readIsClosed() @@ -569,14 +661,19 @@ bool TransferThread::checkIfAllIsClosed() if((!readIsReadyVariable || readIsClosedVariable) && (!writeIsReadyVariable || writeIsClosedVariable)) { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] emit internalStartPostOperation() to do the real post operation"); - stat=PostOperation; + transfer_stat=TransferStat_PostOperation; //emit pushStat(stat,transferId); emit internalStartPostOperation(); return true; } else { - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] wait self close"); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] "+QString("wait self close: readIsReadyVariable: %1, readIsClosedVariable: %2, writeIsReadyVariable: %3, writeIsClosedVariable: %4") + .arg(readIsReadyVariable) + .arg(readIsClosedVariable) + .arg(writeIsReadyVariable) + .arg(writeIsClosedVariable) + ); return false; } } @@ -585,9 +682,9 @@ bool TransferThread::checkIfAllIsClosed() /// \todo the rights copy void TransferThread::postOperation() { - if(stat!=PostOperation) + if(transfer_stat!=TransferStat_PostOperation) { - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] need be in transfer, source: "+source+", destination: "+destination+", stat:"+QString::number(stat)); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] need be in transfer, source: "+source+", destination: "+destination+", stat:"+QString::number(transfer_stat)); return; } ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start"); @@ -633,7 +730,7 @@ void TransferThread::postOperation() else ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] try remove destination but not exists!"); } - stat=Idle; + transfer_stat=TransferStat_Idle; ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] emit postOperationStopped()"); emit postOperationStopped(); } @@ -673,6 +770,7 @@ void TransferThread::getWriteError() return; } ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start"); + fileContentError = true; writeError = true; writeIsReadyVariable = false; writeError_source_seeked = false; @@ -688,6 +786,7 @@ void TransferThread::getReadError() return; } ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start"); + fileContentError = true; readError = true; writeIsReadyVariable = false; readIsReadyVariable = false; @@ -698,16 +797,16 @@ void TransferThread::getReadError() void TransferThread::retryAfterError() { //opening error - if(stat==PreOperation) + if(transfer_stat==TransferStat_PreOperation) { - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] is not idle, source: "+source+", destination: "+destination+", stat: "+QString::number(stat)); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] is not idle, source: "+source+", destination: "+destination+", stat: "+QString::number(transfer_stat)); tryOpen(); return; } //data streaming error - if(stat!=PostOperation && stat!=Transfer) + if(transfer_stat!=TransferStat_PostOperation && transfer_stat!=TransferStat_Transfer && transfer_stat!=TransferStat_Checksum) { - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] is not idle, source: "+source+", destination: "+destination+", stat: "+QString::number(stat)); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] is not idle, source: "+source+", destination: "+destination+", stat: "+QString::number(transfer_stat)); return; } if(canBeMovedDirectlyVariable) @@ -716,6 +815,26 @@ void TransferThread::retryAfterError() tryMoveDirectly(); return; } + if(transfer_stat==TransferStat_Checksum) + { + if(writeError) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start and resume the write error"); + writeThread.reopen(); + } + else if(readError) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start and resume the read error"); + readThread.reopen(); + } + else //only checksum difference + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] retry all the transfer"); + canStartTransfer=true; + ifCanStartTransfer(); + } + return; + } if(writeError) { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start and resume the write error"); @@ -739,6 +858,11 @@ void TransferThread::writeThreadIsReopened() return; } writeError_destination_reopened=true; + if(transfer_stat==TransferStat_Checksum) + { + writeThread.startCheckSum(); + return; + } if(writeError_source_seeked && writeError_destination_reopened) resumeTransferAfterWriteError(); } @@ -796,6 +920,7 @@ void TransferThread::readIsStopped() } else ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] drop dual read stopped"); + readIsFinish(); } void TransferThread::writeIsStopped() @@ -809,6 +934,7 @@ void TransferThread::writeIsStopped() } else ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] double event dropped"); + writeIsFinish(); } void TransferThread::timeOfTheBlockCopyFinished() @@ -840,32 +966,100 @@ bool TransferThread::changeFileDateTime(const QString &source,const QString &des if(maxTime>=sourceInfo.lastModified()) return; */ - QFileInfo fileInfo(destination); - time_t ctime=fileInfo.created().toTime_t(); - time_t actime=fileInfo.lastRead().toTime_t(); - time_t modtime=fileInfo.lastModified().toTime_t(); - #ifdef Q_CC_GNU - //this function avalaible on unix and mingw - utimbuf butime; - butime.actime=actime; - butime.modtime=modtime; - //creation time not exists into unix world - Q_UNUSED(ctime) - return utime(source.toLatin1().data(),&butime)==0; + /** Why not do it with Qt? Because it not support setModificationTime(), and get the time with Qt, that's mean use local time where in C is UTC time */ + #ifdef Q_OS_UNIX + #ifdef Q_OS_LINUX + struct stat info; + stat(source.toLatin1().data(),&info); + time_t ctime=info.st_ctim.tv_sec; + time_t actime=info.st_atim.tv_sec; + time_t modtime=info.st_mtim.tv_sec; + //this function avalaible on unix and mingw + utimbuf butime; + butime.actime=actime; + butime.modtime=modtime; + //creation time not exists into unix world + Q_UNUSED(ctime) + return utime(destination.toLatin1().data(),&butime)==0; + #else //mainly for mac + QFileInfo fileInfo(destination); + time_t ctime=fileInfo.created().toTime_t(); + time_t actime=fileInfo.lastRead().toTime_t(); + time_t modtime=fileInfo.lastModified().toTime_t(); + //this function avalaible on unix and mingw + utimbuf butime; + butime.actime=actime; + butime.modtime=modtime; + //creation time not exists into unix world + Q_UNUSED(ctime) + return utime(destination.toLatin1().data(),&butime)==0; + #endif #else - return false; + #ifdef Q_OS_WIN32 + #ifdef ULTRACOPIER_PLUGIN_SET_TIME_UNIX_WAY + struct __stat64 info; + _stat64(source.toLatin1().data(),&info); + time_t ctime=info.st_ctime; + time_t actime=info.st_atime; + time_t modtime=info.st_mtime; + //this function avalaible on unix and mingw + utimbuf butime; + butime.actime=actime; + butime.modtime=modtime; + //creation time not exists into unix world + Q_UNUSED(ctime) + return utime(destination.toLatin1().data(),&butime)==0; + #else + wchar_t filePath[65535]; + source.toWCharArray(filePath); + HANDLE hFileSouce = CreateFile(filePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); + destination.toWCharArray(filePath); + HANDLE hFileDestination = CreateFile(filePath, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); + if(hFileSouce == INVALID_HANDLE_VALUE) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] open failed to read"); + return false; + } + if(hFileDestination == INVALID_HANDLE_VALUE) + { + CloseHandle(hFileSouce); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] open failed to write"); + return false; + } + FILETIME ftCreate, ftAccess, ftWrite; + if(!GetFileTime(hFileSouce, &ftCreate, &ftAccess, &ftWrite)) + { + CloseHandle(hFileSouce); + CloseHandle(hFileDestination); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] unable to get the file time"); + return false; + } + if(!SetFileTime(hFileDestination, &ftCreate, &ftAccess, &ftWrite)) + { + CloseHandle(hFileSouce); + CloseHandle(hFileDestination); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] unable to set the file time"); + return false; + } + CloseHandle(hFileSouce); + CloseHandle(hFileDestination); + return true; + #endif + #else + return false; + #endif #endif - return true; + return false; } //skip the copy void TransferThread::skip() { - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start with stat: "+QString::number(stat)); - switch(stat) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start with stat: "+QString::number(transfer_stat)); + switch(transfer_stat) { - case PreOperation: - case WaitForTheTransfer: + case TransferStat_PreOperation: + case TransferStat_WaitForTheTransfer: needSkip=true; ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] case WaitForTheTransfer or PreOperation, readIsReadyVariable: "+QString::number(readIsReadyVariable)+", readIsClosedVariable: "+QString::number(readIsClosedVariable)+", writeIsReadyVariable: "+QString::number(writeIsReadyVariable)+", writeIsClosedVariable: "+QString::number(writeIsClosedVariable)); //check if all is source and destination is closed @@ -877,7 +1071,7 @@ void TransferThread::skip() writeThread.stop(); } break; - case Transfer: + case TransferStat_Transfer: needSkip=true; ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] case Transfer, readIsReadyVariable: "+QString::number(readIsReadyVariable)+", readIsClosedVariable: "+QString::number(readIsClosedVariable)+", writeIsReadyVariable: "+QString::number(writeIsReadyVariable)+", writeIsClosedVariable: "+QString::number(writeIsClosedVariable)); if(!checkIfAllIsClosed()) @@ -888,7 +1082,18 @@ void TransferThread::skip() writeThread.stop(); } break; - case PostOperation: + case TransferStat_Checksum: + needSkip=true; + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] case Transfer, readIsReadyVariable: "+QString::number(readIsReadyVariable)+", readIsClosedVariable: "+QString::number(readIsClosedVariable)+", writeIsReadyVariable: "+QString::number(writeIsReadyVariable)+", writeIsClosedVariable: "+QString::number(writeIsClosedVariable)); + if(!checkIfAllIsClosed()) + { + if(readIsReadyVariable && !readIsClosedVariable) + readThread.stop(); + if(writeIsReadyVariable && !writeIsClosedVariable) + writeThread.stop(); + } + break; + case TransferStat_PostOperation: //do nothing because here is closing... ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] is already in post op"); break; @@ -901,11 +1106,13 @@ void TransferThread::skip() //return info about the copied size qint64 TransferThread::copiedSize() { - switch(stat) + switch(transfer_stat) { - case Transfer: - case PostOperation: + case TransferStat_Transfer: + case TransferStat_PostOperation: return readThread.getLastGoodPosition(); + case TransferStat_Checksum: + return transferSize; default: return 0; } @@ -917,6 +1124,11 @@ void TransferThread::putAtBottom() emit tryPutAtBottom(); } +void TransferThread::set_osBufferLimit(unsigned int osBufferLimit) +{ + this->osBufferLimit=osBufferLimit; +} + #ifdef ULTRACOPIER_PLUGIN_DEBUG //to set the id void TransferThread::setId(int id) @@ -942,6 +1154,9 @@ QChar TransferThread::readingLetter() case ReadThread::WaitWritePipe: return 'W'; break; + case ReadThread::Checksum: + return 'S'; + break; default: return '?'; } @@ -963,6 +1178,12 @@ QChar TransferThread::writingLetter() case WriteThread::Close: return 'C'; break; + case WriteThread::Read: + return 'R'; + break; + case WriteThread::Checksum: + return 'S'; + break; default: return '?'; } @@ -975,3 +1196,50 @@ void TransferThread::setMkpathTransfer(QSemaphore *mkpathTransfer) this->mkpathTransfer=mkpathTransfer; writeThread.setMkpathTransfer(mkpathTransfer); } + +void TransferThread::set_doChecksum(bool doChecksum) +{ + this->doChecksum=doChecksum; +} + +void TransferThread::set_checksumIgnoreIfImpossible(bool checksumIgnoreIfImpossible) +{ + this->checksumIgnoreIfImpossible=checksumIgnoreIfImpossible; +} + +void TransferThread::set_checksumOnlyOnError(bool checksumOnlyOnError) +{ + this->checksumOnlyOnError=checksumOnlyOnError; +} + +void TransferThread::set_osBuffer(bool osBuffer) +{ + this->osBuffer=osBuffer; +} + +void TransferThread::set_osBufferLimited(bool osBufferLimited) +{ + this->osBufferLimited=osBufferLimited; +} + +//not copied size, because that's count to the checksum, ... +quint64 TransferThread::realByteTransfered() +{ + switch(transfer_stat) + { + case TransferStat_Transfer: + case TransferStat_PostOperation: + case TransferStat_Checksum: + return readThread.getLastGoodPosition(); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] transferSize: "+QString::number(transferSize)); + return transferSize; + default: + return 0; + } +} + +void TransferThread::setRenamingRules(QString firstRenamingRule,QString otherRenamingRule) +{ + this->firstRenamingRule=firstRenamingRule; + this->otherRenamingRule=otherRenamingRule; +} diff --git a/plugins/CopyEngine/Ultracopier-0.3/TransferThread.h b/plugins/CopyEngine/Ultracopier-0.3/TransferThread.h index 37aa608..c32ccf3 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/TransferThread.h +++ b/plugins/CopyEngine/Ultracopier-0.3/TransferThread.h @@ -27,16 +27,6 @@ class TransferThread : public QThread public: explicit TransferThread(); ~TransferThread(); - /// \brief to have the transfer status - enum TransferStat - { - Idle=0, - PreOperation=1, - WaitForTheTransfer=2, - Transfer=3, - PostTransfer=4, - PostOperation=5 - }; /// \brief get transfer stat TransferStat getStat(); /// \brief get drive of an file or folder @@ -57,6 +47,15 @@ public: quint64 transferId; /// \brief to store the transfer size quint64 transferSize; + + void set_doChecksum(bool doChecksum); + void set_checksumIgnoreIfImpossible(bool checksumIgnoreIfImpossible); + void set_checksumOnlyOnError(bool checksumOnlyOnError); + void set_osBuffer(bool osBuffer); + void set_osBufferLimited(bool osBufferLimited); + + //not copied size, because that's count to the checksum, ... + quint64 realByteTransfered(); protected: void run(); signals: @@ -114,16 +113,23 @@ public slots: qint64 copiedSize(); /// \brief put the current file at bottom void putAtBottom(); + + void set_osBufferLimit(unsigned int osBufferLimit); + void setRenamingRules(QString firstRenamingRule,QString otherRenamingRule); private slots: void preOperation(); void readIsReady(); void writeIsReady(); void readIsFinish(); + void writeIsFinish(); void readIsClosed(); void writeIsClosed(); void postOperation(); void getWriteError(); void getReadError(); + void readChecksumFinish(const QByteArray&); + void writeChecksumFinish(const QByteArray&); + void compareChecksum(); //void syncAfterErrorAndReadFinish(); void readThreadIsSeekToZeroAndWait(); void writeThreadIsReopened(); @@ -142,7 +148,7 @@ private: MoveReturn_moved=1, MoveReturn_error=2 }; - TransferStat stat; + TransferStat transfer_stat; ReadThread readThread; WriteThread writeThread; QString source; @@ -160,6 +166,7 @@ private: bool readIsClosedVariable; bool writeIsClosedVariable; bool canBeMovedDirectlyVariable; + QByteArray sourceChecksum,destinationChecksum; volatile bool stopIt; volatile bool canStartTransfer; int blockSize; @@ -174,9 +181,18 @@ private: QDateTime maxTime; int id; QSemaphore *mkpathTransfer; + bool doChecksum,real_doChecksum; + bool checksumIgnoreIfImpossible; + bool checksumOnlyOnError; + bool osBuffer; + bool osBufferLimited; + unsigned int osBufferLimit; + QString firstRenamingRule; + QString otherRenamingRule; //error management bool writeError,writeError_source_seeked,writeError_destination_reopened; bool readError; + bool fileContentError; //different pre-operation bool isSame(); bool destinationExists(); diff --git a/plugins/CopyEngine/Ultracopier-0.3/Variable.h b/plugins/CopyEngine/Ultracopier-0.3/Variable.h index a04d7eb..f39b8a6 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/Variable.h +++ b/plugins/CopyEngine/Ultracopier-0.3/Variable.h @@ -27,6 +27,8 @@ #define ULTRACOPIER_PLUGIN_TIME_UPDATE_TRASNFER_LIST 40
#define ULTRACOPIER_PLUGIN_TIME_UPDATE_PROGRESSION 200
+//#define ULTRACOPIER_PLUGIN_SET_TIME_UNIX_WAY
+
#endif // VARIABLE_H
diff --git a/plugins/CopyEngine/Ultracopier-0.3/WriteThread.cpp b/plugins/CopyEngine/Ultracopier-0.3/WriteThread.cpp index fc46d1f..448e8dc 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/WriteThread.cpp +++ b/plugins/CopyEngine/Ultracopier-0.3/WriteThread.cpp @@ -5,7 +5,6 @@ WriteThread::WriteThread() { stopIt=false; - /// \test lot of level of priority isOpen.release(); start(); moveToThread(this); @@ -15,15 +14,22 @@ WriteThread::WriteThread() stat=Idle; #endif CurentCopiedSize=0; + buffer=false; + putInPause=false; + needRemoveTheFile=false; + blockSize=1024*1024; } WriteThread::~WriteThread() { - stop(); + stopIt=true; + needRemoveTheFile=true; freeBlock.release(); + // useless because stopIt will close all thread, but if thread not runing run it + //endIsDetected(); emit internalStartClose(); - disconnect(this); isOpen.acquire(); + disconnect(this); quit(); wait(); } @@ -36,6 +42,7 @@ void WriteThread::run() connect(this,SIGNAL(internalStartClose()), this,SLOT(internalClose()), Qt::QueuedConnection); connect(this,SIGNAL(internalStartEndOfFile()), this,SLOT(internalEndOfFile()), Qt::QueuedConnection); connect(this,SIGNAL(internalStartFlushAndSeekToZero()), this,SLOT(internalFlushAndSeekToZero()),Qt::QueuedConnection); + connect(this,SIGNAL(internalStartChecksum()), this,SLOT(checkSum()), Qt::QueuedConnection); exec(); } @@ -92,7 +99,10 @@ bool WriteThread::internalOpen() if(stopIt) return false; //try open it - if(file.open(QIODevice::ReadWrite)) + QIODevice::OpenMode flags=QIODevice::ReadWrite; + if(!buffer) + flags|=QIODevice::Unbuffered; + if(file.open(flags)) { if(stopIt) return false; @@ -107,6 +117,7 @@ bool WriteThread::internalOpen() stat=Idle; #endif isOpen.acquire(); + needRemoveTheFile=false; return true; } else @@ -123,7 +134,7 @@ bool WriteThread::internalOpen() } } -void WriteThread::open(const QString &name,const quint64 &startSize) +void WriteThread::open(const QString &name,const quint64 &startSize,const bool &buffer) { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] open destination: "+name); if(stopIt) @@ -131,6 +142,7 @@ void WriteThread::open(const QString &name,const quint64 &startSize) fakeMode=false; this->name=name; this->startSize=startSize; + this->buffer=buffer; endDetected=false; emit internalStartOpen(); } @@ -170,11 +182,15 @@ bool WriteThread::write(const QByteArray &data) void WriteThread::stop() { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] stop()"); + needRemoveTheFile=true; stopIt=true; + if(isOpen.available()>0) + return; freeBlock.release(); // useless because stopIt will close all thread, but if thread not runing run it endIsDetected(); - //emit internalStartClose(); + //for the stop for skip: void TransferThread::skip() + emit internalStartClose(); } void WriteThread::flushBuffer() @@ -262,11 +278,20 @@ void WriteThread::internalClose(bool emitSignal) #ifdef ULTRACOPIER_PLUGIN_DEBUG stat=Close; #endif - if(!fakeMode) + if(!fakeMode && file.isOpen()) { - if(startSize!=CurentCopiedSize) - file.resize(CurentCopiedSize); + if(!needRemoveTheFile) + { + if(startSize!=CurentCopiedSize) + file.resize(CurentCopiedSize); + } file.close(); + if(needRemoveTheFile) + { + if(file.remove()) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] unable to remove the destination file"); + } + needRemoveTheFile=false; } #ifdef ULTRACOPIER_PLUGIN_DEBUG stat=Idle; @@ -294,6 +319,7 @@ void WriteThread::reopen() { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start"); stopIt=true; + endDetected=false; emit internalStartReopen(); } @@ -324,12 +350,150 @@ void WriteThread::fakeWriteIsStopped() emit writeIsStopped(); } +/// do the checksum +void WriteThread::startCheckSum() +{ + emit internalStartChecksum(); +} + +/** \brief set block size +\param block the new block size in KB +\return Return true if succes */ +bool WriteThread::setBlockSize(const int blockSize) +{ + if(blockSize<1 || blockSize>16384) + { + this->blockSize=blockSize*1024; + //set the new max speed because the timer have changed + setMaxSpeed(maxSpeed); + return true; + } + else + return false; +} + +/*! \brief Set the max speed +\param tempMaxSpeed Set the max speed in KB/s, 0 for no limit */ +int WriteThread::setMaxSpeed(const int maxSpeed) +{ + if(this->maxSpeed==0 && maxSpeed==0 && waitNewClockForSpeed.available()>0) + waitNewClockForSpeed.tryAcquire(waitNewClockForSpeed.available()); + this->maxSpeed=maxSpeed; + if(this->maxSpeed>0) + { + int NewInterval,newMultiForBigSpeed=0; + do + { + newMultiForBigSpeed++; + NewInterval=(blockSize*newMultiForBigSpeed)/(this->maxSpeed); + } + while (NewInterval<ULTRACOPIER_PLUGIN_MINTIMERINTERVAL); + if(NewInterval>ULTRACOPIER_PLUGIN_MAXTIMERINTERVAL) + { + NewInterval=ULTRACOPIER_PLUGIN_MAXTIMERINTERVAL; + newMultiForBigSpeed=1; + blockSize=this->maxSpeed*NewInterval; + } + MultiForBigSpeed=newMultiForBigSpeed; + return NewInterval; + } + else + { + waitNewClockForSpeed.release(); + return 0; + } +} + +/// \brief For give timer every X ms +void WriteThread::timeOfTheBlockCopyFinished() +{ + if(waitNewClockForSpeed.available()<ULTRACOPIER_PLUGIN_NUMSEMSPEEDMANAGEMENT) + waitNewClockForSpeed.release(); + //why not just use waitNewClockForSpeed.release() ? +} + void WriteThread::flushAndSeekToZero() { stopIt=true; emit internalStartFlushAndSeekToZero(); } + +void WriteThread::checkSum() +{ + //QByteArray blockArray; + QCryptographicHash hash(QCryptographicHash::Sha1); + endDetected=false; + lastGoodPosition=0; + file.seek(0); + int sizeReaden=0; + do + { + //read one block + #ifdef ULTRACOPIER_PLUGIN_DEBUG + stat=Read; + #endif + blockArray=file.read(blockSize); + #ifdef ULTRACOPIER_PLUGIN_DEBUG + stat=Idle; + #endif + + if(file.error()!=QFile::NoError) + { + errorString_internal=tr("Unable to read the source file: ")+file.errorString()+" ("+QString::number(file.error())+")"; + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+QString("file.error()!=QFile::NoError: %1, error: %2").arg(QString::number(file.error())).arg(errorString_internal)); + emit error(); + return; + } + sizeReaden=blockArray.size(); + if(sizeReaden>0) + { + #ifdef ULTRACOPIER_PLUGIN_DEBUG + stat=Checksum; + #endif + hash.addData(blockArray); + #ifdef ULTRACOPIER_PLUGIN_DEBUG + stat=Idle; + #endif + + if(stopIt) + break; + + lastGoodPosition+=blockArray.size(); + + //wait for limitation speed if stop not query + if(maxSpeed>0) + { + numberOfBlockCopied++; + if(numberOfBlockCopied>=MultiForBigSpeed) + { + numberOfBlockCopied=0; + waitNewClockForSpeed.acquire(); + if(stopIt) + break; + } + } + } + } + while(sizeReaden>0 && !stopIt); + if(lastGoodPosition>file.size()) + { + errorString_internal=tr("File truncated during the read, possible data change"); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+QString("Source truncated during the read: %1 (%2)").arg(file.errorString()).arg(QString::number(file.error()))); + emit error(); + return; + } + if(stopIt) + { +/* if(putInPause) + emit isInPause();*/ + stopIt=false; + return; + } + emit checksumFinish(hash.result()); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] stop the read"); +} + void WriteThread::internalFlushAndSeekToZero() { flushBuffer(); diff --git a/plugins/CopyEngine/Ultracopier-0.3/WriteThread.h b/plugins/CopyEngine/Ultracopier-0.3/WriteThread.h index 7a9b4b7..3683c27 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/WriteThread.h +++ b/plugins/CopyEngine/Ultracopier-0.3/WriteThread.h @@ -12,6 +12,7 @@ #include <QString> #include <QMutex> #include <QSemaphore> +#include <QCryptographicHash> #include "Environment.h" #include "StructEnumDefinition_CopyEngine.h" @@ -30,7 +31,7 @@ protected: void run(); public: /// \brief open the destination to open it - void open(const QString &name,const quint64 &startSize); + void open(const QString &name,const quint64 &startSize,const bool &buffer); /// \brief to return the error string QString errorString(); /// \brief to stop all @@ -46,7 +47,9 @@ public: Idle=0, InodeOperation=1, Write=2, - Close=3 + Close=3, + Read=5, + Checksum=6 }; WriteStat stat; #endif @@ -56,6 +59,14 @@ public: void fakeWriteIsStarted(); /// \brief do the fake writeIsStopped void fakeWriteIsStopped(); + /// do the checksum + void startCheckSum(); + /// \brief set the current max speed in KB/s + int setMaxSpeed(int maxSpeed); + /// \brief For give timer every X ms + void timeOfTheBlockCopyFinished(); + /// \brief set block size in KB + bool setBlockSize(const int blockSize); public slots: /// \brief start the operation void postOperation(); @@ -67,6 +78,8 @@ public slots: void reopen(); /// \brief flush and seek to zero void flushAndSeekToZero(); + /// do the checksum + void checkSum(); signals: void error(); void opened(); @@ -75,8 +88,10 @@ signals: void writeIsStopped(); void flushedAndSeekedToZero(); void closed(); + void checksumFinish(const QByteArray&); //internal signals void internalStartOpen(); + void internalStartChecksum(); void internalStartReopen(); void internalStartWrite(); void internalStartClose(); @@ -89,9 +104,16 @@ private: QString errorString_internal; AvancedQFile file; volatile bool stopIt; + volatile int blockSize; + volatile int maxSpeed; ///< The max speed in KB/s, 0 for no limit QMutex accessList; ///< For use the list + QSemaphore waitNewClockForSpeed; + volatile int numberOfBlockCopied; ///< Multiple for count the number of block copied + volatile int multiplicatorForBigSpeed; ///< Multiple for count the number of block needed + volatile int MultiForBigSpeed; QSemaphore freeBlock; QSemaphore isOpen; + volatile bool putInPause; QList<QByteArray> theBlockList; ///< Store the block list quint64 CurentCopiedSize; QByteArray blockArray; ///< temp data for block writing, the data @@ -102,6 +124,8 @@ private: quint64 startSize; QSemaphore *mkpathTransfer; bool fakeMode; + bool buffer; + bool needRemoveTheFile; private slots: bool internalOpen(); void internalWrite(); diff --git a/plugins/CopyEngine/Ultracopier-0.3/copyEngine-collision-and-error.cpp b/plugins/CopyEngine/Ultracopier-0.3/copyEngine-collision-and-error.cpp index 81a75bd..7ec07c2 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/copyEngine-collision-and-error.cpp +++ b/plugins/CopyEngine/Ultracopier-0.3/copyEngine-collision-and-error.cpp @@ -48,7 +48,7 @@ void copyEngine::fileAlreadyExists(QFileInfo source,QFileInfo destination,bool i } dialogIsOpen=true; ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"show dialog"); - fileIsSameDialog dialog(interface,source); + fileIsSameDialog dialog(interface,source,firstRenamingRule,otherRenamingRule); emit isInPause(true); dialog.exec();/// \bug crash when external close FileExistsAction newAction=dialog.getAction(); @@ -117,7 +117,7 @@ void copyEngine::fileAlreadyExists(QFileInfo source,QFileInfo destination,bool i } dialogIsOpen=true; ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"show dialog"); - fileExistsDialog dialog(interface,source,destination); + fileExistsDialog dialog(interface,source,destination,firstRenamingRule,otherRenamingRule); emit isInPause(true); dialog.exec();/// \bug crash when external close FileExistsAction newAction=dialog.getAction(); @@ -297,7 +297,7 @@ void copyEngine::folderAlreadyExists(QFileInfo source,QFileInfo destination,bool } dialogIsOpen=true; ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"show dialog"); - folderExistsDialog dialog(interface,source,isSame,destination); + folderExistsDialog dialog(interface,source,isSame,destination,firstRenamingRule,otherRenamingRule); dialog.exec();/// \bug crash when external close FolderExistsAction newAction=dialog.getAction(); ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"close dialog: "+QString::number(newAction)); diff --git a/plugins/CopyEngine/Ultracopier-0.3/copyEngine.cpp b/plugins/CopyEngine/Ultracopier-0.3/copyEngine.cpp index 362d332..950cfd3 100644..100755 --- a/plugins/CopyEngine/Ultracopier-0.3/copyEngine.cpp +++ b/plugins/CopyEngine/Ultracopier-0.3/copyEngine.cpp @@ -12,71 +12,25 @@ #include "folderExistsDialog.h" #include "../../../interface/PluginInterface_CopyEngine.h" -/// \todo do pushed or instant mount point (setDrive, ...) -/// \todo semaphore to prevent dual mkpath -/// \todo repair the mkpath, to use mkpath class before file transfer to have the folder -/** \todo when overwrite with large inode operation, it not start specificly the first in the list - When that's is finish, send start file at real transfer start, not inode operation start **/ - -namespace Ui { - class options; -} - -copyEngine::copyEngine(FacilityInterface * facilityInterface) : +copyEngine::copyEngine(FacilityInterface * facilityEngine) : ui(new Ui::options()) { - listThread=new ListThread(facilityInterface); + listThread=new ListThread(facilityEngine); + this->facilityEngine=facilityEngine; + filters=NULL; + renamingRules=NULL; qRegisterMetaType<TransferThread *>("TransferThread *"); qRegisterMetaType<scanFileOrFolder *>("scanFileOrFolder *"); qRegisterMetaType<EngineActionInProgress>("EngineActionInProgress"); qRegisterMetaType<DebugLevel>("DebugLevel"); qRegisterMetaType<FileExistsAction>("FileExistsAction"); qRegisterMetaType<FolderExistsAction>("FolderExistsAction"); + qRegisterMetaType<QList<Filters_rules> >("QList<Filters_rules>"); + qRegisterMetaType<QList<int> >("QList<int>"); + qRegisterMetaType<CopyMode>("CopyMode"); + qRegisterMetaType<QList<returnActionOnCopyList> >("QList<returnActionOnCopyList>"); + qRegisterMetaType<QList<ProgressionItem> >("QList<ProgressionItem>"); - #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW - debugDialogWindow.show(); - #endif - connect(listThread,SIGNAL(actionInProgess(EngineActionInProgress)), this,SIGNAL(actionInProgess(EngineActionInProgress)), Qt::QueuedConnection); - connect(listThread,SIGNAL(newFolderListing(QString)), this,SIGNAL(newFolderListing(QString)), Qt::QueuedConnection); - connect(listThread,SIGNAL(newCollisionAction(QString)), this,SIGNAL(newCollisionAction(QString)), Qt::QueuedConnection); - connect(listThread,SIGNAL(newErrorAction(QString)), this,SIGNAL(newErrorAction(QString)), Qt::QueuedConnection); - connect(listThread,SIGNAL(isInPause(bool)), this,SIGNAL(isInPause(bool)), Qt::QueuedConnection); - connect(listThread,SIGNAL(cancelAll()), this,SIGNAL(cancelAll()), Qt::QueuedConnection); - connect(listThread,SIGNAL(error(QString,quint64,QDateTime,QString)), this,SIGNAL(error(QString,quint64,QDateTime,QString)), Qt::QueuedConnection); - connect(listThread,SIGNAL(rmPath(QString)), this,SIGNAL(rmPath(QString)), Qt::QueuedConnection); - connect(listThread,SIGNAL(mkPath(QString)), this,SIGNAL(mkPath(QString)), Qt::QueuedConnection); - connect(listThread,SIGNAL(newActionOnList(QList<returnActionOnCopyList>)), this,SIGNAL(newActionOnList(QList<returnActionOnCopyList>)), Qt::QueuedConnection); - connect(listThread,SIGNAL(pushFileProgression(QList<ProgressionItem>)), this,SIGNAL(pushFileProgression(QList<ProgressionItem>)), Qt::QueuedConnection); - connect(listThread,SIGNAL(pushGeneralProgression(quint64,quint64)), this,SIGNAL(pushGeneralProgression(quint64,quint64)), Qt::QueuedConnection); - connect(listThread,SIGNAL(syncReady()), this,SIGNAL(syncReady()), Qt::QueuedConnection); - #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW - connect(listThread,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)), this,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)), Qt::QueuedConnection); - #endif - - connect(listThread,SIGNAL(send_fileAlreadyExists(QFileInfo,QFileInfo,bool,TransferThread *)), this,SLOT(fileAlreadyExists(QFileInfo,QFileInfo,bool,TransferThread *)), Qt::QueuedConnection); - connect(listThread,SIGNAL(send_errorOnFile(QFileInfo,QString,TransferThread *)), this,SLOT(errorOnFile(QFileInfo,QString,TransferThread *)), Qt::QueuedConnection); - connect(listThread,SIGNAL(send_folderAlreadyExists(QFileInfo,QFileInfo,bool,scanFileOrFolder *)), this,SLOT(folderAlreadyExists(QFileInfo,QFileInfo,bool,scanFileOrFolder *)), Qt::QueuedConnection); - connect(listThread,SIGNAL(send_errorOnFolder(QFileInfo,QString,scanFileOrFolder *)), this,SLOT(errorOnFolder(QFileInfo,QString,scanFileOrFolder *)), Qt::QueuedConnection); - connect(listThread,SIGNAL(updateTheDebugInfo(QStringList,QStringList,int)), this,SLOT(updateTheDebugInfo(QStringList,QStringList,int)), Qt::QueuedConnection); - connect(listThread,SIGNAL(errorTransferList(QString)), this,SLOT(errorTransferList(QString)), Qt::QueuedConnection); - connect(listThread,SIGNAL(warningTransferList(QString)), this,SLOT(warningTransferList(QString)), Qt::QueuedConnection); - connect(listThread,SIGNAL(mkPathErrorOnFolder(QFileInfo,QString)), this,SLOT(mkPathErrorOnFolder(QFileInfo,QString)), Qt::QueuedConnection); - connect(listThread,SIGNAL(rmPathErrorOnFolder(QFileInfo,QString)), this,SLOT(rmPathErrorOnFolder(QFileInfo,QString)), Qt::QueuedConnection); - - connect(this,SIGNAL(signal_pause()), listThread,SLOT(pause()), Qt::QueuedConnection); - connect(this,SIGNAL(signal_resume()), listThread,SLOT(resume()), Qt::QueuedConnection); - connect(this,SIGNAL(signal_skip(quint64)), listThread,SLOT(skip(quint64)), Qt::QueuedConnection); - connect(this,SIGNAL(signal_setCollisionAction(FileExistsAction)), listThread,SLOT(setAlwaysFileExistsAction(FileExistsAction)), Qt::QueuedConnection); - connect(this,SIGNAL(signal_setFolderColision(FolderExistsAction)), listThread,SLOT(setFolderColision(FolderExistsAction)), Qt::QueuedConnection); - connect(this,SIGNAL(signal_removeItems(QList<int>)), listThread,SLOT(removeItems(QList<int>)), Qt::QueuedConnection); - connect(this,SIGNAL(signal_moveItemsOnTop(QList<int>)), listThread,SLOT(moveItemsOnTop(QList<int>)), Qt::QueuedConnection); - connect(this,SIGNAL(signal_moveItemsUp(QList<int>)), listThread,SLOT(moveItemsUp(QList<int>)), Qt::QueuedConnection); - connect(this,SIGNAL(signal_moveItemsDown(QList<int>)), listThread,SLOT(moveItemsDown(QList<int>)), Qt::QueuedConnection); - connect(this,SIGNAL(signal_moveItemsOnBottom(QList<int>)), listThread,SLOT(moveItemsOnBottom(QList<int>)), Qt::QueuedConnection); - connect(this,SIGNAL(signal_exportTransferList(QString)), listThread,SLOT(exportTransferList(QString)), Qt::QueuedConnection); - connect(this,SIGNAL(signal_importTransferList(QString)), listThread,SLOT(importTransferList(QString)), Qt::QueuedConnection); - - connect(this,SIGNAL(queryOneNewDialog()),SLOT(showOneNewDialog()),Qt::QueuedConnection); interface = NULL; tempWidget = NULL; uiIsInstalled = false; @@ -87,15 +41,131 @@ copyEngine::copyEngine(FacilityInterface * facilityInterface) : checkDestinationFolderExists = false; stopIt = false; size_for_speed = 0; + forcedMode = false; + + //implement the SingleShot in this class + //timerActionDone.setSingleShot(true); + timerActionDone.setInterval(ULTRACOPIER_PLUGIN_TIME_UPDATE_TRASNFER_LIST); + //timerProgression.setSingleShot(true); + timerProgression.setInterval(ULTRACOPIER_PLUGIN_TIME_UPDATE_PROGRESSION); + } copyEngine::~copyEngine() { + /*if(filters!=NULL) + delete filters; + if(renamingRules!=NULL) + delete renamingRules; + destroyed by the widget parent, here the interface + */ stopIt=true; delete listThread; delete ui; } +void copyEngine::connectTheSignalsSlots() +{ + #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW + debugDialogWindow.show(); + #endif + if(!connect(listThread,SIGNAL(actionInProgess(EngineActionInProgress)), this,SIGNAL(actionInProgess(EngineActionInProgress)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect actionInProgess()"); + if(!connect(listThread,SIGNAL(actionInProgess(EngineActionInProgress)), this,SLOT(newActionInProgess(EngineActionInProgress)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect actionInProgess() to slot"); + if(!connect(listThread,SIGNAL(newFolderListing(QString)), this,SIGNAL(newFolderListing(QString)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect newFolderListing()"); + if(!connect(listThread,SIGNAL(newCollisionAction(QString)), this,SIGNAL(newCollisionAction(QString)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect newCollisionAction()"); + if(!connect(listThread,SIGNAL(newErrorAction(QString)), this,SIGNAL(newErrorAction(QString)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect newErrorAction()"); + if(!connect(listThread,SIGNAL(isInPause(bool)), this,SIGNAL(isInPause(bool)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect isInPause()"); + if(!connect(listThread,SIGNAL(error(QString,quint64,QDateTime,QString)), this,SIGNAL(error(QString,quint64,QDateTime,QString)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect error()"); + if(!connect(listThread,SIGNAL(rmPath(QString)), this,SIGNAL(rmPath(QString)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect rmPath()"); + if(!connect(listThread,SIGNAL(mkPath(QString)), this,SIGNAL(mkPath(QString)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect mkPath()"); + if(!connect(listThread,SIGNAL(newActionOnList(QList<returnActionOnCopyList>)), this,SIGNAL(newActionOnList(QList<returnActionOnCopyList>)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect newActionOnList()"); + if(!connect(listThread,SIGNAL(pushFileProgression(QList<ProgressionItem>)), this,SIGNAL(pushFileProgression(QList<ProgressionItem>)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect pushFileProgression()"); + if(!connect(listThread,SIGNAL(pushGeneralProgression(quint64,quint64)), this,SIGNAL(pushGeneralProgression(quint64,quint64)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect pushGeneralProgression()"); + if(!connect(listThread,SIGNAL(syncReady()), this,SIGNAL(syncReady()), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect syncReady()"); + if(!connect(listThread,SIGNAL(canBeDeleted()), this,SIGNAL(canBeDeleted()), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect canBeDeleted()"); + #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW + if(!connect(listThread,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)), this,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect debugInformation()"); + #endif + + if(!connect(listThread,SIGNAL(send_fileAlreadyExists(QFileInfo,QFileInfo,bool,TransferThread *)), this,SLOT(fileAlreadyExists(QFileInfo,QFileInfo,bool,TransferThread *)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect send_fileAlreadyExists()"); + if(!connect(listThread,SIGNAL(send_errorOnFile(QFileInfo,QString,TransferThread *)), this,SLOT(errorOnFile(QFileInfo,QString,TransferThread *)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect send_errorOnFile()"); + if(!connect(listThread,SIGNAL(send_folderAlreadyExists(QFileInfo,QFileInfo,bool,scanFileOrFolder *)), this,SLOT(folderAlreadyExists(QFileInfo,QFileInfo,bool,scanFileOrFolder *)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect send_folderAlreadyExists()"); + if(!connect(listThread,SIGNAL(send_errorOnFolder(QFileInfo,QString,scanFileOrFolder *)), this,SLOT(errorOnFolder(QFileInfo,QString,scanFileOrFolder *)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect send_errorOnFolder()"); + if(!connect(listThread,SIGNAL(updateTheDebugInfo(QStringList,QStringList,int)), this,SLOT(updateTheDebugInfo(QStringList,QStringList,int)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect updateTheDebugInfo()"); + if(!connect(listThread,SIGNAL(errorTransferList(QString)), this,SLOT(errorTransferList(QString)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect errorTransferList()"); + if(!connect(listThread,SIGNAL(warningTransferList(QString)), this,SLOT(warningTransferList(QString)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect warningTransferList()"); + if(!connect(listThread,SIGNAL(mkPathErrorOnFolder(QFileInfo,QString)), this,SLOT(mkPathErrorOnFolder(QFileInfo,QString)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect mkPathErrorOnFolder()"); + if(!connect(listThread,SIGNAL(rmPathErrorOnFolder(QFileInfo,QString)), this,SLOT(rmPathErrorOnFolder(QFileInfo,QString)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect rmPathErrorOnFolder()"); + if(!connect(listThread,SIGNAL(send_realBytesTransfered(quint64)), this,SLOT(get_realBytesTransfered(quint64)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect send_realBytesTransfered()"); + + if(!connect(this,SIGNAL(tryCancel()), listThread,SIGNAL(tryCancel()), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect tryCancel()"); + if(!connect(this,SIGNAL(signal_pause()), listThread,SLOT(pause()), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_pause()"); + if(!connect(this,SIGNAL(signal_resume()), listThread,SLOT(resume()), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_resume()"); + if(!connect(this,SIGNAL(signal_skip(quint64)), listThread,SLOT(skip(quint64)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_skip()"); + if(!connect(this,SIGNAL(signal_setCollisionAction(FileExistsAction)), listThread,SLOT(setAlwaysFileExistsAction(FileExistsAction)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_setCollisionAction()"); + if(!connect(this,SIGNAL(signal_setFolderColision(FolderExistsAction)), listThread,SLOT(setFolderColision(FolderExistsAction)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_setFolderColision()"); + if(!connect(this,SIGNAL(signal_removeItems(QList<int>)), listThread,SLOT(removeItems(QList<int>)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_removeItems()"); + if(!connect(this,SIGNAL(signal_moveItemsOnTop(QList<int>)), listThread,SLOT(moveItemsOnTop(QList<int>)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_moveItemsOnTop()"); + if(!connect(this,SIGNAL(signal_moveItemsUp(QList<int>)), listThread,SLOT(moveItemsUp(QList<int>)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_moveItemsUp()"); + if(!connect(this,SIGNAL(signal_moveItemsDown(QList<int>)), listThread,SLOT(moveItemsDown(QList<int>)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_moveItemsDown()"); + if(!connect(this,SIGNAL(signal_moveItemsOnBottom(QList<int>)), listThread,SLOT(moveItemsOnBottom(QList<int>)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_moveItemsOnBottom()"); + if(!connect(this,SIGNAL(signal_exportTransferList(QString)), listThread,SLOT(exportTransferList(QString)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_exportTransferList()"); + if(!connect(this,SIGNAL(signal_importTransferList(QString)), listThread,SLOT(importTransferList(QString)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_importTransferList()"); + if(!connect(this,SIGNAL(signal_forceMode(CopyMode)), listThread,SLOT(forceMode(CopyMode)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_forceMode()"); + if(!connect(this,SIGNAL(send_osBufferLimit(uint)), listThread,SLOT(set_osBufferLimit(uint)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect send_osBufferLimit()"); + if(!connect(this,SIGNAL(send_setFilters(QList<Filters_rules>,QList<Filters_rules>)),listThread,SLOT(set_setFilters(QList<Filters_rules>,QList<Filters_rules>)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect send_setFilters()"); + if(!connect(this,SIGNAL(send_sendNewRenamingRules(QString,QString)),listThread,SLOT(set_sendNewRenamingRules(QString,QString)), Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect send_sendNewRenamingRules()"); + if(!connect(&timerActionDone,SIGNAL(timeout()), listThread,SLOT(sendActionDone()))) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect timerActionDone"); + if(!connect(&timerProgression,SIGNAL(timeout()), listThread,SLOT(sendProgression()))) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect timerProgression"); + + if(!connect(this,SIGNAL(queryOneNewDialog()),SLOT(showOneNewDialog()),Qt::QueuedConnection)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect queryOneNewDialog()"); +} + #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW void copyEngine::updateTheDebugInfo(QStringList newList,QStringList newList2,int numberOfInodeOperation) { @@ -124,6 +194,12 @@ bool copyEngine::getOptionsEngine(QWidget * tempWidget) setBlockSize(blockSize); setAutoStart(autoStart); setCheckDestinationFolderExists(checkDestinationFolderExists); + set_doChecksum(doChecksum); + set_checksumIgnoreIfImpossible(checksumIgnoreIfImpossible); + set_checksumOnlyOnError(checksumOnlyOnError); + set_osBuffer(osBuffer); + set_osBufferLimited(osBufferLimited); + set_osBufferLimit(osBufferLimit); return true; } @@ -131,6 +207,36 @@ bool copyEngine::getOptionsEngine(QWidget * tempWidget) void copyEngine::setInterfacePointer(QWidget * interface) { this->interface=interface; + filters=new Filters(tempWidget); + renamingRules=new RenamingRules(tempWidget); + + if(uiIsInstalled) + { + connect(ui->doRightTransfer, SIGNAL(toggled(bool)), this,SLOT(setRightTransfer(bool))); + connect(ui->keepDate, SIGNAL(toggled(bool)), this,SLOT(setKeepDate(bool))); + connect(ui->blockSize, SIGNAL(valueChanged(int)), this,SLOT(setBlockSize(int))); + connect(ui->autoStart, SIGNAL(toggled(bool)), this,SLOT(setAutoStart(bool))); + connect(ui->doChecksum, SIGNAL(toggled(bool)), this,SLOT(doChecksum_toggled(bool))); + connect(ui->checksumIgnoreIfImpossible, SIGNAL(toggled(bool)), this,SLOT(checksumIgnoreIfImpossible_toggled(bool))); + connect(ui->checksumOnlyOnError, SIGNAL(toggled(bool)), this,SLOT(checksumOnlyOnError_toggled(bool))); + connect(ui->osBuffer, SIGNAL(toggled(bool)), this,SLOT(osBuffer_toggled(bool))); + connect(ui->osBufferLimited, SIGNAL(toggled(bool)), this,SLOT(osBufferLimited_toggled(bool))); + connect(ui->osBufferLimit, SIGNAL(editingFinished()), this,SLOT(osBufferLimit_editingFinished())); + + connect(filters,SIGNAL(sendNewFilters(QStringList,QStringList,QStringList,QStringList)),this,SLOT(sendNewFilters())); + connect(ui->filters,SIGNAL(clicked()),this,SLOT(showFilterDialog())); + + if(!connect(renamingRules,SIGNAL(sendNewRenamingRules(QString,QString)),this,SLOT(sendNewRenamingRules(QString,QString)))) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect sendNewRenamingRules()"); + if(!connect(ui->renamingRules,SIGNAL(clicked()),this,SLOT(showRenamingRules()))) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect renamingRules.clicked()"); + } + + filters->setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions); + set_setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions); + + renamingRules->setRenamingRules(firstRenamingRule,otherRenamingRule); + emit send_sendNewRenamingRules(firstRenamingRule,otherRenamingRule); } bool copyEngine::haveSameSource(const QStringList &sources) @@ -145,8 +251,14 @@ bool copyEngine::haveSameDestination(const QString &destination) bool copyEngine::newCopy(const QStringList &sources) { + if(forcedMode && mode!=Copy) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"The engine is forced to move, you can't copy with it"); + QMessageBox::critical(NULL,facilityEngine->translateText("Internal error"),tr("The engine is forced to move, you can't copy with it")); + return false; + } ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start"); - QString destination = QFileDialog::getExistingDirectory(interface,tr("Select destination directory"),"",QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); + QString destination = QFileDialog::getExistingDirectory(interface,facilityEngine->translateText("Select destination directory"),"",QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); if(destination.isEmpty() || destination.isNull() || destination=="") { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Information,"Canceled by the user"); @@ -157,13 +269,25 @@ bool copyEngine::newCopy(const QStringList &sources) bool copyEngine::newCopy(const QStringList &sources,const QString &destination) { + if(forcedMode && mode!=Copy) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"The engine is forced to move, you can't copy with it"); + QMessageBox::critical(NULL,facilityEngine->translateText("Internal error"),tr("The engine is forced to move, you can't copy with it")); + return false; + } return listThread->newCopy(sources,destination); } bool copyEngine::newMove(const QStringList &sources) { + if(forcedMode && mode!=Move) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"The engine is forced to copy, you can't move with it"); + QMessageBox::critical(NULL,facilityEngine->translateText("Internal error"),tr("The engine is forced to copy, you can't move with it")); + return false; + } ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start"); - QString destination = QFileDialog::getExistingDirectory(interface,tr("Select destination directory"),"",QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); + QString destination = QFileDialog::getExistingDirectory(interface,facilityEngine->translateText("Select destination directory"),"",QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); if(destination.isEmpty() || destination.isNull() || destination=="") { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Information,"Canceled by the user"); @@ -174,9 +298,21 @@ bool copyEngine::newMove(const QStringList &sources) bool copyEngine::newMove(const QStringList &sources,const QString &destination) { + if(forcedMode && mode!=Move) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"The engine is forced to copy, you can't move with it"); + QMessageBox::critical(NULL,facilityEngine->translateText("Internal error"),tr("The engine is forced to copy, you can't move with it")); + return false; + } return listThread->newMove(sources,destination); } +void copyEngine::newTransferList(const QString &file) +{ + emit signal_importTransferList(file); +} + +//because direct access to list thread into the main thread can't be do quint64 copyEngine::realByteTransfered() { return size_for_speed; @@ -193,12 +329,12 @@ QList<QPair<QString,QString> > copyEngine::getCollisionAction() { QPair<QString,QString> tempItem; QList<QPair<QString,QString> > list; - tempItem.first=tr("Ask");tempItem.second="ask";list << tempItem; - tempItem.first=tr("Skip");tempItem.second="skip";list << tempItem; - tempItem.first=tr("Overwrite");tempItem.second="overwrite";list << tempItem; - tempItem.first=tr("Overwrite if newer");tempItem.second="overwriteIfNewer";list << tempItem; - tempItem.first=tr("Overwrite if the last modification dates are different");tempItem.second="overwriteIfNotSameModificationDate";list << tempItem; - tempItem.first=tr("Rename");tempItem.second="rename";list << tempItem; + tempItem.first=facilityEngine->translateText("Ask");tempItem.second="ask";list << tempItem; + tempItem.first=facilityEngine->translateText("Skip");tempItem.second="skip";list << tempItem; + tempItem.first=facilityEngine->translateText("Overwrite");tempItem.second="overwrite";list << tempItem; + tempItem.first=facilityEngine->translateText("Overwrite if newer");tempItem.second="overwriteIfNewer";list << tempItem; + tempItem.first=facilityEngine->translateText("Overwrite if the last modification dates are different");tempItem.second="overwriteIfNotSameModificationDate";list << tempItem; + tempItem.first=facilityEngine->translateText("Rename");tempItem.second="rename";list << tempItem; return list; } @@ -206,9 +342,9 @@ QList<QPair<QString,QString> > copyEngine::getErrorAction() { QPair<QString,QString> tempItem; QList<QPair<QString,QString> > list; - tempItem.first=tr("Ask");tempItem.second="ask";list << tempItem; - tempItem.first=tr("Skip");tempItem.second="skip";list << tempItem; - tempItem.first=tr("Put to end of the list");tempItem.second="putToEndOfTheList";list << tempItem; + tempItem.first=facilityEngine->translateText("Ask");tempItem.second="ask";list << tempItem; + tempItem.first=facilityEngine->translateText("Skip");tempItem.second="skip";list << tempItem; + tempItem.first=facilityEngine->translateText("Put to end of the list");tempItem.second="putToEndOfTheList";list << tempItem; return list; } @@ -224,9 +360,75 @@ void copyEngine::syncTransferList() listThread->syncTransferList(); } +void copyEngine::set_doChecksum(bool doChecksum) +{ + listThread->set_doChecksum(doChecksum); + if(uiIsInstalled) + ui->doChecksum->setChecked(doChecksum); + this->doChecksum=doChecksum; +} + +void copyEngine::set_checksumIgnoreIfImpossible(bool checksumIgnoreIfImpossible) +{ + listThread->set_checksumIgnoreIfImpossible(checksumIgnoreIfImpossible); + if(uiIsInstalled) + ui->checksumIgnoreIfImpossible->setChecked(checksumIgnoreIfImpossible); + this->checksumIgnoreIfImpossible=checksumIgnoreIfImpossible; +} + +void copyEngine::set_checksumOnlyOnError(bool checksumOnlyOnError) +{ + listThread->set_checksumOnlyOnError(checksumOnlyOnError); + if(uiIsInstalled) + ui->checksumOnlyOnError->setChecked(checksumOnlyOnError); + this->checksumOnlyOnError=checksumOnlyOnError; +} + +void copyEngine::set_osBuffer(bool osBuffer) +{ + listThread->set_osBuffer(osBuffer); + if(uiIsInstalled) + ui->osBuffer->setChecked(osBuffer); + this->osBuffer=osBuffer; +} + +void copyEngine::set_osBufferLimited(bool osBufferLimited) +{ + listThread->set_osBufferLimited(osBufferLimited); + if(uiIsInstalled) + ui->osBufferLimited->setChecked(osBufferLimited); + this->osBufferLimited=osBufferLimited; +} + +void copyEngine::set_osBufferLimit(unsigned int osBufferLimit) +{ + emit send_osBufferLimit(osBufferLimit); + if(uiIsInstalled) + ui->osBufferLimit->setValue(osBufferLimit); + this->osBufferLimit=osBufferLimit; +} + +void copyEngine::set_setFilters(QStringList includeStrings,QStringList includeOptions,QStringList excludeStrings,QStringList excludeOptions) +{ + if(filters!=NULL) + { + filters->setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions); + emit send_setFilters(filters->getInclude(),filters->getExclude()); + } + this->includeStrings=includeStrings; + this->includeOptions=includeOptions; + this->excludeStrings=excludeStrings; + this->excludeOptions=excludeOptions; +} + +void copyEngine::setRenamingRules(QString firstRenamingRule,QString otherRenamingRule) +{ + sendNewRenamingRules(firstRenamingRule,otherRenamingRule); +} + bool copyEngine::userAddFolder(const CopyMode &mode) { - QString source = QFileDialog::getExistingDirectory(interface,tr("Select source directory"),"",QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); + QString source = QFileDialog::getExistingDirectory(interface,facilityEngine->translateText("Select source directory"),"",QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); if(source.isEmpty() || source.isNull() || source=="") return false; if(mode==Copy) @@ -240,9 +442,9 @@ bool copyEngine::userAddFile(const CopyMode &mode) ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start"); QStringList sources = QFileDialog::getOpenFileNames( interface, - tr("Select one or more files to open"), + facilityEngine->translateText("Select one or more files to open"), "", - tr("All files")+" (*)"); + facilityEngine->translateText("All files")+" (*)"); if(sources.isEmpty()) return false; if(mode==Copy) @@ -270,7 +472,9 @@ void copyEngine::cancel() { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start"); stopIt=true; - listThread->cancel(); + timerProgression.stop(); + timerActionDone.stop(); + emit tryCancel(); } void copyEngine::removeItems(const QList<int> &ids) @@ -298,9 +502,27 @@ void copyEngine::moveItemsOnBottom(const QList<int> &ids) emit signal_moveItemsOnBottom(ids); } +/** \brief give the forced mode, to export/import transfer list */ +void copyEngine::forceMode(const CopyMode &mode) +{ + if(forcedMode) + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("Mode forced previously")); + QMessageBox::critical(NULL,facilityEngine->translateText("Internal error"),tr("The mode have been forced previously, it's internal error, please report it")); + return; + } + if(mode==Copy) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("Force mode to copy")); + else + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("Force mode to move")); + this->mode=mode; + forcedMode=true; + emit signal_forceMode(mode); +} + void copyEngine::exportTransferList() { - QString fileName = QFileDialog::getSaveFileName(NULL,tr("Save transfer list"),"transfer-list.lst",tr("Transfer list")+" (*.lst)"); + QString fileName = QFileDialog::getSaveFileName(NULL,facilityEngine->translateText("Save transfer list"),"transfer-list.lst",facilityEngine->translateText("Transfer list")+" (*.lst)"); if(fileName.isEmpty()) return; emit signal_exportTransferList(fileName); @@ -308,7 +530,7 @@ void copyEngine::exportTransferList() void copyEngine::importTransferList() { - QString fileName = QFileDialog::getOpenFileName(NULL,tr("Open transfer list"),"transfer-list.lst",tr("Transfer list")+" (*.lst)"); + QString fileName = QFileDialog::getOpenFileName(NULL,facilityEngine->translateText("Open transfer list"),"transfer-list.lst",facilityEngine->translateText("Transfer list")+" (*.lst)"); if(fileName.isEmpty()) return; emit signal_importTransferList(fileName); @@ -316,12 +538,12 @@ void copyEngine::importTransferList() void copyEngine::warningTransferList(const QString &warning) { - QMessageBox::warning(interface,tr("Error"),warning); + QMessageBox::warning(interface,facilityEngine->translateText("Error"),warning); } void copyEngine::errorTransferList(const QString &error) { - QMessageBox::critical(interface,tr("Error"),error); + QMessageBox::critical(interface,facilityEngine->translateText("Error"),error); } bool copyEngine::setSpeedLimitation(const qint64 &speedLimitation) @@ -490,3 +712,85 @@ void copyEngine::setComboBoxFolderError(FileErrorAction action,bool changeComboB break; } } + +void copyEngine::doChecksum_toggled(bool doChecksum) +{ + listThread->set_doChecksum(doChecksum); +} + +void copyEngine::checksumOnlyOnError_toggled(bool checksumOnlyOnError) +{ + listThread->set_checksumOnlyOnError(checksumOnlyOnError); +} + +void copyEngine::checksumIgnoreIfImpossible_toggled(bool checksumIgnoreIfImpossible) +{ + listThread->set_checksumIgnoreIfImpossible(checksumIgnoreIfImpossible); +} + +void copyEngine::osBuffer_toggled(bool osBuffer) +{ + listThread->set_osBuffer(osBuffer); + ui->osBufferLimit->setEnabled(ui->osBuffer->isChecked() && ui->osBufferLimited->isChecked()); +} + +void copyEngine::osBufferLimited_toggled(bool osBufferLimited) +{ + listThread->set_osBufferLimited(osBufferLimited); + ui->osBufferLimit->setEnabled(ui->osBuffer->isChecked() && ui->osBufferLimited->isChecked()); +} + +void copyEngine::osBufferLimit_editingFinished() +{ + emit send_osBufferLimit(ui->osBufferLimit->value()); +} + +void copyEngine::showFilterDialog() +{ + if(filters!=NULL) + filters->exec(); +} + +void copyEngine::sendNewFilters() +{ + if(filters!=NULL) + emit send_setFilters(filters->getInclude(),filters->getExclude()); +} + +void copyEngine::sendNewRenamingRules(QString firstRenamingRule,QString otherRenamingRule) +{ + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"new filter"); + this->firstRenamingRule=firstRenamingRule; + this->otherRenamingRule=otherRenamingRule; + emit send_sendNewRenamingRules(firstRenamingRule,otherRenamingRule); +} + +void copyEngine::showRenamingRules() +{ + if(renamingRules==NULL) + { + QMessageBox::critical(NULL,tr("Options error"),tr("Options engine is not loaded, can't access to the filters")); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"options not loaded"); + return; + } + renamingRules->exec(); +} + +void copyEngine::get_realBytesTransfered(quint64 realBytesTransfered) +{ + size_for_speed=realBytesTransfered; +} + +void copyEngine::newActionInProgess(EngineActionInProgress action) +{ + if(action==Idle) + { + timerProgression.stop(); + timerActionDone.stop(); + } + else + { + timerProgression.start(); + timerActionDone.start(); + } +} diff --git a/plugins/CopyEngine/Ultracopier-0.3/copyEngine.h b/plugins/CopyEngine/Ultracopier-0.3/copyEngine.h index c903b12..66b3a4f 100644..100755 --- a/plugins/CopyEngine/Ultracopier-0.3/copyEngine.h +++ b/plugins/CopyEngine/Ultracopier-0.3/copyEngine.h @@ -20,6 +20,8 @@ #include "ui_options.h" #include "Environment.h" #include "ListThread.h" +#include "Filters.h" +#include "RenamingRules.h" #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW #include "debugDialog.h" @@ -38,8 +40,9 @@ class copyEngine : public PluginInterface_CopyEngine { Q_OBJECT public: - copyEngine(FacilityInterface * facilityInterface); + copyEngine(FacilityInterface * facilityEngine); ~copyEngine(); + void connectTheSignalsSlots(); private: ListThread *listThread; #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW @@ -49,6 +52,9 @@ private: Ui::options * ui; bool uiIsInstalled; QWidget * interface; + Filters * filters; + RenamingRules * renamingRules; + FacilityInterface * facilityEngine; int maxSpeed; bool doRightTransfer; bool keepDate; @@ -87,7 +93,24 @@ private: FileErrorAction tempFileErrorAction; FolderExistsAction tempFolderExistsAction; FileExistsAction tempFileExistsAction; - quint64 size_for_speed; + quint64 size_for_speed;//because direct access to list thread into the main thread can't be do + CopyMode mode; + bool forcedMode; + + bool doChecksum; + bool checksumIgnoreIfImpossible; + bool checksumOnlyOnError; + bool osBuffer; + bool osBufferLimited; + unsigned int osBufferLimit; + QStringList includeStrings,includeOptions,excludeStrings,excludeOptions; + QString firstRenamingRule; + QString otherRenamingRule; + + //send action done timer + QTimer timerActionDone; + //send progression timer + QTimer timerProgression; private slots: #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW void updateTheDebugInfo(QStringList,QStringList,int); @@ -107,6 +130,19 @@ private slots: void rmPathErrorOnFolder(QFileInfo,QString,bool isCalledByShowOneNewDialog=false); //show one new dialog if needed void showOneNewDialog(); + void sendNewFilters(); + + void doChecksum_toggled(bool); + void checksumOnlyOnError_toggled(bool); + void checksumIgnoreIfImpossible_toggled(bool); + void osBuffer_toggled(bool); + void osBufferLimited_toggled(bool); + void osBufferLimit_editingFinished(); + void showFilterDialog(); + void sendNewRenamingRules(QString firstRenamingRule,QString otherRenamingRule); + void showRenamingRules(); + void get_realBytesTransfered(quint64 realBytesTransfered); + void newActionInProgess(EngineActionInProgress); public: /** \brief to send the options panel * \return return false if have not the options @@ -143,6 +179,10 @@ public: * \param destination the destination to move * \return true if the move have been accepted */ bool newMove(const QStringList &sources,const QString &destination); + /** \brief send the new transfer list + * \param file the transfer list */ + void newTransferList(const QString &file); + /** \brief to get byte read, use by Ultracopier for the speed calculation * real size transfered to right speed calculation */ quint64 realByteTransfered(); @@ -163,6 +203,15 @@ public: /** \brief to sync the transfer list * Used when the interface is changed, useful to minimize the memory size */ void syncTransferList(); + + void set_doChecksum(bool doChecksum); + void set_checksumIgnoreIfImpossible(bool checksumIgnoreIfImpossible); + void set_checksumOnlyOnError(bool checksumOnlyOnError); + void set_osBuffer(bool osBuffer); + void set_osBufferLimited(bool osBufferLimited); + void set_osBufferLimit(unsigned int osBufferLimit); + void set_setFilters(QStringList includeStrings,QStringList includeOptions,QStringList excludeStrings,QStringList excludeOptions); + void setRenamingRules(QString firstRenamingRule,QString otherRenamingRule); public slots: //user ask ask to add folder (add it with interface ask source/destination) /** \brief add folder called on the interface @@ -197,10 +246,14 @@ public slots: /** \brief move on bottom of the list the selected item * \param ids ids is the id list of the selected items */ void moveItemsOnBottom(const QList<int> &ids); + + /** \brief give the forced mode, to export/import transfer list */ + void forceMode(const CopyMode &mode); /// \brief export the transfer list into a file void exportTransferList(); /// \brief import the transfer list into a file void importTransferList(); + /** \brief to set the speed limitation * -1 if not able, 0 if disabled */ bool setSpeedLimitation(const qint64 &speedLimitation); @@ -250,37 +303,46 @@ signals: * first = current transfered byte, second = byte to transfer */ void pushGeneralProgression(const quint64 &,const quint64 &); - void newFolderListing(QString path); - void newCollisionAction(QString action); - void newErrorAction(QString action); + void newFolderListing(const QString &path); + void newCollisionAction(const QString &action); + void newErrorAction(const QString &action); void isInPause(bool); //action on the copy void signal_pause(); void signal_resume(); - void signal_skip(quint64 id); + void signal_skip(const quint64 &id); //edit the transfer list - void signal_removeItems(QList<int> ids); - void signal_moveItemsOnTop(QList<int> ids); - void signal_moveItemsUp(QList<int> ids); - void signal_moveItemsDown(QList<int> ids); - void signal_moveItemsOnBottom(QList<int> ids); - void signal_exportTransferList(QString fileName); - void signal_importTransferList(QString fileName); + void signal_removeItems(const QList<int> &ids); + void signal_moveItemsOnTop(const QList<int> &ids); + void signal_moveItemsUp(const QList<int> &ids); + void signal_moveItemsDown(const QList<int> &ids); + void signal_moveItemsOnBottom(const QList<int> &ids); + + void signal_forceMode(const CopyMode &mode); + void signal_exportTransferList(const QString &fileName); + void signal_importTransferList(const QString &fileName); //action void signal_setCollisionAction(FileExistsAction alwaysDoThisActionForFileExists); void signal_setComboBoxFolderColision(FolderExistsAction action); void signal_setFolderColision(FolderExistsAction action); + //when the cancel is clicked on copy engine dialog void cancelAll(); + //internal cancel + void tryCancel(); + + //when can be deleted + void canBeDeleted(); + //send error occurred - void error(QString path,quint64 size,QDateTime mtime,QString error); + void error(const QString &path,const quint64 &size,const QDateTime &mtime,const QString &error); //for the extra logging - void rmPath(QString path); - void mkPath(QString path); + void rmPath(const QString &path); + void mkPath(const QString &path); #ifdef ULTRACOPIER_PLUGIN_DEBUG /// \brief To debug source void debugInformation(DebugLevel level,QString fonction,QString text,QString file,int ligne); @@ -288,6 +350,10 @@ signals: //other signals void queryOneNewDialog(); + + void send_osBufferLimit(const unsigned int &osBufferLimit); + void send_setFilters(const QList<Filters_rules> &include,const QList<Filters_rules> &exclude); + void send_sendNewRenamingRules(QString firstRenamingRule,QString otherRenamingRule); }; #endif // COPY_ENGINE_H diff --git a/plugins/CopyEngine/Ultracopier-0.3/copyEngine.pro b/plugins/CopyEngine/Ultracopier-0.3/copyEngine.pro index 0f1cb68..13ab523 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/copyEngine.pro +++ b/plugins/CopyEngine/Ultracopier-0.3/copyEngine.pro @@ -21,7 +21,10 @@ HEADERS = copyEngine.h \ ListThread.h \ ../../../interface/PluginInterface_CopyEngine.h \ ../../../interface/OptionInterface.h \ - ../../../interface/FacilityInterface.h + ../../../interface/FacilityInterface.h \ + Filters.h \ + FilterRules.h \ + RenamingRules.h SOURCES = copyEngine.cpp \ scanFileOrFolder.cpp \ fileErrorDialog.cpp \ @@ -37,16 +40,20 @@ SOURCES = copyEngine.cpp \ folderExistsDialog.cpp \ AvancedQFile.cpp \ copyEngine-collision-and-error.cpp \ - ListThread.cpp + ListThread.cpp \ + Filters.cpp \ + FilterRules.cpp \ + RenamingRules.cpp \ + ListThread_InodeAction.cpp TARGET = $$qtLibraryTarget(copyEngine) -TRANSLATIONS += Languages/fr/translation.ts \ +TRANSLATIONS += Languages/fr/translation.ts \ Languages/ar/translation.ts \ - Languages/ch/translation.ts \ + Languages/zh/translation.ts \ Languages/es/translation.ts \ Languages/de/translation.ts \ Languages/el/translation.ts \ Languages/it/translation.ts \ - Languages/jp/translation.ts \ + Languages/ja/translation.ts \ Languages/id/translation.ts \ Languages/pl/translation.ts \ Languages/ru/translation.ts \ @@ -55,7 +62,8 @@ TRANSLATIONS += Languages/fr/translation.ts \ Languages/hi/translation.ts \ Languages/nl/translation.ts \ Languages/no/translation.ts \ - Languages/pt/translation.ts + Languages/pt/translation.ts \ + Languages/ko/translation.ts FORMS += \ options.ui \ @@ -63,6 +71,12 @@ FORMS += \ fileExistsDialog.ui \ fileIsSameDialog.ui \ debugDialog.ui \ - folderExistsDialog.ui + folderExistsDialog.ui \ + Filters.ui \ + FilterRules.ui \ + RenamingRules.ui OTHER_FILES += informations.xml + +RESOURCES += \ + resources.qrc diff --git a/plugins/CopyEngine/Ultracopier-0.3/factory.cpp b/plugins/CopyEngine/Ultracopier-0.3/factory.cpp index be53272..642a05b 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/factory.cpp +++ b/plugins/CopyEngine/Ultracopier-0.3/factory.cpp @@ -9,8 +9,6 @@ #include "factory.h" -/// \todo connect in global options the change - Factory::Factory() : ui(new Ui::options()) { @@ -18,6 +16,8 @@ Factory::Factory() : ui->setupUi(tempWidget); errorFound=false; optionsEngine=NULL; + filters=new Filters(tempWidget); + renamingRules=new RenamingRules(tempWidget); #if defined (Q_OS_WIN32) QFileInfoList temp=QDir::drives(); for (int i = 0; i < temp.size(); ++i) { @@ -31,23 +31,41 @@ Factory::Factory() : connect(&mount,SIGNAL(readyReadStandardError()), this,SLOT(readyReadStandardError())); mount.start("mount"); #endif - connect(ui->doRightTransfer, SIGNAL(toggled(bool)), this,SLOT(setDoRightTransfer(bool))); - connect(ui->keepDate, SIGNAL(toggled(bool)), this,SLOT(setKeepDate(bool))); - connect(ui->blockSize, SIGNAL(valueChanged(int)), this,SLOT(setBlockSize(int))); - connect(ui->autoStart, SIGNAL(toggled(bool)), this,SLOT(setAutoStart(bool))); + connect(ui->doRightTransfer, SIGNAL(toggled(bool)), this,SLOT(setDoRightTransfer(bool))); + connect(ui->keepDate, SIGNAL(toggled(bool)), this,SLOT(setKeepDate(bool))); + connect(ui->blockSize, SIGNAL(valueChanged(int)), this,SLOT(setBlockSize(int))); + connect(ui->autoStart, SIGNAL(toggled(bool)), this,SLOT(setAutoStart(bool))); + connect(ui->doChecksum, SIGNAL(toggled(bool)), this,SLOT(doChecksum_toggled(bool))); + connect(ui->checksumIgnoreIfImpossible, SIGNAL(toggled(bool)), this,SLOT(checksumIgnoreIfImpossible_toggled(bool))); + connect(ui->checksumOnlyOnError, SIGNAL(toggled(bool)), this,SLOT(checksumOnlyOnError_toggled(bool))); + connect(ui->osBuffer, SIGNAL(toggled(bool)), this,SLOT(osBuffer_toggled(bool))); + connect(ui->osBufferLimited, SIGNAL(toggled(bool)), this,SLOT(osBufferLimited_toggled(bool))); + connect(ui->osBufferLimit, SIGNAL(editingFinished()), this,SLOT(osBufferLimit_editingFinished())); + + connect(filters,SIGNAL(sendNewFilters(QStringList,QStringList,QStringList,QStringList)),this,SLOT(sendNewFilters(QStringList,QStringList,QStringList,QStringList))); + connect(ui->filters,SIGNAL(clicked()),this,SLOT(showFilterDialog())); + connect(renamingRules,SIGNAL(sendNewRenamingRules(QString,QString)),this,SLOT(sendNewRenamingRules(QString,QString))); + connect(ui->renamingRules,SIGNAL(clicked()),this,SLOT(showRenamingRules())); + + ui->osBufferLimit->setEnabled(ui->osBuffer->isChecked() && ui->osBufferLimited->isChecked()); } Factory::~Factory() { + delete renamingRules; + delete filters; delete ui; } PluginInterface_CopyEngine * Factory::getInstance() { copyEngine *realObject=new copyEngine(facilityEngine); + #ifdef ULTRACOPIER_PLUGIN_DEBUG + connect(realObject,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)),this,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int))); + #endif + realObject->connectTheSignalsSlots(); realObject->setDrive(mountSysPoint); PluginInterface_CopyEngine * newTransferEngine=realObject; - connect(newTransferEngine,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)),this,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int))); connect(this,SIGNAL(reloadLanguage()),newTransferEngine,SLOT(newLanguageLoaded())); realObject->setRightTransfer( optionsEngine->getOptionValue("doRightTransfer").toBool()); realObject->setKeepDate( optionsEngine->getOptionValue("keepDate").toBool()); @@ -56,6 +74,19 @@ PluginInterface_CopyEngine * Factory::getInstance() realObject->on_comboBoxFolderColision_currentIndexChanged(ui->comboBoxFolderColision->currentIndex()); realObject->on_comboBoxFolderError_currentIndexChanged(ui->comboBoxFolderError->currentIndex()); realObject->setCheckDestinationFolderExists( optionsEngine->getOptionValue("checkDestinationFolder").toBool()); + + realObject->set_doChecksum(optionsEngine->getOptionValue("doChecksum").toBool()); + realObject->set_checksumIgnoreIfImpossible(optionsEngine->getOptionValue("checksumIgnoreIfImpossible").toBool()); + realObject->set_checksumOnlyOnError(optionsEngine->getOptionValue("checksumOnlyOnError").toBool()); + realObject->set_osBuffer(optionsEngine->getOptionValue("osBuffer").toBool()); + realObject->set_osBufferLimited(optionsEngine->getOptionValue("osBufferLimited").toBool()); + realObject->set_osBufferLimit(optionsEngine->getOptionValue("osBufferLimit").toUInt()); + realObject->set_setFilters(optionsEngine->getOptionValue("includeStrings").toStringList(), + optionsEngine->getOptionValue("includeOptions").toStringList(), + optionsEngine->getOptionValue("excludeStrings").toStringList(), + optionsEngine->getOptionValue("excludeOptions").toStringList() + ); + realObject->setRenamingRules(optionsEngine->getOptionValue("firstRenamingRule").toString(),optionsEngine->getOptionValue("otherRenamingRule").toString()); return newTransferEngine; } @@ -95,6 +126,22 @@ void Factory::setResources(OptionInterface * options,const QString &writePath,co KeysList.append(qMakePair(QString("folderError"),QVariant(0))); KeysList.append(qMakePair(QString("folderColision"),QVariant(0))); KeysList.append(qMakePair(QString("checkDestinationFolder"),QVariant(true))); + KeysList.append(qMakePair(QString("includeStrings"),QVariant(QStringList()))); + KeysList.append(qMakePair(QString("includeOptions"),QVariant(QStringList()))); + KeysList.append(qMakePair(QString("excludeStrings"),QVariant(QStringList()))); + KeysList.append(qMakePair(QString("excludeOptions"),QVariant(QStringList()))); + KeysList.append(qMakePair(QString("doChecksum"),QVariant(true))); + KeysList.append(qMakePair(QString("checksumIgnoreIfImpossible"),QVariant(true))); + KeysList.append(qMakePair(QString("checksumOnlyOnError"),QVariant(true))); + KeysList.append(qMakePair(QString("osBuffer"),QVariant(true))); + KeysList.append(qMakePair(QString("firstRenamingRule"),QVariant(""))); + KeysList.append(qMakePair(QString("otherRenamingRule"),QVariant(""))); + #ifdef Q_OS_WIN32 + KeysList.append(qMakePair(QString("osBufferLimited"),QVariant(true))); + #else + KeysList.append(qMakePair(QString("osBufferLimited"),QVariant(false))); + #endif + KeysList.append(qMakePair(QString("osBufferLimit"),QVariant(512))); optionsEngine->addOptionGroup(KeysList); #if ! defined (Q_CC_GNU) ui->keepDate->setEnabled(false); @@ -102,11 +149,23 @@ void Factory::setResources(OptionInterface * options,const QString &writePath,co #endif ui->doRightTransfer->setChecked(optionsEngine->getOptionValue("doRightTransfer").toBool()); ui->keepDate->setChecked(optionsEngine->getOptionValue("keepDate").toBool()); - ui->blockSize->setValue(optionsEngine->getOptionValue("blockSize").toInt()); + ui->blockSize->setValue(optionsEngine->getOptionValue("blockSize").toUInt()); ui->autoStart->setChecked(optionsEngine->getOptionValue("autoStart").toBool()); - ui->comboBoxFolderError->setCurrentIndex(optionsEngine->getOptionValue("folderError").toInt()); - ui->comboBoxFolderColision->setCurrentIndex(optionsEngine->getOptionValue("folderColision").toInt()); + ui->comboBoxFolderError->setCurrentIndex(optionsEngine->getOptionValue("folderError").toUInt()); + ui->comboBoxFolderColision->setCurrentIndex(optionsEngine->getOptionValue("folderColision").toUInt()); ui->checkBoxDestinationFolderExists->setChecked(optionsEngine->getOptionValue("checkDestinationFolder").toBool()); + ui->doChecksum->setChecked(optionsEngine->getOptionValue("doChecksum").toBool()); + ui->checksumIgnoreIfImpossible->setChecked(optionsEngine->getOptionValue("checksumIgnoreIfImpossible").toBool()); + ui->checksumOnlyOnError->setChecked(optionsEngine->getOptionValue("checksumOnlyOnError").toBool()); + ui->osBuffer->setChecked(optionsEngine->getOptionValue("osBuffer").toBool()); + ui->osBufferLimited->setChecked(optionsEngine->getOptionValue("osBufferLimited").toBool()); + ui->osBufferLimit->setValue(optionsEngine->getOptionValue("osBufferLimit").toUInt()); + filters->setFilters(optionsEngine->getOptionValue("includeStrings").toStringList(), + optionsEngine->getOptionValue("includeOptions").toStringList(), + optionsEngine->getOptionValue("excludeStrings").toStringList(), + optionsEngine->getOptionValue("excludeOptions").toStringList() + ); + renamingRules->setRenamingRules(optionsEngine->getOptionValue("firstRenamingRule").toString(),optionsEngine->getOptionValue("otherRenamingRule").toString()); } } @@ -233,7 +292,116 @@ void Factory::newLanguageLoaded() { ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start, retranslate the widget options"); ui->retranslateUi(tempWidget); + if(optionsEngine!=NULL) + { + filters->newLanguageLoaded(); + renamingRules->newLanguageLoaded(); + } emit reloadLanguage(); } Q_EXPORT_PLUGIN2(copyEngine, Factory); + +void Factory::doChecksum_toggled(bool doChecksum) +{ + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"the checkbox have changed"); + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("doChecksum",doChecksum); + else + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented"); +} + +void Factory::checksumOnlyOnError_toggled(bool checksumOnlyOnError) +{ + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"the checkbox have changed"); + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("checksumOnlyOnError",checksumOnlyOnError); + else + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented"); +} + +void Factory::osBuffer_toggled(bool osBuffer) +{ + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"the checkbox have changed"); + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("osBuffer",osBuffer); + else + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented"); + ui->osBufferLimit->setEnabled(ui->osBuffer->isChecked() && ui->osBufferLimited->isChecked()); +} + +void Factory::osBufferLimited_toggled(bool osBufferLimited) +{ + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"the checkbox have changed"); + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("osBufferLimited",osBufferLimited); + else + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented"); + ui->osBufferLimit->setEnabled(ui->osBuffer->isChecked() && ui->osBufferLimited->isChecked()); +} + +void Factory::osBufferLimit_editingFinished() +{ + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"the spinbox have changed"); + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("osBufferLimit",ui->osBufferLimit->value()); + else + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented"); +} + +void Factory::showFilterDialog() +{ + if(optionsEngine==NULL) + { + QMessageBox::critical(NULL,tr("Options error"),tr("Options engine is not loaded, can't access to the filters")); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"options not loaded"); + return; + } + filters->exec(); +} + +void Factory::sendNewFilters(QStringList includeStrings,QStringList includeOptions,QStringList excludeStrings,QStringList excludeOptions) +{ + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"new filter"); + if(optionsEngine!=NULL) + { + optionsEngine->setOptionValue("includeStrings",includeStrings); + optionsEngine->setOptionValue("includeOptions",includeOptions); + optionsEngine->setOptionValue("excludeStrings",excludeStrings); + optionsEngine->setOptionValue("excludeOptions",excludeOptions); + } + else + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented"); +} + +void Factory::sendNewRenamingRules(QString firstRenamingRule,QString otherRenamingRule) +{ + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"new filter"); + if(optionsEngine!=NULL) + { + optionsEngine->setOptionValue("firstRenamingRule",firstRenamingRule); + optionsEngine->setOptionValue("otherRenamingRule",otherRenamingRule); + } + else + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented"); +} + +void Factory::showRenamingRules() +{ + if(optionsEngine==NULL) + { + QMessageBox::critical(NULL,tr("Options error"),tr("Options engine is not loaded, can't access to the filters")); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"options not loaded"); + return; + } + renamingRules->exec(); +} + +void Factory::checksumIgnoreIfImpossible_toggled(bool checksumIgnoreIfImpossible) +{ + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"the checkbox have changed"); + if(optionsEngine!=NULL) + optionsEngine->setOptionValue("checksumIgnoreIfImpossible",checksumIgnoreIfImpossible); + else + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented"); +} diff --git a/plugins/CopyEngine/Ultracopier-0.3/factory.h b/plugins/CopyEngine/Ultracopier-0.3/factory.h index bf41a27..c5cfa91 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/factory.h +++ b/plugins/CopyEngine/Ultracopier-0.3/factory.h @@ -15,6 +15,8 @@ #include "ui_options.h" #include "copyEngine.h" #include "Environment.h" +#include "Filters.h" +#include "RenamingRules.h" #ifndef FACTORY_H #define FACTORY_H @@ -58,6 +60,8 @@ private: QString StandardOutput; bool errorFound; FacilityInterface * facilityEngine; + Filters *filters; + RenamingRules *renamingRules; private slots: void error(QProcess::ProcessError error); void finished(int exitCode, QProcess::ExitStatus exitStatus); @@ -67,6 +71,16 @@ private slots: void setKeepDate(bool keepDate); void setBlockSize(int blockSize); void setAutoStart(bool autoStart); + void showFilterDialog(); + void sendNewFilters(QStringList includeStrings,QStringList includeOptions,QStringList excludeStrings,QStringList excludeOptions); + void doChecksum_toggled(bool); + void checksumOnlyOnError_toggled(bool); + void osBuffer_toggled(bool); + void osBufferLimited_toggled(bool); + void osBufferLimit_editingFinished(); + void checksumIgnoreIfImpossible_toggled(bool); + void sendNewRenamingRules(QString firstRenamingRule,QString otherRenamingRule); + void showRenamingRules(); public slots: void resetOptions(); void newLanguageLoaded(); diff --git a/plugins/CopyEngine/Ultracopier-0.3/fileErrorDialog.cpp b/plugins/CopyEngine/Ultracopier-0.3/fileErrorDialog.cpp index 8f8b9a5..0d9fa9a 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/fileErrorDialog.cpp +++ b/plugins/CopyEngine/Ultracopier-0.3/fileErrorDialog.cpp @@ -9,18 +9,35 @@ fileErrorDialog::fileErrorDialog(QWidget *parent,QFileInfo fileInfo,QString erro action=FileError_Cancel; ui->label_error->setText(errorString); ui->label_content_file_name->setText(fileInfo.fileName()); - ui->label_content_size->setText(QString::number(fileInfo.size())); - QDateTime maxTime(QDate(ULTRACOPIER_PLUGIN_MINIMALYEAR,1,1)); - if(maxTime<fileInfo.lastModified()) + if(fileInfo.exists()) { - ui->label_modified->setVisible(true); - ui->label_content_modified->setVisible(true); - ui->label_content_modified->setText(fileInfo.lastModified().toString()); + ui->label_content_size->setText(QString::number(fileInfo.size())); + QDateTime maxTime(QDate(ULTRACOPIER_PLUGIN_MINIMALYEAR,1,1)); + if(maxTime<fileInfo.lastModified()) + { + ui->label_modified->setVisible(true); + ui->label_content_modified->setVisible(true); + ui->label_content_modified->setText(fileInfo.lastModified().toString()); + } + else + { + ui->label_modified->setVisible(false); + ui->label_content_modified->setVisible(false); + } + if(fileInfo.isDir()) + { + this->setWindowTitle(tr("Error on folder")); + ui->label_size->hide(); + ui->label_content_size->hide(); + ui->label_file_name->setText(tr("Folder name")); + } } else { - ui->label_modified->setVisible(false); - ui->label_content_modified->setVisible(false); + ui->label_size->hide(); + ui->label_content_size->hide(); + ui->label_modified->hide(); + ui->label_content_modified->hide(); } if(!havePutAtTheEndButton) ui->PutToBottom->hide(); diff --git a/plugins/CopyEngine/Ultracopier-0.3/fileExistsDialog.cpp b/plugins/CopyEngine/Ultracopier-0.3/fileExistsDialog.cpp index 78c3bd0..191dd79 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/fileExistsDialog.cpp +++ b/plugins/CopyEngine/Ultracopier-0.3/fileExistsDialog.cpp @@ -3,7 +3,7 @@ #include <QDebug> -fileExistsDialog::fileExistsDialog(QWidget *parent,QFileInfo source,QFileInfo destination) : +fileExistsDialog::fileExistsDialog(QWidget *parent,QFileInfo source,QFileInfo destination,QString firstRenamingRule,QString otherRenamingRule) : QDialog(parent), ui(new Ui::fileExistsDialog) { @@ -44,6 +44,8 @@ fileExistsDialog::fileExistsDialog(QWidget *parent,QFileInfo source,QFileInfo de ui->label_destination_modified->setVisible(false); ui->label_content_destination_modified->setVisible(false); } + this->firstRenamingRule=firstRenamingRule; + this->otherRenamingRule=otherRenamingRule; } fileExistsDialog::~fileExistsDialog() @@ -82,34 +84,45 @@ void fileExistsDialog::on_SuggestNewName_clicked() QString fileName=destinationInfo.fileName(); QString suffix=""; QString destination; + QString newFileName; + //resolv the suffix if(fileName.contains(QRegExp("^(.*)(\\.[a-z0-9]+)$"))) { suffix=fileName; suffix.replace(QRegExp("^(.*)(\\.[a-z0-9]+)$"),"\\2"); fileName.replace(QRegExp("^(.*)(\\.[a-z0-9]+)$"),"\\1"); } + //resolv the new name + int num=1; do { - if(!fileName.startsWith(tr("Copy of "))) - fileName=tr("Copy of ")+fileName; - else + if(num==1) { - if(fileName.contains(QRegExp("_[0-9]+$"))) + if(firstRenamingRule=="") + newFileName=tr("%1 - copy").arg(fileName); + else { - QString number=fileName; - number.replace(QRegExp("^.*_([0-9]+)$"),"\\1"); - int num=number.toInt()+1; - fileName.remove(QRegExp("[0-9]+$")); - fileName+=QString::number(num); + newFileName=firstRenamingRule; + newFileName.replace("%name%",fileName); } + } + else + { + if(otherRenamingRule=="") + newFileName=tr("%1 - copy (%2)").arg(fileName).arg(num); else - fileName+="_2"; + { + newFileName=otherRenamingRule; + newFileName.replace("%name%",fileName); + newFileName.replace("%number%",QString::number(num)); + } } - destination=absolutePath+QDir::separator()+fileName+suffix; + destination=absolutePath+QDir::separator()+newFileName+suffix; destinationInfo.setFile(destination); + num++; } while(destinationInfo.exists()); - ui->lineEditNewName->setText(fileName+suffix); + ui->lineEditNewName->setText(newFileName+suffix); } void fileExistsDialog::on_Rename_clicked() diff --git a/plugins/CopyEngine/Ultracopier-0.3/fileExistsDialog.h b/plugins/CopyEngine/Ultracopier-0.3/fileExistsDialog.h index 1a5817d..75af190 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/fileExistsDialog.h +++ b/plugins/CopyEngine/Ultracopier-0.3/fileExistsDialog.h @@ -25,7 +25,7 @@ class fileExistsDialog : public QDialog Q_OBJECT public: /// \brief create the object and pass all the informations to it - explicit fileExistsDialog(QWidget *parent,QFileInfo source,QFileInfo destination); + explicit fileExistsDialog(QWidget *parent,QFileInfo source,QFileInfo destination,QString firstRenamingRule,QString otherRenamingRule); ~fileExistsDialog(); /// \brief return the the always checkbox is checked bool getAlways(); @@ -51,6 +51,8 @@ private: FileExistsAction action; QString oldName; QFileInfo destinationInfo; + QString firstRenamingRule; + QString otherRenamingRule; }; #endif // FILEEXISTSDIALOG_H diff --git a/plugins/CopyEngine/Ultracopier-0.3/fileIsSameDialog.cpp b/plugins/CopyEngine/Ultracopier-0.3/fileIsSameDialog.cpp index a618f4c..f45b2ea 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/fileIsSameDialog.cpp +++ b/plugins/CopyEngine/Ultracopier-0.3/fileIsSameDialog.cpp @@ -3,7 +3,7 @@ #include <QDebug> -fileIsSameDialog::fileIsSameDialog(QWidget *parent,QFileInfo fileInfo) : +fileIsSameDialog::fileIsSameDialog(QWidget *parent,QFileInfo fileInfo,QString firstRenamingRule,QString otherRenamingRule) : QDialog(parent), ui(new Ui::fileIsSameDialog) { @@ -29,6 +29,8 @@ fileIsSameDialog::fileIsSameDialog(QWidget *parent,QFileInfo fileInfo) : ui->label_modified->setVisible(false); ui->label_content_modified->setVisible(false); } + this->firstRenamingRule=firstRenamingRule; + this->otherRenamingRule=otherRenamingRule; } fileIsSameDialog::~fileIsSameDialog() @@ -67,34 +69,45 @@ void fileIsSameDialog::on_SuggestNewName_clicked() QString fileName=destinationInfo.fileName(); QString suffix=""; QString destination; + QString newFileName; + //resolv the suffix if(fileName.contains(QRegExp("^(.*)(\\.[a-z0-9]+)$"))) { suffix=fileName; suffix.replace(QRegExp("^(.*)(\\.[a-z0-9]+)$"),"\\2"); fileName.replace(QRegExp("^(.*)(\\.[a-z0-9]+)$"),"\\1"); } + //resolv the new name + int num=1; do { - if(!fileName.startsWith(tr("Copy of "))) - fileName=tr("Copy of ")+fileName; - else + if(num==1) { - if(fileName.contains(QRegExp("_[0-9]+$"))) + if(firstRenamingRule=="") + newFileName=tr("%1 - copy").arg(fileName); + else { - QString number=fileName; - number.replace(QRegExp("^.*_([0-9]+)$"),"\\1"); - int num=number.toInt()+1; - fileName.remove(QRegExp("[0-9]+$")); - fileName+=QString::number(num); + newFileName=firstRenamingRule; + newFileName.replace("%name%",fileName); } + } + else + { + if(otherRenamingRule=="") + newFileName=tr("%1 - copy (%2)").arg(fileName).arg(num); else - fileName+="_2"; + { + newFileName=otherRenamingRule; + newFileName.replace("%name%",fileName); + newFileName.replace("%number%",QString::number(num)); + } } - destination=absolutePath+QDir::separator()+fileName+suffix; + destination=absolutePath+QDir::separator()+newFileName+suffix; destinationInfo.setFile(destination); + num++; } while(destinationInfo.exists()); - ui->lineEditNewName->setText(fileName+suffix); + ui->lineEditNewName->setText(newFileName+suffix); } void fileIsSameDialog::on_Rename_clicked() diff --git a/plugins/CopyEngine/Ultracopier-0.3/fileIsSameDialog.h b/plugins/CopyEngine/Ultracopier-0.3/fileIsSameDialog.h index afd0e04..fa48755 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/fileIsSameDialog.h +++ b/plugins/CopyEngine/Ultracopier-0.3/fileIsSameDialog.h @@ -25,7 +25,7 @@ class fileIsSameDialog : public QDialog Q_OBJECT public: /// \brief create the object and pass all the informations to it - explicit fileIsSameDialog(QWidget *parent,QFileInfo fileInfo); + explicit fileIsSameDialog(QWidget *parent,QFileInfo fileInfo,QString firstRenamingRule,QString otherRenamingRule); ~fileIsSameDialog(); /// \brief return the the always checkbox is checked bool getAlways(); @@ -48,6 +48,9 @@ private: FileExistsAction action; QString oldName; QFileInfo destinationInfo; + QString firstRenamingRule; + QString otherRenamingRule; + }; #endif // FILEISSAMEDIALOG_H diff --git a/plugins/CopyEngine/Ultracopier-0.3/folderExistsDialog.cpp b/plugins/CopyEngine/Ultracopier-0.3/folderExistsDialog.cpp index 054c293..d951b90 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/folderExistsDialog.cpp +++ b/plugins/CopyEngine/Ultracopier-0.3/folderExistsDialog.cpp @@ -3,13 +3,14 @@ #include <QMessageBox> -folderExistsDialog::folderExistsDialog(QWidget *parent,QFileInfo source,bool isSame,QFileInfo destination) : +folderExistsDialog::folderExistsDialog(QWidget *parent,QFileInfo source,bool isSame,QFileInfo destination,QString firstRenamingRule,QString otherRenamingRule) : QDialog(parent), ui(new Ui::folderExistsDialog) { ui->setupUi(this); action=FolderExists_Cancel; oldName=source.fileName(); + this->destinationInfo=destinationInfo; ui->lineEditNewName->setText(oldName); ui->lineEditNewName->setPlaceholderText(oldName); ui->label_content_source_modified->setText(source.lastModified().toString()); @@ -25,10 +26,13 @@ folderExistsDialog::folderExistsDialog(QWidget *parent,QFileInfo source,bool isS } else { + this->setWindowTitle(tr("Folder already exists")); ui->label_message->hide(); ui->label_content_destination_modified->setText(destination.lastModified().toString()); ui->label_content_destination_folder_name->setText(destination.fileName()); } + this->firstRenamingRule=firstRenamingRule; + this->otherRenamingRule=otherRenamingRule; } folderExistsDialog::~folderExistsDialog() @@ -58,7 +62,50 @@ QString folderExistsDialog::getNewName() void folderExistsDialog::on_SuggestNewName_clicked() { - ui->lineEditNewName->setText(tr("Copy of ")+oldName); + QFileInfo destinationInfo=this->destinationInfo; + QString absolutePath=destinationInfo.absolutePath(); + QString fileName=destinationInfo.fileName(); + QString suffix=""; + QString destination; + QString newFileName; + //resolv the suffix + if(fileName.contains(QRegExp("^(.*)(\\.[a-z0-9]+)$"))) + { + suffix=fileName; + suffix.replace(QRegExp("^(.*)(\\.[a-z0-9]+)$"),"\\2"); + fileName.replace(QRegExp("^(.*)(\\.[a-z0-9]+)$"),"\\1"); + } + //resolv the new name + int num=1; + do + { + if(num==1) + { + if(firstRenamingRule=="") + newFileName=tr("%1 - copy").arg(fileName); + else + { + newFileName=firstRenamingRule; + newFileName.replace("%name%",fileName); + } + } + else + { + if(otherRenamingRule=="") + newFileName=tr("%1 - copy (%2)").arg(fileName).arg(num); + else + { + newFileName=otherRenamingRule; + newFileName.replace("%name%",fileName); + newFileName.replace("%number%",QString::number(num)); + } + } + destination=absolutePath+QDir::separator()+newFileName+suffix; + destinationInfo.setFile(destination); + num++; + } + while(destinationInfo.exists()); + ui->lineEditNewName->setText(newFileName+suffix); } void folderExistsDialog::on_Rename_clicked() diff --git a/plugins/CopyEngine/Ultracopier-0.3/folderExistsDialog.h b/plugins/CopyEngine/Ultracopier-0.3/folderExistsDialog.h index 8d1bdfd..6d612f1 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/folderExistsDialog.h +++ b/plugins/CopyEngine/Ultracopier-0.3/folderExistsDialog.h @@ -11,6 +11,7 @@ #include <QFileInfo> #include <QString> #include <QDateTime> +#include <QDir> #include "Environment.h" @@ -25,7 +26,7 @@ class folderExistsDialog : public QDialog public: /// \brief create the object and pass all the informations to it - explicit folderExistsDialog(QWidget *parent,QFileInfo source,bool isSame,QFileInfo destination); + explicit folderExistsDialog(QWidget *parent,QFileInfo source,bool isSame,QFileInfo destination,QString firstRenamingRule,QString otherRenamingRule); ~folderExistsDialog(); /// \brief return the the always checkbox is checked bool getAlways(); @@ -45,6 +46,9 @@ private: Ui::folderExistsDialog *ui; FolderExistsAction action; QString oldName; + QString firstRenamingRule; + QString otherRenamingRule; + QFileInfo destinationInfo; }; #endif // FOLDERISSAMEDIALOG_H diff --git a/plugins/CopyEngine/Ultracopier-0.3/informations.xml b/plugins/CopyEngine/Ultracopier-0.3/informations.xml index 077a1c9..8593149 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/informations.xml +++ b/plugins/CopyEngine/Ultracopier-0.3/informations.xml @@ -12,16 +12,16 @@ <!-- the date-time format should be in timestamps format --> <pubDate>1287496800</pubDate> <!-- the architecture code of this plugin, found PlatformMacro.h into ultracopier source --> - <architecture>linux-x86_64-pc</architecture> + <architecture>windows-x86</architecture> <!-- Detailed description --> <description xml:lang="en"><![CDATA[Copy engine of Ultracopier 0.3, do in Qt for all platform, and copy by stream]]></description> <description xml:lang="fr"><![CDATA[Moteur de copie d'ultracopier 0.3, fait en Qt pour toutes les plateformes, et copie par stream]]></description> <!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number --> - <version>0.3.0.5</version> + <version>0.3.1.0</version> <!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. --> <name>Ultracopier-0.3</name> <!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. --> <dependencies><![CDATA[ - >=ultracopier-0.3.0.5 + >=ultracopier-0.3.1.0 ]]></dependencies> </package>
\ No newline at end of file diff --git a/plugins/CopyEngine/Ultracopier-0.3/options.ui b/plugins/CopyEngine/Ultracopier-0.3/options.ui index 77bf15a..21d4d7f 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/options.ui +++ b/plugins/CopyEngine/Ultracopier-0.3/options.ui @@ -6,13 +6,16 @@ <rect> <x>0</x> <y>0</y> - <width>306</width> - <height>184</height> + <width>356</width> + <height>376</height> </rect> </property> - <layout class="QFormLayout" name="formLayout"> - <property name="fieldGrowthPolicy"> - <enum>QFormLayout::ExpandingFieldsGrow</enum> + <layout class="QGridLayout" name="gridLayout"> + <property name="margin"> + <number>2</number> + </property> + <property name="spacing"> + <number>2</number> </property> <item row="0" column="0"> <widget class="QLabel" name="label"> @@ -21,12 +24,8 @@ </property> </widget> </item> - <item row="0" column="1"> - <widget class="QCheckBox" name="doRightTransfer"> - <property name="text"> - <string/> - </property> - </widget> + <item row="0" column="2"> + <widget class="QCheckBox" name="doRightTransfer"/> </item> <item row="1" column="0"> <widget class="QLabel" name="label_2"> @@ -35,21 +34,10 @@ </property> </widget> </item> - <item row="1" column="1"> - <widget class="QCheckBox" name="keepDate"> - <property name="text"> - <string/> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_4"> - <property name="text"> - <string>Block size</string> - </property> - </widget> + <item row="1" column="2"> + <widget class="QCheckBox" name="keepDate"/> </item> - <item row="2" column="1"> + <item row="2" column="2"> <widget class="QSpinBox" name="blockSize"> <property name="suffix"> <string>KB</string> @@ -62,19 +50,15 @@ </property> </widget> </item> - <item row="3" column="0"> + <item row="3" column="0" colspan="2"> <widget class="QLabel" name="label_5"> <property name="text"> <string>Auto start the transfer</string> </property> </widget> </item> - <item row="3" column="1"> - <widget class="QCheckBox" name="autoStart"> - <property name="text"> - <string/> - </property> - </widget> + <item row="3" column="2"> + <widget class="QCheckBox" name="autoStart"/> </item> <item row="4" column="0"> <widget class="QLabel" name="label_6"> @@ -83,7 +67,7 @@ </property> </widget> </item> - <item row="4" column="1"> + <item row="4" column="2"> <widget class="QComboBox" name="comboBoxFolderError"> <item> <property name="text"> @@ -104,7 +88,7 @@ </property> </widget> </item> - <item row="5" column="1"> + <item row="5" column="2"> <widget class="QComboBox" name="comboBoxFolderColision"> <item> <property name="text"> @@ -128,22 +112,203 @@ </item> </widget> </item> - <item row="6" column="0"> + <item row="6" column="0" colspan="2"> <widget class="QLabel" name="label_8"> <property name="text"> <string>Check if destination folder exists</string> </property> </widget> </item> - <item row="6" column="1"> - <widget class="QCheckBox" name="checkBoxDestinationFolderExists"> + <item row="6" column="2"> + <widget class="QCheckBox" name="checkBoxDestinationFolderExists"/> + </item> + <item row="7" column="0" colspan="3"> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>Checksum</string> + </property> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="1" column="1"> + <widget class="QCheckBox" name="checksumOnlyOnError"> + <property name="enabled"> + <bool>false</bool> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_9"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Only after error</string> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_10"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Ignore if impossible</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QCheckBox" name="checksumIgnoreIfImpossible"> + <property name="enabled"> + <bool>false</bool> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QCheckBox" name="doChecksum"/> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="label_11"> + <property name="text"> + <string>Do checksum</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="8" column="1"> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>Enable OS buffer</string> + </property> + </widget> + </item> + <item row="8" column="2"> + <widget class="QCheckBox" name="osBuffer"/> + </item> + <item row="9" column="0" colspan="2"> + <widget class="QCheckBox" name="osBufferLimited"> + <property name="text"> + <string>OS buffer only if smaller than</string> + </property> + </widget> + </item> + <item row="9" column="2"> + <widget class="QSpinBox" name="osBufferLimit"> + <property name="suffix"> + <string>KB</string> + </property> + <property name="minimum"> + <number>1</number> + </property> + <property name="maximum"> + <number>2048</number> + </property> + <property name="value"> + <number>512</number> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_4"> + <property name="text"> + <string>Block size</string> + </property> + </widget> + </item> + <item row="12" column="1"> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item row="11" column="1"> + <widget class="QPushButton" name="filters"> + <property name="text"> + <string>Filters</string> + </property> + </widget> + </item> + <item row="10" column="1"> + <widget class="QPushButton" name="renamingRules"> <property name="text"> - <string/> + <string>Renaming rules</string> </property> </widget> </item> </layout> </widget> <resources/> - <connections/> + <connections> + <connection> + <sender>doChecksum</sender> + <signal>clicked(bool)</signal> + <receiver>label_9</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>187</x> + <y>212</y> + </hint> + <hint type="destinationlabel"> + <x>100</x> + <y>223</y> + </hint> + </hints> + </connection> + <connection> + <sender>doChecksum</sender> + <signal>clicked(bool)</signal> + <receiver>checksumOnlyOnError</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>198</x> + <y>212</y> + </hint> + <hint type="destinationlabel"> + <x>190</x> + <y>226</y> + </hint> + </hints> + </connection> + <connection> + <sender>doChecksum</sender> + <signal>clicked(bool)</signal> + <receiver>label_10</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>245</x> + <y>210</y> + </hint> + <hint type="destinationlabel"> + <x>123</x> + <y>251</y> + </hint> + </hints> + </connection> + <connection> + <sender>doChecksum</sender> + <signal>clicked(bool)</signal> + <receiver>checksumIgnoreIfImpossible</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>269</x> + <y>209</y> + </hint> + <hint type="destinationlabel"> + <x>213</x> + <y>247</y> + </hint> + </hints> + </connection> + </connections> </ui> diff --git a/plugins/CopyEngine/Ultracopier-0.3/resources.qrc b/plugins/CopyEngine/Ultracopier-0.3/resources.qrc new file mode 100644 index 0000000..c6ca4ef --- /dev/null +++ b/plugins/CopyEngine/Ultracopier-0.3/resources.qrc @@ -0,0 +1,8 @@ +<RCC> + <qresource prefix="/"> + <file>resources/add.png</file> + <file>resources/edit.png</file> + <file>resources/remove.png</file> + <file>resources/filter.png</file> + </qresource> +</RCC> diff --git a/plugins/CopyEngine/Ultracopier-0.3/resources/add.png b/plugins/CopyEngine/Ultracopier-0.3/resources/add.png Binary files differnew file mode 100644 index 0000000..1e03be9 --- /dev/null +++ b/plugins/CopyEngine/Ultracopier-0.3/resources/add.png diff --git a/plugins/CopyEngine/Ultracopier-0.3/resources/edit.png b/plugins/CopyEngine/Ultracopier-0.3/resources/edit.png Binary files differnew file mode 100644 index 0000000..8072aea --- /dev/null +++ b/plugins/CopyEngine/Ultracopier-0.3/resources/edit.png diff --git a/plugins/CopyEngine/Ultracopier-0.3/resources/filter.png b/plugins/CopyEngine/Ultracopier-0.3/resources/filter.png Binary files differnew file mode 100644 index 0000000..9cabc5a --- /dev/null +++ b/plugins/CopyEngine/Ultracopier-0.3/resources/filter.png diff --git a/plugins/CopyEngine/Ultracopier-0.3/resources/remove.png b/plugins/CopyEngine/Ultracopier-0.3/resources/remove.png Binary files differnew file mode 100644 index 0000000..5b4c488 --- /dev/null +++ b/plugins/CopyEngine/Ultracopier-0.3/resources/remove.png diff --git a/plugins/CopyEngine/Ultracopier-0.3/scanFileOrFolder.cpp b/plugins/CopyEngine/Ultracopier-0.3/scanFileOrFolder.cpp index 4d13fab..e40e941 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/scanFileOrFolder.cpp +++ b/plugins/CopyEngine/Ultracopier-0.3/scanFileOrFolder.cpp @@ -26,7 +26,7 @@ bool scanFileOrFolder::isFinished() void scanFileOrFolder::addToList(const QStringList& sources,const QString& destination) { stopIt=false; - this->sources=sources; + this->sources=parseWildcardSources(sources); this->destination=destination; if(sources.size()>1 || QFileInfo(destination).isDir()) /* Disabled because the separator transformation product bug @@ -37,6 +37,94 @@ void scanFileOrFolder::addToList(const QStringList& sources,const QString& desti ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"addToList("+sources.join(";")+","+destination+")"); } + +QStringList scanFileOrFolder::parseWildcardSources(const QStringList &sources) +{ + QRegExp splitFolder("[/\\\\]"); + QStringList returnList; + int index=0; + while(index<sources.size()) + { + if(sources.at(index).contains("*")) + { + QStringList toParse=sources.at(index).split(splitFolder); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("before wildcard parse: %1, toParse: %2, is valid: %3").arg(sources.at(index)).arg(toParse.join(", ")).arg(splitFolder.isValid())); + QList<QStringList> recomposedSource; + recomposedSource << (QStringList() << ""); + while(toParse.size()>0) + { + if(toParse.first().contains('*')) + { + QString toParseFirst=toParse.first(); + if(toParseFirst=="") + toParseFirst+="/"; + QList<QStringList> newRecomposedSource; + QRegExp toResolv=QRegExp(toParseFirst.replace('*',"[^/\\\\]*")); + int index_recomposedSource=0; + while(index_recomposedSource<recomposedSource.size())//parse each url part + { + QFileInfo info(recomposedSource.at(index_recomposedSource).join("/")); + if(info.isDir()) + { + QDir folder(info.absoluteFilePath()); + QFileInfoList fileFile=folder.entryInfoList(QDir::AllEntries|QDir::NoDotAndDotDot|QDir::Hidden|QDir::System);//QStringList() << toResolv + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("list the folder: %1, with the wildcard: %2").arg(info.absoluteFilePath()).arg(toResolv.pattern())); + int index_fileList=0; + while(index_fileList<fileFile.size()) + { + if(fileFile.at(index_fileList).fileName().contains(toResolv)) + { + QStringList tempList=recomposedSource.at(index_recomposedSource); + tempList << fileFile.at(index_fileList).fileName(); + newRecomposedSource << tempList; + } + index_fileList++; + } + } + index_recomposedSource++; + } + recomposedSource=newRecomposedSource; + } + else + { + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("add toParse: %1").arg(toParse.join("/"))); + int index_recomposedSource=0; + while(index_recomposedSource<recomposedSource.size()) + { + recomposedSource[index_recomposedSource] << toParse.first(); + if(!QFileInfo(recomposedSource.at(index_recomposedSource).join("/")).exists()) + recomposedSource.removeAt(index_recomposedSource); + else + index_recomposedSource++; + } + } + toParse.removeFirst(); + } + int index_recomposedSource=0; + while(index_recomposedSource<recomposedSource.size()) + { + returnList<<recomposedSource.at(index_recomposedSource).join("/"); + index_recomposedSource++; + } + } + else + returnList << sources.at(index); + index++; + } + return returnList; +} + +void scanFileOrFolder::setFilters(QList<Filters_rules> include,QList<Filters_rules> exclude) +{ + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start"); + QMutexLocker lock(&filtersMutex); + this->include_send=include; + this->exclude_send=exclude; + reloadTheNewFilters=true; + haveFilters=include_send.size()>0 || exclude_send.size()>0; + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("haveFilters: %1, include_send.size(): %2, exclude_send.size(): %3").arg(haveFilters).arg(include_send.size()).arg(exclude_send.size())); +} + //set action if Folder are same or exists void scanFileOrFolder::setFolderExistsAction(FolderExistsAction action,QString newName) { @@ -115,24 +203,43 @@ void scanFileOrFolder::listFolder(const QString& source,const QString& destinati case FolderExists_Rename: if(newName=="") { - /// \todo use facility here - if(destinationSuffixPath.contains(folder_isolation)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"pattern: "+folder_isolation.pattern()); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"full: "+destinationSuffixPath); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"prefix: "+prefix); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"suffix: "+suffix); + //resolv the new name + QFileInfo destinationInfo; + int num=1; + do { - prefix=destinationSuffixPath; - suffix=destinationSuffixPath; - prefix.replace(folder_isolation,"\\1"); - suffix.replace(folder_isolation,"\\2"); - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"pattern: "+folder_isolation.pattern()); - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"full: "+destinationSuffixPath); - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"prefix: "+prefix); - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"suffix: "+suffix); - destinationSuffixPath = prefix+tr("Copy of ")+suffix; + if(num==1) + { + if(firstRenamingRule=="") + destinationSuffixPath=tr("%1 - copy").arg(suffix); + else + { + destinationSuffixPath=firstRenamingRule; + destinationSuffixPath.replace("%name%",suffix); + } + } + else + { + if(otherRenamingRule=="") + destinationSuffixPath=tr("%1 - copy (%2)").arg(suffix).arg(num); + else + { + destinationSuffixPath=otherRenamingRule; + destinationSuffixPath.replace("%name%",suffix); + destinationSuffixPath.replace("%number%",QString::number(num)); + } + } + num++; + destinationInfo.setFile(prefix+destinationSuffixPath); } - else - destinationSuffixPath = tr("Copy of ")+"Unknow"; + while(destinationInfo.exists()); } else - destinationSuffixPath = newName+"/"; + destinationSuffixPath = newName; destinationSuffixPath+="/"; finalDest = destination+destinationSuffixPath; break; @@ -160,21 +267,40 @@ void scanFileOrFolder::listFolder(const QString& source,const QString& destinati case FolderExists_Rename: if(newName=="") { - /// \todo use facility here - if(destinationSuffixPath.contains(folder_isolation)) + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"pattern: "+folder_isolation.pattern()); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"full: "+destinationSuffixPath); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"prefix: "+prefix); + ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"suffix: "+suffix); + //resolv the new name + QFileInfo destinationInfo; + int num=1; + do { - prefix=destinationSuffixPath; - suffix=destinationSuffixPath; - prefix.replace(folder_isolation,"\\1"); - suffix.replace(folder_isolation,"\\2"); - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"pattern: "+folder_isolation.pattern()); - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"full: "+destinationSuffixPath); - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"prefix: "+prefix); - ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"suffix: "+suffix); - destinationSuffixPath = prefix+tr("Copy of ")+suffix; + if(num==1) + { + if(firstRenamingRule=="") + destinationSuffixPath=tr("%1 - copy").arg(suffix); + else + { + destinationSuffixPath=firstRenamingRule; + destinationSuffixPath.replace("%name%",suffix); + } + } + else + { + if(otherRenamingRule=="") + destinationSuffixPath=tr("%1 - copy (%2)").arg(suffix).arg(num); + else + { + destinationSuffixPath=otherRenamingRule; + destinationSuffixPath.replace("%name%",suffix); + destinationSuffixPath.replace("%number%",QString::number(num)); + } + } + destinationInfo.setFile(prefix+destinationSuffixPath); + num++; } - else - destinationSuffixPath = tr("Copy of ")+"Unknow"; + while(destinationInfo.exists()); } else destinationSuffixPath = newName; @@ -205,21 +331,114 @@ void scanFileOrFolder::listFolder(const QString& source,const QString& destinati } } while(fileErrorAction==FileError_Retry); /// \todo check here if the folder is not readable or not exists - QFileInfoList entryList=finalSource.entryInfoList(QDir::AllEntries|QDir::NoDotAndDotDot|QDir::Hidden|QDir::System,QDir::DirsFirst);//possible wait time here + QFileInfoList entryList=finalSource.entryInfoList(QDir::AllEntries|QDir::NoDotAndDotDot|QDir::Hidden|QDir::System,QDir::DirsFirst|QDir::Name|QDir::IgnoreCase);//possible wait time here int sizeEntryList=entryList.size(); emit newFolderListing(newSource); if(sizeEntryList==0) emit addToMkPath(finalDest); for (int index=0;index<sizeEntryList;++index) { + QFileInfo fileInfo=entryList.at(index); if(stopIt) return; - QFileInfo fileInfo=entryList.at(index); - if(fileInfo.isDir())//possible wait time here - //listFolder(source,destination,suffixPath+fileInfo.fileName()+QDir::separator()); - listFolder(source,destination,sourceSuffixPath+fileInfo.fileName()+"/",destinationSuffixPath+fileInfo.fileName()+"/");//put unix separator because it's transformed into that's under windows too + if(haveFilters) + { + if(reloadTheNewFilters) + { + QMutexLocker lock(&filtersMutex); + QCoreApplication::processEvents(QEventLoop::AllEvents); + reloadTheNewFilters=false; + this->include=this->include_send; + this->exclude=this->exclude_send; + } + QString fileName=fileInfo.fileName(); + if(fileInfo.isDir()) + { + bool excluded=false,included=(include.size()==0); + int filters_index=0; + while(filters_index<exclude.size()) + { + if(exclude.at(filters_index).apply_on==ApplyOn_folder || exclude.at(filters_index).apply_on==ApplyOn_fileAndFolder) + { + if(fileName.contains(exclude.at(filters_index).regex)) + { + excluded=true; + break; + } + } + filters_index++; + } + if(excluded) + {} + else + { + filters_index=0; + while(filters_index<include.size()) + { + if(include.at(filters_index).apply_on==ApplyOn_folder || include.at(filters_index).apply_on==ApplyOn_fileAndFolder) + { + if(fileName.contains(include.at(filters_index).regex)) + { + included=true; + break; + } + } + filters_index++; + } + if(!included) + {} + else + listFolder(source,destination,sourceSuffixPath+fileInfo.fileName()+"/",destinationSuffixPath+fileName+"/"); + } + } + else + { + bool excluded=false,included=(include.size()==0); + int filters_index=0; + while(filters_index<exclude.size()) + { + if(exclude.at(filters_index).apply_on==ApplyOn_file || exclude.at(filters_index).apply_on==ApplyOn_fileAndFolder) + { + if(fileName.contains(exclude.at(filters_index).regex)) + { + excluded=true; + break; + } + } + filters_index++; + } + if(excluded) + {} + else + { + filters_index=0; + while(filters_index<include.size()) + { + if(include.at(filters_index).apply_on==ApplyOn_file || include.at(filters_index).apply_on==ApplyOn_fileAndFolder) + { + if(fileName.contains(include.at(filters_index).regex)) + { + included=true; + break; + } + } + filters_index++; + } + if(!included) + {} + else + emit fileTransfer(fileInfo.absoluteFilePath(),finalDest+fileName,mode); + } + } + } else - emit fileTransfer(fileInfo.absoluteFilePath(),finalDest+fileInfo.fileName(),mode); + { + if(fileInfo.isDir())//possible wait time here + //listFolder(source,destination,suffixPath+fileInfo.fileName()+QDir::separator()); + listFolder(source,destination,sourceSuffixPath+fileInfo.fileName()+"/",destinationSuffixPath+fileInfo.fileName()+"/");//put unix separator because it's transformed into that's under windows too + else + emit fileTransfer(fileInfo.absoluteFilePath(),finalDest+fileInfo.fileName(),mode); + } } if(mode==Move) { @@ -233,3 +452,9 @@ void scanFileOrFolder::setCheckDestinationFolderExists(const bool checkDestinati { this->checkDestinationExists=checkDestinationFolderExists; } + +void scanFileOrFolder::setRenamingRules(QString firstRenamingRule,QString otherRenamingRule) +{ + this->firstRenamingRule=firstRenamingRule; + this->otherRenamingRule=otherRenamingRule; +} diff --git a/plugins/CopyEngine/Ultracopier-0.3/scanFileOrFolder.h b/plugins/CopyEngine/Ultracopier-0.3/scanFileOrFolder.h index c7ae7fe..787d8af 100644 --- a/plugins/CopyEngine/Ultracopier-0.3/scanFileOrFolder.h +++ b/plugins/CopyEngine/Ultracopier-0.3/scanFileOrFolder.h @@ -11,6 +11,9 @@ #include <QFileInfo> #include <QDir> #include <QSemaphore> +#include <QEventLoop> +#include <QCoreApplication> +#include <QMutexLocker> #include "Environment.h" @@ -34,6 +37,7 @@ public: void setFolderErrorAction(FileErrorAction action); /// \brief set if need check if the destination exists void setCheckDestinationFolderExists(const bool checkDestinationFolderExists); + void setRenamingRules(QString firstRenamingRule,QString otherRenamingRule); signals: void fileTransfer(const QFileInfo &source,const QFileInfo &destination,const CopyMode &mode); /// \brief To debug source @@ -47,6 +51,7 @@ signals: void addToRmPath(const QString& folder,const int& inodeToRemove); public slots: void addToList(const QStringList& sources,const QString& destination); + void setFilters(QList<Filters_rules> include,QList<Filters_rules> exclude); protected: void run(); private: @@ -64,6 +69,19 @@ private: QString prefix; QString suffix; CopyMode mode; + QList<Filters_rules> include,exclude; + QList<Filters_rules> include_send,exclude_send; + bool reloadTheNewFilters; + bool haveFilters; + QMutex filtersMutex; + QString firstRenamingRule; + QString otherRenamingRule; + /** Parse the multiple wildcard source, it allow resolv multiple wildcard with Qt into their path + * The string: /toto/f*a/yy*a/toto.mp3 + * Will give: /toto/f1a/yy*a/toto.mp3, /toto/f2a/yy*a/toto.mp3 + * Will give: /toto/f2a/yy1a/toto.mp3, /toto/f2a/yy2a/toto.mp3 + */ + QStringList parseWildcardSources(const QStringList &sources); }; #endif // SCANFILEORFOLDER_H |