#ifndef DOLPHINVIEW_H
#define DOLPHINVIEW_H
-#include <config-baloo.h>
-
+#include "dolphintabwidget.h"
#include "dolphin_export.h"
+#include "tooltips/tooltipmanager.h"
-#include <kparts/part.h>
#include <KFileItem>
-#include <kio/fileundomanager.h>
#include <KIO/Job>
-#include <QUrl>
+#include <config-baloo.h>
+#include <kio/fileundomanager.h>
+#include <kparts/part.h>
+
#include <QMimeData>
+#include <QUrl>
#include <QWidget>
typedef KIO::FileUndoManager::CommandType CommandType;
class VersionControlObserver;
class ViewProperties;
class QGraphicsSceneDragDropEvent;
-class QRegExp;
+class QRegularExpression;
/**
* @short Represents a view for the directory content.
*/
DolphinView(const QUrl& url, QWidget* parent);
- virtual ~DolphinView();
+ ~DolphinView() override;
/**
* Returns the current active URL, where all actions are applied.
void markUrlAsCurrent(const QUrl& url);
/**
- * All items that match to the pattern \a pattern will get selected
- * if \a enabled is true and deselected if \a enabled is false.
+ * All items that match the regular expression \a regexp will get selected
+ * if \a enabled is true and deselected if \a enabled is false.
+ *
+ * Note that to match the whole string the pattern should be anchored:
+ * - you can anchor the pattern with QRegularExpression::anchoredPattern()
+ * - if you use QRegularExpresssion::wildcardToRegularExpression(), don't use
+ * QRegularExpression::anchoredPattern() as the former already returns an
+ * anchored pattern
*/
- void selectItems(const QRegExp& pattern, bool enabled);
+ void selectItems(const QRegularExpression ®exp, bool enabled);
/**
* Sets the zoom level to \a level. It is assured that the used
void setZoomLevel(int level);
int zoomLevel() const;
+ /**
+ * Resets the view's icon size to the default value
+ */
+ void resetZoomLevel();
+
void setSortRole(const QByteArray& role);
QByteArray sortRole() const;
*/
static QUrl openItemAsFolderUrl(const KFileItem& item, const bool browseThroughArchives = true);
+ /**
+ * Hides tooltip displayed over element.
+ */
+ void hideToolTip(const ToolTipManager::HideBehavior behavior = ToolTipManager::HideBehavior::Later);
+
public slots:
/**
* Changes the directory to \a url. If the current directory is equal to
void cutSelectedItems();
/** Copies all selected items to the clipboard. */
- void copySelectedItems();
+ void copySelectedItemsToClipboard();
/** Pastes the clipboard data to this view. */
void paste();
void pasteIntoFolder();
/**
- * Handles a drop of @p dropEvent onto @p destUrl
+ * Creates duplicates of selected items, appending "copy"
+ * to the end.
*/
- void dropUrls(const QUrl &destUrl, QDropEvent *dropEvent);
+ void duplicateSelectedItems();
+
+ /**
+ * Handles a drop of @p dropEvent onto widget @p dropWidget and destination @p destUrl
+ */
+ void dropUrls(const QUrl &destUrl, QDropEvent *dropEvent, QWidget *dropWidget);
void stopLoading();
+ /**
+ * Applies the state that has been restored by restoreViewState()
+ * to the view.
+ */
+ void updateViewState();
+
/** Activates the view if the item list container gets focus. */
- virtual bool eventFilter(QObject* watched, QEvent* event) Q_DECL_OVERRIDE;
+ bool eventFilter(QObject* watched, QEvent* event) override;
signals:
/**
*/
void activated();
- /**
- * Is emitted if the URL of the view will be changed to \a url.
- * After the URL has been changed the signal urlChanged() will
- * be emitted.
- */
- void urlAboutToBeChanged(const QUrl& url);
-
/** Is emitted if the URL of the view has been changed to \a url. */
void urlChanged(const QUrl& url);
/**
* Is emitted if a new tab should be opened for the URL \a url.
*/
- void tabRequested(const QUrl& url);
+ void tabRequested(const QUrl& url, DolphinTabWidget::TabPlacement tabPlacement);
/**
* Is emitted if the view mode (IconsView, DetailsView,
*/
void toggleActiveViewRequested();
+ /**
+ * Is emitted when the user clicks a tag or a link
+ * in the metadata widget of a tooltip.
+ */
+ void urlActivated(const QUrl& url);
+
protected:
/** Changes the zoom level if Control is pressed during a wheel event. */
- virtual void wheelEvent(QWheelEvent* event) Q_DECL_OVERRIDE;
+ void wheelEvent(QWheelEvent* event) override;
- virtual void hideEvent(QHideEvent* event) Q_DECL_OVERRIDE;
- virtual bool event(QEvent* event) Q_DECL_OVERRIDE;
+ void hideEvent(QHideEvent* event) override;
+ bool event(QEvent* event) override;
private slots:
/**
void slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* event);
void slotModelChanged(KItemModelBase* current, KItemModelBase* previous);
void slotMouseButtonPressed(int itemIndex, Qt::MouseButtons buttons);
+ void slotRenameDialogRenamingFinished(const QList<QUrl>& urls);
+ void slotSelectedItemTextPressed(int index);
/*
* Is called when new items get pasted or dropped.
/**
* Invoked when the file item model indicates that the loading of a directory has
- * been completed. Assures that pasted items and renamed items get seleced.
+ * been completed. Assures that pasted items and renamed items get selected.
*/
void slotDirectoryLoadingCompleted();
*/
void slotDirectoryRedirection(const QUrl& oldUrl, const QUrl& newUrl);
- /**
- * Applies the state that has been restored by restoreViewState()
- * to the view.
- */
- void updateViewState();
-
- void hideToolTip();
-
/**
* Calculates the number of currently shown files into
* \a fileCount and the number of folders into \a folderCount.
*/
void calculateItemCount(int& fileCount, int& folderCount, KIO::filesize_t& totalFileSize) const;
+ void slotTwoClicksRenamingTimerTimeout();
+
private:
void loadDirectory(const QUrl& url, bool reload = false);
*/
QUrl viewPropertiesUrl() const;
+ /**
+ * Clears the selection and updates current item and selection according to the parameters
+ *
+ * @param current URL to be set as current
+ * @param selected list of selected items
+ */
+ void forceUrlsSelection(const QUrl& current, const QList<QUrl>& selected);
+
+ void abortTwoClicksRenaming();
+
private:
+ void updatePalette();
+
bool m_active;
bool m_tabsForFiles;
bool m_assureVisibleCurrentIndex;
VersionControlObserver* m_versionControlObserver;
+ QTimer* m_twoClicksRenamingTimer;
+ QUrl m_twoClicksRenamingItemUrl;
+
// For unit tests
friend class TestBase;
friend class DolphinDetailsViewTest;