/* * PDFedit - free program for PDF document manipulation. * Copyright (C) 2006, 2007 PDFedit team: Michal Hocko, * Miroslav Jahoda, * Jozef Misutka, * Martin Petricek * * Project is hosted on http://sourceforge.net/projects/pdfedit */ /** @file StringProperty - class for widget containing one editable property of type "String"
Used as one item in property editor @author Martin Petricek */ #include "stringproperty.h" #include #include #include #include #include "util.h" #include namespace gui { using namespace std; /** Default constructor of property item @param parent parent Property Editor containing this control @param _name name of this property @param _flags flags of this property items (default 0) */ StringProperty::StringProperty(const QString &_name, QWidget *parent/*=0*/, PropertyFlags _flags/*=defaultPropertyMode*/) : Property(_name,parent,_flags) { ed=new QLineEdit(this,"stringproperty_edit"); setFocusProxy(ed); modifyColor(ed); connect(ed,SIGNAL(returnPressed()) ,this,SLOT(emitChange())); connect(ed,SIGNAL(lostFocus()) ,this,SLOT(emitChange())); connect(ed,SIGNAL(textChanged(const QString&)),this,SLOT(enableChange(const QString&))); } /** Called when text is accepted */ void StringProperty::emitChange() { if (!changed) return; emit propertyChanged(this); } /** Called when text changes @param newText value of new text */ void StringProperty::enableChange(__attribute__((unused)) const QString &newText) { changed=true; } /** return size hint of this property editing control @return preferred size for this widget */ QSize StringProperty::sizeHint() const { return ed->sizeHint(); } /** Called on resizing of property editing control @param e resize event containing new widget size */ void StringProperty::resizeEvent (QResizeEvent *e) { ed->setFixedSize(e->size()); } /** default destructor */ StringProperty::~StringProperty() { delete ed; } /** write internal value to given PDF object @param pdfObject Object to write to */ void StringProperty::setValue(IProperty *pdfObject) { if (effectiveReadonly) return;//Honor readonly setting CString* obj=dynamic_cast(pdfObject); assert(obj); string val=util::convertFromUnicode(ed->text(),util::PDF); obj->setValue(val); changed=false; } /** read internal value from given PDF object @param pdfObject Object to read from */ void StringProperty::readValue(IProperty *pdfObject) { CString* obj=dynamic_cast(pdfObject); assert(obj); string val; obj->getValue(val); ed->setText(util::convertToUnicode(val,util::PDF)); changed=false; } /** \copydoc Property::isValid() */ bool StringProperty::isValid() { return ed->hasAcceptableInput(); } //See Property::setDisabled void StringProperty::setDisabled(bool disabled) { ed->setEnabled(!disabled); } //See Property::applyReadOnly void StringProperty::applyReadOnly(bool _readonly) { ed->setReadOnly(_readonly); } } // namespace gui