From b9aad1f15dc600e4dbe4c62d3fcced6363188ba3 Mon Sep 17 00:00:00 2001 From: zautrix Date: Sat, 26 Jun 2004 19:01:18 +0000 Subject: Initial revision --- (limited to 'korganizer/kotodoview.h') diff --git a/korganizer/kotodoview.h b/korganizer/kotodoview.h new file mode 100644 index 0000000..4495702 --- a/dev/null +++ b/korganizer/kotodoview.h @@ -0,0 +1,230 @@ +/* + This file is part of KOrganizer. + Copyright (c) 2000, 2001 Cornelius Schumacher + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + As a special exception, permission is given to link this program + with any edition of Qt, and distribute the resulting executable, + without including the source code for Qt in the source distribution. +*/ +#ifndef KOTODOVIEW_H +#define KOTODOVIEW_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include "kotodoviewitem.h" +#include "koprefs.h" +#include "koglobals.h" + +class QDragEnterEvent; +class QDragMoveEvent; +class QDragLeaveEvent; +class QDropEvent; + +class DocPrefs; + +class KOTodoListView : public KListView +{ + Q_OBJECT + public: + KOTodoListView(Calendar *,QWidget *parent=0,const char *name=0); + virtual ~KOTodoListView() {} + + signals: + void todoDropped(Todo *); + void double_Clicked(QListViewItem *item); + + protected: + void contentsDragEnterEvent(QDragEnterEvent *); + void contentsDragMoveEvent(QDragMoveEvent *); + void contentsDragLeaveEvent(QDragLeaveEvent *); + void contentsDropEvent(QDropEvent *); + + void contentsMousePressEvent(QMouseEvent *); + void contentsMouseMoveEvent(QMouseEvent *); + void contentsMouseReleaseEvent(QMouseEvent *); + void contentsMouseDoubleClickEvent(QMouseEvent *); + + private: + Calendar *mCalendar; + QPoint mPressPos; + bool mMousePressed; + QListViewItem *mOldCurrent; + void keyPressEvent ( QKeyEvent * ) ; +}; + + +/** + This is the line-edit on top of the todoview for fast addition of new todos +*/ +class KOQuickTodo : public QLineEdit +{ + public: + KOQuickTodo(QWidget *parent=0); + protected: + void focusInEvent(QFocusEvent *ev); + void focusOutEvent(QFocusEvent *ev); +}; + + +/** + This class provides a multi-column list view of todo events. + + @short multi-column list view of todo events. + @author Cornelius Schumacher +*/ +class KOTodoView : public KOrg::BaseView +{ + Q_OBJECT + public: + KOTodoView(Calendar *, QWidget* parent=0, const char* name=0 ); + ~KOTodoView(); + + QPtrList selectedIncidences(); + QPtrList selectedTodos(); + + DateList selectedDates() + {DateList q; + return q;} + + /** Return number of shown dates. TodoView does not show dates, */ + int currentDateCount() { return 0; } + void setNarrow(); + + void printPreview(CalPrinter *calPrinter, const QDate &fd, const QDate &td); + + void setDocumentId( const QString & ); + + void saveLayout(KConfig *config, const QString &group) const; + void restoreLayout(KConfig *config, const QString &group); + /** Create a popup menu to set categories */ + QPopupMenu *getCategoryPopupMenu (KOTodoViewItem *todoItem); + + public slots: + void updateView(); + void updateConfig(); + + void changeEventDisplay(Event *, int); + + void showDates(const QDate &start, const QDate &end); + void showEvents(QPtrList eventList); + + void clearSelection(); + void jumpToDate (); + + void editItem(QListViewItem *item); + void showItem(QListViewItem *item,const QPoint &,int); + void popupMenu(QListViewItem *item,const QPoint &,int); + void newTodo(); + void newSubTodo(); + void unparentTodo(); + void showTodo(); + void editTodo(); + void cloneTodo(); + void cancelTodo(); + void moveTodo(); + void beamTodo(); + void deleteTodo(); + + void setNewPriority(int); + void setNewPercentage(int); + void changedCategories(int); + + void purgeCompleted(); + void toggleCompleted(); + void toggleQuickTodo(); + void updateTodo( Todo *, int ); + + void itemClicked(QListViewItem *); + void itemStateChanged(QListViewItem *); + void modified(bool); + void itemDoubleClicked(QListViewItem *item); + + signals: + void newTodoSignal(); + void newSubTodoSignal(Todo *); + void unparentTodoSignal(Todo *); + void showTodoSignal(Todo *); + + void editTodoSignal(Todo *); + void deleteTodoSignal(Todo *); + void todoModifiedSignal (Todo *, int); + + void isModified(bool); + void cloneTodoSignal( Incidence * ); + void cancelTodoSignal( Incidence * ); + void moveTodoSignal( Incidence * ); + void beamTodoSignal( Incidence * ); + void purgeCompletedSignal(); + + protected slots: + void processSelectionChange(); + void addQuickTodo(); + + private: + /* + * the TodoEditor approach is rather unscaling in the long + * run. + * Korganizer keeps it in memory and we need to update + * 1. make KOTodoViewItem a QObject again? + * 2. add a public method for setting one todo modified? + * 3. add a private method for setting a todo modified + friend here? + * -- zecke 2002-07-08 + */ + friend class KOTodoViewItem; + void setTodoModified( Todo* ); + QMap::ConstIterator insertTodoItem(Todo *todo); + void restoreItemState( QListViewItem * ); + + KOTodoListView *mTodoListView; + QPopupMenu *mItemPopupMenu; + QPopupMenu *mPopupMenu; + QPopupMenu *mPriorityPopupMenu; + QPopupMenu *mPercentageCompletedPopupMenu; + QPopupMenu *mCategoryPopupMenu; + + QMap mPercentage; + QMap mPriority; + QMap mCategory; + KOTodoViewItem *mActiveItem; + + QMap mTodoMap; + QString mName; + + DocPrefs *mDocPrefs; + QString mCurrentDoc; + KOQuickTodo *mQuickAdd; + bool mBlockUpdate; + void todoModified(Todo *, int ); + void keyPressEvent ( QKeyEvent * ) ; +}; + +#endif -- cgit v0.9.0.2