[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/multimedia/k3b
From: Sebastian Trueg <sebastian () trueg ! de>
Date: 2005-07-18 12:32:18
Message-ID: 1121689938.428365.11265.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 435853 by trueg:
Update the device lists when HAL signals devices added or removed.
BUG:109251
M +50 -0 libk3b/tools/k3bdevicecombobox.cpp
M +12 -0 libk3b/tools/k3bdevicecombobox.h
M +14 -8 src/k3bwriterselectionwidget.cpp
M +2 -0 src/k3bwriterselectionwidget.h
M +9 -0 src/misc/k3bcdcopydialog.cpp
M +3 -0 src/misc/k3bcdcopydialog.h
M +7 -0 src/misc/k3bdvdcopydialog.cpp
M +6 -0 src/misc/k3bdvdcopydialog.h
--- trunk/extragear/multimedia/k3b/libk3b/tools/k3bdevicecombobox.cpp #435852:435853
@@ -15,6 +15,8 @@
#include "k3bdevicecombobox.h"
#include <k3bdevice.h>
+#include <k3bdevicemanager.h>
+#include <k3bcore.h>
#include <klocale.h>
@@ -36,6 +38,8 @@
d = new Private();
connect( this, SIGNAL(activated(int)),
this, SLOT(slotActivated(int)) );
+ connect( k3bcore->deviceManager(), SIGNAL(changed(K3bDevice::DeviceManager*)),
+ this, SLOT(slotDeviceManagerChanged(K3bDevice::DeviceManager*)) );
}
@@ -89,6 +93,27 @@
}
+void K3bDeviceComboBox::removeDevice( K3bDevice::Device* dev )
+{
+ if( dev ) {
+ if( d->deviceIndexMap.contains(dev->devicename()) ) {
+ // let's make it easy and recreate the whole list
+ K3bDevice::Device* selDev = selectedDevice();
+ QPtrList<K3bDevice::Device> devices;
+ for( unsigned int i = 0; i < d->devices.size(); ++i )
+ devices.append( d->devices[i] );
+
+ clear();
+
+ devices.removeRef( dev );
+
+ addDevices( devices );
+ setSelectedDevice( selDev );
+ }
+ }
+}
+
+
void K3bDeviceComboBox::addDevices( const QPtrList<K3bDevice::Device>& list )
{
for( QPtrListIterator<K3bDevice::Device> it( list );
@@ -97,6 +122,17 @@
}
+void K3bDeviceComboBox::refreshDevices( const QPtrList<K3bDevice::Device>& list )
+{
+ K3bDevice::Device* selDev = selectedDevice();
+ clear();
+ if( !list.containsRef( selDev ) )
+ selDev = 0;
+ addDevices( list );
+ setSelectedDevice( selDev );
+}
+
+
void K3bDeviceComboBox::setSelectedDevice( K3bDevice::Device* dev )
{
if( dev ) {
@@ -121,4 +157,18 @@
emit selectionChanged( d->devices[i] );
}
+
+void K3bDeviceComboBox::slotDeviceManagerChanged( K3bDevice::DeviceManager* dm )
+{
+ unsigned int i = 0;
+ while( i < d->devices.size() ) {
+ if( !dm->allDevices().containsRef( d->devices[i] ) ) {
+ removeDevice( d->devices[i] );
+ i = 0;
+ }
+ else
+ ++i;
+ }
+}
+
#include "k3bdevicecombobox.moc"
--- trunk/extragear/multimedia/k3b/libk3b/tools/k3bdevicecombobox.h #435852:435853
@@ -22,9 +22,15 @@
namespace K3bDevice {
class Device;
+ class DeviceManager;
}
+/**
+ * A combobox to select a K3b device.
+ *
+ * It automatically removes devices that are removed from the system.
+ */
class LIBK3B_EXPORT K3bDeviceComboBox : public KComboBox
{
Q_OBJECT
@@ -41,11 +47,17 @@
public slots:
void addDevice( K3bDevice::Device* );
void addDevices( const QPtrList<K3bDevice::Device>& );
+ /**
+ * Clears the device combo and tries to keep the current selection
+ */
+ void refreshDevices( const QPtrList<K3bDevice::Device>& );
+ void removeDevice( K3bDevice::Device* );
void setSelectedDevice( K3bDevice::Device* );
void clear();
private slots:
void slotActivated( int );
+ void slotDeviceManagerChanged( K3bDevice::DeviceManager* dm );
private:
class Private;
--- trunk/extragear/multimedia/k3b/src/k3bwriterselectionwidget.cpp #435852:435853
@@ -120,6 +120,10 @@
"writing speeds supported with the mounted media."
"<p>Be aware that this only works with MMC3 compliant "
"writers.") );
+
+ connect( k3bcore->deviceManager(), SIGNAL(changed(K3bDevice::DeviceManager*)),
+ this, SLOT(slotDeviceManagerChanged(K3bDevice::DeviceManager*)) );
+
init();
slotWriterChanged();
@@ -146,15 +150,10 @@
// -- read cd-writers ----------------------------------------------
QPtrList<K3bDevice::Device>& devices = ( d->dvd
- ? k3bcore->deviceManager()->dvdWriter()
- : k3bcore->deviceManager()->cdWriter() );
+ ? k3bcore->deviceManager()->dvdWriter()
+ : k3bcore->deviceManager()->cdWriter() );
+ m_comboWriter->addDevices( devices );
- K3bDevice::Device* dev = devices.first();
- while( dev ) {
- m_comboWriter->addDevice( dev );
- dev = devices.next();
- }
-
k3bcore->config()->setGroup( "General Options" );
K3bDevice::Device *current = k3bcore->deviceManager()->deviceByName( \
k3bcore->config()->readEntry( "current_writer" ) );
@@ -499,4 +498,11 @@
}
+void K3bWriterSelectionWidget::slotDeviceManagerChanged( K3bDevice::DeviceManager* \
dm ) +{
+ // we simply rebuild the device list
+ m_comboWriter->refreshDevices( d->dvd ? dm->dvdWriter() : dm->cdWriter() );
+ slotWriterChanged();
+}
+
#include "k3bwriterselectionwidget.moc"
--- trunk/extragear/multimedia/k3b/src/k3bwriterselectionwidget.h #435852:435853
@@ -26,6 +26,7 @@
class QToolButton;
namespace K3bDevice {
class Device;
+ class DeviceManager;
}
/**
@@ -86,6 +87,7 @@
void slotSpeedChanged( int index );
void slotWriterChanged();
void slotDetermineSupportedWriteSpeeds();
+ void slotDeviceManagerChanged( K3bDevice::DeviceManager* );
private:
void init();
--- trunk/extragear/multimedia/k3b/src/misc/k3bcdcopydialog.cpp #435852:435853
@@ -204,6 +204,8 @@
connect( m_comboCopyMode, SIGNAL(activated(int)), this, SLOT(slotToggleAll()) );
connect( m_checkReadCdText, SIGNAL(toggled(bool)), this, SLOT(slotToggleAll()) );
+ connect( k3bcore->deviceManager(), SIGNAL(changed(K3bDevice::DeviceManager*)),
+ this, SLOT(slotDeviceManagerChanged(K3bDevice::DeviceManager*)) );
QToolTip::add( m_checkIgnoreReadErrors, i18n("Skip unreadable sectors") );
QToolTip::add( m_checkNoCorrection, i18n("Disable the source drive's error \
correction") ); @@ -450,6 +452,7 @@
c->writeEntry( "copy mode", s );
}
+
void K3bCdCopyDialog::loadK3bDefaults()
{
m_writingModeWidget->setWritingMode( K3b::WRITING_MODE_AUTO );
@@ -470,4 +473,10 @@
slotToggleAll();
}
+
+void K3bCdCopyDialog::slotDeviceManagerChanged( K3bDevice::DeviceManager* dm )
+{
+ m_comboSourceDevice->refreshDevices( dm->cdReader() );
+}
+
#include "k3bcdcopydialog.moc"
--- trunk/extragear/multimedia/k3b/src/misc/k3bcdcopydialog.h #435852:435853
@@ -23,6 +23,7 @@
namespace K3bDevice {
class Device;
+ class DeviceManager;
}
class K3bWriterSelectionWidget;
@@ -53,6 +54,8 @@
void slotToggleAll();
+ void slotDeviceManagerChanged( K3bDevice::DeviceManager* dm );
+
protected:
void init();
--- trunk/extragear/multimedia/k3b/src/misc/k3bdvdcopydialog.cpp #435852:435853
@@ -191,6 +191,8 @@
connect( m_checkOnlyCreateImage, SIGNAL(toggled(bool)), this, \
SLOT(slotToggleAll()) ); connect( m_writingModeWidget, \
SIGNAL(writingModeChanged(int)), this, SLOT(slotToggleAll()) );
+ connect( k3bcore->deviceManager(), SIGNAL(changed(K3bDevice::DeviceManager*)),
+ this, SLOT(slotDeviceManagerChanged(K3bDevice::DeviceManager*)) );
QToolTip::add( m_checkIgnoreReadErrors, i18n("Skip unreadable sectors") );
QWhatsThis::add( m_checkIgnoreReadErrors, i18n("<p>If this option is checked and \
K3b is not able to read a sector from the " @@ -366,4 +368,9 @@
}
+void K3bDvdCopyDialog::slotDeviceManagerChanged( K3bDevice::DeviceManager* dm )
+{
+ m_comboSourceDevice->refreshDevices( dm->cdReader() );
+}
+
#include "k3bdvdcopydialog.moc"
--- trunk/extragear/multimedia/k3b/src/misc/k3bdvdcopydialog.h #435852:435853
@@ -19,6 +19,11 @@
#include <k3binteractiondialog.h>
+namespace K3bDevice {
+ class Device;
+ class DeviceManager;
+}
+
class K3bTempDirSelectionWidget;
class K3bWriterSelectionWidget;
class K3bDeviceComboBox;
@@ -38,6 +43,7 @@
private slots:
void slotStartClicked();
void slotToggleAll();
+ void slotDeviceManagerChanged( K3bDevice::DeviceManager* dm );
protected:
void init();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic