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

List:       kfm-devel
Subject:    Re: KLook - quick preview extension for Dolphin
From:       Sergey Borovkov <serge.borovkov () gmail ! com>
Date:       2012-08-28 12:28:07
Message-ID: CACYfbRga9PD9Q_L26-f7L5tMcfE44L0sUmCG8MZXtJFHYswGEQ () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Here are fixed versions. (btw - to make klook icon visible you need to
enable it in dolphin general settings).
On Tue, Aug 28, 2012 at 11:37 AM, Sergey Borovkov
<serge.borovkov@gmail.com>wrote:

> Sure, I will fix that soon, sorry
>
>
> On Tue, Aug 28, 2012 at 12:32 AM, Frank Reininghaus <
> frank78ac@googlemail.com> wrote:
>
>> Hi Sergey,
>>
>> 2012/8/8 Sergey Borovkov:
>> > Hi, please take a look at our application for quick file preview called
>> > Klook. You can read about it here
>> >
>> http://lists-archives.com/kde-devel/28083-several-new-utilities-for-kde-klook-and-stackfolder.html
>> > Since that time we have added support for pdf, odt and some other types
>> > using Okular KPart.
>> > We would like to integrate Klook in Dolphin and make neccessary
>> changes/work
>> > for this. You can find KLook sources here - git://anongit.kde.org/klookor
>> > here https://abf.rosalinux.ru/uxteam/KLook
>>
>> I just wanted to try KLook and cloned the repository, but neither of
>> the patches in the dolphin-patches/ directory can be applied to
>> master. Could you fix that, please?
>>
>> Thanks and best regards,
>> Frank
>>
>
>

[Attachment #5 (text/html)]

Here are fixed versions. (btw - to make klook icon visible you need to enable it in \
dolphin general settings).<br><div class="gmail_quote">On Tue, Aug 28, 2012 at 11:37 \
AM, Sergey Borovkov <span dir="ltr">&lt;<a href="mailto:serge.borovkov@gmail.com" \
target="_blank">serge.borovkov@gmail.com</a>&gt;</span> wrote:<br> <blockquote \
class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex">Sure, I will fix that soon, sorry<div class="HOEnZb"><div \
class="h5"><br><br><div class="gmail_quote">On Tue, Aug 28, 2012 at 12:32 AM, Frank \
Reininghaus <span dir="ltr">&lt;<a href="mailto:frank78ac@googlemail.com" \
target="_blank">frank78ac@googlemail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex"><div>Hi Sergey,<br> <br>
2012/8/8 Sergey Borovkov:<br>
</div><div><div>&gt; Hi, please take a look at our application for quick file preview \
called<br> &gt; Klook. You can read about it here<br>
&gt; <a href="http://lists-archives.com/kde-devel/28083-several-new-utilities-for-kde-klook-and-stackfolder.html" \
target="_blank">http://lists-archives.com/kde-devel/28083-several-new-utilities-for-kde-klook-and-stackfolder.html</a><br>



&gt; Since that time we have added support for pdf, odt and some other types<br>
&gt; using Okular KPart.<br>
&gt; We would like to integrate Klook in Dolphin and make neccessary changes/work<br>
&gt; for this. You can find KLook sources here - git://<a \
href="http://anongit.kde.org/klook" target="_blank">anongit.kde.org/klook</a> or<br> \
&gt; here <a href="https://abf.rosalinux.ru/uxteam/KLook" \
target="_blank">https://abf.rosalinux.ru/uxteam/KLook</a><br> <br>
</div></div>I just wanted to try KLook and cloned the repository, but neither of<br>
the patches in the dolphin-patches/ directory can be applied to<br>
master. Could you fix that, please?<br>
<br>
Thanks and best regards,<br>
Frank<br>
</blockquote></div><br>
</div></div></blockquote></div><br>

--047d7b86f5a221b50804c8529340--


["dolphin-klook-space-patch.diff" (application/octet-stream)]

diff --git a/dolphin/src/dolphinmainwindow.cpp b/dolphin/src/dolphinmainwindow.cpp
index d83c9de..63d7d68 100644
--- a/dolphin/src/dolphinmainwindow.cpp
+++ b/dolphin/src/dolphinmainwindow.cpp
@@ -85,6 +85,8 @@
 #include <QClipboard>
 #include <QToolButton>
 #include <QSplitter>
+#include <QProcess>
+#include <QApplication>
 
 namespace {
     // Used for GeneralSettings::version() to determine whether
@@ -118,7 +120,8 @@ DolphinMainWindow::DolphinMainWindow() :
     m_settingsDialog(),
     m_controlButton(0),
     m_updateToolBarTimer(0),
-    m_lastHandleUrlStatJob(0)
+    m_lastHandleUrlStatJob(0),
+    m_isFocusOnTerminal(false)
 {
     // Workaround for a X11-issue in combination with KModifierInfo
     // (see DolphinContextMenu::initializeModifierKeyInfo() for
@@ -236,6 +239,8 @@ DolphinMainWindow::DolphinMainWindow() :
     if (!showMenu) {
         createControlButton();
     }
+
+    connect (qApp, SIGNAL(focusChanged(QWidget*,QWidget*)), this, \
SLOT(focusChanged(QWidget*,QWidget*)));  }
 
 DolphinMainWindow::~DolphinMainWindow()
@@ -400,6 +405,15 @@ void DolphinMainWindow::slotSelectionChanged(const \
KFileItemList& selection)  compareFilesAction->setEnabled(false);
     }
 
+
+    //KLook
+    QAction* openInKLook = actionCollection()->action("open_in_KLook");
+    if ((selectedUrlsCount > 0) && (!m_isFocusOnTerminal)){
+        openInKLook->setEnabled(true);
+    } else {
+        openInKLook->setEnabled(false);
+    }
+
     emit selectionChanged(selection);
 }
 
