#include "dolphincontroller.h"
-DolphinController::DolphinController(QObject* parent) :
- QObject(parent)
+#include <kdirmodel.h>
+#include <QAbstractProxyModel>
+
+DolphinController::DolphinController(DolphinView* dolphinView) :
+ QObject(dolphinView),
+ m_zoomInPossible(false),
+ m_zoomOutPossible(false),
+ m_url(),
+ m_dolphinView(dolphinView),
+ m_itemView(0)
{
}
{
}
+void DolphinController::setUrl(const KUrl& url)
+{
+ if (m_url != url) {
+ m_url = url;
+ emit urlChanged(url);
+ }
+}
+
+void DolphinController::setItemView(QAbstractItemView* view)
+{
+ m_itemView = view;
+}
+
+void DolphinController::triggerUrlChangeRequest(const KUrl& url)
+{
+ if (m_url != url) {
+ emit requestUrlChange(url);
+ }
+}
+
void DolphinController::triggerContextMenuRequest(const QPoint& pos)
{
emit activated();
emit requestContextMenu(pos);
}
-void DolphinController::triggerActivation()
+void DolphinController::requestActivation()
{
emit activated();
}
void DolphinController::indicateDroppedUrls(const KUrl::List& urls,
- const QPoint& pos)
+ const KUrl& destPath,
+ const KFileItem& destItem)
{
- emit urlsDropped(urls, pos);
+ emit urlsDropped(urls, destPath, destItem);
}
emit sortOrderChanged(order);
}
+void DolphinController::indicateAdditionalInfoChange(const KFileItemDelegate::InformationList& info)
+{
+ emit additionalInfoChanged(info);
+}
+
+void DolphinController::indicateActivationChange(bool active)
+{
+ emit activationChanged(active);
+}
+
+void DolphinController::triggerZoomIn()
+{
+ emit zoomIn();
+}
+
+void DolphinController::triggerZoomOut()
+{
+ emit zoomOut();
+}
+
+void DolphinController::handleKeyPressEvent(QKeyEvent* event)
+{
+ 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);
+ }
+ }
+}
+
+KFileItem DolphinController::itemForIndex(const QModelIndex& index) const
+{
+ Q_ASSERT(m_itemView != 0);
+
+ 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 QModelIndex& index)
{
- emit itemTriggered(index);
+ 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 QModelIndex& index)
+{
+ KFileItem item = itemForIndex(index);
+ if (!item.isNull()) {
+ emit itemEntered(item);
+ }
}
-void DolphinController::indicateSelectionChange()
+void DolphinController::emitViewportEntered()
{
- emit selectionChanged();
+ emit viewportEntered();
}
#include "dolphincontroller.moc"