#include <kdirmodel.h>
#include <QAbstractProxyModel>
#include <QApplication>
+#include <QClipboard>
+#include <QDir>
DolphinController::DolphinController(DolphinView* dolphinView) :
QObject(dolphinView),
- m_zoomInPossible(false),
- m_zoomOutPossible(false),
+ m_zoomLevel(0),
m_openTab(false),
m_url(),
m_dolphinView(dolphinView),
m_itemView = view;
- // TODO: this is a workaround until Qt-issue 176832 has been fixed
- connect(m_itemView, SIGNAL(pressed(const QModelIndex&)),
- this, SLOT(updateOpenTabState()));
+ if (m_itemView != 0) {
+ m_zoomLevel = zoomLevelForIconSize(m_itemView->iconSize());
+
+ // TODO: this is a workaround until Qt-issue 176832 has been fixed
+ connect(m_itemView, SIGNAL(pressed(const QModelIndex&)),
+ this, SLOT(updateOpenTabState()));
+ }
}
void DolphinController::triggerUrlChangeRequest(const KUrl& url)
emit activationChanged(active);
}
-void DolphinController::triggerZoomIn()
+void DolphinController::setZoomLevel(int level)
{
- emit zoomIn();
+ Q_ASSERT(level >= zoomLevelMinimum());
+ Q_ASSERT(level <= zoomLevelMaximum());
+ if (level != m_zoomLevel) {
+ m_zoomLevel = level;
+ emit zoomLevelChanged(m_zoomLevel);
+ }
}
-void DolphinController::triggerZoomOut()
+int DolphinController::iconSizeForZoomLevel(int level)
{
- emit zoomOut();
+ int size = KIconLoader::SizeMedium;
+ switch (level) {
+ case 0: size = KIconLoader::SizeSmall; break;
+ case 1: size = KIconLoader::SizeSmallMedium; break;
+ case 2: size = KIconLoader::SizeMedium; break;
+ case 3: size = KIconLoader::SizeLarge; break;
+ case 4: size = KIconLoader::SizeHuge; break;
+ case 5: size = KIconLoader::SizeEnormous; break;
+ case 6: size = KIconLoader::SizeEnormous * 3 / 2; break;
+ case 7: size = KIconLoader::SizeEnormous * 2; break;
+ default: Q_ASSERT(false); break;
+ }
+ return size;
+}
+
+int DolphinController::zoomLevelForIconSize(const QSize& size)
+{
+ int level = 0;
+ switch (size.height()) {
+ case KIconLoader::SizeSmall: level = 0; break;
+ case KIconLoader::SizeSmallMedium: level = 1; break;
+ case KIconLoader::SizeMedium: level = 2; break;
+ case KIconLoader::SizeLarge: level = 3; break;
+ case KIconLoader::SizeHuge: level = 4; break;
+ case KIconLoader::SizeEnormous: level = 5; break;
+ case KIconLoader::SizeEnormous * 3 / 2: level = 6; break;
+ case KIconLoader::SizeEnormous * 2: level = 7; break;
+ default: Q_ASSERT(false); level = 3; break;
+ }
+ return level;
}
void DolphinController::handleKeyPressEvent(QKeyEvent* event)
}
}
+void DolphinController::replaceUrlByClipboard()
+{
+ const QClipboard* clipboard = QApplication::clipboard();
+ QString text;
+ if (clipboard->mimeData(QClipboard::Selection)->hasText()) {
+ text = clipboard->mimeData(QClipboard::Selection)->text();
+ } else if (clipboard->mimeData(QClipboard::Clipboard)->hasText()) {
+ text = clipboard->mimeData(QClipboard::Clipboard)->text();
+ }
+ if (!text.isEmpty() && QDir::isAbsolutePath(text)) {
+ m_dolphinView->setUrl(KUrl(text));
+ }
+}
+
KFileItem DolphinController::itemForIndex(const QModelIndex& index) const
{
Q_ASSERT(m_itemView != 0);
} else {
m_itemView->clearSelection();
if (!openTab) {
- emit itemEntered(item);
+ emit itemEntered(KFileItem());
}
}
}