#define kernel KMKernel::self()
to
#define kmkernel KMKernel::self()
because 'kernel' was a much to general term. We really shouldn't repeat the mistakes of the X developers.
I noticed this problem when I played around with KImageEffects. kimageeffects.h contains 'kernel' as parameter of some methods and so the compilation had to fail. We won't need KImageEffects in the near future, but at least we are now prepared and a clash with another 'kernel' can't happen anymore.
svn path=/trunk/kdepim/; revision=252621
list as before or to the right of it or hide it completely. When the reader
window is disabled, messages that are selected are not downloaded (for
imap) and are not marked as read.
CCMAIL: 63647-done@bugs.kde.org
CCMAIL: 16345-done@bugs.kde.org
CCMAIL: 43176-done@bugs.kde.org
svn path=/trunk/kdepim/; revision=249504
(I still have to do this for the direct click on the attachment)
- fix saving of one attachment (filename was not displayed because the mimeheader was missing)
save all attachments works as expected but doesn't update the parts in the readerwin, I still need to fix this
svn path=/trunk/kdepim/; revision=249206
has redraw problems with smart MTV mode in separate reader, though)
- Extract config profile loading from the Appearance page into a new
dialog: Better user experience and less special code in appearance
page to make sure ProfileTab::apply() is called first...
- Merge the groupware and folder config pages into a misc page
(the folder tag should probably be split into "folder" and
"behaviour")
- various small cleanups:
o s/QString()/QString::null/
o unused #includes in .h files
o added const'ness to tmps
o removed some tmps
o etc
svn path=/trunk/kdepim/; revision=242473
i think is important.
I had to resolve a conflict with Carsten's conflict and some harmless
white space changes crept in.
svn path=/trunk/kdepim/; revision=240369
because in the po file, \n is used to separate singular/plural/etc.
(in fact, KLocale::translate uses QStringList::split( "\n" ... ) to
separate each plural form).
Jaime, Juanma: try to translate the message again tomorrow when the msgid
of kmail.po is updated
CCMAIL:jaime@kde.org, juanma_gm@wanadoo.es
svn path=/trunk/kdepim/; revision=238164
- dito for the automatic mark as read timeout in kmreaderwin
- propagate mark as read in ignored threads to the server for imap folders
svn path=/trunk/kdepim/; revision=237665
This patch mostly concerns itself with the following two things:
1. Move code out from kmreaderwin (see new class CSSHelper, whose files
have already been committed).
Into this category fall the simplification and readability
enhancements of the HTML code (adding some newlines, simplifying the
HTML in favour of complicating the CSS a bit, using @media print)
2. Change the semantics of the mCodec member of KMMessage and
KMReaderWin.
To make it short: mCodec is not mOverrideCodec and only ever set to a
non-NULL value iff the codec is forced by the user selecting an
encoding from the Message menu. In all other cases, it's now
calculated from the message(parts). For that, the codec() and
setBodyFromUnicode() and bodyToUnicode() methods have been duplicated
in KMMessage from KMMsgPart (don't you just hate that?).
Walkthrough of the patch:
kmreaderwin.{h,cpp}
- Replace all c* and m*Font members by a single CSSHelper instance.
- readColorConfig(), parts of readConfg(), quoteFontTag() and htmlHead()
were moved from here to CSSHelper
- rename codec()/setCodec() to overrideCodec()/setOverrideCodec()
and provide an autoDetectEncoding() convenience method.
- Remove the QTextCodec parameter from setMsgPart. It now uses
overrideCodec() or the msgPart's own codec.
- s/isfixedFont/isFixedFont/
- split parseMsg( KMMessage*, bool ) into one for
onlyProcessHeaders=false (called again parseMsg(KMMessage*)) and one
for oPH=true (called parseMsgHeader()). The latter then reduces to
writeMsgHeader(), provided one accepts the minor regression that the
[vPart] link is not shown _for *nested*_ messages. This can be readded
later, once KMReaderWin is void of formatting code and OTP is
independent of a KMReaderWin parent. I've left the commented
parseMsgHeader in the momnt of it's death in commented out, so you can
see what I how I came to kill it off for an explicit writeMsgHeader().
- In the old new parseMsg(KMMessage*), there also happened significant
code simplification, mostly by realizing that the the colorbar and tmp
file handling belongs into parseMsg(void) and by removing the oPH=true
case. There's also an instance of simplifying code by using
bodyToUnicode(). At last, the <div id="header"></div> around
writeMsgHeader is superfluous (and wrong, since there is and never was
a div#header CSS selector), since the HeaderStyle's add that already.
- Apply "Inline Method" to writeHTMLStr()
- remove the QTextCodec param from showVCard(). This method is now a
nice one and uses bodyToUnicode()
- rename all fooCodec to fooOverrideCodec
- currently, mCSSHelper is destroyed and re-created whenever it the
config changes. I intend to make CSSHelper a fully functional
ConfigManager later.
- setOverrideCodec now calls update(true) only if the codec was actually
changed.
- In setMsgPart, there's code that "forgets" to strip off <head>, <body>
and <html> tags from HTML parts. I didn't do anything about that yet,
only added a triple-hash.
- Simplify slotAtmSave() by using more guard clauses and esp. by using
QString::section() and QString::replace(QChar,QChar) instead of
rolling our owns.
objecttreeparser.{h,cpp}:
- Use CSShelper
- Create a new CSS class "htmlWarn" for the HTML warning frame to get
rid of the embedded style information.
- simplify quotedHTML() by using new nonQuotedFontTag().
headerstyle.cpp:
- We begin by inserting some newlines to ease the reading of the
resultant HTML code.
- In the fancy header department, we remove almost all class attributes
from the HTML tags. Instead (see csshelper.cpp), we use CSS Selectors
to address the inner tags of the enclosing <div class="fancy header">
Note how that tag matches both the div.header (setting the margin) and
div.fancy.header selectors in csshelper.cpp
- We end with removing the workaround for the apparently long-standing
khtml bug that makes it ignore "padding" on <table>, viz. another
<div></div> pair around the table.
kmfldsearch.cpp:
- Reap fruits of (2).
kmmainwin.cpp:
- Consequence of setCodec -> setOverrideCodec() renaming
- move an #include up to the top
kmmessage.{h,cpp}:
- Copy setBodyFromUnicode(), bodyToUnicode() and rename fooCodec to
fooOverrideCodec.
- Note how the double housekeeping (mAutoDetectEncoding) goes away with
this.
- In html2source(), don't emit <br />, but <br> (we're using HTML 4.01,
not XHTML) and quote ' with ' (well, that's more XHTML-like)
kmreadermainwin.{h,cpp}:
- Since the QTextCodec* parameter was removed from
KMReaderWin::setMsgPart(), use now the explicit setOverrideCodec()
method to set the user-defined codec.
- Remove unused mCodec member
svn path=/trunk/kdepim/; revision=236540
1) Remove the limitation that a message can have only one status at a time.
2) Implement watch/ignore thread via message status flags.
ad 1:
- Message status is now kept as a bitfield, which means a message can now be
for example replied and forwarded as well as important at the same time.
- To keep the index format backward compatible and make the transition
painless, I've added a new index entry and added code to transfer the old
into the new format. That means that upgrading users should not notice
anything.
- I've tried to keep as much behavior as possible unchanged with regard to
what flag disables what other flag etc. There are two groups of flags:
read/unread/new/old influence each other, which means a message cannot be
new and read at the same time, for example, while the second group, namely
important, sent, queued, replied, and forwarded are toggled individually.
- Toggling a thread sets the messages status to the inverse of that of the
parent, which means that if you have a thread with some mails marked as
important and some not, the status is set according to that of the parent.
- Status is now kept when moving mails between folders in the same imap
account as well as between imap accounts.
ad 2:
- Watch and ignore are mutually exclusive, which means ignoring a thread
unsets its watched flag and the other way around.
- When sorting by status watched threads are at the top, ignored at the
bottom.
- Watch and ignore propagate via threading, which means that if a message
is threaded below a watched one, it becomes watched. Same for ignore.
- Moving a single mail out of a watched thread results in a new watched
thread of size 1 :)
- Similarly watch and ignore are possible on individual mail (threads
to be).
- Watching a thread does not currently mark new mails as important, nor
does ignoring delete new mails in the thread. These are possible
extensions, though, if we think them sensible.
svn path=/trunk/kdepim/; revision=235595
- Fix FIXME added by me in the separate reader window when viewing
text/plain attachments.
- Comment out mShowCompleteMessage from reader win. The only usage of
it is in the ObjectTreeParser, and I don't see any regressions with
simply assuming it to always be true. It certainly doesn't break the
claimed usage of this hack.
- group fonts/color member variables together.
- Refactor HTML head composition from parseMsg() into htmlHead()
- Use new htmlHead() to fix#60688
CCMAIL:60688-done@bugs.kde.org
ObjectTreeParser:
- Moved mIsFirstTextPart member variable from readerwin to here
- Removed the hack that maps app/pgp to text/plain. Instead, just call
the t/p method from the app/pgp case.
- At the end of parseObjectTree(), change the last
htmlWriter()->write() to htmlWriter()->queue(), since everything
that is called in between uses queue(), too (see below)
KHtmlHtmlWriter:
- Keep state to be able to warn about incorrect usage patterns
- Move html view init/finish to begin() and end() from kmreaderwin
and objecttreeparser
svn path=/trunk/kdepim/; revision=235256
I didn't do the same for filter-on-to, b/c there are typically more than one Recipients, whereas multiple authors are rare.
svn path=/trunk/kdepim/; revision=230903
- Use HtmlStatusBar instead of home-brewn QLabel.
- Remove strToHtml (uses the equivalent LinkLocator method now).
object tree parser:
- Extract Method on processFooType to get processFooBarSubtype
methods.
- Use AttachmentStrategy::inlineNestedMessages()
- Created a new CryptPlugWrapperSaver that implements
reasource-allocation-is-initialization" for (re)setting the
cryptplug in some ObjectTreeParser methods.
both:
- Move writeBodyStr(), writePartIcon(), quotedHTML(),
sigStatusToString(), writeSigstat{Header,Footer}
from KMReaderWin to ObjectTreeParser.
There is one known regression (documented with a FIXME)
(see last hunk of kmreaderwin.cpp):
I had to #if 0 a call to writeBodyStr. This code needs to be ported to
use ObjectTreeParser first. The code is about the "view attachment"
feature.
Other than that, the changes should be behaviour-preserving (except
for the smart attachment mode now showing nested messages inline).
The patch is large, but consists almost purely of moving around code.
svn path=/trunk/kdepim/; revision=230897
compact, which emits folder changed, which calls msgChanged, which emits
maybeDeleting, which calls KMReaderWin::clearCache, which disables the
updateTimer which has been started by KMReaderWin::setMsg (0) and which,
had it not been prevented from doing so by the above, would have cleared
the main message reader window, thereby preventing crashes when the still
visible parts (message body and mime parts) of a mail that is gone from
the outbox are accessed.
I've fixed this by explicitly clearing the view in clearCache. Since I
assume clearCache is there to prevent still running timers from accessing
messages which are no longer there, that seems like a decent fix. I'd like
a second opinion on this, though.
CCMAIL: 48686-done@bugs.kde.org
svn path=/trunk/kdepim/; revision=230366
KMail::UndoStack.
Waldo, would you mind if I added the Qt clause which we discussed some time ago
on the KMail list to the undostack.{h,cpp} files?
CCMAIL: Waldo Bastian <bastian@kde.org>
svn path=/trunk/kdepim/; revision=227174
In kroupware_branch, it is known for certain that all korganizer code
is stored in KMail folders. We don't want that in HEAD, so this means
a change in the way things work.
The old kroupware way to receive appointments:
- KMail receives a mail with an invitation
- The invitation is decoded with a hack in KMGroupware, and the user
is asked to decide upon the invitation
- KMail sends the ical and the user decision to KOrganizer that returns
a new ical with the answer
- KMail stores the appointment directly in the Calendar folder
The new way it's going to be:
- KMail receives a mail with an invitation
- KOrganizer (or libkcal or whatever) decodes the ical file and shows
a widget with the choices inside KMail
- The decision goes to KOrganizer and KMail doesn't see it again
This way it's up to KOrganizer what to do with the saving of the file.
This is necessary to make use of KOrganizers resource settings. And it
also makes it possible to use KMails groupware stuff without saving the
calendar files inside KMail. In case KOrganizer uses the IMAP resource,
the file will actually go back to KMail, but that is through another
channel of code.
This checkin is the first part of making the groupware code and the
IMAP resource code in KMail be quite independent of each other as it's
supposed to be. In kroupware_branch all this code is completely tangled
up in one big web. The untangling isn't completely done yet, since I by
now have been in the process of doing this transition for 7-8 weeks, and
I wanted to get it off my disk.
I'm certain that IMAP resource doesn't work right now, but I'll fix this
over the next couple of days. After that, we should finally be almost
done with the KMail work, and I can concentrate on getting the groupware
parts in KOrganizer ported.
CCMAIL: kmail@kde.org
CCMAIL: kdepim@kde.org
svn path=/trunk/kdepim/; revision=225393
and operate on the resulting addressee object
- share the vcard viewer with kaddressbook now
- implemented importing contact into current addressbook
Also fixes wishlist item #40800
CCMAIL:40800-done@bugs.kde.org
svn path=/trunk/kdepim/; revision=224433