1 2 #include "convertitem.h" 3 #include "filelistitem.h" 4 5 #include <KStandardDirs> 6 #include <QFile> 7 8 ConvertItem(FileListItem * item)9ConvertItem::ConvertItem( FileListItem *item ) 10 : fileListItem( item ) 11 { 12 getTime = 0.0f; 13 replaygainTime = 0.0f; 14 finishedTime = 0.0f; 15 progress = 0.0f; 16 17 backendPlugin = 0; 18 backendID = -1; 19 20 take = 0; 21 lastTake = 0; 22 23 conversionPipesStep = -1; 24 25 killed = false; 26 internalReplayGainUsed = false; 27 28 mode = initial; 29 state = initial; 30 logID = -1; 31 } 32 ~ConvertItem()33ConvertItem::~ConvertItem() 34 {} 35 generateTempUrl(const QString & trunk,const QString & extension,bool useSharedMemory)36KUrl ConvertItem::generateTempUrl( const QString& trunk, const QString& extension, bool useSharedMemory ) 37 { 38 QString tempUrl; 39 int i=0; 40 do { 41 if( useSharedMemory ) 42 { 43 tempUrl = "/dev/shm/" + QString("soundkonverter_temp_%1_%2_%3.%4").arg(trunk).arg(logID).arg(i).arg(extension); 44 } 45 else 46 { 47 tempUrl = KStandardDirs::locateLocal( "tmp", QString("soundkonverter_temp_%1_%2_%3.%4").arg(trunk).arg(logID).arg(i).arg(extension) ); 48 } 49 i++; 50 } while( tempConvertUrls.contains(KUrl(tempUrl)) || QFile::exists(tempUrl) ); 51 52 return KUrl(tempUrl); 53 } 54 updateTimes()55void ConvertItem::updateTimes() 56 { 57 float totalTime = 0.0f; 58 getTime = ( mode & ConvertItem::get ) ? 0.8f : 0.0f; // TODO file size? connection speed? 59 totalTime += getTime; 60 if( conversionPipes.count() > take ) 61 { 62 foreach( const ConversionPipeTrunk& trunk, conversionPipes.at(take).trunks ) 63 { 64 float time = 0.0f; 65 66 if( trunk.codecFrom == "audio cd" ) 67 time += 1.0f; 68 else if( trunk.codecFrom != "wav" ) 69 time += 0.4f; 70 71 if( trunk.codecTo != "wav" ) 72 time += 1.0f; 73 74 if( trunk.codecFrom == "wav" && trunk.codecTo == "wav" ) 75 time += 0.4f; 76 77 totalTime += time; 78 79 convertTimes.append( time ); 80 } 81 } 82 replaygainTime = ( mode & ConvertItem::replaygain ) ? 0.2f : 0.0f; 83 totalTime += replaygainTime; 84 85 const float length = fileListItem ? fileListItem->length : 200.0f; 86 87 getTime *= length/totalTime; 88 for( int i=0; i<convertTimes.count(); i++ ) 89 { 90 convertTimes[i] *= length/totalTime; 91 } 92 replaygainTime *= length/totalTime; 93 94 finishedTime = 0.0f; 95 // switch( state ) 96 // { 97 // case ConvertItem::get: 98 // break; 99 // case ConvertItem::convert: 100 // finishedTime += getTime; 101 // break; 102 // case ConvertItem::rip: 103 // finishedTime += getTime; 104 // break; 105 // case ConvertItem::decode: 106 // finishedTime += getTime; 107 // break; 108 // case ConvertItem::filter: 109 // finishedTime += getTime; 110 // finishedTime += convertTimes.at(0); 111 // break; 112 // case ConvertItem::encode: 113 // case ConvertItem::replaygain: 114 // } 115 } 116 117