diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 00bb99ac80741fc50ef8a289719373032f2391eb (patch) | |
tree | 3a5a9bf72f942784b38bf77dd66c534662fab5f2 /kmouth/phrasebook/phrasebook.h | |
download | tdeaccessibility-00bb99ac80741fc50ef8a289719373032f2391eb.tar.gz tdeaccessibility-00bb99ac80741fc50ef8a289719373032f2391eb.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeaccessibility@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kmouth/phrasebook/phrasebook.h')
-rw-r--r-- | kmouth/phrasebook/phrasebook.h | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/kmouth/phrasebook/phrasebook.h b/kmouth/phrasebook/phrasebook.h new file mode 100644 index 0000000..83cb3a9 --- /dev/null +++ b/kmouth/phrasebook/phrasebook.h @@ -0,0 +1,195 @@ +/*************************************************************************** + phrasebook.h - description + ------------------- + begin : Don Sep 19 2002 + copyright : (C) 2002 by Gunnar Schmi Dt + email : kmouth@schmi-dt.de + ***************************************************************************/ + +/*************************************************************************** + * * + * 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. * + * * + ***************************************************************************/ + +#ifndef PHRASEBOOK_H +#define PHRASEBOOK_H + +#include <qobject.h> +#include <qdragobject.h> +#include <qxml.h> + +#include <kaction.h> +#include <kprinter.h> + +class KURL; + +/** + * The class Phrase represents one phrase in a phrase book. + * @author Gunnar Schmi Dt + */ +class Phrase { + friend class PhraseBookParser; +public: + Phrase(); + Phrase (const QString &phrase); + Phrase (const QString &phrase, const QString &shortcut); + + QString getPhrase() const; + QString getShortcut() const; + + void setPhrase (const QString &phrase); + void setShortcut (const QString &shortcut); + +private: + QString phrase; + QString shortcut; +}; + +/** + * The class PhraseBookEntry implements a phrase book entry. That can be either + * a phrase or a start tag a sub phrase book. + * @author Gunnar Schmi Dt + */ +class PhraseBookEntry { +public: + PhraseBookEntry (); + PhraseBookEntry (Phrase phrase, int level = 1, bool isPhrase = true); + ~PhraseBookEntry () {}; + + void setPhrase (Phrase phrase, int level = 1, bool isPhrase = true); + + bool isPhrase() const; + Phrase getPhrase() const; + int getLevel() const; + +private: + bool isPhraseValue; + Phrase phrase; + int level; +}; + +typedef QValueList<PhraseBookEntry> PhraseBookEntryList; + +/** + * The class PhraseBook implements a phrase book. It mainly stores a + * token list where each token is a phrase book entry (either a phrase + * or a sub phrase book). The entries are placed into a tree structure + * as follows: + * + * The level of each entry tells the level in the tree (level=0 is the top + * level), each sub book in level i directly or indirectly contains all + * following entries until an entry of level at most i or the end of the + * token list. + * + * @author Gunnar Schmi Dt + */ +class PhraseBook : public PhraseBookEntryList { +public: + PhraseBook() : PhraseBookEntryList() {}; + ~PhraseBook() {}; + + /** opens a file containing a phrase book. Returns true if successful. */ + bool open (const KURL &url); + + /** decodes a phrase book. Returns true if successful. */ + bool decode (const QString &xml); + + /** decodes a phrase book. Returns true if successful. */ + bool decode (QXmlInputSource &source); + + /** Writes the phrases to a file. Returns true if successful. */ + bool save (const KURL &url); + + /** Writes the phrases to a file. Returns true if successful. */ + bool save (const KURL &url, bool asPhrasebook); + + /** Writes the phrases to a QTextStream. */ + void save (QTextStream &stream, bool asPhrasebook); + + /** Prints the phrases. */ + void print (KPrinter *pPrinter); + + /** Shows a file selector and writes the phrases to a file. + * @return 1, if the file got successfully written, + * 0, if the user canceled the operation, + * -1, if there was an error when saving the file. + */ + int save (QWidget *parent, const QString &title, KURL &url, bool phrasebookFirst = true); + + /** encodes the phrase book. Returns the encoded xml code. */ + QString encode (); + + /** Stores all entries in a QStringList. All hierarchy information and all + * shortcuts are ignored during this operation. + */ + QStringList toStringList(); + + /** Adds the entries of the book to both the given popup menu and the given + * toolbar. The corresponding actions will be inserted into phrases. + */ + void addToGUI (QPopupMenu *popup, KToolBar *toolbar, + KActionCollection *phrases, + QObject *receiver, const char *slot) const; + + /** Inserts book into a new sub phrase book. + * @param name the name of the new sub phrase book. + * @param book the phrase book to insert. + */ + void insert (const QString &name, const PhraseBook &book); +}; + +/** + * The class PhraseBookDrag implements drag and drop support for phrase books. + * @author Gunnar Schmi Dt + */ +class PhraseBookDrag: public QDragObject { + Q_OBJECT +public: + PhraseBookDrag (PhraseBook *book, QWidget *dragSource = 0, const char *name = 0); + PhraseBookDrag (QWidget *dragSource = 0, const char *name = 0); + ~PhraseBookDrag (); + + virtual void setBook (PhraseBook *book); + + const char *format (int i) const; + virtual QByteArray encodedData (const char *) const; + + static bool canDecode (const QMimeSource *e); + static bool decode (const QMimeSource *e, PhraseBook *book); + +private: + bool isEmpty; + QTextDrag xmlphrasebook; + QTextDrag xml; + QTextDrag plain; +}; + +class PhraseAction : public KAction { + Q_OBJECT +public: + PhraseAction (const QString& phrase, const QString& cut, const QObject* receiver, const char* slot, KActionCollection* parent) + : KAction (phrase, "phrase", KShortcut(cut), 0, 0, parent, phrase.latin1()) { + this->phrase = phrase; + connect (this, SIGNAL(slotActivated (const QString &)), receiver, slot); + }; + ~PhraseAction () { + } + +public slots: + void slotActivated () { + KAction::slotActivated(); + emit slotActivated (phrase); + } + +signals: + void slotActivated (const QString &phrase); + +private: + QString phrase; +}; + +#endif |