[prev in list] [next in list] [prev in thread] [next in thread]
List: koffice-devel
Subject: kplato: critical bugs, ok to commit?
From: Dag Andersen <danders () get2net ! dk>
Date: 2009-10-24 12:30:25
Message-ID: 200910241430.26017.danders () get2net ! dk
[Download RAW message or body]
Hi, just found 2 bugs in kplato:
* Crash when adding tasks from dependency editor.
* Sometimes it is impossible to add dependencies because readwrite mode is not
properly updated.
Attatched patch fixes both, ok to commit?
--
Mvh.
Dag Andersen
["depcrash.diff" (text/x-patch)]
Index: libs/ui/kpttaskdialog.cpp
===================================================================
--- libs/ui/kpttaskdialog.cpp (revision 1039656)
+++ libs/ui/kpttaskdialog.cpp (working copy)
@@ -34,7 +34,7 @@
namespace KPlato
{
-TaskDialog::TaskDialog(Task &task, Accounts &accounts, QWidget *p)
+TaskDialog::TaskDialog( Project &project, Task &task, Accounts &accounts, QWidget \
*p) : KPageDialog(p)
{
setCaption( i18n("Task Settings") );
@@ -47,11 +47,11 @@
// Create all the tabs.
page = new KVBox();
addPage(page, i18n("&General"));
- m_generalTab = new TaskGeneralPanel(task, page);
+ m_generalTab = new TaskGeneralPanel(project, task, page);
page = new KVBox();
addPage(page, i18n("&Resources"));
- m_resourcesTab = new RequestResourcesPanel(page, task);
+ m_resourcesTab = new RequestResourcesPanel(page, project, task);
page = new KVBox();
addPage(page, i18n("&Documents"));
@@ -127,8 +127,8 @@
}
//---------------------------
-TaskAddDialog::TaskAddDialog(Task &task, Accounts &accounts, QWidget *p)
- : TaskDialog(task, accounts, p)
+TaskAddDialog::TaskAddDialog(Project &project, Task &task, Accounts &accounts, \
QWidget *p) + : TaskDialog(project, task, accounts, p)
{
// do not know wbs code yet
m_generalTab->hideWbs();
Index: libs/ui/kptdependencyeditor.cpp
===================================================================
--- libs/ui/kptdependencyeditor.cpp (revision 1039656)
+++ libs/ui/kptdependencyeditor.cpp (working copy)
@@ -461,7 +461,7 @@
void DependencyConnectorItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
- //qDebug()<<"DependencyConnectorItem::mousePressEvent:"<<node()->name();
+ //qDebug()<<"DependencyConnectorItem::mousePressEvent:"<<node()->name()<<isEditable();
if ( ! isEditable() ) {
event->ignore();
return;
@@ -799,7 +799,7 @@
void DependencyNodeItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
- //kDebug();
+ kDebug();
QGraphicsItem::GraphicsItemFlags f = flags();
if ( itemScene()->connectionMode() ) {
itemScene()->clearConnection();
@@ -931,7 +931,8 @@
//--------------------
DependencyScene::DependencyScene( QWidget *parent )
: QGraphicsScene( parent ),
- m_model( 0 )
+ m_model( 0 ),
+ m_readwrite( false )
{
m_connectionitem = new DependencyCreatorItem();
addItem( m_connectionitem );
@@ -1167,6 +1168,9 @@
if ( item->scene() != this ) {
addItem( item );
}
+ item->setEditable( m_readwrite );
+ item->startConnector()->setEditable( m_readwrite );
+ item->finishConnector()->setEditable( m_readwrite );
//kDebug()<<item->text()<<item;
int col = item->nodeLevel();
if ( parent ) {
@@ -1274,6 +1278,7 @@
return;
}
DependencyLinkItem *dep = new DependencyLinkItem( parent, child, rel );
+ dep->setEditable( m_readwrite );
addItem( dep );
//kDebug();
dep->createPath();
@@ -1555,6 +1560,7 @@
void DependencyScene::setReadWrite( bool on )
{
+ m_readwrite = on;
foreach ( QGraphicsItem *i, items() ) {
if ( i->type() == DependencyConnectorItem::Type ) {
static_cast<DependencyConnectorItem*>( i )->setEditable( on );
@@ -1871,6 +1877,7 @@
void DependencyEditor::updateReadWrite( bool on )
{
+ qDebug()<<"DependencyEditor::updateReadWrite:"<<on;
m_view->itemScene()->setReadWrite( on );
ViewBase::updateReadWrite( on );
}
Index: libs/ui/kpttaskdialog.h
===================================================================
--- libs/ui/kpttaskdialog.h (revision 1039656)
+++ libs/ui/kpttaskdialog.h (working copy)
@@ -36,6 +36,7 @@
class TaskCostPanel;
class TaskDescriptionPanel;
class Task;
+class Project;
class StandardWorktime;
class MacroCommand;
class RequestResourcesPanel;
@@ -52,7 +53,7 @@
* @param accounts all defined accounts
* @param parent parent widget
*/
- TaskDialog(Task &task, Accounts &accounts, QWidget *parent=0);
+ TaskDialog(Project &project, Task &task, Accounts &accounts, QWidget *parent=0);
MacroCommand *buildCommand();
@@ -70,7 +71,7 @@
class KPLATOUI_EXPORT TaskAddDialog : public TaskDialog {
Q_OBJECT
public:
- TaskAddDialog(Task &task, Accounts &accounts, QWidget *parent=0);
+ TaskAddDialog(Project &project, Task &task, Accounts &accounts, QWidget \
*parent=0); };
} //KPlato namespace
Index: libs/ui/kptdependencyeditor.h
===================================================================
--- libs/ui/kptdependencyeditor.h (revision 1039656)
+++ libs/ui/kptdependencyeditor.h (working copy)
@@ -391,6 +391,7 @@
private:
Project *m_project;
NodeItemModel *m_model;
+ bool m_readwrite;
QList<DependencyNodeItem*> m_allItems;
QMap<int, DependencyNodeItem*> m_visibleItems;
QMap<int, DependencyNodeItem*> m_hiddenItems;
Index: libs/ui/kptrequestresourcespanel.cpp
===================================================================
--- libs/ui/kptrequestresourcespanel.cpp (revision 1039656)
+++ libs/ui/kptrequestresourcespanel.cpp (working copy)
@@ -34,7 +34,7 @@
namespace KPlato
{
-RequestResourcesPanel::RequestResourcesPanel(QWidget *parent, Task &task, bool)
+RequestResourcesPanel::RequestResourcesPanel(QWidget *parent, Project &project, Task \
&task, bool) : QWidget(parent)
{
QVBoxLayout *l = new QVBoxLayout( this );
@@ -43,7 +43,7 @@
m_view->masterView()->header()->moveSection( \
ResourceAllocationModel::RequestType, m_view->masterView()->header()->count() - 1 ); \
m_view->setReadWrite( true ); l->addWidget( m_view );
- m_view->setProject( static_cast<Project*>( task.projectNode() ) );
+ m_view->setProject( &project );
m_view->setTask( &task );
m_view->masterView()->header()->resizeSections( QHeaderView::ResizeToContents );
Index: libs/ui/kpttaskgeneralpanel.h
===================================================================
--- libs/ui/kpttaskgeneralpanel.h (revision 1039656)
+++ libs/ui/kpttaskgeneralpanel.h (working copy)
@@ -99,7 +99,7 @@
class TaskGeneralPanel : public TaskGeneralPanelImpl {
Q_OBJECT
public:
- explicit TaskGeneralPanel(Task &task, QWidget *parent=0, const char *name=0);
+ explicit TaskGeneralPanel(Project &project, Task &task, QWidget *parent=0, const \
char *name=0);
MacroCommand *buildCommand();
Index: libs/ui/kptrequestresourcespanel.h
===================================================================
--- libs/ui/kptrequestresourcespanel.h (revision 1039656)
+++ libs/ui/kptrequestresourcespanel.h (working copy)
@@ -30,6 +30,7 @@
{
class Task;
+class Project;
class ResourceGroup;
class Resource;
class ResourceGroupRequest;
@@ -41,7 +42,7 @@
{
Q_OBJECT
public:
- RequestResourcesPanel(QWidget *parent, Task &task, bool baseline=false);
+ RequestResourcesPanel(QWidget *parent, Project &project, Task &task, bool \
baseline=false);
MacroCommand *buildCommand();
Index: libs/ui/kpttaskgeneralpanel.cpp
===================================================================
--- libs/ui/kpttaskgeneralpanel.cpp (revision 1039656)
+++ libs/ui/kpttaskgeneralpanel.cpp (working copy)
@@ -46,10 +46,10 @@
namespace KPlato
{
-TaskGeneralPanel::TaskGeneralPanel(Task &task, QWidget *p, const char *n)
+TaskGeneralPanel::TaskGeneralPanel(Project &project, Task &task, QWidget *p, const \
char *n) : TaskGeneralPanelImpl(p, n),
m_task(task),
- m_project( static_cast<Project&>( *(task.projectNode()) ) )
+ m_project( project )
{
useTime = true;
setStartValues( task );
Index: kptview.cpp
===================================================================
--- kptview.cpp (revision 1039656)
+++ kptview.cpp (working copy)
@@ -1536,9 +1536,9 @@
// do is to add a first project. We will silently accept the challenge
// and will not complain.
Task * node = getProject().createTask( getPart() ->config().taskDefaults(), \
currentTask() );
- TaskAddDialog *dia = new TaskAddDialog( *node, getProject().accounts(), this );
+ TaskAddDialog *dia = new TaskAddDialog( getProject(), *node, \
getProject().accounts(), this ); if ( dia->exec() == QDialog::Accepted) {
- Node * currNode = currentTask();
+ Node * currNode = currentNode();
if ( currNode ) {
QUndoCommand *m = dia->buildCommand();
m->redo(); // do changes to task
@@ -1557,9 +1557,9 @@
void View::slotAddTask()
{
Task * node = getProject().createTask( getPart() ->config().taskDefaults(), \
currentTask() );
- TaskAddDialog *dia = new TaskAddDialog( *node, getProject().accounts(), this );
+ TaskAddDialog *dia = new TaskAddDialog( getProject(), *node, \
getProject().accounts(), this ); if ( dia->exec() == QDialog::Accepted) {
- Node * currNode = currentTask();
+ Node * currNode = currentNode();
if ( currNode ) {
QUndoCommand * m = dia->buildCommand();
m->redo(); // do changes to task
@@ -1580,9 +1580,9 @@
Task * node = getProject().createTask( currentTask() );
node->estimate() ->clear();
- TaskAddDialog *dia = new TaskAddDialog( *node, getProject().accounts(), this );
+ TaskAddDialog *dia = new TaskAddDialog( getProject(), *node, \
getProject().accounts(), this ); if ( dia->exec() == QDialog::Accepted ) {
- Node * currNode = currentTask();
+ Node * currNode = currentNode();
if ( currNode ) {
QUndoCommand * m = dia->buildCommand();
m->redo(); // do changes to task
@@ -1724,7 +1724,7 @@
case Node::Type_Task: {
Task *task = dynamic_cast<Task *>( node );
Q_ASSERT( task );
- TaskDialog *dia = new TaskDialog( *task, getProject().accounts(), \
this ); + TaskDialog *dia = new TaskDialog( getProject(), *task, \
getProject().accounts(), this ); if ( dia->exec() == QDialog::Accepted) {
QUndoCommand * m = dia->buildCommand();
if ( m ) {
@@ -1741,7 +1741,7 @@
// and hence, create a milestone
Task *task = dynamic_cast<Task *>( node );
Q_ASSERT( task );
- TaskDialog *dia = new TaskDialog( *task, getProject().accounts(), \
this ); + TaskDialog *dia = new TaskDialog( getProject(), *task, \
getProject().accounts(), this ); if ( dia->exec() == QDialog::Accepted) {
QUndoCommand * m = dia->buildCommand();
if ( m ) {
_______________________________________________
koffice-devel mailing list
koffice-devel@kde.org
https://mail.kde.org/mailman/listinfo/koffice-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic