summaryrefslogtreecommitdiff
path: root/core/pim/addressbook/addressbook.cpp
authoreilers <eilers>2002-10-08 12:33:52 (UTC)
committer eilers <eilers>2002-10-08 12:33:52 (UTC)
commita194611bf645fe7e2e9e83733ababc587fd42f1d (patch) (side-by-side diff)
tree2c21a5576bce48dba2fe83f6c849c0d16025a848 /core/pim/addressbook/addressbook.cpp
parent333fec32d47ea32de9fb4c8cd378a519785a1ff8 (diff)
downloadopie-a194611bf645fe7e2e9e83733ababc587fd42f1d.zip
opie-a194611bf645fe7e2e9e83733ababc587fd42f1d.tar.gz
opie-a194611bf645fe7e2e9e83733ababc587fd42f1d.tar.bz2
Joined development branch: It uses the new PIM API
Some features in "View" added by Darwin Zins, but they are not finished..
Diffstat (limited to 'core/pim/addressbook/addressbook.cpp') (more/less context) (show whitespace changes)
-rw-r--r--core/pim/addressbook/addressbook.cpp191
1 files changed, 131 insertions, 60 deletions
diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp
index 3255269..cf2eddf 100644
--- a/core/pim/addressbook/addressbook.cpp
+++ b/core/pim/addressbook/addressbook.cpp
@@ -13,7 +13,7 @@
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
-** Contact info@trolltech.com if any conditions of this licensing are
+** OContact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
@@ -95,6 +95,8 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name,
bAbEditFirstTime(TRUE),
syncing(FALSE)
{
+ isLoading = true;
+
initFields();
setCaption( tr("Contacts") );
@@ -187,7 +189,6 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name,
connect( a, SIGNAL( activated() ), this, SLOT( importvCard() ) );
a->addTo( edit );
-
edit->insertSeparator();
a = new QAction( tr("My Personal Details"), QString::null, 0, 0, 0, TRUE );
@@ -207,7 +208,9 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name,
// journaling...
QString str = addressbookXMLFilename();
if ( str.isNull() ) {
- QMessageBox::warning( this, tr("Out of Space"),
+ 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!")
@@ -220,13 +223,10 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name,
abList = new AbTable( &orderedFields, listContainer, "table" );
vb->addWidget(abList);
- abList->setHScrollBarMode( QScrollView::AlwaysOff );
- connect( abList, SIGNAL( empty( bool ) ),
- this, SLOT( listIsEmpty( bool ) ) );
- connect( abList, SIGNAL( details() ),
- this, SLOT( slotListView() ) );
- connect( abList, SIGNAL(currentChanged(int,int)),
- this, SLOT(slotUpdateToolbar()) );
+ // abList->setHScrollBarMode( QScrollView::AlwaysOff );
+ connect( abList, SIGNAL( empty( bool ) ), this, SLOT( listIsEmpty( bool ) ) );
+ connect( abList, SIGNAL( details() ), this, SLOT( slotListView() ) );
+ connect( abList, SIGNAL(currentChanged(int,int)), this, SLOT(slotUpdateToolbar()) );
mView = 0;
@@ -245,7 +245,7 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name,
populateCategories();
mbList->insertItem( tr("View"), catMenu );
- setCentralWidget( listContainer );
+ // setCentralWidget( listContainer );
fontMenu = new QPopupMenu(this);
fontMenu->setCheckable( true );
@@ -263,6 +263,10 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name,
setCentralWidget(listContainer);
// qDebug("adressbook contrsuction: t=%d", t.elapsed() );
+
+ abList->setCurrentCell( 0, 0 );
+
+ isLoading = false;
}
@@ -282,7 +286,8 @@ void AddressbookWindow::slotSetFont( int size ) {
fontMenu->setItemChecked(2, false);
abList->setFont( QFont( defaultFont->family(), defaultFont->pointSize() - 2 ) );
currentFont = new QFont (abList->font());
- abList->resizeRows(currentFont->pixelSize() + 7);
+ // abList->resizeRows(currentFont->pixelSize() + 7);
+ abList->resizeRows();
break;
case 1:
fontMenu->setItemChecked(0, false);
@@ -290,7 +295,8 @@ void AddressbookWindow::slotSetFont( int size ) {
fontMenu->setItemChecked(2, false);
abList->setFont( *defaultFont );
currentFont = new QFont (abList->font());
- abList->resizeRows(currentFont->pixelSize() + 7);
+ // abList->resizeRows(currentFont->pixelSize() + 7);
+ abList->resizeRows();
break;
case 2:
fontMenu->setItemChecked(0, false);
@@ -298,7 +304,8 @@ void AddressbookWindow::slotSetFont( int size ) {
fontMenu->setItemChecked(2, true);
abList->setFont( QFont( defaultFont->family(), defaultFont->pointSize() + 2 ) );
currentFont = new QFont (abList->font());
- abList->resizeRows(currentFont->pixelSize() + 7);
+ //abList->resizeRows(currentFont->pixelSize() + 7);
+ abList->resizeRows();
break;
}
}
@@ -314,10 +321,11 @@ void AddressbookWindow::importvCard() {
void AddressbookWindow::setDocument( const QString &filename )
{
- if ( filename.find(".vcf") != int(filename.length()) - 4 ) return;
+ if ( filename.find(".vcf") != int(filename.length()) - 4 )
+ return;
- QValueList<Contact> cl = Contact::readVCard( filename );
- for( QValueList<Contact>::Iterator it = cl.begin(); it != cl.end(); ++it ) {
+ QValueList<OContact> cl = OContact::readVCard( filename );
+ for( QValueList<OContact>::Iterator it = cl.begin(); it != cl.end(); ++it ) {
// QString msg = tr("You received a vCard for\n%1.\nDo You want to add it to your\naddressbook?")
// .arg( (*it).fullName() );
// if ( QMessageBox::information( this, tr("received contact"), msg, QMessageBox::Ok, QMessageBox::Cancel ) ==
@@ -347,17 +355,30 @@ AddressbookWindow::~AddressbookWindow()
void AddressbookWindow::slotUpdateToolbar()
{
- Contact ce = abList->currentEntry();
+ OContact ce = abList->currentEntry();
actionMail->setEnabled( !ce.defaultEmail().isEmpty() );
}
void AddressbookWindow::showList()
{
- if ( mView ) mView->hide();
+ bool visiblemView;
+
+ visiblemView = false;
+ if ( mView ) {
+ mView->hide();
+ visiblemView = true;
+ }
setCentralWidget( listContainer );
listContainer->show();
// update our focues... (or use a stack widget!);
abList->setFocus();
+
+ // This makes sure we are scrolled all the way to the left
+ abList->setContentsPos( 0, abList->contentsY() );
+
+ //if ( visiblemView && abList->showBook() == "Cards" )
+ // abList->setShowCategory( abList->showBook(), abList->showCategory() );
+
}
void AddressbookWindow::showView()
@@ -372,14 +393,14 @@ void AddressbookWindow::showView()
void AddressbookWindow::slotListNew()
{
- Contact cnt;
+ OContact cnt;
if( !syncing ) {
if ( abEditor )
abEditor->setEntry( cnt );
abView()->init( cnt );
editEntry( NewEntry );
} else {
- QMessageBox::warning(this, tr("Contacts"),
+ QMessageBox::warning(this, tr("OContacts"),
tr("Can not edit data, currently syncing"));
}
}
@@ -394,7 +415,7 @@ void AddressbookWindow::slotListView()
void AddressbookWindow::slotListDelete()
{
if(!syncing) {
- Contact tmpEntry = abList->currentEntry();
+ OContact tmpEntry = abList->currentEntry();
// get a name, do the best we can...
QString strName = tmpEntry.fullName();
@@ -441,32 +462,29 @@ void AddressbookWindow::slotViewEdit()
void AddressbookWindow::writeMail()
{
- Contact c = abList->currentEntry();
+ OContact c = abList->currentEntry();
QString name = c.fileAs();
QString email = c.defaultEmail();
QCopEnvelope e("QPE/Application/qtmail", "writeMail(QString,QString)");
e << name << email;
}
-
-
-
static const char * beamfile = "/tmp/obex/contact.vcf";
void AddressbookWindow::slotBeam()
{
QString filename;
- Contact c;
+ OContact c;
if ( actionPersonal->isOn() ) {
filename = addressbookPersonalVCardName();
if (!QFile::exists(filename))
return; // can't beam a non-existent file
- c = Contact::readVCard( filename )[0];
+ c = OContact::readVCard( filename )[0];
} else {
unlink( beamfile ); // delete if exists
c = abList->currentEntry();
mkdir("/tmp/obex/", 0755);
- Contact::writeVCard( beamfile, c );
+ OContact::writeVCard( beamfile, c );
filename = beamfile;
}
Ir *ir = new Ir( this );
@@ -522,7 +540,7 @@ void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data)
QString name, email;
stream >> name >> email;
- Contact cnt;
+ OContact cnt;
QString fn, mn, ln;
parseName( name, &fn, &mn, &ln );
// qDebug( " %s - %s - %s", fn.latin1(), mn.latin1(), ln.latin1() );
@@ -581,9 +599,9 @@ void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data)
void AddressbookWindow::editPersonal()
{
QString filename = addressbookPersonalVCardName();
- Contact me;
+ OContact me;
if (QFile::exists(filename))
- me = Contact::readVCard( filename )[0];
+ me = OContact::readVCard( filename )[0];
if (bAbEditFirstTime) {
abEditor = new ContactEditor( me, &orderedFields, &slOrderedFields,
this, "editor" );
@@ -599,9 +617,9 @@ void AddressbookWindow::editPersonal()
abEditor->setNameFocus();
if ( abEditor->exec() ) {
setFocus();
- Contact new_personal = abEditor->entry();
+ OContact new_personal = abEditor->entry();
QString fname = addressbookPersonalVCardName();
- Contact::writeVCard( fname, new_personal );
+ OContact::writeVCard( fname, new_personal );
abView()->init(new_personal);
abView()->sync();
}
@@ -633,9 +651,9 @@ void AddressbookWindow::slotPersonalView()
setCaption( tr("Contacts - My Personal Details") );
QString filename = addressbookPersonalVCardName();
- Contact me;
+ OContact me;
if (QFile::exists(filename))
- me = Contact::readVCard( filename )[0];
+ me = OContact::readVCard( filename )[0];
abView()->init( me );
abView()->sync();
@@ -647,7 +665,7 @@ void AddressbookWindow::slotPersonalView()
void AddressbookWindow::editEntry( EntryMode entryMode )
{
- Contact entry;
+ OContact entry;
if ( bAbEditFirstTime ) {
abEditor = new ContactEditor( entry, &orderedFields, &slOrderedFields,
this, "editor" );
@@ -666,11 +684,11 @@ void AddressbookWindow::editEntry( EntryMode entryMode )
if ( abEditor->exec() ) {
setFocus();
if ( entryMode == NewEntry ) {
- Contact insertEntry = abEditor->entry();
+ OContact insertEntry = abEditor->entry();
insertEntry.assignUid();
abList->addEntry( insertEntry );
} else {
- Contact replaceEntry = abEditor->entry();
+ OContact replaceEntry = abEditor->entry();
if ( !replaceEntry.isValidUid() )
replaceEntry.assignUid();
abList->replaceCurrentEntry( replaceEntry );
@@ -724,6 +742,7 @@ void AddressbookWindow::closeEvent( QCloseEvent *e )
return;
}
//################## shouldn't always save
+ // True, but the database handles this automatically ! (se)
if ( save() )
e->accept();
else
@@ -792,14 +811,13 @@ void AddressbookWindow::initFields()
// only thing that is important are the important categories. So,
// Call the contact functions that correspond to these old functions...
- QStringList xmlFields = Contact::fields();
- QStringList visibleFields = Contact::trfields();
+ QStringList xmlFields = OContact::fields();
+ QStringList visibleFields = OContact::trfields();
xmlFields.remove( "Title" );
visibleFields.remove( tr("Name Title") );
visibleFields.remove( tr("Notes") );
- int i,
- version;
+ int i, version;
Config cfg( "AddressBook" );
QString zn;
@@ -883,7 +901,7 @@ AbLabel *AddressbookWindow::abView()
{
if ( !mView ) {
mView = new AbLabel( this, "viewer" );
- mView->init( Contact() );
+ mView->init( OContact() );
connect( mView, SIGNAL( okPressed() ), this, SLOT( slotListView() ) );
}
return mView;
@@ -911,23 +929,53 @@ void AddressbookWindow::slotFind()
void AddressbookWindow::slotSetCategory( int c )
{
+
+ QString cat, book;
+
if ( c <= 0 )
return;
- for ( unsigned int i = 1; i < catMenu->count(); i++ )
+
+ // Checkmark Book Menu Item Selected
+ if ( c < 6 )
+ for ( unsigned int i = 1; i < 6; 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 );
+
+ // Checkmark Category Menu Item Selected
+ else
+ for ( unsigned int i = 6; i < catMenu->count(); i++ )
+ catMenu->setItemChecked( i, c == (int)i );
+
+ for ( unsigned int i = 1; i < catMenu->count(); i++ ) {
+ if (catMenu->isItemChecked( i )) {
+ if ( i == 1 ) // default List view
+ book = QString::null;
+ else if ( i == 2 )
+ book = "Phone";
+ else if ( i == 3 )
+ book = "Company";
+ else if ( i == 4 )
+ book = "Email";
+ else if ( i == 5 )
+ book = "Cards";
+ else if ( i == 6 ) // default All Categories
+ cat = QString::null;
+ else if ( i == (unsigned int)catMenu->count() ) // last menu option will be Unfiled
+ cat = "Unfiled";
+ else
+ cat = abList->categories()[i - 7];
}
}
+ abList->setShowCategory( book, cat );
+
+ if ( book.isEmpty() )
+ book = "List";
+ if ( cat.isEmpty() )
+ cat = "All";
+
+ setCaption( tr( "Contacts" ) + " - " + tr( book ) + " - " + tr( cat ) );
+}
+
void AddressbookWindow::slotSetLetter( char c ) {
abList->setShowByLetter( c );
@@ -938,10 +986,17 @@ void AddressbookWindow::populateCategories()
{
catMenu->clear();
- int id,
- rememberId;
+ int id, rememberId;
id = 1;
rememberId = 0;
+
+ catMenu->insertItem( tr( "List" ), id++ );
+ catMenu->insertItem( tr( "Phone Book" ), id++ );
+ catMenu->insertItem( tr( "Company Book" ), id++ );
+ catMenu->insertItem( tr( "Email Book" ), id++ );
+ catMenu->insertItem( tr( "Cards" ), id++ );
+ catMenu->insertSeparator();
+
catMenu->insertItem( tr( "All" ), id++ );
QStringList categories = abList->categories();
categories.append( tr( "Unfiled" ) );
@@ -952,8 +1007,24 @@ void AddressbookWindow::populateCategories()
rememberId = id;
++id;
}
- if ( abList->showCategory().isEmpty() )
- slotSetCategory( 1 );
- else
+
+ if ( abList->showBook().isEmpty() ) {
+ catMenu->setItemChecked( 1, true );
+ } else if ( abList->showBook() == "Phone" ) {
+ catMenu->setItemChecked( 2, true );
+ } else if ( abList->showBook() == "Company" ) {
+ catMenu->setItemChecked( 3, true );
+ } else if ( abList->showBook() == "Email" ) {
+ catMenu->setItemChecked( 4, true );
+ } else if ( abList->showBook() == "Cards" ) {
+ catMenu->setItemChecked( 5, true );
+ }
+
+ if ( abList->showCategory().isEmpty() ) {
+ slotSetCategory( 6 );
+ }
+ else {
slotSetCategory( rememberId );
}
+}
+