#include <QGraphicsSceneDragDropEvent>
#include <QTimer>
#include <QScrollBar>
+#include <QPixmapCache>
#include <QPointer>
#include <QMenu>
#include <QVBoxLayout>
#endif
#include <KFormat>
-namespace {
- const int MaxModeEnum = DolphinView::CompactView;
-};
-
DolphinView::DolphinView(const QUrl& url, QWidget* parent) :
QWidget(parent),
m_active(true),
this, &DolphinView::slotVisibleRolesChangedByHeader);
connect(m_view, &DolphinItemListView::roleEditingCanceled,
this, &DolphinView::slotRoleEditingCanceled);
- connect(m_view->header(), &KItemListHeader::columnWidthChanged,
- this, &DolphinView::slotHeaderColumnWidthChanged);
+ connect(m_view->header(), &KItemListHeader::columnWidthChangeFinished,
+ this, &DolphinView::slotHeaderColumnWidthChangeFinished);
KItemListSelectionManager* selectionManager = controller->selectionManager();
connect(selectionManager, &KItemListSelectionManager::selectionChanged,
m_active = active;
- QColor color = KColorScheme(QPalette::Active, KColorScheme::View).background().color();
- if (!active) {
- color.setAlpha(150);
- }
-
- QWidget* viewport = m_container->viewport();
- if (viewport) {
- QPalette palette;
- palette.setColor(viewport->backgroundRole(), color);
- viewport->setPalette(palette);
- }
-
- update();
+ updatePalette();
if (active) {
m_container->setFocus();
const KItemListSelectionManager* selectionManager = m_container->controller()->selectionManager();
KFileItemList selectedItems;
- foreach (int index, selectionManager->selectedItems()) {
+ const auto items = selectionManager->selectedItems();
+ selectedItems.reserve(items.count());
+ for (int index : items) {
selectedItems.append(m_model->fileItem(index));
}
return selectedItems;
uiDelegate.setWindow(window());
if (uiDelegate.askDeleteConfirmation(list, KIO::JobUiDelegate::Trash, KIO::JobUiDelegate::DefaultConfirmation)) {
KIO::Job* job = KIO::trash(list);
- KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Trash, list, QUrl("trash:/"), job);
+ KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Trash, list, QUrl(QStringLiteral("trash:/")), job);
KJobWidgets::setWindow(job, this);
connect(job, &KIO::Job::result,
this, &DolphinView::slotTrashFileFinished);
m_model->cancelDirectoryLoading();
}
+void DolphinView::updatePalette()
+{
+ QColor color = KColorScheme(QPalette::Active, KColorScheme::View).background().color();
+ if (!m_active) {
+ color.setAlpha(150);
+ }
+
+ QWidget* viewport = m_container->viewport();
+ if (viewport) {
+ QPalette palette;
+ palette.setColor(viewport->backgroundRole(), color);
+ viewport->setPalette(palette);
+ }
+
+ update();
+}
+
bool DolphinView::eventFilter(QObject* watched, QEvent* event)
{
switch (event->type()) {
+ case QEvent::PaletteChange:
+ updatePalette();
+ QPixmapCache::clear();
+ break;
+
+ case QEvent::KeyPress:
+ if (GeneralSettings::useTabForSwitchingSplitView()) {
+ QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
+ if (keyEvent->key() == Qt::Key_Tab && keyEvent->modifiers() == Qt::NoModifier) {
+ toggleActiveViewRequested();
+ return true;
+ }
+ }
+ break;
case QEvent::FocusIn:
if (watched == m_container) {
setActive(true);
KFileItemList items;
items.reserve(indexes.count());
- foreach (int index, indexes) {
+ for (int index : indexes) {
KFileItem item = m_model->fileItem(index);
const QUrl& url = openItemAsFolderUrl(item);
// Apply the current column-widths as custom column-widths and turn
// off the automatic resizing of the columns
QList<int> columnWidths;
+ columnWidths.reserve(view->visibleRoles().count());
foreach (const QByteArray& role, view->visibleRoles()) {
columnWidths.append(header->columnWidth(role));
}
QList<int> columnWidths;
if (!header->automaticColumnResizing()) {
+ columnWidths.reserve(view->visibleRoles().count());
foreach (const QByteArray& role, view->visibleRoles()) {
columnWidths.append(header->columnWidth(role));
}
delete menu;
}
-void DolphinView::slotHeaderColumnWidthChanged(const QByteArray& role, qreal current, qreal previous)
+void DolphinView::slotHeaderColumnWidthChangeFinished(const QByteArray& role, qreal current)
{
- Q_UNUSED(previous);
-
const QList<QByteArray> visibleRoles = m_view->visibleRoles();
ViewProperties props(viewPropertiesUrl());
destUrl = url();
} else {
// The item represents a directory or desktop-file
- destUrl = destItem.url();
+ destUrl = destItem.mostLocalUrl();
}
QDropEvent dropEvent(event->pos().toPoint(),
if (desktopFile.hasLinkType()) {
const QString linkUrl = desktopFile.readUrl();
if (!linkUrl.startsWith(QLatin1String("http"))) {
- return linkUrl;
+ return QUrl::fromUserInput(linkUrl);
}
}
}
const int index = m_model->index(newUrl);
if (index >= 0) {
QHash<QByteArray, QVariant> data;
- const QUrl oldUrl = copyJob->srcUrls().first();
+ const QUrl oldUrl = copyJob->srcUrls().at(0);
data.insert("text", oldUrl.fileName());
m_model->setData(index, data);
}
{
// Update the view-state. This has to be done asynchronously
// because the view might not be in its final state yet.
- QTimer::singleShot(0, this, SLOT(updateViewState()));
+ QTimer::singleShot(0, this, &DolphinView::updateViewState);
emit directoryLoadingCompleted();
QList<QUrl> urls;
const KFileItemList items = selectedItems();
+ urls.reserve(items.count());
foreach (const KFileItem& item, items) {
urls.append(item.url());
}