[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdebase/apps/plasma/applets/folderview
From:       Fredrik Höglund <fredrik () kde ! org>
Date:       2010-05-08 0:11:24
Message-ID: 20100508001124.79F2CAC8B0 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1124160 by fredrik:

Split the folder testing code out into a separate class.

 M  +2 -1      CMakeLists.txt  
 A             asyncfiletester.cpp   [License: LGPL (v2+)]
 A             asyncfiletester.h   [License: LGPL (v2+)]
 M  +10 -49    iconview.cpp  
 M  +1 -2      iconview.h  
 M  +9 -2      popupview.cpp  
 M  +1 -1      popupview.h  


--- trunk/KDE/kdebase/apps/plasma/applets/folderview/CMakeLists.txt #1124159:1124160
@@ -21,7 +21,8 @@
     style.cpp
     itemeditor.cpp
     animator.cpp
-    actionoverlay.cpp)
+    actionoverlay.cpp
+    asyncfiletester.cpp)
 
 kde4_add_ui_files(folderview_SRCS
                   folderviewFilterConfig.ui
--- trunk/KDE/kdebase/apps/plasma/applets/folderview/iconview.cpp #1124159:1124160
@@ -39,7 +39,6 @@
 #include <QStyleOptionGraphicsItem>
 
 #include <KDirModel>
-#include <KDesktopFile>
 #include <KFileItemDelegate>
 #include <KGlobalSettings>
 #include <KIcon>
@@ -57,6 +56,7 @@
 #include "previewpluginsmodel.h"
 #include "tooltipwidget.h"
 #include "animator.h"
+#include "asyncfiletester.h"
 
 #include <Plasma/Containment>
 #include <Plasma/Corona>
@@ -1544,7 +1544,6 @@
         // Close the popup view if one is open
         m_toolTipShowTimer.stop();
         m_popupCausedWidget = 0;
-        m_popupUrl = KUrl();
         if (m_popupView) {
             m_popupView->delayedHide();
         }
@@ -1566,56 +1565,20 @@
         return;
     }
 
