author | zecke <zecke> | 2002-10-07 11:39:30 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-10-07 11:39:30 (UTC) |
commit | f11d4bda64b58abfebf77485d5d77143a10dc8c9 (patch) (side-by-side diff) | |
tree | a4e80550c4abe867303553de608316941dd943f1 /core/pim/todo/todoview.h | |
parent | c2cd5470fa3ec69394fa65ad16ab29a6cadab56f (diff) | |
download | opie-f11d4bda64b58abfebf77485d5d77143a10dc8c9.zip opie-f11d4bda64b58abfebf77485d5d77143a10dc8c9.tar.gz opie-f11d4bda64b58abfebf77485d5d77143a10dc8c9.tar.bz2 |
Re add files
for todo
-rw-r--r-- | core/pim/todo/todoview.h | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/core/pim/todo/todoview.h b/core/pim/todo/todoview.h new file mode 100644 index 0000000..e4985a7 --- a/dev/null +++ b/core/pim/todo/todoview.h @@ -0,0 +1,178 @@ +/* + =. This file is part of the OPIE Project + .=l. Copyright (c) 2002 <> + .>+-= + _;:, .> :=|. This program is free software; you can +.> <`_, > . <= redistribute it and/or modify it under +:`=1 )Y*s>-.-- : the terms of the GNU General Public +.="- .-=="i, .._ License as published by the Free Software + - . .-<_> .<> Foundation; either version 2 of the License, + ._= =} : or (at your option) any later version. + .%`+i> _;_. + .i_,=:_. -<s. This program is distributed in the hope that + + . -:. = it will be useful, but WITHOUT ANY WARRANTY; + : .. .:, . . . without even the implied warranty of + =_ + =;=|` MERCHANTABILITY or FITNESS FOR A + _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU +..}^=.= = ; Library General Public License for more +++= -. .` .: details. + : = ...= . :.=- + -. .:....=;==+<; You should have received a copy of the GNU + -_. . . )=. = Library General Public License along with + -- :-=` this library; see the file COPYING.LIB. + If not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ + +#ifndef TODO_VIEW_H +#define TODO_VIEW_H + +#include <qarray.h> +#include <qstring.h> +#include <qvaluelist.h> +#include <qwidget.h> + +#include <opie/otodoaccess.h> + +#include "smalltodo.h" + + +namespace Todo { + + /** + * According to tronical it's not possible + * to have Q_OBJECT in a template at all + * so this is a hack widget not meant + * to be public + */ + class InternQtHack : public QObject { + Q_OBJECT + public: + InternQtHack() : QObject() {}; + void emitShow(int uid) { emit showTodo(uid); } + void emitEdit(int uid) { emit edit(uid ); } + void emitUpdate( int uid, + const SmallTodo& to) { + emit update(uid, to ); + } + void emitUpdate( int uid, + const OTodo& ev ){ + emit update(uid, ev ); + } + void emitRemove( int uid ) { + emit remove( uid ); + } + void emitUpdate( QWidget* wid ) { + emit update( wid ); + } + signals: + void showTodo(int uid ); + void edit(int uid ); + void update( int uid, const Todo::SmallTodo& ); + void update( int uid, const OTodo& ); + /* sorry you need to cast */; + void update( QWidget* wid ); + void remove( int uid ); + + }; + class MainWindow; + + /** + * due to inheretince problems we need this base class + */ + class ViewBase { + public: + virtual QWidget* widget() = 0; + virtual QString type()const = 0; + virtual int current() = 0; + virtual QString currentRepresentation() = 0; + virtual void showOverDue( bool ) = 0; + virtual void setTodos( OTodoAccess::List::Iterator it, + OTodoAccess::List::Iterator end ) = 0; + + virtual void addEvent( const OTodo& ) = 0; + virtual void replaceEvent( const OTodo& ) = 0; + virtual void removeEvent( int uid ) = 0; + virtual void setShowCompleted( bool ) = 0; + virtual void setShowDeadline( bool ) = 0; + virtual void setShowCategory( const QString& = QString::null ) = 0; + virtual void clear() = 0; + virtual QArray<int> completed() = 0; + virtual void newDay() = 0; + + virtual void connectShow( QObject*, const char* ) = 0; + virtual void connectEdit( QObject*, const char* ) = 0; + virtual void connectUpdateSmall( QObject*, const char* ) = 0; + virtual void connectUpdateBig( QObject*, const char* ) = 0; + virtual void connectUpdateView( QObject*, const char*) = 0; + virtual void connectRemove( QObject*, const char* ) = 0; + + }; + + /** + * A base class for all TodoView which are showing + * a list of todos. + * Either in a QTable, QListView or any other QWidget + * derived class + * Through the MainWindow( dispatcher ) one can access + * the relevant informations + * + * It's not possible to have signal and slots from within + * templates this way you've to register for a signal + */ + class TodoView : public ViewBase{ + + public: + /** + * c'tor + */ + TodoView( MainWindow* win ); + + /** + *d'tor + */ + virtual ~TodoView(); + + /* connect to the show signal */ + void connectShow(QObject* obj, + const char* slot ); + + /* connect to edit */ + void connectEdit( QObject* obj, + const char* slot ); + void connectUpdateSmall( QObject* obj, + const char* slot ); + void connectUpdateBig( QObject* obj, + const char* slot ) ; + void connectUpdateView( QObject* obj, + const char* slot ); + void connectRemove( QObject* obj, + const char* slot ); + protected: + MainWindow* todoWindow(); + OTodo event(int uid ); + OTodoAccess::List::Iterator begin(); + OTodoAccess::List::Iterator end(); + + /* + These things needs to be implemented + in a implementation + signals: + */ + protected: + void showTodo( int uid ) { hack->emitShow(uid); } + void edit( int uid ) { hack->emitEdit(uid); } + void update(int uid, const SmallTodo& to ); + void update(int uid, const OTodo& ev); + void remove( int uid ) { + hack->emitRemove( uid ); + } + private: + InternQtHack* hack; + MainWindow *m_main; + }; +}; + +#endif |