author | zautrix <zautrix> | 2004-06-26 19:01:18 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-06-26 19:01:18 (UTC) |
commit | b9aad1f15dc600e4dbe4c62d3fcced6363188ba3 (patch) (unidiff) | |
tree | 2c3d4004fb21c72cba65793859f9bcd8ffd3a49c /kaddressbook/details | |
download | kdepimpi-b9aad1f15dc600e4dbe4c62d3fcced6363188ba3.zip kdepimpi-b9aad1f15dc600e4dbe4c62d3fcced6363188ba3.tar.gz kdepimpi-b9aad1f15dc600e4dbe4c62d3fcced6363188ba3.tar.bz2 |
Initial revision
-rw-r--r-- | kaddressbook/details/detailsviewcontainer.cpp | 171 | ||||
-rw-r--r-- | kaddressbook/details/detailsviewcontainer.h | 103 | ||||
-rw-r--r-- | kaddressbook/details/global.h | 28 | ||||
-rw-r--r-- | kaddressbook/details/look_basic.cpp | 75 | ||||
-rw-r--r-- | kaddressbook/details/look_basic.h | 134 | ||||
-rw-r--r-- | kaddressbook/details/look_details.cpp | 419 | ||||
-rw-r--r-- | kaddressbook/details/look_details.h | 157 | ||||
-rw-r--r-- | kaddressbook/details/look_html.cpp | 45 | ||||
-rw-r--r-- | kaddressbook/details/look_html.h | 75 |
9 files changed, 1207 insertions, 0 deletions
diff --git a/kaddressbook/details/detailsviewcontainer.cpp b/kaddressbook/details/detailsviewcontainer.cpp new file mode 100644 index 0000000..8f566cf --- a/dev/null +++ b/kaddressbook/details/detailsviewcontainer.cpp | |||
@@ -0,0 +1,171 @@ | |||
1 | /* | ||
2 | This file is part of KAddressBook. | ||
3 | Copyright (c) 1996-2002 Mirko Boehm <mirko@kde.org> | ||
4 | |||
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 | ||
7 | the Free Software Foundation; either version 2 of the License, or | ||
8 | (at your option) any later version. | ||
9 | |||
10 | This program is distributed in the hope that it will be useful, | ||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | GNU General Public License for more details. | ||
14 | |||
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 | ||
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | |||
19 | As a special exception, permission is given to link this program | ||
20 | with any edition of Qt, and distribute the resulting executable, | ||
21 | without including the source code for Qt in the source distribution. | ||
22 | */ | ||
23 | |||
24 | #include <qcombobox.h> | ||
25 | #include <qframe.h> | ||
26 | #include <qlabel.h> | ||
27 | #include <qlayout.h> | ||
28 | #include <qwidgetstack.h> | ||
29 | |||
30 | #include <kapplication.h> | ||
31 | #include <kdebug.h> | ||
32 | #include <kdialog.h> | ||
33 | |||
34 | #include "look_basic.h" | ||
35 | //#include "look_details.h" | ||
36 | #include "look_html.h" | ||
37 | |||
38 | #ifdef KAB_EMBEDDED | ||
39 | #include "kabprefs.h" | ||
40 | #endif //KAB_EMBEDDED | ||
41 | |||
42 | |||
43 | #include "detailsviewcontainer.h" | ||
44 | |||
45 | ViewContainer::ViewContainer( QWidget *parent, const char* name ) | ||
46 | : QWidget( parent, name ), mCurrentLook( 0 ) | ||
47 | { | ||
48 | QBoxLayout *topLayout = new QVBoxLayout( this ); | ||
49 | //topLayout->setMargin( KDialog::marginHint() ); | ||
50 | //topLayout->setSpacing( KDialog::spacingHint() ); | ||
51 | topLayout->setMargin( 0 ); | ||
52 | topLayout->setSpacing( 0 ); | ||
53 | |||
54 | QBoxLayout *styleLayout = new QHBoxLayout( topLayout ); | ||
55 | |||
56 | QLabel *label = new QLabel( i18n("Style:"), this ); | ||
57 | styleLayout->addWidget( label ); | ||
58 | |||
59 | mStyleCombo = new QComboBox( this ); | ||
60 | styleLayout->addWidget( mStyleCombo ); | ||
61 | |||
62 | QFrame *frameRuler = new QFrame( this ); | ||
63 | //US frameRuler->setFrameShape( QFrame::HLine ); | ||
64 | //US frameRuler->setFrameShadow( QFrame::Sunken ); | ||
65 | //US topLayout->addWidget( frameRuler ); | ||
66 | |||
67 | mDetailsStack = new QWidgetStack( this ); | ||
68 | topLayout->addWidget( mDetailsStack, 1 ); | ||
69 | |||
70 | registerLooks(); | ||
71 | |||
72 | #if 1 | ||
73 | // Hide detailed view selection combo box, because we currently have | ||
74 | // only one. Reenable it when there are more detailed views. | ||
75 | label->hide(); | ||
76 | mStyleCombo->hide(); | ||
77 | frameRuler->hide(); | ||
78 | #endif | ||
79 | } | ||
80 | |||
81 | KABBasicLook *ViewContainer::currentLook() | ||
82 | { | ||
83 | return mCurrentLook; | ||
84 | } | ||
85 | |||
86 | void ViewContainer::registerLooks() | ||
87 | { | ||
88 | mLookFactories.append( new KABHtmlViewFactory( mDetailsStack ) ); | ||
89 | // mLookFactories.append( new KABDetailedViewFactory( mDetailsStack ) ); | ||
90 | mStyleCombo->clear(); | ||
91 | |||
92 | for ( uint i = 0; i < mLookFactories.count(); ++i ) | ||
93 | mStyleCombo->insertItem( mLookFactories.at( i )->description() ); | ||
94 | |||
95 | if ( !mLookFactories.isEmpty() ) | ||
96 | slotStyleSelected( 0 ); | ||
97 | } | ||
98 | |||
99 | void ViewContainer::slotStyleSelected( int index ) | ||
100 | { | ||
101 | #ifndef KAB_EMBEDDED | ||
102 | KConfig *config = kapp->config(); | ||
103 | #else //KAB_EMBEDDED | ||
104 | //US I hope I got the same config object as above expected. | ||
105 | KConfig *config = KABPrefs::instance()->getConfig(); | ||
106 | #endif //KAB_EMBEDDED | ||
107 | KABC::Addressee addr; | ||
108 | |||
109 | if ( index >= 0 && index < mStyleCombo->count() ) { | ||
110 | if ( mCurrentLook != 0 ) { | ||
111 | mCurrentLook->saveSettings( config ); | ||
112 | addr = mCurrentLook->addressee(); | ||
113 | |||
114 | delete mCurrentLook; | ||
115 | mCurrentLook = 0; | ||
116 | } | ||
117 | |||
118 | KABLookFactory *factory = mLookFactories.at( index ); | ||
119 | kdDebug(5720) << "ViewContainer::slotStyleSelected: " | ||
120 | << "creating look " | ||
121 | << factory->description() << endl; | ||
122 | |||
123 | mCurrentLook = factory->create(); | ||
124 | mDetailsStack->raiseWidget( mCurrentLook ); | ||
125 | |||
126 | connect( mCurrentLook, SIGNAL( sendEmail( const QString& ) ), this, | ||
127 | SIGNAL( sendEmail( const QString& ) ) ); | ||
128 | connect( mCurrentLook, SIGNAL( browse( const QString& ) ), this, | ||
129 | SIGNAL( browse( const QString& ) ) ); | ||
130 | } | ||
131 | |||
132 | mCurrentLook->restoreSettings( config ); | ||
133 | mCurrentLook->setAddressee( addr ); | ||
134 | } | ||
135 | void ViewContainer::refreshView() | ||
136 | { | ||
137 | if ( mCurrentLook ) | ||
138 | mCurrentLook->setAddressee( mCurrentAddressee ); | ||
139 | } | ||
140 | |||
141 | void ViewContainer::setAddressee( const KABC::Addressee& addressee ) | ||
142 | { | ||
143 | if ( mCurrentLook != 0 ) { | ||
144 | if ( addressee == mCurrentAddressee ) | ||
145 | return; | ||
146 | else { | ||
147 | mCurrentAddressee = addressee; | ||
148 | mCurrentLook->setAddressee( mCurrentAddressee ); | ||
149 | } | ||
150 | } | ||
151 | } | ||
152 | |||
153 | KABC::Addressee ViewContainer::addressee() | ||
154 | { | ||
155 | static KABC::Addressee empty; // do not use! | ||
156 | |||
157 | if ( !mCurrentLook ) | ||
158 | return empty; | ||
159 | else | ||
160 | return mCurrentLook->addressee(); | ||
161 | } | ||
162 | |||
163 | void ViewContainer::setReadOnly( bool state ) | ||
164 | { | ||
165 | if ( mCurrentLook ) | ||
166 | mCurrentLook->setReadOnly( state ); | ||
167 | } | ||
168 | |||
169 | #ifndef KAB_EMBEDDED | ||
170 | #include "detailsviewcontainer.moc" | ||
171 | #endif //KAB_EMBEDDED | ||
diff --git a/kaddressbook/details/detailsviewcontainer.h b/kaddressbook/details/detailsviewcontainer.h new file mode 100644 index 0000000..b561d12 --- a/dev/null +++ b/kaddressbook/details/detailsviewcontainer.h | |||
@@ -0,0 +1,103 @@ | |||
1 | /* | ||
2 | This file is part of KAddressBook. | ||
3 | Copyright (c) 1996-2002 Mirko Boehm <mirko@kde.org> | ||
4 | |||
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 | ||
7 | the Free Software Foundation; either version 2 of the License, or | ||
8 | (at your option) any later version. | ||
9 | |||
10 | This program is distributed in the hope that it will be useful, | ||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | GNU General Public License for more details. | ||
14 | |||
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 | ||
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | |||
19 | As a special exception, permission is given to link this program | ||
20 | with any edition of Qt, and distribute the resulting executable, | ||
21 | without including the source code for Qt in the source distribution. | ||
22 | */ | ||
23 | |||
24 | #ifndef DETAILSVIEWCONTAINER_H | ||
25 | #define DETAILSVIEWCONTAINER_H | ||
26 | |||
27 | #include <qptrlist.h> | ||
28 | |||
29 | #include "look_basic.h" | ||
30 | |||
31 | class QComboBox; | ||
32 | class QWidgetStack; | ||
33 | |||
34 | class ViewContainer : public QWidget | ||
35 | { | ||
36 | Q_OBJECT | ||
37 | |||
38 | public: | ||
39 | ViewContainer( QWidget *parent = 0, const char* name = 0 ); | ||
40 | |||
41 | /** | ||
42 | Return the look currently selected. If there is none, it | ||
43 | returns zero. Do not use this pointer to store a reference | ||
44 | to a look, the user might select another one (e.g., create | ||
45 | a new object) at any time. | ||
46 | */ | ||
47 | KABBasicLook *currentLook(); | ||
48 | void refreshView(); | ||
49 | /** | ||
50 | Return the contact currently displayed. | ||
51 | */ | ||
52 | KABC::Addressee addressee(); | ||
53 | |||
54 | public slots: | ||
55 | /** | ||
56 | Set the contact currently displayed. | ||
57 | */ | ||
58 | void setAddressee( const KABC::Addressee& addressee ); | ||
59 | |||
60 | /** | ||
61 | Set read-write state. | ||
62 | */ | ||
63 | void setReadOnly( bool state ); | ||
64 | |||
65 | signals: | ||
66 | /** | ||
67 | The contact has been changed. | ||
68 | */ | ||
69 | void addresseeChanged(); | ||
70 | |||
71 | /** | ||
72 | The user acticated the email address displayed. This may happen | ||
73 | by, for example, clicking on the displayed mailto-URL. | ||
74 | */ | ||
75 | void sendEmail( const QString& ); | ||
76 | |||
77 | /** | ||
78 | The user activated one of the displayed HTTP URLs. For example | ||
79 | by clicking on the displayed homepage address. | ||
80 | */ | ||
81 | void browse( const QString& ); | ||
82 | |||
83 | protected: | ||
84 | /** | ||
85 | A style has been selected. Overloaded from base class. | ||
86 | */ | ||
87 | void slotStyleSelected( int ); | ||
88 | |||
89 | /** | ||
90 | Register the available looks. | ||
91 | */ | ||
92 | void registerLooks(); | ||
93 | |||
94 | private: | ||
95 | KABC::Addressee mCurrentAddressee; | ||
96 | KABBasicLook *mCurrentLook; | ||
97 | QPtrList<KABLookFactory> mLookFactories; | ||
98 | |||
99 | QComboBox *mStyleCombo; | ||
100 | QWidgetStack *mDetailsStack; | ||
101 | }; | ||
102 | |||
103 | #endif | ||
diff --git a/kaddressbook/details/global.h b/kaddressbook/details/global.h new file mode 100644 index 0000000..3c52bc2 --- a/dev/null +++ b/kaddressbook/details/global.h | |||
@@ -0,0 +1,28 @@ | |||
1 | #ifndef KAB3_GLOBAL_H | ||
2 | #define KAB3_GLOBAL_H | ||
3 | |||
4 | // keys of configuration file settings: | ||
5 | |||
6 | #define ConfigGeneral "General" | ||
7 | |||
8 | #define ConfigGeneral_RememberLastContact "RememberLastContact" | ||
9 | #define ConfigGeneral_ShowContactInHeader "ShowContactInHeader" | ||
10 | |||
11 | #define ConfigView "View" | ||
12 | |||
13 | #define ConfigView_View "ConfigView" | ||
14 | |||
15 | #define ConfigView_UseKDEDefaultFonts "UseKDEDefaultFonts" | ||
16 | #define ConfigView_DefaultBackgroundImage "DefaultBackgroundImage" | ||
17 | #define ConfigView_DefaultBackgroundColor "DefaultBackgroundColor" | ||
18 | #define ConfigView_UseDefaultBackground "UseDefaultBackground" | ||
19 | |||
20 | #define ConfigView_HeadlineBGColor "HeadlineBGColor" | ||
21 | #define ConfigView_UseHeadlineBGColor "UseHeadlineBGColor" | ||
22 | #define ConfigView_HeadlineTextColor "HeadlineTextColor" | ||
23 | #define ConfigView_HeadlineFont "HeadlineFont" | ||
24 | #define ConfigView_BodyFont "BodyFont" | ||
25 | #define ConfigView_DetailsFont "DetailsFont" | ||
26 | |||
27 | |||
28 | #endif | ||
diff --git a/kaddressbook/details/look_basic.cpp b/kaddressbook/details/look_basic.cpp new file mode 100644 index 0000000..0245686 --- a/dev/null +++ b/kaddressbook/details/look_basic.cpp | |||
@@ -0,0 +1,75 @@ | |||
1 | /* | ||
2 | This file is part of KAddressBook. | ||
3 | Copyright (c) 1996-2002 Mirko Boehm <mirko@kde.org> | ||
4 | |||
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 | ||
7 | the Free Software Foundation; either version 2 of the License, or | ||
8 | (at your option) any later version. | ||
9 | |||
10 | This program is distributed in the hope that it will be useful, | ||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | GNU General Public License for more details. | ||
14 | |||
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 | ||
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | |||
19 | As a special exception, permission is given to link this program | ||
20 | with any edition of Qt, and distribute the resulting executable, | ||
21 | without including the source code for Qt in the source distribution. | ||
22 | */ | ||
23 | |||
24 | #include <kdebug.h> | ||
25 | |||
26 | #include "look_basic.h" | ||
27 | |||
28 | KABBasicLook::KABBasicLook( QWidget *parent, const char *name ) | ||
29 | : QVBox( parent, name ), mReadOnly( false ) | ||
30 | { | ||
31 | } | ||
32 | |||
33 | void KABBasicLook::setReadOnly( bool state ) | ||
34 | { | ||
35 | mReadOnly = state; | ||
36 | } | ||
37 | |||
38 | bool KABBasicLook::isReadOnly() const | ||
39 | { | ||
40 | return mReadOnly; | ||
41 | } | ||
42 | |||
43 | void KABBasicLook::setAddressee( const KABC::Addressee &addr ) | ||
44 | { | ||
45 | if ( mAddressee == addr ) | ||
46 | return; | ||
47 | |||
48 | mAddressee = addr; | ||
49 | repaint( false ); | ||
50 | } | ||
51 | |||
52 | KABC::Addressee KABBasicLook::addressee() | ||
53 | { | ||
54 | return mAddressee; | ||
55 | } | ||
56 | |||
57 | void KABBasicLook::restoreSettings( KConfig* ) | ||
58 | { | ||
59 | } | ||
60 | |||
61 | void KABBasicLook::saveSettings( KConfig* ) | ||
62 | { | ||
63 | } | ||
64 | |||
65 | KABLookFactory::KABLookFactory( QWidget *parent, const char *name ) | ||
66 | : mParent( parent ), mName( name ) | ||
67 | { | ||
68 | } | ||
69 | |||
70 | KABLookFactory::~KABLookFactory() | ||
71 | { | ||
72 | } | ||
73 | #ifndef KAB_EMBEDDED | ||
74 | #include "look_basic.moc" | ||
75 | #endif //KAB_EMBEDDED | ||
diff --git a/kaddressbook/details/look_basic.h b/kaddressbook/details/look_basic.h new file mode 100644 index 0000000..7e8baff --- a/dev/null +++ b/kaddressbook/details/look_basic.h | |||
@@ -0,0 +1,134 @@ | |||
1 | /* | ||
2 | This file is part of KAddressBook. | ||
3 | Copyright (c) 1996-2002 Mirko Boehm <mirko@kde.org> | ||
4 | |||
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 | ||
7 | the Free Software Foundation; either version 2 of the License, or | ||
8 | (at your option) any later version. | ||
9 | |||
10 | This program is distributed in the hope that it will be useful, | ||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | GNU General Public License for more details. | ||
14 | |||
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 | ||
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | |||
19 | As a special exception, permission is given to link this program | ||
20 | with any edition of Qt, and distribute the resulting executable, | ||
21 | without including the source code for Qt in the source distribution. | ||
22 | */ | ||
23 | |||
24 | #ifndef LOOK_KABBASIC_H | ||
25 | #define LOOK_KABBASIC_H | ||
26 | |||
27 | #include <kabc/addressbook.h> | ||
28 | #include <qvbox.h> | ||
29 | |||
30 | class KConfig; | ||
31 | |||
32 | /** | ||
33 | This is a pure virtual base class that defines the | ||
34 | interface for how to display and change entries of | ||
35 | the KDE addressbook. | ||
36 | |||
37 | This basic widget does not show anything in its client space. | ||
38 | Derive it and implement its look and how the user may edit the | ||
39 | entry. | ||
40 | |||
41 | The paintEvent() has to paint the whole widget, since repaint() | ||
42 | calls will not delete the widgets background. | ||
43 | */ | ||
44 | class KABBasicLook : public QVBox | ||
45 | { | ||
46 | Q_OBJECT | ||
47 | |||
48 | public: | ||
49 | /** | ||
50 | The constructor. | ||
51 | */ | ||
52 | KABBasicLook( QWidget *parent = 0, const char *name = 0 ); | ||
53 | |||
54 | /** | ||
55 | Set the entry. It will be displayed automatically. | ||
56 | */ | ||
57 | virtual void setAddressee( const KABC::Addressee& addressee ); | ||
58 | |||
59 | /** | ||
60 | Get the current entry. | ||
61 | */ | ||
62 | virtual KABC::Addressee addressee(); | ||
63 | |||
64 | /** | ||
65 | Configure the view from the configuration file. | ||
66 | */ | ||
67 | virtual void restoreSettings( KConfig* ); | ||
68 | |||
69 | /** | ||
70 | Save the view settings to the configuration file. | ||
71 | */ | ||
72 | virtual void saveSettings( KConfig* ); | ||
73 | |||
74 | /** | ||
75 | Retrieve read-write state. | ||
76 | */ | ||
77 | bool isReadOnly() const; | ||
78 | |||
79 | signals: | ||
80 | /** | ||
81 | This signal is emitted when the user changed the entry. | ||
82 | */ | ||
83 | void entryChanged(); | ||
84 | |||
85 | /** | ||
86 | This signal indicates that the entry needs to be changed | ||
87 | immidiately in the database. This might be due to changes in | ||
88 | values that are available in menus. | ||
89 | */ | ||
90 | void saveMe(); | ||
91 | |||
92 | /** | ||
93 | The user acticated the email address displayed. This may happen | ||
94 | by, for example, clicking on the displayed mailto-URL. | ||
95 | */ | ||
96 | void sendEmail( const QString &email ); | ||
97 | |||
98 | /** | ||
99 | The user activated one of the displayed HTTP URLs. For example | ||
100 | by clicking on the displayed homepage address. | ||
101 | */ | ||
102 | void browse( const QString &url ); | ||
103 | |||
104 | public slots: | ||
105 | /** | ||
106 | Set read-write state. | ||
107 | */ | ||
108 | virtual void setReadOnly( bool state ); | ||
109 | |||
110 | private: | ||
111 | KABC::Addressee mAddressee; | ||
112 | bool mReadOnly; | ||
113 | }; | ||
114 | |||
115 | class KABLookFactory | ||
116 | { | ||
117 | public: | ||
118 | KABLookFactory( QWidget *parent = 0, const char *name = 0 ); | ||
119 | virtual ~KABLookFactory(); | ||
120 | |||
121 | virtual KABBasicLook *create() = 0; | ||
122 | |||
123 | /** | ||
124 | Overload this method to provide a one-liner description | ||
125 | for your look. | ||
126 | */ | ||
127 | virtual QString description() = 0; | ||
128 | |||
129 | protected: | ||
130 | QWidget *mParent; | ||
131 | const char* mName; | ||
132 | }; | ||
133 | |||
134 | #endif | ||
diff --git a/kaddressbook/details/look_details.cpp b/kaddressbook/details/look_details.cpp new file mode 100644 index 0000000..51ec0c0 --- a/dev/null +++ b/kaddressbook/details/look_details.cpp | |||
@@ -0,0 +1,419 @@ | |||
1 | /* | ||
2 | This file is part of KAddressBook. | ||
3 | Copyright (c) 1996-2002 Mirko Boehm <mirko@kde.org> | ||
4 | |||
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 | ||
7 | the Free Software Foundation; either version 2 of the License, or | ||
8 | (at your option) any later version. | ||
9 | |||
10 | This program is distributed in the hope that it will be useful, | ||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | GNU General Public License for more details. | ||
14 | |||
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 | ||
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | |||
19 | As a special exception, permission is given to link this program | ||
20 | with any edition of Qt, and distribute the resulting executable, | ||
21 | without including the source code for Qt in the source distribution. | ||
22 | */ | ||
23 | |||
24 | #include <kconfig.h> | ||
25 | #include <kdebug.h> | ||
26 | #include <kglobalsettings.h> | ||
27 | #include <kinstance.h> | ||
28 | #include <klocale.h> | ||
29 | #include <kstandarddirs.h> | ||
30 | |||
31 | #include <qcursor.h> | ||
32 | #include <qdir.h> | ||
33 | #include <qpainter.h> | ||
34 | #include <qpopupmenu.h> | ||
35 | |||
36 | #include "global.h" | ||
37 | #include "kabentrypainter.h" | ||
38 | |||
39 | #include "look_details.h" | ||
40 | |||
41 | #define GRID 5 | ||
42 | |||
43 | const QString KABDetailedView::mBorderedBGDir = "kab3part/backgrounds/bordered/"; | ||
44 | const QString KABDetailedView::mTiledBGDir = "kab3part/backgrounds/tiled/"; | ||
45 | |||
46 | KABDetailedView::KABDetailedView( QWidget *parent, const char *name ) | ||
47 | : KABBasicLook( parent, name ), mPainter( 0 ), mBackgroundStyle( None ), | ||
48 | mDefaultBGColor( white ), mHeadLineBGColor( darkBlue ), | ||
49 | mHeadLineTextColor( yellow ), mGrid( 3 ), mMenuBorderedBG( 0 ), | ||
50 | mMenuTiledBG( 0 ) | ||
51 | { | ||
52 | KToggleAction** actions[] = { | ||
53 | &mActionShowAddresses, | ||
54 | &mActionShowEmails, | ||
55 | &mActionShowPhones, | ||
56 | &mActionShowURLs | ||
57 | }; | ||
58 | |||
59 | QString actionTexts[] = { | ||
60 | i18n( "Show Postal Addresses" ), | ||
61 | i18n( "Show Email Addresses" ), | ||
62 | i18n( "Show Telephone Numbers" ), | ||
63 | i18n( "Show Web Pages (URLs)" ) | ||
64 | }; | ||
65 | |||
66 | QFont general = KGlobalSettings::generalFont(); | ||
67 | QFont fixed = KGlobalSettings::fixedFont(); | ||
68 | QString gfont = general.family(); | ||
69 | QString ffont = fixed.family(); | ||
70 | |||
71 | int gpointsize = general.pixelSize(); | ||
72 | if ( gpointsize == -1 ) | ||
73 | gpointsize = general.pointSize(); | ||
74 | |||
75 | int fpointsize = fixed.pixelSize(); | ||
76 | if ( fpointsize == -1 ) | ||
77 | fpointsize = fixed.pointSize(); | ||
78 | |||
79 | mPainter = new KABEntryPainter; | ||
80 | |||
81 | mPainter->setForegroundColor( black ); | ||
82 | mPainter->setHeaderColor( mHeadLineTextColor ); | ||
83 | mPainter->setUseHeaderColor( mUseHeadLineBGColor ); | ||
84 | mPainter->setBackgroundColor( mHeadLineBGColor ); | ||
85 | |||
86 | mPainter->setHeaderFont( QFont( gfont, gpointsize + 4, QFont::Bold, true ) ); | ||
87 | mPainter->setHeadLineFont( QFont( gfont, gpointsize + 2, QFont::Bold, true ) ); | ||
88 | mPainter->setBodyFont( QFont( gfont, gpointsize, QFont::Normal, false ) ); | ||
89 | mPainter->setFixedFont( QFont( ffont, fpointsize, QFont::Normal, false ) ); | ||
90 | mPainter->setCommentFont( QFont( gfont, gpointsize, QFont::Normal, false ) ); | ||
91 | |||
92 | const int numActions = sizeof( actions ) / sizeof( actions[ 0 ] ); | ||
93 | |||
94 | for ( int count = 0; count < numActions; ++count ) { | ||
95 | *actions[ count ] = new KToggleAction( actionTexts[ count ] ); | ||
96 | (*actions[ count ])->setChecked( true ); | ||
97 | } | ||
98 | |||
99 | setMouseTracking( true ); | ||
100 | |||
101 | setBackgroundMode( NoBackground ); | ||
102 | } | ||
103 | |||
104 | KABDetailedView::~KABDetailedView() | ||
105 | { | ||
106 | delete mPainter; | ||
107 | mPainter = 0; | ||
108 | } | ||
109 | |||
110 | bool KABDetailedView::getBackground( QString path, QPixmap& image ) | ||
111 | { | ||
112 | QMap<QString, QPixmap>::iterator pos; | ||
113 | |||
114 | pos = mBackgroundMap.find( path ); | ||
115 | if ( pos == mBackgroundMap.end() ) { // the image has not been loaded previously | ||
116 | if ( image.load( path ) ) { | ||
117 | mBackgroundMap[ path ] = image; | ||
118 | return true; | ||
119 | } else | ||
120 | return false; | ||
121 | } else { // image found in cache | ||
122 | image = pos.data(); | ||
123 | return true; | ||
124 | } | ||
125 | } | ||
126 | |||
127 | void KABDetailedView::paintEvent( QPaintEvent* ) | ||
128 | { | ||
129 | const int BorderSpace = mGrid; | ||
130 | QPixmap pm( width(), height() ); | ||
131 | QPainter p; | ||
132 | |||
133 | QRect entryArea = QRect( BorderSpace, mGrid, width() - mGrid - BorderSpace, | ||
134 | height() - 2 * mGrid ); | ||
135 | p.begin( &pm ); | ||
136 | |||
137 | p.setPen( darkBlue ); | ||
138 | p.setBrush( mDefaultBGColor ); | ||
139 | p.drawRect( 0, 0, width(), height() ); | ||
140 | switch ( mBackgroundStyle ) { | ||
141 | case Tiled: | ||
142 | p.drawTiledPixmap( 1, 1, width() - 2, height() - 2, mCurrentBackground ); | ||
143 | break; | ||
144 | case Bordered: | ||
145 | p.drawTiledPixmap( 1, 1, QMIN( width() - 2, mCurrentBackground.width() ), | ||
146 | height() - 2, mCurrentBackground ); | ||
147 | break; | ||
148 | case None: // no BG image defined for this entry: | ||
149 | default: | ||
150 | if ( mUseDefaultBGImage ) | ||
151 | p.drawTiledPixmap( 1, 1, width() - 2, height() - 2, mDefaultBGImage ); | ||
152 | break; | ||
153 | }; | ||
154 | |||
155 | p.setViewport( entryArea ); | ||
156 | |||
157 | mPainter->setShowAddresses( mActionShowAddresses->isChecked() ); | ||
158 | mPainter->setShowEmails( mActionShowEmails->isChecked() ); | ||
159 | mPainter->setShowPhones( mActionShowPhones->isChecked() ); | ||
160 | mPainter->setShowURLs( mActionShowURLs->isChecked() ); | ||
161 | mPainter->printAddressee( addressee(), QRect( 0, 0, entryArea.width(), | ||
162 | entryArea.height() ), &p ); | ||
163 | p.end(); | ||
164 | bitBlt( this, 0, 0, &pm ); | ||
165 | } | ||
166 | |||
167 | void KABDetailedView::mouseMoveEvent( QMouseEvent *e ) | ||
168 | { | ||
169 | QPoint bias( mGrid, mGrid ); | ||
170 | int rc; | ||
171 | bool hit = false; | ||
172 | |||
173 | if ( ( rc = mPainter->hitsEmail( e->pos() - bias ) ) != -1 ) | ||
174 | hit = true; | ||
175 | else if ( ( rc = mPainter->hitsURL( e->pos() - bias ) ) != -1 ) | ||
176 | hit = true; | ||
177 | else if ( ( rc = mPainter->hitsPhone( e->pos() - bias ) ) != -1 ) | ||
178 | hit = true; | ||
179 | else if ( ( rc = mPainter->hitsTalk( e->pos() - bias ) ) != -1 ) | ||
180 | hit = true; | ||
181 | |||
182 | if ( hit ) { | ||
183 | if ( cursor().shape() != PointingHandCursor ) | ||
184 | setCursor( PointingHandCursor ); | ||
185 | else if( cursor().shape() != ArrowCursor ) | ||
186 | setCursor(ArrowCursor); | ||
187 | } | ||
188 | } | ||
189 | |||
190 | void KABDetailedView::mousePressEvent( QMouseEvent *e ) | ||
191 | { | ||
192 | QPopupMenu menu( this ); | ||
193 | QPopupMenu *menuBG = new QPopupMenu( &menu ); | ||
194 | mMenuBorderedBG = new QPopupMenu( &menu ); | ||
195 | mMenuTiledBG = new QPopupMenu( &menu ); | ||
196 | |||
197 | menu.insertItem( i18n( "Select Background" ), menuBG ); | ||
198 | menuBG->insertItem( i18n( "Bordered Backgrounds" ), mMenuBorderedBG ); | ||
199 | menuBG->insertItem( i18n( "Tiled Backgrounds" ), mMenuTiledBG ); | ||
200 | menu.insertSeparator(); | ||
201 | |||
202 | QPoint point = e->pos() - QPoint( mGrid, mGrid ); | ||
203 | int rc; | ||
204 | QStringList dirsBorderedBG, dirsTiledBG; | ||
205 | QDir dir; | ||
206 | |||
207 | switch( e->button() ) { | ||
208 | case QMouseEvent::RightButton: | ||
209 | if ( isReadOnly() ) | ||
210 | menu.setItemEnabled( menu.idAt( 0 ), false ); | ||
211 | else { | ||
212 | // TODO: settings need to be saved in view options | ||
213 | dirsBorderedBG = KGlobal::instance()->dirs()->findDirs( "data", mBorderedBGDir ); | ||
214 | if ( dirsBorderedBG.count() > 0 ) { | ||
215 | dir.setPath( dirsBorderedBG[ 0 ] ); | ||
216 | mBorders = dir.entryList( QDir::Files ); | ||
217 | for ( uint count = 0; count < mBorders.count(); ++count ) | ||
218 | mMenuBorderedBG->insertItem( mBorders[ count ], count ); | ||
219 | |||
220 | connect( mMenuBorderedBG, SIGNAL( activated( int ) ), | ||
221 | SLOT( slotBorderedBGSelected( int ) ) ); | ||
222 | } else | ||
223 | menuBG->setItemEnabled( menuBG->idAt( 0 ), false ); | ||
224 | |||
225 | dirsTiledBG = KGlobal::instance()->dirs()->findDirs( "data", mTiledBGDir ); | ||
226 | if ( dirsTiledBG.count() > 0 ) { | ||
227 | dir.setPath( dirsTiledBG[ 0 ] ); | ||
228 | mTiles = dir.entryList( QDir::Files ); | ||
229 | for ( uint count = 0; count < mTiles.count(); ++count ) | ||
230 | mMenuTiledBG->insertItem( mTiles[ count ], count ); | ||
231 | |||
232 | connect( mMenuTiledBG, SIGNAL( activated( int ) ), | ||
233 | SLOT( slotTiledBGSelected( int ) ) ); | ||
234 | } else | ||
235 | menuBG->setItemEnabled( menuBG->idAt( 1 ), false ); | ||
236 | } | ||
237 | |||
238 | mActionShowAddresses->plug( &menu ); | ||
239 | mActionShowEmails->plug( &menu ); | ||
240 | mActionShowPhones->plug( &menu ); | ||
241 | mActionShowURLs->plug( &menu ); | ||
242 | |||
243 | menu.exec( e->globalPos() ); | ||
244 | break; | ||
245 | |||
246 | case QMouseEvent::LeftButton: | ||
247 | // find whether the pointer touches an email address, URL, | ||
248 | // talk address or telephone number: | ||
249 | if ( ( rc = mPainter->hitsEmail( point ) ) != -1 ) { | ||
250 | emit sendEmail( addressee().emails()[ rc ] ); | ||
251 | break; | ||
252 | } | ||
253 | if ( ( rc = mPainter->hitsURL( point ) ) != -1 ) { | ||
254 | emit browse( addressee().url().prettyURL() ); | ||
255 | break; | ||
256 | } | ||
257 | if ( ( rc = mPainter->hitsPhone( point ) ) != -1 ) { | ||
258 | // not implemented yet | ||
259 | break; | ||
260 | } | ||
261 | if ( ( rc = mPainter->hitsTalk( point ) ) != -1 ) { | ||
262 | // not implemented yet | ||
263 | break; | ||
264 | } | ||
265 | break; | ||
266 | default: | ||
267 | break; | ||
268 | } | ||
269 | |||
270 | mMenuBorderedBG = 0; | ||
271 | mMenuTiledBG = 0; | ||
272 | } | ||
273 | |||
274 | void KABDetailedView::setAddressee( const KABC::Addressee &addr ) | ||
275 | { | ||
276 | BackgroundStyle style = None; | ||
277 | QString dir, file, styleSetting; | ||
278 | KABBasicLook::setAddressee( addr ); | ||
279 | |||
280 | // TODO: preload path and styleSetting with possible preference values | ||
281 | styleSetting = addressee().custom( "kab", "BackgroundStyle" ); | ||
282 | style = (BackgroundStyle)styleSetting.toInt(); | ||
283 | file = addressee().custom( "kab", "BackgroundImage" ); | ||
284 | if ( !file.isEmpty() ) { | ||
285 | switch ( style ) { | ||
286 | case Tiled: | ||
287 | dir = mTiledBGDir; | ||
288 | break; | ||
289 | case Bordered: | ||
290 | dir = mBorderedBGDir; | ||
291 | break; | ||
292 | case None: | ||
293 | default: | ||
294 | break; | ||
295 | } | ||
296 | |||
297 | QStringList dirs = KGlobal::instance()->dirs()->findDirs( "data", dir ); | ||
298 | mBackgroundStyle = None; | ||
299 | if ( !dirs.isEmpty() ) { | ||
300 | uint count = 0; | ||
301 | for ( ; count < dirs.count(); ++count ) { | ||
302 | QDir folder; | ||
303 | folder.setPath( dirs[ count ] ); | ||
304 | file = folder.absPath() + "/" + file; | ||
305 | if ( getBackground( file, mCurrentBackground ) ) { | ||
306 | mBackgroundStyle = style; | ||
307 | break; | ||
308 | } | ||
309 | } | ||
310 | |||
311 | if ( count == dirs.count() ) { | ||
312 | kdDebug(5720) << "KABDetailedView::setEntry: " << file | ||
313 | << " not locatable." << endl; | ||
314 | } | ||
315 | } | ||
316 | } else { // no background here | ||
317 | mBackgroundStyle = None; | ||
318 | mCurrentBackground.resize( 0, 0 ); | ||
319 | } | ||
320 | |||
321 | repaint( false ); | ||
322 | } | ||
323 | |||
324 | void KABDetailedView::slotBorderedBGSelected( int index ) | ||
325 | { | ||
326 | if ( index >= 0 && (uint)index < mBorders.count() && !isReadOnly() ) { | ||
327 | // get the selection and make it a full path | ||
328 | QString path = mBorders[ index ]; | ||
329 | mBackgroundStyle = Bordered; | ||
330 | addressee().insertCustom( "kab", "BackgroundStyle", | ||
331 | QString().setNum( mBackgroundStyle ) ); | ||
332 | addressee().insertCustom( "kab", "BackgroundImage", path ); | ||
333 | setAddressee( addressee() ); | ||
334 | } | ||
335 | } | ||
336 | |||
337 | void KABDetailedView::slotTiledBGSelected( int index ) | ||
338 | { | ||
339 | if ( index >= 0 && (uint)index < mTiles.count() && !isReadOnly() ) { | ||
340 | QString path = mTiles[ index ]; | ||
341 | mBackgroundStyle = Tiled; | ||
342 | addressee().insertCustom( "kab", "BackgroundStyle", | ||
343 | QString().setNum( mBackgroundStyle ) ); | ||
344 | addressee().insertCustom( "kab", "BackgroundImage", path ); | ||
345 | setAddressee( addressee() ); | ||
346 | } | ||
347 | } | ||
348 | |||
349 | void KABDetailedView::setReadOnly( bool state ) | ||
350 | { | ||
351 | KABBasicLook::setReadOnly( state ); | ||
352 | repaint( false ); | ||
353 | } | ||
354 | |||
355 | void KABDetailedView::restoreSettings( KConfig *config ) | ||
356 | { | ||
357 | QFont general = KGlobalSettings::generalFont(); | ||
358 | QFont fixed = KGlobalSettings::fixedFont(); | ||
359 | QString gfont = general.family(); | ||
360 | QString ffont = fixed.family(); | ||
361 | |||
362 | int gpointsize = general.pixelSize(); | ||
363 | if ( gpointsize == -1 ) | ||
364 | gpointsize = general.pointSize(); | ||
365 | |||
366 | int fpointsize = fixed.pixelSize(); | ||
367 | if ( fpointsize == -1 ) | ||
368 | fpointsize = fixed.pointSize(); | ||
369 | |||
370 | config->setGroup( ConfigView ); | ||
371 | |||
372 | // load the default background image: | ||
373 | QString bgImage; | ||
374 | mUseDefaultBGImage = config->readBoolEntry( ConfigView_UseDefaultBackground, true ); | ||
375 | mDefaultBGColor = config->readColorEntry( ConfigView_DefaultBackgroundColor, &white ); | ||
376 | bgImage = config->readEntry( ConfigView_DefaultBackgroundImage, "konqueror/tiles/kenwimer.png" ); | ||
377 | |||
378 | if ( mUseDefaultBGImage ) { | ||
379 | uint count = 0; | ||
380 | QStringList dirs = KGlobal::instance()->dirs()->findDirs( "data", "/" ); | ||
381 | if ( !dirs.isEmpty() ) { | ||
382 | for ( count = 0; count < dirs.count(); ++count ) { | ||
383 | if ( getBackground( dirs[ count ] + "/" + bgImage, mDefaultBGImage ) ) | ||
384 | break; | ||
385 | } | ||
386 | } | ||
387 | |||
388 | if ( count == dirs.count() ) { | ||
389 | mUseDefaultBGImage = getBackground( bgImage, mDefaultBGImage ); | ||
390 | if ( !mUseDefaultBGImage ) | ||
391 | kdDebug(5720) << "KABDetailedView::configure: " | ||
392 | << "default BG image selected, but could not be loaded." | ||
393 | << endl; | ||
394 | } | ||
395 | } | ||
396 | |||
397 | mDefaultBGColor = config->readColorEntry( ConfigView_DefaultBackgroundColor, &white ); | ||
398 | mHeadLineBGColor = config->readColorEntry( ConfigView_HeadlineBGColor, &darkBlue ); | ||
399 | mHeadLineTextColor = config->readColorEntry( ConfigView_HeadlineTextColor, &yellow ); | ||
400 | mUseHeadLineBGColor = config->readBoolEntry( ConfigView_UseHeadlineBGColor, true ); | ||
401 | |||
402 | if ( !mPainter ) | ||
403 | mPainter = new KABEntryPainter; | ||
404 | |||
405 | mPainter->setForegroundColor( black ); | ||
406 | mPainter->setHeaderColor( mHeadLineTextColor ); | ||
407 | mPainter->setUseHeaderColor( mUseHeadLineBGColor ); | ||
408 | mPainter->setBackgroundColor( mHeadLineBGColor ); | ||
409 | |||
410 | mPainter->setHeaderFont( QFont( gfont, gpointsize + 4, QFont::Bold, true ) ); | ||
411 | mPainter->setHeadLineFont( QFont( gfont, gpointsize + 2, QFont::Bold, true ) ); | ||
412 | mPainter->setBodyFont( QFont( gfont, gpointsize, QFont::Normal, false ) ); | ||
413 | mPainter->setFixedFont( QFont( ffont, fpointsize, QFont::Normal, false ) ); | ||
414 | mPainter->setCommentFont( QFont( gfont, gpointsize, QFont::Normal, false ) ); | ||
415 | } | ||
416 | |||
417 | #ifndef KAB_EMBEDDED | ||
418 | #include "look_details.moc" | ||
419 | #endif //KAB_EMBEDDED | ||
diff --git a/kaddressbook/details/look_details.h b/kaddressbook/details/look_details.h new file mode 100644 index 0000000..e8d50a9 --- a/dev/null +++ b/kaddressbook/details/look_details.h | |||
@@ -0,0 +1,157 @@ | |||
1 | /* | ||
2 | This file is part of KAddressBook. | ||
3 | Copyright (c) 1996-2002 Mirko Boehm <mirko@kde.org> | ||
4 | |||
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 | ||
7 | the Free Software Foundation; either version 2 of the License, or | ||
8 | (at your option) any later version. | ||
9 | |||
10 | This program is distributed in the hope that it will be useful, | ||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | GNU General Public License for more details. | ||
14 | |||
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 | ||
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | |||
19 | As a special exception, permission is given to link this program | ||
20 | with any edition of Qt, and distribute the resulting executable, | ||
21 | without including the source code for Qt in the source distribution. | ||
22 | */ | ||
23 | |||
24 | #ifndef LOOK_DETAILS_H | ||
25 | #define LOOK_DETAILS_H | ||
26 | |||
27 | #include <kabc/addressbook.h> | ||
28 | #include <kaction.h> | ||
29 | #include <klocale.h> | ||
30 | |||
31 | #include <qmap.h> | ||
32 | #include <qpixmap.h> | ||
33 | #include <qptrlist.h> | ||
34 | #include <qrect.h> | ||
35 | |||
36 | #include "look_basic.h" | ||
37 | |||
38 | class KABEntryPainter; | ||
39 | class QComboBox; | ||
40 | |||
41 | /** | ||
42 | This class implements the detailed view. | ||
43 | Currently, there is no possibility to change the entry in this | ||
44 | view. | ||
45 | */ | ||
46 | |||
47 | class KABDetailedView : public KABBasicLook | ||
48 | { | ||
49 | Q_OBJECT | ||
50 | |||
51 | public: | ||
52 | /** | ||
53 | Enum to select how the background is drawn. | ||
54 | */ | ||
55 | enum BackgroundStyle | ||
56 | { | ||
57 | None, | ||
58 | Tiled, | ||
59 | Bordered | ||
60 | }; | ||
61 | |||
62 | /** | ||
63 | The constructor. | ||
64 | */ | ||
65 | KABDetailedView( QWidget *parent = 0, const char* name = 0 ); | ||
66 | |||
67 | /** | ||
68 | The virtual destructor. | ||
69 | */ | ||
70 | virtual ~KABDetailedView(); | ||
71 | |||
72 | /** | ||
73 | Set the addressee. | ||
74 | */ | ||
75 | void setAddressee( const KABC::Addressee& ); | ||
76 | |||
77 | /** | ||
78 | Overloaded from KABBasicLook. | ||
79 | */ | ||
80 | void setReadOnly( bool ); | ||
81 | |||
82 | /** | ||
83 | Overloaded from KABBasicLook. | ||
84 | */ | ||
85 | void restoreSettings( KConfig* ); | ||
86 | |||
87 | public slots: | ||
88 | void slotBorderedBGSelected( int index ); | ||
89 | void slotTiledBGSelected( int index ); | ||
90 | |||
91 | protected: | ||
92 | void paintEvent( QPaintEvent* ); | ||
93 | void mousePressEvent( QMouseEvent* ); | ||
94 | void mouseMoveEvent( QMouseEvent* ); | ||
95 | |||
96 | /** | ||
97 | A method to retrieve a background image according to the path | ||
98 | stored in the entry. It is either loaded | ||
99 | from backgrounds, that acts as a cache, or from the file | ||
100 | and added to @see backgrounds. | ||
101 | */ | ||
102 | bool getBackground( QString path, QPixmap& image ); | ||
103 | |||
104 | private: | ||
105 | QPtrList<QRect> mURLRects; | ||
106 | QPtrList<QRect> mEmailRects; | ||
107 | QPtrList<QRect> mPhoneRects; | ||
108 | KABEntryPainter *mPainter; | ||
109 | |||
110 | QMap<QString, QPixmap> mBackgroundMap; | ||
111 | QPixmap mCurrentBackground; | ||
112 | |||
113 | BackgroundStyle mBackgroundStyle; | ||
114 | |||
115 | bool mUseDefaultBGImage; | ||
116 | bool mUseHeadLineBGColor; | ||
117 | |||
118 | QColor mDefaultBGColor; | ||
119 | QColor mHeadLineBGColor; | ||
120 | QColor mHeadLineTextColor; | ||
121 | |||
122 | QPixmap mDefaultBGImage; | ||
123 | |||
124 | KToggleAction *mActionShowAddresses; | ||
125 | KToggleAction *mActionShowEmails; | ||
126 | KToggleAction *mActionShowPhones; | ||
127 | KToggleAction *mActionShowURLs; | ||
128 | |||
129 | const int mGrid; | ||
130 | QStringList mBorders; | ||
131 | QStringList mTiles; | ||
132 | |||
133 | QPopupMenu *mMenuBorderedBG; | ||
134 | QPopupMenu *mMenuTiledBG; | ||
135 | |||
136 | static const QString mBorderedBGDir; | ||
137 | static const QString mTiledBGDir; | ||
138 | }; | ||
139 | |||
140 | class KABDetailedViewFactory : public KABLookFactory | ||
141 | { | ||
142 | public: | ||
143 | KABDetailedViewFactory( QWidget *parent = 0, const char *name = 0 ) | ||
144 | : KABLookFactory( parent, name ) {} | ||
145 | |||
146 | KABBasicLook *create() | ||
147 | { | ||
148 | return new KABDetailedView( mParent, mName ); | ||
149 | } | ||
150 | |||
151 | QString description() | ||
152 | { | ||
153 | return i18n( "Detailed Style: Display all details, no modifications." ); | ||
154 | } | ||
155 | }; | ||
156 | |||
157 | #endif | ||
diff --git a/kaddressbook/details/look_html.cpp b/kaddressbook/details/look_html.cpp new file mode 100644 index 0000000..2a70273 --- a/dev/null +++ b/kaddressbook/details/look_html.cpp | |||
@@ -0,0 +1,45 @@ | |||
1 | /* | ||
2 | This file is part of KAddressBook. | ||
3 | Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> | ||
4 | |||
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 | ||
7 | the Free Software Foundation; either version 2 of the License, or | ||
8 | (at your option) any later version. | ||
9 | |||
10 | This program is distributed in the hope that it will be useful, | ||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | GNU General Public License for more details. | ||
14 | |||
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 | ||
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | |||
19 | As a special exception, permission is given to link this program | ||
20 | with any edition of Qt, and distribute the resulting executable, | ||
21 | without including the source code for Qt in the source distribution. | ||
22 | */ | ||
23 | |||
24 | #include <libkdepim/addresseeview.h> | ||
25 | |||
26 | #include "look_html.h" | ||
27 | #include <qscrollview.h> | ||
28 | KABHtmlView::KABHtmlView( QWidget *parent, const char *name ) | ||
29 | : KABBasicLook( parent, name ) | ||
30 | { | ||
31 | mView = new KPIM::AddresseeView( this ); | ||
32 | } | ||
33 | |||
34 | KABHtmlView::~KABHtmlView() | ||
35 | { | ||
36 | } | ||
37 | |||
38 | void KABHtmlView::setAddressee( const KABC::Addressee &addr ) | ||
39 | { | ||
40 | mView->setAddressee( addr ); | ||
41 | } | ||
42 | |||
43 | #ifndef KAB_EMBEDDED | ||
44 | #include "look_html.moc" | ||
45 | #endif //KAB_EMBEDDED | ||
diff --git a/kaddressbook/details/look_html.h b/kaddressbook/details/look_html.h new file mode 100644 index 0000000..68a02d9 --- a/dev/null +++ b/kaddressbook/details/look_html.h | |||
@@ -0,0 +1,75 @@ | |||
1 | /* | ||
2 | This file is part of KAddressBook. | ||
3 | Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> | ||
4 | |||
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 | ||
7 | the Free Software Foundation; either version 2 of the License, or | ||
8 | (at your option) any later version. | ||
9 | |||
10 | This program is distributed in the hope that it will be useful, | ||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | GNU General Public License for more details. | ||
14 | |||
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 | ||
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | |||
19 | As a special exception, permission is given to link this program | ||
20 | with any edition of Qt, and distribute the resulting executable, | ||
21 | without including the source code for Qt in the source distribution. | ||
22 | */ | ||
23 | |||
24 | #ifndef LOOK_HTML_H | ||
25 | #define LOOK_HTML_H | ||
26 | |||
27 | #include <klocale.h> | ||
28 | |||
29 | #include "look_basic.h" | ||
30 | |||
31 | namespace KABC { class Addressee; } | ||
32 | namespace KPIM { class AddresseeView; } | ||
33 | |||
34 | class KABHtmlView : public KABBasicLook | ||
35 | { | ||
36 | Q_OBJECT | ||
37 | |||
38 | public: | ||
39 | /** | ||
40 | The constructor. | ||
41 | */ | ||
42 | KABHtmlView( QWidget *parent = 0, const char* name = 0 ); | ||
43 | |||
44 | /** | ||
45 | The virtual destructor. | ||
46 | */ | ||
47 | virtual ~KABHtmlView(); | ||
48 | |||
49 | /** | ||
50 | Set the addressee. | ||
51 | */ | ||
52 | void setAddressee( const KABC::Addressee& ); | ||
53 | |||
54 | private: | ||
55 | KPIM::AddresseeView *mView; | ||
56 | }; | ||
57 | |||
58 | class KABHtmlViewFactory : public KABLookFactory | ||
59 | { | ||
60 | public: | ||
61 | KABHtmlViewFactory( QWidget *parent = 0, const char *name = 0 ) | ||
62 | : KABLookFactory( parent, name ) {} | ||
63 | |||
64 | KABBasicLook *create() | ||
65 | { | ||
66 | return new KABHtmlView( mParent, mName ); | ||
67 | } | ||
68 | |||
69 | QString description() | ||
70 | { | ||
71 | return i18n( "HTML table style." ); | ||
72 | } | ||
73 | }; | ||
74 | |||
75 | #endif | ||