summaryrefslogtreecommitdiffstats
path: root/kdejava/koala/org/kde/koala/KFilePlugin.java
diff options
context:
space:
mode:
Diffstat (limited to 'kdejava/koala/org/kde/koala/KFilePlugin.java')
-rw-r--r--kdejava/koala/org/kde/koala/KFilePlugin.java179
1 files changed, 179 insertions, 0 deletions
diff --git a/kdejava/koala/org/kde/koala/KFilePlugin.java b/kdejava/koala/org/kde/koala/KFilePlugin.java
new file mode 100644
index 00000000..0dd2ca43
--- /dev/null
+++ b/kdejava/koala/org/kde/koala/KFilePlugin.java
@@ -0,0 +1,179 @@
+//Auto-generated by kalyptus. DO NOT EDIT.
+package org.kde.koala;
+
+import org.kde.qt.Qt;
+import org.kde.qt.QMetaObject;
+import org.kde.qt.QtSupport;
+import org.kde.qt.QObject;
+import org.kde.qt.QValidator;
+import org.kde.qt.QObject;
+
+/**
+
+ @brief Base class for a meta information plugin
+ Meta information plugins are used to extract useful information from files
+ of a given type. These plugins are used in Konqueror's file properties
+ dialog, for example.
+ If you want to write your own plugin, you need to derive from this class.
+ In the constructor of your class, you need to call addMimeTypeInfo() to tell
+ the KFile framework which mimetype(s) your plugin supports. For each
+ mimetype, use the addGroupInfo() and addItemInfo() methods to declare the
+ meta information items the plugin calculates and to group them accordingly.
+ For groups, use setAttributes() to customize your group (see
+ KFileMimeTypeInfo.Attributes). For items, use setAttributes() to define the
+ behaviour of the item; use setHint() to define the meaning of the item; use
+ setUnit() to define the Unit, such as KFileMimeTypeInfo.Seconds or
+ KFileMimeTypeInfo.KiloBytes. In short, the constructor defines the data
+ structure of the meta information supported by your plugin.
+ Example:
+ @code
+ FooPlugin.FooPlugin(QObject parent, String name,
+ ArrayListargs)
+ {
+ KFileMimeTypeInfo info = addMimeTypeInfo( "application/x-foo" );
+ // our new group
+ KFileMimeTypeInfo.GroupInfo group = null;
+ group = addGroupInfo(info, "FooInfo", i18n("Foo Information"));
+ KFileMimeTypeInfo.ItemInfo item;
+ // our new items in the group
+ item = addItemInfo(group, "Items", i18n("Items"), QVariant.Int);
+ item = addItemInfo(group, "Size", i18n("Size"), QVariant.Int);
+ setUnit(item, KFileMimeTypeInfo.KiloBytes);
+ // strings are possible, too:
+ //addItemInfo(group, "Document Type", i18n("Document type"), QVariant.String);
+ }
+ @endcode
+ Some meta information items are likely to be available in several different
+ file formats, such as @c "Author", @c "Title" (for documents), and
+ @c "Length" (for multimedia files). Be sure to use the naming scheme from
+ existing plugins for your meta information items if possible. If, for
+ example, the meta information of a group of files is shown in a table view,
+ this will allow two files to share the same column (say "Length") even if
+ they are of a different file type.
+ You must overwrite the readInfo() method. In this method you need to extract
+ the meta information of the given file. You can use a third-party library to
+ achieve this task. This might be the best way for binary files, since a
+ change in the file format is likely to be supported by subsequent releases
+ of that library. Alternatively, for text-based file formats, you can use
+ QTextStream to parse the file. For simple file formats, QRegExp can be of
+ great help, too.
+ After you extracted the relevant information, use appendGroup() and
+ appendItem() to fill the meta information data structure (as defined in the
+ constructor) with values. Note that you can leave out groups or items
+ which are not appropriate for a particular file.
+ Example:
+ @code
+ boolean FooPlugin.readInfo( KFileMetaInfo& info, uint what)
+ {
+ int numItems = 0;
+ int size = 0;
+ // do your calculations here, e.g. using a third-party
+ // library or by writing an own parser using e.g. QTextStream
+ // calculate numItems and size ...
+ // note: use the same key strings as in the constructor
+ KFileMetaInfoGroup group = appendGroup(info, "FooInfo");
+ appendItem(group, "Items", numItems);
+ appendItem(group, "Size", size);
+ return true;
+ }
+ @endcode
+ If you want to define mutable meta information items, you need to overwrite
+ the writeInfo() method. In this method, you can use third-party library
+ (appropriate mostly for binary files, see above) or QTextStream to write the
+ information back to the file. If you use QTextStream, be sure to write all
+ file contents back.
+ For some items, it might be that not all possible values are allowed. You
+ can overwrite the createValidator() method to define constraints for a meta
+ information item. For example, the @c "Year" field for an MP3 file could
+ reject values outside the range 1500 - 2050 (at least for now). The
+ validator is used to check values before the writeInfo() method is called so
+ that writeInfo() is only provided correct values.
+ In your plugin, you need to create a factory for the KFilePlugin
+ Example:
+ @code
+ typedef KGenericFactory<FooPlugin> FooFactory;
+ K_EXPORT_COMPONENT_FACTORY(kfile_foo, FooFactory("kfile_foo"));
+ @endcode
+ To make your plugin available within KDE, you also need to provide a
+ <code>.desktop</code> file which describes your plugin. The required fields in the
+ file are:
+ - <code>Type</code>: must be @c "Service"
+ - <code>Name</code>: the name of the plugin
+ - <code>ServiceTypes</code>: must contain @c "KFilePlugin"
+ - <code>X</code>-KDE-Library: the name of the library containing the KFile plugin
+ - <code>MimeType</code>: the mimetype(s) which are supported by the plugin
+ - <code>PreferredGroups</code>: a comma-separated list of the most important groups.
+ This list defines the order in which the meta information groups should be
+ displayed
+ - <code>PreferredItems</code>: a comma-separated list of the most important items.
+ This list defines the order in which the meta information items should be
+ displayed
+ Example:
+ @code
+ [Desktop Entry]
+ Encoding=UTF-8
+ Type=Service
+ Name=Foo Info
+ ServiceTypes=KFilePlugin
+ X-KDE-Library=kfile_foo
+ MimeType=application/x-foo
+ PreferredGroups=FooInfo
+ PreferredItems=Items,Size
+ @endcode
+ @short @brief Base class for a meta information plugin
+
+*/
+public class KFilePlugin extends QObject {
+ protected KFilePlugin(Class dummy){super((Class) null);}
+ public native QMetaObject metaObject();
+ public native String className();
+ /**
+ Creates a new KFilePlugin instance. You need to implement a constructor
+ with the same argument list as this is required by KGenericFactory
+ @param parent the parent of the QObject, can be <code>0</code>
+ @param name the name of the QObject, can be <code>0</code>
+ @param args currently ignored
+ @short Creates a new KFilePlugin instance.
+ @see #addMimeTypeInfo
+ @see #addGroupInfo
+ @see #addItemInfo
+ @see org.kde.qt.QObject
+ */
+ /**
+ Read the info from the file in this method and insert it into the
+ provided KFileMetaInfo object. You can get the path to the file with
+ KFileMetaInfo.path(). Use appendGroup() and appendItem() to fill
+ <code>info</code> with the extracted values
+ @param info the information will be written here
+ @param what defines what to read, see KFileMetaInfo.What
+ @return @c true if successful, @c false if it failed
+
+ @short Read the info from the file in this method and insert it into the provided KFileMetaInfo object.
+ @see #writeInfo
+ */
+ public native boolean readInfo(KFileMetaInfo info, int what);
+ public native boolean readInfo(KFileMetaInfo info);
+ /**
+ Similar to the readInfo() but for writing the info back to the file.
+ If you don't have any writable keys, don't implement this method
+ @param info the information that will be written
+ @return @c true if successful, @c false if it failed
+
+ @short Similar to the readInfo() but for writing the info back to the file.
+ */
+ public native boolean writeInfo(KFileMetaInfo info);
+ /**
+ This method should create an appropriate validator for the specified
+ item if it's editable or return a null pointer if not. If you don't have
+ any editable items, you don't need to implement this method.
+ If you you don't need any validation, e.g. you accept any input, you can
+ simply return <code>null</code>, or not reimplement this method at all.
+ @param mimeType the mime type
+ @param group the group name of the validator item
+ @param key the key name of the validator item
+ @param parent the QObject parent, can be <code>0</code>
+ @param name the name of the QObject, can be <code>0</code>
+ @short This method should create an appropriate validator for the specified item if it's editable or return a null pointer if not.
+ */
+ public native QValidator createValidator(String mimeType, String group, String key, QObject parent, String name);
+}