Author: shadzik
Date: Sat Jan  8 19:32:25 2011
New Revision: 12030

Modified:
   PLDLiveInstaller/trunk/PLDLiveInstaller.cpp
   PLDLiveInstaller/trunk/PLDLiveInstaller.h
Log:
- fix crash when using a never before partitioned device (raw device)
- fix crash when partition table and partitions changed while installer was 
running
- add rereadPartitionTable()
- get size of partition while next is clicked, not while partition is selected


Modified: PLDLiveInstaller/trunk/PLDLiveInstaller.cpp
==============================================================================
--- PLDLiveInstaller/trunk/PLDLiveInstaller.cpp (original)
+++ PLDLiveInstaller/trunk/PLDLiveInstaller.cpp Sat Jan  8 19:32:25 2011
@@ -145,6 +145,19 @@
   }
 }
 
+void PLDLiveInstaller::rereadPartitionTable(QString device)
+{
+  qDebug() << "Re-reading partition table for" << device;
+  QStringList args;
+  args.append("blockdev");
+  args.append("--rereadpt");
+  args.append(device);
+  QProcess * blockdev = new QProcess(this);
+  blockdev->start("chroot", args);
+  blockdev->waitForFinished();
+  blockdev->deleteLater();
+}
+
 void PLDLiveInstaller::isRootPartitionSelected(int pos)
 {
   qDebug() << "rootPart Position: " << pos;
@@ -153,8 +166,9 @@
   {
     QString sizeText;
     qlonglong minSize = 3072;
-    destPartition=diskListWidget->parthash->value(availablePartitions[pos-1]);
-    qlonglong curSize = 
destPartition.as<Solid::StorageVolume>()->size()/1024/1024; //MB
+    
//destPartition=diskListWidget->parthash->value(availablePartitions[pos-1]);
+    //qlonglong curSize = 
destPartition.as<Solid::StorageVolume>()->size()/1024/1024; //MB
+    qlonglong curSize = curSizeArray[pos-1];
     QString size = QString::number(curSize);
     if(curSize < minSize)
     {
@@ -176,7 +190,8 @@
       sizeText = "Size: " + size + "MB<br />";
     }
     
-    selRoot=destPartition.as<Solid::Block>()->device();
+    //selRoot=destPartition.as<Solid::Block>()->device();
+    selRoot=availablePartitions[pos-1];
     
     partDescr->setText("Partition details:<br />"
                      "Device: " + selRoot + "<br />"
@@ -1879,6 +1894,7 @@
          setAppropriate(selectPartitionsPage, false);
        else
        {
+         rereadPartitionTable(selectedDisk->toolTip());
          setAppropriate(selectPartitionsPage, true);
        qDebug() << "Selected disk:" << selectedDisk->toolTip();
        if(availablePartitions.count()>0)
@@ -1886,9 +1902,11 @@
        selectedBlockDev = diskListWidget->devhash->value(selectedDisk->text());
        if (selectedBlockDev.udi() != NULL) {
        QString dev = selectedBlockDev.as<Solid::Block>()->device();
+       int i = 0;
        foreach (Solid::Device partDev, 
Solid::Device::listFromType(Solid::DeviceInterface::Block, 
selectedBlockDev.udi()))
        {
          QString part = partDev.as<Solid::Block>()->device();
+         curSizeArray[i++] = 
partDev.as<Solid::StorageVolume>()->size()/1024/1024; //MB
          availablePartitions.append(part);
          qDebug() << dev << "has partition: " << part;
        }

Modified: PLDLiveInstaller/trunk/PLDLiveInstaller.h
==============================================================================
--- PLDLiveInstaller/trunk/PLDLiveInstaller.h   (original)
+++ PLDLiveInstaller/trunk/PLDLiveInstaller.h   Sat Jan  8 19:32:25 2011
@@ -71,6 +71,8 @@
     void removeJunk(QString filedir, QString argstorm);
     void substr(QString file, QString string1, QString string2);
     void toggleService(QString service, bool action);
+    qlonglong curSizeArray[256];
+    void rereadPartitionTable(QString device);
     
 public:
     PLDLiveInstaller( QWidget * parent = 0 );
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to