[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