summaryrefslogtreecommitdiff
path: root/core/pim/today/plugins/datebook/datebookevent.cpp
blob: 0a0d186d124a9ff6db0c70314b16d20a03f14307 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/*
 * datebookevent.cpp
 *
 * copyright   : (c) 2002 by Maximilian Reiß
 * email       : harlekin@handhelds.org
 *
 */
/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#include "datebookevent.h"
#include <qpe/config.h>
#include <qpe/timestring.h>
#include <qpe/qcopenvelope_qws.h>
#include <qpe/qpeapplication.h>

#include <opie/odevice.h>

using namespace Opie;

DateBookEvent::DateBookEvent(const EffectiveEvent &ev,
			     QWidget* parent,
			     bool show_location,
			     bool show_notes,
                             int maxCharClip,
                             const char* name,
			     WFlags fl) :
    OClickableLabel(parent,name,fl), event(ev) {

    setAlignment( AlignTop );

    QString msg;

    Config config( "qpe" );
    config.setGroup( "Time" );
    // if 24 h format
    ampm = config.readBoolEntry( "AMPM", TRUE );

    msg += "<B>" + (ev).description() + "</B>";
    if ( (ev).event().hasAlarm() ) {
        msg += " <b>[with alarm]</b>";
    }

    // include location or not
    if ( show_location ) {
        msg += "<BR><i>" + (ev).location() + "</i>";
    }

    if ( ( TimeString::timeString( QTime( (ev).event().start().time() ) ) == "00:00" )
         &&  ( TimeString::timeString( QTime( (ev).event().end().time() ) ) == "23:59" ) ) {
        msg += "<br>All day";
    }  else {
        // start time of event
        msg += "<br>" + ampmTime(QTime( (ev).event().start().time() ) )
               // end time of event
               + "<b> - </b>" + ampmTime(QTime( (ev).event().end().time() ) );
    }

    // include possible note or not
    if ( show_notes ) {
        msg += "<br> <i>note</i>:" +( (ev).notes() ).mid( 0, maxCharClip );
    }
    setText( msg );
    connect( this, SIGNAL( clicked() ), this, SLOT( editMe() ) );
}


/**
 * AM/PM timestring conversion.
 * @param tm the timestring
 * @return formatted to am/pm is system is set to it
 */
QString DateBookEvent::ampmTime( QTime tm ) {
    QString s;
    if( ampm ) {
        int hour = tm.hour();
        if ( hour == 0 ) {
            hour = 12;
        }
        if ( hour > 12 ) {
            hour -= 12;
        }
        s.sprintf( "%2d:%02d %s", hour, tm.minute(),
                   (tm.hour() >= 12) ? "PM" : "AM" );
        return s;
    } else {
        s.sprintf( "%2d:%02d", tm.hour(), tm.minute() );
        return s;
    }
}


/**
 * starts the edit dialog as known from datebook
 */
void DateBookEvent::editEventSlot( const Event &e ) {

    if ( ODevice::inst()->system() == System_Zaurus ) {
        QCopEnvelope env( "QPE/Application/datebook", "raise()" );
    } else {
        QCopEnvelope env( "QPE/Datebook", "editEvent(int)" );
        env << e.uid();
    }
}


void DateBookEvent::editMe() {
    emit editEvent( event.event() );
}