summaryrefslogtreecommitdiff
path: root/core/pim/datebook/datebook.cpp
authorumopapisdn <umopapisdn>2003-05-05 21:44:39 (UTC)
committer umopapisdn <umopapisdn>2003-05-05 21:44:39 (UTC)
commit3b193b852133a82b5c1708b68a7e460c63629768 (patch) (side-by-side diff)
tree8cd0ff3adc14f0b937d24ab99fca327fb3f16875 /core/pim/datebook/datebook.cpp
parent12a700f8903eedeba03d3aba7990b9d660410045 (diff)
downloadopie-3b193b852133a82b5c1708b68a7e460c63629768.zip
opie-3b193b852133a82b5c1708b68a7e460c63629768.tar.gz
opie-3b193b852133a82b5c1708b68a7e460c63629768.tar.bz2
UI and code cleanup. Both UI and code is now more consistent. Also removed menus in favor of toolbuttons. (why were they even available as menus in the first place?)
Diffstat (limited to 'core/pim/datebook/datebook.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/datebook/datebook.cpp276
1 files changed, 126 insertions, 150 deletions
diff --git a/core/pim/datebook/datebook.cpp b/core/pim/datebook/datebook.cpp
index cf1eeca..b7e89b0 100644
--- a/core/pim/datebook/datebook.cpp
+++ b/core/pim/datebook/datebook.cpp
@@ -60,155 +60,158 @@
#include <qtextstream.h>
#include <qtimer.h>
#include <qtl.h>
#include <qwidgetstack.h>
#include <qwindowsystem_qws.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
DateBook::DateBook( QWidget *parent, const char *, WFlags f )
: QMainWindow( parent, "datebook", f ),
aPreset( FALSE ),
presetTime( -1 ),
startTime( 8 ), // an acceptable default
rowStyle( 0 ),
bJumpToCurTime(FALSE),
syncing(FALSE),
inSearch(FALSE),
alarmCounter(0)
{
- bool needEvilHack= false; // if we need an Evil Hack
- QTime t;
- t.start();
- db = new DateBookDBHack;
- qDebug("loading db t=%d", t.elapsed() );
- loadSettings();
- setCaption( tr("Calendar") );
- setIcon( Resource::loadPixmap( "datebook_icon" ) );
-
- setToolBarsMovable( FALSE );
-
- views = new QWidgetStack( this );
- setCentralWidget( views );
-
- dayView = 0;
- weekView = 0;
- weekLstView = 0;
- monthView = 0;
-
- QPEToolBar *bar = new QPEToolBar( this );
- bar->setHorizontalStretchable( TRUE );
-
- QPEMenuBar *mb = new QPEMenuBar( bar );
- mb->setMargin( 0 );
-
- QPEToolBar *sub_bar = new QPEToolBar(this);
-
- QPopupMenu *view = new QPopupMenu( this );
- QPopupMenu *settings = new QPopupMenu( this );
-
- mb->insertItem( tr( "View" ), view );
- mb->insertItem( tr( "Settings" ), settings );
-
- QActionGroup *g = new QActionGroup( this );
- g->setExclusive( TRUE );
-
- QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ),
- QString::null, 0, this, 0 );
- connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) );
- a->addTo( sub_bar );
-
- a = new QAction( tr( "Today" ), Resource::loadPixmap( "datebook/to_day" ), QString::null, 0, g, 0 );
- connect( a, SIGNAL( activated() ), this, SLOT( slotToday() ) );
- a->addTo( sub_bar );
- a->addTo( view );
-
- a = new QAction( tr( "Day" ), Resource::loadPixmap( "day" ), QString::null, 0, g, 0 );
- connect( a, SIGNAL( activated() ), this, SLOT( viewDay() ) );
- a->addTo( sub_bar );
- a->addTo( view );
- a->setToggleAction( TRUE );
- a->setOn( TRUE );
- dayAction = a;
-
- a = new QAction( tr( "Week" ), Resource::loadPixmap( "week" ), QString::null, 0, g, 0 );
- connect( a, SIGNAL( activated() ), this, SLOT( viewWeek() ) );
- a->addTo( sub_bar );
- a->addTo( view );
- a->setToggleAction( TRUE );
- weekAction = a;
-
- a = new QAction( tr( "WeekLst" ), Resource::loadPixmap( "datebook/weeklst" ), QString::null, 0, g, 0 );
- connect( a, SIGNAL( activated() ), this, SLOT( viewWeekLst() ) );
- a->addTo( sub_bar );
- a->addTo( view );
- a->setToggleAction( TRUE );
- weekLstAction = a;
-
- a = new QAction( tr( "Month" ), Resource::loadPixmap( "month" ), QString::null, 0, g, 0 );
- connect( a, SIGNAL( activated() ), this, SLOT( viewMonth() ) );
- a->addTo( sub_bar );
- a->addTo( view );
- a->setToggleAction( TRUE );
- monthAction = a;
-
- a = new QAction( tr( "Find" ), Resource::loadPixmap( "mag" ), QString::null, 0, g, 0 );
- connect( a, SIGNAL(activated()), this, SLOT(slotFind()) );
- a->addTo( sub_bar );
-
- a = new QAction( tr( "Edit..." ), QString::null, 0, 0 );
- connect( a, SIGNAL( activated() ), this, SLOT( slotSettings() ) );
- a->addTo( settings );
+ bool needEvilHack= false; // if we need an Evil Hack
+ QTime t;
+ t.start();
+ db = new DateBookDBHack;
+ qDebug("loading db t=%d", t.elapsed() );
+ loadSettings();
+ setCaption( tr("Calendar") );
+ setIcon( Resource::loadPixmap( "datebook_icon" ) );
+
+ setToolBarsMovable( FALSE );
+
+ views = new QWidgetStack( this );
+ setCentralWidget( views );
+
+ dayView = 0;
+ weekView = 0;
+ weekLstView = 0;
+ monthView = 0;
+
+// QPEToolBar *bar = new QPEToolBar( this );
+// bar->setHorizontalStretchable( TRUE );
+
+// QPEMenuBar *mb = new QPEMenuBar( bar );
+// mb->setMargin( 0 );
+
+// QPopupMenu *view = new QPopupMenu( this );
+// mb->insertItem( tr( "View" ), view );
+
+ QPEToolBar *sub_bar = new QPEToolBar(this);
+ sub_bar->setHorizontalStretchable(TRUE);
+
+ QActionGroup *g = new QActionGroup( this );
+ g->setExclusive( TRUE );
+
+ QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 );
+ connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) );
+ a->addTo( sub_bar );
+
+ sub_bar->addSeparator();
+
+ a = new QAction( tr( "Today" ), Resource::loadPixmap( "datebook/to_day" ), QString::null, 0, g, 0 );
+ connect( a, SIGNAL( activated() ), this, SLOT( slotToday() ) );
+ a->addTo( sub_bar );
+// a->addTo( view );
+
+ sub_bar->addSeparator();
+
+ a = new QAction( tr( "Day" ), Resource::loadPixmap( "day" ), QString::null, 0, g, 0 );
+ connect( a, SIGNAL( activated() ), this, SLOT( viewDay() ) );
+ a->addTo( sub_bar );
+// a->addTo( view );
+ a->setToggleAction( TRUE );
+ a->setOn( TRUE );
+ dayAction = a;
+
+ a = new QAction( tr( "Week" ), Resource::loadPixmap( "week" ), QString::null, 0, g, 0 );
+ connect( a, SIGNAL( activated() ), this, SLOT( viewWeek() ) );
+ a->addTo( sub_bar );
+// a->addTo( view );
+ a->setToggleAction( TRUE );
+ weekAction = a;
+
+ a = new QAction( tr( "WeekLst" ), Resource::loadPixmap( "datebook/weeklst" ), QString::null, 0, g, 0 );
+ connect( a, SIGNAL( activated() ), this, SLOT( viewWeekLst() ) );
+ a->addTo( sub_bar );
+// a->addTo( view );
+ a->setToggleAction( TRUE );
+ weekLstAction = a;
+
+ a = new QAction( tr( "Month" ), Resource::loadPixmap( "month" ), QString::null, 0, g, 0 );
+ connect( a, SIGNAL( activated() ), this, SLOT( viewMonth() ) );
+ a->addTo( sub_bar );
+// a->addTo( view );
+ a->setToggleAction( TRUE );
+ monthAction = a;
+
+ sub_bar->addSeparator();
+
+ a = new QAction( tr( "Find" ), Resource::loadPixmap( "mag" ), QString::null, 0, this, 0 );
+ connect( a, SIGNAL(activated()), this, SLOT(slotFind()) );
+ a->addTo( sub_bar );
+
+ a = new QAction( tr( "Edit..." ), Resource::loadPixmap("SettingsIcon"), QString::null, 0, this, 0 );
+ connect( a, SIGNAL( activated() ), this, SLOT( slotSettings() ) );
+ a->addTo( sub_bar );
if(defaultView==DAY) viewDay();
if(defaultView==WEEK) needEvilHack=true; // viewWeek();
if(defaultView==WEEKLST) viewWeekLst();
if(defaultView==MONTH) viewMonth();
connect( qApp, SIGNAL(clockChanged(bool)), this, SLOT(changeClock(bool)) );
- connect( qApp, SIGNAL(weekChanged(bool)), this, SLOT(changeWeek(bool)) );
+ connect( qApp, SIGNAL(weekChanged(bool)), this, SLOT(changeWeek(bool)) );
#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
- connect( qApp, SIGNAL(appMessage(const QCString&, const QByteArray&)), this, SLOT(appMessage(const QCString&, const QByteArray&)) );
+ connect( qApp, SIGNAL(appMessage(const QCString&, const QByteArray&)), this, SLOT(appMessage(const QCString&, const QByteArray&)) );
#endif
// listen on QPE/System
#if defined(Q_WS_QWS)
#if !defined(QT_NO_COP)
- QCopChannel *channel = new QCopChannel( "QPE/System", this );
- connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), this, SLOT(receive(const QCString&, const QByteArray&)) );
- channel = new QCopChannel( "QPE/Datebook", this );
- connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), this, SLOT(receive(const QCString&, const QByteArray&)) );
- qDebug("olle\n");
+ QCopChannel *channel = new QCopChannel( "QPE/System", this );
+ connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), this, SLOT(receive(const QCString&, const QByteArray&)) );
+ channel = new QCopChannel( "QPE/Datebook", this );
+ connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), this, SLOT(receive(const QCString&, const QByteArray&)) );
+ qDebug("olle\n");
#endif
#endif
- qDebug("done t=%d", t.elapsed() );
+ qDebug("done t=%d", t.elapsed() );
/*
* Here is a problem description:
* When Weekview is the default view
* a DateBookWeekView get's created
* redraw() get's called. So what?
* Remember that we're still in the c'tor
* and no final layout has happened? Ok
* now all Events get arranged. Their x
* position get's determined by a QHeader
* position. But the QHeader isn't layouted or
* at the right position. redraw() is a slot
* so we'll call it then via a singleShot
* from view()
*/
if( needEvilHack ){
QTimer::singleShot( 500, this, SLOT(viewWeek()) );
}
}
void DateBook::receive( const QCString &msg, const QByteArray &data )
{
QDataStream stream( data, IO_ReadOnly );
if ( msg == "timeChange(QString)" ) {
@@ -352,72 +355,65 @@ void DateBook::view(int v, const QDate &d) {
views->raiseWidget( dayView );
dayView->redraw();
} else if (v==WEEK) {
initWeek();
weekAction->setOn( TRUE );
weekView->setDate( d );
views->raiseWidget( weekView );
weekView->redraw();
} else if (v==WEEKLST) {
initWeekLst();
weekLstAction->setOn( TRUE );
weekLstView->setDate(d);
views->raiseWidget( weekLstView );
weekLstView->redraw();
} else if (v==MONTH) {
initMonth();
monthAction->setOn( TRUE );
monthView->setDate( d.year(), d.month(), d.day() );
views->raiseWidget( monthView );
monthView->redraw();
}
}
void DateBook::viewDefault(const QDate &d) {
-/*
- Config config("DateBook");
- config.setGroup("Main");
- int current=config.readNumEntry("defaultview", DAY);
-
- view(current,d);
-*/
view(defaultView,d);
}
void DateBook::viewDay() {
- view(DAY,currentDate());
+ view(DAY,currentDate());
}
void DateBook::viewWeek() {
- view(WEEK,currentDate());
+ view(WEEK,currentDate());
}
void DateBook::viewWeekLst() {
- view(WEEKLST,currentDate());
+ view(WEEKLST,currentDate());
}
void DateBook::viewMonth() {
- view(MONTH,currentDate());
+ view(MONTH,currentDate());
}
void DateBook::insertEvent( const Event &e )
{
Event dupEvent=e;
dupEvent.setLocation(defaultLocation);
dupEvent.setCategories(defaultCategories);
db->addEvent(dupEvent);
emit newEvent();
}
void DateBook::duplicateEvent( const Event &e )
{
qWarning("Hmmm...");
// Alot of code duplication, as this is almost like editEvent();
if (syncing) {
QMessageBox::warning( this, tr("Calendar"), tr( "Can not edit data, currently syncing") );
return;
}
Event dupevent(e); // Make a duplicate.
// workaround added for text input.
QDialog editDlg( this, 0, TRUE );
@@ -505,151 +501,131 @@ void DateBook::removeEvent( const Event &e )
dayView->redraw();
}
void DateBook::addEvent( const Event &e )
{
QDate d = e.start().date();
initDay();
dayView->setDate( d );
}
void DateBook::showDay( int year, int month, int day )
{
QDate d(year, month, day);
view(DAY,d);
}
void DateBook::initDay()
{
if ( !dayView ) {
dayView = new DateBookDay( ampm, onMonday, db, views, "day view" );
views->addWidget( dayView, DAY );
dayView->setStartViewTime( startTime );
dayView->setJumpToCurTime( bJumpToCurTime );
dayView->setRowStyle( rowStyle );
- connect( this, SIGNAL( newEvent() ),
- dayView, SLOT( redraw() ) );
- connect( dayView, SIGNAL( newEvent() ),
- this, SLOT( fileNew() ) );
- connect( dayView, SIGNAL( removeEvent( const Event & ) ),
- this, SLOT( removeEvent( const Event & ) ) );
- connect( dayView, SIGNAL( editEvent( const Event & ) ),
- this, SLOT( editEvent( const Event & ) ) );
- connect( dayView, SIGNAL( duplicateEvent( const Event & ) ),
- this, SLOT( duplicateEvent( const Event & ) ) );
- connect( dayView, SIGNAL( beamEvent( const Event & ) ),
- this, SLOT( beamEvent( const Event & ) ) );
- connect( dayView, SIGNAL(sigNewEvent(const QString &)),
- this, SLOT(slotNewEventFromKey(const QString &)) );
- }
+ connect( this, SIGNAL( newEvent() ), dayView, SLOT( redraw() ) );
+ connect( dayView, SIGNAL( newEvent() ), this, SLOT( fileNew() ) );
+ connect( dayView, SIGNAL( removeEvent( const Event & ) ), this, SLOT( removeEvent( const Event & ) ) );
+ connect( dayView, SIGNAL( editEvent( const Event & ) ), this, SLOT( editEvent( const Event & ) ) );
+ connect( dayView, SIGNAL( duplicateEvent( const Event & ) ), this, SLOT( duplicateEvent( const Event & ) ) );
+ connect( dayView, SIGNAL( beamEvent( const Event & ) ), this, SLOT( beamEvent( const Event & ) ) );
+ connect( dayView, SIGNAL(sigNewEvent(const QString &)), this, SLOT(slotNewEventFromKey(const QString &)) );
+ }
}
void DateBook::initWeek()
{
if ( !weekView ) {
weekView = new DateBookWeek( ampm, onMonday, db, views, "week view" );
weekView->setStartViewTime( startTime );
views->addWidget( weekView, WEEK );
- connect( weekView, SIGNAL( showDate( int, int, int ) ),
- this, SLOT( showDay( int, int, int ) ) );
- connect( this, SIGNAL( newEvent() ),
- weekView, SLOT( redraw() ) );
+ connect( weekView, SIGNAL( showDate( int, int, int ) ), this, SLOT( showDay( int, int, int ) ) );
+ connect( this, SIGNAL( newEvent() ), weekView, SLOT( redraw() ) );
}
//But also get it right: the year that we display can be different
//from the year of the current date. So, first find the year
//number of the current week.
int yearNumber, totWeeks;
calcWeek( currentDate(), totWeeks, yearNumber, onMonday );
QDate d = QDate( yearNumber, 12, 31 );
calcWeek( d, totWeeks, yearNumber, onMonday );
while ( totWeeks == 1 ) {
d = d.addDays( -1 );
calcWeek( d, totWeeks, yearNumber, onMonday );
}
- if ( totWeeks != weekView->totalWeeks() )
- weekView->setTotalWeeks( totWeeks );
}
void DateBook::initWeekLst() {
- if ( !weekLstView ) {
- weekLstView = new DateBookWeekLst( ampm, onMonday, db,
- views, "weeklst view" );
- views->addWidget( weekLstView, WEEKLST );
-
- //weekLstView->setStartViewTime( startTime );
- connect( weekLstView, SIGNAL( showDate( int, int, int ) ),
- this, SLOT( showDay( int, int, int ) ) );
- connect( weekLstView, SIGNAL( addEvent( const QDateTime &,
- const QDateTime &,
- const QString & , const QString &) ),
- this, SLOT( slotNewEntry( const QDateTime &,
- const QDateTime &,
- const QString & , const QString &) ) );
- connect( this, SIGNAL( newEvent() ),
- weekLstView, SLOT( redraw() ) );
- connect( weekLstView, SIGNAL( editEvent( const Event & ) ),
- this, SLOT( editEvent( const Event & ) ) );
- }
+ if ( !weekLstView ) {
+ weekLstView = new DateBookWeekLst( ampm, onMonday, db, views, "weeklst view" );
+ views->addWidget( weekLstView, WEEKLST );
+
+ //weekLstView->setStartViewTime( startTime );
+ connect( weekLstView, SIGNAL( showDate( int, int, int ) ), this, SLOT( showDay( int, int, int ) ) );
+ connect( weekLstView, SIGNAL( addEvent( const QDateTime &, const QDateTime &, const QString & , const QString &) ),
+ this, SLOT( slotNewEntry( const QDateTime &, const QDateTime &, const QString & , const QString &) ) );
+ connect( this, SIGNAL( newEvent() ), weekLstView, SLOT( redraw() ) );
+ connect( weekLstView, SIGNAL( editEvent( const Event & ) ), this, SLOT( editEvent( const Event & ) ) );
+ }
}
void DateBook::initMonth()
{
- if ( !monthView ) {
- monthView = new DateBookMonth( views, "month view", FALSE, db );
- views->addWidget( monthView, MONTH );
- connect( monthView, SIGNAL( dateClicked( int, int, int ) ),
- this, SLOT( showDay( int, int, int ) ) );
- connect( this, SIGNAL( newEvent() ),
- monthView, SLOT( redraw() ) );
- qApp->processEvents();
- }
+ if ( !monthView ) {
+ monthView = new DateBookMonth( views, "month view", FALSE, db );
+ views->addWidget( monthView, MONTH );
+ connect( monthView, SIGNAL( dateClicked( int, int, int ) ), this, SLOT( showDay( int, int, int ) ) );
+ connect( this, SIGNAL( newEvent() ), monthView, SLOT( redraw() ) );
+ qApp->processEvents();
+ }
}
void DateBook::loadSettings()
{
Config qpeconfig( "qpe" );
qpeconfig.setGroup("Time");
ampm = qpeconfig.readBoolEntry( "AMPM", TRUE );
onMonday = qpeconfig.readBoolEntry( "MONDAY" );
Config config("DateBook");
config.setGroup("Main");
startTime = config.readNumEntry("startviewtime", 8);
aPreset = config.readBoolEntry("alarmpreset");
presetTime = config.readNumEntry("presettime");
bJumpToCurTime = config.readBoolEntry("jumptocurtime");
rowStyle = config.readNumEntry("rowstyle");
defaultView = config.readNumEntry("defaultview",DAY);
weeklistviewconfig = config.readNumEntry("weeklistviewconfig",NORMAL);
defaultLocation=config.readEntry("defaultLocation");
QString tmpString=config.readEntry("defaultCategories");
QStringList tmpStringList=QStringList::split(",",tmpString);
defaultCategories.truncate(0);
+
for( QStringList::Iterator i=tmpStringList.begin(); i!=tmpStringList.end(); i++) {
defaultCategories.resize(defaultCategories.count()+1);
defaultCategories[defaultCategories.count()-1]=(*i).toInt();
}
}
void DateBook::saveSettings()
{
Config config( "qpe" );
Config configDB( "DateBook" );
configDB.setGroup( "Main" );
configDB.writeEntry("startviewtime",startTime);
configDB.writeEntry("alarmpreset",aPreset);
configDB.writeEntry("presettime",presetTime);
configDB.writeEntry("jumptocurtime", bJumpToCurTime);
configDB.writeEntry("rowstyle", rowStyle);
configDB.writeEntry("defaultview",defaultView);
configDB.writeEntry("weeklistviewconfig",weeklistviewconfig);
configDB.writeEntry("defaultLocation",defaultLocation);
QStringList tmpStringList;
for( uint i=0; i<defaultCategories.count(); i++) {
tmpStringList << QString::number(defaultCategories[i]);
}