From 50824cafe91fc26828a2abe4e93b9d3179e4ac25 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Thu, 11 Aug 2011 22:10:14 +0200 Subject: [PATCH] Make AskForScan() per-device rather than per device lister and fix cddadevice to use the url rather than the unique id. --- src/devices/cddadevice.cpp | 4 ++-- src/devices/cddalister.h | 2 +- src/devices/devicelister.h | 2 +- src/devices/devicemanager.cpp | 2 +- src/devices/deviceview.cpp | 3 ++- src/devices/macdevicelister.h | 1 + src/devices/macdevicelister.mm | 4 ++++ 7 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/devices/cddadevice.cpp b/src/devices/cddadevice.cpp index d1eaf6136..5a1fbdee4 100644 --- a/src/devices/cddadevice.cpp +++ b/src/devices/cddadevice.cpp @@ -53,7 +53,7 @@ void CddaDevice::Init() { return; } - GST_CDDA_BASE_SRC(cdda_)->device = g_strdup (unique_id_.toLocal8Bit().constData()); + GST_CDDA_BASE_SRC(cdda_)->device = g_strdup (url_.path().toLocal8Bit().constData()); // Change the element's state to ready and paused, to be able to query it if (gst_element_set_state(cdda_, GST_STATE_READY) == GST_STATE_CHANGE_FAILURE || @@ -88,7 +88,7 @@ void CddaDevice::Init() { song.set_id(track_number); song.set_valid(true); song.set_filetype(Song::Type_Cdda); - song.set_url(QUrl(QString("cdda://%1/%2").arg(unique_id()).arg(track_number))); + song.set_url(QUrl(QString("cdda://%1/%2").arg(url_.path()).arg(track_number))); song.set_title(QString("Track %1").arg(track_number)); song.set_track(track_number); songs << song; diff --git a/src/devices/cddalister.h b/src/devices/cddalister.h index 037b3c442..dd6c728d9 100644 --- a/src/devices/cddalister.h +++ b/src/devices/cddalister.h @@ -37,7 +37,7 @@ public: quint64 DeviceCapacity(const QString& id); quint64 DeviceFreeSpace(const QString& id); QVariantMap DeviceHardwareInfo(const QString& id); - bool AskForScan() { return false; } + bool AskForScan(const QString&) const { return false; } QString MakeFriendlyName(const QString&); QList MakeDeviceUrls(const QString&); void UnmountDevice(const QString&); diff --git a/src/devices/devicelister.h b/src/devices/devicelister.h index bcaf705db..4003fb8fc 100644 --- a/src/devices/devicelister.h +++ b/src/devices/devicelister.h @@ -53,7 +53,7 @@ public: // When connecting to a device for the first time, do we want an user's // confirmation for scanning it? (by default yes) - virtual bool AskForScan() { return true; } + virtual bool AskForScan(const QString&) const { return true; } virtual QString MakeFriendlyName(const QString& id) = 0; virtual QList MakeDeviceUrls(const QString& id) = 0; diff --git a/src/devices/devicemanager.cpp b/src/devices/devicemanager.cpp index 887ab7c89..3e159ab15 100644 --- a/src/devices/devicemanager.cpp +++ b/src/devices/devicemanager.cpp @@ -319,7 +319,7 @@ QVariant DeviceManager::data(const QModelIndex& index, int role) const { if (info.database_id_ == -1 && !info.BestBackend()->lister_->DeviceNeedsMount(info.BestBackend()->unique_id_)) { - if (info.BestBackend()->lister_->AskForScan()) { + if (info.BestBackend()->lister_->AskForScan(info.BestBackend()->unique_id_)) { boost::scoped_ptr dialog(new QMessageBox( QMessageBox::Information, tr("Connect device"), tr("This is the first time you have connected this device. Clementine will now scan the device to find music files - this may take some time."), diff --git a/src/devices/deviceview.cpp b/src/devices/deviceview.cpp index 084dcf179..49d5e49f2 100644 --- a/src/devices/deviceview.cpp +++ b/src/devices/deviceview.cpp @@ -308,8 +308,9 @@ void DeviceView::DeviceDisconnected(int row) { void DeviceView::Forget() { QModelIndex device_idx = MapToDevice(menu_index_); + QString unique_id = manager_->data(device_idx, DeviceManager::Role_UniqueId).toString(); if (manager_->GetLister(device_idx.row()) && - manager_->GetLister(device_idx.row())->AskForScan()) { + manager_->GetLister(device_idx.row())->AskForScan(unique_id)) { boost::scoped_ptr dialog(new QMessageBox( QMessageBox::Question, tr("Forget device"), tr("Forgetting a device will remove it from this list and Clementine will have to rescan all the songs again next time you connect it."), diff --git a/src/devices/macdevicelister.h b/src/devices/macdevicelister.h index 75cc99080..daf70af7c 100644 --- a/src/devices/macdevicelister.h +++ b/src/devices/macdevicelister.h @@ -24,6 +24,7 @@ class MacDeviceLister : public DeviceLister { virtual quint64 DeviceCapacity(const QString& id); virtual quint64 DeviceFreeSpace(const QString& id); virtual QVariantMap DeviceHardwareInfo(const QString& id); + virtual bool AskForScan(const QString& serial) const; virtual QString MakeFriendlyName(const QString& id); virtual QList MakeDeviceUrls(const QString& id); diff --git a/src/devices/macdevicelister.mm b/src/devices/macdevicelister.mm index dde8db20f..3ca19e5e8 100644 --- a/src/devices/macdevicelister.mm +++ b/src/devices/macdevicelister.mm @@ -823,6 +823,10 @@ quint64 MacDeviceLister::DeviceFreeSpace(const QString& serial){ QVariantMap MacDeviceLister::DeviceHardwareInfo(const QString& serial){return QVariantMap();} +bool MacDeviceLister::AskForScan(const QString& serial) const { + return !IsCDDevice(serial); +} + void MacDeviceLister::UnmountDevice(const QString& serial) { if (IsMTPSerial(serial)) return;