From f11d4bda64b58abfebf77485d5d77143a10dc8c9 Mon Sep 17 00:00:00 2001 From: zecke Date: Mon, 07 Oct 2002 11:39:30 +0000 Subject: Re add files for todo --- (limited to 'core/pim/todo/todoview.h') 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_,=:_.      -`: 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 +#include +#include +#include + +#include + +#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 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 -- cgit v0.9.0.2