]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinviewcontainer.cpp
Provide a 'int selectedItemsCount() const' interface for performance reasons, so...
[dolphin.git] / src / dolphinviewcontainer.cpp
index 6bc620ee21b217e12bae6a948fa38b30339afd3b..84192239be4565e954a0d3762ba50f9ea4fa9a43 100644 (file)
 #include <kiconeffect.h>
 #include <kio/netaccess.h>
 #include <kio/previewjob.h>
+#include <kmenu.h>
 #include <kmimetyperesolver.h>
+#include <knewmenu.h>
 #include <konqmimedata.h>
+#include <konq_fileitemcapabilities.h>
 #include <konq_operations.h>
 #include <kurl.h>
 
@@ -68,9 +71,7 @@ DolphinViewContainer::DolphinViewContainer(DolphinMainWindow* mainWindow,
     m_filterBar(0),
     m_statusBar(0),
     m_dirLister(0),
-    m_proxyModel(0),
-    m_previousUrl(),
-    m_currentUrl()
+    m_proxyModel(0)
 {
     hide();
 
@@ -171,16 +172,17 @@ DolphinViewContainer::~DolphinViewContainer()
 
 void DolphinViewContainer::setUrl(const KUrl& newUrl)
 {
-    if (newUrl != m_currentUrl) {
-        m_previousUrl = m_currentUrl;
-        m_currentUrl = newUrl;
-        m_urlNavigator->setUrl(newUrl);
-    }
+    m_urlNavigator->setUrl(newUrl);
+
+    // Temporary disable the 'File'->'Create New...' menu until
+    // the write permissions can be checked in a fast way at
+    // DolphinViewContainer::slotDirListerCompleted().
+    m_mainWindow->newMenu()->menu()->setEnabled(false);
 }
 
 const KUrl& DolphinViewContainer::url() const
 {
-    return m_currentUrl;
+    return m_urlNavigator->url();
 }
 
 void DolphinViewContainer::setActive(bool active)
@@ -234,8 +236,19 @@ void DolphinViewContainer::slotDirListerCompleted()
     }
 
     updateStatusBar();
-    m_view->setCurrentItem(m_previousUrl);
     QTimer::singleShot(100, this, SLOT(restoreContentsPos()));
+
+    // Enable the 'File'->'Create New...' menu only if the directory
+    // supports writing.
+    KMenu* createNew = m_mainWindow->newMenu()->menu();
+    KFileItem item = m_dirLister->rootItem();
+    if (item.isNull()) {
+        // it is unclear whether writing is supported
+        createNew->setEnabled(true);
+    } else {
+        KonqFileItemCapabilities capabilities(KFileItemList() << item);
+        createNew->setEnabled(capabilities.supportsWriting());
+    }
 }
 
 void DolphinViewContainer::showItemInfo(const KFileItem& item)