diff options
Diffstat (limited to 'kexi/plugins/forms/kexiformmanager.h')
-rw-r--r-- | kexi/plugins/forms/kexiformmanager.h | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/kexi/plugins/forms/kexiformmanager.h b/kexi/plugins/forms/kexiformmanager.h new file mode 100644 index 000000000..1cc5f0c64 --- /dev/null +++ b/kexi/plugins/forms/kexiformmanager.h @@ -0,0 +1,87 @@ +/* This file is part of the KDE project + Copyright (C) 2005 Jaroslaw Staniek <js@iidea.pl> + + 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 KEXIFORMMANAGER_H +#define KEXIFORMMANAGER_H + +#include <formmanager.h> +#include <kexipart.h> + +class KCommand; +class KexiFormView; + +//! @internal +//! Used to customize KFormDesigner::FormManager behaviour. +class KEXIFORMUTILS_EXPORT KexiFormManager : public KFormDesigner::FormManager +{ + Q_OBJECT + + public: + KexiFormManager(KexiPart::Part *parent, const char* name = 0); + virtual ~KexiFormManager(); + + virtual KAction* action( const char* name ); + virtual void enableAction( const char* name, bool enable ); + + public slots: + //! Receives signal from KexiDataSourcePage about changed form's data source + void setFormDataSource(const QCString& mime, const QCString& name); + + /*! Receives signal from KexiDataSourcePage about changed widget's data source. + This is because we couldn't pass objects like KexiDB::QueryColumnInfo. + + Also sets following things in KexiDBAutoField: + - caption related to the data source + - data type related to the data source */ + void setDataSourceFieldOrExpression(const QString& string, const QString& caption, + KexiDB::Field::Type type); + + /*! Receives signal from KexiDataSourcePage and inserts autofields onto the current form. */ + void insertAutoFields(const QString& sourceMimeType, const QString& sourceName, + const QStringList& fields); + + protected slots: + void slotHistoryCommandExecuted(); + + protected: + inline QString translateName( const char* name ) const; + + private: + //! Helper: return active form's view widget or 0 if there's no active form having such widget + KexiFormView* activeFormViewWidget() const; + +// virtual bool loadFormFromDomInternal(Form *form, QWidget *container, QDomDocument &inBuf); +// virtual bool saveFormToStringInternal(Form *form, QString &dest, int indent = 0); + + KexiPart::Part* m_part; +}; + +QString KexiFormManager::translateName( const char* name ) const +{ + QString n( name ); + //translate to our name space: + if (n.startsWith("align_") || n.startsWith("adjust_") || n.startsWith("layout_") + || n=="format_raise" || n=="format_raise" || n=="taborder" | n=="break_layout") + { + n.prepend("formpart_"); + } + return n; +} + +#endif |