summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/journalentry.cpp53
-rw-r--r--korganizer/journalentry.h7
-rw-r--r--korganizer/koeditorgeneral.cpp8
-rw-r--r--korganizer/kojournalview.cpp10
-rw-r--r--korganizer/koprefs.cpp10
-rw-r--r--korganizer/koprefs.h1
6 files changed, 63 insertions, 26 deletions
diff --git a/korganizer/journalentry.cpp b/korganizer/journalentry.cpp
index 4751d40..56221dc 100644
--- a/korganizer/journalentry.cpp
+++ b/korganizer/journalentry.cpp
@@ -50,84 +50,85 @@
#include <libkcal/calendarresources.h>
#include <libkcal/resourcecalendar.h>
#include <kresources/resourceselectdialog.h>
#include "journalentry.h"
//#include "journalentry.moc"
#ifndef DESKTOP_VERSION
#include <qpe/qpeapplication.h>
#endif
JournalEntry::JournalEntry(Calendar *calendar,QWidget *parent) :
QFrame(parent)
{
int fac = 5;
heiHint = QApplication::desktop()->height();
if ( heiHint > 800 )
fac += 2;
heiHint = heiHint / fac;
showOnlyMode = false;
mCalendar = calendar;
mJournal = 0;
visibleMode = true;
QHBox * vb = new QHBox ( this );
QPixmap iconp;
vb->setMargin ( KDialog::marginHint()-1 );
QPushButton * toggleJournal = new QPushButton( vb );
iconp = SmallIcon("1updownarrow");
toggleJournal->setPixmap (iconp ) ;
new QLabel(" "+i18n("Title: "),vb);
mTitle = new KOLocationBox(TRUE, vb, 30);
mTitle->setSizePolicy( QSizePolicy( QSizePolicy::MinimumExpanding ,QSizePolicy::Fixed ,FALSE) );
- mTitleLabel = new QLabel(i18n("Title"),vb);
- mTitleLabel->setMargin(0);
- mTitleLabel->setAlignment(AlignCenter);
+ mCalendarBox = new QComboBox(vb);
+ //mTitleLabel->setMargin(0);
+ //mTitleLabel->setAlignment(AlignCenter);
QPushButton * loadTemplate = new QPushButton( vb );
QPushButton * saveTemplate = new QPushButton( vb );
if ( QApplication::desktop()->width() < 321 )
iconp = SmallIcon("fileexport16");
else
iconp = SmallIcon("fileexport");
saveTemplate->setPixmap (iconp ) ;
int size = saveTemplate->sizeHint().height();
if ( QApplication::desktop()->width() < 321 )
iconp = SmallIcon("fileimport16");
else
iconp = SmallIcon("fileimport");
loadTemplate->setPixmap (iconp ) ;
loadTemplate->setFixedSize( size, size );
saveTemplate->setFixedSize( size, size );
toggleJournal->setFixedSize( size , size );
mTitle->setMaximumHeight( size+4);
+ mCalendarBox->setMaximumHeight( size+4);
mEditor = new KTextEdit(this);
#ifndef DESKTOP_VERSION
QPEApplication::setStylusOperation( mEditor, QPEApplication::RightOnHold );
#endif
mEditor->setWordWrap( KTextEdit::WidgetWidth );
QBoxLayout *topLayout = new QVBoxLayout(this);
topLayout->addWidget(vb);
topLayout->addWidget(mEditor);
mEditor->installEventFilter(this);
connect( saveTemplate, SIGNAL( clicked() ), this , SLOT( slotSaveTemplate() ) );
connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( slotLoadTemplate() ) );
connect( toggleJournal, SIGNAL( clicked() ), this , SLOT( toggleShowJournal() ) );
mTitle->load( KOLocationBox::SUMMARYJOURNAL );
mTitle->lineEdit ()->setText("");
}
JournalEntry::~JournalEntry()
{
//qDebug("JournalEntry::~JournalEntry() ");
}
QSize JournalEntry::sizeHint() const
{
return QSize ( 240, heiHint );
}
void JournalEntry::slotSaveTemplate()
{
QString fileName =locateLocal( "templates", "journals" );
QDir t_dir;
if ( !t_dir.exists(fileName) )
t_dir.mkdir ( fileName );
fileName += "/journal";
fileName = KFileDialog::getSaveFileName( fileName , i18n("Save as Journal template"), this );
@@ -147,153 +148,181 @@ void JournalEntry::slotSaveTemplate()
fileIn.close();
}
void JournalEntry::slotLoadTemplate()
{
QString fileName =locateLocal( "templates", "journals" );
QDir t_dir;
if ( !t_dir.exists(fileName) )
t_dir.mkdir ( fileName );
fileName += "/journal";
fileName = KFileDialog::getOpenFileName( fileName , i18n("Insert Journal template"), this );
if ( fileName.length() == 0 )
return;
QFile fileIn( fileName );
if (!fileIn.open( IO_ReadOnly ) ) {
KMessageBox::error( this, i18n("Error loading template file\n '%1'.")
.arg( fileName ) );
return;
}
QTextStream tsIn( &fileIn );
tsIn.setCodec( QTextCodec::codecForName("utf8") );
QString text = tsIn.read();
fileIn.close();
int line, col;
mEditor->getCursorPosition (& line, & col );
mEditor-> insertAt ( text, line, col, true );
//mEditor->setIgnoreMark( true );
}
void JournalEntry::setDate(const QDate &date)
{
showOnlyMode = false;
writeJournal();
mDate = date;
- int id = mCalendar->defaultCalendar();
- QString calname = KOPrefs::instance()->getCalendar( id )->mName;
- mTitleLabel->setText( " (" + calname +")");
+ fillCalendar( mCalendar->defaultCalendar() );
+}
+void JournalEntry::fillCalendar( int setToID )
+{
+ mCalendarBox->clear();
+ KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
+ int std = 0;
+ int count = 0;
+ while ( kkf ) {
+ if ( (!kkf->mErrorOnLoad &&! kkf->isReadOnly) || setToID == kkf->mCalNumber ) {
+ if ( setToID ) {
+ if ( kkf->mCalNumber == setToID )
+ std = count;
+ } else {
+ if ( kkf->isStandard ) {
+ std = count;
+ }
+ }
+ ++count;
+ mCalendarBox->insertItem( kkf->mName );
+ }
+ kkf = KOPrefs::instance()->mCalendars.next();
+ }
+ mCalendarBox->setCurrentItem( std );
+ if ( KOPrefs::instance()->mCalendars.count() == 1 )
+ mCalendarBox->hide();
+ else
+ mCalendarBox->show();
}
void JournalEntry::toggleShowJournal()
{
if (!mEditor->text().isEmpty() || !mTitle->currentText ().isEmpty())
flushEntry();
if ( showOnlyMode )
emit showJournalOnly( 0 );
else {
// we have to protect mJournal from deleting if mJournal has empty text
visibleMode = false; // set to true via :setShowOnly()
emit showJournalOnly( mJournal );
//QTimer::singleShot( 0, this, SLOT( setVisibleOn() ) );
}
}
void JournalEntry::setVisibleOn()
{
visibleMode = true;
}
void JournalEntry::setShowOnly()
{
showOnlyMode = true;
if ( mTitle->currentText().isEmpty() )
mTitle->setFocus();
else
mEditor->setFocus();
}
-void JournalEntry::setJournal(Journal *journal)
+void JournalEntry::setJournal(Journal *journal, bool saveJournal )
{
- writeJournal();
+ if ( saveJournal )
+ writeJournal();
mTitle->load( KOLocationBox::SUMMARYJOURNAL );
mJournal = journal;
if ( journal->isReadOnly() )
mTitle->lineEdit ()->setText(mJournal->summary()+" ("+i18n("readonly")+")");
else
mTitle->lineEdit ()->setText(mJournal->summary());
mEditor->setText(mJournal->description());
mTitle->setEnabled (!journal->isReadOnly() );
mEditor->setReadOnly ( journal->isReadOnly() );
- int id = mJournal->calID();
-
- QString calname = KOPrefs::instance()->getCalendar( id )->mName;
- mTitleLabel->setText( " (" + calname +")");
+ fillCalendar( mJournal->calID() );
}
Journal *JournalEntry::journal() const
{
return mJournal;
}
void JournalEntry::clear()
{
mJournal = 0;
mEditor->setText("");
mTitle->load( KOLocationBox::SUMMARYJOURNAL );
mTitle->lineEdit ()->setText("");
}
bool JournalEntry::eventFilter( QObject *o, QEvent *e )
{
// kdDebug() << "JournalEntry::event received " << e->type() << endl;
if ( e->type() == QEvent::FocusOut ) {
writeJournal();
}
if ( e->type() == QEvent::KeyPress ) {
QKeyEvent * k = (QKeyEvent *) e;
if ( k->state() == Qt::ControlButton ) {
k->ignore();
//return true;
}
}
return QFrame::eventFilter( o, e ); // standard event processing
}
void JournalEntry::writeJournal()
{
if ( !visibleMode ) return;
+ if ( !mTitle->isEnabled() ) return;
if (mEditor->text().isEmpty() && mTitle->currentText().isEmpty()) {
if ( mJournal ) {
Journal* j = mJournal;
mJournal = 0;
bool conf = KOPrefs::instance()->mConfirm;
KOPrefs::instance()->mConfirm = false;
emit deleteJournal(j);
KOPrefs::instance()->mConfirm = conf;
}
return;
}
// kdDebug() << "JournalEntry::writeJournal()..." << endl;
if (!mJournal) {
mJournal = new Journal;
mJournal->setDtStart(QDateTime(mDate,QTime(0,0,0)));
mCalendar->addJournal(mJournal);
}
if ( mJournal->description() != mEditor->text() ) {
mJournal->setDescription(mEditor->text());
}
if ( mJournal->summary() != mTitle->currentText() ) {
mJournal->setSummary(mTitle->currentText());
mTitle->save(KOLocationBox::SUMMARYJOURNAL);
}
+ int id = KOPrefs::instance()->getCalendarID( mCalendarBox->currentText() );
+ if ( mJournal->calID() != id ) {
+ mJournal->setCalID( id );
+ }
}
void JournalEntry::flushEntry()
{
writeJournal();
}
void JournalEntry::keyPressEvent ( QKeyEvent * e )
{
e->ignore();
}
diff --git a/korganizer/journalentry.h b/korganizer/journalentry.h
index fb19fb1..ed04b7c 100644
--- a/korganizer/journalentry.h
+++ b/korganizer/journalentry.h
@@ -2,84 +2,85 @@
This file is part of KOrganizer.
Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.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.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
As a special exception, permission is given to link this program
with any edition of Qt, and distribute the resulting executable,
without including the source code for Qt in the source distribution.
*/
#ifndef JOURNALENTRY_H
#define JOURNALENTRY_H
//
// Widget showing one Journal entry
#include <qframe.h>
#include <libkcal/calendar.h>
class QLabel;
class KTextEdit;
+class QComboBox;
class KLineEdit;
class KOLocationBox;
using namespace KCal;
class JournalEntry : public QFrame {
Q_OBJECT
public:
JournalEntry(Calendar *,QWidget *parent);
virtual ~JournalEntry();
- void setJournal(Journal *);
+ void setJournal(Journal *, bool saveJournal = true );
Journal *journal() const;
void setDate(const QDate &);
void clear();
void flushEntry();
void setShowOnly();
QSize sizeHint() const;
void setVisibleMode( bool b ) { visibleMode = b;}
-
+ void fillCalendar( int id = 0 );
protected slots:
void slotSaveTemplate();
void slotLoadTemplate();
void toggleShowJournal();
void setVisibleOn();
signals:
void deleteJournal(Journal *);
void newJournal();
void showJournalOnly( Journal * );
protected:
bool eventFilter( QObject *o, QEvent *e );
void writeJournal();
private:
bool visibleMode;
bool showOnlyMode;
Calendar *mCalendar;
Journal *mJournal;
QDate mDate;
void keyPressEvent ( QKeyEvent * ) ;
- QLabel *mTitleLabel;
+ QComboBox *mCalendarBox;
KOLocationBox * mTitle;
KTextEdit *mEditor;
int heiHint;
};
#endif
diff --git a/korganizer/koeditorgeneral.cpp b/korganizer/koeditorgeneral.cpp
index fd50b05..aa55d82 100644
--- a/korganizer/koeditorgeneral.cpp
+++ b/korganizer/koeditorgeneral.cpp
@@ -454,71 +454,65 @@ void KOEditorGeneral::setSecrecy( int num )
mSecrecyCombo->setCurrentItem(num);
}
void KOEditorGeneral::fillCalCombo( int setToID )
{
mCalendarBox->clear();
KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
int std = 0;
int count = 0;
while ( kkf ) {
if ( !kkf->mErrorOnLoad &&! kkf->isReadOnly ) {
if ( setToID ) {
if ( kkf->mCalNumber == setToID )
std = count;
} else {
if ( kkf->isStandard ) {
std = count;
}
}
++count;
mCalendarBox->insertItem( kkf->mName );
}
kkf = KOPrefs::instance()->mCalendars.next();
}
mCalendarBox->setCurrentItem( std );
if ( KOPrefs::instance()->mCalendars.count() == 1 )
mCalendarBox->hide();
else
mCalendarBox->show();
}
int KOEditorGeneral::getCalendarID()
{
- KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
- while ( kkf ) {
- if ( mCalendarBox->currentText() == kkf->mName)
- return kkf->mCalNumber;
- kkf = KOPrefs::instance()->mCalendars.next();
- }
- return 1;
+ return KOPrefs::instance()->getCalendarID( mCalendarBox->currentText() );
}
void KOEditorGeneral::readIncidence(Incidence *event)
{
fillCalCombo( event->calID() );
mAlarmMessage = event->summary();
if ( ! event->location().isEmpty() )
mAlarmMessage += " ("+event->location()+")";
mAlarmIncrCombo->setCurrentItem(0);
mSummaryEdit->setEditText(event->summary());
mLocationEdit->setEditText(event->location());
mDescriptionEdit->setText(event->description());
#if 0
// organizer information
mOwnerLabel->setText(i18n("Owner: ") + event->organizer());
#endif
enableAlarmEdit( event->isAlarmEnabled() );
//qDebug("KOEditorGeneral::readIncidence(Incidence *event) ");
if(!event->isAlarmEnabled()) {
// TODO: Implement a KPrefsComboItem to solve this in a clean way.
int alarmTime;
int a[] = { 1,5,10,15,30,60,180, 1440 };
int index = KOPrefs::instance()->mAlarmTime;
if (index < 0 || index > 7) {
alarmTime = 15;
} else {
alarmTime = a[index];
}
mAlarmTimeEdit->setValue(alarmTime);
}
diff --git a/korganizer/kojournalview.cpp b/korganizer/kojournalview.cpp
index 9b0e748..0523954 100644
--- a/korganizer/kojournalview.cpp
+++ b/korganizer/kojournalview.cpp
@@ -126,94 +126,96 @@ void KOJournalView::flushView()
{
static bool ff = false;
if ( ff ) return;
ff = true;
JournalEntry* mEntry = jEntries.first();
while ( mEntry ) {
mEntry->flushEntry();
mEntry = jEntries.next();
}
ff = false;
}
void KOJournalView::clearList()
{
JournalEntry* mEntry = jEntries.first();
while ( mEntry ) {
mEntry->clear();
mEntry = jEntries.next();
}
}
void KOJournalView::newJournal()
{
//qDebug(" KOJournalView::newJournal()");
flushView();
Journal* mJournal = new Journal;
mJournal->setDtStart(QDateTime(mDate,QTime(0,0,0)));
mCalendar->addJournal(mJournal);
showDates( mDate, QDate() );
}
void KOJournalView::showOnly ( Journal* j )
{
- qDebug("showOnly %x ", j);
+ //qDebug("showOnly %x ", j);
flushView();
if ( j == 0 ) {
showDates( mDate, QDate() );
return;
}
QPtrList<Journal> jl;
jl.append ( j );
showList( jl );
JournalEntry* mEntry = jEntries.first();
mEntry->setShowOnly();
}
void KOJournalView::showList(QPtrList<Journal> jl)
{
- qDebug("KOJournalView::showList %d",jl.count() );
+ //qDebug("KOJournalView::showList %d",jl.count() );
JournalEntry* mEntry = jEntries.first();
JournalEntry* firstEntry = mEntry;
int count = jl.count();
int iii = 0;
while ( iii < count ) {
if ( !mEntry ) {
mEntry = getNewEntry();
+ mEntry->setVisibleMode( true );
mEntry->setDate(mDate);
- mEntry->setJournal(jl.at(iii));
+ mEntry->setJournal(jl.at(iii), false);
mEntry->setVisibleMode( true );
mEntry->show();
mEntry = 0;
} else {
+ mEntry->setVisibleMode( true );
mEntry->setDate(mDate);
- mEntry->setJournal(jl.at(iii));
+ mEntry->setJournal(jl.at(iii), false);
mEntry->setVisibleMode( true );
mEntry->show();
mEntry = jEntries.next();
}
++iii;
}
while ( mEntry ) {
mEntry->setDate(mDate);
mEntry->clear();
if ( mEntry != firstEntry ) {
mEntry->hide();
mEntry->setVisibleMode( false );
}
else {
mEntry->setVisibleMode( true );
mEntry->show();
}
mEntry = jEntries.next();
}
}
void KOJournalView::showDates(const QDate &start, const QDate &)
{
mDate = start;
mDateLabel->setText(KGlobal::locale()->formatDate(mDate));
QPtrList<Journal> jl = calendar()->journals4Date( start );
showList( jl );
}
void KOJournalView::showEvents(QPtrList<Event>)
{
// After new creation of list view no events are selected.
diff --git a/korganizer/koprefs.cpp b/korganizer/koprefs.cpp
index bb3d720..a886735 100644
--- a/korganizer/koprefs.cpp
+++ b/korganizer/koprefs.cpp
@@ -472,64 +472,74 @@ void KOPrefs::usrReadConfig()
}
KopiCalendarFile * KOPrefs::getCalendar( int num )
{
return mDefCalColors[num-1];
}
KopiCalendarFile * KOPrefs::getNewCalendar()
{
KopiCalendarFile * kkf = new KopiCalendarFile();
kkf->mCalNumber = mNextAvailableCalendar;
mDefCalColors.resize( mNextAvailableCalendar );
mDefCalColors[mNextAvailableCalendar-1] = kkf;
++mNextAvailableCalendar;
kkf->mDefaultColor = mEventColor;
kkf->mName = i18n("New Calendar");
mCalendars.append( kkf );
return kkf;
}
void KOPrefs::deleteCalendar( int num )
{
KopiCalendarFile * kkf = mCalendars.first();
while ( kkf ) {
if ( kkf->mCalNumber == num ) {
qDebug("KOPrefs::deleteCalendar %d ", num );
mCalendars.remove( kkf );
delete kkf;
return;
}
kkf = mCalendars.next();
}
}
+int KOPrefs::getCalendarID( const QString & name )
+{
+ KopiCalendarFile * kkf = mCalendars.first();
+ while ( kkf ) {
+ if ( name == kkf->mName)
+ return kkf->mCalNumber;
+ kkf = mCalendars.next();
+ }
+ return 1;
+}
QString KOPrefs::calName( int calNum) const
{
return (mDefCalColors[calNum-1])->mName;
}
QColor KOPrefs::defaultColor( int calNum ) const
{
if ( calNum == 1 ) return mEventColor;
return (mDefCalColors[calNum-1])->mDefaultColor;
}
void KOPrefs::usrWriteConfig()
{
config()->setGroup("General");
config()->writeEntry("Custom Categories",mCustomCategories);
config()->setGroup("Personal Settings");
config()->writeEntry("user_name",mName);
config()->writeEntry("user_email",mEmail);
config()->setGroup("Category Colors");
QDictIterator<QColor> it(mCategoryColors);
while (it.current()) {
config()->writeEntry(it.currentKey(),*(it.current()));
++it;
}
KConfig fc (locateLocal("config","kopicalendarrc"));
fc.setGroup("CC");
fc.writeEntry("NumberCalendars",mCalendars.count());
int numCal = 1;
int writeCal = 0;
while ( numCal < mNextAvailableCalendar ) {
KopiCalendarFile * kkf = mCalendars.first();
while ( kkf ) {
diff --git a/korganizer/koprefs.h b/korganizer/koprefs.h
index 53d193b..7ec5327 100644
--- a/korganizer/koprefs.h
+++ b/korganizer/koprefs.h
@@ -71,64 +71,65 @@ class KopiCalendarFile : public QObject
};
class KOPrefs : public KPimPrefs
{
public:
enum { FormatVCalendar, FormatICalendar };
enum { MailClientKMail, MailClientSendmail };
enum { IMIPDummy, IMIPKMail };
enum { IMIPOutbox, IMIPdirectsend };
enum { neverAuto, addressbookAuto, selectedAuto };
enum { standardDestination, askDestination };
virtual ~KOPrefs();
/** Get instance of KOPrefs. It is made sure that there is only one
instance. */
static KOPrefs *instance();
/** Set preferences to default values */
void usrSetDefaults();
/** Read preferences from config file */
void usrReadConfig();
/** Write preferences to config file */
void usrWriteConfig();
void setCategoryDefaults();
void setAllDefaults();
KopiCalendarFile * getNewCalendar();
KopiCalendarFile * getCalendar( int );
void deleteCalendar( int );
QColor defaultColor( int ) const;
QString calName( int ) const;
+ int getCalendarID( const QString & name );
protected:
void setTimeZoneIdDefault();
/** Fill empty mail fields with default values. */
void fillMailDefaults();
private:
/** Constructor disabled for public. Use instance() to create a KOPrefs
object. */
KOPrefs();
static KOPrefs *mInstance;
QStringList getDefaultList();
QStringList getLocationDefaultList();
public:
// preferences data
KConfig* getConfig();
void setFullName(const QString &);
QString fullName();
void setEmail(const QString &);
QString email();
QString mAdditional;
bool mEmailControlCenter;
bool mBcc;
bool mAutoSave;
int mAutoSaveInterval;
bool mConfirm;
bool mEnableGroupScheduling;