/* This file is part of the KDE project Copyright (C) 1998, 1999 Torben Weis This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __ko_query_trader_h__ #define __ko_query_trader_h__ #include #include #include #include class TQObject; class TQStringList; class KoDocument; class KoFilter; class KoFilterChain; /** * Represents an available KOffice component * that supports the document interface. */ class KOFFICECORE_EXPORT KoDocumentEntry { public: KoDocumentEntry() { m_service = 0L; } // for TQValueList KoDocumentEntry( KService::Ptr service ); ~KoDocumentEntry() { } KService::Ptr service() const { return m_service; } /** * @return TRUE if the service pointer is null */ bool isEmpty() const { return m_service == 0L; } /** * @return name of the associated service */ TQString name() const { return m_service->name(); } /** * Mimetypes (and other service types) which this document can handle. */ TQStringList mimeTypes() const { return m_service->serviceTypes(); } /** * @return TRUE if the document can handle the requested mimetype. */ bool supportsMimeType( const TQString & _mimetype ) const { return mimeTypes().tqcontains( _mimetype ); } /** * Uses the factory of the component to create * a document. If that is not possible, 0 is returned. */ KoDocument* createDoc( KoDocument* tqparent = 0, const char* name = 0 ) const; /** * This function will query ksycoca to find all available components. * The result will only contain parts, which are embeddable into a document * * @param _constr is a constraint expression as used by KTrader. * You can use it to set additional restrictions on the available * components. */ static TQValueList query( const TQString & _constr = TQString() ); /** * This function will query the system to find all available filters. * * @param _onlyDocEmb specifies if only KOffice Parts should be listed which are * embeddable into other koDocuments, or all (if false) * (eg.: it makes no sense to embed Kexi into KWord, * but it makes sense to embed it into KoShell) * @param _constr is a constraint expression as used by KDEDs trader interface. * You can use it to set additional restrictions on the available * components. */ // ### TODO: MERGE WITH ABOVE METHODE WHEN BIC+SIC CHANGES ARE ALLOWED static TQValueList query( bool _onlyDocEmb,const TQString& _constr); /* this is how the signature should be looking after merging static TQValueList query( bool _onlyDocEmb =true, const TQString& _constr = TQString() ); or better: use an enum for the first arg. */ /** * This is a convenience function. * * @return a document entry for the KOffice component that supports * the requested mimetype and fits the user best. */ static KoDocumentEntry queryByMimeType( const TQString & mimetype ); private: KService::Ptr m_service; }; /** * Represents an available filter. */ class KoFilterEntry : public KShared { public: typedef KSharedPtr Ptr; KoFilterEntry() : weight( 0 ) { m_service = 0L; } // for TQValueList KoFilterEntry( KService::Ptr service ); ~KoFilterEntry() { } KoFilter* createFilter( KoFilterChain* chain, TQObject* tqparent = 0, const char* name = 0 ); /** * The imported mimetype(s). */ TQStringList import; /** * The exported mimetype(s). */ TQStringList export_; /** * The "weight" of this filter path. Has to be > 0 to be valid. */ unsigned int weight; /** * Do we have to check during runtime? */ TQString available; /** * @return TRUE if the filter can import the requested mimetype. */ bool imports( const TQString& _mimetype ) const { return ( import.tqcontains( _mimetype ) ); } /** * @return TRUE if the filter can export the requested mimetype. */ bool exports( const TQString& _m ) const { return ( export_.tqcontains( _m ) ); } /** * This function will query KDED to find all available filters. * * @param _constr is a constraint expression as used by KDEDs trader interface. * You can use it to set additional restrictions on the available * components. */ static TQValueList query( const TQString& _constr = TQString() ); KService::Ptr service() const { return m_service; } private: KService::Ptr m_service; }; #endif