<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">Index: mythplugins/mythmusic/mythmusic/cdrip.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythplugins/mythmusic/mythmusic/cdrip.cpp,v
retrieving revision 1.44
diff -u -r1.44 cdrip.cpp
--- mythplugins/mythmusic/mythmusic/cdrip.cpp	23 Feb 2005 20:41:07 -0000	1.44
+++ mythplugins/mythmusic/mythmusic/cdrip.cpp	19 Apr 2005 20:04:51 -0000
@@ -35,6 +35,7 @@
 #include &lt;mythtv/mythcontext.h&gt;
 #include &lt;mythtv/mythdbcon.h&gt;
 #include &lt;mythtv/mythwidgets.h&gt;
+#include &lt;mythtv/lcddevice.h&gt;
 
 using namespace std;
 
@@ -266,6 +267,7 @@
 
 
     MythPushButton *ripit = new MythPushButton(tr("Import this CD"), firstdiag);
+    ripit-&gt;setFocus ();
     vbox-&gt;addWidget(ripit);
 
     connect(ripit, SIGNAL(clicked()), this, SLOT(ripthedisc())); 
@@ -598,6 +600,31 @@
     done(Rejected);
 }
 
+static long int getSectorCount (QString &amp;cddevice, int tracknum)
+{
+    cdrom_drive *device = cdda_identify(cddevice.ascii(), 0, NULL);
+
+    if (!device)
+        return -1;
+
+    if (cdda_open(device))
+    {
+        cdda_close(device);
+        return -1;
+    }
+
+    // we only care about audio tracks
+    if (cdda_track_audiop (device, tracknum)) {
+        cdda_verbose_set(device, CDDA_MESSAGE_FORGETIT, CDDA_MESSAGE_FORGETIT);
+        long int start = cdda_track_firstsector(device, tracknum);
+        long int end = cdda_track_lastsector(device, tracknum);
+        cdda_close(device);
+        return end - start + 1;        
+    }
+
+    return 0;
+}
+
 void Ripper::ripthedisc(void)
 {
     firstdiag-&gt;hide();
@@ -654,6 +681,23 @@
     if (!musicdir.endsWith("/"))
         musicdir += "/";
 
+    totalSectors = 0;
+    totalSectorsDone = 0;
+    for (int trackno = 0; trackno &lt; decoder-&gt;getNumTracks(); trackno++)
+    {
+        totalSectors += getSectorCount (cddevice, trackno + 1);
+    }
+    overall-&gt;setTotalSteps (totalSectors);
+
+    if (class LCD * lcd = LCD::Get()) 
+    {
+        QString lcd_tots = tr("Importing ") + artistname + " - " + albumname;
+        QPtrList&lt;LCDTextItem&gt; textItems;
+        textItems.setAutoDelete(true);
+        textItems.append(new LCDTextItem(1, ALIGN_CENTERED, lcd_tots, "Generic", false));
+        lcd-&gt;switchToGeneric(&amp;textItems);
+    }
+
     for (int trackno = 0; trackno &lt; decoder-&gt;getNumTracks(); trackno++)
     {
         Encoder *encoder;
@@ -718,7 +762,6 @@
             // Set the flag to show that we have ripped new files
             somethingwasripped = true;
 
-            overall-&gt;setProgress(trackno + 1);
             qApp-&gt;processEvents();
 
             delete encoder;
@@ -821,11 +864,18 @@
         if (every15 &lt;= 0) 
         {
             every15 = 15;
-            current-&gt;setProgress(curpos - start);
+            current-&gt;setProgress(curpos - start);           
+            overall-&gt;setProgress(totalSectorsDone + (curpos - start));
+            if (class LCD * lcd = LCD::Get()) 
+            {
+                float fProgress = (float)(totalSectorsDone + (curpos - start))/totalSectors;
+                lcd-&gt;setGenericProgress(fProgress);
+            }
             qApp-&gt;processEvents();
         }
     }
 
+    totalSectorsDone += end - start + 1;
     current-&gt;setProgress(end);
     qApp-&gt;processEvents();
         
Index: mythplugins/mythmusic/mythmusic/cdrip.h
===================================================================
RCS file: /var/lib/mythcvs/mythplugins/mythmusic/mythmusic/cdrip.h,v
retrieving revision 1.12
diff -u -r1.12 cdrip.h
--- mythplugins/mythmusic/mythmusic/cdrip.h	23 Feb 2005 20:41:07 -0000	1.12
+++ mythplugins/mythmusic/mythmusic/cdrip.h	19 Apr 2005 20:04:51 -0000
@@ -63,6 +63,8 @@
     QProgressBar *current;
 
     int totaltracks;
+    long int totalSectors;
+    long int totalSectorsDone;
 
     QString albumname, artistname, genrename;
 
</pre></body></html>