summaryrefslogtreecommitdiff
authoreilers <eilers>2003-02-28 10:25:31 (UTC)
committer eilers <eilers>2003-02-28 10:25:31 (UTC)
commit81cbb2d97b4f0cd7eef56536d791434856d7ae8d (patch) (unidiff)
tree644f7c1dc38c07b67b9337a4138ca80741d0c9ca
parent18c19111466e43e91678c5a1fa50f2f561ca3257 (diff)
downloadopie-81cbb2d97b4f0cd7eef56536d791434856d7ae8d.zip
opie-81cbb2d97b4f0cd7eef56536d791434856d7ae8d.tar.gz
opie-81cbb2d97b4f0cd7eef56536d791434856d7ae8d.tar.bz2
Beaming personal vcard on keypress is implented now !
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/addressbook.cpp26
1 files changed, 17 insertions, 9 deletions
diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp
index 0276231..8937227 100644
--- a/core/pim/addressbook/addressbook.cpp
+++ b/core/pim/addressbook/addressbook.cpp
@@ -33,966 +33,974 @@
33#include <opie/ocontact.h> 33#include <opie/ocontact.h>
34#include <opie/ocontactaccessbackend_vcard.h> 34#include <opie/ocontactaccessbackend_vcard.h>
35 35
36#include <qpe/resource.h> 36#include <qpe/resource.h>
37#include <qpe/ir.h> 37#include <qpe/ir.h>
38#include <qpe/qpemessagebox.h> 38#include <qpe/qpemessagebox.h>
39#include <qpe/qcopenvelope_qws.h> 39#include <qpe/qcopenvelope_qws.h>
40#include <qpe/qpetoolbar.h> 40#include <qpe/qpetoolbar.h>
41#include <qpe/qpemenubar.h> 41#include <qpe/qpemenubar.h>
42// #include <qtoolbar.h> 42// #include <qtoolbar.h>
43// #include <qmenubar.h> 43// #include <qmenubar.h>
44#include <qpe/qpeapplication.h> 44#include <qpe/qpeapplication.h>
45#include <qpe/config.h> 45#include <qpe/config.h>
46 46
47#include <qaction.h> 47#include <qaction.h>
48#include <qdialog.h> 48#include <qdialog.h>
49#include <qdir.h> 49#include <qdir.h>
50#include <qfile.h> 50#include <qfile.h>
51#include <qimage.h> 51#include <qimage.h>
52#include <qlayout.h> 52#include <qlayout.h>
53#include <qmessagebox.h> 53#include <qmessagebox.h>
54#include <qpixmap.h> 54#include <qpixmap.h>
55#include <qpopupmenu.h> 55#include <qpopupmenu.h>
56#include <qstringlist.h> 56#include <qstringlist.h>
57#include <qtoolbutton.h> 57#include <qtoolbutton.h>
58#include <qwhatsthis.h> 58#include <qwhatsthis.h>
59#include <qdatetime.h> 59#include <qdatetime.h>
60 60
61#include <stdlib.h> 61#include <stdlib.h>
62#include <sys/stat.h> 62#include <sys/stat.h>
63#include <sys/types.h> 63#include <sys/types.h>
64#include <fcntl.h> 64#include <fcntl.h>
65#include <unistd.h> 65#include <unistd.h>
66 66
67 67
68#include "picker.h" 68#include "picker.h"
69#include "configdlg.h" 69#include "configdlg.h"
70 70
71extern QString addressbookPersonalVCardName(); 71extern QString addressbookPersonalVCardName();
72 72
73AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name, 73AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name,
74 WFlags f ) 74 WFlags f )
75 : QMainWindow( parent, name, f ), 75 : QMainWindow( parent, name, f ),
76 catMenu (0l), 76 catMenu (0l),
77 abEditor(0l), 77 abEditor(0l),
78 syncing(FALSE), 78 syncing(FALSE),
79 m_tableViewButton(0l), 79 m_tableViewButton(0l),
80 m_cardViewButton(0l) 80 m_cardViewButton(0l)
81{ 81{
82 isLoading = true; 82 isLoading = true;
83 83
84 m_config.load(); 84 m_config.load();
85 85
86 setCaption( tr("Contacts") ); 86 setCaption( tr("Contacts") );
87 setIcon( Resource::loadPixmap( "AddressBook" ) ); 87 setIcon( Resource::loadPixmap( "AddressBook" ) );
88 88
89 // Settings for Main Menu 89 // Settings for Main Menu
90 setToolBarsMovable( true ); 90 setToolBarsMovable( true );
91 setRightJustification( true ); 91 setRightJustification( true );
92 92
93 // Create Toolbar 93 // Create Toolbar
94 listTools = new QPEToolBar( this, "list operations" ); 94 listTools = new QPEToolBar( this, "list operations" );
95 listTools->setHorizontalStretchable( true ); 95 listTools->setHorizontalStretchable( true );
96 addToolBar( listTools ); 96 addToolBar( listTools );
97 moveToolBar( listTools, m_config.getToolBarPos() ); 97 moveToolBar( listTools, m_config.getToolBarPos() );
98 98
99 QPEMenuBar *mbList = new QPEMenuBar( this ); 99 QPEMenuBar *mbList = new QPEMenuBar( this );
100 mbList->setMargin( 0 ); 100 mbList->setMargin( 0 );
101 101
102 QPopupMenu *edit = new QPopupMenu( mbList ); 102 QPopupMenu *edit = new QPopupMenu( mbList );
103 mbList->insertItem( tr( "Contact" ), edit ); 103 mbList->insertItem( tr( "Contact" ), edit );
104 104
105 105
106 // View Icons 106 // View Icons
107 m_tableViewButton = new QAction( tr( "List" ), Resource::loadPixmap( "addressbook/weeklst" ), 107 m_tableViewButton = new QAction( tr( "List" ), Resource::loadPixmap( "addressbook/weeklst" ),
108 QString::null, 0, this, 0 ); 108 QString::null, 0, this, 0 );
109 connect( m_tableViewButton, SIGNAL( activated() ), this, SLOT( slotListView() ) ); 109 connect( m_tableViewButton, SIGNAL( activated() ), this, SLOT( slotListView() ) );
110 m_tableViewButton->setToggleAction( true ); 110 m_tableViewButton->setToggleAction( true );
111 m_tableViewButton->addTo( listTools ); 111 m_tableViewButton->addTo( listTools );
112 m_cardViewButton = new QAction( tr( "Card" ), Resource::loadPixmap( "day" ), QString::null, 0, this, 0 ); 112 m_cardViewButton = new QAction( tr( "Card" ), Resource::loadPixmap( "day" ), QString::null, 0, this, 0 );
113 connect( m_cardViewButton, SIGNAL( activated() ), this, SLOT( slotCardView() ) ); 113 connect( m_cardViewButton, SIGNAL( activated() ), this, SLOT( slotCardView() ) );
114 m_cardViewButton->setToggleAction( true ); 114 m_cardViewButton->setToggleAction( true );
115 m_cardViewButton->addTo( listTools ); 115 m_cardViewButton->addTo( listTools );
116 116
117 listTools->addSeparator(); 117 listTools->addSeparator();
118 118
119 // Other Buttons 119 // Other Buttons
120 QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 120 QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null,
121 0, this, 0 ); 121 0, this, 0 );
122 actionNew = a; 122 actionNew = a;
123 connect( a, SIGNAL( activated() ), this, SLOT( slotListNew() ) ); 123 connect( a, SIGNAL( activated() ), this, SLOT( slotListNew() ) );
124 a->addTo( edit ); 124 a->addTo( edit );
125 a->addTo( listTools ); 125 a->addTo( listTools );
126 126
127 a = new QAction( tr( "Edit" ), Resource::loadPixmap( "edit" ), QString::null, 127 a = new QAction( tr( "Edit" ), Resource::loadPixmap( "edit" ), QString::null,
128 0, this, 0 ); 128 0, this, 0 );
129 actionEdit = a; 129 actionEdit = a;
130 connect( a, SIGNAL( activated() ), this, SLOT( slotViewEdit() ) ); 130 connect( a, SIGNAL( activated() ), this, SLOT( slotViewEdit() ) );
131 a->addTo( edit ); 131 a->addTo( edit );
132 a->addTo( listTools ); 132 a->addTo( listTools );
133 133
134 a = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 134 a = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null,
135 0, this, 0 ); 135 0, this, 0 );
136 actionTrash = a; 136 actionTrash = a;
137 connect( a, SIGNAL( activated() ), this, SLOT( slotListDelete() ) ); 137 connect( a, SIGNAL( activated() ), this, SLOT( slotListDelete() ) );
138 a->addTo( edit ); 138 a->addTo( edit );
139 a->addTo( listTools ); 139 a->addTo( listTools );
140 140
141 141
142 // make it possible to go directly to businesscard via qcop call 142 // make it possible to go directly to businesscard via qcop call
143 //#if defined(Q_WS_QWS) // Why this ? (se) 143 //#if defined(Q_WS_QWS) // Why this ? (se)
144#if !defined(QT_NO_COP) 144#if !defined(QT_NO_COP)
145 QCopChannel *addressChannel = new QCopChannel("QPE/Addressbook" , this ); 145 QCopChannel *addressChannel = new QCopChannel("QPE/Addressbook" , this );
146 connect (addressChannel, SIGNAL( received(const QCString &, const QByteArray &)), 146 connect (addressChannel, SIGNAL( received(const QCString &, const QByteArray &)),
147 this, SLOT ( appMessage(const QCString &, const QByteArray &) ) ); 147 this, SLOT ( appMessage(const QCString &, const QByteArray &) ) );
148#endif 148#endif
149 // #endif 149 // #endif
150 a = new QAction( tr( "Find" ), Resource::loadPixmap( "mag" ), 150 a = new QAction( tr( "Find" ), Resource::loadPixmap( "mag" ),
151 QString::null, 0, this, 0 ); 151 QString::null, 0, this, 0 );
152 actionFind = a; 152 actionFind = a;
153 connect( a, SIGNAL(activated()), this, SLOT( slotFindOpen()) ); 153 connect( a, SIGNAL(activated()), this, SLOT( slotFindOpen()) );
154 a->addTo( edit ); 154 a->addTo( edit );
155 a->addTo( listTools ); 155 a->addTo( listTools );
156 156
157 // Much better search widget, taken from QTReader.. (se) 157 // Much better search widget, taken from QTReader.. (se)
158 searchBar = new OFloatBar( "Search", this, QMainWindow::Top, TRUE ); 158 searchBar = new OFloatBar( "Search", this, QMainWindow::Top, TRUE );
159 searchBar->setHorizontalStretchable( TRUE ); 159 searchBar->setHorizontalStretchable( TRUE );
160 searchBar->hide(); 160 searchBar->hide();
161 searchEdit = new QLineEdit( searchBar, "searchEdit" ); 161 searchEdit = new QLineEdit( searchBar, "searchEdit" );
162 162
163 // QFont f("unifont", 16 /*, QFont::Bold*/); 163 // QFont f("unifont", 16 /*, QFont::Bold*/);
164 // searchEdit->setFont( f ); 164 // searchEdit->setFont( f );
165 165
166 searchBar->setStretchableWidget( searchEdit ); 166 searchBar->setStretchableWidget( searchEdit );
167 connect( searchEdit, SIGNAL( returnPressed( ) ), 167 connect( searchEdit, SIGNAL( returnPressed( ) ),
168 this, SLOT( slotFind( ) ) ); 168 this, SLOT( slotFind( ) ) );
169 169
170 a = new QAction( tr( "Start Search" ), Resource::loadPixmap( "enter" ), QString::null, 0, this, 0 ); 170 a = new QAction( tr( "Start Search" ), Resource::loadPixmap( "enter" ), QString::null, 0, this, 0 );
171 connect( a, SIGNAL( activated() ), this, SLOT( slotFind() ) ); 171 connect( a, SIGNAL( activated() ), this, SLOT( slotFind() ) );
172 a->addTo( searchBar ); 172 a->addTo( searchBar );
173 173
174 a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 ); 174 a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
175 connect( a, SIGNAL( activated() ), this, SLOT( slotFindClose() ) ); 175 connect( a, SIGNAL( activated() ), this, SLOT( slotFindClose() ) );
176 a->addTo( searchBar ); 176 a->addTo( searchBar );
177 177
178 a = new QAction( tr( "Write Mail To" ), Resource::loadPixmap( "addressbook/sendmail" ), 178 a = new QAction( tr( "Write Mail To" ), Resource::loadPixmap( "addressbook/sendmail" ),
179 QString::null, 0, this, 0 ); 179 QString::null, 0, this, 0 );
180 //a->setEnabled( FALSE ); we got support for it now :) zecke 180 //a->setEnabled( FALSE ); we got support for it now :) zecke
181 actionMail = a; 181 actionMail = a;
182 connect( a, SIGNAL( activated() ), this, SLOT( writeMail() ) ); 182 connect( a, SIGNAL( activated() ), this, SLOT( writeMail() ) );
183 a->addTo( edit ); 183 a->addTo( edit );
184 a->addTo( listTools ); 184 a->addTo( listTools );
185 185
186 if ( Ir::supported() ) { 186 if ( Ir::supported() ) {
187 a = new QAction( tr ("Beam Entry" ), Resource::loadPixmap( "beam" ), QString::null, 187 a = new QAction( tr ("Beam Entry" ), Resource::loadPixmap( "beam" ), QString::null,
188 0, this, 0 ); 188 0, this, 0 );
189 actionBeam = a; 189 actionBeam = a;
190 connect( a, SIGNAL( activated() ), this, SLOT( slotBeam() ) ); 190 connect( a, SIGNAL( activated() ), this, SLOT( slotBeam() ) );
191 a->addTo( edit ); 191 a->addTo( edit );
192 a->addTo( listTools ); 192 a->addTo( listTools );
193 } 193 }
194 194
195 edit->insertSeparator(); 195 edit->insertSeparator();
196 196
197 a = new QAction( tr("Import vCard"), Resource::loadPixmap( "addressbook/fileimport"), QString::null, 197 a = new QAction( tr("Import vCard"), Resource::loadPixmap( "addressbook/fileimport"), QString::null,
198 0, this, 0); 198 0, this, 0);
199 actionPersonal = a; 199 actionPersonal = a;
200 connect( a, SIGNAL( activated() ), this, SLOT( importvCard() ) ); 200 connect( a, SIGNAL( activated() ), this, SLOT( importvCard() ) );
201 a->addTo( edit ); 201 a->addTo( edit );
202 202
203 edit->insertSeparator(); 203 edit->insertSeparator();
204 204
205 a = new QAction( tr("My Personal Details"), Resource::loadPixmap( "addressbook/identity" ), 205 a = new QAction( tr("My Personal Details"), Resource::loadPixmap( "addressbook/identity" ),
206 QString::null, 0, this, 0 , TRUE ); 206 QString::null, 0, this, 0 , TRUE );
207 actionPersonal = a; 207 actionPersonal = a;
208 connect( a, SIGNAL( activated() ), this, SLOT( slotPersonalView() ) ); 208 connect( a, SIGNAL( activated() ), this, SLOT( slotPersonalView() ) );
209 a->addTo( edit ); 209 a->addTo( edit );
210 210
211 211
212#ifdef __DEBUG_RELEASE 212#ifdef __DEBUG_RELEASE
213 // Remove this function for public Release ! This is only 213 // Remove this function for public Release ! This is only
214 // for debug purposes .. 214 // for debug purposes ..
215 a = new QAction( tr( "Save all Data"), QString::null, 0, 0 ); 215 a = new QAction( tr( "Save all Data"), QString::null, 0, 0 );
216 connect( a, SIGNAL( activated() ), this , SLOT( slotSave() ) ); 216 connect( a, SIGNAL( activated() ), this , SLOT( slotSave() ) );
217 a->addTo( edit ); 217 a->addTo( edit );
218#endif 218#endif
219 a = new QAction( tr( "Config" ), Resource::loadPixmap( "addressbook/configure" ), QString::null, 219 a = new QAction( tr( "Config" ), Resource::loadPixmap( "addressbook/configure" ), QString::null,
220 0, this, 0 ); 220 0, this, 0 );
221 connect( a, SIGNAL( activated() ), this, SLOT( slotConfig() ) ); 221 connect( a, SIGNAL( activated() ), this, SLOT( slotConfig() ) );
222 a->addTo( edit ); 222 a->addTo( edit );
223 223
224 // Create Views 224 // Create Views
225 listContainer = new QWidget( this ); 225 listContainer = new QWidget( this );
226 QVBoxLayout *vb = new QVBoxLayout( listContainer ); 226 QVBoxLayout *vb = new QVBoxLayout( listContainer );
227 227
228 m_abView = new AbView( listContainer, m_config.orderList() ); 228 m_abView = new AbView( listContainer, m_config.orderList() );
229 vb->addWidget( m_abView ); 229 vb->addWidget( m_abView );
230 // abList->setHScrollBarMode( QScrollView::AlwaysOff ); 230 // abList->setHScrollBarMode( QScrollView::AlwaysOff );
231 connect( m_abView, SIGNAL( signalViewSwitched ( int ) ), 231 connect( m_abView, SIGNAL( signalViewSwitched ( int ) ),
232 this, SLOT( slotViewSwitched( int ) ) ); 232 this, SLOT( slotViewSwitched( int ) ) );
233 233
234 234
235 QObject::connect( m_abView, SIGNAL(signalNotFound()), this, SLOT(slotNotFound()) ); 235 QObject::connect( m_abView, SIGNAL(signalNotFound()), this, SLOT(slotNotFound()) );
236 236
237 m_abView->load(); 237 m_abView->load();
238 238
239 // Letter Picker 239 // Letter Picker
240 pLabel = new LetterPicker( listContainer ); 240 pLabel = new LetterPicker( listContainer );
241 connect(pLabel, SIGNAL(letterClicked(char)), this, SLOT(slotSetLetter(char))); 241 connect(pLabel, SIGNAL(letterClicked(char)), this, SLOT(slotSetLetter(char)));
242 connect(m_abView, SIGNAL( signalClearLetterPicker() ), pLabel, SLOT( clear() ) ); 242 connect(m_abView, SIGNAL( signalClearLetterPicker() ), pLabel, SLOT( clear() ) );
243 243
244 vb->addWidget( pLabel ); 244 vb->addWidget( pLabel );
245 245
246 // Category Menu 246 // Category Menu
247 catMenu = new QPopupMenu( this ); 247 catMenu = new QPopupMenu( this );
248 catMenu->setCheckable( TRUE ); 248 catMenu->setCheckable( TRUE );
249 connect( catMenu, SIGNAL(activated(int)), this, SLOT(slotSetCategory(int)) ); 249 connect( catMenu, SIGNAL(activated(int)), this, SLOT(slotSetCategory(int)) );
250 populateCategories(); 250 populateCategories();
251 mbList->insertItem( tr("View"), catMenu ); 251 mbList->insertItem( tr("View"), catMenu );
252 252
253 defaultFont = new QFont( m_abView->font() ); 253 defaultFont = new QFont( m_abView->font() );
254 slotSetFont(m_config.fontSize()); 254 slotSetFont(m_config.fontSize());
255 m_curFontSize = m_config.fontSize(); 255 m_curFontSize = m_config.fontSize();
256 256
257 setCentralWidget(listContainer); 257 setCentralWidget(listContainer);
258 258
259 // qDebug("adressbook contrsuction: t=%d", t.elapsed() ); 259 // qDebug("adressbook contrsuction: t=%d", t.elapsed() );
260 260
261 261
262 isLoading = false; 262 isLoading = false;
263} 263}
264 264
265 265
266void AddressbookWindow::slotConfig() 266void AddressbookWindow::slotConfig()
267{ 267{
268 ConfigDlg* dlg = new ConfigDlg( this, "Config" ); 268 ConfigDlg* dlg = new ConfigDlg( this, "Config" );
269 dlg -> setConfig( m_config ); 269 dlg -> setConfig( m_config );
270 dlg -> showMaximized(); 270 dlg -> showMaximized();
271 if ( dlg -> exec() ) { 271 if ( dlg -> exec() ) {
272 qWarning ("Config Dialog accepted!"); 272 qWarning ("Config Dialog accepted!");
273 m_config = dlg -> getConfig(); 273 m_config = dlg -> getConfig();
274 if ( m_curFontSize != m_config.fontSize() ){ 274 if ( m_curFontSize != m_config.fontSize() ){
275 qWarning("Font was changed!"); 275 qWarning("Font was changed!");
276 m_curFontSize = m_config.fontSize(); 276 m_curFontSize = m_config.fontSize();
277 emit slotSetFont( m_curFontSize ); 277 emit slotSetFont( m_curFontSize );
278 } 278 }
279 m_abView -> setListOrder( m_config.orderList() ); 279 m_abView -> setListOrder( m_config.orderList() );
280 } 280 }
281 281
282 delete dlg; 282 delete dlg;
283} 283}
284 284
285 285
286void AddressbookWindow::slotSetFont( int size ) 286void AddressbookWindow::slotSetFont( int size )
287{ 287{
288 qWarning("void AddressbookWindow::slotSetFont( %d )", size); 288 qWarning("void AddressbookWindow::slotSetFont( %d )", size);
289 289
290 if (size > 2 || size < 0) 290 if (size > 2 || size < 0)
291 size = 1; 291 size = 1;
292 292
293 m_config.setFontSize( size ); 293 m_config.setFontSize( size );
294 294
295 QFont *currentFont; 295 QFont *currentFont;
296 296
297 switch (size) { 297 switch (size) {
298 case 0: 298 case 0:
299 m_abView->setFont( QFont( defaultFont->family(), defaultFont->pointSize() - 2 ) ); 299 m_abView->setFont( QFont( defaultFont->family(), defaultFont->pointSize() - 2 ) );
300 currentFont = new QFont (m_abView->font()); 300 currentFont = new QFont (m_abView->font());
301 // abList->resizeRows(currentFont->pixelSize() + 7); :SX 301 // abList->resizeRows(currentFont->pixelSize() + 7); :SX
302 // abList->resizeRows(); 302 // abList->resizeRows();
303 break; 303 break;
304 case 1: 304 case 1:
305 m_abView->setFont( *defaultFont ); 305 m_abView->setFont( *defaultFont );
306 currentFont = new QFont (m_abView->font()); 306 currentFont = new QFont (m_abView->font());
307 // // abList->resizeRows(currentFont->pixelSize() + 7); 307 // // abList->resizeRows(currentFont->pixelSize() + 7);
308 // abList->resizeRows(); 308 // abList->resizeRows();
309 break; 309 break;
310 case 2: 310 case 2:
311 m_abView->setFont( QFont( defaultFont->family(), defaultFont->pointSize() + 2 ) ); 311 m_abView->setFont( QFont( defaultFont->family(), defaultFont->pointSize() + 2 ) );
312 currentFont = new QFont (m_abView->font()); 312 currentFont = new QFont (m_abView->font());
313 // //abList->resizeRows(currentFont->pixelSize() + 7); 313 // //abList->resizeRows(currentFont->pixelSize() + 7);
314 // abList->resizeRows(); 314 // abList->resizeRows();
315 break; 315 break;
316 } 316 }
317} 317}
318 318
319 319
320 320
321void AddressbookWindow::importvCard() { 321void AddressbookWindow::importvCard() {
322 QString str = OFileDialog::getOpenFileName( 1,"/");//,"", "*", this ); 322 QString str = OFileDialog::getOpenFileName( 1,"/");//,"", "*", this );
323 if(!str.isEmpty() ){ 323 if(!str.isEmpty() ){
324 setDocument((const QString&) str ); 324 setDocument((const QString&) str );
325 } 325 }
326 326
327} 327}
328 328
329void AddressbookWindow::setDocument( const QString &filename ) 329void AddressbookWindow::setDocument( const QString &filename )
330{ 330{
331 qWarning( "void AddressbookWindow::setDocument( %s )", filename.latin1() ); 331 qWarning( "void AddressbookWindow::setDocument( %s )", filename.latin1() );
332 332
333 if ( filename.find(".vcf") != int(filename.length()) - 4 ){ 333 if ( filename.find(".vcf") != int(filename.length()) - 4 ){
334 334
335 335
336 336
337 switch( QMessageBox::information( this, tr ( "Right file type ?" ), 337 switch( QMessageBox::information( this, tr ( "Right file type ?" ),
338 tr( "The selected file \n does not end with \".vcf\".\n Do you really want to open it?" ), 338 tr( "The selected file \n does not end with \".vcf\".\n Do you really want to open it?" ),
339 tr( "&Yes" ), tr( "&No" ), QString::null, 339 tr( "&Yes" ), tr( "&No" ), QString::null,
340 0, // Enter == button 0 340 0, // Enter == button 0
341 2 ) ) { // Escape == button 2 341 2 ) ) { // Escape == button 2
342 case 0: 342 case 0:
343 qWarning("YES clicked"); 343 qWarning("YES clicked");
344 break; 344 break;
345 case 1: 345 case 1:
346 qWarning("NO clicked"); 346 qWarning("NO clicked");
347 return; 347 return;
348 break; 348 break;
349 } 349 }
350 } 350 }
351 351
352 OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null, 352 OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null,
353 filename ); 353 filename );
354 OContactAccess* access = new OContactAccess ( "addressbook", QString::null , vcard_backend, true ); 354 OContactAccess* access = new OContactAccess ( "addressbook", QString::null , vcard_backend, true );
355 OContactAccess::List allList = access->allRecords(); 355 OContactAccess::List allList = access->allRecords();
356 qWarning( "Found number of contacts in File: %d", allList.count() ); 356 qWarning( "Found number of contacts in File: %d", allList.count() );
357 357
358 if ( !allList.count() ) { 358 if ( !allList.count() ) {
359 QMessageBox::information( this, "Import VCard", 359 QMessageBox::information( this, "Import VCard",
360 "It was impossible to import\nthe VCard.\n" 360 "It was impossible to import\nthe VCard.\n"
361 "The VCard may be corrupted!" ); 361 "The VCard may be corrupted!" );
362 } 362 }
363 363
364 bool doAsk = true; 364 bool doAsk = true;
365 OContactAccess::List::Iterator it; 365 OContactAccess::List::Iterator it;
366 for ( it = allList.begin(); it != allList.end(); ++it ){ 366 for ( it = allList.begin(); it != allList.end(); ++it ){
367 qWarning("Adding Contact from: %s", (*it).fullName().latin1() ); 367 qWarning("Adding Contact from: %s", (*it).fullName().latin1() );
368 if ( doAsk ){ 368 if ( doAsk ){
369 switch( QMessageBox::information( this, tr ( "Add Contact?" ), 369 switch( QMessageBox::information( this, tr ( "Add Contact?" ),
370 tr( "Do you really want add contact for \n%1?" ) 370 tr( "Do you really want add contact for \n%1?" )
371 .arg( (*it).fullName().latin1() ), 371 .arg( (*it).fullName().latin1() ),
372 tr( "&Yes" ), tr( "&No" ), tr( "&All Yes"), 372 tr( "&Yes" ), tr( "&No" ), tr( "&All Yes"),
373 0, // Enter == button 0 373 0, // Enter == button 0
374 2 ) ) { // Escape == button 2 374 2 ) ) { // Escape == button 2
375 case 0: 375 case 0:
376 qWarning("YES clicked"); 376 qWarning("YES clicked");
377 m_abView->addEntry( *it ); 377 m_abView->addEntry( *it );
378 break; 378 break;
379 case 1: 379 case 1:
380 qWarning("NO clicked"); 380 qWarning("NO clicked");
381 break; 381 break;
382 case 2: 382 case 2:
383 qWarning("YesAll clicked"); 383 qWarning("YesAll clicked");
384 doAsk = false; 384 doAsk = false;
385 break; 385 break;
386 } 386 }
387 }else 387 }else
388 m_abView->addEntry( *it ); 388 m_abView->addEntry( *it );
389 389
390 } 390 }
391 391
392 delete access; 392 delete access;
393} 393}
394 394
395void AddressbookWindow::resizeEvent( QResizeEvent *e ) 395void AddressbookWindow::resizeEvent( QResizeEvent *e )
396{ 396{
397 QMainWindow::resizeEvent( e ); 397 QMainWindow::resizeEvent( e );
398 398
399 399
400} 400}
401 401
402AddressbookWindow::~AddressbookWindow() 402AddressbookWindow::~AddressbookWindow()
403{ 403{
404 ToolBarDock dock; 404 ToolBarDock dock;
405 int dummy; 405 int dummy;
406 bool bDummy; 406 bool bDummy;
407 getLocation ( listTools, dock, dummy, bDummy, dummy ); 407 getLocation ( listTools, dock, dummy, bDummy, dummy );
408 m_config.setToolBarDock( dock ); 408 m_config.setToolBarDock( dock );
409 m_config.save(); 409 m_config.save();
410} 410}
411 411
412void AddressbookWindow::slotUpdateToolbar() 412void AddressbookWindow::slotUpdateToolbar()
413{ 413{
414 OContact ce = m_abView->currentEntry(); 414 OContact ce = m_abView->currentEntry();
415 actionMail->setEnabled( !ce.defaultEmail().isEmpty() ); 415 actionMail->setEnabled( !ce.defaultEmail().isEmpty() );
416} 416}
417 417
418void AddressbookWindow::slotListNew() 418void AddressbookWindow::slotListNew()
419{ 419{
420 OContact cnt; 420 OContact cnt;
421 if( !syncing ) { 421 if( !syncing ) {
422 editEntry( NewEntry ); 422 editEntry( NewEntry );
423 } else { 423 } else {
424 QMessageBox::warning(this, tr("Contacts"), 424 QMessageBox::warning(this, tr("Contacts"),
425 tr("Can not edit data, currently syncing")); 425 tr("Can not edit data, currently syncing"));
426 } 426 }
427} 427}
428 428
429// void AddressbookWindow::slotListView() 429// void AddressbookWindow::slotListView()
430// { 430// {
431 // m_abView -> init( abList->currentEntry() ); 431 // m_abView -> init( abList->currentEntry() );
432 // // :SX mView->sync(); 432 // // :SX mView->sync();
433 // //:SXshowView(); 433 // //:SXshowView();
434// } 434// }
435 435
436void AddressbookWindow::slotListDelete() 436void AddressbookWindow::slotListDelete()
437{ 437{
438 if(!syncing) { 438 if(!syncing) {
439 OContact tmpEntry = m_abView ->currentEntry(); 439 OContact tmpEntry = m_abView ->currentEntry();
440 440
441 // get a name, do the best we can... 441 // get a name, do the best we can...
442 QString strName = tmpEntry.fullName(); 442 QString strName = tmpEntry.fullName();
443 if ( strName.isEmpty() ) { 443 if ( strName.isEmpty() ) {
444 strName = tmpEntry.company(); 444 strName = tmpEntry.company();
445 if ( strName.isEmpty() ) 445 if ( strName.isEmpty() )
446 strName = "No Name"; 446 strName = "No Name";
447 } 447 }
448 448
449 449
450 if ( QPEMessageBox::confirmDelete( this, tr( "Contacts" ), 450 if ( QPEMessageBox::confirmDelete( this, tr( "Contacts" ),
451 strName ) ) { 451 strName ) ) {
452 m_abView->removeEntry( tmpEntry.uid() ); 452 m_abView->removeEntry( tmpEntry.uid() );
453 } 453 }
454 } else { 454 } else {
455 QMessageBox::warning( this, tr("Contacts"), 455 QMessageBox::warning( this, tr("Contacts"),
456 tr("Can not edit data, currently syncing") ); 456 tr("Can not edit data, currently syncing") );
457 } 457 }
458} 458}
459 459
460void AddressbookWindow::slotFindOpen() 460void AddressbookWindow::slotFindOpen()
461{ 461{
462 searchBar->show(); 462 searchBar->show();
463 m_abView -> inSearch(); 463 m_abView -> inSearch();
464 searchEdit->setFocus(); 464 searchEdit->setFocus();
465} 465}
466void AddressbookWindow::slotFindClose() 466void AddressbookWindow::slotFindClose()
467{ 467{
468 searchBar->hide(); 468 searchBar->hide();
469 m_abView -> offSearch(); 469 m_abView -> offSearch();
470 // m_abView->setFocus(); 470 // m_abView->setFocus();
471} 471}
472 472
473 473
474void AddressbookWindow::slotFind() 474void AddressbookWindow::slotFind()
475{ 475{
476 m_abView->slotDoFind( searchEdit->text(), m_config.beCaseSensitive(), m_config.useRegExp(), false); 476 m_abView->slotDoFind( searchEdit->text(), m_config.beCaseSensitive(), m_config.useRegExp(), false);
477 477
478 searchEdit->clearFocus(); 478 searchEdit->clearFocus();
479 // m_abView->setFocus(); 479 // m_abView->setFocus();
480 480
481} 481}
482 482
483void AddressbookWindow::slotViewBack() 483void AddressbookWindow::slotViewBack()
484{ 484{
485 // :SX showList(); 485 // :SX showList();
486} 486}
487 487
488void AddressbookWindow::slotViewEdit() 488void AddressbookWindow::slotViewEdit()
489{ 489{
490 if(!syncing) { 490 if(!syncing) {
491 if (actionPersonal->isOn()) { 491 if (actionPersonal->isOn()) {
492 editPersonal(); 492 editPersonal();
493 } else { 493 } else {
494 editEntry( EditEntry ); 494 editEntry( EditEntry );
495 } 495 }
496 } else { 496 } else {
497 QMessageBox::warning( this, tr("Contacts"), 497 QMessageBox::warning( this, tr("Contacts"),
498 tr("Can not edit data, currently syncing") ); 498 tr("Can not edit data, currently syncing") );
499 } 499 }
500} 500}
501 501
502 502
503 503
504void AddressbookWindow::writeMail() 504void AddressbookWindow::writeMail()
505{ 505{
506 OContact c = m_abView -> currentEntry(); 506 OContact c = m_abView -> currentEntry();
507 QString name = c.fileAs(); 507 QString name = c.fileAs();
508 QString email = c.defaultEmail(); 508 QString email = c.defaultEmail();
509 509
510 // I prefer the OPIE-Environment variable before the 510 // I prefer the OPIE-Environment variable before the
511 // QPE-one.. 511 // QPE-one..
512 QString basepath = QString::fromLatin1( getenv("OPIEDIR") ); 512 QString basepath = QString::fromLatin1( getenv("OPIEDIR") );
513 if ( basepath.isEmpty() ) 513 if ( basepath.isEmpty() )
514 basepath = QString::fromLatin1( getenv("QPEDIR") ); 514 basepath = QString::fromLatin1( getenv("QPEDIR") );
515 515
516 // Try to access the preferred. If not possible, try to 516 // Try to access the preferred. If not possible, try to
517 // switch to the other one.. 517 // switch to the other one..
518 if ( m_config.useQtMail() ){ 518 if ( m_config.useQtMail() ){
519 qWarning ("Accessing: %s", (basepath + "/bin/qtmail").latin1()); 519 qWarning ("Accessing: %s", (basepath + "/bin/qtmail").latin1());
520 if ( QFile::exists( basepath + "/bin/qtmail" ) ){ 520 if ( QFile::exists( basepath + "/bin/qtmail" ) ){
521 qWarning ("QCop"); 521 qWarning ("QCop");
522 QCopEnvelope e("QPE/Application/qtmail", "writeMail(QString,QString)"); 522 QCopEnvelope e("QPE/Application/qtmail", "writeMail(QString,QString)");
523 e << name << email; 523 e << name << email;
524 return; 524 return;
525 } else 525 } else
526 m_config.setUseOpieMail( true ); 526 m_config.setUseOpieMail( true );
527 } 527 }
528 if ( m_config.useOpieMail() ){ 528 if ( m_config.useOpieMail() ){
529 qWarning ("Accessing: %s", (basepath + "/bin/mail").latin1()); 529 qWarning ("Accessing: %s", (basepath + "/bin/mail").latin1());
530 if ( QFile::exists( basepath + "/bin/mail" ) ){ 530 if ( QFile::exists( basepath + "/bin/mail" ) ){
531 qWarning ("QCop"); 531 qWarning ("QCop");
532 QCopEnvelope e("QPE/Application/mail", "writeMail(QString,QString)"); 532 QCopEnvelope e("QPE/Application/mail", "writeMail(QString,QString)");
533 e << name << email; 533 e << name << email;
534 return; 534 return;
535 } else 535 } else
536 m_config.setUseQtMail( true ); 536 m_config.setUseQtMail( true );
537 } 537 }
538 538
539} 539}
540 540
541static const char * beamfile = "/tmp/obex/contact.vcf"; 541static const char * beamfile = "/tmp/obex/contact.vcf";
542 542
543void AddressbookWindow::slotBeam() 543void AddressbookWindow::slotBeam()
544{ 544{
545 QString filename; 545 QString beamFilename;
546 OContact c; 546 OContact c;
547 if ( actionPersonal->isOn() ) { 547 if ( actionPersonal->isOn() ) {
548 filename = addressbookPersonalVCardName(); 548 beamFilename = addressbookPersonalVCardName();
549 if (!QFile::exists(filename)) 549 if ( !QFile::exists( beamFilename ) )
550 return; // can't beam a non-existent file 550 return; // can't beam a non-existent file
551 OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null, 551 OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null,
552 filename ); 552 beamFilename );
553 OContactAccess* access = new OContactAccess ( "addressbook", QString::null , vcard_backend, true ); 553 OContactAccess* access = new OContactAccess ( "addressbook", QString::null , vcard_backend, true );
554 OContactAccess::List allList = access->allRecords(); 554 OContactAccess::List allList = access->allRecords();
555 OContactAccess::List::Iterator it = allList.begin(); // Just take first 555 OContactAccess::List::Iterator it = allList.begin(); // Just take first
556 c = *it; 556 c = *it;
557 557
558 delete access; 558 delete access;
559 } else { 559 } else {
560 unlink( beamfile ); // delete if exists 560 unlink( beamfile ); // delete if exists
561 mkdir("/tmp/obex/", 0755); 561 mkdir("/tmp/obex/", 0755);
562 c = m_abView -> currentEntry(); 562 c = m_abView -> currentEntry();
563 OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null, 563 OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null,
564 beamfile ); 564 beamfile );
565 OContactAccess* access = new OContactAccess ( "addressbook", QString::null , vcard_backend, true ); 565 OContactAccess* access = new OContactAccess ( "addressbook", QString::null , vcard_backend, true );
566 access->add( c ); 566 access->add( c );
567 access->save(); 567 access->save();
568 delete access; 568 delete access;
569 569
570 filename = beamfile; 570 beamFilename = beamfile;
571 } 571 }
572 572
573 qWarning("Beaming: %s", beamFilename.latin1() );
573 574
574 Ir *ir = new Ir( this ); 575 Ir *ir = new Ir( this );
575 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 576 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
576 QString description = c.fullName(); 577 QString description = c.fullName();
577 ir->send( filename, description, "text/x-vCard" ); 578 ir->send( beamFilename, description, "text/x-vCard" );
578} 579}
579 580
580void AddressbookWindow::beamDone( Ir *ir ) 581void AddressbookWindow::beamDone( Ir *ir )
581{ 582{
583
582 delete ir; 584 delete ir;
583 unlink( beamfile ); 585 unlink( beamfile );
584} 586}
585 587
586 588
587static void parseName( const QString& name, QString *first, QString *middle, 589static void parseName( const QString& name, QString *first, QString *middle,
588 QString * last ) 590 QString * last )
589{ 591{
590 592
591 int comma = name.find ( "," ); 593 int comma = name.find ( "," );
592 QString rest; 594 QString rest;
593 if ( comma > 0 ) { 595 if ( comma > 0 ) {
594 *last = name.left( comma ); 596 *last = name.left( comma );
595 comma++; 597 comma++;
596 while ( comma < int(name.length()) && name[comma] == ' ' ) 598 while ( comma < int(name.length()) && name[comma] == ' ' )
597 comma++; 599 comma++;
598 rest = name.mid( comma ); 600 rest = name.mid( comma );
599 } else { 601 } else {
600 int space = name.findRev( ' ' ); 602 int space = name.findRev( ' ' );
601 *last = name.mid( space+1 ); 603 *last = name.mid( space+1 );
602 rest = name.left( space ); 604 rest = name.left( space );
603 } 605 }
604 int space = rest.find( ' ' ); 606 int space = rest.find( ' ' );
605 if ( space <= 0 ) { 607 if ( space <= 0 ) {
606 *first = rest; 608 *first = rest;
607 } else { 609 } else {
608 *first = rest.left( space ); 610 *first = rest.left( space );
609 *middle = rest.mid( space+1 ); 611 *middle = rest.mid( space+1 );
610 } 612 }
611 613
612} 614}
613 615
614 616
615void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data) 617void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data)
616{ 618{
617 if (msg == "editPersonal()") { 619 if (msg == "editPersonal()") {
618 editPersonal(); 620 editPersonal();
619 } else if (msg == "editPersonalAndClose()") { 621 } else if (msg == "editPersonalAndClose()") {
620 editPersonal(); 622 editPersonal();
621 close(); 623 close();
622 } else if ( msg == "addContact(QString,QString)" ) { 624 } else if ( msg == "addContact(QString,QString)" ) {
623 QDataStream stream(data,IO_ReadOnly); 625 QDataStream stream(data,IO_ReadOnly);
624 QString name, email; 626 QString name, email;
625 stream >> name >> email; 627 stream >> name >> email;
626 628
627 OContact cnt; 629 OContact cnt;
628 QString fn, mn, ln; 630 QString fn, mn, ln;
629 parseName( name, &fn, &mn, &ln ); 631 parseName( name, &fn, &mn, &ln );
630 // qDebug( " %s - %s - %s", fn.latin1(), mn.latin1(), ln.latin1() ); 632 // qDebug( " %s - %s - %s", fn.latin1(), mn.latin1(), ln.latin1() );
631 cnt.setFirstName( fn ); 633 cnt.setFirstName( fn );
632 cnt.setMiddleName( mn ); 634 cnt.setMiddleName( mn );
633 cnt.setLastName( ln ); 635 cnt.setLastName( ln );
634 cnt.insertEmails( email ); 636 cnt.insertEmails( email );
635 cnt.setDefaultEmail( email ); 637 cnt.setDefaultEmail( email );
636 cnt.setFileAs(); 638 cnt.setFileAs();
637 639
638 m_abView -> addEntry( cnt ); 640 m_abView -> addEntry( cnt );
639 641
640 // :SXm_abView()->init( cnt ); 642 // :SXm_abView()->init( cnt );
641 editEntry( EditEntry ); 643 editEntry( EditEntry );
642 644 } else if ( msg == "beamBusinessCard()" ) {
643 645 QString beamFilename = addressbookPersonalVCardName();
644 646 if ( !QFile::exists( beamFilename ) )
647 return; // can't beam a non-existent file
648
649 Ir *ir = new Ir( this );
650 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
651 QString description = "mycard.vcf";
652 ir->send( beamFilename, description, "text/x-vCard" );
645 } 653 }
646#if 0 654#if 0
647 else if (msg == "pickAddresses(QCString,QCString,QStringList,...)" ) { 655 else if (msg == "pickAddresses(QCString,QCString,QStringList,...)" ) {
648 QDataStream stream(data,IO_ReadOnly); 656 QDataStream stream(data,IO_ReadOnly);
649 QCString ch,m; 657 QCString ch,m;
650 QStringList types; 658 QStringList types;
651 stream >> ch >> m >> types; 659 stream >> ch >> m >> types;
652 AddressPicker picker(abList,this,0,TRUE); 660 AddressPicker picker(abList,this,0,TRUE);
653 picker.showMaximized(); 661 picker.showMaximized();
654 picker.setChoiceNames(types); 662 picker.setChoiceNames(types);
655 int i=0; 663 int i=0;
656 for (QStringList::ConstIterator it = types.begin(); it!=types.end(); ++it) { 664 for (QStringList::ConstIterator it = types.begin(); it!=types.end(); ++it) {
657 QStringList sel; 665 QStringList sel;
658 stream >> sel; 666 stream >> sel;
659 picker.setSelection(i++,sel); 667 picker.setSelection(i++,sel);
660 } 668 }
661 picker.showMaximized(); 669 picker.showMaximized();
662 picker.exec(); 670 picker.exec();
663 671
664 // ###### note: contacts may have been added - save here! 672 // ###### note: contacts may have been added - save here!
665 673
666 setCentralWidget(abList); 674 setCentralWidget(abList);
667 QCopEnvelope e(ch,m); 675 QCopEnvelope e(ch,m);
668 i=0; 676 i=0;
669 for (QStringList::ConstIterator it = types.begin(); it!=types.end(); ++it) { 677 for (QStringList::ConstIterator it = types.begin(); it!=types.end(); ++it) {
670 QStringList sel = picker.selection(i++); 678 QStringList sel = picker.selection(i++);
671 e << sel; 679 e << sel;
672 } 680 }
673 } 681 }
674#endif 682#endif
675 683
676} 684}
677 685
678void AddressbookWindow::editEntry( EntryMode entryMode ) 686void AddressbookWindow::editEntry( EntryMode entryMode )
679{ 687{
680 OContact entry; 688 OContact entry;
681 if ( !abEditor ) { 689 if ( !abEditor ) {
682 abEditor = new ContactEditor( entry, this, "editor" ); 690 abEditor = new ContactEditor( entry, this, "editor" );
683 } 691 }
684 if ( entryMode == EditEntry ) 692 if ( entryMode == EditEntry )
685 abEditor->setEntry( m_abView -> currentEntry() ); 693 abEditor->setEntry( m_abView -> currentEntry() );
686 else if ( entryMode == NewEntry ) 694 else if ( entryMode == NewEntry )
687 abEditor->setEntry( entry ); 695 abEditor->setEntry( entry );
688 // other things may change the caption. 696 // other things may change the caption.
689 abEditor->setCaption( tr("Edit Address") ); 697 abEditor->setCaption( tr("Edit Address") );
690 698
691#if defined(Q_WS_QWS) || defined(_WS_QWS_) 699#if defined(Q_WS_QWS) || defined(_WS_QWS_)
692 abEditor->showMaximized(); 700 abEditor->showMaximized();
693#endif 701#endif
694 // fix the foxus... 702 // fix the foxus...
695 abEditor->setNameFocus(); 703 abEditor->setNameFocus();
696 if ( abEditor->exec() ) { 704 if ( abEditor->exec() ) {
697 setFocus(); 705 setFocus();
698 if ( entryMode == NewEntry ) { 706 if ( entryMode == NewEntry ) {
699 OContact insertEntry = abEditor->entry(); 707 OContact insertEntry = abEditor->entry();
700 insertEntry.assignUid(); 708 insertEntry.assignUid();
701 m_abView -> addEntry( insertEntry ); 709 m_abView -> addEntry( insertEntry );
702 } else { 710 } else {
703 OContact replEntry = abEditor->entry(); 711 OContact replEntry = abEditor->entry();
704 712
705 if ( !replEntry.isValidUid() ) 713 if ( !replEntry.isValidUid() )
706 replEntry.assignUid(); 714 replEntry.assignUid();
707 715
708 m_abView -> replaceEntry( replEntry ); 716 m_abView -> replaceEntry( replEntry );
709 } 717 }
710 } 718 }
711 // populateCategories(); 719 // populateCategories();
712 720
713} 721}
714 722
715void AddressbookWindow::editPersonal() 723void AddressbookWindow::editPersonal()
716{ 724{
717 OContact entry; 725 OContact entry;
718 726
719 // Switch to personal view if not selected 727 // Switch to personal view if not selected
720 // but take care of the menu, too 728 // but take care of the menu, too
721 if ( ! actionPersonal->isOn() ){ 729 if ( ! actionPersonal->isOn() ){
722 qWarning("*** ++++"); 730 qWarning("*** ++++");
723 actionPersonal->setOn( true ); 731 actionPersonal->setOn( true );
724 slotPersonalView(); 732 slotPersonalView();
725 } 733 }
726 734
727 if ( !abEditor ) { 735 if ( !abEditor ) {
728 abEditor = new ContactEditor( entry, this, "editor" ); 736 abEditor = new ContactEditor( entry, this, "editor" );
729 } 737 }
730 738
731 abEditor->setCaption(tr("Edit My Personal Details")); 739 abEditor->setCaption(tr("Edit My Personal Details"));
732 abEditor->setPersonalView( true ); 740 abEditor->setPersonalView( true );
733 editEntry( EditEntry ); 741 editEntry( EditEntry );
734 abEditor->setPersonalView( false ); 742 abEditor->setPersonalView( false );
735 743
736} 744}
737 745
738 746
739void AddressbookWindow::slotPersonalView() 747void AddressbookWindow::slotPersonalView()
740{ 748{
741 qWarning("slotPersonalView()"); 749 qWarning("slotPersonalView()");
742 if (!actionPersonal->isOn()) { 750 if (!actionPersonal->isOn()) {
743 // we just turned it off 751 // we just turned it off
744 qWarning("slotPersonalView()-> OFF"); 752 qWarning("slotPersonalView()-> OFF");
745 setCaption( tr("Contacts") ); 753 setCaption( tr("Contacts") );
746 actionNew->setEnabled(TRUE); 754 actionNew->setEnabled(TRUE);
747 actionTrash->setEnabled(TRUE); 755 actionTrash->setEnabled(TRUE);
748 actionFind->setEnabled(TRUE); 756 actionFind->setEnabled(TRUE);
749 actionMail->setEnabled(TRUE); 757 actionMail->setEnabled(TRUE);
750 // slotUpdateToolbar(); 758 // slotUpdateToolbar();
751 759
752 m_abView->showPersonal( false ); 760 m_abView->showPersonal( false );
753 761
754 return; 762 return;
755 } 763 }
756 764
757 qWarning("slotPersonalView()-> ON"); 765 qWarning("slotPersonalView()-> ON");
758 // XXX need to disable some QActions. 766 // XXX need to disable some QActions.
759 actionNew->setEnabled(FALSE); 767 actionNew->setEnabled(FALSE);
760 actionTrash->setEnabled(FALSE); 768 actionTrash->setEnabled(FALSE);
761 actionFind->setEnabled(FALSE); 769 actionFind->setEnabled(FALSE);
762 actionMail->setEnabled(FALSE); 770 actionMail->setEnabled(FALSE);
763 771
764 setCaption( tr("Contacts - My Personal Details") ); 772 setCaption( tr("Contacts - My Personal Details") );
765 773
766 m_abView->showPersonal( true ); 774 m_abView->showPersonal( true );
767 775
768} 776}
769 777
770 778
771void AddressbookWindow::listIsEmpty( bool empty ) 779void AddressbookWindow::listIsEmpty( bool empty )
772{ 780{
773 if ( !empty ) { 781 if ( !empty ) {
774 deleteButton->setEnabled( TRUE ); 782 deleteButton->setEnabled( TRUE );
775 } 783 }
776} 784}
777 785
778void AddressbookWindow::reload() 786void AddressbookWindow::reload()
779{ 787{
780 syncing = FALSE; 788 syncing = FALSE;
781 m_abView->clear(); 789 m_abView->clear();
782 m_abView->reload(); 790 m_abView->reload();
783} 791}
784 792
785void AddressbookWindow::flush() 793void AddressbookWindow::flush()
786{ 794{
787 syncing = TRUE; 795 syncing = TRUE;
788 m_abView->save(); 796 m_abView->save();
789} 797}
790 798
791 799
792void AddressbookWindow::closeEvent( QCloseEvent *e ) 800void AddressbookWindow::closeEvent( QCloseEvent *e )
793{ 801{
794 if(active_view == AbView::CardView){ 802 if(active_view == AbView::CardView){
795 slotViewSwitched( AbView::TableView ); 803 slotViewSwitched( AbView::TableView );
796 e->ignore(); 804 e->ignore();
797 return; 805 return;
798 } 806 }
799 if(syncing) { 807 if(syncing) {
800 /* shouldn't we save, I hear you say? well its already been set 808 /* shouldn't we save, I hear you say? well its already been set
801 so that an edit can not occur during a sync, and we flushed 809 so that an edit can not occur during a sync, and we flushed
802 at the start of the sync, so there is no need to save 810 at the start of the sync, so there is no need to save
803 Saving however itself would cause problems. */ 811 Saving however itself would cause problems. */
804 e->accept(); 812 e->accept();
805 return; 813 return;
806 } 814 }
807 //################## shouldn't always save 815 //################## shouldn't always save
808 // True, but the database handles this automatically ! (se) 816 // True, but the database handles this automatically ! (se)
809 if ( save() ) 817 if ( save() )
810 e->accept(); 818 e->accept();
811 else 819 else
812 e->ignore(); 820 e->ignore();
813} 821}
814 822
815/* 823/*
816 Returns TRUE if it is OK to exit 824 Returns TRUE if it is OK to exit
817*/ 825*/
818 826
819bool AddressbookWindow::save() 827bool AddressbookWindow::save()
820{ 828{
821 if ( !m_abView->save() ) { 829 if ( !m_abView->save() ) {
822 if ( QMessageBox::critical( 0, tr( "Out of space" ), 830 if ( QMessageBox::critical( 0, tr( "Out of space" ),
823 tr("Unable to save information.\n" 831 tr("Unable to save information.\n"
824 "Free up some space\n" 832 "Free up some space\n"
825 "and try again.\n" 833 "and try again.\n"
826 "\nQuit anyway?"), 834 "\nQuit anyway?"),
827 QMessageBox::Yes|QMessageBox::Escape, 835 QMessageBox::Yes|QMessageBox::Escape,
828 QMessageBox::No|QMessageBox::Default ) 836 QMessageBox::No|QMessageBox::Default )
829 != QMessageBox::No ) 837 != QMessageBox::No )
830 return TRUE; 838 return TRUE;
831 else 839 else
832 return FALSE; 840 return FALSE;
833 } 841 }
834 return TRUE; 842 return TRUE;
835} 843}
836 844
837#ifdef __DEBUG_RELEASE 845#ifdef __DEBUG_RELEASE
838void AddressbookWindow::slotSave() 846void AddressbookWindow::slotSave()
839{ 847{
840 save(); 848 save();
841} 849}
842#endif 850#endif
843 851
844 852
845void AddressbookWindow::slotNotFound() 853void AddressbookWindow::slotNotFound()
846{ 854{
847 qWarning("Got notfound signal!"); 855 qWarning("Got notfound signal!");
848 QMessageBox::information( this, tr( "Not Found" ), 856 QMessageBox::information( this, tr( "Not Found" ),
849 tr( "Unable to find a contact for this \n search pattern!" ) ); 857 tr( "Unable to find a contact for this \n search pattern!" ) );
850 858
851 859
852} 860}
853void AddressbookWindow::slotWrapAround() 861void AddressbookWindow::slotWrapAround()
854{ 862{
855 qWarning("Got wrap signal!"); 863 qWarning("Got wrap signal!");
856 // if ( doNotifyWrapAround ) 864 // if ( doNotifyWrapAround )
857 // QMessageBox::information( this, tr( "End of list" ), 865 // QMessageBox::information( this, tr( "End of list" ),
858 // tr( "End of list. Wrap around now...!" ) + "\n" ); 866 // tr( "End of list. Wrap around now...!" ) + "\n" );
859 867
860} 868}
861 869
862void AddressbookWindow::slotSetCategory( int c ) 870void AddressbookWindow::slotSetCategory( int c )
863{ 871{
864 qWarning( "void AddressbookWindow::slotSetCategory( %d ) from %d", c, catMenu->count() ); 872 qWarning( "void AddressbookWindow::slotSetCategory( %d ) from %d", c, catMenu->count() );
865 873
866 QString cat, book; 874 QString cat, book;
867 AbView::Views view = AbView::TableView; 875 AbView::Views view = AbView::TableView;
868 876
869 if ( c <= 0 ) 877 if ( c <= 0 )
870 return; 878 return;
871 879
872 // Switch view 880 // Switch view
873 if ( c < 3 ) 881 if ( c < 3 )
874 for ( unsigned int i = 1; i < 3; i++ ){ 882 for ( unsigned int i = 1; i < 3; i++ ){
875 if ( catMenu ) 883 if ( catMenu )
876 catMenu->setItemChecked( i, c == (int)i ); 884 catMenu->setItemChecked( i, c == (int)i );
877 } 885 }
878 else 886 else
879 // Checkmark Category Menu Item Selected 887 // Checkmark Category Menu Item Selected
880 for ( unsigned int i = 3; i < catMenu->count(); i++ ) 888 for ( unsigned int i = 3; i < catMenu->count(); i++ )
881 catMenu->setItemChecked( i, c == (int)i ); 889 catMenu->setItemChecked( i, c == (int)i );
882 890
883 // Now switch to the selected category 891 // Now switch to the selected category
884 for ( unsigned int i = 1; i < catMenu->count(); i++ ) { 892 for ( unsigned int i = 1; i < catMenu->count(); i++ ) {
885 if (catMenu->isItemChecked( i )) { 893 if (catMenu->isItemChecked( i )) {
886 if ( i == 1 ){ // default List view 894 if ( i == 1 ){ // default List view
887 book = QString::null; 895 book = QString::null;
888 view = AbView::TableView; 896 view = AbView::TableView;
889 }else if ( i == 2 ){ 897 }else if ( i == 2 ){
890 book = tr( "Cards" ); 898 book = tr( "Cards" );
891 view = AbView::CardView; 899 view = AbView::CardView;
892 // }else if ( i == 3 ){ 900 // }else if ( i == 3 ){
893 // book = tr( "Personal" ); 901 // book = tr( "Personal" );
894 // view = AbView:: PersonalView; 902 // view = AbView:: PersonalView;
895 }else if ( i == 3 ){ // default All Categories 903 }else if ( i == 3 ){ // default All Categories
896 cat = QString::null; 904 cat = QString::null;
897 }else if ( i == (unsigned int)catMenu->count() - 1 ){ // last menu option (seperator is counted, too) will be Unfiled 905 }else if ( i == (unsigned int)catMenu->count() - 1 ){ // last menu option (seperator is counted, too) will be Unfiled
898 cat = "Unfiled"; 906 cat = "Unfiled";
899 qWarning ("Unfiled selected!!!"); 907 qWarning ("Unfiled selected!!!");
900 }else{ 908 }else{
901 cat = m_abView->categories()[i - 4]; 909 cat = m_abView->categories()[i - 4];
902 } 910 }
903 } 911 }
904 } 912 }
905 913
906 // Switch to the selected View 914 // Switch to the selected View
907 slotViewSwitched( view ); 915 slotViewSwitched( view );
908 916
909 // Tell the view about the selected category 917 // Tell the view about the selected category
910 m_abView -> setShowByCategory( cat ); 918 m_abView -> setShowByCategory( cat );
911 919
912 if ( book.isEmpty() ) 920 if ( book.isEmpty() )
913 book = "List"; 921 book = "List";
914 if ( cat.isEmpty() ) 922 if ( cat.isEmpty() )
915 cat = "All"; 923 cat = "All";
916 924
917 setCaption( tr( "Contacts" ) + " - " + book + " - " + tr( cat ) ); 925 setCaption( tr( "Contacts" ) + " - " + book + " - " + tr( cat ) );
918} 926}
919 927
920void AddressbookWindow::slotViewSwitched( int view ) 928void AddressbookWindow::slotViewSwitched( int view )
921{ 929{
922 qWarning( "void AddressbookWindow::slotViewSwitched( %d )", view ); 930 qWarning( "void AddressbookWindow::slotViewSwitched( %d )", view );
923 int menu = 0; 931 int menu = 0;
924 932
925 // Switch to selected view 933 // Switch to selected view
926 switch ( view ){ 934 switch ( view ){
927 case AbView::TableView: 935 case AbView::TableView:
928 menu = 1; 936 menu = 1;
929 m_tableViewButton->setOn(true); 937 m_tableViewButton->setOn(true);
930 m_cardViewButton->setOn(false); 938 m_cardViewButton->setOn(false);
931 break; 939 break;
932 case AbView::CardView: 940 case AbView::CardView:
933 menu = 2; 941 menu = 2;
934 m_tableViewButton->setOn(false); 942 m_tableViewButton->setOn(false);
935 m_cardViewButton->setOn(true); 943 m_cardViewButton->setOn(true);
936 break; 944 break;
937 } 945 }
938 for ( unsigned int i = 1; i < 3; i++ ){ 946 for ( unsigned int i = 1; i < 3; i++ ){
939 if ( catMenu ) 947 if ( catMenu )
940 catMenu->setItemChecked( i, menu == (int)i ); 948 catMenu->setItemChecked( i, menu == (int)i );
941 } 949 }
942 950
943 // Tell the view about the selected view 951 // Tell the view about the selected view
944 m_abView -> setShowToView ( (AbView::Views) view ); 952 m_abView -> setShowToView ( (AbView::Views) view );
945 active_view = view; 953 active_view = view;
946} 954}
947 955
948 956
949void AddressbookWindow::slotListView() 957void AddressbookWindow::slotListView()
950{ 958{
951 slotViewSwitched( AbView::TableView ); 959 slotViewSwitched( AbView::TableView );
952} 960}
953 961
954void AddressbookWindow::slotCardView() 962void AddressbookWindow::slotCardView()
955{ 963{
956 slotViewSwitched( AbView::CardView ); 964 slotViewSwitched( AbView::CardView );
957} 965}
958 966
959void AddressbookWindow::slotSetLetter( char c ) { 967void AddressbookWindow::slotSetLetter( char c ) {
960 968
961 m_abView->setShowByLetter( c ); 969 m_abView->setShowByLetter( c );
962 970
963} 971}
964 972
965 973
966void AddressbookWindow::populateCategories() 974void AddressbookWindow::populateCategories()
967{ 975{
968 catMenu->clear(); 976 catMenu->clear();
969 977
970 int id, rememberId; 978 int id, rememberId;
971 id = 1; 979 id = 1;
972 rememberId = 0; 980 rememberId = 0;
973 981
974 catMenu->insertItem( Resource::loadPixmap( "datebook/weeklst" ), tr( "List" ), id++ ); 982 catMenu->insertItem( Resource::loadPixmap( "datebook/weeklst" ), tr( "List" ), id++ );
975 catMenu->insertItem( Resource::loadPixmap( "day" ), tr( "Cards" ), id++ ); 983 catMenu->insertItem( Resource::loadPixmap( "day" ), tr( "Cards" ), id++ );
976 // catMenu->insertItem( tr( "Personal" ), id++ ); 984 // catMenu->insertItem( tr( "Personal" ), id++ );
977 catMenu->insertSeparator(); 985 catMenu->insertSeparator();
978 986
979 catMenu->insertItem( tr( "All" ), id++ ); 987 catMenu->insertItem( tr( "All" ), id++ );
980 QStringList categories = m_abView->categories(); 988 QStringList categories = m_abView->categories();
981 categories.append( tr( "Unfiled" ) ); 989 categories.append( tr( "Unfiled" ) );
982 for ( QStringList::Iterator it = categories.begin(); 990 for ( QStringList::Iterator it = categories.begin();
983 it != categories.end(); ++it ) { 991 it != categories.end(); ++it ) {
984 catMenu->insertItem( *it, id ); 992 catMenu->insertItem( *it, id );
985 if ( *it == m_abView -> showCategory() ) 993 if ( *it == m_abView -> showCategory() )
986 rememberId = id; 994 rememberId = id;
987 ++id; 995 ++id;
988 } 996 }
989 997
990 998
991 if ( m_abView -> showCategory().isEmpty() ) { 999 if ( m_abView -> showCategory().isEmpty() ) {
992 slotSetCategory( 3 ); 1000 slotSetCategory( 3 );
993 } 1001 }
994 else { 1002 else {
995 slotSetCategory( rememberId ); 1003 slotSetCategory( rememberId );
996 } 1004 }
997} 1005}
998 1006