Provide default name for new annotation tools

This patch also removes the slot qualification to AnnotationWidget::applyChanges()
that I had added in "Show the same widget as the annotation properties dialog when
creating annotation tools", because it's not needed any more.
This commit is contained in:
Fabio D'Urso 2012-07-27 01:44:24 +02:00
parent 36aca4403a
commit cb5d84eecf
3 changed files with 52 additions and 9 deletions

View file

@ -211,7 +211,6 @@ NewAnnotToolDialog::NewAnnotToolDialog( QWidget *parent )
{
setCaption( i18n("Create annotation tool") );
setButtons( Ok | Cancel );
enableButton( Ok, false );
setDefaultButton( Ok );
QLabel * tmplabel;
@ -221,7 +220,6 @@ NewAnnotToolDialog::NewAnnotToolDialog( QWidget *parent )
setMainWidget(widget);
m_name = new KLineEdit( widget );
connect( m_name, SIGNAL( textEdited(const QString &) ), this, SLOT( slotNameEdited(const QString &) ) );
tmplabel = new QLabel( i18n( "&Name:" ), widget );
tmplabel->setBuddy( m_name );
widgetLayout->addWidget( tmplabel, 0, 0, Qt::AlignRight );
@ -249,6 +247,7 @@ NewAnnotToolDialog::NewAnnotToolDialog( QWidget *parent )
m_type->addItem( i18n("Stamp"), QByteArray("stamp") );
rebuildAppearanceBox();
updateDefaultName();
}
NewAnnotToolDialog::~NewAnnotToolDialog()
@ -258,7 +257,10 @@ NewAnnotToolDialog::~NewAnnotToolDialog()
QString NewAnnotToolDialog::name() const
{
return m_name->text();
QString userText = m_name->text();
if ( userText.isEmpty() )
userText = m_name->placeholderText();
return userText;
}
QString NewAnnotToolDialog::toolXml() const
@ -442,18 +444,59 @@ void NewAnnotToolDialog::rebuildAppearanceBox()
m_annotationWidget = AnnotationWidgetFactory::widgetFor( m_stubann );
m_appearanceBox->layout()->addWidget( m_annotationWidget->appearanceWidget() );
// Tell the widget to mirror changes back in the stub annotation
connect( m_annotationWidget, SIGNAL(dataChanged()), m_annotationWidget, SLOT(applyChanges()) );
connect( m_annotationWidget, SIGNAL(dataChanged()), this, SLOT(slotDataChanged()) );
}
void NewAnnotToolDialog::slotNameEdited( const QString &new_name )
void NewAnnotToolDialog::updateDefaultName()
{
enableButton( Ok, !new_name.isEmpty() );
const QByteArray toolType = m_type->itemData( m_type->currentIndex() ).toByteArray();
QString defaultName = m_type->currentText();
if ( toolType == "text-markup" )
{
Okular::HighlightAnnotation * ha = static_cast<Okular::HighlightAnnotation*>( m_stubann );
switch ( ha->highlightType() )
{
case Okular::HighlightAnnotation::Highlight:
defaultName = i18n( "Highlight" );
break;
case Okular::HighlightAnnotation::Squiggly:
defaultName = i18n( "Squiggly" );
break;
case Okular::HighlightAnnotation::Underline:
defaultName = i18n( "Underline" );
break;
case Okular::HighlightAnnotation::StrikeOut:
defaultName = i18n( "Strike out" );
break;
}
}
else if ( toolType == "geometrical-shape" )
{
Okular::GeomAnnotation * ga = static_cast<Okular::GeomAnnotation*>( m_stubann );
if ( ga->geometricalType() == Okular::GeomAnnotation::InscribedCircle )
defaultName = i18n( "Ellipse" );
else
defaultName = i18n( "Rectangle" );
}
m_name->setPlaceholderText( defaultName );
}
void NewAnnotToolDialog::slotTypeChanged()
{
rebuildAppearanceBox();
updateDefaultName();
}
void NewAnnotToolDialog::slotDataChanged()
{
// Mirror changes back in the stub annotation
m_annotationWidget->applyChanges();
updateDefaultName();
}
#include "moc_widgetannottools.cpp"

View file

@ -70,6 +70,7 @@ class NewAnnotToolDialog : public KDialog
private:
void rebuildAppearanceBox();
void updateDefaultName();
KLineEdit *m_name;
KComboBox *m_type;
@ -79,8 +80,8 @@ class NewAnnotToolDialog : public KDialog
AnnotationWidget *m_annotationWidget;
private slots:
void slotNameEdited( const QString &new_name );
void slotTypeChanged();
void slotDataChanged();
};
#endif

View file

@ -80,7 +80,6 @@ public:
QWidget * appearanceWidget();
QWidget * extraWidget();
public slots:
virtual void applyChanges();
signals: