summaryrefslogtreecommitdiff
path: root/core/pim/addressbook
Side-by-side diff
Diffstat (limited to 'core/pim/addressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/TODO7
-rw-r--r--core/pim/addressbook/abtable.cpp76
-rw-r--r--core/pim/addressbook/addressbook.cpp47
-rw-r--r--core/pim/addressbook/addressbook.h3
-rw-r--r--core/pim/addressbook/configdlg.cpp16
-rw-r--r--core/pim/addressbook/configdlg.h4
-rw-r--r--core/pim/addressbook/configdlg_base.ui105
-rw-r--r--core/pim/addressbook/opie-addressbook.control2
-rw-r--r--core/pim/addressbook/picker.cpp12
9 files changed, 227 insertions, 45 deletions
diff --git a/core/pim/addressbook/TODO b/core/pim/addressbook/TODO
index 796dc49..80ec2d9 100644
--- a/core/pim/addressbook/TODO
+++ b/core/pim/addressbook/TODO
@@ -1,36 +1,39 @@
Stuff todo until OPIE 1.0 :
+Pending bugfixes from previous work:
+
Urgent:
- Font menu is invisible using german translation
Important:
+- Overview window cleanup needed..
- Cursor keys should work in detail-view (ablabel)
- "What's this" should be added
- Store last settings of combo-boxes
-- Mail-Icon is missing
-- Overview window cleanup needed..
- Finishing of new View functions (List, Phonebook...)
- The names of the countries are sorted by there english names, only..
Even if they are translated.. :S
- Reload if contacts were changed externally
Less important:
- The picker (alphabetical sort widget) should be
placed verticaly or horizontally (configurable)
- Use advanced database functions in abtable to decrease
memory footprint and to make everything more easy !
(abtable should store Iterator for selected Category)
Should be Fixed (not absolute sure, need further validation):
- "Nonenglish" translation bug has to be fixed.
Fixed:
- Syncing: abtable not reloaded after sync.
- Find widget should be replaced by something like
qpdf has.
- Adding a configuration dialog
- Picker: Activated letter schould be more visible
- Advanced handling of cursor keys (search..)
+- Mail-Icon is missing
+- Use opie-mail insted of qt-mail if possible.
diff --git a/core/pim/addressbook/abtable.cpp b/core/pim/addressbook/abtable.cpp
index 97b26db..4feadeb 100644
--- a/core/pim/addressbook/abtable.cpp
+++ b/core/pim/addressbook/abtable.cpp
@@ -677,59 +677,71 @@ void AbTable::slotDoFind( const QString &findString, bool caseSensitive, bool us
if ( currFindRow < -1 )
currFindRow = - 1;
clearSelection( TRUE );
int rows, row;
AbTableItem *ati;
QRegExp r( findString );
r.setCaseSensitive( caseSensitive );
r.setWildcard( !useRegExp );
rows = numRows();
static bool wrapAround = true;
+ bool try_again = false;
- if ( !backwards ) {
- for ( row = currFindRow + 1; row < rows; row++ ) {
- ati = static_cast<AbTableItem*>( item(row, 0) );
- if ( contactCompare( contactList[ati], r, category ) )
- break;
+ // We will loop until we found an entry or found nothing.
+ do {
+ if ( !backwards ) {
+ for ( row = currFindRow + 1; row < rows; row++ ) {
+ ati = static_cast<AbTableItem*>( item(row, 0) );
+ if ( contactCompare( contactList[ati], r, category ) ){
+ try_again = false;
+ break;
+ }
+ }
+ } else {
+ for ( row = currFindRow - 1; row > -1; row-- ) {
+ ati = static_cast<AbTableItem*>( item(row, 0) );
+ if ( contactCompare( contactList[ati], r, category ) ){
+ try_again = false;
+ break;
+ }
+ }
}
- } else {
- for ( row = currFindRow - 1; row > -1; row-- ) {
- ati = static_cast<AbTableItem*>( item(row, 0) );
- if ( contactCompare( contactList[ati], r, category ) )
- break;
+ if ( row >= rows || row < 0 ) {
+ if ( row < 0 )
+ currFindRow = rows;
+ else
+ currFindRow = -1;
+
+ if ( wrapAround ){
+ emit signalWrapAround();
+ try_again = true;
+ }else{
+ emit signalNotFound();
+ try_again = false;
+ }
+
+ wrapAround = !wrapAround;
+ } else {
+ currFindRow = row;
+ QTableSelection foundSelection;
+ foundSelection.init( currFindRow, 0 );
+ foundSelection.expandTo( currFindRow, numCols() - 1 );
+ addSelection( foundSelection );
+ setCurrentCell( currFindRow, 0 /* numCols() - 1 */ );
+ wrapAround = true;
+ try_again = false;
}
- }
- if ( row >= rows || row < 0 ) {
- if ( row < 0 )
- currFindRow = rows;
- else
- currFindRow = -1;
-
- if ( wrapAround )
- emit signalWrapAround();
- else
- emit signalNotFound();
-
- wrapAround = !wrapAround;
- } else {
- currFindRow = row;
- QTableSelection foundSelection;
- foundSelection.init( currFindRow, 0 );
- foundSelection.expandTo( currFindRow, numCols() - 1 );
- addSelection( foundSelection );
- setCurrentCell( currFindRow, 0 /* numCols() - 1 */ );
- wrapAround = true;
- }
+ } while ( try_again );
}
static bool contactCompare( const OContact &cnt, const QRegExp &r, int category )
{
bool returnMe;
QArray<int> cats;
cats = cnt.categories();
returnMe = false;
if ( (cats.count() == 0) || (category == 0) )
returnMe = cnt.match( r );
else {
diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp
index 3466801..39d8321 100644
--- a/core/pim/addressbook/addressbook.cpp
+++ b/core/pim/addressbook/addressbook.cpp
@@ -71,35 +71,41 @@ static QString addressbookPersonalVCardName()
"businesscard.vcf");
return filename;
}
AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name,
WFlags f )
: QMainWindow( parent, name, f ),
abEditor(0),
useRegExp(false),
doNotifyWrapAround(true),
caseSensitive(false),
+ m_useQtMail(true),
+ m_useOpieMail(false),
bAbEditFirstTime(TRUE),
syncing(FALSE)
{
isLoading = true;
// Read Config settings
Config cfg("AddressBook");
cfg.setGroup("Search");
useRegExp = cfg.readBoolEntry( "useRegExp" );
caseSensitive = cfg.readBoolEntry( "caseSensitive" );
doNotifyWrapAround = cfg.readBoolEntry( "doNotifyWrapAround" );
+ cfg.setGroup("Mail");
+ m_useQtMail = cfg.readBoolEntry( "useQtMail" );
+ m_useOpieMail=cfg.readBoolEntry( "useOpieMail" );
+
initFields();
setCaption( tr("Contacts") );
setIcon( Resource::loadPixmap( "AddressBook" ) );
setToolBarsMovable( FALSE );
// Create Toolbars
QPEToolBar *bar = new QPEToolBar( this );
bar->setHorizontalStretchable( TRUE );
@@ -160,25 +166,25 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name,
searchBar->setStretchableWidget( searchEdit );
connect( searchEdit, SIGNAL( returnPressed( ) ),
this, SLOT( slotFind( ) ) );
a = new QAction( tr( "Find Next" ), Resource::loadPixmap( "next" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( slotFindNext() ) );
a->addTo( searchBar );
a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( slotFindClose() ) );
a->addTo( searchBar );
- a = new QAction( tr( "Write Mail To" ), Resource::loadPixmap( "qtmail/reply" ),
+ a = new QAction( tr( "Write Mail To" ), Resource::loadPixmap( "mail/sendmail" ),
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 );
@@ -273,30 +279,34 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name,
abList->setCurrentCell( 0, 0 );
isLoading = false;
}
void AddressbookWindow::slotConfig()
{
ConfigDlg* dlg = new ConfigDlg( this, "Config" );
dlg -> setUseRegExp ( useRegExp );
dlg -> setBeCaseSensitive( caseSensitive );
dlg -> setSignalWrapAround( doNotifyWrapAround );
+ dlg -> setQtMail ( m_useQtMail );
+ dlg -> setOpieMail ( m_useOpieMail );
dlg -> showMaximized();
if ( dlg -> exec() ) {
qWarning ("Config Dialog accepted !");
useRegExp = dlg -> useRegExp();
caseSensitive = dlg -> beCaseSensitive();
doNotifyWrapAround = dlg -> signalWrapAround();
+ m_useQtMail = dlg -> useQtMail();
+ m_useOpieMail= dlg -> useOpieMail();
}
delete dlg;
}
void AddressbookWindow::slotSetFont( int size ) {
if (size > 2 || size < 0)
size = 1;
startFontSize = size;
@@ -371,24 +381,27 @@ void AddressbookWindow::resizeEvent( QResizeEvent *e )
}
AddressbookWindow::~AddressbookWindow()
{
Config cfg("AddressBook");
cfg.setGroup("Font");
cfg.writeEntry("fontSize", startFontSize);
cfg.setGroup("Search");
cfg.writeEntry("useRegExp", useRegExp);
cfg.writeEntry("caseSensitive", caseSensitive);
cfg.writeEntry("doNotifyWrapAround", doNotifyWrapAround);
+ cfg.setGroup("Mail");
+ cfg.writeEntry( "useQtMail", m_useQtMail );
+ cfg.writeEntry( "useOpieMail", m_useOpieMail);
}
void AddressbookWindow::slotUpdateToolbar()
{
OContact ce = abList->currentEntry();
actionMail->setEnabled( !ce.defaultEmail().isEmpty() );
}
void AddressbookWindow::showList()
{
bool visiblemView;
@@ -485,26 +498,54 @@ void AddressbookWindow::slotViewEdit()
QMessageBox::warning( this, tr("Contacts"),
tr("Can not edit data, currently syncing") );
}
}
void AddressbookWindow::writeMail()
{
OContact c = abList->currentEntry();
QString name = c.fileAs();
QString email = c.defaultEmail();
- QCopEnvelope e("QPE/Application/qtmail", "writeMail(QString,QString)");
- e << name << email;
+
+ // I prefer the OPIE-Environment variable before the
+ // QPE-one..
+ QString basepath = QString::fromLatin1( getenv("OPIEDIR") );
+ if ( basepath.isEmpty() )
+ basepath = QString::fromLatin1( getenv("QPEDIR") );
+
+ // Try to access the preferred. If not possible, try to
+ // switch to the other one..
+ if ( m_useQtMail ){
+ qWarning ("Accessing: %s", (basepath + "/bin/qtmail").latin1());
+ if ( QFile::exists( basepath + "/bin/qtmail" ) ){
+ qWarning ("QCop");
+ QCopEnvelope e("QPE/Application/qtmail", "writeMail(QString,QString)");
+ e << name << email;
+ return;
+ } else
+ m_useOpieMail = true;
+ }
+ if ( m_useOpieMail ){
+ qWarning ("Accessing: %s", (basepath + "/bin/mail").latin1());
+ if ( QFile::exists( basepath + "/bin/mail" ) ){
+ qWarning ("QCop");
+ QCopEnvelope e("QPE/Application/mail", "writeMail(QString,QString)");
+ e << name << email;
+ return;
+ } else
+ m_useQtMail = true;
+ }
+
}
static const char * beamfile = "/tmp/obex/contact.vcf";
void AddressbookWindow::slotBeam()
{
QString filename;
OContact c;
if ( actionPersonal->isOn() ) {
filename = addressbookPersonalVCardName();
if (!QFile::exists(filename))
return; // can't beam a non-existent file
diff --git a/core/pim/addressbook/addressbook.h b/core/pim/addressbook/addressbook.h
index 299ed70..8027ccf 100644
--- a/core/pim/addressbook/addressbook.h
+++ b/core/pim/addressbook/addressbook.h
@@ -109,24 +109,27 @@ private:
AbLabel *mView;
LetterPicker *pLabel;
AbTable *abList;
QWidget *listContainer;
// Searching stuff
OFloatBar* searchBar;
QLineEdit* searchEdit;
bool useRegExp;
bool doNotifyWrapAround;
bool caseSensitive;
+ bool m_useQtMail;
+ bool m_useOpieMail;
+
QAction *actionNew, *actionEdit, *actionTrash, *actionFind, *actionBeam, *actionPersonal, *actionMail;
bool bAbEditFirstTime;
int viewMargin;
bool syncing;
QFont *defaultFont;
int startFontSize;
bool isLoading;
};
diff --git a/core/pim/addressbook/configdlg.cpp b/core/pim/addressbook/configdlg.cpp
index b7c3b77..c0195d1 100644
--- a/core/pim/addressbook/configdlg.cpp
+++ b/core/pim/addressbook/configdlg.cpp
@@ -6,40 +6,56 @@ ConfigDlg::ConfigDlg( QWidget *parent = 0, const char *name = 0 ):
ConfigDlg_Base(parent, name, true )
{}
bool ConfigDlg::useRegExp() const
{
return m_useRegExp->isOn();
}
bool ConfigDlg::useWildCards() const
{
return m_useWildCard->isOn();
}
+bool ConfigDlg::useQtMail() const
+{
+ return m_useQtMail->isOn();
+}
+bool ConfigDlg::useOpieMail() const
+{
+ return m_useOpieMail->isOn();
+}
bool ConfigDlg::beCaseSensitive() const
{
return m_useCaseSensitive->isChecked();
}
bool ConfigDlg::signalWrapAround() const
{
return m_signalWrapAround->isChecked();
}
void ConfigDlg::setUseRegExp( bool v )
{
m_useRegExp->setChecked( v );
}
void ConfigDlg::setUseWildCards( bool v )
{
m_useWildCard->setChecked( v );
}
void ConfigDlg::setBeCaseSensitive( bool v )
{
m_useCaseSensitive->setChecked( v );
}
void ConfigDlg::setSignalWrapAround( bool v )
{
m_signalWrapAround->setChecked( v );
}
+void ConfigDlg::setQtMail( bool v )
+{
+ m_useQtMail->setChecked( v );
+}
+void ConfigDlg::setOpieMail( bool v )
+{
+ m_useOpieMail->setChecked( v );
+}
diff --git a/core/pim/addressbook/configdlg.h b/core/pim/addressbook/configdlg.h
index 8be469b..34e9718 100644
--- a/core/pim/addressbook/configdlg.h
+++ b/core/pim/addressbook/configdlg.h
@@ -5,21 +5,25 @@
class ConfigDlg: public ConfigDlg_Base
{
Q_OBJECT
public:
ConfigDlg( QWidget *parent = 0, const char *name = 0 );
// Search Settings
bool useRegExp() const;
bool useWildCards() const;
bool beCaseSensitive() const;
bool signalWrapAround() const;
+ bool useQtMail() const;
+ bool useOpieMail() const;
void setUseRegExp( bool v );
void setUseWildCards( bool v );
void setBeCaseSensitive( bool v );
void setSignalWrapAround( bool v );
+ void setQtMail( bool v );
+ void setOpieMail( bool v );
};
#endif
diff --git a/core/pim/addressbook/configdlg_base.ui b/core/pim/addressbook/configdlg_base.ui
index e082702..d3ea12e 100644
--- a/core/pim/addressbook/configdlg_base.ui
+++ b/core/pim/addressbook/configdlg_base.ui
@@ -3,25 +3,25 @@
<author>Stefan Eilers</author>
<widget>
<class>QDialog</class>
<property stdset="1">
<name>name</name>
<cstring>Configuration</cstring>
</property>
<property stdset="1">
<name>geometry</name>
<rect>
<x>0</x>
<y>0</y>
- <width>227</width>
+ <width>217</width>
<height>287</height>
</rect>
</property>
<property stdset="1">
<name>caption</name>
<string>MyDialog1</string>
</property>
<property stdset="1">
<name>sizeGripEnabled</name>
<bool>true</bool>
</property>
<vbox>
@@ -144,24 +144,127 @@
<enum>Expanding</enum>
</property>
<property>
<name>sizeHint</name>
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</vbox>
</widget>
+ <widget>
+ <class>QWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>tab</cstring>
+ </property>
+ <attribute>
+ <name>title</name>
+ <string>Mail</string>
+ </attribute>
+ <vbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>5</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QButtonGroup</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>ButtonGroup2</cstring>
+ </property>
+ <property stdset="1">
+ <name>title</name>
+ <string>Mail</string>
+ </property>
+ <vbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>11</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QRadioButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>m_useQtMail</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Prefer QT-Mail </string>
+ </property>
+ <property stdset="1">
+ <name>checked</name>
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget>
+ <class>QRadioButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>m_useOpieMail</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Prefer Opie-Mail</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>TextLabel1</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Notice: QT-Mail is just
+provided in the SHARP
+default ROM. Opie-Mail
+is provided free !</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <spacer>
+ <property>
+ <name>name</name>
+ <cstring>Spacer2</cstring>
+ </property>
+ <property stdset="1">
+ <name>orientation</name>
+ <enum>Vertical</enum>
+ </property>
+ <property stdset="1">
+ <name>sizeType</name>
+ <enum>Expanding</enum>
+ </property>
+ <property>
+ <name>sizeHint</name>
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </vbox>
+ </widget>
</widget>
<widget>
<class>QLayoutWidget</class>
<property stdset="1">
<name>name</name>
<cstring>Layout1</cstring>
</property>
<hbox>
<property stdset="1">
<name>margin</name>
<number>0</number>
</property>
diff --git a/core/pim/addressbook/opie-addressbook.control b/core/pim/addressbook/opie-addressbook.control
index 14b0770..0a04ee6 100644
--- a/core/pim/addressbook/opie-addressbook.control
+++ b/core/pim/addressbook/opie-addressbook.control
@@ -1,9 +1,9 @@
Files: bin/addressbook apps/1Pim/addressbook.desktop
Priority: optional
Section: opie/applications
-Maintainer: Warwick Allison <warwick@trolltech.com>
+Maintainer: Stefan Eilers <eilers.stefan@epost.de>
Architecture: arm
Version: $QPE_VERSION-$SUB_VERSION
Depends: opie-base ($QPE_VERSION) libopie
Description: Contacts
A simple addressbook for the Opie environment.
diff --git a/core/pim/addressbook/picker.cpp b/core/pim/addressbook/picker.cpp
index 7f4acb0..2c7dd71 100644
--- a/core/pim/addressbook/picker.cpp
+++ b/core/pim/addressbook/picker.cpp
@@ -84,61 +84,61 @@ void PickerLabel::mousePressEvent( QMouseEvent* e )
if ( ( currentLetter == 0 ) && ( lastLetter != '\0' ) ) mouseReleaseEvent( e );
}
void PickerLabel::mouseReleaseEvent( QMouseEvent* /* e */ )
{
QString tmpStr;
if (lastLetter != letter1 && lastLetter != letter2 && lastLetter != letter3 && lastLetter != '\0')
QTimer::singleShot( 0, this, SLOT(emitClearSignal()) );
switch (currentLetter) {
case 0:
- tmpStr = "<qt><u><font color=\"#7F0000\">";
+ tmpStr = "<qt><u><b><font color=\"#FF00FF\">";
tmpStr += letter1;
- tmpStr += "</font></u>";
+ tmpStr += "</font></b></u>";
tmpStr += letter2;
tmpStr += letter3;
tmpStr += "</qt>";
setText(tmpStr);
currentLetter++;
lastLetter = letter1;
emit selectedLetter( letter1 );
break;
case 1:
tmpStr = "<qt>";
tmpStr += letter1;
- tmpStr += "<u><font color=\"#7F0000\">";
+ tmpStr += "<u><b><font color=\"#FF00FF\">";
tmpStr += letter2;
- tmpStr += "</font></u>";
+ tmpStr += "</font></b></u>";
tmpStr += letter3;
tmpStr += "</qt>";
setText(tmpStr);
currentLetter++;
lastLetter = letter2;
emit selectedLetter( letter2 );
break;
case 2:
tmpStr = "<qt>";
tmpStr += letter1;
tmpStr += letter2;
- tmpStr += "<u><font color=\"#7F0000\">";
+ tmpStr += "<u><b><font color=\"#FF00FF\">";
tmpStr += letter3;
- tmpStr += "</font></u></qt>";
+ tmpStr += "</font></b></u></qt>";
setText(tmpStr);
currentLetter++;
lastLetter = letter3;
emit selectedLetter( letter3 );
break;
default:
clearLetter();
lastLetter = '\0';
emit selectedLetter( '\0' );