#include <KFileItem>
#include <KIO/Job>
-#include <config-baloo.h>
+#include "config-dolphin.h"
#include <kio/fileundomanager.h>
#include <kparts/part.h>
#include <QUrl>
#include <QWidget>
+#include <memory>
+
typedef KIO::FileUndoManager::CommandType CommandType;
class QVBoxLayout;
class DolphinItemListView;
class ViewProperties;
class QLabel;
class QGraphicsSceneDragDropEvent;
+class QHelpEvent;
+class QProxyStyle;
class QRegularExpression;
/**
* (GeneralSettings::globalViewProps() returns false), then the
* changed view mode will be stored automatically.
*/
- void setMode(Mode mode);
- Mode mode() const;
+ void setViewMode(Mode mode);
+ Mode viewMode() const;
+
+ void setSelectionMode(bool enabled);
+ bool selectionMode() const;
/**
* Turns on the file preview for the all files of the current directory,
/**
* Is emitted if a context menu is requested for the item \a item,
* which is part of \a url. If the item is null, the context menu
- * for the URL should be shown and the custom actions \a customActions
- * will be added.
+ * for the URL should be shown.
*/
void requestContextMenu(const QPoint& pos,
const KFileItem& item,
- const QUrl& url,
- const QList<QAction*>& customActions);
+ const KFileItemList &selectedItems,
+ const QUrl& url);
/**
* Is emitted if an information message with the content \a msg
*/
void goForwardRequested();
+ /**
+ * Is emitted when the selection mode is requested for the current view.
+ * This typically happens on press and hold.
+ * @see KItemListController::longPress()
+ */
+ void selectionModeRequested();
+
/**
* Is emitted when the user wants to move the focus to another view.
*/
void slotViewContextMenuRequested(const QPointF& pos);
void slotHeaderContextMenuRequested(const QPointF& pos);
void slotHeaderColumnWidthChangeFinished(const QByteArray& role, qreal current);
+ void slotSidePaddingWidthChanged(qreal width);
void slotItemHovered(int index);
void slotItemUnhovered(int index);
void slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* event);
void updatePlaceholderLabel();
+ void tryShowNameToolTip(QHelpEvent* event);
+
private:
void updatePalette();
void showLoadingPlaceholder();
bool m_isFolderWritable;
bool m_dragging; // True if a dragging is done. Required to be able to decide whether a
// tooltip may be shown when hovering an item.
- bool m_loading;
+
+ enum class LoadingState {
+ Idle,
+ Loading,
+ Canceled,
+ Completed
+ };
+ LoadingState m_loadingState = LoadingState::Idle;
QUrl m_url;
QString m_viewPropertiesContext;
QLabel* m_placeholderLabel;
QTimer* m_showLoadingPlaceholderTimer;
+ /// Used for selection mode. @see setSelectionMode()
+ std::unique_ptr<QProxyStyle> m_proxyStyle;
+
// For unit tests
friend class TestBase;
friend class DolphinDetailsViewTest;
+ friend class DolphinMainWindowTest;
friend class DolphinPart; // Accesses m_model
};