[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-pim
Subject: Re: PATCH: adding abbrowser showEntry() dcop interfaces
From: Guillaume Laurent <glaurent () telegraph-road ! org>
Date: 2001-03-19 23:39:25
[Download RAW message or body]
On Tuesday 20 March 2001 00:25, I wrote:
> The patch is already in (not getting any replies here either, I asked on
> kde-devel). However I need to make it properly parse the address. I'm
> reusing the code in PabWidget::addEmail(). I'll post another patch here for
> approval as soon as I'm done.
Here it is. I moved the address parsing code into a seperate static method.
This allows abbrowser to process full addresses such as
Foo Bar <foobar@schmoll.com>
which are typically the kind seen by kmail. Otherwise it works only on simple
ones like
foobar!@schmoll.com
which isn't very useful from kmail.
--
Guillaume.
http://www.telegraph-road.org
["abbrowser_patch_2" (text/plain)]
Index: browserwidget.cpp
===================================================================
RCS file: /home/kde/kdepim/abbrowser/browserwidget.cpp,v
retrieving revision 1.22
diff -u -r1.22 browserwidget.cpp
--- browserwidget.cpp 2001/03/18 12:04:22 1.22
+++ browserwidget.cpp 2001/03/19 23:34:26
@@ -771,7 +771,16 @@
void PabWidget::addEmail(const QString& aStr)
{
- if (! aStr.length() ) return;
+ QString addr, name;
+
+ if (parseEmail(aStr, addr, name)) {
+ updateContact(addr, name);
+ }
+}
+
+bool PabWidget::parseEmail(const QString& aStr, QString &addr, QString &name)
+{
+ if ( !aStr.length() ) return false;
int i, j, len;
QString partA, partB, result;
@@ -784,14 +793,16 @@
endCh = ')';
}
if (i<0) {
- updateContact( aStr, "" );
- return;
+ addr = aStr;
+ name = QString::null;
+ return true;
}
partA = aStr.left(i).stripWhiteSpace();
j = aStr.find(endCh,i+1);
if (j<0) {
- updateContact( aStr, "" );
- return;
+ addr = aStr;
+ name = QString::null;
+ return true;
}
partB = aStr.mid(i+1, j-i-1).stripWhiteSpace();
@@ -806,8 +817,11 @@
result = result.mid(1, result.length()-2);
else if (result[0]=='(' && result[len-1]==')')
result = result.mid(1, result.length()-2);
+
+ addr = partB;
+ name = result;
- updateContact( partB, result );
+ return true;
}
void PabWidget::showEntry( const QString& lastname, const QString& firstname )
@@ -845,9 +859,13 @@
}
-void PabWidget::showEntry( const QString& email )
+void PabWidget::showEntry( const QString& aStr )
{
- if ( !email.length() ) return;
+ if ( !aStr.length() ) return;
+
+ QString addr, name;
+
+ if ( !parseEmail(aStr, addr, name) ) return;
ContactEntryList* cel = contactEntryList();
@@ -862,9 +880,9 @@
*email2 = ce->find( "X-E-mail2" ),
*email3 = ce->find( "X-E-mail3" );
- if ( (email1 && email1->contains(email, false)) ||
- (email2 && email2->contains(email, false)) ||
- (email3 && email3->contains(email, false))
+ if ( (email1 && email1->contains(addr, false)) ||
+ (email2 && email2->contains(addr, false)) ||
+ (email3 && email3->contains(addr, false))
) {
fnList << celIt.currentKey();
Index: browserwidget.h
===================================================================
RCS file: /home/kde/kdepim/abbrowser/browserwidget.h,v
retrieving revision 1.11
diff -u -r1.11 browserwidget.h
--- browserwidget.h 2001/03/18 12:04:22 1.11
+++ browserwidget.h 2001/03/19 23:34:27
@@ -138,6 +138,8 @@
virtual void showEntry( const QString& email );
virtual void showEntry( const QString& entryKey, ContactEntry *ce );
+ static bool parseEmail(const QString& aStr, QString &addr, QString &name);
+
public slots:
virtual void showSelectNameDialog();
virtual void defaultSettings();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic