author | alwin <alwin> | 2004-02-22 23:56:05 (UTC) |
---|---|---|
committer | alwin <alwin> | 2004-02-22 23:56:05 (UTC) |
commit | eba25a5ebeca30b7124e7fae80685dbd1c9a985d (patch) (side-by-side diff) | |
tree | d62dd266e9b57f3eae34612f5d0fc4cf0b625c20 /noncore/net/mailit/textparser.cpp | |
parent | 666a49773d06ac94c19996d763854725c2f7a578 (diff) | |
download | opie-eba25a5ebeca30b7124e7fae80685dbd1c9a985d.zip opie-eba25a5ebeca30b7124e7fae80685dbd1c9a985d.tar.gz opie-eba25a5ebeca30b7124e7fae80685dbd1c9a985d.tar.bz2 |
moved mailit into unsupported area 'cause replaced by opiemail3
Diffstat (limited to 'noncore/net/mailit/textparser.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/net/mailit/textparser.cpp | 304 |
1 files changed, 0 insertions, 304 deletions
diff --git a/noncore/net/mailit/textparser.cpp b/noncore/net/mailit/textparser.cpp deleted file mode 100644 index e5c9f7c..0000000 --- a/noncore/net/mailit/textparser.cpp +++ b/dev/null @@ -1,304 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ -#include "textparser.h" - -TextParser::TextParser(const QString &in, const QString &lineBreak) -{ - data = in; - lineSep = lineBreak; - - init(); - createSeparators(); - split(); -} - -TextParser::TextParser(const QString &in, const QString &lineBreak, const QString &sep) -{ - data = in; - lineSep = lineBreak; - - init(); - separators = sep; - split(); -} - -void TextParser::init() -{ - lineCount = 0; - linePos = 0; - totalElmCount = 0; - separatorPos = -1; //not initialized - wordPos = -1; //not initialized - sepAtLine = 0; - sepAtPosElm = -1; //such that nextSep equals 0 - wordAtLine = 0; - wordAtPosElm = -1; //such that nextWord equals 0 - atLine = 0; - atPosElm = 0; -} - -void TextParser::createSeparators() -{ - separators = " @#,.:;<>*/(){}|'?-+=_"; -} - -/* Returns pos of given search criteria, -1 if not found */ -int TextParser::find(const QString &target, QChar sep, int pos, bool upperCase) -{ - - t_splitElm parsstr; - QString pString, pTarget; - pTarget = target; - int atLine = 0, atPosElm = 0; - - getLineReference(pos,&atLine,&atPosElm); - - for (int x = pos; x < totalElmCount; x++) - { - parsstr=splitDone[atLine].elm[atPosElm++]; - - if (upperCase) - { - pString=parsstr.str.upper(); - pTarget=pTarget.upper(); - } - else - { - pString=parsstr.str; - } - if ((pString == pTarget) && (parsstr.separator == sep)) - { - return x; - } - if (atPosElm >= splitDone[atLine].elmCount) - { //new Line - atLine++; - atPosElm = 0; - } - } - return -1; -} - -int TextParser::elmCount() -{ - return totalElmCount; -} - -QChar TextParser::separatorAt(int pos) -{ - if (getLineReference(pos, &sepAtLine, &sepAtPosElm) == -1) - return QChar::null; - - separatorPos = pos; - return splitDone[sepAtLine].elm[sepAtPosElm].separator; -} - -QChar TextParser::nextSeparator() -{ - sepAtPosElm++; - if (splitDone[sepAtLine].elmCount <= sepAtPosElm) { - sepAtLine++; - sepAtPosElm = 0; - } - - separatorPos++; - return splitDone[sepAtLine].elm[sepAtPosElm].separator; -} - -bool TextParser::hasNextSeparator() -{ - return ((separatorPos+1) < totalElmCount); -} - -QString TextParser::wordAt(int pos) -{ - if (getLineReference(pos, &wordAtLine, &wordAtPosElm) == -1) - return NULL; - - wordPos = pos; - return splitDone[wordAtLine].elm[wordAtPosElm].str; -} - -QString TextParser::nextWord() -{ - wordAtPosElm++; - if (splitDone[wordAtLine].elmCount <= wordAtPosElm) { - wordAtLine++; - wordAtPosElm = 0; - } - - wordPos++; - return splitDone[wordAtLine].elm[wordAtPosElm].str; -} - -bool TextParser::hasNextWord() -{ - return ((wordPos + 1) < totalElmCount); -} - -QString TextParser::getString(int *pos, QChar stop, bool lineEnd = false) -{ - QString returnStr = wordAt(*pos); - QChar chr = separatorAt(*pos); - QString s; - - if (returnStr == "") - return ""; - if (chr == stop) - return returnStr; - - if (!lineEnd) { - while ((chr != stop) && hasNextWord()) { - returnStr.append(chr); - returnStr += nextWord(); - chr = nextSeparator(); - } - } else { //copy from pos to end of line - getLineReference(*pos, &atLine, &atPosElm); - returnStr = ""; - while (atPosElm < splitDone[atLine].elmCount) { - if (splitDone[atLine].elm[atPosElm].str != "") { - returnStr += splitDone[atLine].elm[atPosElm].str; - } - chr = splitDone[atLine].elm[atPosElm].separator; - if (!chr.isNull() && (int) chr != 0) { - returnStr.append(splitDone[atLine].elm[atPosElm].separator); - } - atPosElm++; - } - } - - *pos = wordPos; - return returnStr; -} - -QString TextParser::getNextLine() -{ - atLine++; - atPosElm = 0; - if (atLine < lineCount) - return splitDone[atLine].str; - return ""; -} - -bool TextParser::hasNextLine() -{ - if (atLine+1 < lineCount) - return TRUE;; - return FALSE; -} - -int TextParser::endLinePos(int pos) -{ - if ( (getLineReference(pos, &atLine, &atPosElm)) == -1) - return -1; - - return (pos + (splitDone[atLine].elmCount - atPosElm) + 1); -} - -int TextParser::getLineReference(int pos, int *line, int *inLinePos) -{ - int currentPos = 0; - - for (int x = 0; x < lineCount; x++) { - if ( currentPos + splitDone[x].elmCount > pos) { - *line = x; - *inLinePos = pos - currentPos; - return 0; //pos found okay - } - currentPos += splitDone[x].elmCount; - } - return -1; //no reference found -} - -void TextParser::split() -{ - t_splitLine newLine; - - while ((uint) linePos < data.length()) { - newLine = nextLine(); - splitDone[lineCount] = splitLine(newLine); - totalElmCount += splitDone[lineCount].elmCount; - lineCount++; - } -} - -t_splitLine TextParser::splitLine(t_splitLine line) -{ - uint pos = 0; - uint elmCount = 0; - t_splitLine tempLine = line; - - tempLine.str = line.str.simplifyWhiteSpace(); - tempLine.elm[0].str = ""; - while ( pos < line.str.length() ) { - if ( isSeparator(tempLine.str[pos]) ) { - tempLine.elm[elmCount].separator = tempLine.str[pos]; - elmCount++; - pos++; - while (tempLine.str[pos] == ' ') - pos++; - if (pos > line.str.length()) - elmCount--; - tempLine.elm[elmCount].str = ""; - } else { - if (!tempLine.str[pos].isNull()) - tempLine.elm[elmCount].str += tempLine.str[pos]; - pos++; - } - } - - tempLine.elmCount = elmCount + 1; - return tempLine; -} - -bool TextParser::isSeparator(QChar chr) -{ - for (uint x = 0; x < separators.length(); x++) { - if (chr == separators[x]) - return true; - } - return false; -} - -t_splitLine TextParser::nextLine() -{ - int newLinePos; - t_splitLine lineType; - - newLinePos = data.find(lineSep, linePos); - - lineType.lineType = NewLine; - lineType.str = ""; - - if (newLinePos == -1) { - newLinePos = data.length(); - lineType.lineType = LastLine; - } - - for (int x = linePos; x < newLinePos; x++) - lineType.str += data[x]; - - linePos = newLinePos; - if ((uint) linePos < data.length()) //if not EOF, add length of lineSep - linePos += lineSep.length(); - - return lineType; -} |