13#include "journalframe.h"
16#include <Akonadi/CalendarUtils>
17#include <CalendarSupport/Utils>
19#include <KCalendarCore/Journal>
21#include <KCalUtils/IncidenceFormatter>
23#include "calendarview_debug.h"
24#include <KLocalizedString>
25#include <QTextBrowser>
28#include <QFontDatabase>
34JournalDateView::JournalDateView(
const Akonadi::CollectionCalendar::Ptr &calendar,
QWidget *parent)
39 layout->setContentsMargins({});
40 layout->setSpacing(0);
43JournalDateView::~JournalDateView() =
default;
45void JournalDateView::setDate(
QDate date)
48 Q_EMIT setDateSignal(date);
51void JournalDateView::clear()
61 if (
pos != mEntries.
end()) {
65 auto container =
new QWidget(
this);
69 auto entry =
new JournalFrame(j, mCalendar,
this);
74 entry->setDate(mDate);
75 entry->setIncidenceChanger(mChanger);
78 connect(
this, &JournalDateView::setIncidenceChangerSignal, entry, &JournalFrame::setIncidenceChanger);
79 connect(
this, &JournalDateView::setDateSignal, entry, &JournalFrame::setDate);
80 connect(entry, &JournalFrame::deleteIncidence,
this, &JournalDateView::deleteIncidence);
81 connect(entry, &JournalFrame::editIncidence,
this, &JournalDateView::editIncidence);
82 connect(entry, &JournalFrame::incidenceSelected,
this, &JournalDateView::incidenceSelected);
84 qOverload<const KCalendarCore::Journal::Ptr &, bool>(&JournalFrame::printJournal),
86 qOverload<const KCalendarCore::Journal::Ptr &, bool>(&JournalDateView::printJournal));
93 for (
const JournalFrame *
const i : std::as_const(mEntries)) {
99void JournalDateView::setIncidenceChanger(Akonadi::IncidenceChanger *changer)
102 Q_EMIT setIncidenceChangerSignal(changer);
105void JournalDateView::emitNewJournal()
110void JournalDateView::journalEdited(
const Akonadi::Item &journal)
113 if (
pos == mEntries.
end()) {
117 pos.value()->setJournal(journal);
120void JournalDateView::journalDeleted(
const Akonadi::Item &journal)
123 if (
pos == mEntries.
end()) {
131JournalFrame::JournalFrame(
const Akonadi::Item &j,
const Akonadi::CollectionCalendar::Ptr &calendar,
QWidget *parent)
134 , mCalendar(calendar)
137 mWriteInProgress =
false;
143 mBrowser->viewport()->installEventFilter(
this);
145 verticalLayout->addWidget(mBrowser);
148 verticalLayout->addLayout(buttonsLayout);
149 buttonsLayout->addStretch();
152 mEditButton->setObjectName(
"editButton"_L1);
153 mEditButton->setText(
i18n(
"&Edit"));
154 mEditButton->setIcon(
QIcon::fromTheme(QStringLiteral(
"document-properties")));
156 mEditButton->setToolTip(
i18nc(
"@info:tooltip",
"Edit this journal entry"));
157 mEditButton->setWhatsThis(
i18n(
"Opens an editor dialog for this journal entry"));
158 buttonsLayout->addWidget(mEditButton);
162 mDeleteButton->setObjectName(
"deleteButton"_L1);
163 mDeleteButton->setText(
i18n(
"&Delete"));
166 mDeleteButton->setToolTip(
i18nc(
"@info:tooltip",
"Delete this journal entry"));
167 mDeleteButton->setWhatsThis(
i18n(
"Delete this journal entry"));
168 buttonsLayout->addWidget(mDeleteButton);
172 mPrintButton->setText(
i18n(
"&Print"));
173 mPrintButton->setObjectName(
"printButton"_L1);
176 mPrintButton->setToolTip(
i18nc(
"@info:tooltip",
"Print this journal entry"));
177 mPrintButton->setWhatsThis(
i18n(
"Opens a print dialog for this journal entry"));
178 buttonsLayout->addWidget(mPrintButton);
182 mPrintPreviewButton->setText(
i18n(
"Print preview"));
183 mPrintPreviewButton->setObjectName(
"printButton"_L1);
184 mPrintPreviewButton->setIcon(
QIcon::fromTheme(QStringLiteral(
"document-print-preview")));
186 mPrintPreviewButton->setToolTip(
i18nc(
"@info:tooltip",
"Print preview this journal entry"));
187 buttonsLayout->addWidget(mPrintPreviewButton);
190 readJournal(mJournal);
194 setStyleSheet(QStringLiteral(
"QFrame { border: 1px solid; border-radius: 7px; } "));
195 mBrowser->setStyleSheet(QStringLiteral(
"QFrame { border: 0px solid white } "));
198JournalFrame::~JournalFrame() =
default;
200bool JournalFrame::eventFilter(
QObject *
object,
QEvent *event)
209 switch (
event->type()) {
211 Q_EMIT incidenceSelected(mJournal, mDate);
214 Q_EMIT editIncidence(mJournal);
223void JournalFrame::deleteItem()
225 if (CalendarSupport::hasJournal(mJournal)) {
226 Q_EMIT deleteIncidence(mJournal);
230void JournalFrame::editItem()
232 if (CalendarSupport::hasJournal(mJournal)) {
233 Q_EMIT editIncidence(mJournal);
237void JournalFrame::setCalendar(
const Akonadi::CollectionCalendar::Ptr &calendar)
239 mCalendar = calendar;
242void JournalFrame::setDate(
QDate date)
249 if (!CalendarSupport::hasJournal(journal)) {
254 readJournal(journal);
259void JournalFrame::setDirty()
262 qCDebug(CALENDARVIEW_LOG);
265void JournalFrame::printJournal()
270void JournalFrame::printPreviewJournal()
288 if (!
journal->summary().isEmpty()) {
301 cursor.setBlockCharFormat(bodyFormat);
303 if (
journal->descriptionIsRich()) {
318#include "moc_journalframe.cpp"
QString i18nc(const char *context, const char *text, const TYPE &arg...)
QString i18n(const char *text, const TYPE &arg...)
AKONADI_CALENDAR_EXPORT KCalendarCore::Journal::Ptr journal(const Akonadi::Item &item)
Namespace EventViews provides facilities for displaying incidences, including events,...
int pointSize() const const
QFont systemFont(SystemFont type)
virtual bool event(QEvent *e) override
QIcon fromTheme(const QString &name)
void push_back(parameter_type value)
void reserve(qsizetype size)
size_type count() const const
iterator find(const Key &key)
iterator insert(const Key &key, const T &value)
size_type remove(const Key &key)
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
void setTextIndent(qreal indent)
void setFontPointSize(qreal size)
void setFontWeight(int weight)
void ensureCursorVisible()
void insertHtml(const QString &text)
void insertPlainText(const QString &text)
void setTextCursor(const QTextCursor &cursor)
QTextCursor textCursor() const const
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)