-    if (m_popupView && m_hoveredIndex == m_popupIndex) {
-        // If we're already showing a popup view for this index
+    if (!m_popupView || m_hoveredIndex != m_popupIndex) {
+        // If we're not already showing a popup view for this index
+        m_popupCausedWidget = causedWidget;
+        AsyncFileTester::checkIfFolder(m_hoveredIndex, this, "checkIfFolderResult");
         return;
     }
-
-    // Decide if we're going to show a popup view or a regular tooltip
-    IconView::ToolTipType type = IconView::FileTip;
-    bool delayedResult = false;
-
-    KFileItem item = m_model->itemForIndex(m_hoveredIndex);
-    KUrl url = item.targetUrl();
-
-    if (item.isDir()) {
-        type = IconView::FolderTip;
-    } else if (item.isDesktopFile()) {
-        // Check if the desktop file is a link to a local folder
-        KDesktopFile file(url.path());
-        if (file.readType() == "Link") {
-            url = file.readUrl();
-            if (url.isLocalFile()) {
-                KFileItem destItem(KFileItem::Unknown, KFileItem::Unknown, url);
-                type = destItem.isDir() ? IconView::FolderTip : IconView::FileTip;
-            } else if (KProtocolInfo::protocolClass(url.protocol()) == \
                QString(":local")) {
-                KIO::StatJob *job = KIO::stat(url, KIO::HideProgressInfo);
-                job->setSide(KIO::StatJob::SourceSide); // We will only read the \
                file
-                connect(job, SIGNAL(result(KJob*)), SLOT(statResult(KJob*)));
-                delayedResult = true;
             }
-        }
-    } 
 
-    m_popupUrl = url;
-    m_popupCausedWidget = causedWidget;
-
-    if (!delayedResult) {
-        triggerToolTip(type);
-    }
-}
-
-void IconView::statResult(KJob *job)
+void IconView::checkIfFolderResult(const QModelIndex &index, bool isFolder)
 {
-    if (!job->error()) {
-        KIO::StatJob *statJob = static_cast<KIO::StatJob*>(job);
-        if (statJob->statResult().isDir()) {
-            triggerToolTip(IconView::FolderTip);
-        } else {
-            triggerToolTip(IconView::FileTip);
+    if (index == m_hoveredIndex) {
+        triggerToolTip(isFolder ? FolderTip : FileTip);
         }
     }
-}
 
 void IconView::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
 {
@@ -2655,7 +2618,6 @@
             return;
         }
 
-        if (!m_popupUrl.isEmpty()) {
             const QPointF viewPos = \
mapFromViewport(visualRect(m_hoveredIndex)).center();  const QPoint scenePos = \
mapToScene(viewPos).toPoint();  QGraphicsView *gv = 0;
@@ -2673,11 +2635,10 @@
             }
 
             const QPoint pos = gv ? gv->mapToGlobal(gv->mapFromScene(scenePos)) : \
                QPoint();
-            m_popupView = new PopupView(m_popupUrl, pos, m_popupShowPreview, \
m_popupPreviewPlugins, this); +        m_popupIndex = m_hoveredIndex;
+        m_popupView = new PopupView(m_popupIndex, pos, m_popupShowPreview, \
                m_popupPreviewPlugins, this);
             connect(m_popupView, SIGNAL(destroyed(QObject*)), \
                SIGNAL(popupViewClosed()));
             connect(m_popupView, SIGNAL(requestClose()), \
                SLOT(popupCloseRequested()));
-            m_popupIndex = m_hoveredIndex;
-        }
     } else if (event->timerId() == m_searchQueryTimer.timerId()) {
         m_searchQuery.clear();
         m_searchQueryTimer.stop();
--- trunk/KDE/kdebase/apps/plasma/applets/folderview/iconview.h #1124159:1124160
@@ -187,9 +187,9 @@
     void popupCloseRequested();
     void dropActionTriggered(QAction *action);
     void dropCompleted();
-    void statResult(KJob *job);
     void repositionWidgetsManually();
     void closeEditor(QGraphicsWidget *editor, QAbstractItemDelegate::EndEditHint \
hint); +    void checkIfFolderResult(const QModelIndex &index, bool isFolder);
 
 private:
     void paintMessage(QPainter *painter, const QRect &rect, const QString &message,
@@ -256,7 +256,6 @@
     ToolTipWidget *m_toolTipWidget;
     QPointer<PopupView> m_popupView;
     QPointer<QWidget> m_popupCausedWidget;
-    KUrl m_popupUrl;
     KonqOperations *m_dropOperation;
     QActionGroup *m_dropActions;
     QPersistentModelIndex m_popupIndex;
--- trunk/KDE/kdebase/apps/plasma/applets/folderview/popupview.cpp #1124159:1124160
@@ -62,7 +62,7 @@
 
 QTime PopupView::s_lastOpenClose;
 
-PopupView::PopupView(const KUrl &url, const QPoint &pos,
+PopupView::PopupView(const QModelIndex &index, const QPoint &pos,
                      const bool &showPreview, const QStringList &previewPlugins,
                      const IconView *parentView)
     : QWidget(0, Qt::X11BypassWindowManagerHint),
@@ -72,7 +72,6 @@
       m_iconView(0),
       m_dirModel(0),
       m_model(0),
-      m_url(url),
       m_actionCollection(this),
       m_newMenu(0),
       m_itemActions(0),
@@ -100,6 +99,14 @@
     pal.setColor(QPalette::Text, \
Plasma::Theme::defaultTheme()->color(Plasma::Theme::TextColor));  setPalette(pal);
 
+    KFileItem item = static_cast<const \
ProxyModel*>(index.model())->itemForIndex(index); +    if (item.isDesktopFile()) {
+        KDesktopFile file(item.localPath());
+        m_url = file.readUrl();
+    } else {
+        m_url = item.targetUrl();
+    }
+
     m_background = new Plasma::FrameSvg(this);
     m_background->setImagePath("widgets/tooltip");
 
--- trunk/KDE/kdebase/apps/plasma/applets/folderview/popupview.h #1124159:1124160
@@ -52,7 +52,7 @@
     Q_OBJECT
 
 public:
-    PopupView(const KUrl &url, const QPoint &pos,
+    PopupView(const QModelIndex &index, const QPoint &pos,
               const bool &showPreview, const QStringList &previewPlugins,
               const IconView *parentView);
     ~PopupView();


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic