summaryrefslogtreecommitdiffstats
path: root/kpilot/conduits/docconduit/DOC-converter.h
diff options
context:
space:
mode:
Diffstat (limited to 'kpilot/conduits/docconduit/DOC-converter.h')
-rw-r--r--kpilot/conduits/docconduit/DOC-converter.h183
1 files changed, 183 insertions, 0 deletions
diff --git a/kpilot/conduits/docconduit/DOC-converter.h b/kpilot/conduits/docconduit/DOC-converter.h
new file mode 100644
index 000000000..f3747ea1d
--- /dev/null
+++ b/kpilot/conduits/docconduit/DOC-converter.h
@@ -0,0 +1,183 @@
+#ifndef _DOC_CONVERTER_H
+#define _DOC_CONVERTER_H
+/* DOC-converter.h KPilot
+**
+** Copyright (C) 2002-2003 by Reinhold Kainhofer
+**
+*/
+
+/*
+** 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.
+**
+** This program 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 General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-pim@kde.org
+*/
+
+
+
+#define DOC_UNCOMPRESSED 1
+#define DOC_COMPRESSED 2
+
+
+#define BMK_SUFFIX ".bmk"
+#define PDBBMK_SUFFIX ".bm"
+
+#include <qptrlist.h>
+#include <qobject.h>
+
+class PilotDatabase;
+
+
+/****************************************************************************************************
+ * various bookmark classes. Most important is the bmkList findMatches(QString, bmkList &) function,
+ * which needs to return a list of all bookmarks found for the given bookmark expression.
+ * A bookmark usually consists of a bookmark text and an offset into the text document.
+ ****************************************************************************************************/
+
+class docBookmark;
+#define bmkList QPtrList<docBookmark>
+#define bmkSortedList QSortedList<docBookmark>
+
+class docBookmark {
+public:
+ static bool compare_pos;
+ docBookmark():bmkName(), position(0) { };
+ docBookmark(QString name, long int pos):bmkName(name), position(pos) { };
+ docBookmark(const docBookmark &bmk):bmkName(bmk.bmkName),position(bmk.position){};
+ virtual ~ docBookmark() { };
+ virtual int findMatches(QString, bmkList &fBookmarks) {
+ FUNCTIONSETUP;
+ fBookmarks.append(new docBookmark(*this));
+ return 1;
+ };
+
+ QString bmkName;
+ long int position;
+};
+
+class docMatchBookmark:public docBookmark {
+ public:
+ docMatchBookmark():docBookmark() { from=0; to=100;};
+ docMatchBookmark(QString pattrn, int options=0):docBookmark(),
+ pattern(pattrn), opts(options) { from=0; to=100; };
+ docMatchBookmark(QString pattrn, QString bmkname,
+ int options=0):docBookmark(bmkname, 0), pattern(pattrn),
+ opts(options) { from=0; to=100; };
+ virtual ~ docMatchBookmark() { };
+
+ virtual int findMatches(QString, bmkList &fBookmarks);
+ QString pattern;
+ int opts;
+ int from, to;
+};
+
+class docRegExpBookmark:public docMatchBookmark {
+ public:
+ docRegExpBookmark():docMatchBookmark() { capSubexpression=-1;};
+ docRegExpBookmark(QString regexp, int cap=0,
+ int options=0):docMatchBookmark(regexp, options) {capSubexpression=cap; };
+ docRegExpBookmark(QString pattrn, QString bmkname,
+ int options=0):docMatchBookmark(pattrn, bmkname, options) { capSubexpression=-1; };
+ virtual ~ docRegExpBookmark() { };
+
+ virtual int findMatches(QString, bmkList &fBookmarks);
+ int capSubexpression;
+};
+
+
+/*************************************************************************************************************
+ * The converter class that does the real work for us.
+ *************************************************************************************************************/
+
+class DOCConverter:public QObject {
+Q_OBJECT
+private:
+ PilotDatabase * docdb;
+ QString txtfilename;
+ QString bmkfilename;
+ bool compress;
+
+ bmkList fBookmarks;
+public:
+ enum eSortBookmarksEnum
+ {
+ eSortNone,
+ eSortPos,
+ eSortName
+ } eSortBookmarks;
+
+public:
+ DOCConverter(QObject *parent=0L, const char *name=0L);
+ virtual ~ DOCConverter();
+
+ QString readText();
+ void setTXTpath(QString path, QString file);
+ void setTXTpath(QString filename);
+ void setPDB(PilotDatabase * dbi);
+ QString txtFilename() const {return txtfilename;}
+ QString bmkFilename() const {return bmkfilename;}
+ void setBmkFilename(QString bmkf) { bmkfilename=bmkf;}
+
+ bool getCompress() const { return compress; };
+ void setCompress(bool newcomp) {compress=newcomp;};
+
+ bool convertTXTtoPDB();
+ bool convertPDBtoTXT();
+
+ int setBookmarks(bmkList bookmarks) {
+ fBookmarks = bookmarks;
+ return fBookmarks.count();
+ };
+ int clearBookmarks() {
+ fBookmarks.clear();
+ return fBookmarks.count();
+ };
+ int addBookmark(docBookmark*bookmark) {
+ fBookmarks.append(bookmark);
+ return fBookmarks.count();
+ };
+
+ int findBmkEndtags(QString &, bmkList&);
+ int findBmkInline(QString &, bmkList&);
+ int findBmkFile(QString &, bmkList&);
+
+
+ void setSort(enum eSortBookmarksEnum sort) {eSortBookmarks=sort;}
+ enum eSortBookmarksEnum getSort() {return eSortBookmarks;}
+
+ enum eBmkTypesEnum {
+ eBmkNone = 0,
+ eBmkFile = 1,
+ eBmkInline = 2,
+ eBmkEndtags = 4,
+ eBmkDefaultBmkFile = 8
+ } fBmkTypes;
+ void setBookmarkTypes(int types) {
+ fBmkTypes = (eBmkTypesEnum) types;
+ };
+
+protected:
+ int findBookmarks();
+
+private:
+ void readConfig();
+signals:
+ void logMessage(const QString &);
+ void logError(const QString &);
+};
+
+#endif