void PropagateItemJob::done(SyncFileItem::Status status, const QString &errorString) { _state = Finished; if (_item->_isRestoration) { if( status == SyncFileItem::Success || status == SyncFileItem::Conflict) { status = SyncFileItem::Restoration; } else { _item->_errorString += tr("; Restoration Failed: %1").arg(errorString); } } else { if( _item->_errorString.isEmpty() ) { _item->_errorString = errorString; } } if( _propagator->_abortRequested.fetchAndAddRelaxed(0) && (status == SyncFileItem::NormalError || status == SyncFileItem::FatalError)) { // an abort request is ongoing. Change the status to Soft-Error status = SyncFileItem::SoftError; } switch( status ) { case SyncFileItem::SoftError: case SyncFileItem::FatalError: // do not blacklist in case of soft error or fatal error. break; case SyncFileItem::NormalError: if (blacklist(_propagator->_journal, *_item) && _item->_hasBlacklistEntry) { // do not error if the item was, and continues to be, blacklisted status = SyncFileItem::FileIgnored; _item->_errorString.prepend(tr("Continue blacklisting:") + " "); } break; case SyncFileItem::Success: case SyncFileItem::Restoration: if( _item->_hasBlacklistEntry ) { // wipe blacklist entry. _propagator->_journal->wipeErrorBlacklistEntry(_item->_file); // remove a blacklist entry in case the file was moved. if( _item->_originalFile != _item->_file ) { _propagator->_journal->wipeErrorBlacklistEntry(_item->_originalFile); } } break; case SyncFileItem::Conflict: case SyncFileItem::FileIgnored: case SyncFileItem::NoStatus: // nothing break; } _item->_status = status; emit itemCompleted(*_item, *this); emit finished(status); }
void SyncEngine::slotItemCompleted(const SyncFileItem &item, const PropagatorJob &job) { const char * instruction_str = csync_instruction_str(item._instruction); qDebug() << Q_FUNC_INFO << item._file << instruction_str << item._status << item._errorString; _progressInfo->setProgressComplete(item); if (item._status == SyncFileItem::FatalError) { emit csyncError(item._errorString); } emit transmissionProgress(*_progressInfo); emit itemCompleted(item, job); }
ProtocolWidget::ProtocolWidget(QWidget *parent) : QWidget(parent), IgnoredIndicatorRole( Qt::UserRole +1 ), _ui(new Ui::ProtocolWidget) { _ui->setupUi(this); connect(ProgressDispatcher::instance(), SIGNAL(progressInfo(QString,ProgressInfo)), this, SLOT(slotProgressInfo(QString,ProgressInfo))); connect(ProgressDispatcher::instance(), SIGNAL(itemCompleted(QString,SyncFileItem,PropagatorJob)), this, SLOT(slotItemCompleted(QString,SyncFileItem,PropagatorJob))); connect(_ui->_treeWidget, SIGNAL(itemActivated(QTreeWidgetItem*,int)), SLOT(slotOpenFile(QTreeWidgetItem*,int))); // Adjust copyToClipboard() when making changes here! QStringList header; header << tr("Time"); header << tr("File"); header << tr("Folder"); header << tr("Action"); header << tr("Size"); _ui->_treeWidget->setHeaderLabels( header ); _ui->_treeWidget->setColumnWidth(1, 180); _ui->_treeWidget->setColumnCount(5); _ui->_treeWidget->setRootIsDecorated(false); _ui->_treeWidget->setTextElideMode(Qt::ElideMiddle); _ui->_treeWidget->header()->setObjectName("ActivityListHeader"); #if defined(Q_OS_MAC) _ui->_treeWidget->setMinimumWidth(400); #endif _ui->_headerLabel->setText(tr("Local sync protocol")); QPushButton *copyBtn = _ui->_dialogButtonBox->addButton(tr("Copy"), QDialogButtonBox::ActionRole); copyBtn->setToolTip( tr("Copy the activity list to the clipboard.")); copyBtn->setEnabled(true); connect(copyBtn, SIGNAL(clicked()), SIGNAL(copyToClipboard())); // this view is used to display all errors such as real errors, soft errors and ignored files // it is instantiated here, but made accessible via the method issueWidget() so that it can // be embedded into another gui element. _issueItemView = new QTreeWidget(this); header.removeLast(); _issueItemView->setHeaderLabels( header ); _issueItemView->setColumnWidth(1, 180); _issueItemView->setColumnCount(4); _issueItemView->setRootIsDecorated(false); _issueItemView->setTextElideMode(Qt::ElideMiddle); _issueItemView->header()->setObjectName("ActivityErrorListHeader"); }