summaryrefslogtreecommitdiff
path: root/core/pim/addressbook/addressbook.cpp
Side-by-side diff
Diffstat (limited to 'core/pim/addressbook/addressbook.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/addressbook.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp
index e8fa37c..5a8038b 100644
--- a/core/pim/addressbook/addressbook.cpp
+++ b/core/pim/addressbook/addressbook.cpp
@@ -1,80 +1,84 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#define QTOPIA_INTERNAL_FD
#include "contacteditor.h"
#include "ablabel.h"
#include "abtable.h"
#include "addresssettings.h"
#include "addressbook.h"
#include <qpe/qpeapplication.h>
#include <qpe/config.h>
#include <qpe/contact.h>
+
+#ifndef MAKE_FOR_SHARP_ROM
#include <qpe/finddialog.h>
+#endif
+
#include <qpe/global.h>
#include <qpe/resource.h>
#include <qpe/ir.h>
#include <qpe/qpemessagebox.h>
#include <qpe/qcopenvelope_qws.h>
#include <qaction.h>
#include <qdialog.h>
#include <qdir.h>
#include <qfile.h>
#include <qimage.h>
#include <qlayout.h>
#include <qpe/qpemenubar.h>
#include <qmessagebox.h>
#include <qpixmap.h>
#include <qpopupmenu.h>
#include <qpe/qpetoolbar.h>
#include <qstringlist.h>
#include <qtoolbutton.h>
#include <qwhatsthis.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <qdatetime.h>
static QString addressbookOldXMLFilename()
{
QString filename = QPEApplication::documentDir() + "addressbook.xml";
return filename;
}
static QString addressbookXMLFilename()
{
QString filename = Global::applicationFileName("addressbook",
"addressbook.xml");
return filename;
}
static QString addressbookPersonalVCardName()
{
QString filename = Global::applicationFileName("addressbook",
"businesscard.vcf");
return filename;
}
@@ -84,102 +88,104 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name,
WFlags f )
: QMainWindow( parent, name, f ),
abEditor(0),
bAbEditFirstTime(TRUE),
syncing(FALSE)
{
initFields();
setCaption( tr("Contacts") );
setIcon( Resource::loadPixmap( "AddressBook" ) );
setToolBarsMovable( FALSE );
// Create Toolbars
QPEToolBar *bar = new QPEToolBar( this );
bar->setHorizontalStretchable( TRUE );
QPEMenuBar *mbList = new QPEMenuBar( bar );
mbList->setMargin( 0 );
QPopupMenu *edit = new QPopupMenu( this );
mbList->insertItem( tr( "Contact" ), edit );
listTools = new QPEToolBar( this, "list operations" );
QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null,
0, this, 0 );
actionNew = a;
connect( a, SIGNAL( activated() ), this, SLOT( slotListNew() ) );
a->addTo( edit );
a->addTo( listTools );
a = new QAction( tr( "Edit" ), Resource::loadPixmap( "edit" ), QString::null,
0, this, 0 );
actionEdit = a;
connect( a, SIGNAL( activated() ), this, SLOT( slotViewEdit() ) );
a->addTo( edit );
a->addTo( listTools );
a = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null,
0, this, 0 );
actionTrash = a;
connect( a, SIGNAL( activated() ), this, SLOT( slotListDelete() ) );
a->addTo( edit );
a->addTo( listTools );
+#ifndef MAKE_FOR_SHARP_ROM
a = new QAction( tr( "Find" ), Resource::loadPixmap( "mag" ),
QString::null, 0, this, 0 );
actionFind = a;
connect( a, SIGNAL(activated()), this, SLOT(slotFind()) );
a->addTo( edit );
a->addTo( listTools );
+#endif
a = new QAction( tr( "Write Mail To" ), Resource::loadPixmap( "qtmail/reply" ),
QString::null, 0, this, 0 );
//a->setEnabled( FALSE ); we got support for it now :) zecke
actionMail = a;
connect( a, SIGNAL( activated() ), this, SLOT( writeMail() ) );
a->addTo( edit );
a->addTo( listTools );
if ( Ir::supported() ) {
a = new QAction( tr ("Beam Entry" ), Resource::loadPixmap( "beam" ), QString::null,
0, this, 0 );
actionBeam = a;
connect( a, SIGNAL( activated() ), this, SLOT( slotBeam() ) );
a->addTo( edit );
a->addTo( listTools );
}
edit->insertSeparator();
a = new QAction( tr("My Personal Details"), QString::null, 0, 0, 0, TRUE );
actionPersonal = a;
connect( a, SIGNAL( activated() ), this, SLOT( slotPersonalView() ) );
a->addTo( edit );
a = new QAction( tr( "Arrange Edit Fields"), QString::null, 0, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( slotSettings() ) );
a->addTo( edit );
// Create Views
// This is safe to call without checking to see if it exists...
// not to mention it also does the necessary stuff for the
// journaling...
QString str = addressbookXMLFilename();
if ( str.isNull() ) {
QMessageBox::warning( this, tr("Out of Space"),
tr("There is not enough space to create\n"
"neccessary startup files.\n"
"\nFree up some space before\nentering data!")
);
}
abList = new AbTable( &orderedFields, this, "table" );
@@ -465,106 +471,110 @@ void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data)
QCopEnvelope e(ch,m);
i=0;
for (QStringList::ConstIterator it = types.begin(); it!=types.end(); ++it) {
QStringList sel = picker.selection(i++);
e << sel;
}
}
#endif
}
void AddressbookWindow::editPersonal()
{
QString filename = addressbookPersonalVCardName();
Contact me;
if (QFile::exists(filename))
me = Contact::readVCard( filename )[0];
if (bAbEditFirstTime) {
abEditor = new ContactEditor( me, &orderedFields, &slOrderedFields,
this, "editor" );
// don't create a new editor every time
bAbEditFirstTime = FALSE;
} else
abEditor->setEntry( me );
abEditor->setCaption(tr("Edit My Personal Details"));
abEditor->showMaximized();
// fix the foxus...
abEditor->setNameFocus();
if ( abEditor->exec() ) {
setFocus();
Contact new_personal = abEditor->entry();
QString fname = addressbookPersonalVCardName();
Contact::writeVCard( fname, new_personal );
abView()->init(new_personal);
abView()->sync();
}
abEditor->setCaption( tr("Edit Address") );
}
void AddressbookWindow::slotPersonalView()
{
if (!actionPersonal->isOn()) {
// we just turned it off
setCaption( tr("Contacts") );
actionNew->setEnabled(TRUE);
actionTrash->setEnabled(TRUE);
+#ifndef MAKE_FOR_SHARP_ROM
actionFind->setEnabled(TRUE);
+#endif
slotUpdateToolbar(); // maybe some of the above could be moved there
showList();
return;
}
// XXX need to disable some QActions.
actionNew->setEnabled(FALSE);
actionTrash->setEnabled(FALSE);
+#ifndef MAKE_FOR_SHARP_ROM
actionFind->setEnabled(FALSE);
+#endif
actionMail->setEnabled(FALSE);
setCaption( tr("Contacts - My Personal Details") );
QString filename = addressbookPersonalVCardName();
Contact me;
if (QFile::exists(filename))
me = Contact::readVCard( filename )[0];
abView()->init( me );
abView()->sync();
abList->hide();
setCentralWidget( abView() );
mView->show();
mView->setFocus();
}
void AddressbookWindow::editEntry( EntryMode entryMode )
{
Contact entry;
if ( bAbEditFirstTime ) {
abEditor = new ContactEditor( entry, &orderedFields, &slOrderedFields,
this, "editor" );
bAbEditFirstTime = FALSE;
if ( entryMode == EditEntry )
abEditor->setEntry( abList->currentEntry() );
}
// other things may chane the caption.
abEditor->setCaption( tr("Edit Address") );
#if defined(Q_WS_QWS) || defined(_WS_QWS_)
abEditor->showMaximized();
#endif
// fix the foxus...
abEditor->setNameFocus();
if ( abEditor->exec() ) {
setFocus();
if ( entryMode == NewEntry ) {
Contact insertEntry = abEditor->entry();
insertEntry.assignUid();
abList->addEntry( insertEntry );
} else {
Contact replaceEntry = abEditor->entry();
if ( !replaceEntry.isValidUid() )
replaceEntry.assignUid();
abList->replaceCurrentEntry( replaceEntry );
}
}
populateCategories();
@@ -731,101 +741,107 @@ void AddressbookWindow::initFields()
for ( itVis = visibleFields.begin();
itVis != visibleFields.end() && itVl != allFields.end();
++itVis, ++itVl ) {
if ( *it == *itVis && itVl != allFields.end() ) {
orderedFields.append( *itVl );
}
}
}
} else {
QValueList<int>::ConstIterator it;
for ( it = allFields.begin(); it != allFields.end(); ++it )
orderedFields.append( *it );
slOrderedFields = visibleFields;
orderedFields.remove( Qtopia::AddressUid );
orderedFields.remove( Qtopia::Title );
orderedFields.remove( Qtopia::Groups );
orderedFields.remove( Qtopia::AddressCategory );
orderedFields.remove( Qtopia::FirstName );
orderedFields.remove( Qtopia::LastName );
orderedFields.remove( Qtopia::DefaultEmail );
orderedFields.remove( Qtopia::FileAs );
orderedFields.remove( Qtopia::Notes );
orderedFields.remove( Qtopia::Gender );
slOrderedFields.remove( tr("Name Title") );
slOrderedFields.remove( tr("First Name") );
slOrderedFields.remove( tr("Last Name") );
slOrderedFields.remove( tr("File As") );
slOrderedFields.remove( tr("Default Email") );
slOrderedFields.remove( tr("Notes") );
slOrderedFields.remove( tr("Gender") );
}
}
AbLabel *AddressbookWindow::abView()
{
if ( !mView ) {
mView = new AbLabel( this, "viewer" );
mView->init( Contact() );
connect( mView, SIGNAL( okPressed() ), this, SLOT( slotListView() ) );
}
return mView;
}
void AddressbookWindow::slotFind()
{
+#ifndef MAKE_FOR_SHARP_ROM
if ( centralWidget() == abView() )
showList();
+
FindDialog frmFind( "Contacts", this );
QObject::connect( &frmFind, SIGNAL(signalFindClicked(const QString &, bool, bool, int)), abList, SLOT(slotDoFind( const QString&,bool,bool,int)));
QObject::connect( abList, SIGNAL(signalNotFound()), &frmFind, SLOT(slotNotFound()) );
QObject::connect( abList, SIGNAL(signalWrapAround()), &frmFind, SLOT(slotWrapAround()) );
+
frmFind.exec();
+
if ( abList->numSelections() )
abList->clearSelection();
+
abList->clearFindRow();
+#endif
}
void AddressbookWindow::slotSetCategory( int c )
{
if ( c <= 0 )
return;
for ( unsigned int i = 1; i < catMenu->count(); i++ )
catMenu->setItemChecked( i, c == (int)i );
if ( c == 1 ) {
abList->setShowCategory( QString::null );
setCaption( tr("Contacts") + " - " + tr ( "All" ) );
} else if ( c == (int)catMenu->count() ) {
abList->setShowCategory( tr( "Unfiled" ) );
setCaption( tr("Contacts") + " - " + tr( "Unfiled" ) );
} else {
QString cat = abList->categories()[c - 2];
abList->setShowCategory( cat );
setCaption( tr("Contacts") + " - " + cat );
}
}
void AddressbookWindow::populateCategories()
{
catMenu->clear();
int id,
rememberId;
id = 1;
catMenu->insertItem( tr( "All" ), id++ );
QStringList categories = abList->categories();
categories.append( tr( "Unfiled" ) );
for ( QStringList::Iterator it = categories.begin();
it != categories.end(); ++it ) {
catMenu->insertItem( *it, id );
if ( *it == abList->showCategory() )
rememberId = id;
++id;
}
if ( abList->showCategory().isEmpty() )
slotSetCategory( 1 );
else
slotSetCategory( rememberId );
}