@@ -1651,6 +1665,14 @@ void DolphinMainWindow::setupActions()
     openInNewWindow->setText(i18nc("@action:inmenu", "Open in New Window"));
     openInNewWindow->setIcon(KIcon("window-new"));
     connect(openInNewWindow, SIGNAL(triggered()), this, SLOT(openInNewWindow()));
+
+    // KLook
+    KAction* openInKLook = actionCollection()->addAction("open_in_KLook");
+    openInKLook->setText(i18nc("@action:inmenu", "Preview"));
+    openInKLook->setShortcut(Qt::Key_Space);
+    openInKLook->setIcon(KIcon("klook"));
+    openInKLook->setEnabled(false);
+    connect(openInKLook, SIGNAL(triggered()), this, SLOT(previewItem()));
 }
 
 void DolphinMainWindow::setupDockWidgets()
@@ -2130,4 +2152,43 @@ void DolphinMainWindow::UndoUiInterface::jobError(KIO::Job* \
job)  }
 }
 
+void DolphinMainWindow::previewItem()
+{
+    const KFileItemList list = m_activeViewContainer->view()->selectedItems();
+    QStringList urlList;
+    foreach(KFileItem item, list)
+    {
+        urlList.append(item.url().path());
+    }
+    if (!list.isEmpty())
+    {
+        QProcess* process = new QProcess();
+        connect(process,SIGNAL(finished(int)),process,SLOT(deleteLater()));
+        process->start(QString("klook"), urlList);
+    }
+}
+
+void DolphinMainWindow::focusChanged(QWidget *old, QWidget *now)
+{
+#ifndef Q_OS_WIN
+    if (now)
+    {
+        if (QString(now->metaObject()->className()).contains("Konsole::TerminalDisplay"))
 +        {
+            QAction* openInKLook = actionCollection()->action("open_in_KLook");
+            m_isFocusOnTerminal = true;
+            openInKLook->setEnabled(false);
+        }
+    }
+    if (old)
+    {
+        if (QString(old->metaObject()->className()).contains("Konsole::TerminalDisplay"))
 +        {
+            QAction* openInKLook = actionCollection()->action("open_in_KLook");
+            m_isFocusOnTerminal = false;
+            openInKLook->setEnabled(true);
+        }
+    }
+#endif
+}
 #include "dolphinmainwindow.moc"
diff --git a/dolphin/src/dolphinmainwindow.h b/dolphin/src/dolphinmainwindow.h
index ab79fb0..f61f173 100644
--- a/dolphin/src/dolphinmainwindow.h
+++ b/dolphin/src/dolphinmainwindow.h
@@ -36,6 +36,7 @@
 
 typedef KIO::FileUndoManager::CommandType CommandType;
 
+class DolphinDockWidget;
 class DolphinViewActionHandler;
 class DolphinApplication;
 class DolphinSettingsDialog;
@@ -51,6 +52,7 @@ class KUrl;
 class QSplitter;
 class QToolButton;
 class QVBoxLayout;
+class Panel;
 
 /**
  * @short Main window for Dolphin.
@@ -102,6 +104,8 @@ public:
      */
     KNewFileMenu* newFileMenu() const;
 
