summaryrefslogtreecommitdiffstats
path: root/libkonq/konq_propsview.h
blob: 679ce8a0eca98c7c77c7a29e85c65f707bc305e0 (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
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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
/*  This file is part of the KDE project
    Copyright (C) 1997 David Faure <[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 __konq_viewprops_h__
#define __konq_viewprops_h__

#include <qpixmap.h>
#include <qstringlist.h>

#include <kurl.h>
#include <libkonq_export.h>

class KInstance;
class KConfigBase;
class KConfig;

/**
 * The class KonqPropsView holds the properties for a Konqueror View
 *
 * Separating them from the view class allows to store the default
 * values (the one read from \<kinstance\>rc) in one instance of this class
 * and to have another instance of this class in each view, storing the
 * current values of the view.
 *
 * The local values can be read from a desktop entry, if any (.directory,
 * bookmark, ...). [ .directory is implemented, bookmark isn't ].
 */
class LIBKONQ_EXPORT KonqPropsView
{
public:

  /**
   * Constructs a KonqPropsView instance from an instance config file.
   * defaultProps is a "parent" object. If non null, then this instance
   * is the one used by a view, and its value can differ from the default ones.
   * The instance parameter should be the same for both...
   */
  KonqPropsView( KInstance * instance, KonqPropsView * defaultProps /*= 0L*/ );

  /** Destructor */
  virtual ~KonqPropsView();

  /**
   * Is this the instance representing default properties ?
   */
  bool isDefaultProperties() const {
      // No parent -> we are the default properties
      return m_defaultProps == 0L;
  }

  /**
   * Called when entering a directory
   * Checks for a .directory, read it.
   * Don't do this on the default properties instance
   * Returns TRUE if the settings for the new directories are
   * different from the settings in the old directory.
   */
  bool enterDir( const KURL & dir );

  /**
   * Turn on/off saving properties locally
   * Don't do this on the default properties instance
   */
  void setSaveViewPropertiesLocally( bool value );

  ///

  void setIconSize( int size ); // in pixel, 0 for default
  int iconSize() const { return m_iIconSize; }

  void setItemTextPos( int pos ); // QIconView::Bottom or QIconView::Right, currently
  int itemTextPos() const { return m_iItemTextPos; }

  void setSortCriterion( const QString &criterion );
  const QString& sortCriterion() const;

  void setDirsFirst ( bool first );
  bool isDirsFirst() const;

  void setDescending (bool descending);
  bool isDescending() const;

  void setShowingDotFiles( bool show );
  bool isShowingDotFiles() const { return m_bShowDot; }

  void setCaseInsensitiveSort( bool show );
  bool isCaseInsensitiveSort() const;

  void setShowingDirectoryOverlays( bool show );
  bool isShowingDirectoryOverlays() const { return m_bShowDirectoryOverlays; }

  void setShowingPreview( const QString &preview, bool show );
  void setShowingPreview( bool show );
  bool isShowingPreview( const QString &preview ) const { return ! m_dontPreview.contains(preview); }
  bool isShowingPreview();
  const QStringList &previewSettings();

  void setBgColor( const QColor & color );
  const QColor& bgColor(QWidget * widget) const;
  void setTextColor( const QColor & color );
  const QColor& textColor(QWidget * widget) const;
  void setBgPixmapFile( const QString & file );
  const QString& bgPixmapFile() const { return m_bgPixmapFile; }

  // Applies bgcolor, textcolor, pixmap to the @p widget
  void applyColors( QWidget * widget ) const;

protected:

  QPixmap loadPixmap() const;

  // Current config object for _saving_
  KConfigBase * currentConfig();

  // Current config object for _saving_ settings related to colors
  KConfigBase * currentColorConfig();

  QString currentGroup() const {
      return isDefaultProperties() ? 
          QString::fromLatin1("Settings") : QString::fromLatin1("URL properties");
  }

private:
  // The actual properties

  int m_iIconSize;
  int m_iItemTextPos;
  bool m_bShowDot;
  bool m_bShowDirectoryOverlays;
  QStringList m_dontPreview;
  QColor m_textColor;
  QColor m_bgColor;
  QString m_bgPixmapFile;

  // Path to .directory file, whether it exists or not
  QString dotDirectory;

  bool m_bSaveViewPropertiesLocally;

  // True if we found a .directory file to read
  bool m_dotDirExists;

  // Points to the current .directory file if we are in
  // save-view-properties-locally mode, otherwise to the global config
  // It is set to 0L to mark it as "needs to be constructed".
  // This is to be used for SAVING only.
  // Can be a KConfig or a KSimpleConfig
  KConfigBase * m_currentConfig;

  // If this is not a "default properties" instance (but one used by a view)
  // then m_defaultProps points to the "default properties" instance
  // Otherwise it's 0L.
  KonqPropsView * m_defaultProps;

  /**
   * Private data for KonqPropsView
   * Implementation in konq_propsview.cc
   */
  struct Private;

  Private *d;

private:
  KonqPropsView( const KonqPropsView & );
  KonqPropsView();
};


#endif