Logo Search packages:      
Sourcecode: kalzium version File versions  Download package

kdeeduglossary.h

#ifndef KDEEDUGLOSSARY_H
#define KDEEDUGLOSSARY_H
/***************************************************************************
 *   Copyright (C) 2005, 2006 by Carsten Niehaus <cniehaus@kde.org>        *
 *   Copyright (C) 2005 - 2007 by Pino Toscano <pino@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 <kdialog.h>

class QDomDocument;
class GlossaryItem;

/**
 * @class Glossary
 * @author Carsten Niehaus
 * @author Pino Toscano
 *
 * This class stores all items to be displayed. It also
 * has access-methods to the items
 */
00026 class Glossary
{
      public:
            /**
             * Creates a new glossary and add contents from an XML file.
             * Use isEmpty() to know if any items were loaded.
             *
             * @param url the path of the file to load
             * @param path the path of the pictures
             */
            explicit Glossary( const KUrl& url, const QString& path = QString() );

            /**
             * Creates a new empty glossary
             */
            Glossary();

            virtual ~Glossary();

            /**
             * add the item @p item to the glossary
             */
            void addItem( GlossaryItem* item );

            QList<GlossaryItem*> itemlist()const;

            /**
             * clear the Glossary
             */
            void 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 QString& name );

            /**
             * @returns the name of the glossary
             */
            QString name()const;

            /**
             * sets the internal list of items to @p list
             */
            void setItemlist( QList<GlossaryItem*> list );

            /**
             * Every glossaryitem can show pictures. [img src="foo.png]
             * will look for the file foo.png in the path defined by
             * @p path
             */
            void setPicturePath( const QString& path );

            QString picturePath()const;

            /**
             * 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 QString& filename );

            /**
             * @return the picuture used as the background in 
             * this background
             */
            QString backgroundPicture()const;

      protected:
            void init( const KUrl& url, const QString& path );
      
      private:
            /**
             * This methods parses the given XML code. It will extract
             * the information of the items and return them as a
             * QList<GlossaryItem*>
             */
            virtual QList<GlossaryItem*> readItems( QDomDocument &itemDocument );
            
            QString 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
             */
00122             QString m_picturepath;
            
            /**
             * Load the layout from an XML file.
             *
             * @param doc The QDomDocument 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
             *         successful or not
             */
            bool loadLayout( QDomDocument& doc, const KUrl& url );
      
            QList<GlossaryItem*> m_itemlist;
            
            /**
             * the name of the glossary
             */
00141             QString 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.
 */
00153 class GlossaryItem
{
      public:
            GlossaryItem(){}
            ~GlossaryItem(){}

            void setName( const QString& s );

            void setDesc( const QString& s);

            /**
             * Set the references for the current GlossaryItem to
             * @p s.
             * There's no need to sort the list before, as they
             * will be sorted automatically
             */
            void setRef( const QStringList& s);
      
            void setPictures( const QString& s );

            QString name() const;
            
            QString desc() const;
            
            QStringList ref() const;
            
            QStringList pictures() const;
            
            /**
             * @return the formated HTML code for current item.
             */
            QString toHtml() const;

            /**
             * This method parses the references.
             * @return the HTML code with the references as HTML links
             */
            QString parseReferences() const;

      private:
            QString m_name;
            QString m_desc;
            QStringList m_ref;
            QStringList m_pic;
};

/**
 * @class GlossaryDialog
 * @author Pino Toscano
 * @author Carsten Niehaus
 */
00204 class GlossaryDialog : public KDialog
{
      Q_OBJECT

      public:
            /**
             * Creates a new dialog for a glossary.
             *
             * @param parent the parent of the new dialog
             */
            explicit GlossaryDialog( QWidget *parent = 0 );

            virtual ~GlossaryDialog();

            /**
             * Add a new glossary.
             *
             * @param newgloss the new glossary to add
             * @param folded whether to fold the various items in subtrees depending on the
             * first letter of every item
             */
            void addGlossary( Glossary* newgloss, bool folded = true );

      protected:
            void keyPressEvent(QKeyEvent*);

      private:
            class Private;
            Private * const d;

            Q_PRIVATE_SLOT( d, void itemActivated( QTreeWidgetItem *, int ) )
            Q_PRIVATE_SLOT( d, void displayItem( const KUrl &, const KParts::OpenUrlArguments &, const KParts::BrowserArguments & ) )
};

#endif // KDEEDUGLOSSARY_H


Generated by  Doxygen 1.6.0   Back to index