#include <kio/previewjob.h>
#include <kjob.h>
#include <kmenu.h>
+#include <kmessagebox.h>
#include <kmimetyperesolver.h>
#include <konq_operations.h>
#include <konqmimedata.h>
m_topLayout->setSpacing(0);
m_topLayout->setMargin(0);
- connect(m_dirLister, SIGNAL(completed()),
- this, SLOT(updateCutItems()));
-
m_controller = new DolphinController(this);
m_controller->setUrl(url);
m_iconManager->setShowPreview(show);
emit showPreviewChanged();
- loadDirectory(viewPropsUrl, true);
+ loadDirectory(viewPropsUrl);
}
bool DolphinView::showPreview() const
m_dirLister->setShowingDotFiles(show);
emit showHiddenFilesChanged();
- loadDirectory(viewPropsUrl, true);
+ loadDirectory(viewPropsUrl);
}
bool DolphinView::showHiddenFiles() const
void DolphinView::zoomIn()
{
m_controller->triggerZoomIn();
- reload();
+ m_iconManager->updatePreviews();
}
void DolphinView::zoomOut()
{
m_controller->triggerZoomOut();
- reload();
+ m_iconManager->updatePreviews();
}
bool DolphinView::isZoomInPossible() const
if (itemView() != m_detailsView) {
// the details view requires no reloading of the directory, as it maps
// the file item delegate info to its columns internally
- loadDirectory(viewPropsUrl, true);
+ loadDirectory(viewPropsUrl);
}
}
void DolphinView::wheelEvent(QWheelEvent* event)
{
- if ((event->modifiers() & Qt::ControlModifier) == Qt::ControlModifier) {
- int d = event->delta();
- if (d > 0 && isZoomInPossible()) {
+ if (event->modifiers() & Qt::ControlModifier) {
+ const int delta = event->delta();
+ if ((delta > 0) && isZoomInPossible()) {
zoomIn();
- } else if (d < 0 && isZoomOutPossible()) {
+ } else if ((delta < 0) && isZoomOutPossible()) {
zoomOut();
}
- event->accept();
+ event->accept();
+ }
+}
+
+bool DolphinView::eventFilter(QObject* watched, QEvent* event)
+{
+ if ((watched == itemView()) && (event->type() == QEvent::FocusIn)) {
+ m_controller->requestActivation();
}
+
+ return QWidget::eventFilter(watched, event);
}
void DolphinView::activate()
}
Q_ASSERT(view != 0);
+ view->installEventFilter(this);
+
+ m_controller->setItemView(view);
m_fileItemDelegate = new KFileItemDelegate(view);
view->setItemDelegate(m_fileItemDelegate);
return false;
}
-KToggleAction* DolphinView::iconsModeAction(KActionCollection* actionCollection)
-{
- KToggleAction* iconsView = actionCollection->add<KToggleAction>("icons");
- iconsView->setText(i18nc("@action:inmenu View Mode", "Icons"));
- iconsView->setShortcut(Qt::CTRL | Qt::Key_1);
- iconsView->setIcon(KIcon("view-list-icons"));
- iconsView->setData(QVariant::fromValue(IconsView));
- return iconsView;
-}
-
-KToggleAction* DolphinView::detailsModeAction(KActionCollection* actionCollection)
-{
- KToggleAction* detailsView = actionCollection->add<KToggleAction>("details");
- detailsView->setText(i18nc("@action:inmenu View Mode", "Details"));
- detailsView->setShortcut(Qt::CTRL | Qt::Key_2);
- detailsView->setIcon(KIcon("view-list-details"));
- detailsView->setData(QVariant::fromValue(DetailsView));
- return detailsView;
-}
-
-KToggleAction* DolphinView::columnsModeAction(KActionCollection* actionCollection)
-{
- KToggleAction* columnView = actionCollection->add<KToggleAction>("columns");
- columnView->setText(i18nc("@action:inmenu View Mode", "Columns"));
- columnView->setShortcut(Qt::CTRL | Qt::Key_3);
- columnView->setIcon(KIcon("view-file-columns"));
- columnView->setData(QVariant::fromValue(ColumnView));
- return columnView;
-}
-
-QString DolphinView::currentViewModeActionName() const
-{
- switch (m_mode) {
- case DolphinView::IconsView:
- return "icons";
- case DolphinView::DetailsView:
- return "details";
- case DolphinView::ColumnView:
- return "columns";
- }
- return QString(); // can't happen
-}
-
void DolphinView::renameSelectedItems()
{
const KFileItemList items = selectedItems();
const KUrl::List sourceUrls = KUrl::List::fromMimeData(mimeData);
- // per default the pasting is done into the current Url of the view
- KUrl destUrl(url());
+ // per default the pasting is done into the current URL of the view
+ KUrl destUrl = url();
// check whether the pasting should be done into a selected directory
const KUrl::List selectedUrls = this->selectedUrls();
// only one item is selected which is a directory, hence paste
// into this directory
destUrl = selectedUrls.first();
+ if (sourceUrls.contains(destUrl)) {
+ const QString text = i18nc("@info", "The folder <filename>%1</filename> is pasted into itself. Is this intended?", fileItem.name());
+ int result = KMessageBox::questionYesNo(window(),
+ text,
+ i18nc("@title:window", "Paste into Folder"),
+ KGuiItem(i18nc("@label", "Paste"), "dialog-ok"),
+ KGuiItem(i18nc("@label", "Cancel"), "dialog-cancel"));
+ if (result == KMessageBox::No) {
+ return;
+ }
+ }
}
}
KUrl::List urls = KUrl::List::fromMimeData(mimeData);
if (!urls.isEmpty()) {
ret.first = true;
- ret.second = i18ncp("@action:inmenu", "Paste One File", "Paste %1 Files", urls.count());
+ if (urls.count() == 1) {
+ const KFileItem item(KFileItem::Unknown, KFileItem::Unknown, urls.first(), true);
+ ret.second = item.isDir() ? i18nc("@action:inmenu", "Paste One Folder") :
+ i18nc("@action:inmenu", "Paste One File");
+
+ } else {
+ ret.second = i18ncp("@action:inmenu", "Paste One Item", "Paste %1 Items", urls.count());
+ }
} else {
ret.first = false;
ret.second = i18nc("@action:inmenu", "Paste");