//Auto-generated by kalyptus. DO NOT EDIT.
namespace Kimono {
    using System;
    using Qyoto;
    using System.Collections.Generic;
    /// <remarks>
    ///  A service type is, well, a type of service, where a service is an application or plugin.
    ///  For instance, "KOfficeFilter", which is the type of all koffice filters, is a service type.
    ///  In order to discover services of a given type, using KServiceTypeTrader.
    ///  Service types are stored as desktop files in $KDEDIR/share/servicetypes.
    /// </remarks>        <short>    A service type is, well, a type of service, where a service is an application or plugin.</short>
    ///         <see> KService</see>
    ///         <see> KServiceTypeTrader</see>
    [SmokeClass("KServiceType")]
    public class KServiceType : KSycocaEntry, IDisposable {
        protected KServiceType(Type dummy) : base((Type) null) {}
        protected new void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(KServiceType), this);
        }
        private static SmokeInvocation staticInterceptor = null;
        static KServiceType() {
            staticInterceptor = new SmokeInvocation(typeof(KServiceType), null);
        }
        // KServiceType* KServiceType(KServiceTypePrivate& arg1); >>>> NOT CONVERTED
        // KServiceType* KServiceType(KServiceTypePrivate& arg1,const QString& arg2,const QString& arg3); >>>> NOT CONVERTED
        /// <remarks>
        ///  Construct a service type and take all information from a desktop file.
        /// <param> name="config" the configuration file
        ///      </param></remarks>        <short>    Construct a service type and take all information from a desktop file.</short>
        public KServiceType(KDesktopFile config) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("KServiceType#", "KServiceType(KDesktopFile*)", typeof(void), typeof(KDesktopFile), config);
        }
        /// <remarks>
        ///  The stream must already be positionned at the correct offset
        ///      </remarks>        <short>   </short>
        public KServiceType(QDataStream _str, int offset) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("KServiceType#$", "KServiceType(QDataStream&, int)", typeof(void), typeof(QDataStream), _str, typeof(int), offset);
        }
        /// <remarks>
        ///  Returns the descriptive comment associated, if any.
        /// </remarks>        <return> the comment, or string()
        ///      </return>
        ///         <short>    Returns the descriptive comment associated, if any.</short>
        public string Comment() {
            return (string) interceptor.Invoke("comment", "comment() const", typeof(string));
        }
        /// <remarks>
        ///  Checks whether this service type inherits another one.
        /// </remarks>        <return> true if this service type inherits another one
        /// </return>
        ///         <short>    Checks whether this service type inherits another one.</short>
        ///         <see> parentServiceType</see>
        public bool IsDerived() {
            return (bool) interceptor.Invoke("isDerived", "isDerived() const", typeof(bool));
        }
        /// <remarks>
        ///  If this service type inherits from another service type,
        ///  return the name of the parent.
        /// </remarks>        <return> the parent service type, or string. null if not set
        /// </return>
        ///         <short>    If this service type inherits from another service type,  return the name of the parent.</short>
        ///         <see> isDerived</see>
        public string ParentServiceType() {
            return (string) interceptor.Invoke("parentServiceType", "parentServiceType() const", typeof(string));
        }
        /// <remarks>
        ///  Checks whether this service type is or inherits from <code>servTypeName.</code>
        /// </remarks>        <return> true if this servicetype is or inherits from <code>servTypeName</code>
        ///      </return>
        ///         <short>    Checks whether this service type is or inherits from <code>servTypeName.</code></short>
        public bool Inherits(string servTypeName) {
            return (bool) interceptor.Invoke("inherits$", "inherits(const QString&) const", typeof(bool), typeof(string), servTypeName);
        }
        /// <remarks>
        ///  Returns the type of the property definition with the given <code>_name.</code>
        /// <param> name="_name" the name of the property
        /// </param></remarks>        <return> the property type, or null if not found
        /// </return>
        ///         <short>    Returns the type of the property definition with the given <code>_name.</code></short>
        ///         <see> propertyDefNames</see>
        public QVariant.TypeOf PropertyDef(string _name) {
            return (QVariant.TypeOf) interceptor.Invoke("propertyDef$", "propertyDef(const QString&) const", typeof(QVariant.TypeOf), typeof(string), _name);
        }
        /// <remarks>
        ///  Returns the list of all property definitions for this servicetype.
        ///  Those are properties of the services implementing this servicetype.
        ///  For instance,
        ///  @code
        ///  [PropertyDef.X-KDevelop-Version]
        ///  Type=int
        ///  @endcode
        ///  means that all kdevelop plugins have in their .desktop file a line like
        ///  @code
        ///  X-KDevelop-Version=<some value>
        ///  @endcode
        ///      </remarks>        <short>    Returns the list of all property definitions for this servicetype.</short>
        public List<string> PropertyDefNames() {
            return (List<string>) interceptor.Invoke("propertyDefNames", "propertyDefNames() const", typeof(List<string>));
        }
        public Dictionary<string, QVariant.TypeOf> PropertyDefs() {
            return (Dictionary<string, QVariant.TypeOf>) interceptor.Invoke("propertyDefs", "propertyDefs() const", typeof(Dictionary<string, QVariant.TypeOf>));
        }
        /// <remarks>
        ///  Pointer to parent service type
        ///      </remarks>        <short>   </short>
        public KServiceType ParentType() {
            return (KServiceType) interceptor.Invoke("parentType", "parentType()", typeof(KServiceType));
        }
        /// <remarks>
        ///  Register offset into offers list
        ///      </remarks>        <short>   </short>
        public void SetServiceOffersOffset(int offset) {
            interceptor.Invoke("setServiceOffersOffset$", "setServiceOffersOffset(int)", typeof(void), typeof(int), offset);
        }
        /// <remarks>
        ///      </remarks>        <short>   </short>
        public int ServiceOffersOffset() {
            return (int) interceptor.Invoke("serviceOffersOffset", "serviceOffersOffset() const", typeof(int));
        }
        /// <remarks>
        ///  The stream must already be positionned at the correct offset
        ///       </remarks>        <short>   </short>
        /// <remarks>
        ///  Constructor for KMimeType.
        /// <param> name="_name" the name of the service type
        /// </param><param> name="_comment" a comment (can be empty)
        ///      </param></remarks>        <short>    Constructor for KMimeType.</short>
        ~KServiceType() {
            interceptor.Invoke("~KServiceType", "~KServiceType()", typeof(void));
        }
        public new void Dispose() {
            interceptor.Invoke("~KServiceType", "~KServiceType()", typeof(void));
        }
        /// <remarks>
        ///  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="_name" the name of the service type to search
        /// </param></remarks>        <return> the pointer to the service type, or 0
        ///      </return>
        ///         <short>    Returns a pointer to the servicetype '_name' or 0L if the          service type is unknown.</short>
        public static KServiceType ServiceType(string _name) {
            return (KServiceType) staticInterceptor.Invoke("serviceType$", "serviceType(const QString&)", typeof(KServiceType), typeof(string), _name);
        }
        /// <remarks>
        ///  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.
        /// </remarks>        <return> the list of all services
        ///      </return>
        ///         <short>    Returns a list of all the supported servicetypes.</short>
        public static List<KServiceType> AllServiceTypes() {
            return (List<KServiceType>) staticInterceptor.Invoke("allServiceTypes", "allServiceTypes()", typeof(List<KServiceType>));
        }
    }
}
