author | eilers <eilers> | 2003-08-01 14:22:29 (UTC) |
---|---|---|
committer | eilers <eilers> | 2003-08-01 14:22:29 (UTC) |
commit | 7d51872c86155fbbf27aeb8e49e7a336d909caac (patch) (side-by-side diff) | |
tree | 55ecf3452d6711065e36c6bceab8ec52bd5525d8 /core/pim/todo | |
parent | 34991bac7d96b1c17601be6a5607819342571e0c (diff) | |
download | opie-7d51872c86155fbbf27aeb8e49e7a336d909caac.zip opie-7d51872c86155fbbf27aeb8e49e7a336d909caac.tar.gz opie-7d51872c86155fbbf27aeb8e49e7a336d909caac.tar.bz2 |
Merging changes from BRANCH_1_0 to HEAD
-rw-r--r-- | core/pim/todo/main.cpp | 3 | ||||
-rw-r--r-- | core/pim/todo/mainwindow.cpp | 136 | ||||
-rw-r--r-- | core/pim/todo/mainwindow.h | 4 | ||||
-rw-r--r-- | core/pim/todo/opie-todo.control | 6 | ||||
-rw-r--r-- | core/pim/todo/otaskeditor.cpp | 14 | ||||
-rw-r--r-- | core/pim/todo/otaskeditor.h | 3 | ||||
-rw-r--r-- | core/pim/todo/quickedit.cpp | 1 | ||||
-rw-r--r-- | core/pim/todo/quickeditimpl.cpp | 7 | ||||
-rw-r--r-- | core/pim/todo/smalltodo.cpp | 1 | ||||
-rw-r--r-- | core/pim/todo/tableview.cpp | 86 | ||||
-rw-r--r-- | core/pim/todo/tableview.h | 18 | ||||
-rw-r--r-- | core/pim/todo/taskeditoralarms.cpp | 5 | ||||
-rw-r--r-- | core/pim/todo/taskeditoroverview.cpp | 6 | ||||
-rw-r--r-- | core/pim/todo/taskeditorstatus.cpp | 5 | ||||
-rw-r--r-- | core/pim/todo/templatedialogimpl.cpp | 1 | ||||
-rw-r--r-- | core/pim/todo/textviewshow.cpp | 18 | ||||
-rw-r--r-- | core/pim/todo/todomanager.cpp | 1 | ||||
-rw-r--r-- | core/pim/todo/todoshow.cpp | 8 | ||||
-rw-r--r-- | core/pim/todo/todoshow.h | 2 | ||||
-rw-r--r-- | core/pim/todo/todoview.cpp | 3 | ||||
-rw-r--r-- | core/pim/todo/todoview.h | 12 |
21 files changed, 273 insertions, 67 deletions
diff --git a/core/pim/todo/main.cpp b/core/pim/todo/main.cpp index 58ed45c..7763169 100644 --- a/core/pim/todo/main.cpp +++ b/core/pim/todo/main.cpp @@ -22,5 +22,4 @@ -#include <qdatetime.h> #include <qpe/qpeapplication.h> @@ -40,5 +39,5 @@ int main( int argc, char **argv ) int t = time.elapsed(); qWarning("QTime %d", t/1000 ); - mw.setCaption("Opie Todolist"); + mw.setCaption( QObject::tr("Opie Todolist")); QObject::connect( &a, SIGNAL( flush() ), &mw, SLOT( slotFlush() ) ); QObject::connect( &a, SIGNAL( reload() ), &mw, SLOT( slotReload() ) ); diff --git a/core/pim/todo/mainwindow.cpp b/core/pim/todo/mainwindow.cpp index 5119ae0..6725951 100644 --- a/core/pim/todo/mainwindow.cpp +++ b/core/pim/todo/mainwindow.cpp @@ -72,4 +72,5 @@ MainWindow::MainWindow( QWidget* parent, { m_syncing = false; + m_showing = false; m_counter = 0; m_tempManager = new TemplateManager(); @@ -162,4 +163,5 @@ void MainWindow::initActions() { } +#if 0 // Options menu a = new QAction( QWidget::tr("Find"), Resource::loadIconSet( "mag" ), @@ -169,5 +171,7 @@ void MainWindow::initActions() { m_findAction = a; + m_options->insertSeparator(); +#endif m_completedAction = new QAction( QString::null, QWidget::tr("Show completed tasks"), @@ -353,4 +357,5 @@ void MainWindow::slotReload() { void MainWindow::closeEvent( QCloseEvent* e ) { if (m_stack->visibleWidget() == currentShow()->widget() ) { + m_showing = false; raiseCurrentView(); e->ignore(); @@ -410,5 +415,5 @@ void MainWindow::populateTemplates() { * slotNewFromTemplate * We use the edit widget to do - * the config but we setUid(-1) + * the config but we setUid(1) * to get a new uid */ @@ -426,10 +431,12 @@ void MainWindow::slotNewFromTemplate( int id ) { if ( currentEditor()->accepted() ) { /* assign new todo */ - event.setUid( -1 ); - currentView()->addEvent( event ); + event.setUid( 1 ); + handleAlarms( OTodo(), event ); m_todoMgr.add( event ); + currentView()->addEvent( event ); populateCategories(); } + raiseCurrentView(); } void MainWindow::slotNew() { @@ -439,10 +446,10 @@ void MainWindow::slotDuplicate() { if(m_syncing) { QMessageBox::warning(this, QWidget::tr("Todo"), - QWidget::tr("Can not edit data, currently syncing")); + QWidget::tr("Data can not be edited, currently syncing")); return; } OTodo ev = m_todoMgr.event( currentView()->current() ); /* let's generate a new uid */ - ev.setUid(-1); + ev.setUid(1); m_todoMgr.add( ev ); @@ -456,5 +463,5 @@ void MainWindow::slotDelete() { if(m_syncing) { QMessageBox::warning(this, QWidget::tr("Todo"), - QWidget::tr("Can not edit data, currently syncing")); + QWidget::tr("Data can not be edited, currently syncing")); return; } @@ -463,13 +470,29 @@ void MainWindow::slotDelete() { return; - handleAlarms( OTodo(), m_todoMgr.event( currentView()->current() ) ); + handleAlarms( m_todoMgr.event( currentView()->current() ), OTodo() ); m_todoMgr.remove( currentView()->current() ); currentView()->removeEvent( currentView()->current() ); raiseCurrentView(); } +void MainWindow::slotDelete(int uid ) { + if( uid == 0 ) return; + if(m_syncing) { + QMessageBox::warning(this, QWidget::tr("Todo"), + QWidget::tr("Data can not be edited, currently syncing")); + return; + } + OTodo to = m_todoMgr.event(uid); + if (!QPEMessageBox::confirmDelete(this, QWidget::tr("Todo"), to.toShortText() ) ) + return; + + handleAlarms(to, OTodo() ); + m_todoMgr.remove( to.uid() ); + currentView()->removeEvent( to.uid() ); + raiseCurrentView(); +} void MainWindow::slotDeleteAll() { if(m_syncing) { QMessageBox::warning(this, QWidget::tr("Todo"), - QWidget::tr("Can not edit data, currently syncing")); + QWidget::tr("Data can not be edited, currently syncing")); return; } @@ -487,5 +510,5 @@ void MainWindow::slotDeleteCompleted() { if(m_syncing) { QMessageBox::warning(this, QWidget::tr("Todo"), - QWidget::tr("Can not edit data, currently syncing")); + QWidget::tr("Data can not be edited, currently syncing")); return; } @@ -567,18 +590,22 @@ void MainWindow::beamDone( Ir* ir) { void MainWindow::receiveFile( const QString& filename ) { OTodoAccessVCal* cal = new OTodoAccessVCal(filename ); + OTodoAccess acc( cal ); acc.load(); OTodoAccess::List list = acc.allRecords(); - QString message = QWidget::tr("<P>%1 new tasks arrived.<p>Would you like to add them to your Todolist?").arg(list.count() ); + if (list.count()){ - if ( QMessageBox::information(this, QWidget::tr("New Tasks"), - message, QMessageBox::Ok, - QMessageBox::Cancel ) == QMessageBox::Ok ) { - OTodoAccess::List::Iterator it; - for ( it = list.begin(); it != list.end(); ++it ) - m_todoMgr.add( (*it) ); + QString message = QWidget::tr("<P>%1 new tasks arrived.<p>Would you like to add them to your Todolist?").arg(list.count() ); - currentView()->updateView(); + if ( QMessageBox::information(this, QWidget::tr("New Tasks"), + message, QMessageBox::Ok, + QMessageBox::Cancel ) == QMessageBox::Ok ) { + OTodoAccess::List::Iterator it; + for ( it = list.begin(); it != list.end(); ++it ) + m_todoMgr.add( (*it) ); + + currentView()->updateView(); + } } } @@ -635,4 +662,11 @@ ViewBase* MainWindow::currentView() { } void MainWindow::raiseCurrentView() { + // due QPE/Application/todolist show(int) + // we might not have the populateCategories slot called once + // we would show the otodo but then imediately switch to the currentView + // if we're initially showing we shouldn't raise the table + // in returnFromView we fix up m_showing + if (m_showing ) return; + m_stack->raiseWidget( m_curView->widget() ); } @@ -643,13 +677,24 @@ void MainWindow::slotShowDue(bool ov) { } void MainWindow::slotShow( int uid ) { + if ( uid == 0 ) return; qWarning("slotShow"); currentShow()->slotShow( event( uid ) ); m_stack->raiseWidget( currentShow()->widget() ); } +void MainWindow::slotShowNext() { + int l = currentView()->next(); + if (l!=0) + slotShow(l); +} +void MainWindow::slotShowPrev() { + int l = currentView()->prev(); + if (l!=0) + slotShow(l); +} void MainWindow::slotEdit( int uid ) { - if (uid == 1 ) return; + if (uid == 0 ) return; if(m_syncing) { QMessageBox::warning(this, QWidget::tr("Todo"), - QWidget::tr("Can not edit data, currently syncing")); + QWidget::tr("Data can't be edited, currently syncing")); return; } @@ -661,5 +706,4 @@ void MainWindow::slotEdit( int uid ) { /* if completed */ if ( currentEditor()->accepted() ) { - qWarning("Replacing now" ); handleAlarms( old_todo, todo ); m_todoMgr.update( todo.uid(), todo ); @@ -719,4 +763,8 @@ void MainWindow::slotComplete( const OTodo& todo ) { * possible recurrance of this item... * the spinned off one will loose the + * recurrence. + * We calculate the difference between the old due date and the + * new one and add this diff to start, completed and alarm dates + * -zecke */ if ( to.hasRecurrence() && to.isCompleted() ) { @@ -735,4 +783,6 @@ void MainWindow::slotComplete( const OTodo& todo ) { QDate date; if ( to2.recurrence().nextOcurrence( to2.dueDate().addDays(1), date ) ) { + int dayDiff = to.dueDate().daysTo( date ); + qWarning("day diff is %d", dayDiff ); QDate inval; /* generate a new uid for the old record */ @@ -748,7 +798,28 @@ void MainWindow::slotComplete( const OTodo& todo ) { */ to2.setDueDate( date ); - to2.setStartDate( inval ); + rec.setStart( date ); + to2.setRecurrence( rec ); // could be Monday, TuesDay, Thursday every week + + /* move start date */ + if (to2.hasStartDate() ) + to2.setStartDate( to2.startDate().addDays( dayDiff ) ); + + /* now the alarms */ + if (to2.hasNotifiers() ) { + OPimNotifyManager::Alarms _als = to2.notifiers().alarms(); + OPimNotifyManager::Alarms als; + + /* for every alarm move the day */ + for ( OPimNotifyManager::Alarms::Iterator it = _als.begin(); it != _als.end(); ++it ) { + OPimAlarm al = (*it); + al.setDateTime( al.dateTime().addDays( dayDiff ) ); + als.append( al ); + } + to2.notifiers().setAlarms( als ); + handleAlarms( OTodo(), todo ); + } to2.setCompletedDate( inval ); to2.setCompleted( false ); + updateTodo( to2 ); }else @@ -770,7 +841,8 @@ int MainWindow::create() { if(m_syncing) { QMessageBox::warning(this, QWidget::tr("Todo"), - QWidget::tr("Can not edit data, currently syncing")); + QWidget::tr("Data can not be edited, currently syncing")); return uid; } + m_todoMgr.load(); @@ -805,5 +877,9 @@ bool MainWindow::remove( int uid ) { } void MainWindow::beam( int uid) { + if( uid == 0 ) return; + ::unlink( beamfile ); + m_todoMgr.load(); + OTodo todo = event( uid ); OTodoAccessVCal* cal = new OTodoAccessVCal(QString::fromLatin1(beamfile) ); @@ -818,11 +894,17 @@ void MainWindow::beam( int uid) { } void MainWindow::show( int uid ) { + m_todoMgr.load(); // might not be loaded yet + m_showing = true; slotShow( uid ); + raise(); + QPEApplication::setKeepRunning(); } void MainWindow::edit( int uid ) { + m_todoMgr.load(); slotEdit( uid ); } void MainWindow::add( const OPimRecord& rec) { if ( rec.rtti() != OTodo::rtti() ) return; + m_todoMgr.load(); // might not be loaded const OTodo& todo = static_cast<const OTodo&>(rec); @@ -838,4 +920,5 @@ void MainWindow::add( const OPimRecord& rec) { } void MainWindow::slotReturnFromView() { + m_showing = false; raiseCurrentView(); } @@ -933,5 +1016,5 @@ void MainWindow::doAlarm( const QDateTime& dt, int uid ) { lay->addWidget( btnOk ); - QString text = tr("<h1>Alarm at %0</h1><br>").arg( TimeString::dateString( dt ) ); + QString text = tr("<h1>Alarm at %1</h1><br>").arg( TimeString::dateString( dt ) ); text += todo.toRichText(); view->setText( text ); @@ -944,9 +1027,10 @@ void MainWindow::doAlarm( const QDateTime& dt, int uid ) { if (needToStay) { - showMaximized(); - raise(); +// showMaximized(); +// raise(); QPEApplication::setKeepRunning(); - setActiveWindow(); +// setActiveWindow(); } } + diff --git a/core/pim/todo/mainwindow.h b/core/pim/todo/mainwindow.h index 02e2449..b04a958 100644 --- a/core/pim/todo/mainwindow.h +++ b/core/pim/todo/mainwindow.h @@ -119,4 +119,5 @@ private slots: ViewBase* currentView(); ViewBase* m_curView; + bool m_showing : 1; // used to see if we show a todo in the cases we shouldn't change the table QuickEditBase* m_curQuick; Editor* m_curEdit; @@ -168,4 +169,5 @@ private slots: void slotDelete(); + void slotDelete(int uid ); void slotDeleteAll(); void slotDeleteCompleted(); @@ -186,4 +188,6 @@ private slots: void beamDone( Ir* ); void slotShowDetails(); + void slotShowNext(); + void slotShowPrev(); void slotShowDue( bool ); void slotReturnFromView(); // for TodoShow... diff --git a/core/pim/todo/opie-todo.control b/core/pim/todo/opie-todo.control index b579306..17a65a8 100644 --- a/core/pim/todo/opie-todo.control +++ b/core/pim/todo/opie-todo.control @@ -1,10 +1,10 @@ Package: opie-todo -Files: bin/todolist apps/1Pim/todo.desktop pics/todo +Files: bin/todolist apps/1Pim/todo.desktop Priority: optional Section: opie/applications Maintainer: Holger 'zecke' Freyther <zecke@handhelds.org> Architecture: arm -Version: $QPE_VERSION-$SUB_VERSION -Depends: task-opie-minimal, libopie1 +Depends: task-opie-minimal, libopie1, opie-pics Description: TODO-list manager A Todo-list manager for the Opie environment. +Version: $QPE_VERSION$EXTRAVERSION diff --git a/core/pim/todo/otaskeditor.cpp b/core/pim/todo/otaskeditor.cpp index 84f854f..1ed20b4 100644 --- a/core/pim/todo/otaskeditor.cpp +++ b/core/pim/todo/otaskeditor.cpp @@ -1,6 +1,3 @@ -#include <qdatetime.h> -#include <qlabel.h> #include <qlayout.h> -#include <qmultilineedit.h> #include <opie/orecurrancewidget.h> @@ -27,17 +24,15 @@ OTaskEditor::~OTaskEditor() { void OTaskEditor::init( int cur ) { OTodo to; + to.setUid( 1 ); // generate a new uid if ( cur != 0 ) to.setCategories( cur ); load(to); - m_uid = 1; // generate a new one } void OTaskEditor::init( const OTodo& to ) { load( to ); - m_uid = to.uid(); } OTodo OTaskEditor::todo()const{ qWarning("saving!"); - OTodo to; - to.setUid(m_uid ); + OTodo to ( m_todo ); m_overView->save( to ); m_stat->save( to ); @@ -51,9 +46,10 @@ void OTaskEditor::load(const OTodo& to) { m_stat->load( to ); m_rec->setRecurrence( to.recurrence(), to.hasDueDate() ? to.dueDate() : QDate::currentDate() ); - m_alarm->setEnabled( !to.hasRecurrence() ); m_alarm->load( to ); + + m_todo = to; } void OTaskEditor::init() { - setCaption("Task Editor"); + setCaption(tr("Task Editor") ); QVBoxLayout* layo = new QVBoxLayout( this ); diff --git a/core/pim/todo/otaskeditor.h b/core/pim/todo/otaskeditor.h index 795f333..2daae52 100644 --- a/core/pim/todo/otaskeditor.h +++ b/core/pim/todo/otaskeditor.h @@ -38,6 +38,5 @@ private: TaskEditorAlarms *m_remind; ORecurranceWidget *m_rec; - int m_uid; - + OTodo m_todo; }; diff --git a/core/pim/todo/quickedit.cpp b/core/pim/todo/quickedit.cpp index edcd48a..16fc53a 100644 --- a/core/pim/todo/quickedit.cpp +++ b/core/pim/todo/quickedit.cpp @@ -1,3 +1,2 @@ -#include "mainwindow.h" #include "quickedit.h" diff --git a/core/pim/todo/quickeditimpl.cpp b/core/pim/todo/quickeditimpl.cpp index f4c7c47..70e0582 100644 --- a/core/pim/todo/quickeditimpl.cpp +++ b/core/pim/todo/quickeditimpl.cpp @@ -32,10 +32,15 @@ QuickEditImpl::QuickEditImpl( QWidget* parent, bool visible ) QWhatsThis::add( m_edit, QWidget::tr( "Enter description of new task here.\n\nThis area is called the quick task bar.\n\nIt allows you to quickly add a new task to your list. This area can be shown or hidden by selecting Options->'Show quick task bar' from the menu above." ) ); + /* + * it's not implemented and won't be implemented for 1.0 + */ +#if 0 QAction *a = new QAction( QWidget::tr( "More" ), Resource::loadPixmap( "todo/more" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( slotMore() ) ); a->addTo( this ); a->setWhatsThis( QWidget::tr( "Click here to enter additional information for new task.\n\nThis area is called the quick task bar.\n\nIt allows you to quickly add a new task to your list. This area can be shown or hidden by selecting Options->'Show quick task bar' from the menu above." ) ); +#endif - a = new QAction( QWidget::tr( "Enter" ), Resource::loadPixmap( "enter" ), QString::null, 0, this, 0 ); + QAction *a = new QAction( QWidget::tr( "Enter" ), Resource::loadPixmap( "enter" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( slotEnter() ) ); a->addTo( this ); diff --git a/core/pim/todo/smalltodo.cpp b/core/pim/todo/smalltodo.cpp index 412fe9e..504256d 100644 --- a/core/pim/todo/smalltodo.cpp +++ b/core/pim/todo/smalltodo.cpp @@ -26,5 +26,4 @@ */ -#include <qshared.h> #include "smalltodo.h" diff --git a/core/pim/todo/tableview.cpp b/core/pim/todo/tableview.cpp index d9cda09..2e252d5 100644 --- a/core/pim/todo/tableview.cpp +++ b/core/pim/todo/tableview.cpp @@ -28,9 +28,9 @@ #include <stdlib.h> #include <cmath> +#include <cctype> #include <qcombobox.h> #include <qlineedit.h> #include <qtimer.h> -#include <qpoint.h> #include <qpopupmenu.h> @@ -51,4 +51,25 @@ namespace { } +TableView::EditorWidget::EditorWidget() : m_wid(0l), m_row(-1), m_col(-1) { +} +void TableView::EditorWidget::setCellWidget(QWidget* wid, int row, int col ) { + m_wid = wid; + m_row = row; + m_col = col; +} +void TableView::EditorWidget::releaseCellWidget() { + m_wid = 0; + m_row = m_col = -1; +} +QWidget* TableView::EditorWidget::cellWidget()const { + return m_wid; +} +int TableView::EditorWidget::cellRow()const { + return m_row; +} +int TableView::EditorWidget::cellCol()const { + return m_col; +} + void TableView::initConfig() { @@ -144,9 +165,22 @@ QString TableView::type() const { } int TableView::current() { - if (numRows() == 0 ) return 1; + if (numRows() == 0 ) return 0; int uid = sorted().uidAt(currentRow() ); return uid; } +int TableView::next() { + if ( numRows() == 0 ) return 0; + if ( currentRow() + 1 >= numRows() ) return 0; + setCurrentCell( currentRow() +1, currentColumn() ); + return sorted().uidAt( currentRow() ); +} +int TableView::prev() { + if ( numRows() == 0 ) return 0; + if ( currentRow() - 1 < 0 ) return 0; + setCurrentCell( currentRow() -1, currentColumn() ); + return sorted().uidAt( currentRow() ); + +} QString TableView::currentRepresentation() { OTodo to = sorted()[currentRow()]; @@ -220,9 +254,9 @@ void TableView::removeEvent( int ) { } void TableView::setShowCompleted( bool b) { - qWarning("Show Completed %d" + b ); + qWarning("Show Completed %d" , b ); updateView(); } void TableView::setShowDeadline( bool b ) { - qWarning( "Show DeadLine %d" + b ); + qWarning( "Show DeadLine %d" , b ); if ( b ) showColumn( 3 ); @@ -260,4 +294,11 @@ void TableView::clear() { void TableView::slotClicked(int row, int col, int, const QPoint& point) { + if ( m_editorWidget.cellWidget() ) { + //setCellContentFromEditor(m_editorWidget.cellRow(), m_editorWidget.cellCol() ); + endEdit(m_editorWidget.cellRow(), m_editorWidget.cellCol(), + true, true ); + m_editorWidget.releaseCellWidget(); + } + if ( !cellGeometry(row, col ).contains(point ) ) return; @@ -281,5 +322,9 @@ void TableView::slotClicked(int row, int col, int, break; - case 1: + // Priority emit a double click... + case 1:{ + QWidget* wid = beginEdit( row, col, FALSE ); + m_editorWidget.setCellWidget( wid, row, col ); + } break; @@ -447,4 +492,5 @@ QWidget* TableView::createEditor(int row, int col, bool )const { } void TableView::setCellContentFromEditor(int row, int col ) { + qWarning("set cell content from editor"); if ( col == 1 ) { QWidget* wid = cellWidget(row, 1 ); @@ -543,9 +589,36 @@ void TableView::contentsMouseMoveEvent( QMouseEvent* e ) { } void TableView::keyPressEvent( QKeyEvent* event) { + if ( m_editorWidget.cellWidget() ) { +// setCellContentFromEditor(m_editorWidget.cellRow(), m_editorWidget.cellCol() ); + endEdit(m_editorWidget.cellRow(), m_editorWidget.cellCol(), + true, true ); + m_editorWidget.releaseCellWidget(); + setFocus(); + } + int row = currentRow(); + int col = currentColumn(); + + char key = ::toupper( event->ascii() ); + /* let QTable also handle the d later */ + if ( key == 'D' ) + removeQuery( sorted().uidAt( row ) ); + + switch( event->key() ) { case Qt::Key_F33: case Qt::Key_Enter: case Qt::Key_Return: - showTodo( sorted().uidAt( currentRow() ) ); + case Qt::Key_Space: + if ( col == 0 ) { + TodoView::complete(sorted()[row]); + }else if ( col == 1 ) { + QWidget* wid = beginEdit(row, col, FALSE ); + m_editorWidget.setCellWidget( wid, row, col ); + }else if ( col == 2 ) { + showTodo( sorted().uidAt( currentRow() ) ); + }else if ( col == 3 ) { + TodoView::edit( sorted().uidAt(row) ); + } + break; default: @@ -553,2 +626,3 @@ void TableView::keyPressEvent( QKeyEvent* event) { } } + diff --git a/core/pim/todo/tableview.h b/core/pim/todo/tableview.h index 689c496..528ddc9 100644 --- a/core/pim/todo/tableview.h +++ b/core/pim/todo/tableview.h @@ -51,4 +51,6 @@ namespace Todo { int current(); QString currentRepresentation(); + int next(); + int prev(); void clear(); @@ -92,4 +94,20 @@ namespace Todo { QWidget* createEditor(int row, int col, bool initFromCell )const; void setCellContentFromEditor( int row, int col ); + /** + * for inline editing on single click and to work around some + * bug in qt2.3.5 + */ + struct EditorWidget { + EditorWidget(); + void setCellWidget(QWidget*, int row, int col ); + void releaseCellWidget(); + QWidget* cellWidget()const; + int cellRow()const; + int cellCol()const; + private: + QWidget* m_wid; + int m_row, m_col; + }; + EditorWidget m_editorWidget; private slots: diff --git a/core/pim/todo/taskeditoralarms.cpp b/core/pim/todo/taskeditoralarms.cpp index bff3338..bcc40fe 100644 --- a/core/pim/todo/taskeditoralarms.cpp +++ b/core/pim/todo/taskeditoralarms.cpp @@ -35,12 +35,7 @@ #include <qpe/datebookmonth.h> #include <qpe/resource.h> -#include <qpe/timestring.h> -#include <qdatetime.h> #include <qlistview.h> -#include <qpushbutton.h> -#include <qpopupmenu.h> #include <qlayout.h> -#include <qwhatsthis.h> diff --git a/core/pim/todo/taskeditoroverview.cpp b/core/pim/todo/taskeditoroverview.cpp index 9a8abea..415dcf2 100644 --- a/core/pim/todo/taskeditoroverview.cpp +++ b/core/pim/todo/taskeditoroverview.cpp @@ -34,8 +34,6 @@ #include <qpe/datebookmonth.h> #include <qpe/resource.h> -#include <qpe/timestring.h> #include <qcheckbox.h> -#include <qcombobox.h> #include <qlabel.h> #include <qlayout.h> @@ -69,5 +67,5 @@ TaskEditorOverView::TaskEditorOverView( QWidget* parent, const char* name, WFla // Description - QLabel *label = new QLabel( tr( "Description:" ), container ); + QLabel *label = new QLabel( tr( "Summary:" ), container ); layout->addWidget( label, 0, 0 ); QWhatsThis::add( label, tr( "Enter brief description of the task here." ) ); @@ -117,5 +115,5 @@ TaskEditorOverView::TaskEditorOverView( QWidget* parent, const char* name, WFla // Notes - label = new QLabel( tr( "Notes:" ), container ); + label = new QLabel( tr( "Description:" ), container ); layout->addWidget( label, 5, 0 ); QWhatsThis::add( label, tr( "Enter any additional information about this task here." ) ); diff --git a/core/pim/todo/taskeditorstatus.cpp b/core/pim/todo/taskeditorstatus.cpp index 0ab4223..98e3cea 100644 --- a/core/pim/todo/taskeditorstatus.cpp +++ b/core/pim/todo/taskeditorstatus.cpp @@ -34,6 +34,4 @@ #include <qpe/datebookmonth.h> -#include <qpe/resource.h> -#include <qpe/timestring.h> #include <qcheckbox.h> @@ -41,6 +39,4 @@ #include <qlabel.h> #include <qlayout.h> -#include <qscrollview.h> -#include <qtoolbutton.h> #include <qwhatsthis.h> @@ -304,3 +300,4 @@ void TaskEditorStatus::slotDueChanged(int y, int m, int d) m_due.setYMD( y, m, d ); btnDue->setText( TimeString::longDateString( m_due ) ); + emit dueDateChanged( m_due ); } diff --git a/core/pim/todo/templatedialogimpl.cpp b/core/pim/todo/templatedialogimpl.cpp index fed92f0..c2306ac 100644 --- a/core/pim/todo/templatedialogimpl.cpp +++ b/core/pim/todo/templatedialogimpl.cpp @@ -1,3 +1,2 @@ -#include <qlistview.h> #include <qlineedit.h> diff --git a/core/pim/todo/textviewshow.cpp b/core/pim/todo/textviewshow.cpp index fe8a9c8..35ea74b 100644 --- a/core/pim/todo/textviewshow.cpp +++ b/core/pim/todo/textviewshow.cpp @@ -1,3 +1,2 @@ -#include "mainwindow.h" #include "textviewshow.h" @@ -21,7 +20,24 @@ QWidget* TextViewShow::widget() { void TextViewShow::keyPressEvent( QKeyEvent* event ) { switch( event->key() ) { + case Qt::Key_Up: + if ( ( visibleHeight() < contentsHeight() ) && + ( verticalScrollBar()->value() > verticalScrollBar()->minValue() ) ) + scrollBy( 0, -(visibleHeight()-20) ); + else + showPrev(); + break; + case Qt::Key_Down: + if ( ( visibleHeight() < contentsHeight() ) && + ( verticalScrollBar()->value() < verticalScrollBar()->maxValue() ) ) + scrollBy( 0, visibleHeight()-20 ); + else + showNext(); + break; + case Qt::Key_Left: + case Qt::Key_Right: case Qt::Key_F33: case Qt::Key_Enter: case Qt::Key_Return: + case Qt::Key_Space: escapeView(); break; diff --git a/core/pim/todo/todomanager.cpp b/core/pim/todo/todomanager.cpp index df2e711..501cca7 100644 --- a/core/pim/todo/todomanager.cpp +++ b/core/pim/todo/todomanager.cpp @@ -26,5 +26,4 @@ */ -#include <qdatetime.h> #include <qpe/categoryselect.h> diff --git a/core/pim/todo/todoshow.cpp b/core/pim/todo/todoshow.cpp index 4dbc9aa..5962028 100644 --- a/core/pim/todo/todoshow.cpp +++ b/core/pim/todo/todoshow.cpp @@ -15,2 +15,10 @@ void TodoShow::escapeView() { } +void TodoShow::showNext() { + if (m_win) + m_win->slotShowNext(); +} +void TodoShow::showPrev() { + if (m_win) + m_win->slotShowPrev(); +} diff --git a/core/pim/todo/todoshow.h b/core/pim/todo/todoshow.h index 7267b13..2babe93 100644 --- a/core/pim/todo/todoshow.h +++ b/core/pim/todo/todoshow.h @@ -51,4 +51,6 @@ namespace Todo { protected: void escapeView(); + void showNext(); + void showPrev(); private: MainWindow *m_win; diff --git a/core/pim/todo/todoview.cpp b/core/pim/todo/todoview.cpp index 3e808e7..31047cf 100644 --- a/core/pim/todo/todoview.cpp +++ b/core/pim/todo/todoview.cpp @@ -65,2 +65,5 @@ void TodoView::complete( const OTodo& ev ) { m_main->slotComplete( ev ); } +void TodoView::removeQuery( int uid ) { + m_main->slotDelete( uid ); +} diff --git a/core/pim/todo/todoview.h b/core/pim/todo/todoview.h index e73e808..e5ed66f 100644 --- a/core/pim/todo/todoview.h +++ b/core/pim/todo/todoview.h @@ -54,4 +54,14 @@ namespace Todo { virtual void showOverDue( bool ) = 0; + /** + * the next record in the view or 0 if none is there + */ + virtual int next() = 0; + + /** + * the previous record or 0 if none is there.. + */ + virtual int prev() = 0; + /* * update the view @@ -112,4 +122,6 @@ namespace Todo { void update(int uid, const OTodo& ev); void remove( int uid ); + /* will ask the user if the item should be deleted */ + void removeQuery(int uid ); void complete( int uid ); void complete( const OTodo& ev ); |