summaryrefslogtreecommitdiff
authorumopapisdn <umopapisdn>2003-03-22 00:35:37 (UTC)
committer umopapisdn <umopapisdn>2003-03-22 00:35:37 (UTC)
commit5d488108161a2dfe1377ac38226b5d8a3a438d11 (patch) (side-by-side diff)
tree1c1931f4e0a03e95ba1d1324135d6bf703c8c4fa
parentebf65f250904e0619c10b69a0428fcc538ffc167 (diff)
downloadopie-5d488108161a2dfe1377ac38226b5d8a3a438d11.zip
opie-5d488108161a2dfe1377ac38226b5d8a3a438d11.tar.gz
opie-5d488108161a2dfe1377ac38226b5d8a3a438d11.tar.bz2
More informative dayview text:
An event that begins and ends on the same day is only mentioned by start and end time. An event that spans across multiple days, is also mentioned with start and end date.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/datebook/datebookday.cpp23
1 files changed, 9 insertions, 14 deletions
diff --git a/core/pim/datebook/datebookday.cpp b/core/pim/datebook/datebookday.cpp
index aaf3e16..a6a1be3 100644
--- a/core/pim/datebook/datebookday.cpp
+++ b/core/pim/datebook/datebookday.cpp
@@ -538,210 +538,205 @@ int DateBookDay::startViewTime() const
void DateBookDay::slotWeekChanged( bool bStartOnMonday )
{
header->setStartOfWeek( bStartOnMonday );
// redraw();
}
void DateBookDay::keyPressEvent(QKeyEvent *e)
{
switch(e->key()) {
case Key_Up:
view->moveUp();
break;
case Key_Down:
view->moveDown();
break;
case Key_Left:
setDate(QDate(currDate).addDays(-1));
break;
case Key_Right:
setDate(QDate(currDate).addDays(1));
break;
default:
e->ignore();
}
}
//===========================================================================
DateBookDayWidget::DateBookDayWidget( const EffectiveEvent &e,
DateBookDay *db )
: QWidget( db->dayView()->viewport() ), ev( e ), dateBook( db )
{
// why would someone use "<"? Oh well, fix it up...
// I wonder what other things may be messed up...
QString strDesc = ev.description();
int where = strDesc.find( "<" );
while ( where != -1 ) {
strDesc.remove( where, 1 );
strDesc.insert( where, "&#60;" );
where = strDesc.find( "<", where );
}
QString strCat;
// ### Fix later...
// QString strCat = ev.category();
// where = strCat.find( "<" );
// while ( where != -1 ) {
// strCat.remove( where, 1 );
// strCat.insert( where, "&#60;" );
// where = strCat.find( "<", where );
// }
QString strNote = ev.notes();
where = strNote.find( "<" );
while ( where != -1 ) {
strNote.remove( where, 1 );
strNote.insert( where, "&#60;" );
where = strNote.find( "<", where );
}
text = "<b>" + strDesc + "</b><br>" + "<i>";
if ( !strCat.isEmpty() ) {
text += strCat + "</i><br>";
}
if (ev.event().type() == Event::Normal )
setEventText( text );
else
setAllDayText( text );
text += "<br><br>" + strNote;
setBackgroundMode( PaletteBase );
QTime start = ev.start();
QTime end = ev.end();
int y = start.hour()*60+start.minute();
int h = end.hour()*60+end.minute()-y;
int rh = dateBook->dayView()->rowHeight(0);
y = y*rh/60;
h = h*rh/60;
if ( h < 3 ) {
h = 3;
}
geom.setY( y );
geom.setHeight( h );
geom.setX( 0 );
geom.setWidth(dateBook->dayView()->columnWidth(0)-1);
}
void DateBookDayWidget::setAllDayText( QString &text ) {
text += "<b>" + tr("This is an all day event.") + "</b><br>";
}
void DateBookDayWidget::setEventText( QString& text ) {
bool whichClock = dateBook->dayView()->whichClock();
- text += "<b>" + tr("Time") + "</b>: ";
- if ( ev.startDate() != ev.date() ) {
- // multi-day event. Show start date
- text += TimeString::longDateString( ev.startDate() );
+ if ( ev.startDate() != ev.endDate() ) {
+ text += "<b>" + tr("Start") + "</b>: ";
+ text += TimeString::timeString( ev.event().start().time(), whichClock, FALSE );
+ text += " - " + TimeString::longDateString( ev.startDate() ) + "<br>";
+ text += "<b>" + tr("End") + "</b>: ";
+ text += TimeString::timeString( ev.event().end().time(), whichClock, FALSE );
+ text += " - " + TimeString::longDateString( ev.endDate() ) + "<br>";
} else {
- // Show start time.
+ text += "<b>" + tr("Time") + "</b>: ";
text += TimeString::timeString( ev.start(), whichClock, FALSE );
- }
-
- text += "<b>" + tr(" - ") + "</b>";
- if ( ev.endDate() != ev.date() ) {
- // multi-day event. Show end date
- text += TimeString::longDateString( ev.endDate() );
- } else {
- // Show end time.
+ text += "<b>" + tr(" - ") + "</b>";
text += TimeString::timeString( ev.end(), whichClock, FALSE );
}
-
}
DateBookDayWidget::~DateBookDayWidget()
{
}
void DateBookDayWidget::paintEvent( QPaintEvent *e )
{
QPainter p( this );
if (dateBook->getSelectedWidget() == this)
{
p.setBrush( QColor( 155, 240, 230 ) ); // selected item
} else
{
if (dateBook->date() == QDate::currentDate())
{
QTime curTime = QTime::currentTime();
if (ev.end() < curTime)
{
p.setBrush( QColor( 180, 180, 180 ) ); // grey, inactive
} else
{
//change color in dependence of the time till the event starts
int duration = curTime.secsTo(ev.start());
if (duration < 0) duration = 0;
int colChange = duration*160/86400; //86400: secs per day, 160: max color shift
p.setBrush( QColor( 200-colChange, 200-colChange, 255 ) ); //blue
}
} else
{
p.setBrush( QColor( 220, 220, 220 ) ); //light grey, inactive (not current date)
//perhaps make a distinction between future/past dates
}
}
p.setPen( QColor(100, 100, 100) );
p.drawRect(rect());
// p.drawRect(0,0, 5, height());
int y = 0;
int d = 0;
if ( ev.event().hasAlarm() ) {
p.drawPixmap( width() - 16, 0, Resource::loadPixmap( "bell" ) );
y = 20;
d = 20;
}
if ( ev.event().hasRepeat() ) {
p.drawPixmap( width() - 16, y, Resource::loadPixmap( "repeat" ) );
d = 20;
y += 20;
}
QSimpleRichText rt( text, font() );
rt.setWidth( geom.width() - d - 6 );
rt.draw( &p, 7, 0, e->region(), colorGroup() );
}
void DateBookDayWidget::mousePressEvent( QMouseEvent *e )
{
DateBookDayWidget *item;
item = dateBook->getSelectedWidget();
if (item) item->update();
dateBook->setSelectedWidget(this);
update();
dateBook->repaint();
QPopupMenu m;
m.insertItem( tr( "Edit" ), 1 );
m.insertItem( tr( "Delete" ), 2 );
if(Ir::supported()) m.insertItem( tr( "Beam" ), 3 );
int r = m.exec( e->globalPos() );
if ( r == 1 ) {
emit editMe( ev.event() );
} else if ( r == 2 ) {
emit deleteMe( ev.event() );
} else if ( r == 3 ) {
emit beamMe( ev.event() );
}
}
void DateBookDayWidget::setGeometry( const QRect &r )
{
geom = r;
setFixedSize( r.width()+1, r.height()+1 );
dateBook->dayView()->moveChild( this, r.x(), r.y()-1 );
show();
}