diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
commit | 8362bf63dea22bbf6736609b0f49c152f975eb63 (patch) | |
tree | 0eea3928e39e50fae91d4e68b21b1e6cbae25604 /lib/koproperty/editor.h | |
download | koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip |
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'lib/koproperty/editor.h')
-rw-r--r-- | lib/koproperty/editor.h | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/lib/koproperty/editor.h b/lib/koproperty/editor.h new file mode 100644 index 00000000..9cd794f7 --- /dev/null +++ b/lib/koproperty/editor.h @@ -0,0 +1,188 @@ +/* This file is part of the KDE project + Copyright (C) 2004 Cedric Pasteur <[email protected]> + Copyright (C) 2004 Alexander Dymo <[email protected]> + Copyright (C) 2004-2006 Jaroslaw Staniek <[email protected]> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. +*/ + +#ifndef KPROPERTY_PROPERTYEDITOR_H +#define KPROPERTY_PROPERTYEDITOR_H + +#include <qguardedptr.h> +#include "koproperty_global.h" + +#include <klistview.h> + +class QSize; + +namespace KoProperty { + +class EditorPrivate; +class Property; +class Set; +class Widget; +class EditorItem; + + +/*! \brief A listview to edit properties + Editor widgets use property options using Property::option(const char *) + to override default behaviour of editor items. + Currently supported options are: + <ul><li> min: integer setting for minimum value of IntEdit and DoubleEdit item. Default is 0. + Set "min" to -1, if you want this special value to be allowed.</li> + <li> minValueText: i18n'd QString used in IntEdit to set "specialValueText" + widget's property</li> + <li> max: integer setting for minimum value of IntEdit item. Default is 0xffff.</li> + <li> precision: The number of decimals after the decimal point. (for DoubleEdit)</li> + <li> step : the size of the step that is taken when the user hits the up + or down buttons (for DoubleEdit) </li> + <li> 3rdState: i18n'd QString used in BoolEdit. If not empty, the the editor's button + accept third "null" state with name equal to this string. When this value is selected, + Widget::value() returns null QVariant. This option is used for example in the "defaultValue" + property for a field of type boolean (in Kexi Table Designer). Third, "null" value + of the property means there is no "defaultValue" specified. </li> + </ul> + \author Cedric Pasteur <[email protected]> + \author Alexander Dymo <[email protected]> + \author Jaroslaw Staniek <[email protected]> + */ +class KOPROPERTY_EXPORT Editor : public KListView +{ + Q_OBJECT + + public: + /*! Creates an empty Editor with \a parent as parent widget. + If \a autoSync == true, properties values are automatically synced as + soon as editor contents change (eg the user types text, etc.) + and the values are written in the property set. Otherwise, property set + is updated only when selected item changes or user presses Enter key. + Each property can overwrite this if its autoSync() == 0 or 1. + */ + Editor(QWidget *parent=0, bool autoSync=true, const char *name=0); + + virtual ~Editor(); + + virtual QSize sizeHint() const; + virtual void setFocus(); + virtual void setSorting( int column, bool ascending = true ); + + public slots: + /*! Populates the editor with an item for each property in the List. + Also creates child items for composed properties. + If \a preservePrevSelection is true, previously selected editor + item will be kept selected, if present. */ + void changeSet(Set *set, bool preservePrevSelection = false); + + /*! Populates the editor with an item for each property in the List. + Also creates child items for composed properties. + If \a propertyToSelect is not empty, editor item for this property name + will be selected, if present. */ + void changeSet(Set *set, const QCString& propertyToSelect); + + /*! Clears all items in the list. + if \a editorOnly is true, then only the current editor will be cleared, + not the whole list. + */ + void clear(bool editorOnly = false); + + /*! Accept the changes mae to the current editor (as if the user had pressed Enter key) */ + void acceptInput(); + + signals: + /*! Emitted when current property set has been changed. May be 0. */ + void propertySetChanged(KoProperty::Set *set); + + protected slots: + /*! Updates property widget in the editor.*/ + void slotPropertyChanged(KoProperty::Set& set, KoProperty::Property& property); + + void slotPropertyReset(KoProperty::Set& set, KoProperty::Property& property); + + /*! Updates property in the list when new value is selected in the editor.*/ + void slotWidgetValueChanged(Widget* widget); + + /*! Called when the user presses Enter to accet the input + (only applies when autoSync() == false).*/ + void slotWidgetAcceptInput(Widget *widget); + + /*! Called when the user presses Esc. Calls undo(). */ + void slotWidgetRejectInput(Widget *widget); + + /*! Called when current property set is about to be cleared. */ + void slotSetWillBeCleared(); + + /*! Called when current property set is about to be destroyed. */ + void slotSetWillBeDeleted(); + + /*! This slot is called when the user clicks the list view. + It takes care of deleting current editor and + creating a new editor for the newly selected item. */ + void slotClicked(QListViewItem *item); + + /*! Undoes the last change in property editor.*/ + void undo(); + + void updateEditorGeometry(bool forceUndoButtonSettings = false, bool undoButtonVisible = false); + void updateEditorGeometry(EditorItem *item, Widget* widget, bool forceUndoButtonSettings = false, bool undoButtonVisible = false); + void updateGroupLabelsPosition(); + + void hideEditor(); + + void slotCollapsed(QListViewItem *item); + void slotExpanded(QListViewItem *item); + void slotColumnSizeChanged(int section); + void slotColumnSizeChanged(int section, int oldSize, int newSize); + void slotCurrentChanged(QListViewItem *item); + void changeSetLater(); + void selectItemLater(); + protected: + /*! \return \ref Widget for given property. + Uses cache to store created widgets. + Cache will be cleared only with clearWidgetCache().*/ + Widget *createWidgetForProperty(Property *property, bool changeWidgetProperty=true); + + /*! Deletes cached machines.*/ + void clearWidgetCache(); + + void fill(); + void addItem(const QCString &name, EditorItem *parent); + + void showUndoButton( bool show ); + + virtual void resizeEvent(QResizeEvent *ev); + virtual bool eventFilter( QObject * watched, QEvent * e ); + bool handleKeyPress(QKeyEvent* ev); + + virtual bool event( QEvent * e ); + void updateFont(); + + virtual void contentsMousePressEvent( QMouseEvent * e ); + + /*! Used for changeSet(). */ + void changeSetInternal(Set *set, bool preservePrevSelection, + const QCString& propertyToSelect); + + private: + EditorPrivate *d; + + friend class EditorItem; + friend class Widget; +}; + +} + +#endif |