summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/todo/TODO3
-rw-r--r--core/pim/todo/mainwindow.cpp68
-rw-r--r--core/pim/todo/mainwindow.h16
-rw-r--r--core/pim/todo/opie-todo.control2
-rw-r--r--core/pim/todo/todo.pro6
-rw-r--r--core/pim/todo/todolabel.cc58
-rw-r--r--core/pim/todo/todolabel.h51
-rw-r--r--core/pim/todo/todotable.cpp24
-rw-r--r--core/pim/todo/todotable.h2
9 files changed, 202 insertions, 28 deletions
diff --git a/core/pim/todo/TODO b/core/pim/todo/TODO
index 7601dd2..b00450c 100644
--- a/core/pim/todo/TODO
+++ b/core/pim/todo/TODO
@@ -1,4 +1 @@
--fix the journal (wip )
--fix day wrapping update all DueDateItems
-when checking the C. box update the deadline
--TodoLabel : public TextView
diff --git a/core/pim/todo/mainwindow.cpp b/core/pim/todo/mainwindow.cpp
index fc17c5f..d3f4cb4 100644
--- a/core/pim/todo/mainwindow.cpp
+++ b/core/pim/todo/mainwindow.cpp
@@ -1,8 +1,8 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
- Copyright (C) 2002 zecke
- Copyright (C) 2002 Stefan Eilers
+** Copyright (C) 2002 zecke
+** Copyright (C) 2002 Stefan Eilers (se, eilers.stefan@epost.de)
**
** This file is part of Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
@@ -24,8 +24,9 @@
#include "mainwindow.h"
#include "todoentryimpl.h"
#include "todotable.h"
+#include "todolabel.h"
#include <opie/tododb.h>
#include <opie/todovcalresource.h>
#include <opie/ofontmenu.h>
@@ -47,8 +48,9 @@
#include <qdatetime.h>
#include <qfile.h>
#include <qmessagebox.h>
#include <qpopupmenu.h>
+#include <qwidgetstack.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
@@ -70,9 +72,10 @@ TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) :
QMainWindow( parent, name, f ), syncing(FALSE)
{
// QTime t;
// t.start();
-
+ mView = 0l;
+ mStack = new QWidgetStack(this, "main stack");
setCaption( tr("Todo") );
QString str;
table = new TodoTable( this );
table->setColumnWidth( 2, 10 );
@@ -100,9 +103,11 @@ TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) :
tr( "Unable to create startup files\n"
"Free up some space\n"
"before you enter any data") );
- setCentralWidget( table );
+ mStack->addWidget(table, 1 );
+ mStack->raiseWidget( 1 );
+ setCentralWidget( mStack );
setToolBarsMovable( FALSE );
// qDebug("after load: t=%d", t.elapsed() );
@@ -145,8 +150,15 @@ TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) :
a->addTo( edit );
a->addTo( contextMenu );
a->setEnabled( FALSE );
editAction = a;
+
+ a = new QAction( QString::null, tr("View Task"), 0, this, 0 );
+ a->addTo( edit );
+ a->addTo( contextMenu );
+ connect( a, SIGNAL( activated() ),
+ this, SLOT(slotShowDetails() ) );
+
edit->insertSeparator();
a = new QAction( tr( "Delete..." ), Resource::loadIconSet( "trash" ),
QString::null, 0, this, 0 );
@@ -175,10 +187,12 @@ TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) :
this, SLOT( slotDuplicate() ) );
a->addTo(edit );
a->setEnabled( FALSE );
duplicateAction = a;
-
edit->insertSeparator();
+
+
+
if ( Ir::supported() ) {
a = new QAction( tr( "Beam" ), Resource::loadPixmap( "beam" ),
QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ),
@@ -248,8 +262,10 @@ TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) :
connect( catMenu, SIGNAL(activated(int)), this, SLOT(setCategory(int)) );
connect( table, SIGNAL( currentChanged( int, int ) ),
this, SLOT( currentEntryChanged( int, int ) ) );
+ connect( table, SIGNAL(showDetails(const ToDoEvent &) ),
+ this, SLOT(slotShowDetails(const ToDoEvent & ) ) );
// qDebug("done: t=%d", t.elapsed() );
}
void TodoWindow::slotNew()
@@ -285,8 +301,9 @@ void TodoWindow::slotNew()
}
// I'm afraid we must call this every time now, otherwise
// spend expensive time comparing all these strings...
populateCategories();
+ mStack->raiseWidget(1 );
}
TodoWindow::~TodoWindow()
{
@@ -317,8 +334,9 @@ void TodoWindow::slotDelete()
if ( table->numRows() == 0 ) {
currentEntryChanged( -1, 0 );
findAction->setEnabled( FALSE );
}
+ mStack->raiseWidget(1);
}
void TodoWindow::slotDeleteAll()
{
if(syncing) {
@@ -328,9 +346,9 @@ void TodoWindow::slotDeleteAll()
}
//QString strName = table->text( table->currentRow(), 2 ).left( 30 );
- if ( !QPEMessageBox::confirmDelete( this, tr( "Todo" ), tr("Should I delete all tasks?") ) )
+ if ( !QPEMessageBox::confirmDelete( this, tr( "Todo" ), tr("Delete all tasks?") ) )
return;
@@ -341,8 +359,9 @@ void TodoWindow::slotDeleteAll()
if ( table->numRows() == 0 ) {
currentEntryChanged( -1, 0 );
findAction->setEnabled( FALSE );
}
+ mStack->raiseWidget(1 );
}
void TodoWindow::slotEdit()
{
@@ -368,9 +387,9 @@ void TodoWindow::slotEdit()
table->replaceCurrentEntry( todo );
table->setPaintingEnabled( true );
}
populateCategories();
-
+ mStack->raiseWidget( 1 );
}
void TodoWindow::slotDuplicate()
{
if(syncing) {
@@ -378,12 +397,21 @@ void TodoWindow::slotDuplicate()
tr("Can not edit data, currently syncing"));
return;
}
ToDoEvent ev = table->currentEntry();
- ToDoEvent ev2 = ToDoEvent( ev );
+ ToDoEvent ev2 = ToDoEvent( ev ); // what about the uid
+ int uid;
+ { // uid
+ Qtopia::UidGen *uidgen = new Qtopia::UidGen();
+ uid = uidgen->generate();
+ delete uidgen;
+ }
+ ev2.setUid( uid );
table->setPaintingEnabled( false );
table->addEntry( ev2 );
table->setPaintingEnabled( true );
+
+ mStack->raiseWidget( 1 );
}
void TodoWindow::slotShowPopup( const QPoint &p )
{
contextMenu->popup( p );
@@ -432,15 +460,18 @@ void TodoWindow::setCategory( int c )
table->setShowCategory( cat );
setCaption( tr("Todo") + " - " + cat );
}
table->setPaintingEnabled( true );
+
+ mStack->raiseWidget( 1 );
}
void TodoWindow::populateCategories()
{
catMenu->clear();
int id, rememberId;
id = 1;
+ rememberId = 0;
catMenu->insertItem( tr( "All Categories" ), id++ );
catMenu->insertSeparator();
QStringList categories = table->categories();
categories.append( tr( "Unfiled" ) );
@@ -471,8 +502,13 @@ void TodoWindow::flush()
}
void TodoWindow::closeEvent( QCloseEvent *e )
{
+ if( mStack->visibleWidget() != table ){
+ mStack->raiseWidget( 1 );
+ e->ignore();
+ return;
+ }
if(syncing) {
/* no need to save if in the middle of syncing */
e->accept();
return;
@@ -561,11 +597,25 @@ void TodoWindow::beamDone( Ir *ir )
delete ir;
unlink( beamfile );
}
-/* added 20.01.2k2 by se */
void TodoWindow::showDeadline( bool s )
{
table->setPaintingEnabled( false );
table->setShowDeadline( s );
table->setPaintingEnabled( true );
}
+void TodoWindow::slotShowDetails()
+{
+ ToDoEvent event = table->currentEntry();
+ slotShowDetails( event );
+}
+void TodoWindow::slotShowDetails( const ToDoEvent &event )
+{
+ if( mView == 0l ){
+ mView = new TodoLabel(mStack);
+ mStack->addWidget( mView, 2 );
+ }
+ mView->init( event );
+ mView->sync();
+ mStack->raiseWidget( 2);
+}
diff --git a/core/pim/todo/mainwindow.h b/core/pim/todo/mainwindow.h
index b9172e1..f62ec6e 100644
--- a/core/pim/todo/mainwindow.h
+++ b/core/pim/todo/mainwindow.h
@@ -1,6 +1,7 @@
/**********************************************************************
- Copyright (C) 2002 Holger 'zecke' Freyther <freyther@kde.org>
+** Copyright (C) 2002 Holger 'zecke' Freyther <freyther@kde.org>
+** Copyright (C) 2002 by Stefan Eilers (se, eilers.stefan@epost.de)
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia and Opi Environment.
**
@@ -28,8 +29,12 @@ class TodoTable;
class QAction;
class QPopupMenu;
class Ir;
class OFontMenu;
+class TodoLabel;
+class ToDoDB;
+class QWidgetStack;
+class ToDoEvent;
class TodoWindow : public QMainWindow
{
Q_OBJECT
@@ -48,11 +53,13 @@ protected slots:
void slotEdit();
void slotShowPopup( const QPoint & );
void showCompleted( bool );
- /* added 20.01.2k2 by se */
void showDeadline( bool );
-
+
+ void slotShowDetails(const ToDoEvent &event );
+ void slotShowDetails();
+
void currentEntryChanged( int r, int c );
void setCategory( int );
void slotFind();
void setDocument( const QString & );
@@ -65,19 +72,22 @@ protected:
void closeEvent( QCloseEvent *e );
private:
void populateCategories();
+ //inline void switchToTable(); // move back to the normal view
private:
TodoTable *table;
+ TodoLabel *mView;
QAction *editAction,
*deleteAction,
*findAction,
*completedAction,
*showdeadlineAction,
*deleteAllAction,
*duplicateAction;
QPopupMenu *contextMenu, *catMenu;
+ QWidgetStack *mStack;
bool syncing;
};
diff --git a/core/pim/todo/opie-todo.control b/core/pim/todo/opie-todo.control
index cb9b110..71929af 100644
--- a/core/pim/todo/opie-todo.control
+++ b/core/pim/todo/opie-todo.control
@@ -1,8 +1,8 @@
Files: bin/todolist apps/Applications/todo.desktop
Priority: optional
Section: opie/applications
-Maintainer: Warwick Allison <warwick@trolltech.com>
+Maintainer: Holger 'zecke' Freyther <zecke@handhelds.org>
Architecture: arm
Version: $QPE_VERSION-$SUB_VERSION
Depends: opie-base ($QPE_VERSION)
Description: TODO-list manager
diff --git a/core/pim/todo/todo.pro b/core/pim/todo/todo.pro
index a46fb47..a365081 100644
--- a/core/pim/todo/todo.pro
+++ b/core/pim/todo/todo.pro
@@ -2,13 +2,15 @@ TEMPLATE = app
CONFIG = qt warn_on release
DESTDIR = $(OPIEDIR)/bin
HEADERS = mainwindow.h \
todotable.h \
- todoentryimpl.h
+ todoentryimpl.h \
+ todolabel.h
SOURCES = main.cpp \
mainwindow.cpp \
todotable.cpp \
- todoentryimpl.cpp
+ todoentryimpl.cpp \
+ todolabel.cc
INTERFACES = todoentry.ui
TARGET = todolist
diff --git a/core/pim/todo/todolabel.cc b/core/pim/todo/todolabel.cc
new file mode 100644
index 0000000..4ce3499
--- a/dev/null
+++ b/core/pim/todo/todolabel.cc
@@ -0,0 +1,58 @@
+/**********************************************************************
+** Copyright (C) 2002 by Stefan Eilers (se, eilers.stefan@epost.de)
+** Copyright (C) 2002 Holger 'zecke' Freyther <freyther@kde.org>
+** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
+**
+** This file is part of the 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.
+**
+**********************************************************************/
+
+
+
+#include <qpe/stringutil.h>
+
+#include <qregexp.h>
+#include <qstylesheet.h>
+
+
+#include "todolabel.h"
+
+TodoLabel::TodoLabel( QWidget *parent, const char *name )
+ : QTextView( parent, name )
+{
+}
+
+TodoLabel::~TodoLabel()
+{
+}
+
+void TodoLabel::init( const ToDoEvent &item )
+{
+ m_item = item;
+}
+
+void TodoLabel::sync()
+{
+ QString text = m_item.richText();
+ setText( text );
+}
+
+void TodoLabel::keyPressEvent( QKeyEvent *e )
+{
+ if ( e->key() == Qt::Key_F33 ) {
+ emit okPressed();
+ }
+}
diff --git a/core/pim/todo/todolabel.h b/core/pim/todo/todolabel.h
new file mode 100644
index 0000000..b6d67af
--- a/dev/null
+++ b/core/pim/todo/todolabel.h
@@ -0,0 +1,51 @@
+/**********************************************************************
+** Copyright (C) 2002 by Stefan Eilers (se, eilers.stefan@epost.de)
+** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
+**
+** This file is part of the 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 TODOLABEL_H
+#define TODOLABEL_H
+
+#include <opie/todoevent.h>
+
+#include <qtextview.h>
+
+class TodoLabel : public QTextView
+{
+ Q_OBJECT
+
+public:
+ TodoLabel( QWidget *parent, const char *name = 0 );
+ ~TodoLabel();
+
+public slots:
+ void init( const ToDoEvent &item);
+ void sync();
+
+signals:
+ void okPressed();
+
+protected:
+ void keyPressEvent( QKeyEvent * );
+
+private:
+ ToDoEvent m_item;
+
+};
+
+#endif
diff --git a/core/pim/todo/todotable.cpp b/core/pim/todo/todotable.cpp
index d0bc61c..753c036 100644
--- a/core/pim/todo/todotable.cpp
+++ b/core/pim/todo/todotable.cpp
@@ -304,17 +304,23 @@ void TodoTable::slotClicked( int row, int col, int, const QPoint &pos )
break;
case 1:
break;
case 2:
- // may as well edit it...
- // menuTimer->stop();
-// emit signalEdit();
- // fall through
- case 3:
- // may as well edit it...
+ // may as well edit it...
+ // menuTimer->stop();
+ // emit signalEdit();
+ // Show detailed view of the selected entry
+ {
menuTimer->stop();
- // emit signalEdit();
- break;
+ ToDoEvent *todo = todoList[static_cast<CheckItem*>(item(row, 0))];
+ emit showDetails( *todo );
+ }
+ break;
+ case 3:
+ // may as well edit it...
+ menuTimer->stop();
+ // emit signalEdit();
+ break;
}
}
void TodoTable::slotPressed( int row, int col, int, const QPoint &pos )
@@ -344,9 +350,9 @@ void TodoTable::internalAddEntries( QList<ToDoEvent> &list )
ToDoEvent TodoTable::currentEntry() const
{
- printf ("in currentEntry\n");
+ //qWarning ("in currentEntry\n");
QTableItem *i = item( currentRow(), 0 );
if ( !i || rowHeight( currentRow() ) <= 0 )
return ToDoEvent();
diff --git a/core/pim/todo/todotable.h b/core/pim/todo/todotable.h
index 458e07a..2f6e635 100644
--- a/core/pim/todo/todotable.h
+++ b/core/pim/todo/todotable.h
@@ -141,9 +141,9 @@ signals:
void signalPriorityChanged( int i );
void signalShowMenu( const QPoint & );
void signalNotFound();
void signalWrapAround();
-
+ void showDetails( const ToDoEvent & );
protected:
void keyPressEvent( QKeyEvent *e );
private: