KFilterDev changes from KDE3
David Faure
faure at kde.org
Mon Mar 16 20:23:25 GMT 2009
On Sunday 15 March 2009, Martin Koller wrote:
> The problem ist, the constructor taking the KFilterBase is now private!
Yes, KFilterBase itself is no longer part of the public API [except when writing
a new filter].
It was a messy API of mine, with rather confusing ownership semantics
for the KFilterBase instance, which is now fully handled by KFilterDev and hidden
into it.
> So my question: How do I set the KFilterBase here ?
Forget about setting a KFilterBase :-)
> The only way coming close to what I need is the method,
> but this needs the mimetype again.
> static QIODevice * device (QIODevice *inDevice, const QString &mimetype, bool autoDeleteInDevice=true)
Yes, this is the one you want.
Why is it a problem that it "needs the mimetype"? You said the kde3 code uses
KFilterBase::findFilterByMimeType() so surely it knows the mimetype.
Instead of keeping a filterbase around until the KFilterDev creation,
just keep around the mimetype and call the above method. I.e. port
filterBase->setDevice(&comprFile);
KFilterDev filter(filterBase, false);
filter.open(IO_WriteOnly);
to
QIODevice* filter = KFilterDev::device(&comprFile, mimeType, false);
filter->open(IO_WriteOnly);
[...]
delete filter;
--
David Faure, faure at kde.org, sponsored by Qt Software @ Nokia to work on KDE,
Konqueror (http://www.konqueror.org), and KOffice (http://www.koffice.org).
More information about the kde-core-devel
mailing list