┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/panels/places/placespanel.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2012-06-07 22:59:16 +0200
committerPeter Penz <[email protected]>2012-06-07 23:00:57 +0200
commitc214b3751fe6a09a298d5904b62628caeff3bc56 (patch)
tree7dd2da1602101be36ac001325fc64d1d0574739f /src/panels/places/placespanel.cpp
parentc0533e1aaacf5b5301d3e5dfb9ff7285719f32d1 (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.cpp63
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"