From 3bbdbec8a3a97fbe076d39ebb4ce9947b1bf9e8e Mon Sep 17 00:00:00 2001 From: "craig.p.drummond" Date: Fri, 7 Dec 2012 19:47:21 +0000 Subject: [PATCH] Prompt before disconnecting a device. --- ChangeLog | 1 + devices/devicespage.cpp | 32 ++++++++++++++++++++++++-------- devices/devicespage.h | 3 +++ 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index b55958bf4..6844165f7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,7 @@ 2. Add 'Set Album Artist from Artist' action to tag editor. 3. Add option to specify max cover size when transfering to device. 4. Remove 'Small Control Buttons' option. +5. Prompt before disconnecting a device. 0.9.1 ----- diff --git a/devices/devicespage.cpp b/devices/devicespage.cpp index b6b4c0d31..092168180 100644 --- a/devices/devicespage.cpp +++ b/devices/devicespage.cpp @@ -144,14 +144,21 @@ void DevicesPage::clear() } QString DevicesPage::activeFsDeviceUdi() const +{ + Device *dev=activeFsDevice(); + return dev ? dev->udi() : QString(); +} + +Device * DevicesPage::activeFsDevice() const { const QModelIndexList selected = view->selectedIndexes(); if (0==selected.size()) { - return QString(); + return 0; } QString udi; + Device *activeDev=0; foreach (const QModelIndex &idx, selected) { QModelIndex index = proxy.mapToSource(idx); MusicLibraryItem *item=static_cast(index.internalPointer()); @@ -165,16 +172,16 @@ QString DevicesPage::activeFsDeviceUdi() const if (item && MusicLibraryItem::Type_Root==item->itemType()) { Device *dev=static_cast(item); if (Device::Ums!=dev->devType() && Device::RemoteFs!=dev->devType()) { - return QString(); + return 0; } - if (!udi.isEmpty()) { - return QString(); + if (activeDev) { + return 0; } - udi=dev->udi(); + activeDev=dev; } } - return udi; + return activeDev; } QList DevicesPage::selectedSongs() const @@ -433,8 +440,13 @@ void DevicesPage::addRemoteDevice() void DevicesPage::forgetRemoteDevice() { #ifdef ENABLE_REMOTE_DEVICES - QString udi=activeFsDeviceUdi(); - if (!udi.isEmpty() && MessageBox::Yes==MessageBox::warningYesNo(this, i18n("Are you sure you wish to forget the selected device?"))) { + Device *dev=activeFsDevice(); + if (!dev) { + return; + } + QString udi=dev->udi(); + QString devName=dev->data(); + if (MessageBox::Yes==MessageBox::warningYesNo(this, i18n("Are you sure you wish to forget '%1'?").arg(devName))) { DevicesModel::self()->removeRemoteDevice(udi); } #endif @@ -451,6 +463,10 @@ void DevicesPage::toggleDevice() MusicLibraryItem *item=static_cast(proxy.mapToSource(selected.first()).internalPointer()); if (MusicLibraryItem::Type_Root==item->itemType()) { + if (static_cast(item)->isConnected() && + MessageBox::No==MessageBox::warningYesNo(this, i18n("Are you sure you wish to disconnect '%1'?").arg(static_cast(item)->data()))) { + return; + } static_cast(item)->toggle(); } } diff --git a/devices/devicespage.h b/devices/devicespage.h index 8f0823c7e..828938379 100644 --- a/devices/devicespage.h +++ b/devices/devicespage.h @@ -64,6 +64,9 @@ public Q_SLOTS: void toggleDevice(); void sync(); +private: + Device * activeFsDevice() const; + Q_SIGNALS: void addToDevice(const QString &from, const QString &to, const QList &songs); void deleteSongs(const QString &from, const QList &songs);