-rw-r--r-- | core/pim/addressbook/abtable.cpp | 86 | ||||
-rw-r--r-- | core/pim/addressbook/addressbook.cpp | 27 | ||||
-rw-r--r-- | core/pim/addressbook/addressbook.h | 1 | ||||
-rw-r--r-- | core/pim/addressbook/picker.cpp | 7 |
4 files changed, 98 insertions, 23 deletions
diff --git a/core/pim/addressbook/abtable.cpp b/core/pim/addressbook/abtable.cpp index 759cb48..124ff6c 100644 --- a/core/pim/addressbook/abtable.cpp +++ b/core/pim/addressbook/abtable.cpp @@ -992,49 +992,48 @@ QStringList AbTable::choiceSelection(int /*index*/) const QStringList r; /* ###### QString selname = choicenames.at(index); for (each row) { Contact *c = contactForRow(row); if ( text(row,2) == selname ) { r.append(c->email); } } */ return r; } void AbTable::setShowCategory( const QString &c ) { showCat = c; updateVisible(); } void AbTable::setShowByLetter( char c ) { showChar = tolower(c); - qDebug( "AbTable::setShowByLetter %c", showChar); updateVisible(); } QString AbTable::showCategory() const { return showCat; } QStringList AbTable::categories() { mCat.load( categoryFileName() ); QStringList categoryList = mCat.labels( "Contacts" ); return categoryList; } void AbTable::updateVisible() { int visible, totalRows, id, totalCats, it, row; @@ -1056,54 +1055,131 @@ void AbTable::updateVisible() cats = cnt->categories(); fileAsName = cnt->fileAs(); hide = false; if ( !showCat.isEmpty() ) { if ( showCat == tr( "Unfiled" ) ) { if ( cats.count() > 0 ) hide = true; } else { // do some comparing if ( !hide ) { hide = true; totalCats = int(cats.count()); for ( it = 0; it < totalCats; it++ ) { if ( cats[it] == id ) { hide = false; break; } } } } } if ( showChar != '\0' ) { tmpStr = fileAsName.left(1); tmpStr = tmpStr.lower(); - qDebug( "updateVisible "); - qDebug( tmpStr ); - qDebug( "updateVisible2 %c", showChar ); - if ( tmpStr != QString(QChar(showChar)) ) { + if ( tmpStr != QString(QChar(showChar)) && showChar != '#' ) { hide = true; } + if ( showChar == '#' ) { + if (tmpStr == "a") + hide = true; + + if (tmpStr == "b") + hide = true; + + if (tmpStr == "c") + hide = true; + + if (tmpStr == "d") + hide = true; + + if (tmpStr == "e") + hide = true; + + if (tmpStr == "f") + hide = true; + + if (tmpStr == "g") + hide = true; + + if (tmpStr == "h") + hide = true; + + if (tmpStr == "i") + hide = true; + + if (tmpStr == "j") + hide = true; + + if (tmpStr == "k") + hide = true; + + if (tmpStr == "l") + hide = true; + + if (tmpStr == "m") + hide = true; + + if (tmpStr == "n") + hide = true; + + if (tmpStr == "o") + hide = true; + + if (tmpStr == "p") + hide = true; + + if (tmpStr == "q") + hide = true; + + if (tmpStr == "r") + hide = true; + + if (tmpStr == "s") + hide = true; + + if (tmpStr == "t") + hide = true; + + if (tmpStr == "u") + hide = true; + + if (tmpStr == "v") + hide = true; + + if (tmpStr == "w") + hide = true; + + if (tmpStr == "x") + hide = true; + + if (tmpStr == "y") + hide = true; + + if (tmpStr == "z") + hide = true; + } + } if ( hide ) { if ( currentRow() == row ) setCurrentCell( -1, 0 ); if ( rowHeight(row) > 0 ) hideRow( row ); } else { if ( rowHeight(row) == 0 ) { showRow( row ); adjustRow( row ); } visible++; } } if ( !visible ) setCurrentCell( -1, 0 ); setPaintingEnabled( TRUE ); } void AbTable::setPaintingEnabled( bool e ) { if ( e != enablePainting ) { diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp index e502cf6..beb953a 100644 --- a/core/pim/addressbook/addressbook.cpp +++ b/core/pim/addressbook/addressbook.cpp @@ -78,49 +78,48 @@ static QString addressbookXMLFilename() } static QString addressbookPersonalVCardName() { QString filename = Global::applicationFileName("addressbook", "businesscard.vcf"); return filename; } 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 ); - QBoxLayout *vb = new QVBoxLayout( this, 0, 0 ); // 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; @@ -169,91 +168,95 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name, 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" ); - vb->insertWidget(0,abList); + listContainer = new QWidget( this ); + + QVBoxLayout *vb = new QVBoxLayout( listContainer ); + + 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()) ); mView = 0; abList->load( addressbookXMLFilename() ); if ( QFile::exists(addressbookOldXMLFilename()) ) { abList->load( addressbookOldXMLFilename() ); QFile::remove(addressbookOldXMLFilename()); } - pLabel = new LetterPicker( abList ); + pLabel = new LetterPicker( listContainer ); connect(pLabel, SIGNAL(letterClicked(char)), this, SLOT(slotSetLetter(char))); - vb->insertWidget(1,pLabel); + vb->addWidget(pLabel); catMenu = new QPopupMenu( this ); catMenu->setCheckable( TRUE ); connect( catMenu, SIGNAL(activated(int)), this, SLOT(slotSetCategory(int)) ); populateCategories(); mbList->insertItem( tr("View"), catMenu ); - setCentralWidget( abList ); + setCentralWidget( listContainer ); fontMenu = new QPopupMenu(this); fontMenu->setCheckable( true ); connect( fontMenu, SIGNAL(activated(int)), this, SLOT(slotSetFont(int))); fontMenu->insertItem(tr( "Small" ), 0); fontMenu->insertItem(tr( "Normal" ), 1); fontMenu->insertItem(tr( "Large" ), 2); defaultFont = new QFont( abList->font() ); slotSetFont(startFontSize); mbList->insertItem( tr("Font"), fontMenu); - setCentralWidget(abList); + setCentralWidget(listContainer); // qDebug("adressbook contrsuction: t=%d", t.elapsed() ); } void AddressbookWindow::slotSetFont( int size ) { if (size > 2 || size < 0) size = 1; startFontSize = size; QFont *currentFont; switch (size) { case 0: fontMenu->setItemChecked(0, true); fontMenu->setItemChecked(1, false); fontMenu->setItemChecked(2, false); abList->setFont( QFont( defaultFont->family(), defaultFont->pointSize() - 2 ) ); currentFont = new QFont (abList->font()); abList->resizeRows(currentFont->pixelSize() + 7); break; case 1: fontMenu->setItemChecked(0, false); fontMenu->setItemChecked(1, true); @@ -273,80 +276,80 @@ void AddressbookWindow::slotSetFont( int size ) { } } void AddressbookWindow::setDocument( const QString &filename ) { 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 ) { // 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 ) == // QMessageBox::Ok ) { abList->addEntry( *it ); // } } } void AddressbookWindow::resizeEvent( QResizeEvent *e ) { QMainWindow::resizeEvent( e ); - if ( centralWidget() == abList ) + if ( centralWidget() == listContainer ) showList(); else if ( centralWidget() == mView ) showView(); } AddressbookWindow::~AddressbookWindow() { Config cfg("AddressBook"); cfg.setGroup("Font"); cfg.writeEntry("fontSize", startFontSize); } void AddressbookWindow::slotUpdateToolbar() { Contact ce = abList->currentEntry(); actionMail->setEnabled( !ce.defaultEmail().isEmpty() ); } void AddressbookWindow::showList() { if ( mView ) mView->hide(); - setCentralWidget( abList ); - abList->show(); + setCentralWidget( listContainer ); + listContainer->show(); // update our focues... (or use a stack widget!); abList->setFocus(); } void AddressbookWindow::showView() { if ( abList->numRows() > 0 ) { - abList->hide(); + listContainer->hide(); setCentralWidget( abView() ); mView->show(); mView->setFocus(); } } void AddressbookWindow::slotListNew() { Contact cnt; if( !syncing ) { if ( abEditor ) abEditor->setEntry( cnt ); abView()->init( cnt ); editEntry( NewEntry ); } else { QMessageBox::warning(this, tr("Contacts"), tr("Can not edit data, currently syncing")); } } void AddressbookWindow::slotListView() { abView()->init( abList->currentEntry() ); mView->sync(); @@ -580,49 +583,49 @@ void AddressbookWindow::slotPersonalView() #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(); + listContainer->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() ) { diff --git a/core/pim/addressbook/addressbook.h b/core/pim/addressbook/addressbook.h index 31c4660..8e8c883 100644 --- a/core/pim/addressbook/addressbook.h +++ b/core/pim/addressbook/addressbook.h @@ -68,37 +68,38 @@ private slots: void writeMail(); void slotBeam(); void beamDone( Ir * ); void slotFind(); void slotSetCategory( int ); void slotSetLetter( char ); void slotUpdateToolbar(); void slotSetFont(int); private: void initFields(); // inititialize our fields... AbLabel *abView(); void populateCategories(); QPopupMenu *catMenu, *fontMenu; QPEToolBar *listTools; QToolButton *deleteButton; QValueList<int> allFields, orderedFields; QStringList slOrderedFields; enum Panes { paneList=0, paneView, paneEdit }; ContactEditor *abEditor; AbLabel *mView; LetterPicker *pLabel; AbTable *abList; + QWidget *listContainer; QAction *actionNew, *actionEdit, *actionTrash, *actionFind, *actionBeam, *actionPersonal, *actionMail; bool bAbEditFirstTime; int viewMargin; bool syncing; QFont *defaultFont; int startFontSize; }; #endif diff --git a/core/pim/addressbook/picker.cpp b/core/pim/addressbook/picker.cpp index 06dcc7d..a165451 100644 --- a/core/pim/addressbook/picker.cpp +++ b/core/pim/addressbook/picker.cpp @@ -58,100 +58,96 @@ void PickerLabel::setLetters( char ch1, char ch2, char ch3 ) } void PickerLabel::clearLetter() { QString tmpStr; tmpStr = "<qt>"; tmpStr += letter1; tmpStr += letter2; tmpStr += letter3; tmpStr += "</qt>"; setText(tmpStr); currentLetter = 0; } void PickerLabel::mouseReleaseEvent( QMouseEvent *e ) { QString tmpStr; - if (lastLetter != letter1 && lastLetter != letter2 && lastLetter != letter3) + if (lastLetter != letter1 && lastLetter != letter2 && lastLetter != letter3 && lastLetter != '\0') QTimer::singleShot( 0, this, SLOT(emitClearSignal()) ); - qDebug( "a" ); switch (currentLetter) { case 0: tmpStr = "<qt><font color=\"#7F0000\">"; tmpStr += letter1; tmpStr += "</font>"; tmpStr += letter2; tmpStr += letter3; tmpStr += "</qt>"; setText(tmpStr); currentLetter++; lastLetter = letter1; emit selectedLetter( letter1 ); - qDebug( "PickerLabel::mouseReleaseEvent %c", letter1 ); break; case 1: tmpStr = "<qt>"; tmpStr += letter1; tmpStr += "<font color=\"#7F0000\">"; tmpStr += letter2; tmpStr += "</font>"; tmpStr += letter3; tmpStr += "</qt>"; setText(tmpStr); currentLetter++; lastLetter = letter2; emit selectedLetter( letter2 ); - qDebug( "PickerLabel::mouseReleaseEvent %c", letter2 ); break; case 2: tmpStr = "<qt>"; tmpStr += letter1; tmpStr += letter2; tmpStr += "<font color=\"#7F0000\">"; tmpStr += letter3; tmpStr += "</font></qt>"; setText(tmpStr); currentLetter++; lastLetter = letter3; emit selectedLetter( letter3 ); - qDebug( "PickerLabel::mouseReleaseEvent %c", letter3 ); break; default: clearLetter(); lastLetter = '\0'; emit selectedLetter( '\0' ); } } void PickerLabel::emitClearSignal() { emit clearAll(); } LetterPicker::LetterPicker( QWidget *parent, const char *name ) : QFrame( parent, name ) { QHBoxLayout *l = new QHBoxLayout(this); lblABC = new PickerLabel( this ); l->addWidget( lblABC ); lblDEF = new PickerLabel( this ); @@ -207,28 +203,27 @@ LetterPicker::LetterPicker( QWidget *parent, const char *name ) connect(lblVWX, SIGNAL(clearAll()), this, SLOT(clear())); connect(lblYZ, SIGNAL(clearAll()), this, SLOT(clear())); } LetterPicker::~LetterPicker() { } void LetterPicker::clear() { lblABC->clearLetter(); lblDEF->clearLetter(); lblGHI->clearLetter(); lblJKL->clearLetter(); lblMNO->clearLetter(); lblPQR->clearLetter(); lblSTU->clearLetter(); lblVWX->clearLetter(); lblYZ->clearLetter(); } void LetterPicker::newLetter( char letter ) { - qDebug( "LetterPicker::newLetter %c", letter ); emit letterClicked( letter ); } |