korganizer Library API Documentation

kotodoview.h

00001 /*
00002     This file is part of KOrganizer.
00003 
00004     Copyright (c) 2000,2001,2003 Cornelius Schumacher <schumacher@kde.org>
00005 
00006     This program is free software; you can redistribute it and/or modify
00007     it under the terms of the GNU General Public License as published by
00008     the Free Software Foundation; either version 2 of the License, or
00009     (at your option) any later version.
00010 
00011     This program is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00014     GNU General Public License for more details.
00015 
00016     You should have received a copy of the GNU General Public License
00017     along with this program; if not, write to the Free Software
00018     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
00019 
00020     As a special exception, permission is given to link this program
00021     with any edition of Qt, and distribute the resulting executable,
00022     without including the source code for Qt in the source distribution.
00023 */
00024 #ifndef KOTODOVIEW_H
00025 #define KOTODOVIEW_H
00026 
00027 #include <qfont.h>
00028 #include <qfontmetrics.h>
00029 #include <qlineedit.h>
00030 #include <qptrlist.h>
00031 #include <qlistbox.h>
00032 #include <qpopupmenu.h>
00033 #include <qlabel.h>
00034 #include <qmap.h>
00035 #include <qtimer.h>
00036 #include <qevent.h>
00037 #include <qtooltip.h>
00038 #include <qpoint.h>
00039 #include <qrect.h>
00040 
00041 #include <klistview.h>
00042 
00043 #include <libkcal/calendar.h>
00044 #include <libkcal/todo.h>
00045 
00046 #include <korganizer/baseview.h>
00047 
00048 #include "kotodoviewitem.h"
00049 #include "koprefs.h"
00050 #include "koglobals.h"
00051 #include "calprinter.h"
00052 
00053 class QDragEnterEvent;
00054 class QDragMoveEvent;
00055 class QDragLeaveEvent;
00056 class QDropEvent;
00057 
00058 class KOTodoListView;
00059 
00060 class DocPrefs;
00061 
00062 
00063 class KOTodoListViewToolTip : public QToolTip
00064 {
00065   public:
00066     KOTodoListViewToolTip( QWidget *parent, KOTodoListView *lv );
00067 
00068   protected:
00069     void maybeTip( const QPoint &pos );
00070 
00071   private:
00072     KOTodoListView *todolist;
00073 };
00074 
00075 
00076 class KOTodoListView : public KListView
00077 {
00078     Q_OBJECT
00079   public:
00080     KOTodoListView( QWidget *parent = 0, const char *name = 0 );
00081     ~KOTodoListView();
00082 
00083     void setCalendar( Calendar * );
00084 
00085   signals:
00086     void todoDropped( Todo * );
00087     void todoChanged( Todo*, Todo* );
00088     void todoAdded( Todo* );
00089 
00090   protected:
00091     virtual bool event( QEvent * );
00092 
00093     void contentsDragEnterEvent( QDragEnterEvent * );
00094     void contentsDragMoveEvent( QDragMoveEvent * );
00095     void contentsDragLeaveEvent( QDragLeaveEvent * );
00096     void contentsDropEvent( QDropEvent * );
00097 
00098     void contentsMousePressEvent( QMouseEvent * );
00099     void contentsMouseMoveEvent( QMouseEvent * );
00100     void contentsMouseReleaseEvent( QMouseEvent * );
00101     void contentsMouseDoubleClickEvent( QMouseEvent * );
00102 
00103   private:
00104     Calendar *mCalendar;
00105 
00106     QPoint mPressPos;
00107     bool mMousePressed;
00108     QListViewItem *mOldCurrent;
00109     KOTodoListViewToolTip *tooltip;
00110 };
00111 
00112 
00116 class KOQuickTodo : public QLineEdit
00117 {
00118     Q_OBJECT
00119   public:
00120     KOQuickTodo( QWidget *parent = 0 );
00121 
00122   protected:
00123     void focusInEvent( QFocusEvent *ev );
00124     void focusOutEvent( QFocusEvent *ev );
00125 };
00126 
00127 
00134 class KOTodoView : public KOrg::BaseView
00135 {
00136     Q_OBJECT
00137   public:
00138     KOTodoView( Calendar *cal, QWidget *parent = 0, const char *name = 0 );
00139     ~KOTodoView();
00140 
00141     void setCalendar( Calendar * );
00142 
00143     Incidence::List selectedIncidences();
00144     Todo::List selectedTodos();
00145 
00146     DateList selectedDates() { return DateList(); }
00147 
00149     int currentDateCount() { return 0; }
00150 
00151     void printPreview( CalPrinter *calPrinter, const QDate &fd,
00152                        const QDate &td );
00153 
00154     CalPrinter::PrintType printType();
00155 
00156     void setDocumentId( const QString & );
00157 
00158     void saveLayout( KConfig *config, const QString &group ) const;
00159     void restoreLayout( KConfig *config, const QString &group );
00161     QPopupMenu *getCategoryPopupMenu( KOTodoViewItem *todoItem );
00162 
00163   public slots:
00164     void updateView();
00165     void updateConfig();
00166 
00167     void changeEventDisplay( Event *, int );
00168 
00169     void showDates( const QDate &start, const QDate &end );
00170     void showEvents( const Event::List & );
00171 
00172     void clearSelection();
00173 
00174     void editItem( QListViewItem *item, const QPoint &, int );
00175     void editItem( QListViewItem *item );
00176     void showItem( QListViewItem *item, const QPoint &, int );
00177     void popupMenu( QListViewItem *item, const QPoint &, int );
00178     void newTodo();
00179     void newSubTodo();
00180     void showTodo();
00181     void editTodo();
00182     void deleteTodo();
00183 
00184     void setNewPriority( int );
00185     void setNewPercentage( int );
00186     void changedCategories( int );
00187 
00188     void purgeCompleted();
00189 
00190     void itemClicked( QListViewItem * );
00191     void itemStateChanged( QListViewItem * );
00192     void modified( bool );
00193     void setTodoModified( Todo *oldTodo, Todo *todo )
00194     {
00195       emit todoChanged( oldTodo, todo );
00196     }
00197 
00198   signals:
00199     void newTodoSignal();
00200     void newSubTodoSignal( Todo * );
00201     void unSubTodoSignal();
00202     void showTodoSignal( Todo * );
00203 
00204     void editTodoSignal( Todo * );
00205     void deleteTodoSignal( Todo * );
00206     void todoModifiedSignal( Todo *, Todo *, int );
00207     void todoChanged ( Todo*, Todo* );
00208     void todoAdded ( Todo* );
00209 
00210     void isModified( bool );
00211 
00212     void purgeCompletedSignal();
00213 
00214   protected slots:
00215     void processSelectionChange();
00216     void addQuickTodo();
00217 
00218   private:
00219     /*
00220      * the TodoEditor approach is rather unscaling in the long
00221      * run.
00222      * Korganizer keeps it in memory and we need to update
00223      * 1. make KOTodoViewItem a QObject again?
00224      * 2. add a public method for setting one todo modified?
00225      * 3. add a private method for setting a todo modified + friend here?
00226      *  -- zecke 2002-07-08
00227      */
00228     friend class KOTodoViewItem;
00229 
00230     void setTodoModified( Todo * );
00231     QMap<Todo *,KOTodoViewItem *>::ConstIterator insertTodoItem( Todo *todo );
00232     void restoreItemState( QListViewItem * );
00233 
00234     KOTodoListView *mTodoListView;
00235     QPopupMenu *mItemPopupMenu;
00236     QPopupMenu *mPopupMenu;
00237     QPopupMenu *mPriorityPopupMenu;
00238     QPopupMenu *mPercentageCompletedPopupMenu;
00239     QPopupMenu *mCategoryPopupMenu;
00240 
00241     QMap<int, int> mPercentage;
00242     QMap<int, int> mPriority;
00243     QMap<int, QString> mCategory;
00244 
00245     KOTodoViewItem *mActiveItem;
00246 
00247     QMap<Todo *,KOTodoViewItem *> mTodoMap;
00248 
00249     DocPrefs *mDocPrefs;
00250     QString mCurrentDoc;
00251     KOQuickTodo *mQuickAdd;
00252 
00253     static const int POPUP_UNSUBTODO;
00254 };
00255 
00256 #endif
KDE Logo
This file is part of the documentation for korganizer Library Version 3.2.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat May 1 11:38:31 2004 by doxygen 1.2.15 written by Dimitri van Heesch, © 1997-2003