//Auto-generated by kalyptus. DO NOT EDIT.
package org.kde.koala;

import org.kde.qt.Qt;
import org.kde.qt.QtSupport;
import org.kde.qt.QDataStream;
import java.util.ArrayList;
import org.kde.qt.QVariant;

/**

 A service type is the generic notion for a mimetype, a type of service
 instead of a type of file.
 For instance, KOfficeFilter is a service type.
 It is associated to services according to the user profile (kuserprofile.h).
 Service types are stored as desktop files in $KDEHOME/share/servicetypes.
		@short    A service type is the generic notion for a mimetype, a type of service  instead of a type of file.
		@see KService

*/
public class KServiceType extends KSycocaEntry  {
	protected KServiceType(Class dummy){super((Class) null);}
	/**	
		 Constructor.  You may pass in arguments to create a servicetype with
		 specific properties.
			@param _fullpath the path of the service type's desktop file
			@param _name the name of the service type
			@param _icon the icon name of the service type (can be null)
			@param _comment a comment (can be null)
		   		@short    Constructor.
	*/
	public KServiceType(String _fullpath, String _name, String _icon, String _comment) {
		super((Class) null);
		newKServiceType(_fullpath,_name,_icon,_comment);
	}
	private native void newKServiceType(String _fullpath, String _name, String _icon, String _comment);
	/**	
		 Construct a service type and take all informations from a config file.
			@param _fullpath path of the desktop file, set to "" if calling from
		                  a inherited constructor.
		   		@short    Construct a service type and take all informations from a config file.
	*/
	public KServiceType(String _fullpath) {
		super((Class) null);
		newKServiceType(_fullpath);
	}
	private native void newKServiceType(String _fullpath);
	/**	
		 Construct a service type and take all informations from a deskop file.
			@param config the configuration file
		   		@short    Construct a service type and take all informations from a deskop file.
	*/
	public KServiceType(KDesktopFile config) {
		super((Class) null);
		newKServiceType(config);
	}
	private native void newKServiceType(KDesktopFile config);
	/**	
			 The stream must already be positionned at the correct offset
		   		@short
	*/
	public KServiceType(QDataStream _str, int offset) {
		super((Class) null);
		newKServiceType(_str,offset);
	}
	private native void newKServiceType(QDataStream _str, int offset);
	/**	
		 Returns the icon associated with this service type. Some
		         derived classes offer special functions which take for
		         example an URL and returns a special icon for this
		         URL. An example is KMimeType, KFolderType and
		         others.
				@return the name of the icon, can be null.
   
		@short    Returns the icon associated with this service type.
	*/
	public native String icon();
	/**	
		 Returns the descriptive comment associated, if any.
				@return the comment, or null
   
		@short    Returns the descriptive comment associated, if any.
	*/
	public native String comment();
	/**	
		 Returns the name of this service type.
				@return the name of the service type
   
		@short    Returns the name of this service type.
	*/
	public native String name();
	/**	
		 Returns the relative path to the desktop entry file responsible for
		         this servicetype.
		 For instance inode/directory.desktop, or kpart.desktop
				@return the path of the desktop file
   
		@short    Returns the relative path to the desktop entry file responsible for          this servicetype.
	*/
	public native String desktopEntryPath();
	/**	
		 Checks whether this service type inherits another one.
				@return true if this service type inherits another one

		@short    Checks whether this service type inherits another one.
		@see #parentServiceType
	*/
	public native boolean isDerived();
	/**	
		 If this service type inherits from another service type,
		 return the name of the parent.
				@return the parent service type, or String. null if not set

		@short    If this service type inherits from another service type,  return the name of the parent.
		@see #isDerived
	*/
	public native String parentServiceType();
	/**	
		 Checks whether this service type is or inherits from <code>servTypeName.</code>
				@return true if this servicetype is or inherits from <code>servTypeName</code>

		@short    Checks whether this service type is or inherits from <code>servTypeName.</code>
	*/
	public native boolean inherits(String servTypeName);
	/**	
		 Returns the requested property. Some often used properties
		 have convenience access functions like name(),
		 comment() etc.
			@param _name the name of the property
				@return the property, or invalid if not found
   
		@short    Returns the requested property.
	*/
	public native QVariant property(String _name);
	/**	
		 Returns the list of all properties of this service type.
				@return the list of properties
   
		@short    Returns the list of all properties of this service type.
	*/
	public native ArrayList propertyNames();
	/**	
		 Checks whether the service type is valid.
				@return true if the service is valid (e.g. name is not empty)
   
		@short    Checks whether the service type is valid.
	*/
	public native boolean isValid();
	/**	
		 Returns the type of the property with the given <code>_name.</code>
			@param _name the name of the property
				@return the property type, or null if not found
   
		@short    Returns the type of the property with the given <code>_name.</code>
	*/
	public native int propertyDef(String _name);
	public native ArrayList propertyDefNames();
	// const QMap<QString, QVariant::Type>& propertyDefs(); >>>> NOT CONVERTED
	/**	
			 Save ourselves to the data stream.
		   		@short
	*/
	public native void save(QDataStream arg1);
	/**	
			 Load ourselves from the data stream.
		   		@short
	*/
	public native void load(QDataStream arg1);
	/**	
			 Pointer to parent serice type
		   		@short
	*/
	// KServiceType::Ptr parentType(); >>>> NOT CONVERTED
	/**	
			 Register service that provides this service type
		   		@short
	*/
	// void addService(KService::Ptr arg1); >>>> NOT CONVERTED
	/**	
			 List serices that provide this service type
		   		@short
	*/
	// KService::List services(); >>>> NOT CONVERTED
	/**	
		 Returns a pointer to the servicetype '_name' or null if the
		         service type is unknown.
		 VERY IMPORTANT : don't store the result in a KServiceType  !
			@param _name the name of the service type to search
				@return the pointer to the service type, or 0
   
		@short    Returns a pointer to the servicetype '_name' or 0L if the          service type is unknown.
	*/
	// KServiceType::Ptr serviceType(const QString& arg1); >>>> NOT CONVERTED
	/**	
		 Returns all services supporting the given servicetype name.
		 This doesn't take care of the user profile.
		 In fact it is used by KServiceTypeProfile,
		 which is used by KTrader, and that's the one you should use.
			@param _servicetype the name of the service type to search
				@return the list of all services of the given type
   
		@short    Returns all services supporting the given servicetype name.
	*/
	// KService::List offers(const QString& arg1); >>>> NOT CONVERTED
	/**	
		 Returns a list of all the supported servicetypes. Useful for
		         showing the list of available servicetypes in a listbox,
		         for example.
		 More memory consuming than the ones above, don't use unless
		 really necessary.
				@return the list of all services
   
		@short    Returns a list of all the supported servicetypes.
	*/
	// KServiceType::List allServiceTypes(); >>>> NOT CONVERTED
	protected native void init(KDesktopFile config);
	/** Deletes the wrapped C++ instance */
	protected native void finalize() throws InternalError;
	/** Delete the wrapped C++ instance ahead of finalize() */
	public native void dispose();
	/** Has the wrapped C++ instance been deleted? */
	public native boolean isDisposed();
}
