okular/part/annotationpropertiesdialog.cpp
David Hurka 19d5dd8ec7 New part/ directory for okularpart sources from /, ui/, conf/
Source files are no longer separated by UI and non-UI and similar,
but only by their build target.

* ui/ -> part/
* Move all source files from conf/ to part/
* Keep config skeleton definitions in conf/, needed for the mobile target too
* Move editdrawingtooldialogtest.h from conf/autotests/ to autotests/
* ui/data/icons/ -> icons/
* Move /part.cpp, /part.rc and similar files to part/
* Adapt include paths in source files
* Adapt CMakeLists.txt files (in / and in subdirectories)
* Adapt /Messages.sh
2020-11-18 19:32:56 +00:00

181 lines
6.3 KiB
C++

/***************************************************************************
* Copyright (C) 2006 by Chu Xiaodong <xiaodongchu@gmail.com> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
***************************************************************************/
#include "annotationpropertiesdialog.h"
// qt/kde includes
#include <KLineEdit>
#include <KLocalizedString>
#include <QFormLayout>
#include <QFrame>
#include <QHeaderView>
#include <QIcon>
#include <QLabel>
#include <QLayout>
#include <QPushButton>
#include <QTextEdit>
// local includes
#include "annotationwidgets.h"
#include "core/annotations.h"
#include "core/document.h"
#include "core/page.h"
AnnotsPropertiesDialog::AnnotsPropertiesDialog(QWidget *parent, Okular::Document *document, int docpage, Okular::Annotation *ann)
: KPageDialog(parent)
, m_document(document)
, m_page(docpage)
, modified(false)
{
setFaceType(Tabbed);
m_annot = ann;
const bool canEditAnnotations = m_document->canModifyPageAnnotation(ann);
setCaptionTextbyAnnotType();
if (canEditAnnotations) {
setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Apply | QDialogButtonBox::Cancel);
button(QDialogButtonBox::Apply)->setEnabled(false);
connect(button(QDialogButtonBox::Apply), &QPushButton::clicked, this, &AnnotsPropertiesDialog::slotapply);
connect(button(QDialogButtonBox::Ok), &QPushButton::clicked, this, &AnnotsPropertiesDialog::slotapply);
} else {
setStandardButtons(QDialogButtonBox::Close);
button(QDialogButtonBox::Close)->setDefault(true);
}
m_annotWidget = AnnotationWidgetFactory::widgetFor(ann);
QLabel *tmplabel;
// 1. Appearance
// BEGIN tab1
QWidget *appearanceWidget = m_annotWidget->appearanceWidget();
appearanceWidget->setEnabled(canEditAnnotations);
addPage(appearanceWidget, i18n("&Appearance"));
// END tab1
// BEGIN tab 2
QFrame *page = new QFrame(this);
addPage(page, i18n("&General"));
// m_tabitem[1]->setIcon( QIcon::fromTheme( "fonts" ) );
QFormLayout *gridlayout = new QFormLayout(page);
AuthorEdit = new KLineEdit(ann->author(), page);
AuthorEdit->setEnabled(canEditAnnotations);
gridlayout->addRow(i18n("&Author:"), AuthorEdit);
tmplabel = new QLabel(page);
tmplabel->setText(QLocale().toString(ann->creationDate(), QLocale::LongFormat));
tmplabel->setTextInteractionFlags(Qt::TextSelectableByMouse);
gridlayout->addRow(i18n("Created:"), tmplabel);
m_modifyDateLabel = new QLabel(page);
m_modifyDateLabel->setText(QLocale().toString(ann->modificationDate(), QLocale::LongFormat));
m_modifyDateLabel->setTextInteractionFlags(Qt::TextSelectableByMouse);
gridlayout->addRow(i18n("Modified:"), m_modifyDateLabel);
// END tab 2
QWidget *extraWidget = m_annotWidget->extraWidget();
if (extraWidget) {
addPage(extraWidget, extraWidget->windowTitle());
}
// BEGIN connections
connect(AuthorEdit, &QLineEdit::textChanged, this, &AnnotsPropertiesDialog::setModified);
connect(m_annotWidget, &AnnotationWidget::dataChanged, this, &AnnotsPropertiesDialog::setModified);
// END
#if 0
qCDebug(OkularUiDebug) << "Annotation details:";
qCDebug(OkularUiDebug).nospace() << " => unique name: '" << ann->uniqueName() << "'";
qCDebug(OkularUiDebug) << " => flags:" << QString::number( m_annot->flags(), 2 );
#endif
resize(sizeHint());
}
AnnotsPropertiesDialog::~AnnotsPropertiesDialog()
{
delete m_annotWidget;
}
void AnnotsPropertiesDialog::setCaptionTextbyAnnotType()
{
Okular::Annotation::SubType type = m_annot->subType();
QString captiontext;
switch (type) {
case Okular::Annotation::AText:
if (((Okular::TextAnnotation *)m_annot)->textType() == Okular::TextAnnotation::Linked)
captiontext = i18n("Pop-up Note Properties");
else {
if (((Okular::TextAnnotation *)m_annot)->inplaceIntent() == Okular::TextAnnotation::TypeWriter)
captiontext = i18n("Typewriter Properties");
else
captiontext = i18n("Inline Note Properties");
}
break;
case Okular::Annotation::ALine:
if (((Okular::LineAnnotation *)m_annot)->linePoints().count() == 2)
captiontext = i18n("Straight Line Properties");
else
captiontext = i18n("Polygon Properties");
break;
case Okular::Annotation::AGeom:
captiontext = i18n("Geometry Properties");
break;
case Okular::Annotation::AHighlight:
captiontext = i18n("Text Markup Properties");
break;
case Okular::Annotation::AStamp:
captiontext = i18n("Stamp Properties");
break;
case Okular::Annotation::AInk:
captiontext = i18n("Freehand Line Properties");
break;
case Okular::Annotation::ACaret:
captiontext = i18n("Caret Properties");
break;
case Okular::Annotation::AFileAttachment:
captiontext = i18n("File Attachment Properties");
break;
case Okular::Annotation::ASound:
captiontext = i18n("Sound Properties");
break;
case Okular::Annotation::AMovie:
captiontext = i18n("Movie Properties");
break;
default:
captiontext = i18n("Annotation Properties");
break;
}
setWindowTitle(captiontext);
}
void AnnotsPropertiesDialog::setModified()
{
modified = true;
button(QDialogButtonBox::Apply)->setEnabled(true);
}
void AnnotsPropertiesDialog::slotapply()
{
if (!modified)
return;
m_document->prepareToModifyAnnotationProperties(m_annot);
m_annot->setAuthor(AuthorEdit->text());
m_annot->setModificationDate(QDateTime::currentDateTime());
m_annotWidget->applyChanges();
m_document->modifyPageAnnotationProperties(m_page, m_annot);
m_modifyDateLabel->setText(i18n("Modified: %1", QLocale().toString(m_annot->modificationDate(), QLocale::LongFormat)));
modified = false;
button(QDialogButtonBox::Apply)->setEnabled(false);
}
#include "moc_annotationpropertiesdialog.cpp"