#include "dolphincontroller.h"
-#include <QPainter>
+#include <kdirmodel.h>
+#include <QAbstractProxyModel>
DolphinController::DolphinController(DolphinView* dolphinView) :
QObject(dolphinView),
- m_showHiddenFiles(false),
- m_showPreview(false),
m_zoomInPossible(false),
m_zoomOutPossible(false),
-//m_additionalInfoCount(0),
m_url(),
- m_dolphinView(dolphinView)
+ m_dolphinView(dolphinView),
+ m_itemView(0)
{
}
}
}
+void DolphinController::setItemView(QAbstractItemView* view)
+{
+ m_itemView = view;
+}
+
void DolphinController::triggerUrlChangeRequest(const KUrl& url)
{
if (m_url != url) {
void DolphinController::indicateDroppedUrls(const KUrl::List& urls,
const KUrl& destPath,
- const KFileItem& destItem,
- QWidget* source)
+ const KFileItem& destItem)
{
- emit urlsDropped(urls, destPath, destItem, source);
+ emit urlsDropped(urls, destPath, destItem);
}
emit additionalInfoChanged(info);
}
-void DolphinController::setShowHiddenFiles(bool show)
-{
- if (m_showHiddenFiles != show) {
- m_showHiddenFiles = show;
- emit showHiddenFilesChanged(show);
- }
-}
-
-void DolphinController::setShowPreview(bool show)
-{
- if (m_showPreview != show) {
- m_showPreview = show;
- emit showPreviewChanged(show);
- }
-}
-
-/*void DolphinController::setAdditionalInfoCount(int count)
-{
- if (m_additionalInfoCount != count) {
- m_additionalInfoCount = count;
- emit additionalInfoCountChanged(count);
- }
-}*/
-
void DolphinController::indicateActivationChange(bool active)
{
emit activationChanged(active);
emit zoomOut();
}
-void DolphinController::drawHoverIndication(QWidget* widget,
- const QRect& bounds,
- const QBrush& brush)
+void DolphinController::handleKeyPressEvent(QKeyEvent* event)
{
- QPainter painter(widget);
- painter.save();
- QBrush blendedBrush(brush);
- QColor color = blendedBrush.color();
- color.setAlpha(64);
- blendedBrush.setColor(color);
+ Q_ASSERT(m_itemView != 0);
+
+ const QItemSelectionModel* selModel = m_itemView->selectionModel();
+ const QModelIndex currentIndex = selModel->currentIndex();
+ const bool trigger = currentIndex.isValid()
+ && (event->key() == Qt::Key_Return)
+ && (selModel->selectedIndexes().count() > 0);
+ if (trigger) {
+ const QModelIndexList indexList = selModel->selectedIndexes();
+ foreach (const QModelIndex& index, indexList) {
+ triggerItem(index);
+ }
+ }
+}
- const int radius = 10;
- QPainterPath path(QPointF(bounds.left(), bounds.top() + radius));
- path.quadTo(bounds.left(), bounds.top(), bounds.left() + radius, bounds.top());
- path.lineTo(bounds.right() - radius, bounds.top());
- path.quadTo(bounds.right(), bounds.top(), bounds.right(), bounds.top() + radius);
- path.lineTo(bounds.right(), bounds.bottom() - radius);
- path.quadTo(bounds.right(), bounds.bottom(), bounds.right() - radius, bounds.bottom());
- path.lineTo(bounds.left() + radius, bounds.bottom());
- path.quadTo(bounds.left(), bounds.bottom(), bounds.left(), bounds.bottom() - radius);
- path.closeSubpath();
+KFileItem DolphinController::itemForIndex(const QModelIndex& index) const
+{
+ Q_ASSERT(m_itemView != 0);
- painter.setRenderHint(QPainter::Antialiasing);
- painter.fillPath(path, blendedBrush);
- painter.restore();
+ QAbstractProxyModel* proxyModel = static_cast<QAbstractProxyModel*>(m_itemView->model());
+ KDirModel* dirModel = static_cast<KDirModel*>(proxyModel->sourceModel());
+ const QModelIndex dirIndex = proxyModel->mapToSource(index);
+ return dirModel->itemForIndex(dirIndex);
}
-void DolphinController::triggerItem(const KFileItem& item)
+void DolphinController::triggerItem(const QModelIndex& index)
{
- emit itemTriggered(item);
+ const KFileItem item = itemForIndex(index);
+ if (index.isValid() && (index.column() == KDirModel::Name)) {
+ emit itemTriggered(item);
+ } else {
+ m_itemView->clearSelection();
+ emit itemEntered(item);
+ }
}
-void DolphinController::emitItemEntered(const KFileItem& item)
+void DolphinController::emitItemEntered(const QModelIndex& index)
{
- emit itemEntered(item);
+ KFileItem item = itemForIndex(index);
+ if (!item.isNull()) {
+ emit itemEntered(item);
+ }
}
void DolphinController::emitViewportEntered()