summaryrefslogtreecommitdiffabout
path: root/kabc/vcard
Side-by-side diff
Diffstat (limited to 'kabc/vcard') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/vcard/ContentLine.cpp30
-rw-r--r--kabc/vcard/VCardv.cpp77
2 files changed, 65 insertions, 42 deletions
diff --git a/kabc/vcard/ContentLine.cpp b/kabc/vcard/ContentLine.cpp
index c368172..2f88cde 100644
--- a/kabc/vcard/ContentLine.cpp
+++ b/kabc/vcard/ContentLine.cpp
@@ -268,16 +268,43 @@ ContentLine::_parse()
}
*value_ = valuePart;
}
void
ContentLine::_assemble()
{
+ //strRep_.truncate(0);
+ QString line;
+ if (!group_.isEmpty())
+ line = group_ + '.';
+ line += name_;
+ ParamListIterator it(paramList_);
+ for (; it.current(); ++it)
+ line += ";" + it.current()->asString();
+
+ if (value_ != 0)
+ line += ":" + value_->asString();
+
+ line = line.replace( QRegExp( "\n" ), "\\n" );
+
+ // Fold lines longer than 72 chars
+ const int maxLen = 72;
+ uint cursor = 0;
+ QString cut;
+ while( line.length() > ( cursor + 1 ) * maxLen ) {
+ cut += line.mid( cursor * maxLen, maxLen );
+ cut += "\r\n ";
+ ++cursor;
+ }
+ cut += line.mid( cursor * maxLen );
+ strRep_ = cut.latin1();
+ //qDebug("ContentLine::_assemble()\n%s*****", strRep_.data());
+#if 0
vDebug("Assemble (argl) - my name is \"" + name_ + "\"");
strRep_.truncate(0);
QCString line;
if (!group_.isEmpty())
line += group_ + '.';
@@ -302,17 +329,18 @@ ContentLine::_assemble()
const int maxLen = 72;
uint cursor = 0;
while( line.length() > ( cursor + 1 ) * maxLen ) {
strRep_ += line.mid( cursor * maxLen, maxLen );
strRep_ += "\r\n ";
++cursor;
}
strRep_ += line.mid( cursor * maxLen );
- //qDebug("ContentLine::_assemble()\n%s*****", strRep_.data());
+ qDebug("ContentLine::_assemble()\n%s*****", strRep_.data());
+#endif
}
void
ContentLine::clear()
{
group_.truncate(0);
name_.truncate(0);
paramList_.clear();
diff --git a/kabc/vcard/VCardv.cpp b/kabc/vcard/VCardv.cpp
index bc80707..49bfe43 100644
--- a/kabc/vcard/VCardv.cpp
+++ b/kabc/vcard/VCardv.cpp
@@ -18,16 +18,19 @@
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include <qcstring.h>
#include <qstrlist.h>
+#include <qstringlist.h>
+#include <qstring.h>
+#include <qvaluelist.h>
#include <VCardEntity.h>
#include <VCardVCard.h>
#include <VCardContentLine.h>
#include <VCardRToken.h>
#include <VCardDefines.h>
@@ -91,124 +94,115 @@ VCard::operator == (VCard & x)
VCard::~VCard()
{
}
void
VCard::_parse()
{
- vDebug("parse() called");
- QStrList l;
+
+ QStringList l;
+ QStrList sl;
- RTokenise(strRep_, "\r\n", l);
+ RTokenise(strRep_, "\r\n", sl);
- if (l.count() < 3) { // Invalid VCARD !
- vDebug("Invalid vcard");
+ if (sl.count() < 3) { // Invalid VCARD !
+ //qDebug("invalid vcard ");
return;
}
-
+ l = QStringList::fromStrList( sl );
// Get the first line
- QCString beginLine = QCString(l.at(0)).stripWhiteSpace();
-
- vDebug("Begin line == \"" + beginLine + "\"");
+ QString beginLine = l[0].stripWhiteSpace();
// Remove extra blank lines
- while (QCString(l.last()).isEmpty())
+ while (l.last().isEmpty())
l.remove(l.last());
// Now we know this is the last line
- QCString endLine = l.last();
+ QString endLine = l.last();
// Trash the first and last lines as we have seen them.
- l.remove(0u);
+ l.remove(l.first());
l.remove(l.last());
///////////////////////////////////////////////////////////////
// FIRST LINE
int split = beginLine.find(':');
if (split == -1) { // invalid, no BEGIN
vDebug("No split");
return;
}
- QCString firstPart(beginLine.left(split));
- QCString valuePart(beginLine.mid(split + 1));
+ QString firstPart(beginLine.left(split));
+ QString valuePart(beginLine.mid(split + 1));
split = firstPart.find('.');
if (split != -1) {
group_ = firstPart.left(split);
firstPart = firstPart.right(firstPart.length() - split - 1);
}
- if (qstrnicmp(firstPart, "BEGIN", 5) != 0) { // No BEGIN !
- vDebug("No BEGIN");
+ if (firstPart.left(5) != "BEGIN" ) { // No BEGIN !
+ qDebug("no BEGIN in vcard ");
return;
}
- if (qstrnicmp(valuePart, "VCARD", 5) != 0) { // Not a vcard !
- vDebug("No VCARD");
+ if (valuePart.left(5) != "VCARD") { // Not a vcard !
+ qDebug("not a VCARD ");
return;
}
///////////////////////////////////////////////////////////////
// CONTENT LINES
//
vDebug("Content lines");
// Handle folded lines.
- QStrList refolded;
-
- QStrListIterator it(l);
+ QStringList refolded;
- QCString cur;
- for (; it.current(); ++it) {
+ QStringList::Iterator it = l.begin();
- cur = it.current();
+ QString cur;
+ for (; it != l.end(); ++it) {
+ cur = (*it);
++it;
-
- while (
- it.current() &&
- it.current()[0] == ' ' &&
- strlen(it.current()) != 1)
- {
- cur += it.current() + 1;
+ while ( it!= l.end() && (*it).at(0) == ' ' && (*it).length()!= 1) {
+ cur += (*it) ;
++it;
}
-
--it;
-
refolded.append(cur);
}
-
- QStrListIterator it2(refolded);
-
- for (; it2.current(); ++it2) {
- vDebug("New contentline using \"" + QCString(it2.current()) + "\"");
- ContentLine * cl = new ContentLine(it2.current());
-
+ QStringList::Iterator it2 = refolded.begin();
+ for (; it2 != refolded.end(); ++it2) {
+ ContentLine * cl = new ContentLine(QCString((*it2).latin1()));
cl->parse();
if (cl->value() == 0)
{
- qDebug("Content line could not be parsed. Discarded: %s", it2.current());
+ qDebug("Content line could not be parsed. Discarded: %s", (*it2).latin1());
delete cl;
}
else
contentLineList_.append(cl);
}
///////////////////////////////////////////////////////////////
// LAST LINE
+
+ // LR: sorry, but the remaining code in this method makes no sense
+
+#if 0
split = endLine.find(':');
if (split == -1) // invalid, no END
return;
firstPart = endLine.left(split);
valuePart = endLine.right(firstPart.length() - split - 1);
@@ -219,16 +213,17 @@ VCard::_parse()
firstPart = firstPart.right(firstPart.length() - split - 1);
}
if (qstricmp(firstPart, "END") != 0) // No END !
return;
if (qstricmp(valuePart, "VCARD") != 0) // Not a vcard !
return;
+#endif
}
void
VCard::_assemble()
{
vDebug("Assembling vcard");
strRep_ = "BEGIN:VCARD\r\n";
strRep_ += "VERSION:3.0\r\n";