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