koincidencetooltip.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <libkcal/incidence.h>
00026 #include <libkcal/event.h>
00027 #include <libkcal/todo.h>
00028 #include <libkcal/journal.h>
00029
00030 #include <klocale.h>
00031 #include "koincidencetooltip.h"
00032
00038 void KOIncidenceToolTip::add ( QWidget * widget, Incidence *incidence,
00039 QToolTipGroup * group, const QString & longText )
00040 {
00041 if ( !widget || !incidence ) return;
00042 QString tipText;
00043 ToolTipVisitor v;
00044 v.act( incidence, &tipText, true );
00045 QToolTip::add(widget, tipText, group, longText);
00046 }
00047
00048 QString ToolTipVisitor::dateRangeText( Event*event )
00049 {
00050 QString ret;
00051 QString tmp;
00052 if ( event->isMultiDay() ) {
00053
00054 tmp = "<br>" + i18n("Event start", "<i>From:</i> %1");
00055 if (event->doesFloat())
00056 ret += tmp.arg( event->dtStartDateStr().replace(" ", " ") );
00057 else
00058 ret += tmp.arg( event->dtStartStr().replace(" ", " ") );
00059
00060 tmp = "<br>" + i18n("<i>To:</i> %1");
00061 if (event->doesFloat())
00062 ret += tmp.arg( event->dtEndDateStr().replace(" ", " ") );
00063 else
00064 ret += tmp.arg( event->dtEndStr().replace(" ", " ") );
00065
00066 } else {
00067
00068 ret += "<br>"+i18n("<i>Date:</i> %1").
00069 arg( event->dtStartDateStr().replace(" ", " ") );
00070 if ( !event->doesFloat() ) {
00071 tmp = "<br>" + i18n("time range for event, to prevent ugly line breaks",
00072 "<i>Time:</i> %1 - %2").
00073 arg( event->dtStartTimeStr().replace(" ", " ") ).
00074 arg( event->dtEndTimeStr().replace(" ", " ") );
00075 ret += tmp;
00076 }
00077
00078 }
00079 return ret;
00080 }
00081
00082 QString ToolTipVisitor::dateRangeText( Todo*todo )
00083 {
00084 QString ret;
00085 bool floats( todo->doesFloat() );
00086 if (todo->hasStartDate())
00087
00088
00089
00090 ret += "<br>" + i18n("<i>Start:</i> %1").arg(
00091 (floats)
00092 ?(todo->dtStartDateStr().replace(" ", " "))
00093 :(todo->dtStartStr().replace(" ", " ")) ) ;
00094 if (todo->hasDueDate())
00095 ret += "<br>" + i18n("<i>Due:</i> %1").arg(
00096 (floats)
00097 ?(todo->dtDueDateStr().replace(" ", " "))
00098 :(todo->dtDueStr().replace(" ", " ")) );
00099 if (todo->isCompleted())
00100 ret += "<br>" + i18n("<i>Completed:</i> %1").arg( todo->completedStr().replace(" ", " ") );
00101 else
00102 ret += "<br>" + i18n("%1 % completed").arg(todo->percentComplete());
00103
00104 return ret;
00105 }
00106
00107 QString ToolTipVisitor::dateRangeText( Journal* )
00108 {
00109 QString ret;
00110 return ret;
00111 }
00112
00113
00114 bool ToolTipVisitor::visit( Event *event )
00115 {
00116 QString dtRangeText( dateRangeText( event ) );
00117 return generateToolTip( event, dtRangeText );
00118 }
00119
00120 bool ToolTipVisitor::visit( Todo *todo )
00121 {
00122 QString dtRangeText( dateRangeText( todo ) );
00123 return generateToolTip( todo, dtRangeText );
00124 }
00125
00126 bool ToolTipVisitor::visit( Journal *journal )
00127 {
00128 QString dtRangeText( dateRangeText( journal ) );
00129 return generateToolTip( journal, dtRangeText );
00130 }
00131
00132 bool ToolTipVisitor::generateToolTip( Incidence* incidence, QString dtRangeText )
00133 {
00134 QString tipText = "<qt><b>"+ incidence->summary().replace("\n", "<br>")+"</b>";
00135
00136 tipText += dtRangeText;
00137
00138 if (!incidence->location().isEmpty()) {
00139
00140 tipText += "<br>"+i18n("<i>Location:</i> %1").
00141 arg( incidence->location().replace("\n", "<br>") );
00142 }
00143 if (!incidence->description().isEmpty()) {
00144 QString desc(incidence->description());
00145 if (desc.length()>120) {
00146 desc = desc.left(120) + "...";
00147 }
00148 tipText += "<br>----------<br>" + i18n("<i>Description:</i><br>") + desc.replace("\n", "<br>");
00149 }
00150 tipText += "</qt>";
00151 *mTipText = tipText;
00152 return true;
00153 }
This file is part of the documentation for korganizer Library Version 3.2.2.