summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/abview.cpp27
-rw-r--r--core/pim/addressbook/addressbook.cpp7
-rw-r--r--core/pim/addressbook/addressbook.h2
-rw-r--r--core/pim/addressbook/version.h2
4 files changed, 28 insertions, 10 deletions
diff --git a/core/pim/addressbook/abview.cpp b/core/pim/addressbook/abview.cpp
index 7abb45c..6be19f8 100644
--- a/core/pim/addressbook/abview.cpp
+++ b/core/pim/addressbook/abview.cpp
@@ -64,273 +64,284 @@ AbView::AbView ( QWidget* parent, const QValueList<int>& ordered ):
vb->addWidget( m_viewStack );
// Creat TableView
QVBox* tableBox = new QVBox( m_viewStack );
m_abTable = new AbTable( m_orderedFields, tableBox, "table" );
m_abTable->setCurrentCell( 0, 0 );
m_abTable->setFocus();
// Add TableView to WidgetStack and raise it
m_viewStack -> addWidget( tableBox , TableView );
// Create CardView and add it to WidgetStack
QVBox* cardBox = new QVBox( m_viewStack );
m_ablabel = new AbLabel( cardBox, "CardView");
m_viewStack -> addWidget( cardBox , CardView );
// Connect views to me
connect ( m_abTable, SIGNAL( signalSwitch(void) ),
this, SLOT( slotSwitch(void) ) );
connect ( m_ablabel, SIGNAL( signalOkPressed(void) ),
this, SLOT( slotSwitch(void) ) );
load();
}
AbView::~AbView()
{
m_contactdb -> save();
delete m_contactdb;
if ( m_storedDB ){
m_storedDB -> save();
delete m_storedDB;
}
}
void AbView::setView( Views view )
{
odebug << "AbView::setView( Views view )" << oendl;
m_curr_View = view;
load();
}
void AbView::addEntry( const Opie::OPimContact &newContact )
{
odebug << "AbView::AddContact" << oendl;
m_contactdb->add ( newContact );
load();
}
void AbView::removeEntry( const int UID )
{
odebug << "AbView;:RemoveContact" << oendl;
m_contactdb->remove( UID );
load();
}
void AbView::replaceEntry( const Opie::OPimContact &contact )
{
odebug << "AbView::ReplaceContact" << oendl;
m_contactdb->replace( contact );
load();
}
Opie::OPimContact AbView::currentEntry()
{
Opie::OPimContact currentContact;
switch ( (int) m_curr_View ) {
case TableView:
currentContact = m_abTable -> currentEntry();
break;
case CardView:
currentContact = m_ablabel -> currentEntry();
break;
}
m_curr_Contact = currentContact.uid();
return currentContact;
}
bool AbView::save()
{
// odebug << "AbView::Save data" << oendl;
return m_contactdb->save();
}
void AbView::load()
{
odebug << "AbView::Load data" << oendl;
// Letter Search is stopped at this place
emit signalClearLetterPicker();
- if ( m_inPersonal )
- // VCard Backend does not sort..
- m_list = m_contactdb->allRecords();
- else{
- m_list = m_contactdb->sorted( true, 0, 0, 0 );
- if ( m_curr_category != -1 )
- clearForCategory();
+ if ( m_curr_category == 0 ) {
+ // Show unfiled
+ m_list = m_contactdb->sorted( true, Opie::OPimContactAccess::SortFileAsName,
+ Opie::OPimContactAccess::DoNotShowWithCategory, 0 );
+ } else if ( m_curr_category != -1 ){
+ // Just show selected category
+ m_list = m_contactdb->sorted( true, Opie::OPimContactAccess::SortFileAsName,
+ Opie::OPimBase::FilterCategory, m_curr_category );
+ } else {
+ // Show all categories
+ m_list = m_contactdb->sorted( true, Opie::OPimContactAccess::SortFileAsName,
+ Opie::OPimBase::FilterOff, 0 );
}
+
+// if ( m_curr_category != -1 )
+// clearForCategory();
odebug << "Number of contacts: " << m_list.count() << oendl;
updateView( true );
}
void AbView::reload()
{
odebug << "AbView::::reload()" << oendl;
m_contactdb->reload();
load();
}
void AbView::clear()
{
// :SX
}
void AbView::setShowByCategory( const QString& cat )
{
odebug << "AbView::setShowCategory( const QString& cat )" << oendl;
int intCat = 0;
// All (cat == NULL) will be stored as -1
if ( cat.isNull() )
intCat = -1;
else
intCat = mCat.id("Contacts", cat );
// Just do anything if we really change the category
if ( intCat != m_curr_category ){
// odebug << "Categories: Selected " << cat << ".. Number: "
// << m_curr_category << oendl;
m_curr_category = intCat;
emit signalClearLetterPicker();
load();
}
}
void AbView::setShowToView( Views view )
{
odebug << "void AbView::setShowToView( View " << view << " )" << oendl;
if ( m_curr_View != view ){
odebug << "Change the View (Category is: " << m_curr_category << ")" << oendl;
m_prev_View = m_curr_View;
m_curr_View = view;
updateView();
}
}
void AbView::setShowByLetter( char c, AbConfig::LPSearchMode mode )
{
odebug << "void AbView::setShowByLetter( " << c << ", " << mode << " )" << oendl;
assert( mode < AbConfig::LASTELEMENT );
Opie::OPimContact query;
if ( c == 0 ){
load();
return;
}else{
// If the current Backend is unable to solve the query, we will
// ignore the request ..
- if ( ! m_contactdb->hasQuerySettings( Opie::OPimContactAccess::WildCards | Opie::OPimContactAccess::IgnoreCase ) ){
+ if ( ! m_contactdb->hasQuerySettings( Opie::OPimContactAccess::WildCards |
+ Opie::OPimContactAccess::IgnoreCase ) ){
+ owarn << "Tried to access queryByExample which is not supported by the current backend!!" << oendl;
+ owarn << "I have to ignore this access!" << oendl;
return;
}
switch( mode ){
case AbConfig::LastName:
query.setLastName( QString("%1*").arg(c) );
break;
case AbConfig::FileAs:
query.setFileAs( QString("%1*").arg(c) );
break;
default:
owarn << "Unknown Searchmode for AbView::setShowByLetter ! -> " << mode << oendl
<< "I will ignore it.." << oendl;
return;
}
m_list = m_contactdb->queryByExample( query, Opie::OPimContactAccess::WildCards | Opie::OPimContactAccess::IgnoreCase );
if ( m_curr_category != -1 )
clearForCategory();
m_curr_Contact = 0;
}
updateView( true );
}
void AbView::setListOrder( const QValueList<int>& ordered )
{
m_orderedFields = ordered;
if ( m_abTable ){
m_abTable->setOrderedList( ordered );
m_abTable->refresh();
}
updateView();
}
QString AbView::showCategory() const
{
return mCat.label( "Contacts", m_curr_category );
}
void AbView::showPersonal( bool personal )
{
odebug << "void AbView::showPersonal( " << personal << " )" << oendl;
if ( personal ){
if ( m_inPersonal )
return;
// Now switch to vCard Backend and load data.
// The current default backend will be stored
// to avoid unneeded load/stores.
m_storedDB = m_contactdb;
Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null,
addressbookPersonalVCardName() );
m_contactdb = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true );
m_inPersonal = true;
m_curr_View = CardView;
}else{
if ( !m_inPersonal )
return;
// Remove vCard Backend and restore default
m_contactdb->save();
delete m_contactdb;
m_contactdb = m_storedDB;
m_storedDB = 0l;
m_curr_View = TableView;
m_inPersonal = false;
}
load();
}
void AbView::setCurrentUid( int uid ){
m_curr_Contact = uid;
updateView( true ); //true: Don't modificate the UID !
}
QStringList AbView::categories()
{
mCat.load( categoryFileName() );
QStringList categoryList = mCat.labels( "Contacts" );
return categoryList;
}
// BEGIN: Slots
void AbView::slotDoFind( const QString &str, bool caseSensitive, bool useRegExp,
bool , QString cat )
diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp
index 835038a..0654e1a 100644
--- a/core/pim/addressbook/addressbook.cpp
+++ b/core/pim/addressbook/addressbook.cpp
@@ -259,192 +259,199 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name,
isLoading = false;
}
void AddressbookWindow::slotConfig()
{
ConfigDlg* dlg = new ConfigDlg( this, "Config" );
dlg -> setConfig( m_config );
if ( QPEApplication::execDialog( dlg ) ) {
odebug << "Config Dialog accepted!" << oendl;
m_config = dlg -> getConfig();
if ( m_curFontSize != m_config.fontSize() ){
odebug << "Font was changed!" << oendl;
m_curFontSize = m_config.fontSize();
emit slotSetFont( m_curFontSize );
}
m_abView -> setListOrder( m_config.orderList() );
}
delete dlg;
}
void AddressbookWindow::slotSetFont( int size )
{
odebug << "void AddressbookWindow::slotSetFont( " << size << " )" << oendl;
if (size > 2 || size < 0)
size = 1;
m_config.setFontSize( size );
QFont *currentFont;
switch (size) {
case 0:
m_abView->setFont( QFont( defaultFont->family(), defaultFont->pointSize() - 2 ) );
currentFont = new QFont (m_abView->font());
// abList->resizeRows(currentFont->pixelSize() + 7); :SX
// abList->resizeRows();
break;
case 1:
m_abView->setFont( *defaultFont );
currentFont = new QFont (m_abView->font());
// // abList->resizeRows(currentFont->pixelSize() + 7);
// abList->resizeRows();
break;
case 2:
m_abView->setFont( QFont( defaultFont->family(), defaultFont->pointSize() + 2 ) );
currentFont = new QFont (m_abView->font());
// //abList->resizeRows(currentFont->pixelSize() + 7);
// abList->resizeRows();
break;
}
}
void AddressbookWindow::importvCard() {
QString str = Opie::Ui::OFileDialog::getOpenFileName( 1,"/");//,"", "*", this );
if(!str.isEmpty() ){
setDocument((const QString&) str );
}
}
void AddressbookWindow::exportvCard()
{
odebug << "void AddressbookWindow::exportvCard()" << oendl;
QString filename = Opie::Ui::OFileDialog::getSaveFileName( 1,"/home/"); //,"", "*", this );
if( !filename.isEmpty() && ( filename[filename.length()-1] != '/' ) ){
odebug << " Save to file " << filename << ", (" << filename.length()-1 << ")" << oendl;
Opie::OPimContact curCont = m_abView->currentEntry();
if ( !curCont.isEmpty() ){
Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null,
filename );
Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook_exp", QString::null , vcard_backend, true );
if ( access ){
access->add( curCont );
access->save();
}
delete access;
}else
QMessageBox::critical( 0, "Export VCard",
QString( tr( "You have to select a contact !") ) );
}else
QMessageBox::critical( 0, "Export VCard",
QString( tr( "You have to set a filename !") ) );
}
void AddressbookWindow::setDocument( const QString &filename )
{
odebug << "void AddressbookWindow::setDocument( " << filename << " )" << oendl;
+ // Switch to default backend. This should avoid to import into
+ // the personal database accidently.
+ if ( actionPersonal->isOn() ){
+ actionPersonal->setOn( false );
+ slotPersonalView();
+ }
+
if ( filename.find(".vcf") != int(filename.length()) - 4 ){
switch( QMessageBox::information( this, tr ( "Right file type ?" ),
tr( "The selected file \n does not end with \".vcf\".\n Do you really want to open it?" ),
tr( "&Yes" ), tr( "&No" ), QString::null,
0, // Enter == button 0
2 ) ) { // Escape == button 2
case 0:
odebug << "YES clicked" << oendl;
break;
case 1:
odebug << "NO clicked" << oendl;
return;
break;
}
}
Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null,
filename );
Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true );
Opie::OPimContactAccess::List allList = access->allRecords();
odebug << "Found number of contacts in File: " << allList.count() << oendl;
if ( !allList.count() ) {
QMessageBox::information( this, "Import VCard",
"It was impossible to import\nthe VCard.\n"
"The VCard may be corrupted!" );
}
bool doAsk = true;
Opie::OPimContactAccess::List::Iterator it;
for ( it = allList.begin(); it != allList.end(); ++it ){
odebug << "Adding Contact from: " << (*it).fullName() << oendl;
if ( doAsk ){
switch( QMessageBox::information( this, tr ( "Add Contact?" ),
tr( "Do you really want add contact for \n%1?" )
.arg( (*it).fullName().latin1() ),
tr( "&Yes" ), tr( "&No" ), tr( "&All Yes"),
0, // Enter == button 0
2 ) ) { // Escape == button 2
case 0:
odebug << "YES clicked" << oendl;
m_abView->addEntry( *it );
break;
case 1:
odebug << "NO clicked" << oendl;
break;
case 2:
odebug << "YesAll clicked" << oendl;
doAsk = false;
break;
}
}else
m_abView->addEntry( *it );
}
delete access;
}
void AddressbookWindow::resizeEvent( QResizeEvent *e )
{
QMainWindow::resizeEvent( e );
}
AddressbookWindow::~AddressbookWindow()
{
ToolBarDock dock;
int dummy;
bool bDummy;
getLocation ( listTools, dock, dummy, bDummy, dummy );
m_config.setToolBarDock( dock );
m_config.save();
}
void AddressbookWindow::slotUpdateToolbar()
{
Opie::OPimContact ce = m_abView->currentEntry();
actionMail->setEnabled( !ce.defaultEmail().isEmpty() );
}
void AddressbookWindow::slotListNew()
{
Opie::OPimContact cnt;
if( !syncing ) {
editEntry( NewEntry );
} else {
QMessageBox::warning(this, tr("Contacts"),
tr("Can not edit data, currently syncing"));
}
}
diff --git a/core/pim/addressbook/addressbook.h b/core/pim/addressbook/addressbook.h
index 9217e95..7cc61bf 100644
--- a/core/pim/addressbook/addressbook.h
+++ b/core/pim/addressbook/addressbook.h
@@ -1,137 +1,137 @@
/**********************************************************************
** 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.
**
**********************************************************************/
#ifndef Addressbook_H
#define Addressbook_H
// Remove this for OPIE releae 1.0 !
// #define __DEBUG_RELEASE
#include <qmainwindow.h>
#include <qvaluelist.h>
#include <qstringlist.h>
#include <qlineedit.h>
#include "ofloatbar.h"
#include "abview.h"
#include "abconfig.h"
class ContactEditor;
class AbLabel;
class AbTable;
class QToolBar;
class QPopupMenu;
class QToolButton;
class QDialog;
class Ir;
class QAction;
class LetterPicker;
class AddressbookWindow: public QMainWindow
{
Q_OBJECT
public:
enum EntryMode { NewEntry=0, EditEntry };
static QString appName() { return QString::fromLatin1("addressbook"); }
AddressbookWindow( QWidget *parent = 0, const char *name = 0, WFlags f = 0 );
~AddressbookWindow();
protected:
void resizeEvent( QResizeEvent * e );
void editPersonal();
void editEntry( EntryMode );
void closeEvent( QCloseEvent *e );
bool save();
public slots:
void flush();
void reload();
void appMessage(const QCString &, const QByteArray &);
- void setDocument( const QString & );
+ void setDocument( const QString & ); // Called by obex receiver and internally!
#ifdef __DEBUG_RELEASE
// void slotSave();
#endif
private slots:
void importvCard();
void exportvCard();
void slotListNew();
/* void slotListView(); */
void slotListDelete();
void slotViewBack();
void slotViewEdit();
void slotPersonalView();
void listIsEmpty( bool );
/* void slotSettings(); */
void writeMail();
void slotBeam();
void beamDone( Ir * );
void slotSetCategory( int );
void slotSetLetter( char );
void slotUpdateToolbar();
void slotSetFont(int);
void slotFindOpen();
void slotFindClose();
void slotFind();
void slotNotFound();
void slotWrapAround();
void slotViewSwitched( int );
void slotListView();
void slotCardView();
void slotConfig();
private:
void populateCategories();
QPopupMenu *catMenu;
QToolBar *listTools;
QToolButton *deleteButton;
enum Panes { paneList=0, paneView, paneEdit };
ContactEditor *abEditor;
LetterPicker *pLabel;
AbView* m_abView;
QWidget *listContainer;
// Searching stuff
OFloatBar* searchBar;
QLineEdit* searchEdit;
QAction *actionNew, *actionEdit, *actionTrash, *actionFind, *actionBeam, *actionPersonal, *actionMail;
int viewMargin;
bool syncing;
QFont *defaultFont;
int m_curFontSize;
bool isLoading;
AbConfig m_config;
QAction* m_tableViewButton;
QAction* m_cardViewButton;
int active_view;
};
#endif
diff --git a/core/pim/addressbook/version.h b/core/pim/addressbook/version.h
index 790aa95..7ce9752 100644
--- a/core/pim/addressbook/version.h
+++ b/core/pim/addressbook/version.h
@@ -1,10 +1,10 @@
#ifndef _VERSION_H_
#define _VERSION_H_
#define MAINVERSION "1"
#define SUBVERSION "1"
-#define PATCHVERSION "0"
+#define PATCHVERSION "1"
#define APPNAME "OPIE_ADDRESSBOOK"
#endif