summaryrefslogtreecommitdiffstats
path: root/kio/DESIGN.mimetypes
blob: ffec64f44e74f5b46dc902e88e756ada5d80b263 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
TODO: servicetypes
TODO: mimetypes

Service type inheritance (X-KDE-Derived)
========================================
X-KDE-Derived is for service types. ST1 derives from ST2 means ST1 is more specific than ST2.
If a service implements ST1, it also implements ST2, but not the other way round.

For instance, KoDocument derives from KParts/ReadWritePart, which derives from KParts/ReadOnlyPart,
so KWord's part (which implements KoDocument) can be used as a readonly viewer for KWord files
in Konqueror (which looks for a KParts/ReadOnlyPart).

Mimetype "inheritance"
======================
We need a mechanism to also say that "text/xml is a special case of text/plain",
or "text/docbook is a kind of text/sgml", or "application/x-smb-workgroup is a kind
of inode/directory", etc. See below.

Why mimetype "inheritance" doesn't use X-KDE-Derived
====================================================
The confusing thing is that we said "a mimetype is a servicetype". But that's not exactly correct.
As Waldo noted, "the ability to open a mimetype" is what's a servicetype.
So if text/xml said X-KDE-Derived=text/plain (i.e. ST1=text/xml, ST2=text/plain),
then an application opening text/xml (ST1) could also open text/plain (ST2) - which is not necessarily true.

We want the other way round: to be able to open special kinds of text/plain in a plain text editor.
This is what X-KDE-IsAlso was introduced for. X-KDE-IsAlso kind of "works the other way" than X-KDE-Derived.
If M1 is a special kind of M2 (mimetypes), then "the ability to open M2" derives from "the ability to open M1"
So we say in text/xml:  X-KDE-IsAlso=text/plain, and applications that can open text/plain can also open text/xml.

Pattern Accuracy
======================
In some cases of inheritance several mimetypes shares the same extension (with the primary case being Ogg Multimedia files).
This has been solved sofar by matching the extension to most generic mimetype. To indicate that the mimetype can be refined further, the flag X-KDE-PatternsAccuracy can be set. The value to X-KDE-PatternsAccuracy is a number between 0-100, with 100 being the default if not set. Any values below 100 is interpreted as the possibility of further mimetype refinement.