summaryrefslogtreecommitdiff
path: root/core
authorzecke <zecke>2002-04-23 12:45:20 (UTC)
committer zecke <zecke>2002-04-23 12:45:20 (UTC)
commite25c5384f3f3025be64ed26d244c59afc5862711 (patch) (side-by-side diff)
tree603f32b0550ecda9cbe95a93807a2a89b32cabcd /core
parent367304a610dd618ad45ddce8256ba4d7d8ded442 (diff)
downloadopie-e25c5384f3f3025be64ed26d244c59afc5862711.zip
opie-e25c5384f3f3025be64ed26d244c59afc5862711.tar.gz
opie-e25c5384f3f3025be64ed26d244c59afc5862711.tar.bz2
Patch from Stefan Eilers for overview
merged by hand
Diffstat (limited to 'core') (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,7 +1,7 @@
/**********************************************************************
** 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.
**
@@ -25,6 +25,7 @@
#include "mainwindow.h"
#include "todoentryimpl.h"
#include "todotable.h"
+#include "todolabel.h"
#include <opie/tododb.h>
#include <opie/todovcalresource.h>
@@ -48,6 +49,7 @@
#include <qfile.h>
#include <qmessagebox.h>
#include <qpopupmenu.h>
+#include <qwidgetstack.h>
#include <sys/stat.h>
#include <sys/types.h>
@@ -71,7 +73,8 @@ TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) :
{
// QTime t;
// t.start();
-
+ mView = 0l;
+ mStack = new QWidgetStack(this, "main stack");
setCaption( tr("Todo") );
QString str;
table = new TodoTable( this );
@@ -101,7 +104,9 @@ TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) :
"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() );
@@ -146,6 +151,13 @@ TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) :
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" ),
@@ -176,8 +188,10 @@ TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) :
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 );
@@ -249,6 +263,8 @@ TodoWindow::TodoWindow( QWidget *parent, const char *name, WFlags f = 0 ) :
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() );
}
@@ -286,6 +302,7 @@ 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()
@@ -318,6 +335,7 @@ void TodoWindow::slotDelete()
currentEntryChanged( -1, 0 );
findAction->setEnabled( FALSE );
}
+ mStack->raiseWidget(1);
}
void TodoWindow::slotDeleteAll()
{
@@ -329,7 +347,7 @@ 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;
@@ -342,6 +360,7 @@ void TodoWindow::slotDeleteAll()
currentEntryChanged( -1, 0 );
findAction->setEnabled( FALSE );
}
+ mStack->raiseWidget(1 );
}
void TodoWindow::slotEdit()
@@ -369,7 +388,7 @@ void TodoWindow::slotEdit()
table->setPaintingEnabled( true );
}
populateCategories();
-
+ mStack->raiseWidget( 1 );
}
void TodoWindow::slotDuplicate()
{
@@ -379,10 +398,19 @@ void TodoWindow::slotDuplicate()
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 )
{
@@ -433,6 +461,8 @@ void TodoWindow::setCategory( int c )
setCaption( tr("Todo") + " - " + cat );
}
table->setPaintingEnabled( true );
+
+ mStack->raiseWidget( 1 );
}
void TodoWindow::populateCategories()
@@ -440,6 +470,7 @@ void TodoWindow::populateCategories()
catMenu->clear();
int id, rememberId;
id = 1;
+ rememberId = 0;
catMenu->insertItem( tr( "All Categories" ), id++ );
catMenu->insertSeparator();
QStringList categories = table->categories();
@@ -472,6 +503,11 @@ 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();
@@ -562,10 +598,24 @@ void TodoWindow::beamDone( Ir *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,5 +1,6 @@
/**********************************************************************
- 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.
@@ -29,6 +30,10 @@ class QAction;
class QPopupMenu;
class Ir;
class OFontMenu;
+class TodoLabel;
+class ToDoDB;
+class QWidgetStack;
+class ToDoEvent;
class TodoWindow : public QMainWindow
{
@@ -49,9 +54,11 @@ protected slots:
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();
@@ -66,9 +73,11 @@ protected:
private:
void populateCategories();
+ //inline void switchToTable(); // move back to the normal view
private:
TodoTable *table;
+ TodoLabel *mView;
QAction *editAction,
*deleteAction,
*findAction,
@@ -77,6 +86,7 @@ private:
*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,7 +1,7 @@
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)
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
@@ -3,11 +3,13 @@ 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
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
@@ -305,15 +305,21 @@ void TodoTable::slotClicked( int row, int col, int, const QPoint &pos )
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;
}
}
@@ -345,7 +351,7 @@ 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 )
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
@@ -142,7 +142,7 @@ signals:
void signalShowMenu( const QPoint & );
void signalNotFound();
void signalWrapAround();
-
+ void showDetails( const ToDoEvent & );
protected:
void keyPressEvent( QKeyEvent *e );