diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2011-02-16 20:17:18 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2011-02-16 20:17:18 +0000 |
commit | cb7eddb91455a69cf66fcd717e91a51ca5e2cfef (patch) | |
tree | cf5546e4d7c44370fbe9ca2be937bd254f30ebaa /lib/pilotTodoEntry.cc | |
download | kpilot-cb7eddb91455a69cf66fcd717e91a51ca5e2cfef.tar.gz kpilot-cb7eddb91455a69cf66fcd717e91a51ca5e2cfef.zip |
Moved kpilot from kdepim to applications, as the core Trinity libraries should not contain hardware-dependent software
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kpilot@1221127 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'lib/pilotTodoEntry.cc')
-rw-r--r-- | lib/pilotTodoEntry.cc | 270 |
1 files changed, 270 insertions, 0 deletions
diff --git a/lib/pilotTodoEntry.cc b/lib/pilotTodoEntry.cc new file mode 100644 index 0000000..1ed9dfa --- /dev/null +++ b/lib/pilotTodoEntry.cc @@ -0,0 +1,270 @@ +/* KPilot +** +** Copyright (C) 1998-2001 by Dan Pilone +** Copyright (C) 2003-2004 Reinhold Kainhofer <[email protected]> +** +** This is a C++ wrapper for the todo-list entry structures. +*/ + +/* +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU Lesser 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 [email protected] +*/ +#include "options.h" + + +#include <stdlib.h> + +#include <tqdatetime.h> +#include <tqnamespace.h> + +#include <kglobal.h> +#include <kdebug.h> + + +#include "pilotTodoEntry.h" + + +PilotTodoEntry::PilotTodoEntry() : + fDescriptionSize(0), + fNoteSize(0) +{ + FUNCTIONSETUP; + ::memset(&fTodoInfo, 0, sizeof(struct ToDo)); +} + +PilotTodoEntry::PilotTodoEntry(PilotRecord * rec) : + PilotRecordBase(rec), + fDescriptionSize(0), + fNoteSize(0) +{ + ::memset(&fTodoInfo, 0, sizeof(struct ToDo)); + if (rec) + { + pi_buffer_t b; + b.data = (unsigned char *) rec->data(); + b.allocated = b.used = rec->size(); + unpack_ToDo(&fTodoInfo, &b, todo_v1); + if (fTodoInfo.description) + { + // Assume size of buffer allocated is just large enough; + // count trailing NUL as well. + fDescriptionSize = strlen(fTodoInfo.description)+1; + } + if (fTodoInfo.note) + { + // Same + fNoteSize = strlen(fTodoInfo.note)+1; + } + } + +} + + +PilotTodoEntry::PilotTodoEntry(const PilotTodoEntry & e) : + PilotRecordBase( &e ), + fDescriptionSize(0), + fNoteSize(0) +{ + FUNCTIONSETUP; + ::memcpy(&fTodoInfo, &e.fTodoInfo, sizeof(fTodoInfo)); + // See PilotDateEntry::operator = for details + fTodoInfo.description = 0L; + fTodoInfo.note = 0L; + + setDescriptionP(e.getDescriptionP()); + setNoteP(e.getNoteP()); +} + + +PilotTodoEntry & PilotTodoEntry::operator = (const PilotTodoEntry & e) +{ + if (this != &e) + { + KPILOT_FREE(fTodoInfo.description); + KPILOT_FREE(fTodoInfo.note); + + ::memcpy(&fTodoInfo, &e.fTodoInfo, sizeof(fTodoInfo)); + // See PilotDateEntry::operator = for details + fTodoInfo.description = 0L; + fTodoInfo.note = 0L; + fDescriptionSize = 0; + fNoteSize = 0; + + setDescriptionP(e.getDescriptionP()); + setNoteP(e.getNoteP()); + + } + + return *this; +} + +TQString PilotTodoEntry::getTextRepresentation(Qt::TextFormat richText) +{ + TQString text, tmp; + TQString par = (richText==Qt::RichText) ?CSL1("<p>"): TQString(); + TQString ps = (richText==Qt::RichText) ?CSL1("</p>"):CSL1("\n"); + TQString br = (richText==Qt::RichText) ?CSL1("<br/>"):CSL1("\n"); + + // title + name + text += par; + tmp= (richText==Qt::RichText) ?CSL1("<b><big>%1</big></b>"):CSL1("%1"); + text += tmp.arg(rtExpand(getDescription(), richText)); + text += ps; + + text += par; + if (getComplete()) + text += i18n("Completed"); + else + text += i18n("Not completed"); + text += ps; + + if (!getIndefinite()) + { + TQDate dt(readTm(getDueDate()).date()); + TQString dueDate(dt.toString(Qt::LocalDate)); + text+=par; + text+=i18n("Due date: %1").arg(dueDate); + text+=ps; + } + + text+=par; + text+=ps; + + text+=par; + text+=i18n("Priority: %1").arg(getPriority()); + text+=ps; + + if (!getNote().isEmpty()) + { + text += (richText==Qt::RichText) ?CSL1("<hr/>"):CSL1("-------------------------\n"); + text+=par; + text+= (richText==Qt::RichText) ?i18n("<b><em>Note:</em></b><br>"):i18n("Note:\n"); + text+=rtExpand(getNote(), richText); + text+=ps; + } + + return text; +} + +PilotRecord *PilotTodoEntry::pack() const +{ + int i; + + pi_buffer_t *b = pi_buffer_new( sizeof(fTodoInfo) ); + i = pack_ToDo(const_cast<ToDo_t *>(&fTodoInfo), b, todo_v1); + if (i<0) + { + return 0; + } + // pack_ToDo sets b->used + return new PilotRecord( b, this ); +} + +void PilotTodoEntry::setDescription(const TQString &desc) +{ + if (desc.length() < fDescriptionSize) + { + Pilot::toPilot(desc, fTodoInfo.description, fDescriptionSize); + } + else + { + setDescriptionP(Pilot::toPilot(desc),desc.length()); + } +} + +void PilotTodoEntry::setDescriptionP(const char *desc, int len) +{ + KPILOT_FREE(fTodoInfo.description); + if (desc && *desc) + { + if (-1 == len) + { + len=::strlen(desc); + } + + fDescriptionSize = len+1; + fTodoInfo.description = (char *)::malloc(len + 1); + if (fTodoInfo.description) + { + strncpy(fTodoInfo.description, desc, len); + fTodoInfo.description[len] = 0; + } + else + { + WARNINGKPILOT << "malloc() failed, description not set" + << endl; + } + } + else + { + fTodoInfo.description = 0L; + } +} + +TQString PilotTodoEntry::getDescription() const +{ + return Pilot::fromPilot(getDescriptionP()); +} + +void PilotTodoEntry::setNote(const TQString ¬e) +{ + if (note.length() < fNoteSize) + { + Pilot::toPilot(note, fTodoInfo.note, fNoteSize); + } + else + { + setNoteP(Pilot::toPilot(note),note.length()); + } +} + +void PilotTodoEntry::setNoteP(const char *note, int len) +{ + KPILOT_FREE(fTodoInfo.note); + if (note && *note) + { + if (-1 == len) + { + len=::strlen(note); + } + + fNoteSize = len+1; + fTodoInfo.note = (char *)::malloc(len + 1); + if (fTodoInfo.note) + { + strncpy(fTodoInfo.note, note, len); + fTodoInfo.note[len] = 0; + } + else + { + WARNINGKPILOT << "malloc() failed, note not set" << endl; + } + } + else + { + fTodoInfo.note = 0L; + } +} + +TQString PilotTodoEntry::getNote() const +{ + return Pilot::fromPilot(getNoteP()); +} + |