+    void focusChanged(QWidget *old, QWidget *now);
+
 public slots:
     /**
      * Pastes the clipboard data into the currently selected folder
@@ -367,6 +371,12 @@ private slots:
     void openInNewTab();
 
     /**
+     * Opens the selected files in KLook.
+     */
+
+    void previewItem();
+
+    /**
      * Opens the selected folder in a new window.
      */
     void openInNewWindow();
@@ -588,6 +598,7 @@ private:
     QTimer* m_updateToolBarTimer;
 
     KIO::Job* m_lastHandleUrlStatJob;
+    bool m_isFocusOnTerminal;
 };
 
 inline DolphinViewContainer* DolphinMainWindow::activeViewContainer() const


["dolphin-overlay-icon-patch.diff" (application/octet-stream)]

diff --git a/dolphin/src/CMakeLists.txt b/dolphin/src/CMakeLists.txt
index 1a121f8..61ba0b6 100644
--- a/dolphin/src/CMakeLists.txt
+++ b/dolphin/src/CMakeLists.txt
@@ -27,6 +27,7 @@ set(dolphinprivate_LIB_SRCS
     kitemviews/kitemlistgroupheader.cpp
     kitemviews/kitemlistheader.cpp
     kitemviews/kitemlistselectionmanager.cpp
+    kitemviews/kitemlistklooktoggle.cpp
     kitemviews/kitemliststyleoption.cpp
     kitemviews/kitemlistview.cpp
     kitemviews/kitemlistwidget.cpp
diff --git a/dolphin/src/dolphinmainwindow.cpp b/dolphin/src/dolphinmainwindow.cpp
index 63d7d68..9921d9f 100644
--- a/dolphin/src/dolphinmainwindow.cpp
+++ b/dolphin/src/dolphinmainwindow.cpp
@@ -2008,6 +2008,9 @@ void \
DolphinMainWindow::connectViewSignals(DolphinViewContainer* container)  this, \
SLOT(goBack()));  connect(view, SIGNAL(goForwardRequested()),
             this, SLOT(goForward()));
