-rw-r--r-- | core/pim/addressbook/abtable.cpp | 1 | ||||
-rw-r--r-- | core/pim/addressbook/abview.cpp | 44 | ||||
-rw-r--r-- | core/pim/addressbook/addressbook.cpp | 7 |
3 files changed, 25 insertions, 27 deletions
diff --git a/core/pim/addressbook/abtable.cpp b/core/pim/addressbook/abtable.cpp index 0be7d1a..49e66ad 100644 --- a/core/pim/addressbook/abtable.cpp +++ b/core/pim/addressbook/abtable.cpp | |||
@@ -114,97 +114,96 @@ void AbPickItem::setContentFromEditor( QWidget *w ) | |||
114 | 114 | ||
115 | AbTable::AbTable( const QValueList<int> order, QWidget *parent, const char *name ) | 115 | AbTable::AbTable( const QValueList<int> order, QWidget *parent, const char *name ) |
116 | : QTable( parent, name ), | 116 | : QTable( parent, name ), |
117 | lastSortCol( -1 ), | 117 | lastSortCol( -1 ), |
118 | asc( TRUE ), | 118 | asc( TRUE ), |
119 | intFields( order ), | 119 | intFields( order ), |
120 | enablePainting( true ), | 120 | enablePainting( true ), |
121 | columnVisible( true ), | 121 | columnVisible( true ), |
122 | countNested( 0 ) | 122 | countNested( 0 ) |
123 | { | 123 | { |
124 | //odebug << "C'tor start" << oendl; | 124 | //odebug << "C'tor start" << oendl; |
125 | setSelectionMode( NoSelection ); | 125 | setSelectionMode( NoSelection ); |
126 | init(); | 126 | init(); |
127 | setSorting( TRUE ); | 127 | setSorting( TRUE ); |
128 | connect( this, SIGNAL(clicked(int,int,int,const QPoint&)), | 128 | connect( this, SIGNAL(clicked(int,int,int,const QPoint&)), |
129 | this, SLOT(itemClicked(int,int)) ); | 129 | this, SLOT(itemClicked(int,int)) ); |
130 | 130 | ||
131 | // contactList.clear(); | 131 | // contactList.clear(); |
132 | //odebug << "C'tor end" << oendl; | 132 | //odebug << "C'tor end" << oendl; |
133 | } | 133 | } |
134 | 134 | ||
135 | AbTable::~AbTable() | 135 | AbTable::~AbTable() |
136 | { | 136 | { |
137 | } | 137 | } |
138 | 138 | ||
139 | void AbTable::init() | 139 | void AbTable::init() |
140 | { | 140 | { |
141 | // :SX showChar = '\0'; | 141 | // :SX showChar = '\0'; |
142 | setNumRows( 0 ); | 142 | setNumRows( 0 ); |
143 | setNumCols( 2 ); | 143 | setNumCols( 2 ); |
144 | 144 | ||
145 | horizontalHeader()->setLabel( 0, tr( "Full Name" )); | 145 | horizontalHeader()->setLabel( 0, tr( "Full Name" )); |
146 | horizontalHeader()->setLabel( 1, tr( "Contact" )); | 146 | horizontalHeader()->setLabel( 1, tr( "Contact" )); |
147 | setLeftMargin( 0 ); | 147 | setLeftMargin( 0 ); |
148 | verticalHeader()->hide(); | 148 | verticalHeader()->hide(); |
149 | columnVisible = true; | 149 | columnVisible = true; |
150 | } | 150 | } |
151 | 151 | ||
152 | void AbTable::setContacts( const Opie::OPimContactAccess::List& viewList ) | 152 | void AbTable::setContacts( const Opie::OPimContactAccess::List& viewList ) |
153 | { | 153 | { |
154 | odebug << "AbTable::setContacts()" << oendl; | 154 | odebug << "AbTable::setContacts()" << oendl; |
155 | 155 | ||
156 | clear(); | 156 | clear(); |
157 | m_viewList = viewList; | 157 | m_viewList = viewList; |
158 | 158 | ||
159 | setSorting( false ); | 159 | setSorting( false ); |
160 | setPaintingEnabled( FALSE ); | 160 | setPaintingEnabled( FALSE ); |
161 | 161 | ||
162 | Opie::OPimContactAccess::List::Iterator it; | ||
163 | setNumRows( m_viewList.count() ); | 162 | setNumRows( m_viewList.count() ); |
164 | //int row = 0; | 163 | //int row = 0; |
165 | // for ( it = m_viewList.begin(); it != m_viewList.end(); ++it ) | 164 | // for ( it = m_viewList.begin(); it != m_viewList.end(); ++it ) |
166 | // insertIntoTable( *it, row++ ); | 165 | // insertIntoTable( *it, row++ ); |
167 | 166 | ||
168 | // setSorting( true ); | 167 | // setSorting( true ); |
169 | 168 | ||
170 | // resort(); | 169 | // resort(); |
171 | 170 | ||
172 | updateVisible(); | 171 | updateVisible(); |
173 | 172 | ||
174 | setPaintingEnabled( TRUE ); | 173 | setPaintingEnabled( TRUE ); |
175 | 174 | ||
176 | } | 175 | } |
177 | 176 | ||
178 | void AbTable::setOrderedList( const QValueList<int> ordered ) | 177 | void AbTable::setOrderedList( const QValueList<int> ordered ) |
179 | { | 178 | { |
180 | intFields = ordered; | 179 | intFields = ordered; |
181 | } | 180 | } |
182 | 181 | ||
183 | 182 | ||
184 | bool AbTable::selectContact( int UID ) | 183 | bool AbTable::selectContact( int UID ) |
185 | { | 184 | { |
186 | odebug << "AbTable::selectContact( " << UID << " )" << oendl; | 185 | odebug << "AbTable::selectContact( " << UID << " )" << oendl; |
187 | int rows = numRows(); | 186 | int rows = numRows(); |
188 | bool found = false; | 187 | bool found = false; |
189 | 188 | ||
190 | setPaintingEnabled( FALSE ); | 189 | setPaintingEnabled( FALSE ); |
191 | odebug << "Search start" << oendl; | 190 | odebug << "Search start" << oendl; |
192 | for ( int r = 0; r < rows; ++r ) { | 191 | for ( int r = 0; r < rows; ++r ) { |
193 | if ( m_viewList.uidAt( r ) == UID ){ | 192 | if ( m_viewList.uidAt( r ) == UID ){ |
194 | ensureCellVisible( r, 0 ); | 193 | ensureCellVisible( r, 0 ); |
195 | setCurrentCell( r, 0 ); | 194 | setCurrentCell( r, 0 ); |
196 | found = true; | 195 | found = true; |
197 | break; | 196 | break; |
198 | } | 197 | } |
199 | } | 198 | } |
200 | odebug << "Search end" << oendl; | 199 | odebug << "Search end" << oendl; |
201 | 200 | ||
202 | if ( !found ){ | 201 | if ( !found ){ |
203 | ensureCellVisible( 0,0 ); | 202 | ensureCellVisible( 0,0 ); |
204 | setCurrentCell( 0, 0 ); | 203 | setCurrentCell( 0, 0 ); |
205 | } | 204 | } |
206 | 205 | ||
207 | setPaintingEnabled( TRUE ); | 206 | setPaintingEnabled( TRUE ); |
208 | 207 | ||
209 | return true; | 208 | return true; |
210 | } | 209 | } |
diff --git a/core/pim/addressbook/abview.cpp b/core/pim/addressbook/abview.cpp index 6be19f8..34035fd 100644 --- a/core/pim/addressbook/abview.cpp +++ b/core/pim/addressbook/abview.cpp | |||
@@ -1,93 +1,93 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (c) 2002 Stefan Eilers (eilers.stefan@epost.de) | 2 | ** Copyright (c) 2002 Stefan Eilers (eilers.stefan@epost.de) |
3 | ** | 3 | ** |
4 | ** This file is part of Qt Palmtop Environment. | 4 | ** This file is part of Qt Palmtop Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** | 14 | ** |
15 | **********************************************************************/ | 15 | **********************************************************************/ |
16 | 16 | ||
17 | #include "abview.h" | 17 | #include "abview.h" |
18 | 18 | ||
19 | #include <opie2/ocontactaccessbackend_vcard.h> | 19 | #include <opie2/ocontactaccessbackend_vcard.h> |
20 | #include <opie2/odebug.h> | 20 | #include <opie2/odebug.h> |
21 | 21 | ||
22 | #include <qpe/global.h> | 22 | #include <qpe/global.h> |
23 | 23 | ||
24 | #include <qlayout.h> | 24 | #include <qlayout.h> |
25 | 25 | ||
26 | #include <assert.h> | 26 | #include <assert.h> |
27 | 27 | ||
28 | 28 | ||
29 | // Is defined in LibQPE | 29 | // Is defined in LibQPE |
30 | extern QString categoryFileName(); | 30 | extern QString categoryFileName(); |
31 | 31 | ||
32 | QString addressbookPersonalVCardName() | 32 | QString addressbookPersonalVCardName() |
33 | { | 33 | { |
34 | QString filename = Global::applicationFileName("addressbook", | 34 | QString filename = Global::applicationFileName("addressbook", |
35 | "businesscard.vcf"); | 35 | "businesscard.vcf"); |
36 | return filename; | 36 | return filename; |
37 | } | 37 | } |
38 | 38 | ||
39 | 39 | ||
40 | AbView::AbView ( QWidget* parent, const QValueList<int>& ordered ): | 40 | AbView::AbView ( QWidget* parent, const QValueList<int>& ordered ): |
41 | QWidget(parent), | 41 | QWidget(parent), |
42 | mCat(0), | 42 | mCat(0), |
43 | m_inSearch( false ), | 43 | m_inSearch( false ), |
44 | m_inPersonal( false ), | 44 | m_inPersonal( false ), |
45 | m_curr_category( -1 ), | 45 | m_curr_category( 0 ), |
46 | m_curr_View( TableView ), | 46 | m_curr_View( TableView ), |
47 | m_prev_View( TableView ), | 47 | m_prev_View( TableView ), |
48 | m_curr_Contact ( 0 ), | 48 | m_curr_Contact ( 0 ), |
49 | m_contactdb ( 0l ), | 49 | m_contactdb ( 0l ), |
50 | m_storedDB ( 0l ), | 50 | m_storedDB ( 0l ), |
51 | m_viewStack( 0l ), | 51 | m_viewStack( 0l ), |
52 | m_abTable( 0l ), | 52 | m_abTable( 0l ), |
53 | m_orderedFields( ordered ) | 53 | m_orderedFields( ordered ) |
54 | { | 54 | { |
55 | odebug << "AbView::c'tor" << oendl; | 55 | odebug << "AbView::c'tor" << oendl; |
56 | // Load default database and handle syncing myself.. ! | 56 | // Load default database and handle syncing myself.. ! |
57 | m_contactdb = new Opie::OPimContactAccess ( "addressbook", 0l, 0l, false ); | 57 | m_contactdb = new Opie::OPimContactAccess ( "addressbook", 0l, 0l, false ); |
58 | m_contactdb -> setReadAhead( 16 ); // Use ReadAhead-Cache if available | 58 | m_contactdb -> setReadAhead( 16 ); // Use ReadAhead-Cache if available |
59 | mCat.load( categoryFileName() ); | 59 | mCat.load( categoryFileName() ); |
60 | 60 | ||
61 | // Create Layout and put WidgetStack into it. | 61 | // Create Layout and put WidgetStack into it. |
62 | QVBoxLayout *vb = new QVBoxLayout( this ); | 62 | QVBoxLayout *vb = new QVBoxLayout( this ); |
63 | m_viewStack = new QWidgetStack( this ); | 63 | m_viewStack = new QWidgetStack( this ); |
64 | vb->addWidget( m_viewStack ); | 64 | vb->addWidget( m_viewStack ); |
65 | 65 | ||
66 | // Creat TableView | 66 | // Creat TableView |
67 | QVBox* tableBox = new QVBox( m_viewStack ); | 67 | QVBox* tableBox = new QVBox( m_viewStack ); |
68 | m_abTable = new AbTable( m_orderedFields, tableBox, "table" ); | 68 | m_abTable = new AbTable( m_orderedFields, tableBox, "table" ); |
69 | m_abTable->setCurrentCell( 0, 0 ); | 69 | m_abTable->setCurrentCell( 0, 0 ); |
70 | m_abTable->setFocus(); | 70 | m_abTable->setFocus(); |
71 | 71 | ||
72 | // Add TableView to WidgetStack and raise it | 72 | // Add TableView to WidgetStack and raise it |
73 | m_viewStack -> addWidget( tableBox , TableView ); | 73 | m_viewStack -> addWidget( tableBox , TableView ); |
74 | 74 | ||
75 | // Create CardView and add it to WidgetStack | 75 | // Create CardView and add it to WidgetStack |
76 | QVBox* cardBox = new QVBox( m_viewStack ); | 76 | QVBox* cardBox = new QVBox( m_viewStack ); |
77 | m_ablabel = new AbLabel( cardBox, "CardView"); | 77 | m_ablabel = new AbLabel( cardBox, "CardView"); |
78 | m_viewStack -> addWidget( cardBox , CardView ); | 78 | m_viewStack -> addWidget( cardBox , CardView ); |
79 | 79 | ||
80 | // Connect views to me | 80 | // Connect views to me |
81 | connect ( m_abTable, SIGNAL( signalSwitch(void) ), | 81 | connect ( m_abTable, SIGNAL( signalSwitch(void) ), |
82 | this, SLOT( slotSwitch(void) ) ); | 82 | this, SLOT( slotSwitch(void) ) ); |
83 | connect ( m_ablabel, SIGNAL( signalOkPressed(void) ), | 83 | connect ( m_ablabel, SIGNAL( signalOkPressed(void) ), |
84 | this, SLOT( slotSwitch(void) ) ); | 84 | this, SLOT( slotSwitch(void) ) ); |
85 | 85 | ||
86 | load(); | 86 | load(); |
87 | } | 87 | } |
88 | 88 | ||
89 | AbView::~AbView() | 89 | AbView::~AbView() |
90 | { | 90 | { |
91 | m_contactdb -> save(); | 91 | m_contactdb -> save(); |
92 | delete m_contactdb; | 92 | delete m_contactdb; |
93 | 93 | ||
@@ -112,206 +112,202 @@ void AbView::addEntry( const Opie::OPimContact &newContact ) | |||
112 | load(); | 112 | load(); |
113 | 113 | ||
114 | } | 114 | } |
115 | void AbView::removeEntry( const int UID ) | 115 | void AbView::removeEntry( const int UID ) |
116 | { | 116 | { |
117 | odebug << "AbView;:RemoveContact" << oendl; | 117 | odebug << "AbView;:RemoveContact" << oendl; |
118 | m_contactdb->remove( UID ); | 118 | m_contactdb->remove( UID ); |
119 | load(); | 119 | load(); |
120 | } | 120 | } |
121 | 121 | ||
122 | void AbView::replaceEntry( const Opie::OPimContact &contact ) | 122 | void AbView::replaceEntry( const Opie::OPimContact &contact ) |
123 | { | 123 | { |
124 | odebug << "AbView::ReplaceContact" << oendl; | 124 | odebug << "AbView::ReplaceContact" << oendl; |
125 | m_contactdb->replace( contact ); | 125 | m_contactdb->replace( contact ); |
126 | load(); | 126 | load(); |
127 | 127 | ||
128 | } | 128 | } |
129 | 129 | ||
130 | Opie::OPimContact AbView::currentEntry() | 130 | Opie::OPimContact AbView::currentEntry() |
131 | { | 131 | { |
132 | Opie::OPimContact currentContact; | 132 | Opie::OPimContact currentContact; |
133 | 133 | ||
134 | switch ( (int) m_curr_View ) { | 134 | switch ( (int) m_curr_View ) { |
135 | case TableView: | 135 | case TableView: |
136 | currentContact = m_abTable -> currentEntry(); | 136 | currentContact = m_abTable -> currentEntry(); |
137 | break; | 137 | break; |
138 | case CardView: | 138 | case CardView: |
139 | currentContact = m_ablabel -> currentEntry(); | 139 | currentContact = m_ablabel -> currentEntry(); |
140 | break; | 140 | break; |
141 | } | 141 | } |
142 | m_curr_Contact = currentContact.uid(); | 142 | m_curr_Contact = currentContact.uid(); |
143 | return currentContact; | 143 | return currentContact; |
144 | } | 144 | } |
145 | 145 | ||
146 | bool AbView::save() | 146 | bool AbView::save() |
147 | { | 147 | { |
148 | //odebug << "AbView::Save data" << oendl; | 148 | //odebug << "AbView::Save data" << oendl; |
149 | 149 | ||
150 | return m_contactdb->save(); | 150 | return m_contactdb->save(); |
151 | } | 151 | } |
152 | 152 | ||
153 | void AbView::load() | 153 | void AbView::load() |
154 | { | 154 | { |
155 | odebug << "AbView::Load data" << oendl; | 155 | odebug << "AbView::Load data" << oendl; |
156 | 156 | ||
157 | // Letter Search is stopped at this place | 157 | // Letter Search is stopped at this place |
158 | emit signalClearLetterPicker(); | 158 | emit signalClearLetterPicker(); |
159 | 159 | ||
160 | if ( m_curr_category == 0 ) { | 160 | m_list = m_contactdb->sorted( true, Opie::OPimContactAccess::SortFileAsName, |
161 | // Show unfiled | 161 | Opie::OPimContactAccess::FilterCategory, m_curr_category ); |
162 | m_list = m_contactdb->sorted( true, Opie::OPimContactAccess::SortFileAsName, | 162 | |
163 | Opie::OPimContactAccess::DoNotShowWithCategory, 0 ); | ||
164 | } elseif ( m_curr_category != -1 ){ | ||
165 | // Just show selected category | ||
166 | m_list = m_contactdb->sorted( true, Opie::OPimContactAccess::SortFileAsName, | ||
167 | Opie::OPimBase::FilterCategory, m_curr_category ); | ||
168 | } else { | ||
169 | // Show all categories | ||
170 | m_list = m_contactdb->sorted( true, Opie::OPimContactAccess::SortFileAsName, | ||
171 | Opie::OPimBase::FilterOff, 0 ); | ||
172 | } | ||
173 | |||
174 | // if ( m_curr_category != -1 ) | 163 | // if ( m_curr_category != -1 ) |
175 | // clearForCategory(); | 164 | // clearForCategory(); |
176 | 165 | ||
177 | odebug << "Number of contacts: " << m_list.count() << oendl; | 166 | odebug << "Number of contacts: " << m_list.count() << oendl; |
178 | 167 | ||
179 | updateView( true ); | 168 | updateView( true ); |
180 | 169 | ||
181 | } | 170 | } |
182 | 171 | ||
183 | void AbView::reload() | 172 | void AbView::reload() |
184 | { | 173 | { |
185 | odebug << "AbView::::reload()" << oendl; | 174 | odebug << "AbView::::reload()" << oendl; |
186 | 175 | ||
187 | m_contactdb->reload(); | 176 | m_contactdb->reload(); |
188 | load(); | 177 | load(); |
189 | } | 178 | } |
190 | 179 | ||
191 | void AbView::clear() | 180 | void AbView::clear() |
192 | { | 181 | { |
193 | // :SX | 182 | // :SX |
194 | } | 183 | } |
195 | 184 | ||
196 | void AbView::setShowByCategory( const QString& cat ) | 185 | void AbView::setShowByCategory( const QString& cat ) |
197 | { | 186 | { |
198 | odebug << "AbView::setShowCategory( const QString& cat )" << oendl; | 187 | odebug << "AbView::setShowCategory( const QString& cat )" << oendl; |
199 | 188 | ||
200 | int intCat = 0; | 189 | int intCat = 0; |
201 | 190 | ||
202 | // All (cat == NULL) will be stored as -1 | 191 | // Unfiled will be stored as -1 |
203 | if ( cat.isNull() ) | 192 | if ( cat == tr( "Unfiled" ) ) |
204 | intCat = -1; | 193 | intCat = -1; |
194 | else if ( cat.isNull() ) | ||
195 | intCat = 0; | ||
205 | else | 196 | else |
206 | intCat = mCat.id("Contacts", cat ); | 197 | intCat = mCat.id("Contacts", cat ); |
207 | 198 | ||
208 | // Just do anything if we really change the category | 199 | // Just do anything if we really change the category |
209 | if ( intCat != m_curr_category ){ | 200 | if ( intCat != m_curr_category ){ |
210 | // odebug << "Categories: Selected " << cat << ".. Number: " | 201 | // odebug << "Categories: Selected " << cat << ".. Number: " |
211 | // << m_curr_category << oendl; | 202 | // << m_curr_category << oendl; |
212 | 203 | ||
213 | m_curr_category = intCat; | 204 | m_curr_category = intCat; |
214 | emit signalClearLetterPicker(); | 205 | emit signalClearLetterPicker(); |
215 | |||
216 | load(); | 206 | load(); |
217 | } | 207 | } |
208 | m_curr_category = intCat; | ||
218 | 209 | ||
219 | } | 210 | } |
220 | 211 | ||
221 | void AbView::setShowToView( Views view ) | 212 | void AbView::setShowToView( Views view ) |
222 | { | 213 | { |
223 | odebug << "void AbView::setShowToView( View " << view << " )" << oendl; | 214 | odebug << "void AbView::setShowToView( View " << view << " )" << oendl; |
224 | 215 | ||
225 | if ( m_curr_View != view ){ | 216 | if ( m_curr_View != view ){ |
226 | odebug << "Change the View (Category is: " << m_curr_category << ")" << oendl; | 217 | odebug << "Change the View (Category is: " << m_curr_category << ")" << oendl; |
227 | m_prev_View = m_curr_View; | 218 | m_prev_View = m_curr_View; |
228 | m_curr_View = view; | 219 | m_curr_View = view; |
229 | 220 | ||
230 | updateView(); | 221 | updateView(); |
231 | } | 222 | } |
232 | 223 | ||
233 | } | 224 | } |
234 | 225 | ||
235 | void AbView::setShowByLetter( char c, AbConfig::LPSearchMode mode ) | 226 | void AbView::setShowByLetter( char c, AbConfig::LPSearchMode mode ) |
236 | { | 227 | { |
237 | odebug << "void AbView::setShowByLetter( " << c << ", " << mode << " )" << oendl; | 228 | odebug << "void AbView::setShowByLetter( " << c << ", " << mode << " )" << oendl; |
238 | 229 | ||
239 | assert( mode < AbConfig::LASTELEMENT ); | 230 | assert( mode < AbConfig::LASTELEMENT ); |
240 | 231 | ||
241 | Opie::OPimContact query; | 232 | Opie::OPimContact query; |
242 | if ( c == 0 ){ | 233 | if ( c == 0 ){ |
243 | load(); | 234 | load(); |
244 | return; | 235 | return; |
245 | }else{ | 236 | }else{ |
246 | // If the current Backend is unable to solve the query, we will | 237 | // If the current Backend is unable to solve the query, we will |
247 | // ignore the request .. | 238 | // ignore the request .. |
248 | if ( ! m_contactdb->hasQuerySettings( Opie::OPimContactAccess::WildCards | | 239 | if ( ! m_contactdb->hasQuerySettings( Opie::OPimContactAccess::WildCards | |
249 | Opie::OPimContactAccess::IgnoreCase ) ){ | 240 | Opie::OPimContactAccess::IgnoreCase ) ){ |
250 | owarn << "Tried to access queryByExample which is not supported by the current backend!!" << oendl; | 241 | owarn << "Tried to access queryByExample which is not supported by the current backend!!" << oendl; |
251 | owarn << "I have to ignore this access!" << oendl; | 242 | owarn << "I have to ignore this access!" << oendl; |
252 | return; | 243 | return; |
253 | } | 244 | } |
254 | 245 | ||
255 | switch( mode ){ | 246 | switch( mode ){ |
256 | case AbConfig::LastName: | 247 | case AbConfig::LastName: |
257 | query.setLastName( QString("%1*").arg(c) ); | 248 | query.setLastName( QString("%1*").arg(c) ); |
258 | break; | 249 | break; |
259 | case AbConfig::FileAs: | 250 | case AbConfig::FileAs: |
260 | query.setFileAs( QString("%1*").arg(c) ); | 251 | query.setFileAs( QString("%1*").arg(c) ); |
261 | break; | 252 | break; |
262 | default: | 253 | default: |
263 | owarn << "Unknown Searchmode for AbView::setShowByLetter ! -> " << mode << oendl | 254 | owarn << "Unknown Searchmode for AbView::setShowByLetter ! -> " << mode << oendl |
264 | << "I will ignore it.." << oendl; | 255 | << "I will ignore it.." << oendl; |
265 | return; | 256 | return; |
266 | } | 257 | } |
267 | m_list = m_contactdb->queryByExample( query, Opie::OPimContactAccess::WildCards | Opie::OPimContactAccess::IgnoreCase ); | 258 | m_list = m_contactdb->queryByExample( query, Opie::OPimContactAccess::WildCards | Opie::OPimContactAccess::IgnoreCase ); |
268 | if ( m_curr_category != -1 ) | 259 | |
260 | if ( m_curr_category != 0 ) | ||
269 | clearForCategory(); | 261 | clearForCategory(); |
262 | |||
263 | // Sort filtered results | ||
264 | m_list = m_contactdb->sorted( m_list, true, Opie::OPimContactAccess::SortFileAsName, | ||
265 | Opie::OPimContactAccess::FilterCategory, m_curr_category ); | ||
270 | m_curr_Contact = 0; | 266 | m_curr_Contact = 0; |
271 | } | 267 | } |
272 | updateView( true ); | 268 | updateView( true ); |
273 | } | 269 | } |
274 | 270 | ||
275 | void AbView::setListOrder( const QValueList<int>& ordered ) | 271 | void AbView::setListOrder( const QValueList<int>& ordered ) |
276 | { | 272 | { |
277 | m_orderedFields = ordered; | 273 | m_orderedFields = ordered; |
278 | if ( m_abTable ){ | 274 | if ( m_abTable ){ |
279 | m_abTable->setOrderedList( ordered ); | 275 | m_abTable->setOrderedList( ordered ); |
280 | m_abTable->refresh(); | 276 | m_abTable->refresh(); |
281 | } | 277 | } |
282 | updateView(); | 278 | updateView(); |
283 | } | 279 | } |
284 | 280 | ||
285 | 281 | ||
286 | QString AbView::showCategory() const | 282 | QString AbView::showCategory() const |
287 | { | 283 | { |
288 | return mCat.label( "Contacts", m_curr_category ); | 284 | return mCat.label( "Contacts", m_curr_category ); |
289 | } | 285 | } |
290 | 286 | ||
291 | void AbView::showPersonal( bool personal ) | 287 | void AbView::showPersonal( bool personal ) |
292 | { | 288 | { |
293 | odebug << "void AbView::showPersonal( " << personal << " )" << oendl; | 289 | odebug << "void AbView::showPersonal( " << personal << " )" << oendl; |
294 | 290 | ||
295 | if ( personal ){ | 291 | if ( personal ){ |
296 | 292 | ||
297 | if ( m_inPersonal ) | 293 | if ( m_inPersonal ) |
298 | return; | 294 | return; |
299 | 295 | ||
300 | // Now switch to vCard Backend and load data. | 296 | // Now switch to vCard Backend and load data. |
301 | // The current default backend will be stored | 297 | // The current default backend will be stored |
302 | // to avoid unneeded load/stores. | 298 | // to avoid unneeded load/stores. |
303 | m_storedDB = m_contactdb; | 299 | m_storedDB = m_contactdb; |
304 | 300 | ||
305 | Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, | 301 | Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, |
306 | addressbookPersonalVCardName() ); | 302 | addressbookPersonalVCardName() ); |
307 | m_contactdb = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); | 303 | m_contactdb = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); |
308 | 304 | ||
309 | m_inPersonal = true; | 305 | m_inPersonal = true; |
310 | m_curr_View = CardView; | 306 | m_curr_View = CardView; |
311 | 307 | ||
312 | }else{ | 308 | }else{ |
313 | 309 | ||
314 | if ( !m_inPersonal ) | 310 | if ( !m_inPersonal ) |
315 | return; | 311 | return; |
316 | 312 | ||
317 | // Remove vCard Backend and restore default | 313 | // Remove vCard Backend and restore default |
@@ -333,160 +329,160 @@ void AbView::setCurrentUid( int uid ){ | |||
333 | m_curr_Contact = uid; | 329 | m_curr_Contact = uid; |
334 | updateView( true ); //true: Don't modificate the UID ! | 330 | updateView( true ); //true: Don't modificate the UID ! |
335 | } | 331 | } |
336 | 332 | ||
337 | 333 | ||
338 | QStringList AbView::categories() | 334 | QStringList AbView::categories() |
339 | { | 335 | { |
340 | mCat.load( categoryFileName() ); | 336 | mCat.load( categoryFileName() ); |
341 | QStringList categoryList = mCat.labels( "Contacts" ); | 337 | QStringList categoryList = mCat.labels( "Contacts" ); |
342 | return categoryList; | 338 | return categoryList; |
343 | } | 339 | } |
344 | 340 | ||
345 | // BEGIN: Slots | 341 | // BEGIN: Slots |
346 | void AbView::slotDoFind( const QString &str, bool caseSensitive, bool useRegExp, | 342 | void AbView::slotDoFind( const QString &str, bool caseSensitive, bool useRegExp, |
347 | bool , QString cat ) | 343 | bool , QString cat ) |
348 | { | 344 | { |
349 | //owarn << "void AbView::slotDoFind" << oendl; | 345 | //owarn << "void AbView::slotDoFind" << oendl; |
350 | 346 | ||
351 | // We reloading the data: Deselect Letterpicker | 347 | // We reloading the data: Deselect Letterpicker |
352 | emit signalClearLetterPicker(); | 348 | emit signalClearLetterPicker(); |
353 | 349 | ||
354 | // Use the current Category if nothing else selected | 350 | // Use the current Category if nothing else selected |
355 | int category = 0; | 351 | int category = 0; |
356 | 352 | ||
357 | if ( cat.isEmpty() ) | 353 | if ( cat.isEmpty() ) |
358 | category = m_curr_category; | 354 | category = m_curr_category; |
359 | else{ | 355 | else{ |
360 | category = mCat.id("Contacts", cat ); | 356 | category = mCat.id("Contacts", cat ); |
361 | } | 357 | } |
362 | 358 | ||
363 | //odebug << "Find in Category " << category << oendl; | 359 | //odebug << "Find in Category " << category << oendl; |
364 | 360 | ||
365 | QRegExp r( str ); | 361 | QRegExp r( str ); |
366 | r.setCaseSensitive( caseSensitive ); | 362 | r.setCaseSensitive( caseSensitive ); |
367 | r.setWildcard( !useRegExp ); | 363 | r.setWildcard( !useRegExp ); |
368 | 364 | ||
369 | // Get all matching entries out of the database | 365 | // Get all matching entries out of the database |
370 | m_list = m_contactdb->matchRegexp( r ); | 366 | m_list = m_contactdb->matchRegexp( r ); |
371 | 367 | ||
372 | //odebug << "Found: " << m_list.count() << oendl; | 368 | //odebug << "Found: " << m_list.count() << oendl; |
373 | if ( m_list.count() == 0 ){ | 369 | if ( m_list.count() == 0 ){ |
374 | emit signalNotFound(); | 370 | emit signalNotFound(); |
375 | return; | 371 | return; |
376 | } | 372 | } |
377 | 373 | ||
378 | // Now remove all contacts with wrong category (if any selected) | 374 | // Now remove all contacts with wrong category (if any selected) |
379 | // This algorithm is a litte bit ineffective, but | 375 | // This algorithm is a litte bit ineffective, but |
380 | // we will not have a lot of matching entries.. | 376 | // we will not have a lot of matching entries.. |
381 | if ( m_curr_category != -1 ) | 377 | if ( m_curr_category != 0 ) |
382 | clearForCategory(); | 378 | clearForCategory(); |
383 | 379 | ||
384 | // Now show all found entries | 380 | // Now show all found entries |
385 | updateView( true ); | 381 | updateView( true ); |
386 | } | 382 | } |
387 | 383 | ||
388 | void AbView::offSearch() | 384 | void AbView::offSearch() |
389 | { | 385 | { |
390 | m_inSearch = false; | 386 | m_inSearch = false; |
391 | 387 | ||
392 | load(); | 388 | load(); |
393 | } | 389 | } |
394 | 390 | ||
395 | void AbView::slotSwitch(){ | 391 | void AbView::slotSwitch(){ |
396 | //odebug << "AbView::slotSwitch()" << oendl; | 392 | //odebug << "AbView::slotSwitch()" << oendl; |
397 | 393 | ||
398 | m_prev_View = m_curr_View; | 394 | m_prev_View = m_curr_View; |
399 | switch ( (int) m_curr_View ){ | 395 | switch ( (int) m_curr_View ){ |
400 | case TableView: | 396 | case TableView: |
401 | odebug << "Switching to CardView" << oendl; | 397 | odebug << "Switching to CardView" << oendl; |
402 | m_curr_View = CardView; | 398 | m_curr_View = CardView; |
403 | break; | 399 | break; |
404 | case CardView: | 400 | case CardView: |
405 | odebug << "Switching to TableView" << oendl; | 401 | odebug << "Switching to TableView" << oendl; |
406 | m_curr_View = TableView; | 402 | m_curr_View = TableView; |
407 | break; | 403 | break; |
408 | } | 404 | } |
409 | updateView(); | 405 | updateView(); |
410 | 406 | ||
411 | } | 407 | } |
412 | 408 | ||
413 | // END: Slots | 409 | // END: Slots |
414 | 410 | ||
415 | void AbView::clearForCategory() | 411 | void AbView::clearForCategory() |
416 | { | 412 | { |
417 | Opie::OPimContactAccess::List::Iterator it; | 413 | Opie::OPimContactAccess::List::Iterator it; |
418 | // Now remove all contacts with wrong category if any category selected | 414 | // Now remove all contacts with wrong category if any category selected |
419 | 415 | ||
420 | Opie::OPimContactAccess::List allList = m_list; | 416 | Opie::OPimContactAccess::List allList = m_list; |
421 | if ( m_curr_category != -1 ){ | 417 | if ( m_curr_category != 0 ){ |
422 | for ( it = allList.begin(); it != allList.end(); ++it ){ | 418 | for ( it = allList.begin(); it != allList.end(); ++it ){ |
423 | if ( !contactCompare( *it, m_curr_category ) ){ | 419 | if ( !contactCompare( *it, m_curr_category ) ){ |
424 | //odebug << "Removing " << (*it).uid() << oendl; | 420 | //odebug << "Removing " << (*it).uid() << oendl; |
425 | m_list.remove( (*it).uid() ); | 421 | m_list.remove( (*it).uid() ); |
426 | } | 422 | } |
427 | } | 423 | } |
428 | } | 424 | } |
429 | 425 | ||
430 | } | 426 | } |
431 | 427 | ||
432 | bool AbView::contactCompare( const Opie::OPimContact &cnt, int category ) | 428 | bool AbView::contactCompare( const Opie::OPimContact &cnt, int category ) |
433 | { | 429 | { |
434 | //odebug << "bool AbView::contactCompare( const Opie::OPimContact &cnt, " | 430 | //odebug << "bool AbView::contactCompare( const Opie::OPimContact &cnt, " |
435 | // << category << " )" << oendl; | 431 | // << category << " )" << oendl; |
436 | 432 | ||
437 | bool returnMe; | 433 | bool returnMe; |
438 | QArray<int> cats; | 434 | QArray<int> cats; |
439 | cats = cnt.categories(); | 435 | cats = cnt.categories(); |
440 | 436 | ||
441 | //odebug << "Number of categories: " << cats.count() << oendl; | 437 | //odebug << "Number of categories: " << cats.count() << oendl; |
442 | 438 | ||
443 | returnMe = false; | 439 | returnMe = false; |
444 | if ( cats.count() == 0 && category == 0 ) | 440 | if ( cats.count() == 0 && category == -1 ) |
445 | // Contacts with no category will just shown on "All" and "Unfiled" | 441 | // Contacts with no category will just shown on "All" and "Unfiled" |
446 | returnMe = true; | 442 | returnMe = true; |
447 | else { | 443 | else { |
448 | int i; | 444 | int i; |
449 | for ( i = 0; i < int(cats.count()); i++ ) { | 445 | for ( i = 0; i < int(cats.count()); i++ ) { |
450 | //odebug << "Comparing " << cats[i] << " with " << category << oendl; | 446 | //odebug << "Comparing " << cats[i] << " with " << category << oendl; |
451 | if ( cats[i] == category ) { | 447 | if ( cats[i] == category ) { |
452 | returnMe = true; | 448 | returnMe = true; |
453 | break; | 449 | break; |
454 | } | 450 | } |
455 | } | 451 | } |
456 | } | 452 | } |
457 | //odebug << "Return: " << returnMe << oendl; | 453 | //odebug << "Return: " << returnMe << oendl; |
458 | return returnMe; | 454 | return returnMe; |
459 | } | 455 | } |
460 | 456 | ||
461 | // In Some rare cases we have to update all lists.. | 457 | // In Some rare cases we have to update all lists.. |
462 | void AbView::updateListinViews() | 458 | void AbView::updateListinViews() |
463 | { | 459 | { |
464 | m_abTable -> setContacts( m_list ); | 460 | m_abTable -> setContacts( m_list ); |
465 | m_ablabel -> setContacts( m_list ); | 461 | m_ablabel -> setContacts( m_list ); |
466 | } | 462 | } |
467 | 463 | ||
468 | void AbView::updateView( bool newdata ) | 464 | void AbView::updateView( bool newdata ) |
469 | { | 465 | { |
470 | //odebug << "AbView::updateView()" << oendl; | 466 | //odebug << "AbView::updateView()" << oendl; |
471 | 467 | ||
472 | if ( m_viewStack -> visibleWidget() ){ | 468 | if ( m_viewStack -> visibleWidget() ){ |
473 | m_viewStack -> visibleWidget() -> clearFocus(); | 469 | m_viewStack -> visibleWidget() -> clearFocus(); |
474 | } | 470 | } |
475 | 471 | ||
476 | // If we switching the view, we have to store some information | 472 | // If we switching the view, we have to store some information |
477 | if ( !newdata ){ | 473 | if ( !newdata ){ |
478 | if ( m_list.count() ){ | 474 | if ( m_list.count() ){ |
479 | switch ( (int) m_prev_View ) { | 475 | switch ( (int) m_prev_View ) { |
480 | case TableView: | 476 | case TableView: |
481 | m_curr_Contact = m_abTable -> currentEntry_UID(); | 477 | m_curr_Contact = m_abTable -> currentEntry_UID(); |
482 | break; | 478 | break; |
483 | case CardView: | 479 | case CardView: |
484 | m_curr_Contact = m_ablabel -> currentEntry_UID(); | 480 | m_curr_Contact = m_ablabel -> currentEntry_UID(); |
485 | break; | 481 | break; |
486 | } | 482 | } |
487 | }else | 483 | }else |
488 | m_curr_Contact = 0; | 484 | m_curr_Contact = 0; |
489 | } | 485 | } |
490 | 486 | ||
491 | // Feed all views with new lists | 487 | // Feed all views with new lists |
492 | if ( newdata ) | 488 | if ( newdata ) |
diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp index 6984501..faae0a9 100644 --- a/core/pim/addressbook/addressbook.cpp +++ b/core/pim/addressbook/addressbook.cpp | |||
@@ -809,78 +809,81 @@ void AddressbookWindow::closeEvent( QCloseEvent *e ) | |||
809 | bool AddressbookWindow::save() | 809 | bool AddressbookWindow::save() |
810 | { | 810 | { |
811 | if ( !m_abView->save() ) { | 811 | if ( !m_abView->save() ) { |
812 | if ( QMessageBox::critical( 0, tr( "Out of space" ), | 812 | if ( QMessageBox::critical( 0, tr( "Out of space" ), |
813 | tr("Unable to save information.\n" | 813 | tr("Unable to save information.\n" |
814 | "Free up some space\n" | 814 | "Free up some space\n" |
815 | "and try again.\n" | 815 | "and try again.\n" |
816 | "\nQuit anyway?"), | 816 | "\nQuit anyway?"), |
817 | QMessageBox::Yes|QMessageBox::Escape, | 817 | QMessageBox::Yes|QMessageBox::Escape, |
818 | QMessageBox::No|QMessageBox::Default ) | 818 | QMessageBox::No|QMessageBox::Default ) |
819 | != QMessageBox::No ) | 819 | != QMessageBox::No ) |
820 | return true; | 820 | return true; |
821 | else | 821 | else |
822 | return false; | 822 | return false; |
823 | } | 823 | } |
824 | return true; | 824 | return true; |
825 | } | 825 | } |
826 | 826 | ||
827 | #ifdef __DEBUG_RELEASE | 827 | #ifdef __DEBUG_RELEASE |
828 | void AddressbookWindow::slotSave() | 828 | void AddressbookWindow::slotSave() |
829 | { | 829 | { |
830 | save(); | 830 | save(); |
831 | } | 831 | } |
832 | #endif | 832 | #endif |
833 | 833 | ||
834 | 834 | ||
835 | void AddressbookWindow::slotNotFound() | 835 | void AddressbookWindow::slotNotFound() |
836 | { | 836 | { |
837 | odebug << "Got not found signal!" << oendl; | 837 | odebug << "Got not found signal!" << oendl; |
838 | QMessageBox::information( this, tr( "Not Found" ), | 838 | QMessageBox::information( this, tr( "Not Found" ), |
839 | "<qt>" + tr( "Unable to find a contact for this search pattern!" ) + "</qt>" ); | 839 | "<qt>" + tr( "Unable to find a contact for this search pattern!" ) + "</qt>" ); |
840 | 840 | ||
841 | 841 | ||
842 | } | 842 | } |
843 | void AddressbookWindow::slotWrapAround() | 843 | void AddressbookWindow::slotWrapAround() |
844 | { | 844 | { |
845 | odebug << "Got wrap signal!" << oendl; | 845 | odebug << "Got wrap signal!" << oendl; |
846 | // if ( doNotifyWrapAround ) | 846 | // if ( doNotifyWrapAround ) |
847 | // QMessageBox::information( this, tr( "End of list" ), | 847 | // QMessageBox::information( this, tr( "End of list" ), |
848 | // tr( "End of list. Wrap around now...!" ) + "\n" ); | 848 | // tr( "End of list. Wrap around now...!" ) + "\n" ); |
849 | 849 | ||
850 | } | 850 | } |
851 | 851 | ||
852 | void AddressbookWindow::slotSetCategory( const QString &category ) | 852 | void AddressbookWindow::slotSetCategory( const QString &category ) |
853 | { | 853 | { |
854 | odebug << "void AddressbookWindow::slotSetCategory( " << category << " )" << oendl; | 854 | odebug << "void AddressbookWindow::slotSetCategory( " << category << " )" << oendl; |
855 | 855 | ||
856 | // Tell the view about the selected category | 856 | // Tell the view about the selected category |
857 | m_config.setCategory( category ); | 857 | QString cat = category; |
858 | m_abView -> setShowByCategory( category ); | 858 | if ( cat == tr( "All" ) ) |
859 | cat = QString::null; | ||
860 | m_config.setCategory( cat ); | ||
861 | m_abView -> setShowByCategory( cat ); | ||
859 | } | 862 | } |
860 | 863 | ||
861 | void AddressbookWindow::slotViewSwitched( int view ) | 864 | void AddressbookWindow::slotViewSwitched( int view ) |
862 | { | 865 | { |
863 | odebug << "void AddressbookWindow::slotViewSwitched( " << view << " )" << oendl; | 866 | odebug << "void AddressbookWindow::slotViewSwitched( " << view << " )" << oendl; |
864 | 867 | ||
865 | // Tell the view about the selected view | 868 | // Tell the view about the selected view |
866 | m_abView -> setShowToView ( (AbView::Views) view ); | 869 | m_abView -> setShowToView ( (AbView::Views) view ); |
867 | active_view = view; | 870 | active_view = view; |
868 | } | 871 | } |
869 | 872 | ||
870 | 873 | ||
871 | void AddressbookWindow::slotListView() | 874 | void AddressbookWindow::slotListView() |
872 | { | 875 | { |
873 | slotViewSwitched( AbView::TableView ); | 876 | slotViewSwitched( AbView::TableView ); |
874 | } | 877 | } |
875 | 878 | ||
876 | void AddressbookWindow::slotCardView() | 879 | void AddressbookWindow::slotCardView() |
877 | { | 880 | { |
878 | slotViewSwitched( AbView::CardView ); | 881 | slotViewSwitched( AbView::CardView ); |
879 | } | 882 | } |
880 | 883 | ||
881 | void AddressbookWindow::slotSetLetter( char c ) { | 884 | void AddressbookWindow::slotSetLetter( char c ) { |
882 | 885 | ||
883 | m_abView->setShowByLetter( c, m_config.letterPickerSearch() ); | 886 | m_abView->setShowByLetter( c, m_config.letterPickerSearch() ); |
884 | 887 | ||
885 | } | 888 | } |
886 | 889 | ||