* Message/Headers: Email addresses like <joe@home.org>


			
			
				wilder-work
			
			
		
Stefan Taferner 28 years ago
parent ae3a2a648b
commit ac456d9dd0
  1. 8
      ChangeLog
  2. 49
      kmheaders.cpp
  3. 5
      kmheaders.h
  4. 21
      kmmessage.cpp

@ -1,4 +1,10 @@
1998-05-25 Stefan Taferner <taferner@kde.org> (KMail-0.6.8)
1998-06-07 Stefan Taferner <taferner@kde.org> (KMail-0.6.8)
* Message/Headers: Email addresses like <joe@home.org>
(with the <> around the address) no longer lead to
an empty field in the message list.
* Headers: Removed extra space in header line(s).
* Headers: Empty Subject moved From and Date one column
left. Fixed (hopefully).

@ -178,25 +178,45 @@ void KMHeaders::msgRemoved(int id)
}
//-----------------------------------------------------------------------------
QString KMHeaders::msgAsLbxString(KMMsgBase* aMsg) const
{
QString result(256);
KMMsgStatus flag;
QString fromStr, subjStr;
assert(aMsg!=NULL);
flag = aMsg->status();
fromStr = KMMessage::stripEmailAddr(aMsg->from());
if (fromStr.isEmpty()) fromStr = i18n("Unknown");
subjStr = aMsg->subject();
if (subjStr.isEmpty()) subjStr = i18n("No Subject");
result.sprintf("%c\n%.100s\n%.100s\n%.40s", (char)flag,
(const char*)fromStr, (const char*)subjStr,
(const char*)aMsg->dateStr());
return result;
}
//-----------------------------------------------------------------------------
void KMHeaders::msgHeaderChanged(int msgId)
{
QString hdr(256);
KMMsgStatus flag;
KMMsgBase* mb;
QString fromStr, subjStr;
if (!autoUpdate()) return;
mb = mFolder->getMsgBase(msgId);
assert(mb != NULL);
flag = mb->status();
hdr.sprintf("%c\n%.100s \n%.100s \n%.40s ", (char)flag,
(const char*)KMMessage::stripEmailAddr(mb->from()),
(const char*)mb->subject(),
(const char*)mb->dateStr());
changeItem(hdr, msgId);
changeItem(msgAsLbxString(mb), msgId);
flag = mb->status();
if (flag==KMMsgStatusNew) changeItemColor(darkRed, msgId);
else if(flag==KMMsgStatusUnread) changeItemColor(darkBlue, msgId);
}
@ -612,7 +632,7 @@ void KMHeaders::selectMessage(int idx, int/*colId*/)
void KMHeaders::updateMessageList(void)
{
long i;
QString hdr(256);
QString str(256);
KMMsgStatus flag;
KMMsgBase* mb;
@ -627,12 +647,9 @@ void KMHeaders::updateMessageList(void)
mb = mFolder->getMsgBase(i);
assert(mb != NULL); // otherwise using count() above is wrong
flag = mb->status();
hdr.sprintf("%c\n%s\n %s\n%s", (char)flag,
(const char*)KMMessage::stripEmailAddr(mb->from()),
(const char*)mb->subject(), (const char*)mb->dateStr());
insertItem(hdr);
insertItem(msgAsLbxString(mb));
flag = mb->status();
if (flag==KMMsgStatusNew) changeItemColor(darkRed);
else if(flag==KMMsgStatusUnread) changeItemColor(darkBlue);
}
@ -640,11 +657,11 @@ void KMHeaders::updateMessageList(void)
setAutoUpdate(TRUE);
repaint();
hdr.sprintf(i18n("%d Messages, %d unread."),
str.sprintf(i18n("%d Messages, %d unread."),
mFolder->count(), mFolder->countUnread());
if (mFolder->isReadOnly()) hdr += i18n("Folder is read-only.");
if (mFolder->isReadOnly()) str += i18n("Folder is read-only.");
mOwner->statusMsg(hdr);
mOwner->statusMsg(str);
kbp->idle();
}

@ -99,11 +99,14 @@ protected:
/** Write per-folder config options. */
virtual void writeFolderConfig(void);
virtual void mouseReleaseEvent (QMouseEvent*);
virtual void mouseReleaseEvent(QMouseEvent*);
/** Sort message list by current sort settings. */
virtual void sort(void);
/** Returns string for listbox from given message. */
virtual QString msgAsLbxString(KMMsgBase*) const;
private:
virtual void updateMessageList(void);
KMFolder* mFolder;

@ -1168,7 +1168,7 @@ void KMMessage::viewSource(const QString aCaption) const
//-----------------------------------------------------------------------------
const QString KMMessage::stripEmailAddr(const QString aStr)
{
int i, j;
int i, j, len;
QString partA, partB, result;
char endCh = '>';
@ -1179,16 +1179,21 @@ const QString KMMessage::stripEmailAddr(const QString aStr)
endCh = ')';
}
if (i<0) return aStr;
partA = aStr.left(i);
j = aStr.find(endCh,i);
partA = aStr.left(i).stripWhiteSpace();
j = aStr.find(endCh,i+1);
if (j<0) return aStr;
partB = aStr.mid(i+1, j-i-1);
partB = aStr.mid(i+1, j-i-1).stripWhiteSpace();
if (partA.find('@') >= 0)
result = partB.stripWhiteSpace();
else result = partA.stripWhiteSpace();
if (partA.find('@') >= 0 && !partB.isEmpty()) result = partB;
else if (!partA.isEmpty()) result = partA;
else result = aStr;
if (result[0]=='"' && result[result.length()-1]=='"')
len = result.length();
if (result[0]=='"' && result[len-1]=='"')
result = result.mid(1, result.length()-2);
else if (result[0]=='<' && result[len-1]=='>')
result = result.mid(1, result.length()-2);
else if (result[0]=='(' && result[len-1]==')')
result = result.mid(1, result.length()-2);
return result;
}

Loading…
Cancel
Save