summaryrefslogtreecommitdiffabout
path: root/kaddressbook/kaddressbookview.h
Unidiff
Diffstat (limited to 'kaddressbook/kaddressbookview.h') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kaddressbookview.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/kaddressbook/kaddressbookview.h b/kaddressbook/kaddressbookview.h
index 6bbb9c2..3a3f71a 100644
--- a/kaddressbook/kaddressbookview.h
+++ b/kaddressbook/kaddressbookview.h
@@ -1,312 +1,314 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#ifndef KADDRESSBOOKVIEW_H 24#ifndef KADDRESSBOOKVIEW_H
25#define KADDRESSBOOKVIEW_H 25#define KADDRESSBOOKVIEW_H
26 26
27#ifndef KAB_EMBEDDED 27#ifndef KAB_EMBEDDED
28#include <klibloader.h> 28#include <klibloader.h>
29#endif //KAB_EMBEDDED 29#endif //KAB_EMBEDDED
30 30
31class KConfig; 31class KConfig;
32class QDropEvent; 32class QDropEvent;
33 33
34#include <qstringlist.h> 34#include <qstringlist.h>
35#include <kabc/field.h> 35#include <kabc/field.h>
36#include <qwidget.h> 36#include <qwidget.h>
37#include <qregexp.h> 37#include <qregexp.h>
38 38
39#include "viewconfigurewidget.h" 39#include "viewconfigurewidget.h"
40#include "filter.h" 40#include "filter.h"
41 41
42#ifdef DESKTOP_VERSION 42#ifdef DESKTOP_VERSION
43#include <qpaintdevicemetrics.h> 43#include <qpaintdevicemetrics.h>
44#include <qprinter.h> 44#include <qprinter.h>
45#include <qpainter.h> 45#include <qpainter.h>
46#endif 46#endif
47 47
48namespace KABC { class AddressBook; } 48namespace KABC { class AddressBook; }
49 49
50/** 50/**
51 Base class for all views in kaddressbook. This class implements 51 Base class for all views in kaddressbook. This class implements
52 all the common methods needed to provide a view to the user. 52 all the common methods needed to provide a view to the user.
53 53
54 To implement a specific view (table, card, etc), just inherit from 54 To implement a specific view (table, card, etc), just inherit from
55 this class and implement all the pure virtuals. 55 this class and implement all the pure virtuals.
56 56
57 @author Mike Pilone <mpilone@slac.com> 57 @author Mike Pilone <mpilone@slac.com>
58 */ 58 */
59class KAddressBookView : public QWidget 59class KAddressBookView : public QWidget
60{ 60{
61 Q_OBJECT 61 Q_OBJECT
62 62
63 public: 63 public:
64 enum DefaultFilterType { None = 0, Active = 1, Specific = 2 }; 64 enum DefaultFilterType { None = 0, Active = 1, Specific = 2 };
65 65
66 KAddressBookView( KABC::AddressBook *ab, QWidget *parent, const char *name ); 66 KAddressBookView( KABC::AddressBook *ab, QWidget *parent, const char *name );
67 virtual ~KAddressBookView(); 67 virtual ~KAddressBookView();
68 68
69 /** 69 /**
70 Must be overloaded in subclasses. Should return a list of 70 Must be overloaded in subclasses. Should return a list of
71 all the uids of selected contacts. 71 all the uids of selected contacts.
72 */ 72 */
73 virtual QStringList selectedUids() = 0; 73 virtual QStringList selectedUids() = 0;
74 virtual void doSearch( const QString& s ,KABC::Field *field ) = 0; 74 virtual void doSearch( const QString& s ,KABC::Field *field ) = 0;
75 virtual void scrollUP() = 0; 75 virtual void scrollUP() = 0;
76 virtual void scrollDOWN() = 0; 76 virtual void scrollDOWN() = 0;
77 virtual void setFocusAV() = 0; 77 virtual void setFocusAV() = 0;
78 78
79 /** 79 /**
80 Called whenever this view should read the config. This can be used 80 Called whenever this view should read the config. This can be used
81 as a sign that the config has changed, therefore the view should 81 as a sign that the config has changed, therefore the view should
82 assume the worst and rebuild itself if necessary. For example, 82 assume the worst and rebuild itself if necessary. For example,
83 in a table view this method may be called when the user adds or 83 in a table view this method may be called when the user adds or
84 removes columns from the view. 84 removes columns from the view.
85 85
86 If overloaded in the subclass, do not forget to call super class's 86 If overloaded in the subclass, do not forget to call super class's
87 method. 87 method.
88 88
89 @param config The KConfig object to read from. The group will already 89 @param config The KConfig object to read from. The group will already
90 be set, so do not change the group. 90 be set, so do not change the group.
91 */ 91 */
92 virtual void readConfig( KConfig *config ); 92 virtual void readConfig( KConfig *config );
93 93
94 /** 94 /**
95 Called whenever this view should write the config. The view should not 95 Called whenever this view should write the config. The view should not
96 write out information handled by the application, such as which fields 96 write out information handled by the application, such as which fields
97 are visible. The view should only write out information specific 97 are visible. The view should only write out information specific
98 to itself (i.e.: All information in the ViewConfigWidget) 98 to itself (i.e.: All information in the ViewConfigWidget)
99 99
100 If overloaded in the subclass, do not forget to call the super class's 100 If overloaded in the subclass, do not forget to call the super class's
101 method. 101 method.
102 102
103 @param config The KConfig object to read from. The group will already 103 @param config The KConfig object to read from. The group will already
104 be set, so do not change the group. 104 be set, so do not change the group.
105 */ 105 */
106 virtual void writeConfig( KConfig *config ); 106 virtual void writeConfig( KConfig *config );
107 107
108 /** 108 /**
109 Returns a QString with all the selected email addresses concatenated 109 Returns a QString with all the selected email addresses concatenated
110 together with a ',' seperator. 110 together with a ',' seperator.
111 */ 111 */
112 virtual QString selectedEmails(); 112 virtual QString selectedEmails();
113 113
114 /** 114 /**
115 Return the type of the view: Icon, Table, etc. Please make sure that 115 Return the type of the view: Icon, Table, etc. Please make sure that
116 this is the same value that ViewWrapper::type() will return for your 116 this is the same value that ViewWrapper::type() will return for your
117 view. 117 view.
118 */ 118 */
119 virtual QString type() const = 0; 119 virtual QString type() const = 0;
120 120
121 /** 121 /**
122 Returns a list of the fields that should be displayed. The list 122 Returns a list of the fields that should be displayed. The list
123 is composed of the fields proper names (ie: Home Address), so 123 is composed of the fields proper names (ie: Home Address), so
124 the view may need to translate them in order to get the 124 the view may need to translate them in order to get the
125 value from the addressee. 125 value from the addressee.
126 126
127 This list is generated from the config file, so it is advisable to call 127 This list is generated from the config file, so it is advisable to call
128 this method whenever a readConfig() is called in order to get the newest 128 this method whenever a readConfig() is called in order to get the newest
129 list of fields. 129 list of fields.
130 */ 130 */
131 KABC::Field::List fields() const; 131 KABC::Field::List fields() const;
132 132
133 KABC::Field::List allFields() const; 133 KABC::Field::List allFields() const;
134 134
135 /** 135 /**
136 Sets the active filter. This filter will be used for filtering 136 Sets the active filter. This filter will be used for filtering
137 the list of addressees to display. The view will <b>not</b> 137 the list of addressees to display. The view will <b>not</b>
138 automatically refresh itself, so in most cases you will want to call 138 automatically refresh itself, so in most cases you will want to call
139 KAddressBookView::refresh() after this method. 139 KAddressBookView::refresh() after this method.
140 */ 140 */
141 void setFilter( const Filter& ); 141 void setFilter( const Filter& );
142 142
143 /** 143 /**
144 @return The default filter type selection. If the selection 144 @return The default filter type selection. If the selection
145 is SpecificFilter, the name of the filter can be retrieved with 145 is SpecificFilter, the name of the filter can be retrieved with
146 defaultFilterName() 146 defaultFilterName()
147 */ 147 */
148 DefaultFilterType defaultFilterType() const; 148 DefaultFilterType defaultFilterType() const;
149 149
150 /** 150 /**
151 @return The name of the default filter. This string is 151 @return The name of the default filter. This string is
152 only valid if defaultFilterType() is returning SpecificFilter. 152 only valid if defaultFilterType() is returning SpecificFilter.
153 */ 153 */
154 const QString &defaultFilterName() const; 154 const QString &defaultFilterName() const;
155 155
156 /** 156 /**
157 @return The address book. 157 @return The address book.
158 */ 158 */
159 KABC::AddressBook *addressBook() const; 159 KABC::AddressBook *addressBook() const;
160 void printMyView() { emit printView() ;} 160 void printMyView() { emit printView() ;}
161 161
162 public slots: 162 public slots:
163 /** 163 /**
164 Must be overloaded in subclasses to refresh the view. 164 Must be overloaded in subclasses to refresh the view.
165 Refreshing includes updating the view to ensure that only items 165 Refreshing includes updating the view to ensure that only items
166 in the document are visible. If <i>uid</i> is valid, only the 166 in the document are visible. If <i>uid</i> is valid, only the
167 addressee with uid needs to be refreshed. This is an optimization 167 addressee with uid needs to be refreshed. This is an optimization
168 only. 168 only.
169 */ 169 */
170 virtual void refresh( QString uid = QString::null ) = 0; 170 virtual void refresh( QString uid = QString::null ) = 0;
171 171
172 /** 172 /**
173 This method must be overloaded in subclasses. Select (highlight) 173 This method must be overloaded in subclasses. Select (highlight)
174 the addressee matching <i>uid</i>. If uid 174 the addressee matching <i>uid</i>. If uid
175 is equal to QString::null, then all addressees should be selected. 175 is equal to QString::null, then all addressees should be selected.
176 */ 176 */
177#ifndef KAB_EMBEDDED 177#ifndef KAB_EMBEDDED
178//MOC_SKIP_BEGIN 178//MOC_SKIP_BEGIN
179 virtual void setSelected( QString uid = QString::null, bool selected = true ) = 0; 179 virtual void setSelected( QString uid = QString::null, bool selected = true ) = 0;
180//MOC_SKIP_END 180//MOC_SKIP_END
181#else //KAB_EMBEDDED 181#else //KAB_EMBEDDED
182 //US my moc can not handle the default parameters. Is this a problem ??? 182 //US my moc can not handle the default parameters. Is this a problem ???
183 virtual void setSelected( QString uid, bool selected) = 0; 183 virtual void setSelected( QString uid, bool selected) = 0;
184#endif //KAB_EMBEDDED 184#endif //KAB_EMBEDDED
185 185
186 signals: 186 signals:
187 187
188 void printView(); 188 void printView();
189 /** 189 /**
190 This signal should be emitted by a subclass whenever an addressee 190 This signal should be emitted by a subclass whenever an addressee
191 is modified. 191 is modified.
192 */ 192 */
193 void modified(); 193 void modified();
194 194
195 /** 195 /**
196 This signal should be emitted by a subclass whenever an addressee 196 This signal should be emitted by a subclass whenever an addressee
197 is selected. Selected means that the addressee was given the focus. 197 is selected. Selected means that the addressee was given the focus.
198 Some widgets may call this 'highlighted'. The view is responsible for 198 Some widgets may call this 'highlighted'. The view is responsible for
199 emitting this signal multiple times if multiple items are selected, 199 emitting this signal multiple times if multiple items are selected,
200 with the last item selected being the last emit. 200 with the last item selected being the last emit.
201 201
202 @param uid The uid of the selected addressee. 202 @param uid The uid of the selected addressee.
203 203
204 @see KListView 204 @see KListView
205 */ 205 */
206 void selected( const QString &uid ); 206 void selected( const QString &uid );
207 void deleteRequest(); 207 void deleteRequest();
208 /** 208 /**
209 This signal should be emitted by a subclass whenever an addressee 209 This signal should be emitted by a subclass whenever an addressee
210 is executed. This is defined by the KDE system wide config, but it 210 is executed. This is defined by the KDE system wide config, but it
211 either means single or doubleclicked. 211 either means single or doubleclicked.
212 212
213 @param ui The uid of the selected addressee 213 @param ui The uid of the selected addressee
214 214
215 @see KListView 215 @see KListView
216 */ 216 */
217 void executed( const QString &uid ); 217 void executed( const QString &uid );
218 218
219 /** 219 /**
220 This signal is emitted whenever a user attempts to start a drag 220 This signal is emitted whenever a user attempts to start a drag
221 in the view. The slot connected to this signal would usually want 221 in the view. The slot connected to this signal would usually want
222 to create a QDragObject. 222 to create a QDragObject.
223 */ 223 */
224 void startDrag(); 224 void startDrag();
225 225
226 /** 226 /**
227 This signal is emitted whenever the user drops something on the 227 This signal is emitted whenever the user drops something on the
228 view. The individual view should handle checking if the item is 228 view. The individual view should handle checking if the item is
229 droppable (ie: if it is a vcard). 229 droppable (ie: if it is a vcard).
230 */ 230 */
231 void dropped( QDropEvent* ); 231 void dropped( QDropEvent* );
232 232
233 protected: 233 protected:
234
234 /** 235 /**
235 Returns a list of the addressees that should be displayed. This method 236 Returns a list of the addressees that should be displayed. This method
236 should always be used by the subclass to get a list of addressees. This 237 should always be used by the subclass to get a list of addressees. This
237 method internally takes many factors into account, including the current 238 method internally takes many factors into account, including the current
238 filter. 239 filter.
239 */ 240 */
240 KABC::Addressee::List addressees(); 241 KABC::Addressee::List addressees();
241 242
242 /** 243 /**
243 This method returns the widget that should be used as the parent for 244 This method returns the widget that should be used as the parent for
244 all view components. By using this widget as the parent and not 245 all view components. By using this widget as the parent and not
245 'this', the view subclass has the option of placing other widgets 246 'this', the view subclass has the option of placing other widgets
246 around the view (ie: search fields, etc). Do not delete this widget! 247 around the view (ie: search fields, etc). Do not delete this widget!
247 */ 248 */
248 QWidget *viewWidget(); 249 QWidget *viewWidget();
249 QRegExp getRegExp( const QString ); 250 QRegExp getRegExp( const QString );
250 251
251 private: 252 private:
252 void initGUI(); 253 void initGUI();
253 254
254 DefaultFilterType mDefaultFilterType; 255 DefaultFilterType mDefaultFilterType;
255 Filter mFilter; 256 Filter mFilter;
256 QString mDefaultFilterName; 257 QString mDefaultFilterName;
257 KABC::AddressBook *mAddressBook; 258 KABC::AddressBook *mAddressBook;
258 KABC::Field::List mFieldList; 259 KABC::Field::List mFieldList;
259 260
260 QWidget *mViewWidget; 261 QWidget *mViewWidget;
261}; 262};
262 263
263#ifndef KAB_EMBEDDED 264#ifndef KAB_EMBEDDED
264//MOC_SKIP_BEGIN 265//MOC_SKIP_BEGIN
265class ViewFactory : public KLibFactory 266class ViewFactory : public KLibFactory
266//MOC_SKIP_END 267//MOC_SKIP_END
267#else //KAB_EMBEDDED 268#else //KAB_EMBEDDED
268class ViewFactory 269class ViewFactory
269#endif //KAB_EMBEDDED 270#endif //KAB_EMBEDDED
270{ 271{
271 272
272 public: 273 public:
273 virtual KAddressBookView *view( KABC::AddressBook *ab, QWidget *parent, 274 virtual KAddressBookView *view( KABC::AddressBook *ab, QWidget *parent,
274 const char *name = 0 ) = 0; 275 const char *name = 0 ) = 0;
275 276
276 /** 277 /**
277 @return The type of the view. This is normally a small one word 278 @return The type of the view. This is normally a small one word
278 string (ie: Table, Icon, Tree, etc). 279 string (ie: Table, Icon, Tree, etc).
279 */ 280 */
280 virtual QString type() const = 0; 281 virtual QString type() const = 0;
281 282
282 /** 283 /**
283 @return The description of the view. This should be a 3 to 284 @return The description of the view. This should be a 3 to
284 4 line string (don't actually use return characters in the string) 285 4 line string (don't actually use return characters in the string)
285 describing the features offered by the view. 286 describing the features offered by the view.
286 */ 287 */
287 virtual QString description() const = 0; 288 virtual QString description() const = 0;
288 289
289 /** 290 /**
290 Creates a config dialog for the view type. The default 291 Creates a config dialog for the view type. The default
291 implementation will return a ViewConfigDialog. This default 292 implementation will return a ViewConfigDialog. This default
292 dialog will allow the user to set the visible fields only. If 293 dialog will allow the user to set the visible fields only. If
293 you need more config options (as most views will), this method 294 you need more config options (as most views will), this method
294 can be overloaded to return your sublcass of ViewConfigDialog. 295 can be overloaded to return your sublcass of ViewConfigDialog.
295 If this method is over loaded the base classes method should 296 If this method is over loaded the base classes method should
296 <B>not</B> be called. 297 <B>not</B> be called.
297 */ 298 */
298 virtual ViewConfigureWidget *configureWidget( KABC::AddressBook *ab, 299 virtual ViewConfigureWidget *configureWidget( KABC::AddressBook *ab,
299 QWidget *parent, 300 QWidget *parent,
300 const char *name = 0 ); 301 const char *name = 0 );
301 302
302 protected: 303 protected:
303 virtual QObject* createObject( QObject*, const char*, const char*, 304 virtual QObject* createObject( QObject*, const char*, const char*,
304 const QStringList & ) 305 const QStringList & )
305 { 306 {
306 return 0; 307 return 0;
307 } 308 }
309
308 310
309}; 311};
310 312
311 313
312#endif 314#endif