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