You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
320 lines
5.6 KiB
320 lines
5.6 KiB
#ifndef _KGANTT_H_
|
|
#define _KGANTT_H_
|
|
|
|
/*
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Library General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
This library 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., 51 Franklin Street, Fifth Floor,
|
|
Boston, MA 02110-1301, USA.
|
|
|
|
author : jh, jochen@ifb.bv.tu-berlin.de
|
|
|
|
file : KGantt.h
|
|
date : 26 oct 2000
|
|
|
|
|
|
changelog : 23 nov 2000, jh
|
|
|
|
24 nov 2000, jh
|
|
|
|
10 jan 2001m jh, changed to KDE :
|
|
xQGantt -> KGantt
|
|
|
|
*/
|
|
|
|
|
|
#include <tqwidget.h>
|
|
#include <tqsplitter.h>
|
|
|
|
#include <tdepopupmenu.h>
|
|
#include <kdemacros.h>
|
|
|
|
#include "KGanttItem.h"
|
|
#include "xQGanttListView.h"
|
|
#include "xQGanttBarView.h"
|
|
|
|
|
|
|
|
/**
|
|
* \mainpage KGantt Module <br> <IMG SRC="gantt.png">
|
|
*
|
|
* The kgantt module contains several classes (KGanttItem, KGantt)
|
|
* for drawing and editing gantt-diagramms.
|
|
*
|
|
* This example shows how to use the gantt module:
|
|
* \code
|
|
* #include "kgantt/KGantt.h"
|
|
*
|
|
* int main(int args, char* argv[])
|
|
* {
|
|
...
|
|
|
|
KGantt* gantt = new KGantt(0, mainwindow);
|
|
|
|
KGanttItem* toplevel = gantt->getToplevelItem();
|
|
|
|
KGanttItem* t1 = new KGanttItem(toplevel,
|
|
"task 1, no subtasks",
|
|
TQDateTime::currentDateTime().addDays(10),
|
|
TQDateTime::currentDateTime().addDays(20) );
|
|
|
|
...
|
|
|
|
* }
|
|
* \endcode
|
|
*
|
|
* You just have to create an object of class KGantt and add several objects of
|
|
* class KGanttItem.
|
|
*
|
|
*/
|
|
|
|
|
|
|
|
/// Gantt Widget.
|
|
/*!
|
|
* A gantt widget contains two parts, a list view and a
|
|
* bar view.
|
|
*/
|
|
////////////////////////////////
|
|
class KDE_EXPORT KGantt : public TQWidget
|
|
////////////////////////////////
|
|
{
|
|
|
|
TQ_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
/// Constructor.
|
|
/*!
|
|
*
|
|
*/
|
|
KGantt(KGanttItem* toplevelitem = 0,
|
|
TQWidget* parent = 0, const char * name=0, WFlags f=0 );
|
|
|
|
|
|
/// Destructor.
|
|
/*!
|
|
*
|
|
*/
|
|
~KGantt();
|
|
|
|
|
|
|
|
/// Set toplevel item.
|
|
/*!
|
|
* If no toplevel item was specified at construction of this widget a
|
|
* toplevel item was created. This will be deleted by setting a new
|
|
* toplevel item. A toplevel item that was passed to the constructor will
|
|
* not be deleted.
|
|
*/
|
|
void setToplevelItem(KGanttItem* item) {
|
|
if(_deleteItem)
|
|
delete _toplevelitem;
|
|
_toplevelitem = item;
|
|
}
|
|
|
|
|
|
|
|
/// Get toplevel item.
|
|
/*!
|
|
*
|
|
*/
|
|
KGanttItem* getToplevelItem() {
|
|
return _toplevelitem;
|
|
}
|
|
|
|
|
|
|
|
/// Get bar view of items.
|
|
/*!
|
|
*
|
|
*/
|
|
xQGanttBarView* barView() {
|
|
return _ganttbar;
|
|
}
|
|
|
|
|
|
|
|
/// Get list view of items.
|
|
/*!
|
|
*
|
|
*/
|
|
xQGanttListView* listView() {
|
|
return _ganttlist;
|
|
}
|
|
|
|
|
|
|
|
TQSplitter* splitter() {
|
|
return _splitter;
|
|
}
|
|
|
|
|
|
|
|
///
|
|
/*!
|
|
*
|
|
*/
|
|
void zoom(double factor) {
|
|
barView()->viewport()->zoom(factor);
|
|
}
|
|
|
|
|
|
|
|
/// Get popup menu.
|
|
/*!
|
|
*
|
|
*/
|
|
TDEPopupMenu* menu() {
|
|
return _ganttbar->viewport()->menu();
|
|
}
|
|
|
|
|
|
|
|
/// Add gantt toolbar to main window.
|
|
/*!
|
|
* If you want to embed a toolbar with specific actions
|
|
* like zooming or configuring the gantt, you can add a toolbar
|
|
* automatically by invoking this method. You have to pass your
|
|
* mainwindow as a parameter if you call this method the first
|
|
* time because teh toolbar will be created then. If you
|
|
* you want to access the pointer to a already created toolbar you
|
|
* can invoke this method without any parameter.
|
|
*/
|
|
TDEToolBar* toolbar(TQMainWindow* mw = 0) {
|
|
return _ganttbar->viewport()->toolbar(mw);
|
|
}
|
|
|
|
|
|
|
|
/// Print to stdout.
|
|
/*
|
|
*
|
|
*/
|
|
void dumpItems();
|
|
|
|
|
|
|
|
/// Get all selected items.
|
|
/*!
|
|
* All selected KGanttItems will be added to the passed list.
|
|
*/
|
|
void getSelectedItems(TQPtrList<KGanttItem>& list) {
|
|
_ganttbar->viewport()->getSelectedItems(list);
|
|
}
|
|
|
|
|
|
|
|
void addHoliday(int y, int m, int d) {
|
|
_ganttbar->viewport()->addHoliday(y,m,d);
|
|
}
|
|
|
|
|
|
|
|
void removeHoliday(int y, int m, int d) {
|
|
_ganttbar->viewport()->addHoliday(y,m,d);
|
|
}
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
|
|
void setSelect() {
|
|
_ganttbar->viewport()->setSelect();
|
|
}
|
|
|
|
void setZoom() {
|
|
_ganttbar->viewport()->setZoom();
|
|
}
|
|
|
|
void setMove() {
|
|
_ganttbar->viewport()->setMove();
|
|
}
|
|
|
|
|
|
void zoomIn() {
|
|
_ganttbar->viewport()->zoomIn();
|
|
}
|
|
|
|
void zoomOut() {
|
|
_ganttbar->viewport()->zoomOut();
|
|
}
|
|
|
|
void zoomAll() {
|
|
_ganttbar->viewport()->zoomAll();
|
|
}
|
|
|
|
void selectAll() {
|
|
_ganttbar->viewport()->selectAll();
|
|
}
|
|
|
|
void unselectAll() {
|
|
_ganttbar->viewport()->unselectAll();
|
|
}
|
|
|
|
void deleteSelectedItems() {
|
|
_ganttbar->viewport()->deleteSelectedItems();
|
|
}
|
|
|
|
void insertIntoSelectedItem() {
|
|
_ganttbar->viewport()->insertIntoSelectedItem();
|
|
}
|
|
|
|
|
|
/// Show list view.
|
|
/*!
|
|
*
|
|
*/
|
|
void showList() {
|
|
_ganttlist->show();
|
|
}
|
|
|
|
|
|
/// Hide list view.
|
|
/*
|
|
*
|
|
*/
|
|
void hideList() {
|
|
_ganttlist->hide();
|
|
}
|
|
|
|
|
|
protected:
|
|
|
|
|
|
void resizeEvent(TQResizeEvent* /*e*/) {
|
|
_splitter->resize(width(),height());
|
|
};
|
|
|
|
|
|
private:
|
|
|
|
KGanttItem* _toplevelitem;
|
|
|
|
TQSplitter *_splitter;
|
|
|
|
xQGanttBarView* _ganttbar;
|
|
xQGanttListView* _ganttlist;
|
|
|
|
bool _deleteItem;
|
|
|
|
};
|
|
|
|
|
|
#endif
|