File indexing completed on 2024-04-28 16:24:34
0001 /* This file is part of the KDE project 0002 Copyright (C) 2004, 2007 Dag Andersen <danders@get2net.dk> 0003 Copyright (C) 2011, 2012 Dag Andersen <danders@get2net.dk> 0004 Copyright (C) 2019 Dag Andersen <danders@get2net.dk> 0005 0006 This library is free software; you can redistribute it and/or 0007 modify it under the terms of the GNU Library General Public 0008 License as published by the Free Software Foundation; either 0009 version 2 of the License, or (at your option) any later version. 0010 0011 This library is distributed in the hope that it will be useful, 0012 but WITHOUT ANY WARRANTY; without even the implied warranty of 0013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0014 Library General Public License for more details. 0015 0016 You should have received a copy of the GNU Library General Public License 0017 along with this library; see the file COPYING.LIB. If not, write to 0018 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 0019 * Boston, MA 02110-1301, USA. 0020 */ 0021 0022 // clazy:excludeall=qstring-arg 0023 #include "kptconfig.h" 0024 0025 #include "calligraplansettings.h" 0026 #include "kptconfigskeleton.h" 0027 #include "kptfactory.h" 0028 #include "kptproject.h" 0029 #include "kptdebug.h" 0030 0031 #include <QBrush> 0032 0033 0034 namespace KPlato 0035 { 0036 0037 Config::Config() 0038 : ConfigBase() 0039 { 0040 debugPlan<<"Leader:"<<KPlatoSettings::leader(); 0041 } 0042 0043 Config::~Config() 0044 { 0045 } 0046 0047 void Config::readConfig() 0048 { 0049 } 0050 void Config::saveSettings() 0051 { 0052 if (! m_readWrite) { 0053 return; 0054 } 0055 KPlatoSettings::self()->save(); 0056 } 0057 0058 bool Config::isWorkingday(int day) const 0059 { 0060 switch (day) { 0061 case Qt::Monday: return KPlatoSettings::monday(); break; 0062 case Qt::Tuesday: return KPlatoSettings::tuesday(); break; 0063 case Qt::Wednesday: return KPlatoSettings::wednesday(); break; 0064 case Qt::Thursday: return KPlatoSettings::thursday(); break; 0065 case Qt::Friday: return KPlatoSettings::friday(); break; 0066 case Qt::Saturday: return KPlatoSettings::saturday(); break; 0067 case Qt::Sunday: return KPlatoSettings::sunday(); break; 0068 default: break; 0069 }; 0070 return false; 0071 } 0072 QTime Config::dayStartTime(int day) const 0073 { 0074 switch (day) { 0075 case Qt::Monday: return QTime::fromString(KPlatoSettings::mondayStart()); break; 0076 case Qt::Tuesday: return QTime::fromString(KPlatoSettings::tuesdayStart()); break; 0077 case Qt::Wednesday: return QTime::fromString(KPlatoSettings::wednesdayStart()); break; 0078 case Qt::Thursday: return QTime::fromString(KPlatoSettings::thursdayStart()); break; 0079 case Qt::Friday: return QTime::fromString(KPlatoSettings::fridayStart()); break; 0080 case Qt::Saturday: return QTime::fromString(KPlatoSettings::saturdayStart()); break; 0081 case Qt::Sunday: return QTime::fromString(KPlatoSettings::sundayStart()); break; 0082 default: break; 0083 }; 0084 return QTime(); 0085 0086 } 0087 0088 int Config::dayLength(int day) const 0089 { 0090 QTime start = dayStartTime(day); 0091 QTime end; 0092 int value = 0; 0093 switch (day) { 0094 case Qt::Monday: 0095 end = QTime::fromString(KPlatoSettings::mondayEnd()); 0096 break; 0097 case Qt::Tuesday: 0098 end = QTime::fromString(KPlatoSettings::tuesdayEnd()); 0099 break; 0100 case Qt::Wednesday: 0101 end = QTime::fromString(KPlatoSettings::wednesdayEnd()); 0102 break; 0103 case Qt::Thursday: 0104 end = QTime::fromString(KPlatoSettings::thursdayEnd()); 0105 break; 0106 case Qt::Friday: 0107 end = QTime::fromString(KPlatoSettings::fridayEnd()); 0108 break; 0109 case Qt::Saturday: 0110 end = QTime::fromString(KPlatoSettings::saturdayEnd()); 0111 break; 0112 case Qt::Sunday: 0113 end = QTime::fromString(KPlatoSettings::sundayEnd()); 0114 break; 0115 default: break; 0116 }; 0117 value = start.msecsTo(end); 0118 if (value < 0) { 0119 value = (24*60*60*1000) + value; 0120 } else if (value == 0 && start == QTime(0, 0)) { 0121 value = 24*60*60*1000; 0122 } 0123 return value; 0124 0125 } 0126 0127 0128 void Config::setDefaultValues(Project &project) const 0129 { 0130 project.setLeader(KPlatoSettings::manager()); 0131 project.setUseSharedResources(KPlatoSettings::useSharedResources()); 0132 project.setSharedResourcesFile(KPlatoSettings::sharedResourcesFile()); 0133 project.setSharedProjectsUrl(QUrl(KPlatoSettings::sharedProjectsPlace())); 0134 project.setDescription(KPlatoSettings::projectDescription()); 0135 0136 StandardWorktime *v = project.standardWorktime(); 0137 Q_ASSERT(v); 0138 if (v) { 0139 v->setYear(KPlatoSettings::hoursPrYear()); 0140 v->setMonth(KPlatoSettings::hoursPrMonth()); 0141 v->setWeek(KPlatoSettings::hoursPrWeek()); 0142 v->setDay(KPlatoSettings::hoursPrDay()); 0143 } 0144 0145 Project::WorkPackageInfo wpi; 0146 wpi.checkForWorkPackages = KPlatoSettings::checkForWorkPackages(); 0147 wpi.retrieveUrl = KPlatoSettings::retrieveUrl(); 0148 wpi.deleteAfterRetrieval = KPlatoSettings::deleteFile(); 0149 wpi.archiveAfterRetrieval = !KPlatoSettings::deleteFile(); 0150 wpi.archiveUrl = KPlatoSettings::saveUrl(); 0151 #if 0 // not used atm 0152 wpi.publishUrl = KPlatoSettings::publishUrl(); 0153 #endif 0154 project.setWorkPackageInfo(wpi); 0155 0156 QList<QUrl> urls; 0157 for (const QString &s : taskModulePaths()) { 0158 urls << QUrl::fromUserInput(s); 0159 } 0160 project.setTaskModules(urls, useLocalTaskModules()); 0161 } 0162 0163 void Config::setDefaultValues(Task &task) 0164 { 0165 task.setLeader(KPlatoSettings::leader()); 0166 task.setDescription(KPlatoSettings::description()); 0167 task.setConstraint((Node::ConstraintType) KPlatoSettings::constraintType()); 0168 0169 // avoid problems with start <= end & end >= start 0170 task.setConstraintStartTime(DateTime()); 0171 task.setConstraintEndTime(DateTime()); 0172 switch (KPlatoSettings::startTimeUsage()) { 0173 case KPlatoSettings::EnumStartTimeUsage::CurrentdateTime: 0174 task.setConstraintStartTime(DateTime(QDateTime::currentDateTime())); 0175 break; 0176 case KPlatoSettings::EnumStartTimeUsage::CurrentDate: 0177 task.setConstraintStartTime(DateTime(QDate::currentDate(), KPlatoSettings::constraintStartTime().time())); 0178 break; 0179 case KPlatoSettings::EnumStartTimeUsage::SpecifiedDateTime: //fall through 0180 default: 0181 task.setConstraintStartTime(DateTime(KPlatoSettings::constraintStartTime())); 0182 break; 0183 } 0184 switch (KPlatoSettings::endTimeUsage()) { 0185 case KPlatoSettings::EnumEndTimeUsage::CurrentdateTime: 0186 task.setConstraintEndTime(DateTime(QDateTime::currentDateTime())); 0187 break; 0188 case KPlatoSettings::EnumEndTimeUsage::CurrentDate: 0189 task.setConstraintEndTime(DateTime(QDate::currentDate(), KPlatoSettings::constraintEndTime().time())); 0190 break; 0191 case KPlatoSettings::EnumEndTimeUsage::SpecifiedDateTime: //fall through 0192 default: 0193 task.setConstraintEndTime(DateTime(KPlatoSettings::constraintEndTime())); 0194 break; 0195 } 0196 0197 task.estimate()->setType((Estimate::Type) KPlatoSettings::estimateType()); 0198 task.estimate()->setUnit((Duration::Unit) KPlatoSettings::unit()); 0199 task.estimate()->setExpectedEstimate(KPlatoSettings::expectedEstimate()); 0200 task.estimate()->setPessimisticRatio(KPlatoSettings::pessimisticRatio()); 0201 task.estimate()->setOptimisticRatio(KPlatoSettings::optimisticRatio()); 0202 } 0203 0204 int Config::minimumDurationUnit() const 0205 { 0206 return KPlatoSettings::minimumDurationUnit(); 0207 } 0208 0209 int Config::maximumDurationUnit() const 0210 { 0211 return KPlatoSettings::maximumDurationUnit(); 0212 } 0213 0214 QBrush Config::summaryTaskDefaultColor() const 0215 { 0216 QColor c = KPlatoSettings::summaryTaskDefaultColor(); 0217 if (KPlatoSettings::colorGradientType() == KPlatoSettings::EnumColorGradientType::Linear) { 0218 return gradientBrush(c); 0219 } 0220 return c; 0221 } 0222 0223 bool Config::summaryTaskLevelColorsEnabled() const 0224 { 0225 return KPlatoSettings::summaryTaskLevelColorsEnabled(); 0226 } 0227 0228 QBrush Config::summaryTaskLevelColor_1() const 0229 { 0230 QColor c = KPlatoSettings::summaryTaskLevelColor_1(); 0231 if (KPlatoSettings::colorGradientType() == KPlatoSettings::EnumColorGradientType::Linear) { 0232 return gradientBrush(c); 0233 } 0234 return c; 0235 } 0236 0237 QBrush Config::summaryTaskLevelColor_2() const 0238 { 0239 QColor c = KPlatoSettings::summaryTaskLevelColor_2(); 0240 if (KPlatoSettings::colorGradientType() == KPlatoSettings::EnumColorGradientType::Linear) { 0241 return gradientBrush(c); 0242 } 0243 return c; 0244 } 0245 0246 QBrush Config::summaryTaskLevelColor_3() const 0247 { 0248 QColor c = KPlatoSettings::summaryTaskLevelColor_3(); 0249 if (KPlatoSettings::colorGradientType() == KPlatoSettings::EnumColorGradientType::Linear) { 0250 return gradientBrush(c); 0251 } 0252 return c; 0253 } 0254 0255 QBrush Config::summaryTaskLevelColor_4() const 0256 { 0257 QColor c = KPlatoSettings::summaryTaskLevelColor_4(); 0258 if (KPlatoSettings::colorGradientType() == KPlatoSettings::EnumColorGradientType::Linear) { 0259 return gradientBrush(c); 0260 } 0261 return c; 0262 } 0263 0264 QBrush Config::taskNormalColor() const 0265 { 0266 QColor c = KPlatoSettings::taskNormalColor(); 0267 if (KPlatoSettings::colorGradientType() == KPlatoSettings::EnumColorGradientType::Linear) { 0268 return gradientBrush(c); 0269 } 0270 return c; 0271 } 0272 0273 QBrush Config::taskErrorColor() const 0274 { 0275 QColor c = KPlatoSettings::taskErrorColor(); 0276 if (KPlatoSettings::colorGradientType() == KPlatoSettings::EnumColorGradientType::Linear) { 0277 return gradientBrush(c); 0278 } 0279 return c; 0280 } 0281 0282 QBrush Config::taskCriticalColor() const 0283 { 0284 QColor c = KPlatoSettings::taskCriticalColor(); 0285 if (KPlatoSettings::colorGradientType() == KPlatoSettings::EnumColorGradientType::Linear) { 0286 return gradientBrush(c); 0287 } 0288 return c; 0289 } 0290 0291 QBrush Config::taskFinishedColor() const 0292 { 0293 QColor c = KPlatoSettings::taskFinishedColor(); 0294 if (KPlatoSettings::colorGradientType() == KPlatoSettings::EnumColorGradientType::Linear) { 0295 return gradientBrush(c); 0296 } 0297 return c; 0298 } 0299 0300 QBrush Config::milestoneNormalColor() const 0301 { 0302 QColor c = KPlatoSettings::milestoneNormalColor(); 0303 if (KPlatoSettings::colorGradientType() == KPlatoSettings::EnumColorGradientType::Linear) { 0304 return gradientBrush(c); 0305 } 0306 return c; 0307 } 0308 0309 QBrush Config::milestoneErrorColor() const 0310 { 0311 QColor c = KPlatoSettings::milestoneErrorColor(); 0312 if (KPlatoSettings::colorGradientType() == KPlatoSettings::EnumColorGradientType::Linear) { 0313 return gradientBrush(c); 0314 } 0315 return c; 0316 } 0317 0318 QBrush Config::milestoneCriticalColor() const 0319 { 0320 QColor c = KPlatoSettings::milestoneCriticalColor(); 0321 if (KPlatoSettings::colorGradientType() == KPlatoSettings::EnumColorGradientType::Linear) { 0322 return gradientBrush(c); 0323 } 0324 return c; 0325 } 0326 0327 QBrush Config::milestoneFinishedColor() const 0328 { 0329 QColor c = KPlatoSettings::milestoneFinishedColor(); 0330 if (KPlatoSettings::colorGradientType() == KPlatoSettings::EnumColorGradientType::Linear) { 0331 return gradientBrush(c); 0332 } 0333 return c; 0334 } 0335 0336 QString Config::documentationPath() const 0337 { 0338 return KPlatoSettings::documentationPath(); 0339 } 0340 0341 QString Config::contextPath() const 0342 { 0343 return KPlatoSettings::contextPath(); 0344 } 0345 0346 QString Config::contextLanguage() const 0347 { 0348 return KPlatoSettings::contextLanguage(); 0349 } 0350 0351 bool Config::useLocalTaskModules() const 0352 { 0353 return KPlatoSettings::useLocalTaskModules(); 0354 } 0355 0356 QStringList Config::taskModulePaths() const 0357 { 0358 return KPlatoSettings::taskModulePaths(); 0359 } 0360 0361 QStringList Config::projectTemplatePaths() const 0362 { 0363 return KPlatoSettings::projectTemplatePaths(); 0364 } 0365 0366 } //KPlato namespace