slackware-current/source/kde/patch/calligra/0066-Backport-Plan-Do-not-crash-if-scheduler-plugins-not-.patch

139 lines
6.2 KiB
Diff
Raw Normal View History

From 4d9762cd151b7d6a208aece8cebcdbe09bd41703 Mon Sep 17 00:00:00 2001
From: Dag Andersen <danders@get2net.dk>
Date: Mon, 22 Aug 2016 09:15:32 +0200
Subject: [PATCH 66/80] Backport: Plan: Do not crash if scheduler plugins not
found
Shouldn't happen atm, but...
---
plan/libs/models/kptschedulemodel.cpp | 69 ++++++++++++++++++++++-------------
1 file changed, 43 insertions(+), 26 deletions(-)
diff --git a/plan/libs/models/kptschedulemodel.cpp b/plan/libs/models/kptschedulemodel.cpp
index 35b74bc..e3ce298 100644
--- a/plan/libs/models/kptschedulemodel.cpp
+++ b/plan/libs/models/kptschedulemodel.cpp
@@ -252,9 +252,16 @@ Qt::ItemFlags ScheduleItemModel::flags( const QModelIndex &index ) const
if ( !m_readWrite ) {
return flags &= ~Qt::ItemIsEditable;
}
- flags &= ~Qt::ItemIsEditable;
ScheduleManager *sm = manager( index );
- int capabilities = sm->schedulerPlugin()->capabilities();
+ if ( sm == 0 ) {
+ return flags;
+ }
+ SchedulerPlugin *pl = sm->schedulerPlugin();
+ if ( pl == 0 ) {
+ return flags;
+ }
+ int capabilities = pl->capabilities();
+ flags &= ~Qt::ItemIsEditable;
if ( sm && ! sm->isBaselined() ) {
switch ( index.column() ) {
case ScheduleModel::ScheduleState: break;
@@ -452,7 +459,11 @@ QVariant ScheduleItemModel::allowOverbooking( const QModelIndex &index, int role
if ( sm == 0 ) {
return QVariant();
}
- int capabilities = sm->schedulerPlugin()->capabilities();
+ SchedulerPlugin *pl = sm->schedulerPlugin();
+ if ( pl == 0 ) {
+ return QVariant();
+ }
+ int capabilities = pl->capabilities();
switch ( role ) {
case Qt::EditRole:
return sm->allowOverbooking();
@@ -480,11 +491,11 @@ QVariant ScheduleItemModel::allowOverbooking( const QModelIndex &index, int role
if ( capabilities & SchedulerPlugin::AllowOverbooking ) {
return sm->allowOverbooking()
? i18nc( "@info:tooltip", "Allow overbooking of resources" )
- : i18nc( "@info:tooltip 1=scheduler name", "%1 always allows overbooking of resources", sm->schedulerPlugin()->name() );
+ : i18nc( "@info:tooltip 1=scheduler name", "%1 always allows overbooking of resources", pl->name() );
}
if ( capabilities & SchedulerPlugin::AvoidOverbooking ) {
return sm->allowOverbooking()
- ? i18nc( "@info:tooltip 1=scheduler name", "%1 always avoids overbooking of resources", sm->schedulerPlugin()->name() )
+ ? i18nc( "@info:tooltip 1=scheduler name", "%1 always avoids overbooking of resources", pl->name() )
: i18nc( "@info:tooltip", "Avoid overbooking resources" );
}
break;
@@ -637,7 +648,11 @@ QVariant ScheduleItemModel::schedulingDirection( const QModelIndex &index, int r
if ( sm == 0 ) {
return QVariant();
}
- int capabilities = sm->schedulerPlugin()->capabilities();
+ SchedulerPlugin *pl = sm->schedulerPlugin();
+ if ( pl == 0 ) {
+ return QVariant();
+ }
+ int capabilities = pl->capabilities();
switch ( role ) {
case Qt::EditRole:
return sm->schedulingDirection();
@@ -664,13 +679,13 @@ QVariant ScheduleItemModel::schedulingDirection( const QModelIndex &index, int r
}
if ( capabilities & SchedulerPlugin::ScheduleForward ) {
return sm->schedulingDirection()
- ? i18nc( "@info:tooltip 1=scheduler name", "%1 always schedules from target start time", sm->schedulerPlugin()->name() )
+ ? i18nc( "@info:tooltip 1=scheduler name", "%1 always schedules from target start time", pl->name() )
: i18nc( "@info:tooltip", "Schedule project from target start time" );
}
if ( capabilities & SchedulerPlugin::ScheduleBackward ) {
return sm->schedulingDirection()
? i18nc( "@info:tooltip", "Schedule project from target end time" )
- : i18nc( "@info:tooltip 1=scheduler name", "%1 always schedules from target end time", sm->schedulerPlugin()->name() );
+ : i18nc( "@info:tooltip 1=scheduler name", "%1 always schedules from target end time", pl->name() );
}
break;
case Role::EnumList:
@@ -708,24 +723,26 @@ QVariant ScheduleItemModel::scheduler( const QModelIndex &index, int role ) cons
return QVariant();
}
SchedulerPlugin *pl = sm->schedulerPlugin();
- switch ( role ) {
- case Qt::EditRole:
- return sm->schedulerPluginId();
- case Qt::DisplayRole:
- return pl ? pl->name() : i18n( "Unknown" );
- case Qt::ToolTipRole:
- return pl ? pl->comment() : QString();
- case Role::EnumList:
- return sm->schedulerPluginNames();
- case Role::EnumListValue:
- return sm->schedulerPluginIndex();
- case Qt::TextAlignmentRole:
- return Qt::AlignCenter;
- case Qt::StatusTipRole:
- return QVariant();
- case Qt::WhatsThisRole: {
- QString s = pl->description();
- return s.isEmpty() ? QVariant() : QVariant( s );
+ if ( pl ) {
+ switch ( role ) {
+ case Qt::EditRole:
+ return sm->schedulerPluginId();
+ case Qt::DisplayRole:
+ return pl ? pl->name() : i18n( "Unknown" );
+ case Qt::ToolTipRole:
+ return pl ? pl->comment() : QString();
+ case Role::EnumList:
+ return sm->schedulerPluginNames();
+ case Role::EnumListValue:
+ return sm->schedulerPluginIndex();
+ case Qt::TextAlignmentRole:
+ return Qt::AlignCenter;
+ case Qt::StatusTipRole:
+ return QVariant();
+ case Qt::WhatsThisRole: {
+ QString s = pl->description();
+ return s.isEmpty() ? QVariant() : QVariant( s );
+ }
}
}
return QVariant();
--
2.7.4