+    connect(view, SIGNAL(klookTrigger()),
+            this, SLOT(previewItem()));
+
 
     const KUrlNavigator* navigator = container->urlNavigator();
     connect(navigator, SIGNAL(urlChanged(KUrl)),
@@ -2154,12 +2157,20 @@ void DolphinMainWindow::UndoUiInterface::jobError(KIO::Job* \
job)  
 void DolphinMainWindow::previewItem()
 {
-    const KFileItemList list = m_activeViewContainer->view()->selectedItems();
+    KFileItemList list;
+    int index = 0;
+    if ( m_activeViewContainer->view()->selectedItemsCount() > 1) {
+        list = m_activeViewContainer->view()->selectedItems();
+    } else {
+        list = m_activeViewContainer->view()->sortedItems();
+        index = list.indexOf( m_activeViewContainer->view()->selectedItems().at(0));
+    }
     QStringList urlList;
     foreach(KFileItem item, list)
     {
         urlList.append(item.url().path());
     }
+    urlList.append("-i " + QString::number(index , 10));
     if (!list.isEmpty())
     {
         QProcess* process = new QProcess();
diff --git a/dolphin/src/kitemviews/kfileitemlistwidget.cpp \
b/dolphin/src/kitemviews/kfileitemlistwidget.cpp index 3a77241..b816fb8 100644
--- a/dolphin/src/kitemviews/kfileitemlistwidget.cpp
+++ b/dolphin/src/kitemviews/kfileitemlistwidget.cpp
@@ -70,6 +70,44 @@ QString KFileItemListWidgetInformant::roleText(const QByteArray& \
role,  return text;
 }
 
+QRectF KFileItemListWidget::klookToggleRect() const
+{
+    const_cast<KFileItemListWidget *>(this)->triggerCacheRefreshing();
+
+    const int iconHeight = styleOption().iconSize;
+
+    int toggleSize = KIconLoader::SizeSmall;
+    if (iconHeight >= KIconLoader::SizeEnormous) {
+        toggleSize = KIconLoader::SizeMedium;
+    } else if (iconHeight >= KIconLoader::SizeLarge) {
+        toggleSize = KIconLoader::SizeSmallMedium;
+    }
+
+    QPointF pos = QPointF(iconRect().topRight().rx() - toggleSize, \
iconRect().topRight().ry()); +
+    // If the selection toggle has a very small distance to the
+    // widget borders, the size of the selection toggle will get
+    // increased to prevent an accidental clicking of the item
+    // when trying to hit the toggle.
+
+    const int widgetHeight = size().height();
+    const int widgetWidth = size().width();
+    const int minMargin = 2;
+
+    if (toggleSize + minMargin * 2 >= widgetHeight) {
+        pos.rx() -= (widgetHeight - toggleSize) / 2;
+        toggleSize = widgetHeight;
+        pos.setY(0);
+    }
+    if (toggleSize + minMargin * 2 >= widgetWidth) {
+        pos.ry() -= (widgetWidth - toggleSize) / 2;
+        toggleSize = widgetWidth;
+        pos.setX(0);
+    }
+
+    return QRectF(pos, QSizeF(toggleSize, toggleSize));
+}
+
 KFileItemListWidget::KFileItemListWidget(KItemListWidgetInformant* informant, \
QGraphicsItem* parent) :  KStandardItemListWidget(informant, parent)
 {
diff --git a/dolphin/src/kitemviews/kfileitemlistwidget.h \
b/dolphin/src/kitemviews/kfileitemlistwidget.h index 24c6778..aea5636 100644
--- a/dolphin/src/kitemviews/kfileitemlistwidget.h
+++ b/dolphin/src/kitemviews/kfileitemlistwidget.h
@@ -43,6 +43,7 @@ public:
     virtual ~KFileItemListWidget();
 
     static KItemListWidgetInformant* createInformant();
+    virtual QRectF klookToggleRect() const;
 
 protected:
     virtual bool isRoleRightAligned(const QByteArray& role) const;
diff --git a/dolphin/src/kitemviews/kitemlistcontroller.cpp \
b/dolphin/src/kitemviews/kitemlistcontroller.cpp index 88f5d9f..c3c1d3d 100644
--- a/dolphin/src/kitemviews/kitemlistcontroller.cpp
+++ b/dolphin/src/kitemviews/kitemlistcontroller.cpp
@@ -510,6 +510,13 @@ bool \
KItemListController::mousePressEvent(QGraphicsSceneMouseEvent* event, const  \
m_selectionManager->beginAnchoredSelection(m_pressedIndex);  return true;
     }
+    if (m_view->isAboveKlookToggle(m_pressedIndex, m_pressedMousePos)){
+        m_selectionManager->setSelected(m_pressedIndex, 1, \
KItemListSelectionManager::Select); +        \
m_selectionManager->setCurrentItem(m_pressedIndex); +        \
m_selectionManager->beginAnchoredSelection(m_pressedIndex); +        emit \
klookTrigger(); +        return true;
+    }
 
     const bool shiftPressed = event->modifiers() & Qt::ShiftModifier;
     const bool controlPressed = event->modifiers() & Qt::ControlModifier;
diff --git a/dolphin/src/kitemviews/kitemlistcontroller.h \
b/dolphin/src/kitemviews/kitemlistcontroller.h index a881526..0d4be2f 100644
--- a/dolphin/src/kitemviews/kitemlistcontroller.h
+++ b/dolphin/src/kitemviews/kitemlistcontroller.h
@@ -216,6 +216,8 @@ signals:
     void modelChanged(KItemModelBase* current, KItemModelBase* previous);
     void viewChanged(KItemListView* current, KItemListView* previous);
 
+    void klookTrigger();
+
 private slots:
     void slotViewScrollOffsetChanged(qreal current, qreal previous);
 
diff --git a/dolphin/src/kitemviews/kitemlistview.cpp \
b/dolphin/src/kitemviews/kitemlistview.cpp index 72b3fd8..1519923 100644
--- a/dolphin/src/kitemviews/kitemlistview.cpp
+++ b/dolphin/src/kitemviews/kitemlistview.cpp
@@ -55,6 +55,7 @@ namespace {
 KItemListView::KItemListView(QGraphicsWidget* parent) :
     QGraphicsWidget(parent),
     m_enabledSelectionToggles(false),
+    m_enabledKlookToggles(false),
     m_grouped(false),
     m_supportsItemExpanding(false),
     m_editingRole(false),
@@ -269,6 +270,25 @@ bool KItemListView::enabledSelectionToggles() const
     return m_enabledSelectionToggles;
 }
 
+void KItemListView::setEnabledKlookToggles(bool enabled)
+{
+    if (m_enabledKlookToggles != enabled) {
+        m_enabledKlookToggles = enabled;
+
+        QHashIterator<int, KItemListWidget*> it(m_visibleItems);
+        while (it.hasNext()) {
+            it.next();
+            it.value()->setEnabledKlookToggle(enabled);
+        }
+    }
+}
+
+bool KItemListView::enabledKlookToggles() const
+{
+    return m_enabledKlookToggles;
+}
+
+
 KItemListController* KItemListView::controller() const
 {
     return m_controller;
@@ -411,6 +431,25 @@ bool KItemListView::isAboveExpansionToggle(int index, const \
QPointF& pos) const  return false;
 }
 
+bool KItemListView::isAboveKlookToggle(int index, const QPointF& pos) const
+{
+
+    if (!m_enabledKlookToggles) {
+        return false;
+    }
+
+    const KItemListWidget* widget = m_visibleItems.value(index);
+    if (widget) {
+        const QRectF selectionToggleRect = widget->klookToggleRect();
+        if (!selectionToggleRect.isEmpty()) {
+            const QPointF mappedPos = widget->mapFromItem(this, pos);
+            return selectionToggleRect.contains(mappedPos);
+        }
+    }
+    return false;
+}
+
+
 int KItemListView::firstVisibleIndex() const
 {
     return m_layouter->firstVisibleIndex();
@@ -1880,6 +1919,7 @@ void KItemListView::updateWidgetProperties(KItemListWidget* \
widget, int index)  widget->setSelected(selectionManager->isSelected(index));
     widget->setHovered(false);
     widget->setEnabledSelectionToggle(enabledSelectionToggles());
+    widget->setEnabledKlookToggle(enabledKlookToggles());
     widget->setIndex(index);
     widget->setData(m_model->data(index));
     widget->setSiblingsInformation(QBitArray());
diff --git a/dolphin/src/kitemviews/kitemlistview.h \
b/dolphin/src/kitemviews/kitemlistview.h index 5723b9a..b8c956e 100644
--- a/dolphin/src/kitemviews/kitemlistview.h
+++ b/dolphin/src/kitemviews/kitemlistview.h
@@ -110,6 +110,9 @@ public:
     void setEnabledSelectionToggles(bool enabled);
     bool enabledSelectionToggles() const;
 
+    void setEnabledKlookToggles(bool enabled);
+    bool enabledKlookToggles() const;
+
     /**
      * @return Controller of the item-list. The controller gets
      *         initialized by KItemListController::setView() and will
@@ -173,6 +176,7 @@ public:
     bool isAboveSelectionToggle(int index, const QPointF& pos) const;
     bool isAboveExpansionToggle(int index, const QPointF& pos) const;
 
+    bool isAboveKlookToggle(int index, const QPointF& pos) const;
     /**
      * @return Index of the first item that is at least partly visible.
      *         -1 is returned if the model contains no items.
@@ -683,6 +687,7 @@ private:
 
 private:
     bool m_enabledSelectionToggles;
+    bool m_enabledKlookToggles;
     bool m_grouped;
     bool m_supportsItemExpanding;
     bool m_editingRole;
diff --git a/dolphin/src/kitemviews/kitemlistwidget.cpp \
b/dolphin/src/kitemviews/kitemlistwidget.cpp index 6a7111a..d4f70e1 100644
--- a/dolphin/src/kitemviews/kitemlistwidget.cpp
+++ b/dolphin/src/kitemviews/kitemlistwidget.cpp
@@ -22,6 +22,7 @@
 
 #include "kitemlistwidget.h"
 
+#include "kitemlistklooktoggle_p.h"
 #include "kitemlistview.h"
 #include "kitemmodelbase.h"
 
@@ -52,6 +53,7 @@ KItemListWidget::KItemListWidget(KItemListWidgetInformant* \
informant, QGraphicsI  m_hovered(false),
     m_alternateBackground(false),
     m_enabledSelectionToggle(false),
+    m_enabledKlookToggle(false),
     m_data(),
     m_visibleRoles(),
     m_columnWidths(),
@@ -61,7 +63,8 @@ KItemListWidget::KItemListWidget(KItemListWidgetInformant* \
informant, QGraphicsI  m_hoverCache(0),
     m_hoverAnimation(0),
     m_selectionToggle(0),
-    m_editedRole()
+    m_editedRole(),
+    m_klookToggle(0)
 {
 }
 
@@ -76,6 +79,9 @@ void KItemListWidget::setIndex(int index)
         delete m_selectionToggle;
         m_selectionToggle = 0;
 
+        delete m_klookToggle;
+        m_klookToggle = 0;
+
         if (m_hoverAnimation) {
             m_hoverAnimation->stop();
             m_hoverOpacity = 0;
@@ -263,6 +269,9 @@ void KItemListWidget::setHovered(bool hovered)
         if (m_enabledSelectionToggle && !(QApplication::mouseButtons() & \
Qt::LeftButton)) {  initializeSelectionToggle();
         }
+        if (m_enabledKlookToggle && !(QApplication::mouseButtons() & \
Qt::LeftButton)) { +            initializeKlookToggle();
+        }
     } else {
         m_hoverAnimation->setStartValue(hoverOpacity());
         m_hoverAnimation->setEndValue(0.0);
@@ -306,6 +315,19 @@ bool KItemListWidget::enabledSelectionToggle() const
     return m_enabledSelectionToggle;
 }
 
+void KItemListWidget::setEnabledKlookToggle(bool enable)
+{
+    if (m_enabledKlookToggle != enable) {
+        m_enabledKlookToggle = enable;
+        update();
+    }
+}
+
+bool KItemListWidget::enabledKlookToggle() const
+{
+    return m_enabledKlookToggle;
+}
+
 void KItemListWidget::setSiblingsInformation(const QBitArray& siblings)
 {
     const QBitArray previous = m_siblingsInfo;
@@ -355,6 +377,12 @@ QRectF KItemListWidget::selectionToggleRect() const
     return QRectF();
 }
 
+QRectF KItemListWidget::klookToggleRect() const
+{
+    return QRectF();
+}
+
+
 QRectF KItemListWidget::expansionToggleRect() const
 {
     return QRectF();
@@ -463,6 +491,8 @@ void KItemListWidget::slotHoverAnimationFinished()
     if (!m_hovered) {
         delete m_selectionToggle;
         m_selectionToggle = 0;
+        delete m_klookToggle;
+        m_klookToggle = 0;
     }
 }
 
@@ -481,12 +511,29 @@ void KItemListWidget::initializeSelectionToggle()
     m_selectionToggle->setChecked(isSelected());
 }
 
+void KItemListWidget::initializeKlookToggle()
+{
+    Q_ASSERT(m_enabledKlookToggle);
+
+    if (!m_klookToggle) {
+        m_klookToggle = new KItemListKlookToggle(this);
+    }
+
+    const QRectF toggleRect = klookToggleRect();;
+    m_klookToggle->setPos(toggleRect.topLeft());
+    m_klookToggle->resize(toggleRect.size());
+
+}
+
 void KItemListWidget::setHoverOpacity(qreal opacity)
 {
     m_hoverOpacity = opacity;
     if (m_selectionToggle) {
         m_selectionToggle->setOpacity(opacity);
     }
+    if (m_klookToggle) {
+        m_klookToggle->setOpacity(opacity);
+    }
 
     if (m_hoverOpacity <= 0.0) {
         delete m_hoverCache;
diff --git a/dolphin/src/kitemviews/kitemlistwidget.h \
b/dolphin/src/kitemviews/kitemlistwidget.h index 55181fa..7fd593c 100644
--- a/dolphin/src/kitemviews/kitemlistwidget.h
+++ b/dolphin/src/kitemviews/kitemlistwidget.h
@@ -33,6 +33,7 @@
 
 class KItemListSelectionToggle;
 class KItemListView;
+class KItemListKlookToggle;
 class QPropertyAnimation;
 
 /**
@@ -114,6 +115,9 @@ public:
     void setEnabledSelectionToggle(bool enabled);
     bool enabledSelectionToggle() const;
 
+    void setEnabledKlookToggle(bool enable);
+    bool enabledKlookToggle() const;
+
     /**
      * Sets the sibling information for the item and all of its parents.
      * The sibling information of the upper most parent is represented by
@@ -181,6 +185,12 @@ public:
      */
     virtual QPixmap createDragPixmap(const QStyleOptionGraphicsItem* option, \
QWidget* widget = 0);  
+     /**
+     * @return Rectangle for the klook-toggle that is used for item preview.
+     */
+    virtual QRectF klookToggleRect() const;
+
+
 signals:
     void roleEditingCanceled(int index, const QByteArray& role, const QVariant& \
                value);
     void roleEditingFinished(int index, const QByteArray& role, const QVariant& \
value); @@ -211,6 +221,7 @@ private slots:
 
 private:
     void initializeSelectionToggle();
+    void initializeKlookToggle();
     void setHoverOpacity(qreal opacity);
     void clearHoverCache();
     void drawItemStyleOption(QPainter* painter, QWidget* widget, QStyle::State \
styleState); @@ -225,6 +236,7 @@ private:
     bool m_hovered;
     bool m_alternateBackground;
     bool m_enabledSelectionToggle;
+    bool m_enabledKlookToggle;
     QHash<QByteArray, QVariant> m_data;
     QList<QByteArray> m_visibleRoles;
     QHash<QByteArray, qreal> m_columnWidths;
@@ -238,6 +250,8 @@ private:
     KItemListSelectionToggle* m_selectionToggle;
 
     QByteArray m_editedRole;
+    
+    KItemListKlookToggle* m_klookToggle;
 };
 
 inline const KItemListWidgetInformant* KItemListWidget::informant() const
diff --git a/dolphin/src/kitemviews/kstandarditemlistwidget.h \
b/dolphin/src/kitemviews/kstandarditemlistwidget.h index 787722d..3bc9228 100644
--- a/dolphin/src/kitemviews/kstandarditemlistwidget.h
+++ b/dolphin/src/kitemviews/kstandarditemlistwidget.h
@@ -157,6 +157,7 @@ protected:
     virtual void resizeEvent(QGraphicsSceneResizeEvent* event);
     virtual void showEvent(QShowEvent* event);
     virtual void hideEvent(QHideEvent* event);
+    void triggerCacheRefreshing();
 
 private slots:
     void slotCutItemsChanged();
@@ -164,7 +165,6 @@ private slots:
     void slotRoleEditingFinished(int index, const QByteArray& role, const QVariant& \
value);  
 private:
-    void triggerCacheRefreshing();
     void updateExpansionArea();
     void updatePixmapCache();
 
diff --git a/dolphin/src/settings/dolphin_generalsettings.kcfg \
b/dolphin/src/settings/dolphin_generalsettings.kcfg index 9f261dc..67d9c30 100644
--- a/dolphin/src/settings/dolphin_generalsettings.kcfg
+++ b/dolphin/src/settings/dolphin_generalsettings.kcfg
@@ -56,6 +56,10 @@
             <label>Show selection toggle</label>
             <default>true</default>
         </entry>
+        <entry name="ShowKlookToggle" type="Bool">
+            <label>Show preview toggle</label>
+            <default>false</default>
+        </entry>
         <entry name="ShowToolTips" type="Bool">
             <label>Show tooltips</label>
             <default>false</default>
diff --git a/dolphin/src/settings/general/behaviorsettingspage.cpp \
b/dolphin/src/settings/general/behaviorsettingspage.cpp index 1ade93c..0f3ed6f 100644
--- a/dolphin/src/settings/general/behaviorsettingspage.cpp
+++ b/dolphin/src/settings/general/behaviorsettingspage.cpp
@@ -42,7 +42,8 @@ BehaviorSettingsPage::BehaviorSettingsPage(const KUrl& url, \
QWidget* parent) :  m_globalViewProps(0),
     m_showToolTips(0),
     m_showSelectionToggle(0),
-    m_naturalSorting(0)
+    m_naturalSorting(0),
+    m_showKlookToggle(0)
 {
     QVBoxLayout* topLayout = new QVBoxLayout(this);
 
@@ -67,8 +68,13 @@ BehaviorSettingsPage::BehaviorSettingsPage(const KUrl& url, \
                QWidget* parent) :
     m_naturalSorting = new QCheckBox(i18nc("option:check", "Natural sorting of \
items"), this);  
     topLayout->addWidget(viewPropsBox);
+ 
+       // 'Show klook toggle'
+     m_showKlookToggle = new QCheckBox(i18nc("@option:check", "Show preview \
marker"), this); +
     topLayout->addWidget(m_showToolTips);
     topLayout->addWidget(m_showSelectionToggle);
+    topLayout->addWidget(m_showKlookToggle);
     topLayout->addWidget(m_naturalSorting);
     topLayout->addStretch();
 
@@ -78,6 +84,7 @@ BehaviorSettingsPage::BehaviorSettingsPage(const KUrl& url, \
                QWidget* parent) :
     connect(m_globalViewProps, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
     connect(m_showToolTips, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
     connect(m_showSelectionToggle, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
+    connect(m_showKlookToggle, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
     connect(m_naturalSorting, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
 }
 
@@ -106,6 +113,7 @@ void BehaviorSettingsPage::applySettings()
         globalProps.setDirProperties(props);
     }
 
+    settings->setShowKlookToggle(m_showKlookToggle->isChecked());
     const bool naturalSorting = m_naturalSorting->isChecked();
     if (KGlobalSettings::naturalSorting() != naturalSorting) {
         KConfigGroup group(KGlobal::config(), "KDE");
@@ -130,6 +138,7 @@ void BehaviorSettingsPage::loadSettings()
 
     m_showToolTips->setChecked(GeneralSettings::showToolTips());
     m_showSelectionToggle->setChecked(GeneralSettings::showSelectionToggle());
+    m_showKlookToggle->setChecked(GeneralSettings::showKlookToggle());
     m_naturalSorting->setChecked(KGlobalSettings::naturalSorting());
 }
 
diff --git a/dolphin/src/settings/general/behaviorsettingspage.h \
b/dolphin/src/settings/general/behaviorsettingspage.h index 3989862..8e810fe 100644
--- a/dolphin/src/settings/general/behaviorsettingspage.h
+++ b/dolphin/src/settings/general/behaviorsettingspage.h
@@ -58,6 +58,7 @@ private:
     QLabel* m_configureToolTips;
     QCheckBox* m_showSelectionToggle;
     QCheckBox* m_naturalSorting;
+    QCheckBox* m_showKlookToggle;
 };
 
 #endif
diff --git a/dolphin/src/views/dolphinitemlistview.cpp \
b/dolphin/src/views/dolphinitemlistview.cpp index 039b5f2..81694dc 100644
--- a/dolphin/src/views/dolphinitemlistview.cpp
+++ b/dolphin/src/views/dolphinitemlistview.cpp
@@ -41,6 +41,7 @@ DolphinItemListView::DolphinItemListView(QGraphicsWidget* parent) :
     KFileItemListView(parent),
     m_zoomLevel(0)
 {
+    setEnabledKlookToggles(GeneralSettings::showKlookToggle());
     updateFont();
     updateGridSize();
 }
@@ -89,6 +90,7 @@ void DolphinItemListView::readSettings()
     beginTransaction();
 
     setEnabledSelectionToggles(GeneralSettings::showSelectionToggle());
+    setEnabledKlookToggles(GeneralSettings::showKlookToggle());
 
     const bool expandableFolders = (itemLayout() == \
                KFileItemListView::DetailsLayout) &&
                                    DetailsModeSettings::expandableFolders();
diff --git a/dolphin/src/views/dolphinview.cpp b/dolphin/src/views/dolphinview.cpp
index 8050415..86dff91 100644
--- a/dolphin/src/views/dolphinview.cpp
+++ b/dolphin/src/views/dolphinview.cpp
@@ -148,6 +148,7 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) :
     connect(controller, SIGNAL(itemUnhovered(int)), this, \
                SLOT(slotItemUnhovered(int)));
     connect(controller, SIGNAL(itemDropEvent(int,QGraphicsSceneDragDropEvent*)), \
                this, SLOT(slotItemDropEvent(int,QGraphicsSceneDragDropEvent*)));
     connect(controller, SIGNAL(modelChanged(KItemModelBase*,KItemModelBase*)), this, \
SLOT(slotModelChanged(KItemModelBase*,KItemModelBase*))); +    connect(controller, \
SIGNAL(klookTrigger()), this, SIGNAL(klookTrigger()));  
     connect(m_model, SIGNAL(directoryLoadingStarted()),       this, \
                SLOT(slotDirectoryLoadingStarted()));
     connect(m_model, SIGNAL(directoryLoadingCompleted()),     this, \
SLOT(slotDirectoryLoadingCompleted())); @@ -1528,4 +1529,14 @@ KUrl \
DolphinView::viewPropertiesUrl() const  return url;
 }
 
+KFileItemList DolphinView::sortedItems() const
+{
+    KFileItemList  list;
+    for (int i = 0; i < m_model->count(); i++) {
+        list.append(m_model->fileItem(i));
+    }
+    return list;
+}
+
+
 #include "dolphinview.moc"
diff --git a/dolphin/src/views/dolphinview.h b/dolphin/src/views/dolphinview.h
index 10f63c5..a53ee8a 100644
--- a/dolphin/src/views/dolphinview.h
+++ b/dolphin/src/views/dolphinview.h
@@ -295,6 +295,8 @@ public:
      */
     void setViewPropertiesContext(const QString& context);
     QString viewPropertiesContext() const;
+    
+    KFileItemList sortedItems() const;
 
 public slots:
     /**
@@ -506,6 +508,8 @@ signals:
      */
     void writeStateChanged(bool isFolderWritable);
 
+    void klookTrigger();
+
     /**
      * Is emitted if the URL should be changed to the previous URL of the
      * history (e.g. because the "back"-mousebutton has been pressed).



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

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