-rw-r--r-- | kaddressbook/kaddressbookE.pro | 2 | ||||
-rw-r--r-- | korganizer/koeventviewer.cpp | 10 | ||||
-rw-r--r-- | libkcal/kincidenceformatter.cpp | 328 | ||||
-rw-r--r-- | libkcal/kincidenceformatter.h | 42 | ||||
-rw-r--r-- | libkcal/libkcalE.pro | 2 | ||||
-rw-r--r-- | libkdepim/libkdepimE.pro | 6 | ||||
-rwxr-xr-x | setZaurus3 | 24 |
7 files changed, 405 insertions, 9 deletions
diff --git a/kaddressbook/kaddressbookE.pro b/kaddressbook/kaddressbookE.pro index c027895..7eb85fd 100644 --- a/kaddressbook/kaddressbookE.pro +++ b/kaddressbook/kaddressbookE.pro @@ -3,25 +3,25 @@ CONFIG += qt warn_on TARGET = kapi OBJECTS_DIR = obj/$(PLATFORM) MOC_DIR = moc/$(PLATFORM) DESTDIR=$(QPEDIR)/bin INCLUDEPATH += . ./details ./features ./xxport ../libkdepim ../microkde ../microkde/kdecore ../microkde/kutils ../microkde/kio/kfile ../microkde/kio/kio ../microkde/kdeui ../microkde/kresources ../kabc ../qtcompat ../ interfaces $(QPEDIR)/include DEFINES += KAB_EMBEDDED KAB_NOSPLITTER #DEFINES += KORG_NODND KORG_NOPLUGINS KORG_NOKABC KORG_NOARCHIVE KORG_NOMAIL #DEFINES += KORG_NOPRINTER KORG_NODCOP KORG_NOKALARMD KORG_NORESOURCEVIEW KORG_NOSPLITTER #DEFINES += KORG_NOLVALTERNATION -#LIBS += -lmicrokdepim +LIBS += -lmicrokdepim #LIBS += -lmicrokcal LIBS += -lmicrokde LIBS += -lmicroqtcompat LIBS += -lmicrokabc LIBS += -lqpe LIBS += -ljpeg LIBS += $(QTOPIALIB) LIBS += -L$(QPEDIR)/lib LIBS += -Wl,-export-dynamic LIBS += $(GCC3EXTRALIB1) LIBS += $(GCC3EXTRALIB2) diff --git a/korganizer/koeventviewer.cpp b/korganizer/koeventviewer.cpp index 948047a..e938e4e 100644 --- a/korganizer/koeventviewer.cpp +++ b/korganizer/koeventviewer.cpp @@ -26,42 +26,42 @@ #include <klocale.h> #include <kapplication.h> #include <libkcal/event.h> #include <libkcal/todo.h> #include <kdebug.h> #include <kiconloader.h> #include <krun.h> #include <kglobal.h> #include <kprocess.h> #include "koprefs.h" -#include <libkdepim/addresseeview.h> #include <kabc/stdaddressbook.h> #ifndef KORG_NODCOP #include <dcopclient.h> #include "korganizer.h" #include "koprefs.h" #include "actionmanager.h" #endif #include "koeventviewer.h" -#ifndef KORG_NOKABC -#include <kabc/stdaddressbook.h> -#define size count -#endif +//#ifndef KORG_NOKABC +//#include <kabc/stdaddressbook.h> +//#define size count +//#endif #ifdef DESKTOP_VERSION #include <kabc/addresseedialog.h> +#include <kabc/addresseeview.h> #else //DESKTOP_VERSION #include <externalapphandler.h> #include <qtopia/qcopenvelope_qws.h> #endif //DESKTOP_VERSION KOEventViewer::KOEventViewer(QWidget *parent,const char *name) : QTextBrowser(parent,name) { mSyncMode = false; mColorMode = 0; } diff --git a/libkcal/kincidenceformatter.cpp b/libkcal/kincidenceformatter.cpp new file mode 100644 index 0000000..2c45f21 --- a/dev/null +++ b/libkcal/kincidenceformatter.cpp @@ -0,0 +1,328 @@ +#include "kincidenceformatter.h" +#include <kstaticdeleter.h> +#include <kglobal.h> +#include <klocale.h> +#ifdef DEKTOP_VERSION +#include <kabc/stdaddressbook.h> +#define size count +#endif + +KIncidenceFormatter* KIncidenceFormatter::mInstance = 0; +static KStaticDeleter<KIncidenceFormatter> insd; + +QString KIncidenceFormatter::getFormattedText( Incidence * inc ) +{ +// #ifndef QT_NO_INPUTDIALOG +// return QInputDialog::getItem( caption, label, items, current, editable ); +// #else +// return QString::null; +// #endif + mText = ""; + if ( inc->type() == "Event" ) + setEvent((Event *) inc ); + else if ( inc->type() == "Todo" ) + setTodo((Todo *) inc ); + return mText; +} + +KIncidenceFormatter* KIncidenceFormatter::instance() +{ + if (!mInstance) { + mInstance = insd.setObject(new KIncidenceFormatter()); + } + return mInstance; +} +KIncidenceFormatter::~KIncidenceFormatter() +{ + if (mInstance == this) + mInstance = insd.setObject(0); + //qDebug("KIncidenceFormatter::~KIncidenceFormatter "); +} +KIncidenceFormatter::KIncidenceFormatter() +{ + mColorMode = 0; +} +void KIncidenceFormatter::setEvent(Event *event) +{ + int mode = 0; + mCurrentIncidence = event; + bool shortDate = true; + if ( mode == 0 ) { + addTag("h3",event->summary()); + } + else { + if ( mColorMode == 1 ) { + mText +="<font color=\"#00A000\">"; + } + if ( mColorMode == 2 ) { + mText +="<font color=\"#C00000\">"; + } + // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>"; + if ( mode == 1 ) { + addTag("h2",i18n( "Local: " ) +event->summary()); + } else { + addTag("h2",i18n( "Remote: " ) +event->summary()); + } + addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); + if ( mColorMode ) + mText += "</font>"; + } + if (event->cancelled ()) { + mText +="<font color=\"#B00000\">"; + addTag("i",i18n("This event has been cancelled!")); + mText.append("<br>"); + mText += "</font>"; + } + if (!event->location().isEmpty()) { + addTag("b",i18n("Location: ")); + mText.append(event->location()+"<br>"); + } + if (event->doesFloat()) { + if (event->isMultiDay()) { + mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>") + .arg(event->dtStartDateStr(shortDate)) + .arg(event->dtEndDateStr(shortDate))); + } else { + mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate ))); + } + } else { + if (event->isMultiDay()) { + mText.append(i18n("<p><b>From:</b> %1</p> ") + .arg(event->dtStartStr( shortDate))); + mText.append(i18n("<p><b>To:</b> %1</p>") + .arg(event->dtEndStr(shortDate))); + } else { + mText.append(i18n("<p><b>On:</b> %1</p> ") + .arg(event->dtStartDateStr( shortDate ))); + mText.append(i18n("<p><b>From:</b> %1 <b>To:</b> %2</p>") + .arg(event->dtStartTimeStr()) + .arg(event->dtEndTimeStr())); + } + } + + if (event->recurrence()->doesRecur()) { + + QString recurText = event->recurrence()->recurrenceText(); + addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>"); + bool last; + QDate start = QDate::currentDate(); + QDate next; + next = event->recurrence()->getPreviousDate( start , &last ); + if ( !last ) { + next = event->recurrence()->getNextDate( start.addDays( - 1 ) ); + addTag("p",i18n("Next recurrence is on: ")+ KGlobal::locale()->formatDate( next, shortDate ) ); + //addTag("p", KGlobal::locale()->formatDate( next, shortDate )); + } else { + addTag("p",i18n("<b>Last recurrence was on:</b>") ); + addTag("p", KGlobal::locale()->formatDate( next, shortDate )); + } + } + + + if (event->isAlarmEnabled()) { + Alarm *alarm =event->alarms().first() ; + QDateTime t = alarm->time(); + int min = t.secsTo( event->dtStart() )/60; + QString s =i18n("(%1 min before)").arg( min ); + addTag("p",i18n("<b>Alarm on: </b>") + s + ": "+KGlobal::locale()->formatDateTime( t, shortDate )); + //addTag("p", KGlobal::locale()->formatDateTime( t, shortDate )); + //addTag("p",s); + } + + addTag("p",i18n("<b>Access: </b>") +event->secrecyStr() ); + // mText.append(event->secrecyStr()+"<br>"); + formatCategories(event); + if (!event->description().isEmpty()) { + addTag("p",i18n("<b>Details: </b>")); + addTag("p",event->description()); + } + + + formatReadOnly(event); + formatAttendees(event); + + +} + +void KIncidenceFormatter::setTodo(Todo *event ) +{ + int mode = 0; + mCurrentIncidence = event; + bool shortDate = true; + if (mode == 0 ) + addTag("h3",event->summary()); + else { + if ( mColorMode == 1 ) { + mText +="<font color=\"#00A000\">"; + } + if ( mColorMode == 2 ) { + mText +="<font color=\"#B00000\">"; + } + if ( mode == 1 ) { + addTag("h2",i18n( "Local: " ) +event->summary()); + } else { + addTag("h2",i18n( "Remote: " ) +event->summary()); + } + addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); + if ( mColorMode ) + mText += "</font>"; + } + if (event->cancelled ()) { + mText +="<font color=\"#B00000\">"; + addTag("i",i18n("This todo has been cancelled!")); + mText.append("<br>"); + mText += "</font>"; + } + + if (!event->location().isEmpty()) { + addTag("b",i18n("Location: ")); + mText.append(event->location()+"<br>"); + } + if (event->hasDueDate()) { + mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(shortDate))); + } + mText.append(i18n("<p><b>Priority:</b> %2</p>") + .arg(QString::number(event->priority()))); + + mText.append(i18n("<p><i>%1 % completed</i></p>") + .arg(event->percentComplete())); + addTag("p",i18n("<b>Access: </b>") +event->secrecyStr() ); + formatCategories(event); + if (!event->description().isEmpty()) { + addTag("p",i18n("<b>Details: </b>")); + addTag("p",event->description()); + } + + + + formatReadOnly(event); + formatAttendees(event); + +} + +void KIncidenceFormatter::setJournal(Journal* ) +{ + +} + +void KIncidenceFormatter::formatCategories(Incidence *event) +{ + if (!event->categoriesStr().isEmpty()) { + addTag("p",i18n("<b>Categories: </b>")+event->categoriesStr() ); + //mText.append(event->categoriesStr()); + } +} +void KIncidenceFormatter::addTag(const QString & tag,const QString & text) +{ + int number=text.contains("\n"); + QString str = "<" + tag + ">"; + QString tmpText=text; + QString tmpStr=str; + if(number !=-1) + { + if (number > 0) { + int pos=0; + QString tmp; + for(int i=0;i<=number;i++) { + pos=tmpText.find("\n"); + tmp=tmpText.left(pos); + tmpText=tmpText.right(tmpText.length()-pos-1); + tmpStr+=tmp+"<br>"; + } + } + else tmpStr += tmpText; + tmpStr+="</" + tag + ">"; + mText.append(tmpStr); + } + else + { + str += text + "</" + tag + ">"; + mText.append(str); + } +} + +void KIncidenceFormatter::formatAttendees(Incidence *event) +{ + QPtrList<Attendee> attendees = event->attendees(); + if (attendees.count()) { + QString iconPath = KGlobal::iconLoader()->iconPath("mailappt",KIcon::Small); + addTag("h3",i18n("Organizer")); + mText.append("<ul><li>"); +#if 0 + //ndef KORG_NOKABC + + KABC::AddressBook *add_book = KABC::StdAddressBook::self(); + KABC::Addressee::List addressList; + addressList = add_book->findByEmail(event->organizer()); + KABC::Addressee o = addressList.first(); + if (!o.isEmpty() && addressList.size()<2) { + mText += "<a href=\"uid:" + o.uid() + "\">"; + mText += o.formattedName(); + mText += "</a>\n"; + } else { + mText.append(event->organizer()); + } +#else + mText.append(event->organizer()); +#endif + if (iconPath) { + mText += " <a href=\"mailto:" + event->organizer() + "\">"; + mText += "<IMG src=\"" + iconPath + "\">"; + mText += "</a>\n"; + } + mText.append("</li></ul>"); + + addTag("h3",i18n("Attendees")); + Attendee *a; + mText.append("<ul>"); + for(a=attendees.first();a;a=attendees.next()) { +#if 0 +//ndef KORG_NOKABC + if (a->name().isEmpty()) { + addressList = add_book->findByEmail(a->email()); + KABC::Addressee o = addressList.first(); + if (!o.isEmpty() && addressList.size()<2) { + mText += "<a href=\"uid:" + o.uid() + "\">"; + mText += o.formattedName(); + mText += "</a>\n"; + } else { + mText += "<li>"; + mText.append(a->email()); + mText += "\n"; + } + } else { + mText += "<li><a href=\"uid:" + a->uid() + "\">"; + if (!a->name().isEmpty()) mText += a->name(); + else mText += a->email(); + mText += "</a>\n"; + } +#else + //qDebug("nokabc "); + mText += "<li><a href=\"uid:" + a->uid() + "\">"; + if (!a->name().isEmpty()) mText += a->name(); + else mText += a->email(); + mText += "</a>\n"; +#endif + + if (!a->email().isEmpty()) { + if (iconPath) { + mText += "<a href=\"mailto:" + a->name() +" "+ "<" + a->email() + ">" + "\">"; + mText += "<IMG src=\"" + iconPath + "\">"; + mText += "</a>\n"; + } + } + if (a->status() != Attendee::NeedsAction ) + mText +="[" + a->statusStr() + "] "; + if (a->role() == Attendee::Chair ) + mText +="(" + a->roleStr().left(1) + ".)"; + } + mText.append("</li></ul>"); + } +} + +void KIncidenceFormatter::formatReadOnly(Incidence *event) +{ + if (event->isReadOnly()) { + addTag("p","<em>(" + i18n("read-only") + ")</em>"); + } +} diff --git a/libkcal/kincidenceformatter.h b/libkcal/kincidenceformatter.h new file mode 100644 index 0000000..6165a9f --- a/dev/null +++ b/libkcal/kincidenceformatter.h @@ -0,0 +1,42 @@ +#ifndef KINCIDENCENFORMATTER_H +#define KINCIDENCENFORMATTER_H + +#include <qstring.h> +#include <qobject.h> + +#include "incidence.h" +#include "event.h" +#include "todo.h" +#include "journal.h" + +using namespace KCal; + +class KIncidenceFormatter : public QObject +{ + public: + static KIncidenceFormatter* instance(); + KIncidenceFormatter(); + ~KIncidenceFormatter(); + QString getFormattedText( Incidence * inc ); + + void setEvent(Event *event); + void setTodo(Todo *event ); + void setJournal(Journal* ); + + protected: + int mColorMode; + void addTag(const QString & tag,const QString & text); + + void formatCategories(Incidence *event); + void formatAttendees(Incidence *event); + void formatReadOnly(Incidence *event); + + private: + bool mSyncMode; + + QString mText; + Incidence* mCurrentIncidence; + static KIncidenceFormatter* mInstance; +}; + +#endif diff --git a/libkcal/libkcalE.pro b/libkcal/libkcalE.pro index f5be980..1f5ef78 100644 --- a/libkcal/libkcalE.pro +++ b/libkcal/libkcalE.pro @@ -27,24 +27,25 @@ HEADERS = \ dummyscheduler.h \ duration.h \ event.h \ exceptions.h \ filestorage.h \ freebusy.h \ icaldrag.h \ icalformat.h \ icalformatimpl.h \ imipscheduler.h \ incidence.h \ incidencebase.h \ +kincidenceformatter.h \ journal.h \ period.h \ person.h \ qtopiaformat.h \ sharpformat.h \ phoneformat.h \ recurrence.h \ scheduler.h \ todo.h \ vcaldrag.h \ vcalformat.h \ versit/port.h \ @@ -64,24 +65,25 @@ SOURCES = \ dummyscheduler.cpp \ duration.cpp \ event.cpp \ exceptions.cpp \ filestorage.cpp \ freebusy.cpp \ icaldrag.cpp \ icalformat.cpp \ icalformatimpl.cpp \ imipscheduler.cpp \ incidence.cpp \ incidencebase.cpp \ + kincidenceformatter.cpp \ journal.cpp \ period.cpp \ person.cpp \ qtopiaformat.cpp \ sharpformat.cpp \ phoneformat.cpp \ recurrence.cpp \ scheduler.cpp \ todo.cpp \ vcaldrag.cpp \ vcalformat.cpp \ versit/vcc.c \ diff --git a/libkdepim/libkdepimE.pro b/libkdepim/libkdepimE.pro index 102d827..69980e3 100644 --- a/libkdepim/libkdepimE.pro +++ b/libkdepim/libkdepimE.pro @@ -1,51 +1,51 @@ TEMPLATE = lib CONFIG += qt warn_on TARGET = microkdepim INCLUDEPATH += . $(KDEPIMDIR) $(KDEPIMDIR)/microkde $(KDEPIMDIR)/qtcompat $(KDEPIMDIR)/microkde/kdecore $(KDEPIMDIR)/microkde/kdeui $(QPEDIR)/include LIBS += -lmicrokde -LIBS += -lmicrokcal +#LIBS += -lmicrokcal LIBS += -L$(QPEDIR)/lib OBJECTS_DIR = obj/$(PLATFORM) MOC_DIR = moc/$(PLATFORM) DESTDIR=$(QPEDIR)/lib INTERFACES = \ HEADERS = \ categoryeditdialog.h \ categoryeditdialog_base.h \ categoryselectdialog.h \ categoryselectdialog_base.h \ externalapphandler.h \ kdateedit.h \ kdatepicker.h \ kinputdialog.h \ - kincidenceformatter.h \ kpimprefs.h \ kpimglobalprefs.h \ kprefsdialog.h \ ksyncprofile.h \ ksyncprefsdialog.h \ kcmconfigs/kcmkdepimconfig.h \ kcmconfigs/kdepimconfigwidget.h SOURCES = \ categoryeditdialog.cpp \ categoryeditdialog_base.cpp \ categoryselectdialog.cpp \ categoryselectdialog_base.cpp \ externalapphandler.cpp \ kdateedit.cpp \ kinputdialog.cpp \ kdatepicker.cpp \ - kincidenceformatter.cpp \ kpimprefs.cpp \ kpimglobalprefs.cpp \ kprefsdialog.cpp \ ksyncprofile.cpp \ ksyncprefsdialog.cpp \ kcmconfigs/kcmkdepimconfig.cpp \ kcmconfigs/kdepimconfigwidget.cpp + + diff --git a/setZaurus3 b/setZaurus3 new file mode 100755 index 0000000..2649292 --- a/dev/null +++ b/setZaurus3 @@ -0,0 +1,24 @@ +# Settings to compile KDE-Pim/Pi with gcc 3.3.2 cross compiler for Zaurus +# copy this dir to /opt/Qtopia/examples/ +# Now this file should be in the path /opt/Qtopia/examples/kdepim/setZaurus3 +# add the following line to ~/.bashrc without leading # +# alias cz='source /opt/Qtopia/examples/kdepim/setZaurus3' +# then type in terminal cz3<return> to set the variables +# for cross-compiling +export QPEDIR=/opt/Qtopia/sharp3 +export OPIEDIR=/kde_dev/opie +#export BUILD_NO_OPIE_PLUGIN=1 +export BUILD_NO_QTOPIA_PLUGIN=1 +export BUILD_NO_SHARP_PLUGIN=1 +#export BUILD_NO_GAMMU=1 +export QTDIR=/opt/Qtopia/sharp3 +#insert here path to your gcc 3.3.2 compiler +export PATH=$QTDIR/bin:/opt/cross/bin:$PATH +export TMAKEPATH=/opt/Qtopia/tmake/lib/qws/linux-sharp-g++ +export PLATFORM=zaurus3 +export RELEASE_DEBUG=release +export SHARPDTMSDK=/opt/dtm +#export RELEASE_DEBUG=debug +export GCC3EXTRALIB1=-lpng12 +export GCC3EXTRALIB2=-lz +export KDEPIM_VERSION=1.9.5c
\ No newline at end of file |