diff options
| author | Peter Penz <[email protected]> | 2012-06-07 22:59:16 +0200 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2012-06-07 23:00:57 +0200 |
| commit | c214b3751fe6a09a298d5904b62628caeff3bc56 (patch) | |
| tree | 7dd2da1602101be36ac001325fc64d1d0574739f /src/panels/places/placespanel.cpp | |
| parent | c0533e1aaacf5b5301d3e5dfb9ff7285719f32d1 (diff) | |
Setup storage device if needed
BUG: 301071
FIXED-IN: 4.9.0
Diffstat (limited to 'src/panels/places/placespanel.cpp')
| -rw-r--r-- | src/panels/places/placespanel.cpp | 63 |
1 files changed, 54 insertions, 9 deletions
diff --git a/src/panels/places/placespanel.cpp b/src/panels/places/placespanel.cpp index 7016b039d..64de516fa 100644 --- a/src/panels/places/placespanel.cpp +++ b/src/panels/places/placespanel.cpp @@ -50,7 +50,9 @@ PlacesPanel::PlacesPanel(QWidget* parent) : Panel(parent), m_controller(0), - m_model(0) + m_model(0), + m_storageSetupFailedUrl(), + m_triggerStorageSetupButton() { } @@ -107,18 +109,12 @@ void PlacesPanel::showEvent(QShowEvent* event) void PlacesPanel::slotItemActivated(int index) { - const KUrl url = m_model->data(index).value("url").value<KUrl>(); - if (!url.isEmpty()) { - emit placeActivated(PlacesItemModel::convertedUrl(url)); - } + triggerItem(index, Qt::LeftButton); } void PlacesPanel::slotItemMiddleClicked(int index) { - const KUrl url = m_model->data(index).value("url").value<KUrl>(); - if (!url.isEmpty()) { - emit placeMiddleClicked(PlacesItemModel::convertedUrl(url)); - } + triggerItem(index, Qt::MiddleButton); } void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos) @@ -278,6 +274,25 @@ void PlacesPanel::slotTrashUpdated(KJob* job) org::kde::KDirNotify::emitFilesAdded("trash:/"); } +void PlacesPanel::slotStorageSetupDone(int index, bool success) +{ + disconnect(m_model, SIGNAL(storageSetupDone(int,bool)), + this, SLOT(slotStorageSetupDone(int,bool))); + + if (m_triggerStorageSetupButton == Qt::NoButton) { + return; + } + + if (success) { + Q_ASSERT(!m_model->storageSetupNeeded(index)); + triggerItem(index, m_triggerStorageSetupButton); + m_triggerStorageSetupButton = Qt::NoButton; + } else { + setUrl(m_storageSetupFailedUrl); + m_storageSetupFailedUrl = KUrl(); + } +} + void PlacesPanel::emptyTrash() { const QString text = i18nc("@info", "Do you really want to empty the Trash? All items will be deleted."); @@ -346,4 +361,34 @@ void PlacesPanel::selectClosestItem() selectionManager->setSelected(index); } +void PlacesPanel::triggerItem(int index, Qt::MouseButton button) +{ + const PlacesItem* item = m_model->placesItem(index); + if (!item) { + return; + } + + if (m_model->storageSetupNeeded(index)) { + m_triggerStorageSetupButton = button; + m_storageSetupFailedUrl = url(); + + connect(m_model, SIGNAL(storageSetupDone(int,bool)), + this, SLOT(slotStorageSetupDone(int,bool))); + + m_model->requestStorageSetup(index); + } else { + m_triggerStorageSetupButton = Qt::NoButton; + + const KUrl url = m_model->data(index).value("url").value<KUrl>(); + if (!url.isEmpty()) { + if (button == Qt::MiddleButton) { + emit placeMiddleClicked(PlacesItemModel::convertedUrl(url)); + } else { + emit placeActivated(PlacesItemModel::convertedUrl(url)); + } + } + } +} + + #include "placespanel.moc" |
