-rw-r--r-- | core/pim/datebook/datebookdayallday.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/core/pim/datebook/datebookdayallday.cpp b/core/pim/datebook/datebookdayallday.cpp index 6014eca..2294f3c 100644 --- a/core/pim/datebook/datebookdayallday.cpp +++ b/core/pim/datebook/datebookdayallday.cpp | |||
@@ -1,233 +1,235 @@ | |||
1 | /**************************************************************************** | 1 | /**************************************************************************** |
2 | ** GPL by Rajko Albrecht | 2 | ** GPL by Rajko Albrecht |
3 | ** | 3 | ** |
4 | ** | 4 | ** |
5 | ** | 5 | ** |
6 | ** | 6 | ** |
7 | ** | 7 | ** |
8 | ****************************************************************************/ | 8 | ****************************************************************************/ |
9 | #include "datebookdayallday.h" | 9 | #include "datebookdayallday.h" |
10 | 10 | ||
11 | #include <qpushbutton.h> | 11 | #include <qpushbutton.h> |
12 | #include <qlayout.h> | 12 | #include <qlayout.h> |
13 | #include <qvariant.h> | 13 | #include <qvariant.h> |
14 | #include <qtooltip.h> | 14 | #include <qtooltip.h> |
15 | #include <qwhatsthis.h> | 15 | #include <qwhatsthis.h> |
16 | #include <qobjectlist.h> | 16 | #include <qobjectlist.h> |
17 | #include <qpe/event.h> | 17 | #include <qpe/event.h> |
18 | #include <qpe/ir.h> | 18 | #include <qpe/ir.h> |
19 | #include <qpe/datebookdb.h> | 19 | #include <qpe/datebookdb.h> |
20 | #include <qpe/resource.h> | 20 | #include <qpe/resource.h> |
21 | #include <qpopupmenu.h> | 21 | #include <qpopupmenu.h> |
22 | #include <qtimer.h> | 22 | #include <qtimer.h> |
23 | #include <qregexp.h> | 23 | #include <qregexp.h> |
24 | #include <qdatetime.h> | 24 | #include <qdatetime.h> |
25 | 25 | ||
26 | #include "datebookday.h" | 26 | #include "datebookday.h" |
27 | 27 | ||
28 | /* | 28 | /* |
29 | * Constructs a DatebookdayAllday which is a child of 'parent', with the | 29 | * Constructs a DatebookdayAllday which is a child of 'parent', with the |
30 | * name 'name' and widget flags set to 'f' | 30 | * name 'name' and widget flags set to 'f' |
31 | */ | 31 | */ |
32 | DatebookdayAllday::DatebookdayAllday(DateBookDB* db, QWidget* parent, const char* name, WFlags ) | 32 | DatebookdayAllday::DatebookdayAllday(DateBookDB* db, QWidget* parent, const char* name, WFlags ) |
33 | : QScrollView( parent, name ),item_count(0),dateBook(db) | 33 | : QScrollView( parent, name ),item_count(0),dateBook(db) |
34 | { | 34 | { |
35 | if ( !name ) | 35 | if ( !name ) |
36 | setName( "DatebookdayAllday" ); | 36 | setName( "DatebookdayAllday" ); |
37 | setMinimumSize( QSize( 0, 0 ) ); | 37 | setMinimumSize( QSize( 0, 0 ) ); |
38 | setMaximumHeight(3* (QFontMetrics(font()).height()+4) ); | 38 | setMaximumHeight(3* (QFontMetrics(font()).height()+4) ); |
39 | 39 | ||
40 | m_MainFrame = new QFrame(viewport()); | 40 | m_MainFrame = new QFrame(viewport()); |
41 | m_MainFrame->setFrameStyle(QFrame::NoFrame|QFrame::Plain); | 41 | m_MainFrame->setFrameStyle(QFrame::NoFrame|QFrame::Plain); |
42 | setFrameStyle(QFrame::NoFrame|QFrame::Plain); | 42 | setFrameStyle(QFrame::NoFrame|QFrame::Plain); |
43 | setResizePolicy( QScrollView::AutoOneFit ); | 43 | setResizePolicy( QScrollView::Default ); |
44 | setHScrollBarMode( AlwaysOff ); | ||
44 | addChild(m_MainFrame); | 45 | addChild(m_MainFrame); |
45 | 46 | ||
46 | datebookdayalldayLayout = new QVBoxLayout( m_MainFrame ); | 47 | datebookdayalldayLayout = new QVBoxLayout( m_MainFrame ); |
47 | datebookdayalldayLayout->setSpacing( 0 ); | 48 | datebookdayalldayLayout->setSpacing( 0 ); |
48 | datebookdayalldayLayout->setMargin( 0 ); | 49 | datebookdayalldayLayout->setMargin( 0 ); |
49 | 50 | ||
50 | lblDesc = new DatebookEventDesc(parent->parentWidget(),""); | 51 | lblDesc = new DatebookEventDesc(parent->parentWidget(),""); |
51 | lblDesc->setBackgroundColor(Qt::yellow); | 52 | lblDesc->setBackgroundColor(Qt::yellow); |
52 | lblDesc->hide(); | 53 | lblDesc->hide(); |
53 | subWidgets.setAutoDelete(true); | 54 | subWidgets.setAutoDelete(true); |
54 | } | 55 | } |
55 | 56 | ||
56 | /* | 57 | /* |
57 | * Destroys the object and frees any allocated resources | 58 | * Destroys the object and frees any allocated resources |
58 | */ | 59 | */ |
59 | DatebookdayAllday::~DatebookdayAllday() | 60 | DatebookdayAllday::~DatebookdayAllday() |
60 | { | 61 | { |
61 | // no need to delete child widgets, Qt does it all for us | 62 | // no need to delete child widgets, Qt does it all for us |
62 | } | 63 | } |
63 | 64 | ||
64 | DatebookAlldayDisp* DatebookdayAllday::addEvent(const EffectiveEvent&ev) | 65 | DatebookAlldayDisp* DatebookdayAllday::addEvent(const EffectiveEvent&ev) |
65 | { | 66 | { |
66 | DatebookAlldayDisp * lb; | 67 | DatebookAlldayDisp * lb; |
67 | lb = new DatebookAlldayDisp(dateBook,ev,m_MainFrame,NULL); | 68 | lb = new DatebookAlldayDisp(dateBook,ev,m_MainFrame,NULL); |
69 | lb->show(); | ||
68 | datebookdayalldayLayout->addWidget(lb); | 70 | datebookdayalldayLayout->addWidget(lb); |
69 | subWidgets.append(lb); | 71 | subWidgets.append(lb); |
70 | 72 | ||
71 | connect(lb,SIGNAL(displayMe(const Event &)),lblDesc,SLOT(disp_event(const Event&))); | 73 | connect(lb,SIGNAL(displayMe(const Event &)),lblDesc,SLOT(disp_event(const Event&))); |
72 | ++item_count; | 74 | ++item_count; |
73 | 75 | ||
74 | return lb; | 76 | return lb; |
75 | } | 77 | } |
76 | 78 | ||
77 | void DatebookdayAllday::removeAllEvents() | 79 | void DatebookdayAllday::removeAllEvents() |
78 | { | 80 | { |
79 | subWidgets.clear(); | 81 | subWidgets.clear(); |
80 | item_count = 0; | 82 | item_count = 0; |
81 | } | 83 | } |
82 | 84 | ||
83 | DatebookAlldayDisp::DatebookAlldayDisp(DateBookDB *db,const EffectiveEvent& ev, | 85 | DatebookAlldayDisp::DatebookAlldayDisp(DateBookDB *db,const EffectiveEvent& ev, |
84 | QWidget* parent,const char* name,WFlags f) | 86 | QWidget* parent,const char* name,WFlags f) |
85 | : QLabel(parent,name,f),m_Ev(ev),dateBook(db) | 87 | : QLabel(parent,name,f),m_Ev(ev),dateBook(db) |
86 | { | 88 | { |
87 | QString strDesc = m_Ev.description(); | 89 | QString strDesc = m_Ev.description(); |
88 | strDesc = strDesc.replace(QRegExp("<"),"<"); | 90 | strDesc = strDesc.replace(QRegExp("<"),"<"); |
89 | setBackgroundColor(yellow); | 91 | setBackgroundColor(yellow); |
90 | setText(strDesc); | 92 | setText(strDesc); |
91 | setFrameStyle(QFrame::Raised|QFrame::Panel); | 93 | setFrameStyle(QFrame::Raised|QFrame::Panel); |
92 | 94 | ||
93 | int s = QFontMetrics(font()).height()+4; | 95 | int s = QFontMetrics(font()).height()+4; |
94 | setMaximumHeight( s ); | 96 | setMaximumHeight( s ); |
95 | setMinimumSize( QSize( 0, s ) ); | 97 | setMinimumSize( QSize( 0, s ) ); |
96 | } | 98 | } |
97 | 99 | ||
98 | DatebookAlldayDisp::~DatebookAlldayDisp() | 100 | DatebookAlldayDisp::~DatebookAlldayDisp() |
99 | { | 101 | { |
100 | } | 102 | } |
101 | 103 | ||
102 | void DatebookAlldayDisp::beam_single_event() | 104 | void DatebookAlldayDisp::beam_single_event() |
103 | { | 105 | { |
104 | // create an Event and beam it... | 106 | // create an Event and beam it... |
105 | /* | 107 | /* |
106 | * Start with the easy stuff. If start and end date is the same we can just use | 108 | * Start with the easy stuff. If start and end date is the same we can just use |
107 | * the values of effective m_Events | 109 | * the values of effective m_Events |
108 | * If it is a multi day m_Event we need to find the real start and end date... | 110 | * If it is a multi day m_Event we need to find the real start and end date... |
109 | */ | 111 | */ |
110 | if ( m_Ev.event().start().date() == m_Ev.event().end().date() ) { | 112 | if ( m_Ev.event().start().date() == m_Ev.event().end().date() ) { |
111 | Event m_Event( m_Ev.event() ); | 113 | Event m_Event( m_Ev.event() ); |
112 | 114 | ||
113 | QDateTime dt( m_Ev.date(), m_Ev.start() ); | 115 | QDateTime dt( m_Ev.date(), m_Ev.start() ); |
114 | m_Event.setStart( dt ); | 116 | m_Event.setStart( dt ); |
115 | 117 | ||
116 | dt.setTime( m_Ev.end() ); | 118 | dt.setTime( m_Ev.end() ); |
117 | m_Event.setEnd( dt ); | 119 | m_Event.setEnd( dt ); |
118 | emit beamMe( m_Event ); | 120 | emit beamMe( m_Event ); |
119 | }else { | 121 | }else { |
120 | /* | 122 | /* |
121 | * at least the the Times are right now | 123 | * at least the the Times are right now |
122 | */ | 124 | */ |
123 | QDateTime start( m_Ev.event().start() ); | 125 | QDateTime start( m_Ev.event().start() ); |
124 | QDateTime end ( m_Ev.event().end () ); | 126 | QDateTime end ( m_Ev.event().end () ); |
125 | 127 | ||
126 | /* | 128 | /* |
127 | * ok we know the start date or we need to find it | 129 | * ok we know the start date or we need to find it |
128 | */ | 130 | */ |
129 | if ( m_Ev.start() != QTime( 0, 0, 0 ) ) { | 131 | if ( m_Ev.start() != QTime( 0, 0, 0 ) ) { |
130 | start.setDate( m_Ev.date() ); | 132 | start.setDate( m_Ev.date() ); |
131 | }else { | 133 | }else { |
132 | QDate dt = DateBookDay::findRealStart( m_Ev.event().uid(), m_Ev.date(), dateBook ); | 134 | QDate dt = DateBookDay::findRealStart( m_Ev.event().uid(), m_Ev.date(), dateBook ); |
133 | start.setDate( dt ); | 135 | start.setDate( dt ); |
134 | } | 136 | } |
135 | 137 | ||
136 | /* | 138 | /* |
137 | * ok we know now the end date... | 139 | * ok we know now the end date... |
138 | * else | 140 | * else |
139 | * get to know the offset btw the real start and real end | 141 | * get to know the offset btw the real start and real end |
140 | * and then add it to the new start date... | 142 | * and then add it to the new start date... |
141 | */ | 143 | */ |
142 | if ( m_Ev.end() != QTime(23, 59, 59 ) ) { | 144 | if ( m_Ev.end() != QTime(23, 59, 59 ) ) { |
143 | end.setDate( m_Ev.date() ); | 145 | end.setDate( m_Ev.date() ); |
144 | }else{ | 146 | }else{ |
145 | int days = m_Ev.event().start().date().daysTo( m_Ev.event().end().date() ); | 147 | int days = m_Ev.event().start().date().daysTo( m_Ev.event().end().date() ); |
146 | end.setDate( start.date().addDays( days ) ); | 148 | end.setDate( start.date().addDays( days ) ); |
147 | } | 149 | } |
148 | Event m_Event( m_Ev.event() ); | 150 | Event m_Event( m_Ev.event() ); |
149 | m_Event.setStart( start ); | 151 | m_Event.setStart( start ); |
150 | m_Event.setEnd ( end ); | 152 | m_Event.setEnd ( end ); |
151 | emit beamMe( m_Event ); | 153 | emit beamMe( m_Event ); |
152 | } | 154 | } |
153 | } | 155 | } |
154 | 156 | ||
155 | void DatebookAlldayDisp::mousePressEvent(QMouseEvent*e) | 157 | void DatebookAlldayDisp::mousePressEvent(QMouseEvent*e) |
156 | { | 158 | { |
157 | QColor b = backgroundColor(); | 159 | QColor b = backgroundColor(); |
158 | setBackgroundColor(green); | 160 | setBackgroundColor(green); |
159 | update(); | 161 | update(); |
160 | QPopupMenu m; | 162 | QPopupMenu m; |
161 | m.insertItem( DateBookDayWidget::tr( "Edit" ), 1 ); | 163 | m.insertItem( DateBookDayWidget::tr( "Edit" ), 1 ); |
162 | m.insertItem( DateBookDayWidget::tr( "Duplicate" ), 4 ); | 164 | m.insertItem( DateBookDayWidget::tr( "Duplicate" ), 4 ); |
163 | m.insertItem( DateBookDayWidget::tr( "Delete" ), 2 ); | 165 | m.insertItem( DateBookDayWidget::tr( "Delete" ), 2 ); |
164 | if(Ir::supported()) m.insertItem( DateBookDayWidget::tr( "Beam" ), 3 ); | 166 | if(Ir::supported()) m.insertItem( DateBookDayWidget::tr( "Beam" ), 3 ); |
165 | if(Ir::supported() && m_Ev.event().doRepeat() ) m.insertItem( DateBookDayWidget::tr( "Beam this occurence"), 5 ); | 167 | if(Ir::supported() && m_Ev.event().doRepeat() ) m.insertItem( DateBookDayWidget::tr( "Beam this occurence"), 5 ); |
166 | m.insertItem( tr( "Info"),6); | 168 | m.insertItem( tr( "Info"),6); |
167 | int r = m.exec( e->globalPos() ); | 169 | int r = m.exec( e->globalPos() ); |
168 | setBackgroundColor(b); | 170 | setBackgroundColor(b); |
169 | update(); | 171 | update(); |
170 | switch (r) { | 172 | switch (r) { |
171 | case 1: | 173 | case 1: |
172 | emit editMe( m_Ev.event() ); | 174 | emit editMe( m_Ev.event() ); |
173 | break; | 175 | break; |
174 | case 2: | 176 | case 2: |
175 | emit deleteMe( m_Ev.event() ); | 177 | emit deleteMe( m_Ev.event() ); |
176 | break; | 178 | break; |
177 | case 3: | 179 | case 3: |
178 | emit beamMe( m_Ev.event() ); | 180 | emit beamMe( m_Ev.event() ); |
179 | break; | 181 | break; |
180 | case 4: | 182 | case 4: |
181 | emit duplicateMe( m_Ev.event() ); | 183 | emit duplicateMe( m_Ev.event() ); |
182 | break; | 184 | break; |
183 | case 5: | 185 | case 5: |
184 | beam_single_event(); | 186 | beam_single_event(); |
185 | break; | 187 | break; |
186 | case 6: | 188 | case 6: |
187 | emit displayMe( m_Ev.event() ); | 189 | emit displayMe( m_Ev.event() ); |
188 | break; | 190 | break; |
189 | default: | 191 | default: |
190 | break; | 192 | break; |
191 | } | 193 | } |
192 | } | 194 | } |
193 | 195 | ||
194 | DatebookEventDesc::DatebookEventDesc(QWidget*parent,const char*name) | 196 | DatebookEventDesc::DatebookEventDesc(QWidget*parent,const char*name) |
195 | :QLabel(parent,name) | 197 | :QLabel(parent,name) |
196 | { | 198 | { |
197 | m_Timer=new QTimer(this); | 199 | m_Timer=new QTimer(this); |
198 | connect(m_Timer,SIGNAL(timeout()),this,SLOT(hide())); | 200 | connect(m_Timer,SIGNAL(timeout()),this,SLOT(hide())); |
199 | setFrameStyle(QFrame::Sunken|QFrame::Panel); | 201 | setFrameStyle(QFrame::Sunken|QFrame::Panel); |
200 | setTextFormat(RichText); | 202 | setTextFormat(RichText); |
201 | } | 203 | } |
202 | 204 | ||
203 | DatebookEventDesc::~DatebookEventDesc() | 205 | DatebookEventDesc::~DatebookEventDesc() |
204 | { | 206 | { |
205 | } | 207 | } |
206 | 208 | ||
207 | void DatebookEventDesc::mousePressEvent(QMouseEvent*) | 209 | void DatebookEventDesc::mousePressEvent(QMouseEvent*) |
208 | { | 210 | { |
209 | hide(); | 211 | hide(); |
210 | if (m_Timer->isActive()) m_Timer->stop(); | 212 | if (m_Timer->isActive()) m_Timer->stop(); |
211 | } | 213 | } |
212 | 214 | ||
213 | void DatebookEventDesc::disp_event(const Event&e) | 215 | void DatebookEventDesc::disp_event(const Event&e) |
214 | { | 216 | { |
215 | if (m_Timer->isActive()) m_Timer->stop(); | 217 | if (m_Timer->isActive()) m_Timer->stop(); |
216 | QString text; | 218 | QString text; |
217 | text = "<b><i>"+e.description()+"</i></b><br>"; | 219 | text = "<b><i>"+e.description()+"</i></b><br>"; |
218 | if (e.notes().length()>0) { | 220 | if (e.notes().length()>0) { |
219 | text+="<b>"+e.notes()+"</b><br>"; | 221 | text+="<b>"+e.notes()+"</b><br>"; |
220 | } | 222 | } |
221 | if (e.location().length()>0) { | 223 | if (e.location().length()>0) { |
222 | text+="<i>"+e.location()+"</i><br>"; | 224 | text+="<i>"+e.location()+"</i><br>"; |
223 | } | 225 | } |
224 | text = text.replace(QRegExp("\n"),"<br>"); | 226 | text = text.replace(QRegExp("\n"),"<br>"); |
225 | setText(text); | 227 | setText(text); |
226 | QSize s = sizeHint(); | 228 | QSize s = sizeHint(); |
227 | s+=QSize(10,10); | 229 | s+=QSize(10,10); |
228 | resize(s); | 230 | resize(s); |
229 | move( QMAX(0,(parentWidget()->width()-width()) / 2), | 231 | move( QMAX(0,(parentWidget()->width()-width()) / 2), |
230 | (parentWidget()->height()-height())/2 ); | 232 | (parentWidget()->height()-height())/2 ); |
231 | show(); | 233 | show(); |
232 | m_Timer->start(2000,true); | 234 | m_Timer->start(2000,true); |
233 | } | 235 | } |