summaryrefslogtreecommitdiff
authorhakan <hakan>2002-05-07 15:27:34 (UTC)
committer hakan <hakan>2002-05-07 15:27:34 (UTC)
commitad2c6f2e1b5504989ceed297d9ee8c49129ad1fb (patch) (side-by-side diff)
tree60d75877abb05a322b265d8b50621f3f7f75c9d1
parent8ba0398d93f0e70ea2de254a4090d8bd02f593cd (diff)
downloadopie-ad2c6f2e1b5504989ceed297d9ee8c49129ad1fb.zip
opie-ad2c6f2e1b5504989ceed297d9ee8c49129ad1fb.tar.gz
opie-ad2c6f2e1b5504989ceed297d9ee8c49129ad1fb.tar.bz2
Added separate note editor dialog (currently only a QMultiLineEdit)
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/datebook/.cvsignore2
-rw-r--r--core/pim/datebook/datebook.pro9
-rw-r--r--core/pim/datebook/dateentry.ui13
-rw-r--r--core/pim/datebook/dateentryimpl.cpp26
-rw-r--r--core/pim/datebook/dateentryimpl.h4
-rw-r--r--core/pim/datebook/noteentry.ui68
-rw-r--r--core/pim/datebook/noteentryimpl.cpp16
-rw-r--r--core/pim/datebook/noteentryimpl.h18
8 files changed, 148 insertions, 8 deletions
diff --git a/core/pim/datebook/.cvsignore b/core/pim/datebook/.cvsignore
index d2e4975..74ec374 100644
--- a/core/pim/datebook/.cvsignore
+++ b/core/pim/datebook/.cvsignore
@@ -1,16 +1,18 @@
moc_*
Makefile*
dateentry.h
datebookdayheader.h
dateentry.cpp
datebookdayheader.cpp
datebookweekheader.cpp
datebookweekheader.h
datebooksettingsbase.h
datebooksettingsbase.cpp
repeatentrybase.cpp
repeatentrybase.h
datebookweeklstdayhdr.cpp
datebookweeklstdayhdr.h
datebookweeklstheader.cpp
datebookweeklstheader.h
+noteentry.cpp
+noteentry.h
diff --git a/core/pim/datebook/datebook.pro b/core/pim/datebook/datebook.pro
index 9383053..60c2b08 100644
--- a/core/pim/datebook/datebook.pro
+++ b/core/pim/datebook/datebook.pro
@@ -1,53 +1,56 @@
TEMPLATE = app
CONFIG += qt warn_on release
DESTDIR = $(OPIEDIR)/bin
HEADERS = datebookday.h \
datebook.h \
dateentryimpl.h \
datebookdayheaderimpl.h \
datebooksettings.h \
datebookweek.h \
datebookweeklst.h \
datebookweekheaderimpl.h \
repeatentry.h \
- timepicker.h
+ timepicker.h \
+ noteentryimpl.h
SOURCES = main.cpp \
datebookday.cpp \
datebook.cpp \
dateentryimpl.cpp \
datebookdayheaderimpl.cpp \
datebooksettings.cpp \
datebookweek.cpp \
datebookweeklst.cpp \
datebookweekheaderimpl.cpp \
repeatentry.cpp \
- timepicker.cpp
+ timepicker.cpp \
+ noteentryimpl.cpp
INTERFACES = dateentry.ui \
datebookdayheader.ui \
datebooksettingsbase.ui \
datebookweekheader.ui \
datebookweeklstheader.ui \
datebookweeklstdayhdr.ui \
- repeatentrybase.ui
+ repeatentrybase.ui \
+ noteentry.ui
INCLUDEPATH += $(OPIEDIR)/include
DEPENDPATH += $(OPIEDIR)/include
LIBS += -lqpe -lopie
TARGET = datebook
TRANSLATIONS = ../i18n/pt_BR/datebook.ts
TRANSLATIONS += ../i18n/de/datebook.ts
TRANSLATIONS += ../i18n/en/datebook.ts
TRANSLATIONS += ../i18n/hu/datebook.ts
TRANSLATIONS += ../i18n/pl/datebook.ts
TRANSLATIONS += ../i18n/sl/datebook.ts
TRANSLATIONS += ../i18n/ja/datebook.ts
TRANSLATIONS += ../i18n/ko/datebook.ts
TRANSLATIONS += ../i18n/no/datebook.ts
TRANSLATIONS += ../i18n/zh_CN/datebook.ts
TRANSLATIONS += ../i18n/zh_TW/datebook.ts
TRANSLATIONS += ../i18n/fr/datebook.ts
diff --git a/core/pim/datebook/dateentry.ui b/core/pim/datebook/dateentry.ui
index 1a712ec..fadbc35 100644
--- a/core/pim/datebook/dateentry.ui
+++ b/core/pim/datebook/dateentry.ui
@@ -444,103 +444,114 @@
<widget row="8" column="3" >
<class>QComboBox</class>
<item>
<property>
<name>text</name>
<string>Silent</string>
</property>
</item>
<item>
<property>
<name>text</name>
<string>Loud</string>
</property>
</item>
<property stdset="1">
<name>name</name>
<cstring>comboSound</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>false</bool>
</property>
</widget>
<widget row="9" column="0" >
<class>QLabel</class>
<property stdset="1">
<name>name</name>
<cstring>lblRepeat</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>Repeat</string>
</property>
</widget>
<widget row="9" column="1" rowspan="1" colspan="3" >
<class>QToolButton</class>
<property stdset="1">
<name>name</name>
<cstring>cmdRepeat</cstring>
</property>
<property stdset="1">
<name>focusPolicy</name>
<enum>TabFocus</enum>
</property>
<property stdset="1">
<name>text</name>
<string>No Repeat...</string>
</property>
+ <property stdset="1">
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>0</vsizetype>
+ </sizepolicy>
+ </property>
</widget>
<widget row="10" column="0" rowspan="1" colspan="4" >
- <class>QMultiLineEdit</class>
+ <class>QToolButton</class>
<property stdset="1">
<name>name</name>
<cstring>editNote</cstring>
</property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Note...</string>
+ </property>
</widget>
</grid>
</widget>
<customwidgets>
<customwidget>
<class>TimeZoneSelector</class>
<header location="global">qpe/tzselect.h</header>
<sizehint>
<width>21</width>
<height>10</height>
</sizehint>
<container>0</container>
<sizepolicy>
<hordata>7</hordata>
<verdata>1</verdata>
</sizepolicy>
<pixmap>image0</pixmap>
</customwidget>
<customwidget>
<class>CategorySelect</class>
<header location="global">qpe/categoryselect.h</header>
<sizehint>
<width>-1</width>
<height>-1</height>
</sizehint>
<container>0</container>
<sizepolicy>
<hordata>7</hordata>
<verdata>1</verdata>
</sizepolicy>
<pixmap>image1</pixmap>
</customwidget>
<customwidget>
<class>TimePicker</class>
<header location="local">timepicker.h</header>
<sizehint>
<width>-1</width>
<height>-1</height>
</sizehint>
<container>0</container>
<sizepolicy>
<hordata>7</hordata>
<verdata>1</verdata>
</sizepolicy>
<pixmap>image1</pixmap>
</customwidget>
</customwidgets>
<images>
diff --git a/core/pim/datebook/dateentryimpl.cpp b/core/pim/datebook/dateentryimpl.cpp
index c4f6c68..9cc5073 100644
--- a/core/pim/datebook/dateentryimpl.cpp
+++ b/core/pim/datebook/dateentryimpl.cpp
@@ -83,206 +83,224 @@ bool DateEntry::eventFilter(QObject *obj, QEvent *ev )
} else if( ev->type() == QEvent::FocusOut ){
if( obj == comboEnd ){
QString s;
s.sprintf("%.2d:%.2d",endTime.hour(), endTime.minute());
comboEnd->setText(s);
}
else if( obj == comboStart ){
QString s;
s.sprintf("%.2d:%.2d",startTime.hour(), startTime.minute());
comboStart->setText(s);
}
}
return false;
}
static void addOrPick( QComboBox* combo, const QString& t )
{
// Pick an item if one excists
for (int i=0; i<combo->count(); i++) {
if ( combo->text(i) == t ) {
combo->setCurrentItem(i);
return;
}
}
// Else add one
combo->insertItem(t);
combo->setCurrentItem(combo->count()-1);
}
DateEntry::DateEntry( bool startOnMonday, const Event &event, bool whichClock,
QWidget* parent, const char* name )
: DateEntryBase( parent, name ),
ampm( whichClock ),
startWeekOnMonday( startOnMonday ),
m_showStart(true)
{
init();
setDates(event.start(),event.end());
comboCategory->setCategories( event.categories(), "Calendar", tr("Calendar") );
if(!event.description().isEmpty())
addOrPick( comboDescription, event.description() );
if(!event.location().isEmpty())
addOrPick( comboLocation, event.location() );
checkAlarm->setChecked( event.hasAlarm() );
checkAllDay->setChecked( event.type() == Event::AllDay );
- if(!event.notes().isEmpty())
- editNote->setText(event.notes());
+ if(!event.notes().isEmpty()) noteStr=event.notes();
+ else noteStr="";
spinAlarm->setValue(event.alarmTime());
if ( event.alarmSound() != Event::Silent )
comboSound->setCurrentItem( 1 );
if ( event.hasRepeat() ) {
rp = event.repeatPattern();
cmdRepeat->setText( tr("Repeat...") );
}
setRepeatLabel();
}
void DateEntry::setDates( const QDateTime& s, const QDateTime& e )
{
startDate = s.date();
endDate = e.date();
startTime = s.time();
endTime = e.time();
startDateChanged( s.date().year(), s.date().month(), s.date().day() );
endDateChanged( e.date().year(), e.date().month(), e.date().day() );
updateTimeEdit(true,true);
}
void DateEntry::updateTimeEdit(bool s, bool e) {
// Comboboxes
QString strStart, strEnd;
int shour, ehour;
if ( ampm ) {
shour = startTime.hour();
ehour = endTime.hour();
if ( shour >= 12 ) {
if ( shour > 12 )
shour -= 12;
strStart.sprintf( "%d:%02d PM", shour, startTime.minute() );
} else {
if ( shour == 0 )
shour = 12;
strStart.sprintf( "%d:%02d AM", shour, startTime.minute() );
}
if ( ehour == 24 && endTime.minute() == 0 ) {
strEnd = "11:59 PM"; // or "midnight"
} else if ( ehour >= 12 ) {
if ( ehour > 12 )
ehour -= 12;
strEnd.sprintf( "%d:%02d PM", ehour, endTime.minute() );
} else {
if ( ehour == 0 )
ehour = 12;
strEnd.sprintf( "%d:%02d AM", ehour, endTime.minute() );
}
} else {
strStart.sprintf( "%02d:%02d", startTime.hour(), startTime.minute() );
strEnd.sprintf( "%02d:%02d", endTime.hour(), endTime.minute() );
}
if (s) comboStart->setText(strStart);
if (e) comboEnd->setText(strEnd);
}
void DateEntry::init()
{
comboDescription->setInsertionPolicy(QComboBox::AtCurrent);
comboLocation->setInsertionPolicy(QComboBox::AtCurrent);
initCombos();
QPopupMenu *m1 = new QPopupMenu( this );
startPicker = new DateBookMonth( m1, 0, TRUE );
m1->insertItem( startPicker );
buttonStart->setPopup( m1 );
connect( startPicker, SIGNAL( dateClicked( int, int, int ) ),
this, SLOT( startDateChanged( int, int, int ) ) );
//Let start button change both start and end dates
connect( startPicker, SIGNAL( dateClicked( int, int, int ) ),
this, SLOT( endDateChanged( int, int, int ) ) );
connect( qApp, SIGNAL( clockChanged( bool ) ),
this, SLOT( slotChangeClock( bool ) ) );
connect( qApp, SIGNAL(weekChanged(bool)),
this, SLOT(slotChangeStartOfWeek(bool)) );
+
+ connect( editNote, SIGNAL(clicked()),
+ this, SLOT(slotEditNote()) );
QPopupMenu *m2 = new QPopupMenu( this );
endPicker = new DateBookMonth( m2, 0, TRUE );
m2->insertItem( endPicker );
buttonEnd->setPopup( m2 );
connect( endPicker, SIGNAL( dateClicked( int, int, int ) ),
this, SLOT( endDateChanged( int, int, int ) ) );
connect(timePickerStart, SIGNAL( timeChanged(const QTime &) ),
this, SLOT( startTimePicked(const QTime &) ));
- editNote->setFixedVisibleLines(3);
// install eventFilters
comboEnd->installEventFilter( this );
comboStart->installEventFilter( this );
}
/*
* Destroys the object and frees any allocated resources
*/
DateEntry::~DateEntry()
{
// no need to delete child widgets, Qt does it all for us
//cout << "Del: " << comboStart->currentText() << endl;
}
/*
* public slot
*/
+
+void DateEntry::slotEditNote() {
+ QString s;
+ s.sprintf("<B>%d/%d</B> ", startDate.day(), startDate.month());
+ NoteEntry noteDlg(s+comboDescription->currentText(), noteStr,
+ this,0,TRUE);
+
+#if defined(Q_WS_QWS) || defined(_WS_QWS_)
+ noteDlg.showMaximized();
+#endif
+ if (noteDlg.exec() ) {
+ noteStr=noteDlg.note->text();
+ }
+
+}
+
void DateEntry::endDateChanged( int y, int m, int d )
{
endDate.setYMD( y, m, d );
if ( endDate < startDate ) {
endDate = startDate;
}
buttonEnd->setText( TimeString::shortDate( endDate ) );
endPicker->setDate( endDate.year(), endDate.month(), endDate.day() );
}
static QTime parseTime( const QString& s, bool ampm )
{
QTime tmpTime;
QStringList l = QStringList::split( ':', s );
int hour = l[0].toInt();
if ( ampm ) {
int i=0;
while (i<int(l[1].length()) && l[1][i]>='0' && l[1][i]<='9')
i++;
QString digits = l[1].left(i);
if ( l[1].contains( "PM", FALSE ) ) {
if ( hour != 12 )
hour += 12;
} else {
if ( hour == 12 )
hour = 0;
}
l[1] = digits;
}
int minute = l[1].toInt();
if ( minute > 59 )
minute = 59;
else if ( minute < 0 )
minute = 0;
if ( hour > 23 ) {
hour = 23;
minute = 59;
} else if ( hour < 0 )
hour = 0;
tmpTime.setHMS( hour, minute, 0 );
return tmpTime;
}
/*
* public slot
*/
@@ -410,97 +428,97 @@ Event DateEntry::event()
if ( startTime > endTime && endDate == startDate ) {
QTime tmp = endTime;
endTime = startTime;
startTime = tmp;
}
// don't set the time if theres no need too
if ( ev.type() == Event::AllDay ) {
startTime.setHMS( 0, 0, 0 );
endTime.setHMS( 23, 59, 59 );
}
// adjust start and end times based on timezone
QDateTime start( startDate, startTime );
QDateTime end( endDate, endTime );
time_t start_utc, end_utc;
// qDebug( "tz: %s", timezone->currentZone().latin1() );
// get real timezone
QString realTZ;
realTZ = QString::fromLocal8Bit( getenv("TZ") );
// set timezone
if ( setenv( "TZ", timezone->currentZone(), true ) != 0 )
qWarning( "There was a problem setting the timezone." );
// convert to UTC based on selected TZ (calling tzset internally)
start_utc = TimeConversion::toUTC( start );
end_utc = TimeConversion::toUTC( end );
// done playing around... put it all back
unsetenv( "TZ" );
if ( !realTZ.isNull() )
if ( setenv( "TZ", realTZ, true ) != 0 )
qWarning( "There was a problem setting the timezone." );
// convert UTC to local time (calling tzset internally)
ev.setStart( TimeConversion::fromUTC( start_utc ) );
ev.setEnd( TimeConversion::fromUTC( end_utc ) );
// we only have one type of sound at the moment... LOUD!!!
if ( comboSound->currentItem() != 0 )
st = Event::Loud;
else
st = Event::Silent;
ev.setAlarm( checkAlarm->isChecked(), spinAlarm->value(), st );
if ( rp.type != Event::NoRepeat )
ev.setRepeat( TRUE, rp );
- ev.setNotes( editNote->text() );
+ ev.setNotes( noteStr );
//cout << "Start: " << comboStart->currentText() << endl;
return ev;
}
void DateEntry::setRepeatLabel()
{
switch( rp.type ) {
case Event::Daily:
cmdRepeat->setText( tr("Daily...") );
break;
case Event::Weekly:
cmdRepeat->setText( tr("Weekly...") );
break;
case Event::MonthlyDay:
case Event::MonthlyDate:
cmdRepeat->setText( tr("Monthly...") );
break;
case Event::Yearly:
cmdRepeat->setText( tr("Yearly...") );
break;
default:
cmdRepeat->setText( tr("No Repeat...") );
}
}
void DateEntry::setAlarmEnabled( bool alarmPreset, int presetTime, Event::SoundTypeChoice sound )
{
checkAlarm->setChecked( alarmPreset );
spinAlarm->setValue( presetTime );
if ( sound != Event::Silent )
comboSound->setCurrentItem( 1 );
else
comboSound->setCurrentItem( 0 );
}
void DateEntry::initCombos()
{
/*
comboStart->clear();
comboEnd->clear();
if ( ampm ) {
for ( int i = 0; i < 24; i++ ) {
if ( i == 0 ) {
comboStart->insertItem( "12:00 AM" );
comboStart->insertItem( "12:30 AM" );
diff --git a/core/pim/datebook/dateentryimpl.h b/core/pim/datebook/dateentryimpl.h
index 4eb24b4..a3c4668 100644
--- a/core/pim/datebook/dateentryimpl.h
+++ b/core/pim/datebook/dateentryimpl.h
@@ -1,75 +1,79 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#ifndef DATEENTRY_H
#define DATEENTRY_H
#include "dateentry.h"
+#include "noteentryimpl.h"
#include <qpe/event.h>
#include <qdatetime.h>
class DateBookMonth;
class DateEntry : public DateEntryBase
{
Q_OBJECT
public:
DateEntry( bool startOnMonday, const QDateTime &start,
const QDateTime &end, bool whichClock = FALSE,
QWidget* parent = 0, const char* name = 0 );
DateEntry( bool startOnMonday, const Event &event, bool whichCLock = FALSE,
QWidget* parent = 0, const char* name = 0 );
~DateEntry();
Event event();
void setAlarmEnabled( bool alarmPreset, int presetTime, Event::SoundTypeChoice );
virtual bool eventFilter( QObject *, QEvent * );
public slots:
void endDateChanged( int, int, int );
void endTimeChanged( const QString & );
void endTimeChanged( const QTime & );
void startDateChanged(int, int, int);
void startTimeEdited( const QString & );
void startTimeChanged( const QTime & );
void startTimePicked( const QTime & );
void typeChanged( const QString & );
void slotRepeat();
void slotChangeClock( bool );
void slotChangeStartOfWeek( bool );
+ void slotEditNote();
private:
void init();
void initCombos();
void setDates( const QDateTime& s, const QDateTime& e );
void setRepeatLabel();
void updateTimeEdit(bool,bool);
DateBookMonth *startPicker, *endPicker;
QDate startDate, endDate;
QTime startTime, endTime;
Event::RepeatPattern rp;
bool ampm:1;
bool startWeekOnMonday:1;
bool m_showStart:1;
+
+ QString noteStr;
};
#endif // DATEENTRY_H
diff --git a/core/pim/datebook/noteentry.ui b/core/pim/datebook/noteentry.ui
new file mode 100644
index 0000000..ce3c4ad
--- a/dev/null
+++ b/core/pim/datebook/noteentry.ui
@@ -0,0 +1,68 @@
+<!DOCTYPE UI><UI>
+<class>NoteEntryBase</class>
+<widget>
+ <class>QDialog</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>NoteEntryBase</cstring>
+ </property>
+ <property stdset="1">
+ <name>geometry</name>
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>465</width>
+ <height>500</height>
+ </rect>
+ </property>
+ <property stdset="1">
+ <name>caption</name>
+ <string>Edit Note</string>
+ </property>
+ <property>
+ <name>layoutMargin</name>
+ </property>
+ <property>
+ <name>layoutSpacing</name>
+ </property>
+ <vbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>2</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>0</number>
+ </property>
+ <widget>
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>eventLabel</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>&lt;b&gt;1/10&lt;/b&gt; Lunch</string>
+ </property>
+ <property stdset="1">
+ <name>alignment</name>
+ <set>AlignCenter</set>
+ </property>
+ <property>
+ <name>hAlign</name>
+ </property>
+ </widget>
+ <widget>
+ <class>QMultiLineEdit</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>note</cstring>
+ </property>
+ <property stdset="1">
+ <name>wordWrap</name>
+ <enum>WidgetWidth</enum>
+ </property>
+ </widget>
+ </vbox>
+</widget>
+</UI>
diff --git a/core/pim/datebook/noteentryimpl.cpp b/core/pim/datebook/noteentryimpl.cpp
new file mode 100644
index 0000000..9e1abb9
--- a/dev/null
+++ b/core/pim/datebook/noteentryimpl.cpp
@@ -0,0 +1,16 @@
+#include "noteentryimpl.h"
+#include "qstring.h"
+#include "qmultilinedit.h"
+#include "qlabel.h"
+
+NoteEntry::NoteEntry(const QString &title, const QString &noteStr,
+ QWidget* parent, const char* name, bool modal,
+ WFlags fl) :
+ NoteEntryBase(parent, name, modal, fl) {
+
+
+ eventLabel->setText(title);
+ note->setText(noteStr);
+ int l=note->length();
+ note->setCursorPosition(l,l,false);
+}
diff --git a/core/pim/datebook/noteentryimpl.h b/core/pim/datebook/noteentryimpl.h
new file mode 100644
index 0000000..f3adfa6
--- a/dev/null
+++ b/core/pim/datebook/noteentryimpl.h
@@ -0,0 +1,18 @@
+#ifndef noteentryimpl_h
+#define noteentryimpl_h
+
+#include "noteentry.h"
+
+class QString;
+
+class NoteEntry : public NoteEntryBase
+{
+ Q_OBJECT
+
+public:
+ NoteEntry(const QString &title, const QString &noteStr,
+ QWidget* parent = 0, const char* name = 0,
+ bool modal=TRUE, WFlags fl=0);
+};
+
+#endif