summaryrefslogtreecommitdiffabout
path: root/korganizer/kotodoview.h
authorzautrix <zautrix>2004-06-26 19:01:18 (UTC)
committer zautrix <zautrix>2004-06-26 19:01:18 (UTC)
commitb9aad1f15dc600e4dbe4c62d3fcced6363188ba3 (patch) (side-by-side diff)
tree2c3d4004fb21c72cba65793859f9bcd8ffd3a49c /korganizer/kotodoview.h
downloadkdepimpi-b9aad1f15dc600e4dbe4c62d3fcced6363188ba3.zip
kdepimpi-b9aad1f15dc600e4dbe4c62d3fcced6363188ba3.tar.gz
kdepimpi-b9aad1f15dc600e4dbe4c62d3fcced6363188ba3.tar.bz2
Initial revision
Diffstat (limited to 'korganizer/kotodoview.h') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kotodoview.h230
1 files changed, 230 insertions, 0 deletions
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 <schumacher@kde.org>
+
+ 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 <qfont.h>
+#include <qfontmetrics.h>
+#include <qlineedit.h>
+#include <qptrlist.h>
+#include <qstrlist.h>
+#include <qlistbox.h>
+#include <qpopupmenu.h>
+#include <qlabel.h>
+#include <qmap.h>
+#include <qlistview.h>
+#include <klistview.h>
+
+#include <libkcal/calendar.h>
+#include <libkcal/todo.h>
+
+#include <korganizer/baseview.h>
+
+#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 <schumacher@kde.org>
+*/
+class KOTodoView : public KOrg::BaseView
+{
+ Q_OBJECT
+ public:
+ KOTodoView(Calendar *, QWidget* parent=0, const char* name=0 );
+ ~KOTodoView();
+
+ QPtrList<Incidence> selectedIncidences();
+ QPtrList<Todo> 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<Event> 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<Todo *,KOTodoViewItem *>::ConstIterator insertTodoItem(Todo *todo);
+ void restoreItemState( QListViewItem * );
+
+ KOTodoListView *mTodoListView;
+ QPopupMenu *mItemPopupMenu;
+ QPopupMenu *mPopupMenu;
+ QPopupMenu *mPriorityPopupMenu;
+ QPopupMenu *mPercentageCompletedPopupMenu;
+ QPopupMenu *mCategoryPopupMenu;
+
+ QMap<int, int> mPercentage;
+ QMap<int, int> mPriority;
+ QMap<int, QString> mCategory;
+ KOTodoViewItem *mActiveItem;
+
+ QMap<Todo *,KOTodoViewItem *> mTodoMap;
+ QString mName;
+
+ DocPrefs *mDocPrefs;
+ QString mCurrentDoc;
+ KOQuickTodo *mQuickAdd;
+ bool mBlockUpdate;
+ void todoModified(Todo *, int );
+ void keyPressEvent ( QKeyEvent * ) ;
+};
+
+#endif