blob: 1a482436a80e3e63ae62813ffdc51bfe0bf5cb7a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
/*
* SPDX-FileCopyrightText: 2006 Peter Penz <[email protected]>
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef FOLDERSPANEL_H
#define FOLDERSPANEL_H
#include "panels/panel.h"
#include <QUrl>
class KFileItemModel;
class KItemListController;
class QGraphicsSceneDragDropEvent;
class KFileItem;
/**
* @brief Shows a tree view of the directories starting from
* the currently selected place.
*
* The tree view is always synchronized with the currently active view
* from the main window.
*/
class FoldersPanel : public Panel
{
Q_OBJECT
public:
explicit FoldersPanel(QWidget *parent = nullptr);
~FoldersPanel() override;
void setShowHiddenFiles(bool show);
void setLimitFoldersPanelToHome(bool enable);
bool showHiddenFiles() const;
bool limitFoldersPanelToHome() const;
void setAutoScrolling(bool enable);
bool autoScrolling() const;
void rename(const KFileItem &item);
Q_SIGNALS:
void folderActivated(const QUrl &url);
void folderInNewTab(const QUrl &url);
void folderInNewActiveTab(const QUrl &url);
void errorMessage(const QString &error);
protected:
/** @see Panel::urlChanged() */
bool urlChanged() override;
/** @see QWidget::showEvent() */
void showEvent(QShowEvent *event) override;
/** @see QWidget::keyPressEvent() */
void keyPressEvent(QKeyEvent *event) override;
private Q_SLOTS:
void slotItemActivated(int index);
void slotItemMiddleClicked(int index);
void slotItemContextMenuRequested(int index, const QPointF &pos);
void slotViewContextMenuRequested(const QPointF &pos);
void slotItemDropEvent(int index, QGraphicsSceneDragDropEvent *event);
void slotRoleEditingFinished(int index, const QByteArray &role, const QVariant &value);
void slotLoadingCompleted();
/**
* Increases the opacity of the view step by step until it is fully
* opaque.
*/
void startFadeInAnimation();
private:
/**
* Indicate if it is allowed to leave current location.
*/
enum NavigationBehaviour {
StayWhereYouAre, ///< Don't leave current location.
AllowJumpHome ///< Go Home only when context menu option got checked.
};
/**
* Initializes the base URL of the tree and expands all
* directories until \a url.
* @param url URL of the leaf directory that should get expanded.
* @param navigationBehaviour Navigation behaviour \see NavigationBehaviour
*/
void loadTree(const QUrl &url, NavigationBehaviour navigationBehaviour = StayWhereYouAre);
void reloadTree();
/**
* Sets the item with the index \a index as current item, selects
* the item and assures that the item will be visible.
*/
void updateCurrentItem(int index);
private:
bool m_updateCurrentItem;
KItemListController *m_controller;
KFileItemModel *m_model;
};
#endif // FOLDERSPANEL_H
|