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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
/***************************************************************************
* Copyright (C) 2006-2010 by Peter Penz <[email protected]> *
* Copyright (C) 2006 by Aaron J. Seigo <[email protected]> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
***************************************************************************/
#ifndef VIEWPROPERTIES_H
#define VIEWPROPERTIES_H
#include <views/dolphinview.h>
#include <kurl.h>
#include <libdolphin_export.h>
class ViewPropertySettings;
/**
* @brief Maintains the view properties like 'view mode' or
* 'show hidden files' for a directory.
*
* The view properties are automatically stored as part of the file
* .directory inside the corresponding path. To read out the view properties
* just construct an instance by passing the path of the directory:
*
* \code
* ViewProperties props(KUrl("/home/peter/Documents"));
* const DolphinView::Mode mode = props.viewMode();
* const bool showHiddenFiles = props.isShowHiddenFilesEnabled();
* \endcode
*
* When modifying a view property, the '.directory' file is automatically updated
* inside the destructor.
*
* If no .directory file is available or the global view mode is turned on
* (see GeneralSettings::globalViewMode()), the values from the global .directory file
* are used for initialization.
*/
class LIBDOLPHINPRIVATE_EXPORT ViewProperties
{
public:
explicit ViewProperties(const KUrl& url);
virtual ~ViewProperties();
void setViewMode(DolphinView::Mode mode);
DolphinView::Mode viewMode() const;
void setShowPreview(bool show);
bool showPreview() const;
void setShowHiddenFiles(bool show);
bool showHiddenFiles() const;
void setCategorizedSorting(bool categorized);
bool categorizedSorting() const;
void setSorting(DolphinView::Sorting sorting);
DolphinView::Sorting sorting() const;
void setSortOrder(Qt::SortOrder sortOrder);
Qt::SortOrder sortOrder() const;
void setSortFoldersFirst(bool foldersFirst);
bool sortFoldersFirst() const;
/**
* Sets the additional information for the current set view-mode.
* Note that the additional-info property is the only property where
* the value is dependent from another property (in this case the view-mode).
*/
void setAdditionalInfo(const KFileItemDelegate::InformationList& info);
/**
* Returns the additional information for the current set view-mode.
* Note that the additional-info property is the only property where
* the value is dependent from another property (in this case the view-mode).
*/
KFileItemDelegate::InformationList additionalInfo() const;
/**
* Sets the directory properties view mode, show preview,
* show hidden files, sorting and sort order like
* set in \a props.
*/
void setDirProperties(const ViewProperties& props);
/**
* If \a autoSave is true, the properties are automatically
* saved when the destructor is called. Per default autosaving
* is enabled.
*/
void setAutoSaveEnabled(bool autoSave);
bool isAutoSaveEnabled() const;
void updateTimeStamp();
/**
* Saves the view properties for the directory specified
* in the constructor. The method is automatically
* invoked in the destructor, if
* ViewProperties::isAutoSaveEnabled() returns true and
* at least one property has been changed.
*/
void save();
/**
* Returns the URL of the directory, where the mirrored view properties
* are stored into. Mirrored view properties are used if:
* - there is no write access for storing the view properties into
* the original directory
* - for non local directories
*/
static KUrl mirroredDirectory();
private:
/**
* Returns the destination directory path where the view
* properties are stored. \a subDir specifies the used sub
* directory.
*/
QString destinationDir(const QString& subDir) const;
/**
* Returns the encoded additional information that can be stored
* in the .directory file. See ViewProperties::decodedAdditionalInfo()
* for the coding format.
* @param info Additional information for the current view mode.
*/
int encodedAdditionalInfo(int info) const;
/**
* Returns the decoded additional information from the .directory
* file by respecting the current set view mode. The additional
* information from the .directory file is an integer value, where:
* - Byte 0 stores the additional info for the details view
* - Byte 1 stores the additional info for the icons view
* - Byte 2 stores the additional info for the column view
* The additional information property is the only property that is
* dependent from another property (in this case the view-mode).
*/
int decodedAdditionalInfo() const;
Q_DISABLE_COPY(ViewProperties)
private:
bool m_changedProps;
bool m_autoSave;
QString m_filePath;
ViewPropertySettings* m_node;
};
#endif
|