summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/journalentry.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/korganizer/journalentry.cpp b/korganizer/journalentry.cpp
index 56221dc..902e96f 100644
--- a/korganizer/journalentry.cpp
+++ b/korganizer/journalentry.cpp
@@ -31,100 +31,108 @@
31#include <qdir.h> 31#include <qdir.h>
32#include <qtextstream.h> 32#include <qtextstream.h>
33#include <qtextcodec.h> 33#include <qtextcodec.h>
34#include <qpixmap.h> 34#include <qpixmap.h>
35#include <qpushbutton.h> 35#include <qpushbutton.h>
36#include <qapplication.h> 36#include <qapplication.h>
37 37
38#include <kdebug.h> 38#include <kdebug.h>
39#include <kglobal.h> 39#include <kglobal.h>
40#include <klocale.h> 40#include <klocale.h>
41#include <ktextedit.h> 41#include <ktextedit.h>
42#include <kfiledialog.h> 42#include <kfiledialog.h>
43#include <kmessagebox.h> 43#include <kmessagebox.h>
44#include "koprefs.h" 44#include "koprefs.h"
45#include <klineedit.h> 45#include <klineedit.h>
46#include <kdialog.h> 46#include <kdialog.h>
47#include "kolocationbox.h" 47#include "kolocationbox.h"
48 48
49#include <libkcal/journal.h> 49#include <libkcal/journal.h>
50#include <libkcal/calendarresources.h> 50#include <libkcal/calendarresources.h>
51#include <libkcal/resourcecalendar.h> 51#include <libkcal/resourcecalendar.h>
52#include <kresources/resourceselectdialog.h> 52#include <kresources/resourceselectdialog.h>
53 53
54#include "journalentry.h" 54#include "journalentry.h"
55//#include "journalentry.moc" 55//#include "journalentry.moc"
56#ifndef DESKTOP_VERSION 56#ifndef DESKTOP_VERSION
57#include <qpe/qpeapplication.h> 57#include <qpe/qpeapplication.h>
58#endif 58#endif
59JournalEntry::JournalEntry(Calendar *calendar,QWidget *parent) : 59JournalEntry::JournalEntry(Calendar *calendar,QWidget *parent) :
60 QFrame(parent) 60 QFrame(parent)
61{ 61{
62 62
63 int fac = 5; 63 int fac = 5;
64 heiHint = QApplication::desktop()->height(); 64 heiHint = QApplication::desktop()->height();
65 if ( heiHint > 800 ) 65 if ( heiHint > 800 )
66 fac += 2; 66 fac += 2;
67 heiHint = heiHint / fac; 67 heiHint = heiHint / fac;
68 68
69 showOnlyMode = false; 69 showOnlyMode = false;
70 mCalendar = calendar; 70 mCalendar = calendar;
71 mJournal = 0; 71 mJournal = 0;
72 visibleMode = true; 72 visibleMode = true;
73 QHBox * vb = new QHBox ( this ); 73 QHBox * vb = new QHBox ( this );
74 QPixmap iconp; 74 QPixmap iconp;
75 vb->setMargin ( KDialog::marginHint()-1 ); 75 vb->setMargin ( KDialog::marginHint()-1 );
76 QPushButton * toggleJournal = new QPushButton( vb ); 76 QPushButton * toggleJournal = new QPushButton( vb );
77 iconp = SmallIcon("1updownarrow"); 77 iconp = SmallIcon("1updownarrow");
78 toggleJournal->setPixmap (iconp ) ; 78 toggleJournal->setPixmap (iconp ) ;
79 new QLabel(" "+i18n("Title: "),vb); 79 vb->setStretchFactor (new QLabel(" "+i18n("Title: "),vb),1);
80 vb->setStretchFactor( toggleJournal, 1 );
80 mTitle = new KOLocationBox(TRUE, vb, 30); 81 mTitle = new KOLocationBox(TRUE, vb, 30);
81 mTitle->setSizePolicy( QSizePolicy( QSizePolicy::MinimumExpanding ,QSizePolicy::Fixed ,FALSE) ); 82 mTitle->setSizePolicy( QSizePolicy( QSizePolicy::MinimumExpanding ,QSizePolicy::Fixed ,FALSE) );
82 mCalendarBox = new QComboBox(vb); 83 mCalendarBox = new QComboBox(vb);
84 mCalendarBox->setSizePolicy( QSizePolicy( QSizePolicy::MinimumExpanding ,QSizePolicy::Fixed ,FALSE) );
85#ifndef DESKTOP_VERSION
86 mTitle->setSizeLimit( 8 );
87 mCalendarBox->setSizeLimit( 8 );
88#endif
89 vb->setStretchFactor ( mTitle, 8 );
90 vb->setStretchFactor ( mCalendarBox, 3 );
83 //mTitleLabel->setMargin(0); 91 //mTitleLabel->setMargin(0);
84 //mTitleLabel->setAlignment(AlignCenter); 92 //mTitleLabel->setAlignment(AlignCenter);
85 QPushButton * loadTemplate = new QPushButton( vb ); 93 QPushButton * loadTemplate = new QPushButton( vb );
86 QPushButton * saveTemplate = new QPushButton( vb ); 94 QPushButton * saveTemplate = new QPushButton( vb );
87 if ( QApplication::desktop()->width() < 321 ) 95 if ( QApplication::desktop()->width() < 321 )
88 iconp = SmallIcon("fileexport16"); 96 iconp = SmallIcon("fileexport16");
89 else 97 else
90 iconp = SmallIcon("fileexport"); 98 iconp = SmallIcon("fileexport");
91 saveTemplate->setPixmap (iconp ) ; 99 saveTemplate->setPixmap (iconp ) ;
92 int size = saveTemplate->sizeHint().height(); 100 int size = saveTemplate->sizeHint().height();
93 if ( QApplication::desktop()->width() < 321 ) 101 if ( QApplication::desktop()->width() < 321 )
94 iconp = SmallIcon("fileimport16"); 102 iconp = SmallIcon("fileimport16");
95 else 103 else
96 iconp = SmallIcon("fileimport"); 104 iconp = SmallIcon("fileimport");
97 loadTemplate->setPixmap (iconp ) ; 105 loadTemplate->setPixmap (iconp ) ;
98 loadTemplate->setFixedSize( size, size ); 106 loadTemplate->setFixedSize( size, size );
99 saveTemplate->setFixedSize( size, size ); 107 saveTemplate->setFixedSize( size, size );
100 toggleJournal->setFixedSize( size , size ); 108 toggleJournal->setFixedSize( size , size );
101 mTitle->setMaximumHeight( size+4); 109 mTitle->setMaximumHeight( size+4);
102 mCalendarBox->setMaximumHeight( size+4); 110 mCalendarBox->setMaximumHeight( size+4);
103 mEditor = new KTextEdit(this); 111 mEditor = new KTextEdit(this);
104#ifndef DESKTOP_VERSION 112#ifndef DESKTOP_VERSION
105 QPEApplication::setStylusOperation( mEditor, QPEApplication::RightOnHold ); 113 QPEApplication::setStylusOperation( mEditor, QPEApplication::RightOnHold );
106#endif 114#endif
107 mEditor->setWordWrap( KTextEdit::WidgetWidth ); 115 mEditor->setWordWrap( KTextEdit::WidgetWidth );
108 QBoxLayout *topLayout = new QVBoxLayout(this); 116 QBoxLayout *topLayout = new QVBoxLayout(this);
109 topLayout->addWidget(vb); 117 topLayout->addWidget(vb);
110 topLayout->addWidget(mEditor); 118 topLayout->addWidget(mEditor);
111 mEditor->installEventFilter(this); 119 mEditor->installEventFilter(this);
112 connect( saveTemplate, SIGNAL( clicked() ), this , SLOT( slotSaveTemplate() ) ); 120 connect( saveTemplate, SIGNAL( clicked() ), this , SLOT( slotSaveTemplate() ) );
113 connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( slotLoadTemplate() ) ); 121 connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( slotLoadTemplate() ) );
114 connect( toggleJournal, SIGNAL( clicked() ), this , SLOT( toggleShowJournal() ) ); 122 connect( toggleJournal, SIGNAL( clicked() ), this , SLOT( toggleShowJournal() ) );
115 mTitle->load( KOLocationBox::SUMMARYJOURNAL ); 123 mTitle->load( KOLocationBox::SUMMARYJOURNAL );
116 mTitle->lineEdit ()->setText(""); 124 mTitle->lineEdit ()->setText("");
117} 125}
118 126
119JournalEntry::~JournalEntry() 127JournalEntry::~JournalEntry()
120{ 128{
121 //qDebug("JournalEntry::~JournalEntry() "); 129 //qDebug("JournalEntry::~JournalEntry() ");
122} 130}
123QSize JournalEntry::sizeHint() const 131QSize JournalEntry::sizeHint() const
124{ 132{
125 return QSize ( 240, heiHint ); 133 return QSize ( 240, heiHint );
126} 134}
127void JournalEntry::slotSaveTemplate() 135void JournalEntry::slotSaveTemplate()
128{ 136{
129 QString fileName =locateLocal( "templates", "journals" ); 137 QString fileName =locateLocal( "templates", "journals" );
130 QDir t_dir; 138 QDir t_dir;
@@ -158,139 +166,141 @@ void JournalEntry::slotLoadTemplate()
158 if ( fileName.length() == 0 ) 166 if ( fileName.length() == 0 )
159 return; 167 return;
160 QFile fileIn( fileName ); 168 QFile fileIn( fileName );
161 if (!fileIn.open( IO_ReadOnly ) ) { 169 if (!fileIn.open( IO_ReadOnly ) ) {
162 KMessageBox::error( this, i18n("Error loading template file\n '%1'.") 170 KMessageBox::error( this, i18n("Error loading template file\n '%1'.")
163 .arg( fileName ) ); 171 .arg( fileName ) );
164 return; 172 return;
165 } 173 }
166 QTextStream tsIn( &fileIn ); 174 QTextStream tsIn( &fileIn );
167 tsIn.setCodec( QTextCodec::codecForName("utf8") ); 175 tsIn.setCodec( QTextCodec::codecForName("utf8") );
168 QString text = tsIn.read(); 176 QString text = tsIn.read();
169 fileIn.close(); 177 fileIn.close();
170 int line, col; 178 int line, col;
171 mEditor->getCursorPosition (& line, & col ); 179 mEditor->getCursorPosition (& line, & col );
172 mEditor-> insertAt ( text, line, col, true ); 180 mEditor-> insertAt ( text, line, col, true );
173 //mEditor->setIgnoreMark( true ); 181 //mEditor->setIgnoreMark( true );
174} 182}
175void JournalEntry::setDate(const QDate &date) 183void JournalEntry::setDate(const QDate &date)
176{ 184{
177 showOnlyMode = false; 185 showOnlyMode = false;
178 writeJournal(); 186 writeJournal();
179 mDate = date; 187 mDate = date;
180 fillCalendar( mCalendar->defaultCalendar() ); 188 fillCalendar( mCalendar->defaultCalendar() );
181} 189}
182void JournalEntry::fillCalendar( int setToID ) 190void JournalEntry::fillCalendar( int setToID )
183{ 191{
184 mCalendarBox->clear(); 192 mCalendarBox->clear();
185 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); 193 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
186 int std = 0; 194 int std = 0;
187 int count = 0; 195 int count = 0;
188 while ( kkf ) { 196 while ( kkf ) {
189 if ( (!kkf->mErrorOnLoad &&! kkf->isReadOnly) || setToID == kkf->mCalNumber ) { 197 if ( (!kkf->mErrorOnLoad &&! kkf->isReadOnly) || setToID == kkf->mCalNumber ) {
190 if ( setToID ) { 198 if ( setToID ) {
191 if ( kkf->mCalNumber == setToID ) 199 if ( kkf->mCalNumber == setToID )
192 std = count; 200 std = count;
193 } else { 201 } else {
194 if ( kkf->isStandard ) { 202 if ( kkf->isStandard ) {
195 std = count; 203 std = count;
196 } 204 }
197 } 205 }
198 ++count; 206 ++count;
199 mCalendarBox->insertItem( kkf->mName ); 207 mCalendarBox->insertItem( kkf->mName );
200 } 208 }
201 kkf = KOPrefs::instance()->mCalendars.next(); 209 kkf = KOPrefs::instance()->mCalendars.next();
202 } 210 }
203 mCalendarBox->setCurrentItem( std ); 211 mCalendarBox->setCurrentItem( std );
204 if ( KOPrefs::instance()->mCalendars.count() == 1 ) 212 if ( KOPrefs::instance()->mCalendars.count() == 1 )
205 mCalendarBox->hide(); 213 mCalendarBox->hide();
206 else 214 else {
207 mCalendarBox->show(); 215 mCalendarBox->show();
216 }
208} 217}
209 218
210void JournalEntry::toggleShowJournal() 219void JournalEntry::toggleShowJournal()
211{ 220{
212 if (!mEditor->text().isEmpty() || !mTitle->currentText ().isEmpty()) 221 if (!mEditor->text().isEmpty() || !mTitle->currentText ().isEmpty())
213 flushEntry(); 222 flushEntry();
214 if ( showOnlyMode ) 223 if ( showOnlyMode )
215 emit showJournalOnly( 0 ); 224 emit showJournalOnly( 0 );
216 else { 225 else {
217 // we have to protect mJournal from deleting if mJournal has empty text 226 // we have to protect mJournal from deleting if mJournal has empty text
218 visibleMode = false; // set to true via :setShowOnly() 227 visibleMode = false; // set to true via :setShowOnly()
219 emit showJournalOnly( mJournal ); 228 emit showJournalOnly( mJournal );
220 //QTimer::singleShot( 0, this, SLOT( setVisibleOn() ) ); 229 //QTimer::singleShot( 0, this, SLOT( setVisibleOn() ) );
221 } 230 }
222} 231}
223void JournalEntry::setVisibleOn() 232void JournalEntry::setVisibleOn()
224{ 233{
225 visibleMode = true; 234 visibleMode = true;
226} 235}
227void JournalEntry::setShowOnly() 236void JournalEntry::setShowOnly()
228{ 237{
229 showOnlyMode = true; 238 showOnlyMode = true;
230 if ( mTitle->currentText().isEmpty() ) 239 if ( mTitle->currentText().isEmpty() )
231 mTitle->setFocus(); 240 mTitle->setFocus();
232 else 241 else
233 mEditor->setFocus(); 242 mEditor->setFocus();
234} 243}
235void JournalEntry::setJournal(Journal *journal, bool saveJournal ) 244void JournalEntry::setJournal(Journal *journal, bool saveJournal )
236{ 245{
237 if ( saveJournal ) 246 if ( saveJournal )
238 writeJournal(); 247 writeJournal();
239 mTitle->load( KOLocationBox::SUMMARYJOURNAL ); 248 mTitle->load( KOLocationBox::SUMMARYJOURNAL );
240 249
241 mJournal = journal; 250 mJournal = journal;
242 if ( journal->isReadOnly() ) 251 if ( journal->isReadOnly() )
243 mTitle->lineEdit ()->setText(mJournal->summary()+" ("+i18n("readonly")+")"); 252 mTitle->lineEdit ()->setText(mJournal->summary()+" ("+i18n("readonly")+")");
244 else 253 else
245 mTitle->lineEdit ()->setText(mJournal->summary()); 254 mTitle->lineEdit ()->setText(mJournal->summary());
246 mEditor->setText(mJournal->description()); 255 mEditor->setText(mJournal->description());
247 mTitle->setEnabled (!journal->isReadOnly() ); 256 mTitle->setEnabled (!journal->isReadOnly() );
248 mEditor->setReadOnly ( journal->isReadOnly() ); 257 mEditor->setReadOnly ( journal->isReadOnly() );
258 mCalendarBox->setEnabled (!journal->isReadOnly() );
249 fillCalendar( mJournal->calID() ); 259 fillCalendar( mJournal->calID() );
250} 260}
251 261
252Journal *JournalEntry::journal() const 262Journal *JournalEntry::journal() const
253{ 263{
254 return mJournal; 264 return mJournal;
255} 265}
256 266
257 267
258void JournalEntry::clear() 268void JournalEntry::clear()
259{ 269{
260 mJournal = 0; 270 mJournal = 0;
261 mEditor->setText(""); 271 mEditor->setText("");
262 mTitle->load( KOLocationBox::SUMMARYJOURNAL ); 272 mTitle->load( KOLocationBox::SUMMARYJOURNAL );
263 mTitle->lineEdit ()->setText(""); 273 mTitle->lineEdit ()->setText("");
264} 274}
265 275
266bool JournalEntry::eventFilter( QObject *o, QEvent *e ) 276bool JournalEntry::eventFilter( QObject *o, QEvent *e )
267{ 277{
268// kdDebug() << "JournalEntry::event received " << e->type() << endl; 278// kdDebug() << "JournalEntry::event received " << e->type() << endl;
269 279
270 if ( e->type() == QEvent::FocusOut ) { 280 if ( e->type() == QEvent::FocusOut ) {
271 writeJournal(); 281 writeJournal();
272 } 282 }
273 if ( e->type() == QEvent::KeyPress ) { 283 if ( e->type() == QEvent::KeyPress ) {
274 QKeyEvent * k = (QKeyEvent *) e; 284 QKeyEvent * k = (QKeyEvent *) e;
275 if ( k->state() == Qt::ControlButton ) { 285 if ( k->state() == Qt::ControlButton ) {
276 k->ignore(); 286 k->ignore();
277 //return true; 287 //return true;
278 } 288 }
279 } 289 }
280 290
281 return QFrame::eventFilter( o, e ); // standard event processing 291 return QFrame::eventFilter( o, e ); // standard event processing
282} 292}
283 293
284void JournalEntry::writeJournal() 294void JournalEntry::writeJournal()
285{ 295{
286 if ( !visibleMode ) return; 296 if ( !visibleMode ) return;
287 if ( !mTitle->isEnabled() ) return; 297 if ( !mTitle->isEnabled() ) return;
288 if (mEditor->text().isEmpty() && mTitle->currentText().isEmpty()) { 298 if (mEditor->text().isEmpty() && mTitle->currentText().isEmpty()) {
289 if ( mJournal ) { 299 if ( mJournal ) {
290 Journal* j = mJournal; 300 Journal* j = mJournal;
291 mJournal = 0; 301 mJournal = 0;
292 bool conf = KOPrefs::instance()->mConfirm; 302 bool conf = KOPrefs::instance()->mConfirm;
293 KOPrefs::instance()->mConfirm = false; 303 KOPrefs::instance()->mConfirm = false;
294 emit deleteJournal(j); 304 emit deleteJournal(j);
295 KOPrefs::instance()->mConfirm = conf; 305 KOPrefs::instance()->mConfirm = conf;
296 } 306 }