diff options
Diffstat (limited to 'plugins/Themes/Oxygen/TransferModel.cpp')
-rw-r--r-- | plugins/Themes/Oxygen/TransferModel.cpp | 168 |
1 files changed, 93 insertions, 75 deletions
diff --git a/plugins/Themes/Oxygen/TransferModel.cpp b/plugins/Themes/Oxygen/TransferModel.cpp index ff09d93..2959598 100644 --- a/plugins/Themes/Oxygen/TransferModel.cpp +++ b/plugins/Themes/Oxygen/TransferModel.cpp @@ -1,4 +1,5 @@ #include "TransferModel.h" +#include "../../../cpp11addition.h" #define COLUMN_COUNT 3 @@ -35,24 +36,24 @@ QVariant TransferModel::data( const QModelIndex& index, int role ) const int row,column; row=index.row(); column=index.column(); - if(index.parent()!=QModelIndex() || row < 0 || row >= transfertItemList.count() || column < 0 || column >= COLUMN_COUNT) + if(index.parent()!=QModelIndex() || row < 0 || (unsigned int)row >= transfertItemList.size() || column < 0 || column >= COLUMN_COUNT) return QVariant(); const TransfertItem& item = transfertItemList.at(row); if(role==Qt::UserRole) - return item.id; + return (quint64)item.id; else if(role==Qt::DisplayRole) { switch(column) { case 0: - return item.source; + return QString::fromStdString(item.source); break; case 1: - return item.size; + return QString::fromStdString(item.size); break; case 2: - return item.destination; + return QString::fromStdString(item.destination); break; default: return QVariant(); @@ -63,9 +64,9 @@ QVariant TransferModel::data( const QModelIndex& index, int role ) const switch(column) { case 0: - if(stopId.contains(item.id)) + if(stopId.find(item.id)!=stopId.cend()) return *stop; - else if(startId.contains(item.id)) + else if(startId.find(item.id)!=startId.cend()) return *start; else return QVariant(); @@ -76,7 +77,8 @@ QVariant TransferModel::data( const QModelIndex& index, int role ) const } else if(role==Qt::BackgroundRole) { - if(!search_text.isEmpty() && (item.source.indexOf(search_text,0,Qt::CaseInsensitive)!=-1 || item.destination.indexOf(search_text,0,Qt::CaseInsensitive)!=-1)) + if(!search_text.empty() && (item.source.find(search_text)!=std::string::npos || + item.destination.find(search_text)!=std::string::npos)) { if(haveSearchItem && searchId==item.id) return QColor(255,150,150,100); @@ -91,13 +93,13 @@ QVariant TransferModel::data( const QModelIndex& index, int role ) const int TransferModel::rowCount( const QModelIndex& parent ) const { - return parent == QModelIndex() ? transfertItemList.count() : 0; + return parent == QModelIndex() ? transfertItemList.size() : 0; } -quint64 TransferModel::firstId() const +uint64_t TransferModel::firstId() const { - if(transfertItemList.count()>0) - return transfertItemList.first().id; + if(transfertItemList.size()>0) + return transfertItemList.front().id; else return 0; } @@ -109,11 +111,11 @@ QVariant TransferModel::headerData( int section, Qt::Orientation orientation, in if ( role == Qt::DisplayRole && orientation == Qt::Horizontal && section >= 0 && section < COLUMN_COUNT ) { switch ( section ) { case 0: - return facilityEngine->translateText(QStringLiteral("Source")); + return QString::fromStdString(facilityEngine->translateText("Source")); case 1: - return facilityEngine->translateText(QStringLiteral("Size")); + return QString::fromStdString(facilityEngine->translateText("Size")); case 2: - return facilityEngine->translateText(QStringLiteral("Destination")); + return QString::fromStdString(facilityEngine->translateText("Destination")); } } @@ -124,7 +126,7 @@ bool TransferModel::setData( const QModelIndex& index, const QVariant& value, in { row=index.row(); column=index.column(); - if(index.parent()!=QModelIndex() || row < 0 || row >= transfertItemList.count() || column < 0 || column >= COLUMN_COUNT) + if(index.parent()!=QModelIndex() || row < 0 || (unsigned int)row >= transfertItemList.size() || column < 0 || column >= COLUMN_COUNT) return false; TransfertItem& item = transfertItemList[row]; @@ -138,17 +140,17 @@ bool TransferModel::setData( const QModelIndex& index, const QVariant& value, in switch(column) { case 0: - item.source=value.toString(); + item.source=value.toString().toStdString(); emit dataChanged(index,index); return true; break; case 1: - item.size=value.toString(); + item.size=value.toString().toStdString(); emit dataChanged(index,index); return true; break; case 2: - item.destination=value.toString(); + item.destination=value.toString().toStdString(); emit dataChanged(index,index); return true; break; @@ -164,7 +166,7 @@ bool TransferModel::setData( const QModelIndex& index, const QVariant& value, in Return[1]: totalSize Return[2]: currentFile */ -QList<quint64> TransferModel::synchronizeItems(const QList<Ultracopier::ReturnActionOnCopyList>& returnActions) +std::vector<uint64_t> TransferModel::synchronizeItems(const std::vector<Ultracopier::ReturnActionOnCopyList>& returnActions) { const QModelIndexList oldIndexes = persistentIndexList(); QModelIndexList newIndexes=oldIndexes; @@ -191,7 +193,7 @@ QList<quint64> TransferModel::synchronizeItems(const QList<Ultracopier::ReturnAc newItem.source=action.addAction.sourceFullPath; newItem.size=facilityEngine->sizeToString(action.addAction.size); newItem.destination=action.addAction.destinationFullPath; - transfertItemList<<newItem; + transfertItemList.push_back(newItem); totalFile++; totalSize+=action.addAction.size; } @@ -201,30 +203,32 @@ QList<quint64> TransferModel::synchronizeItems(const QList<Ultracopier::ReturnAc //bool current_entry= if(action.userAction.position<0) { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("id: %1, position is wrong: %2").arg(action.addAction.id).arg(action.userAction.position)); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("id: %1, position is wrong: %2").arg(action.addAction.id).arg(action.userAction.position).toStdString()); break; } - if(action.userAction.position>(transfertItemList.size()-1)) + if((unsigned int)action.userAction.position>(transfertItemList.size()-1)) { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("id: %1, position is wrong: %2").arg(action.addAction.id).arg(action.userAction.position)); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("id: %1, position is wrong: %2").arg(action.addAction.id).arg(action.userAction.position).toStdString()); break; } if(action.userAction.moveAt<0) { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("id: %1, position is wrong: %2").arg(action.addAction.id).arg(action.userAction.position)); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("id: %1, position is wrong: %2").arg(action.addAction.id).arg(action.userAction.position).toStdString()); break; } - if(action.userAction.moveAt>(transfertItemList.size()-1)) + if((unsigned int)action.userAction.moveAt>(transfertItemList.size()-1)) { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("id: %1, position is wrong: %2").arg(action.addAction.id).arg(action.userAction.position)); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("id: %1, position is wrong: %2").arg(action.addAction.id).arg(action.userAction.position).toStdString()); break; } if(action.userAction.position==action.userAction.moveAt) { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("id: %1, move at same position: %2").arg(action.addAction.id).arg(action.userAction.position)); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("id: %1, move at same position: %2").arg(action.addAction.id).arg(action.userAction.position).toStdString()); break; } - transfertItemList.move(action.userAction.position,action.userAction.moveAt); + const TransfertItem transfertItem=transfertItemList.at(action.userAction.position); + transfertItemList.erase(transfertItemList.cbegin()+action.userAction.position); + transfertItemList.insert(transfertItemList.cbegin()+action.userAction.moveAt,transfertItem); //newIndexes.move(action.userAction.position,action.userAction.moveAt); } break; @@ -234,19 +238,19 @@ QList<quint64> TransferModel::synchronizeItems(const QList<Ultracopier::ReturnAc currentIndexSearch--; if(action.userAction.position<0) { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("id: %1, position is wrong: %3").arg(action.addAction.id).arg(action.userAction.position)); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("id: %1, position is wrong: %3").arg(action.addAction.id).arg(action.userAction.position).toStdString()); break; } - if(action.userAction.position>(transfertItemList.size()-1)) + if((unsigned int)action.userAction.position>(transfertItemList.size()-1)) { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("id: %1, position is wrong: %3").arg(action.addAction.id).arg(action.userAction.position)); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("id: %1, position is wrong: %3").arg(action.addAction.id).arg(action.userAction.position).toStdString()); break; } - transfertItemList.removeAt(action.userAction.position); + transfertItemList.erase(transfertItemList.cbegin()+action.userAction.position); currentFile++; - startId.remove(action.addAction.id); - stopId.remove(action.addAction.id); - internalRunningOperation.remove(action.addAction.id); + startId.erase(action.addAction.id); + stopId.erase(action.addAction.id); + internalRunningOperation.erase(action.addAction.id); //newIndexes.remove(action.userAction.moveAt); } break; @@ -262,20 +266,20 @@ QList<quint64> TransferModel::synchronizeItems(const QList<Ultracopier::ReturnAc break; case Ultracopier::Transfer: { - if(!startId.contains(action.addAction.id)) - startId << action.addAction.id; - stopId.remove(action.addAction.id); - if(internalRunningOperation.contains(action.addAction.id)) + if(startId.find(action.addAction.id)==startId.cend()) + startId.insert(action.addAction.id); + stopId.erase(action.addAction.id); + if(internalRunningOperation.find(action.addAction.id)!=internalRunningOperation.cend()) internalRunningOperation[action.addAction.id].actionType=action.type; else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("unable to found entry for file %1: actionType: Transfer").arg(action.addAction.id)); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("unable to found entry for file %1: actionType: Transfer").arg(action.addAction.id).toStdString()); } break; case Ultracopier::PostOperation: { - if(!stopId.contains(action.addAction.id)) - stopId << action.addAction.id; - startId.remove(action.addAction.id); + if(stopId.find(action.addAction.id)==stopId.cend()) + stopId.insert(action.addAction.id); + startId.erase(action.addAction.id); } break; case Ultracopier::CustomOperation: @@ -284,18 +288,21 @@ QList<quint64> TransferModel::synchronizeItems(const QList<Ultracopier::ReturnAc //without progression if(custom_with_progression) { - if(startId.remove(action.addAction.id)) - if(!stopId.contains(action.addAction.id)) - stopId << action.addAction.id; + if(startId.find(action.addAction.id)!=startId.cend()) + { + startId.erase(action.addAction.id); + if(stopId.find(action.addAction.id)==stopId.cend()) + stopId.insert(action.addAction.id); + } } //with progression else { - stopId.remove(action.addAction.id); - if(!startId.contains(action.addAction.id)) - startId << action.addAction.id; + stopId.erase(action.addAction.id); + if(startId.find(action.addAction.id)==startId.cend()) + startId.insert(action.addAction.id); } - if(internalRunningOperation.contains(action.addAction.id)) + if(internalRunningOperation.find(action.addAction.id)!=internalRunningOperation.cend()) { ItemOfCopyListWithMoreInformations &item=internalRunningOperation[action.addAction.id]; item.actionType=action.type; @@ -316,7 +323,7 @@ QList<quint64> TransferModel::synchronizeItems(const QList<Ultracopier::ReturnAc { const QSet<quint64> ids = oldMapping.values().toSet(); - for ( int i = 0; i < transfertItemList.count(); i++ ) { + for ( unsigned int i = 0; i < transfertItemList.size(); i++ ) { const TransferModel::TransfertItem& item = transfertItemList.at(i); if ( ids.contains( item.id ) ) { @@ -333,7 +340,14 @@ QList<quint64> TransferModel::synchronizeItems(const QList<Ultracopier::ReturnAc changePersistentIndexList( oldIndexes, newIndexes ); emit layoutChanged(); - return QList<quint64>() << totalFile << totalSize << currentFile; + { + std::vector<uint64_t> newList; + newList.resize(3); + newList[0]=totalFile; + newList[1]=totalSize; + newList[2]=currentFile; + return newList; + } } void TransferModel::setFacilityEngine(FacilityInterface * facilityEngine) @@ -341,14 +355,14 @@ void TransferModel::setFacilityEngine(FacilityInterface * facilityEngine) this->facilityEngine=facilityEngine; } -int TransferModel::search(const QString &text,bool searchNext) +int TransferModel::search(const std::string &text, bool searchNext) { emit layoutAboutToBeChanged(); search_text=text; emit layoutChanged(); if(transfertItemList.size()==0) return -1; - if(text.isEmpty()) + if(text.empty()) return -1; if(searchNext) { @@ -360,7 +374,9 @@ int TransferModel::search(const QString &text,bool searchNext) loop_size=transfertItemList.size(); while(index_for_loop<loop_size) { - if(transfertItemList.at(currentIndexSearch).source.indexOf(search_text,0,Qt::CaseInsensitive)!=-1 || transfertItemList.at(currentIndexSearch).destination.indexOf(search_text,0,Qt::CaseInsensitive)!=-1) + const TransfertItem &transfertItem=transfertItemList.at(currentIndexSearch); + if(transfertItem.source.find(search_text)!=std::string::npos || + transfertItem.destination.find(search_text)!=std::string::npos) { haveSearchItem=true; searchId=transfertItemList.at(currentIndexSearch).id; @@ -375,14 +391,14 @@ int TransferModel::search(const QString &text,bool searchNext) return -1; } -int TransferModel::searchPrev(const QString &text) +int TransferModel::searchPrev(const std::string &text) { emit layoutAboutToBeChanged(); search_text=text; emit layoutChanged(); if(transfertItemList.size()==0) return -1; - if(text.isEmpty()) + if(text.empty()) return -1; if(currentIndexSearch==0) currentIndexSearch=loop_size-1; @@ -392,7 +408,9 @@ int TransferModel::searchPrev(const QString &text) loop_size=transfertItemList.size(); while(index_for_loop<loop_size) { - if(transfertItemList.at(currentIndexSearch).source.indexOf(search_text,0,Qt::CaseInsensitive)!=-1 || transfertItemList.at(currentIndexSearch).destination.indexOf(search_text,0,Qt::CaseInsensitive)!=-1) + const TransfertItem &transfertItem=transfertItemList.at(currentIndexSearch); + if(transfertItem.source.find(search_text)!=std::string::npos || + transfertItem.destination.find(search_text)!=std::string::npos) { haveSearchItem=true; searchId=transfertItemList.at(currentIndexSearch).id; @@ -408,19 +426,19 @@ int TransferModel::searchPrev(const QString &text) return -1; } -void TransferModel::setFileProgression(QList<Ultracopier::ProgressionItem> &progressionList) +void TransferModel::setFileProgression(std::vector<Ultracopier::ProgressionItem> &progressionList) { loop_size=progressionList.size(); index_for_loop=0; while(index_for_loop<loop_size) { - if(internalRunningOperation.contains(progressionList.at(index_for_loop).id)) + if(internalRunningOperation.find(progressionList.at(index_for_loop).id)!=internalRunningOperation.cend()) { internalRunningOperation[progressionList.at(index_for_loop).id].generalData.size=progressionList.at(index_for_loop).total; internalRunningOperation[progressionList.at(index_for_loop).id].currentReadProgression=progressionList.at(index_for_loop).currentRead; internalRunningOperation[progressionList.at(index_for_loop).id].currentWriteProgression=progressionList.at(index_for_loop).currentWrite; #ifdef ULTRACOPIER_PLUGIN_DEBUG - progressionList.removeAt(index_for_loop); + progressionList.erase(progressionList.cbegin()+index_for_loop); index_for_loop--; loop_size--; #endif @@ -429,7 +447,7 @@ void TransferModel::setFileProgression(QList<Ultracopier::ProgressionItem> &prog } #ifdef ULTRACOPIER_PLUGIN_DEBUG if(progressionList.size()>0) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("progression remaning items")); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"progression remaning items"); #endif } @@ -441,15 +459,15 @@ TransferModel::currentTransfertItem TransferModel::getCurrentTransfertItem() con returnItem.haveItem=startId.size()>0; if(returnItem.haveItem) { - if(!internalRunningOperation.contains(*startId.constBegin())) + if(internalRunningOperation.find(*startId.cbegin())==internalRunningOperation.cend()) { returnItem.haveItem=false; return returnItem; } - const ItemOfCopyListWithMoreInformations &itemTransfer=internalRunningOperation.value(*startId.constBegin()); + const ItemOfCopyListWithMoreInformations &itemTransfer=internalRunningOperation.at(*startId.cbegin()); returnItem.from=itemTransfer.generalData.sourceFullPath; returnItem.to=itemTransfer.generalData.destinationFullPath; - returnItem.current_file=itemTransfer.generalData.destinationFileName+QStringLiteral(", ")+facilityEngine->sizeToString(itemTransfer.generalData.size); + returnItem.current_file=itemTransfer.generalData.destinationFileName+", "+facilityEngine->sizeToString(itemTransfer.generalData.size); returnItem.id=itemTransfer.generalData.id; switch(itemTransfer.actionType) { @@ -481,20 +499,20 @@ TransferModel::currentTransfertItem TransferModel::getCurrentTransfertItem() con break; //should never pass here case Ultracopier::PostOperation: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("wrong action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType)); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("wrong action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType).toStdString()); returnItem.progressBar_read=65535; returnItem.progressBar_write=65535; break; //should never pass here case Ultracopier::PreOperation: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("wrong action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType)); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("wrong action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType).toStdString()); returnItem.progressBar_read=0; returnItem.progressBar_write=0; break; default: returnItem.progressBar_read=0; returnItem.progressBar_write=0; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("unknow action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType)); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("unknow action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType).toStdString()); break; } } @@ -503,15 +521,15 @@ TransferModel::currentTransfertItem TransferModel::getCurrentTransfertItem() con returnItem.haveItem=stopId.size()>0; if(returnItem.haveItem) { - if(!internalRunningOperation.contains(*stopId.constBegin())) + if(internalRunningOperation.find(*stopId.cbegin())==internalRunningOperation.cend()) { returnItem.haveItem=false; return returnItem; } - const ItemOfCopyListWithMoreInformations &itemTransfer=internalRunningOperation.value(*stopId.constBegin()); + const ItemOfCopyListWithMoreInformations &itemTransfer=internalRunningOperation.at(*stopId.cbegin()); returnItem.from=itemTransfer.generalData.sourceFullPath; returnItem.to=itemTransfer.generalData.destinationFullPath; - returnItem.current_file=itemTransfer.generalData.destinationFileName+QStringLiteral(", ")+facilityEngine->sizeToString(itemTransfer.generalData.size); + returnItem.current_file=itemTransfer.generalData.destinationFileName+", "+facilityEngine->sizeToString(itemTransfer.generalData.size); returnItem.id=itemTransfer.generalData.id; switch(itemTransfer.actionType) { @@ -542,20 +560,20 @@ TransferModel::currentTransfertItem TransferModel::getCurrentTransfertItem() con } break; case Ultracopier::PostOperation: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("wrong action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType)); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("wrong action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType).toStdString()); returnItem.progressBar_read=65535; returnItem.progressBar_write=65535; break; //should never pass here case Ultracopier::PreOperation: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("wrong action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType)); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("wrong action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType).toStdString()); returnItem.progressBar_read=0; returnItem.progressBar_write=0; break; default: returnItem.progressBar_read=65535; returnItem.progressBar_write=65535; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("unknow action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType)); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("unknow action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType).toStdString()); break; } } |