12#include "ui_koDocumentInfoAboutWidget.h"
13#include "ui_koDocumentInfoAuthorWidget.h"
19#include <kstandardguiitem.h>
22#include <klocalizedstring.h>
36 : KPageWidgetItem(item->widget(), item->name())
39 setHeader(item->
name());
60 Ui::KoDocumentInfoAboutWidget*
aboutUi {
nullptr};
61 Ui::KoDocumentInfoAuthorWidget*
authorUi {
nullptr};
73 setWindowTitle(i18n(
"Document Information"));
75 setFaceType(KPageDialog::List);
76 setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
77 button(QDialogButtonBox::Ok)->setDefault(
true);
78 KGuiItem::assign(
button(QDialogButtonBox::Ok), KStandardGuiItem::ok());
79 KGuiItem::assign(
button(QDialogButtonBox::Cancel), KStandardGuiItem::cancel());
81 d->
aboutUi =
new Ui::KoDocumentInfoAboutWidget();
82 QWidget *infodlg =
new QWidget();
85 licenseExamples <<
"CC-BY 4.0" <<
"CC-BY-SA 4.0" <<
"CC-BY-SA-NC 4.0" <<
"CC-0";
86 QCompleter *examples =
new QCompleter(licenseExamples);
87 examples->setCaseSensitivity(Qt::CaseInsensitive);
88 examples->setCompletionMode(QCompleter::PopupCompletion);
89 d->
aboutUi->leLicense->setCompleter(examples);
91 KPageWidgetItem *page =
new KPageWidgetItem(infodlg, i18n(
"General"));
92 page->setHeader(i18n(
"General"));
100 d->
aboutUi->filePathInfoLabel->setVisible(
false);
101 d->
aboutUi->filePathLabel->setVisible(
false);
102 d->
aboutUi->filePathSeparatorLine->setVisible(
false);
103 d->
aboutUi->lblTypeDesc->setVisible(
false);
104 d->
aboutUi->lblType->setVisible(
false);
111 d->
authorUi =
new Ui::KoDocumentInfoAuthorWidget();
112 QWidget *authordlg =
new QWidget();
114 page =
new KPageWidgetItem(authordlg, i18n(
"Author"));
115 page->setHeader(i18n(
"Last saved by"));
116 page->setIcon(
koIcon(
"user-identity"));
133 Q_FOREACH (KPageWidgetItem* item,
d->
pages) {
144 Q_FOREACH (KPageWidgetItem* item,
d->
pages) {
151 KPageDialog::accept();
170 d->
aboutUi->leKeywords->setToolTip(i18n(
"Use ';' (Example: Office;KDE;Calligra)"));
178 if (doc && !doc->
mimeType().isEmpty()) {
182 QDateTime t = QDateTime::fromString(
d->
info->
aboutInfo(
"creation-date"),
184 QString s = QLocale().toString(t);
185 d->
aboutUi->lblCreated->setText(s +
", " +
190 QDateTime t = QDateTime::fromString(
d->
info->
aboutInfo(
"date"), Qt::ISODate);
191 QString s = QLocale().toString(t);
212 QListWidget *contact =
d->
authorUi->leContact;
214 if (!contactMode.isEmpty()) {
215 contact->addItem(contactMode);
239 QDateTime t = QDateTime::fromString(
d->
info->
aboutInfo(
"creation-date"),
241 QString s = QLocale().toString(t);
242 d->
aboutUi->lblCreated->setText(s +
", " +
247 QDateTime t = QDateTime::fromString(
d->
info->
aboutInfo(
"date"), Qt::ISODate);
248 QString s = QLocale().toString(t);
262 d->
aboutUi->meDescription->setReadOnly(ro);
264 Q_FOREACH(KPageWidgetItem* page,
d->
pages) {
265 Q_FOREACH(QLineEdit* le, page->widget()->findChildren<QLineEdit *>()) {
268 Q_FOREACH(QPushButton* le, page->widget()->findChildren<QPushButton *>()) {
284 const int timeElapsed =
d->
info->
aboutInfo(
"editing-time").toInt();
286 const int secondsElapsed = timeElapsed % 60;
287 const int minutesElapsed = (timeElapsed / 60) % 60;
288 const int hoursElapsed = (timeElapsed / 3600) % 24;
289 const int daysElapsed = (timeElapsed / 86400) % 7;
290 const int weeksElapsed = timeElapsed / 604800;
292 QString majorTimeUnit;
293 QString minorTimeUnit;
295 if (weeksElapsed > 0) {
296 majorTimeUnit = i18np(
"%1 week",
"%1 weeks", weeksElapsed);
297 minorTimeUnit = i18np(
"%1 day",
"%1 days", daysElapsed);
298 }
else if (daysElapsed > 0) {
299 majorTimeUnit = i18np(
"%1 day",
"%1 days", daysElapsed);
300 minorTimeUnit = i18np(
"%1 hour",
"%1 hours", hoursElapsed);
301 }
else if (hoursElapsed > 0) {
302 majorTimeUnit = i18np(
"%1 hour",
"%1 hours", hoursElapsed);
303 minorTimeUnit = i18np(
"%1 minute",
"%1 minutes", minutesElapsed);
304 }
else if (minutesElapsed > 0) {
305 majorTimeUnit = i18np(
"%1 minute",
"%1 minutes", minutesElapsed);
306 minorTimeUnit = i18np(
"%1 second",
"%1 seconds", secondsElapsed);
308 d->
aboutUi->lblEditing->setText(i18np(
"%1 second",
"%1 seconds", secondsElapsed));
312 d->
aboutUi->lblEditing->setText(i18nc(
313 "major time unit and minor time unit",
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
QString localFilePath() const
static QString iconNameForMimeType(const QString &mimeType)
The default icon name for the given mimetype.
static QString descriptionForMimeType(const QString &mimeType)
Find the user-readable description for the given mimetype.
Ui::KoDocumentInfoAuthorWidget * authorUi
KoDocumentInfoDlgPrivate()
Ui::KoDocumentInfoAboutWidget * aboutUi
~KoDocumentInfoDlgPrivate()
QList< KPageWidgetItem * > pages
void addPageItem(KoPageWidgetItem *item)
KoDocumentInfoDlg(QWidget *parent, KoDocumentInfo *docInfo)
void setReadOnly(bool ro)
void hideEvent(QHideEvent *event) override
KoDocumentInfoDlgPrivate *const d
QList< KPageWidgetItem * > pages() const
~KoDocumentInfoDlg() override
The class containing all meta information about a document.
void setAboutInfo(const QString &info, const QString &data)
QStringList authorContactInfo() const
authorContactInfo
QString authorInfo(const QString &info) const
QString aboutInfo(const QString &info) const
KoPageWidgetItem *const m_item
~KoPageWidgetItemAdapter() override
bool shouldDialogCloseBeVetoed()
KoPageWidgetItemAdapter(KoPageWidgetItem *item)
virtual QString iconName() const =0
virtual QString name() const =0
virtual bool shouldDialogCloseBeVetoed()=0
#define koIcon(name)
Use these macros for icons without any issues.
QString button(const QWheelEvent &ev)
QIcon loadIcon(const QString &name)