File indexing completed on 2024-05-12 05:10:36
0001 /****************************************************************************** 0002 * konsolekalendarchange.cpp * 0003 * * 0004 * KonsoleKalendar is a command line interface to KDE calendars * 0005 * SPDX-FileCopyrightText: 2002-2004 Tuukka Pasanen <illuusio@mailcity.com> * 0006 * SPDX-FileCopyrightText: 2003-2005 Allen Winter <winter@kde.org> * 0007 * * 0008 * SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0 * 0009 * * 0010 ******************************************************************************/ 0011 /** 0012 * @file konsolekalendarchange.cpp 0013 * Provides the KonsoleKalendarChange class definition. 0014 * @author Tuukka Pasanen 0015 * @author Allen Winter 0016 */ 0017 #include "konsolekalendarchange.h" 0018 0019 #include "konsolekalendar_debug.h" 0020 #include <KLocalizedString> 0021 0022 #include <QElapsedTimer> 0023 #include <QEventLoop> 0024 0025 #include <cstdlib> 0026 #include <iostream> 0027 0028 using namespace KCalendarCore; 0029 using namespace std; 0030 0031 KonsoleKalendarChange::KonsoleKalendarChange(KonsoleKalendarVariables *vars) 0032 { 0033 m_variables = vars; 0034 } 0035 0036 KonsoleKalendarChange::~KonsoleKalendarChange() = default; 0037 0038 bool KonsoleKalendarChange::changeEvent() 0039 { 0040 bool status = false; 0041 0042 qCDebug(KONSOLEKALENDAR_LOG) << "konsolekalendarchange.cpp::changeEvent()"; 0043 0044 /* 0045 * Retrieve event on the basis of the unique string ID 0046 */ 0047 Event::Ptr event = m_variables->getCalendar()->event(m_variables->getUID()); 0048 if (event) { 0049 if (m_variables->isDryRun()) { 0050 cout << i18n("Change Event <Dry Run>:").toLocal8Bit().data() << endl; 0051 printSpecs(event); 0052 0053 cout << i18n("To Event <Dry Run>:").toLocal8Bit().data() << endl; 0054 printSpecs(); 0055 } else { 0056 qCDebug(KONSOLEKALENDAR_LOG) << "konsolekalendarchange.cpp:changeEvent() :" << m_variables->getUID().toLocal8Bit().data(); 0057 0058 if (m_variables->isVerbose()) { 0059 cout << i18n("Change Event <Verbose>:").toLocal8Bit().data() << endl; 0060 printSpecs(event); 0061 0062 cout << i18n("To Event <Dry Run>:").toLocal8Bit().data() << endl; 0063 printSpecs(); 0064 } 0065 0066 event->startUpdates(); 0067 Akonadi::CalendarBase::Ptr calendar = m_variables->getCalendar(); 0068 const auto timeZone = calendar->timeZone(); 0069 if (m_variables->isStartDateTime()) { 0070 event->setDtStart(m_variables->getStartDateTime().toTimeZone(timeZone)); 0071 } 0072 0073 if (m_variables->isEndDateTime()) { 0074 event->setDtEnd(m_variables->getEndDateTime().toTimeZone(timeZone)); 0075 } 0076 0077 event->setAllDay(m_variables->getFloating()); 0078 0079 if (m_variables->isSummary()) { 0080 event->setSummary(m_variables->getSummary()); 0081 } 0082 0083 if (m_variables->isDescription()) { 0084 event->setDescription(m_variables->getDescription()); 0085 } 0086 0087 if (m_variables->isLocation()) { 0088 event->setLocation(m_variables->getLocation()); 0089 } 0090 event->endUpdates(); 0091 QEventLoop loop; 0092 QObject::connect(calendar.data(), &Akonadi::CalendarBase::modifyFinished, &loop, &QEventLoop::quit); 0093 QElapsedTimer t; 0094 t.start(); 0095 calendar->modifyIncidence(event); 0096 loop.exec(); 0097 0098 status = *event == *calendar->incidence(event->uid()); 0099 0100 if (status) { 0101 cout << i18n("Success: \"%1\" changed", event->summary()).toLocal8Bit().data() << endl; 0102 } else { 0103 cout << i18n("Failure: \"%1\" not changed", event->summary()).toLocal8Bit().data() << endl; 0104 } 0105 } 0106 } 0107 0108 qCDebug(KONSOLEKALENDAR_LOG) << "konsolekalendarchange.cpp::changeEvent() | Done"; 0109 return status; 0110 } 0111 0112 void KonsoleKalendarChange::printSpecs(const KCalendarCore::Event::Ptr &event) 0113 { 0114 cout << i18n(" UID: %1", event->uid()).toLocal8Bit().data() << endl; 0115 0116 cout << i18n(" What: %1", event->summary()).toLocal8Bit().data() << endl; 0117 0118 const auto timeZone = m_variables->getCalendar()->timeZone(); 0119 cout << i18n(" Begin: %1", event->dtStart().toTimeZone(timeZone).toString(Qt::TextDate)).toLocal8Bit().data() << endl; 0120 0121 cout << i18n(" End: %1", event->dtEnd().toTimeZone(timeZone).toString(Qt::TextDate)).toLocal8Bit().data() << endl; 0122 0123 cout << i18n(" Desc: %1", event->description()).toLocal8Bit().data() << endl; 0124 0125 cout << i18n(" Location: %1", event->location()).toLocal8Bit().data() << endl; 0126 } 0127 0128 void KonsoleKalendarChange::printSpecs() 0129 { 0130 cout << i18n(" UID: %1", m_variables->getUID()).toLocal8Bit().data() << endl; 0131 0132 cout << i18n(" What: %1", m_variables->getSummary()).toLocal8Bit().data() << endl; 0133 0134 cout << i18n(" Begin: %1", m_variables->getStartDateTime().toString(Qt::TextDate)).toLocal8Bit().data() << endl; 0135 0136 cout << i18n(" End: %1", m_variables->getEndDateTime().toString(Qt::TextDate)).toLocal8Bit().data() << endl; 0137 0138 cout << i18n(" Desc: %1", m_variables->getDescription()).toLocal8Bit().data() << endl; 0139 0140 cout << i18n(" Location: %1", m_variables->getLocation()).toLocal8Bit().data() << endl; 0141 }