1 
2 #include "convertitem.h"
3 #include "filelistitem.h"
4 
5 #include <KStandardDirs>
6 #include <QFile>
7 
8 
ConvertItem(FileListItem * item)9 ConvertItem::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()33 ConvertItem::~ConvertItem()
34 {}
35 
generateTempUrl(const QString & trunk,const QString & extension,bool useSharedMemory)36 KUrl 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()55 void 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