#ifndef KDEEDUGLOSSARY_H #define KDEEDUGLOSSARY_H /*************************************************************************** copyright : (C) 2005 by Carsten Niehaus email : cniehaus@kde.org ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include class QChar; class QDomDocument; class QListViewItem; class KListView; class KListViewSearchLine; class KActionCollection; class GlossaryItem; /** * @class Glossary * @author Carsten Niehaus * * This class stores all items to be displayed. It also * has access-methods to the items */ class Glossary { public: Glossary(); virtual ~Glossary(); /** * add the item @p item to the glossary */ void addItem( GlossaryItem* item ){ m_itemlist.append( item ); } TQValueList itemlist()const{ return m_itemlist; } /** * clear the Glossary */ void clear(){ m_itemlist.clear(); } /** * does this glossary have items? */ bool isEmpty() const; /** * Every glossary can have a name. It will be * set to @p name */ void setName( const TQString& name ){ m_name = name; } /** * @returns the name of the glossary */ TQString name()const{ return m_name; } /** * sets the internal list of items to @p list */ void setItemlist( TQValueList list ){ m_itemlist = list; } /** * Read a glossary from an XML file. * * @param url The path of the file to load * @param path The path of the pictures. Will be used as m_picturepath * * @return a pointer to the loaded glossary. Even in case of * error, this won't return 0 but an empty Glossary. */ static Glossary* readFromXML( const KURL& url, const TQString& path = 0 ); /** * Every glossaryitem can show pictures. [img src="foo.png] * will look for the file foo.png in the path defined be * @p path */ void setPicturePath( const TQString& path ){ m_picturepath = path; } TQString picturePath()const{ return m_picturepath; } /** * defines which picture to use as the background * of the htmlview. The dialog * will use the file specifiec by the @p filename */ void setBackgroundPicture( const TQString& filename ){ m_backgroundpicture = filename; } /** * @return the picuture used as the background in * this background */ TQString backgroundPicture()const{ return m_backgroundpicture; } private: /** * This methods parses the given xml-code. It will extract * the information of the items and return them as a * TQValueList */ virtual TQValueList readItems( TQDomDocument &itemDocument ); TQString m_backgroundpicture; /** * replaces the [img]-pseudocode with valid html. The path where * the pictures are stored will be used for pictures */ void fixImagePath(); /** * the path in which pictures of the glossary will be searched */ TQString m_picturepath; /** * Load the layout from an XML file. * * @param doc The TQDomDocument which will contain the read XML * contents. * @param url The path of the file to load * * @return a bool indicating whether the loading of the XML was * successfull or not */ bool loadLayout( TQDomDocument& doc, const KURL& url ); TQValueList m_itemlist; /** * the name of the glossary */ TQString m_name; }; /** * @class GlossaryItem * @author Carsten Niehaus * * A GlossaryItem stores the information of the content of * the item and its name. Furthermore, every item can have * a number of pictures or references associated to it. * These are stored as QStringLists. */ class GlossaryItem { public: GlossaryItem(){} ~GlossaryItem(){} void setName( const TQString& s ){ m_name = s; } void setDesc( const TQString& s){ m_desc = s; } void setRef( const TQStringList& s){ m_ref = s; } void setPictures( const TQString& s ){ m_pic = s; } TQString name() const { return m_name; } TQString desc() const { return m_desc; } TQStringList ref() const { return m_ref; } TQStringList pictures() const { return m_pic; } /** * @return the formated HTML code for current item. **/ TQString toHtml() const; /** * This method parses the references. * @return the HTML code with the references as HTML links */ TQString parseReferences() const; private: TQString m_name; TQString m_desc; TQStringList m_ref; TQStringList m_pic; }; /** * @class GlossaryDialog * @author Pino Toscano * @author Carsten Niehaus */ class GlossaryDialog : public KDialogBase { Q_OBJECT public: GlossaryDialog( bool folded = true, TQWidget *parent=0, const char *name=0); ~GlossaryDialog(); void keyPressEvent(TQKeyEvent*); /** * add a new glossary * * @param newgloss the new glossary to add */ void addGlossary( Glossary* newgloss ); private: TQValueList m_glossaries; /** * if true the items will be displayed folded */ bool m_folded; void updateTree(); KHTMLPart *m_htmlpart; KListView *m_glosstree; TQString m_htmlbasestring; KActionCollection* m_actionCollection; TQListViewItem* findTreeWithLetter( const TQChar&, TQListViewItem* ); KListViewSearchLine *m_search; private slots: void slotClicked( TQListViewItem * ); /** * The user clicked on a href. Emit the corresponding item */ void displayItem( const KURL& url, const KParts::URLArgs& args ); protected slots: virtual void slotClose(); signals: void closed(); }; #endif // KDEEDUGLOSSARY_H