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 /kexi/plugins/reports/kexireportfactory.cpp | |
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 'kexi/plugins/reports/kexireportfactory.cpp')
-rw-r--r-- | kexi/plugins/reports/kexireportfactory.cpp | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/kexi/plugins/reports/kexireportfactory.cpp b/kexi/plugins/reports/kexireportfactory.cpp new file mode 100644 index 00000000..0ac782c4 --- /dev/null +++ b/kexi/plugins/reports/kexireportfactory.cpp @@ -0,0 +1,227 @@ +/* This file is part of the KDE project + Copyright (C) 2004 Cedric Pasteur <[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. +*/ +#include <qpopupmenu.h> +#include <qvaluevector.h> + +#include <kgenericfactory.h> +#include <klocale.h> +#include <kiconloader.h> +#include <kdebug.h> +#include <klineedit.h> + +#include <container.h> +#include <form.h> +#include <formmanager.h> +#include <widgetlibrary.h> + +#include "reportwidgets.h" +#include "kexireportfactory.h" + +KexiReportFactory::KexiReportFactory(QObject *parent, const char *name, const QStringList &) + : KFormDesigner::WidgetFactory(parent, name) +{ + KFormDesigner::WidgetInfo *wView = new KFormDesigner::WidgetInfo(this); + wView->setPixmap("report"); + wView->setClassName("KexiReportForm"); + wView->setName(i18n("Report")); + wView->setNamePrefix( + i18n("Widget name. This string will be used to name widgets of this class. It must _not_ contain white spaces and non latin1 characters.", "report")); + wView->setDescription(i18n("A report")); + addClass(wView); + + KFormDesigner::WidgetInfo *wLabel = new KFormDesigner::WidgetInfo(this); + wLabel->setPixmap("label"); + wLabel->setClassName("Label"); + wLabel->setName(i18n("Label")); + wLabel->setNamePrefix( + i18n("Widget name. This string will be used to name widgets of this class. It must _not_ contain white spaces and non latin1 characters.", "label")); + wLabel->setDescription(i18n("A label to display text")); + addClass(wLabel); + + KFormDesigner::WidgetInfo *wPicLabel = new KFormDesigner::WidgetInfo(this); + wPicLabel->setPixmap("pixmaplabel"); + wPicLabel->setClassName("PicLabel"); + wPicLabel->setName(i18n("Picture Label")); + wPicLabel->setNamePrefix( + i18n("Widget name. This string will be used to name widgets of this class. It must _not_ contain white spaces and non latin1 characters.", "picture")); + wPicLabel->setDescription(i18n("A label to display images or icons")); + addClass(wPicLabel); + + KFormDesigner::WidgetInfo *wLine = new KFormDesigner::WidgetInfo(this); + wLine->setPixmap("line"); + wLine->setClassName("ReportLine"); + wLine->setName(i18n("Line")); + wLine->setNamePrefix( + i18n("Widget name. This string will be used to name widgets of this class. It must _not_ contain white spaces and non latin1 characters.", "line")); + wLine->setDescription(i18n("A simple line")); + addClass(wLine); + + KFormDesigner::WidgetInfo *wSubReport = new KFormDesigner::WidgetInfo(this); + wSubReport->setPixmap("report"); + wSubReport->setClassName("KexiSubReport"); + wSubReport->setName(i18n("Sub Report")); + wSubReport->setNamePrefix( + i18n("Widget name. This string will be used to name widgets of this class. It must _not_ contain white spaces and non latin1 characters.", "subReport")); + wSubReport->setDescription(i18n("A report embedded in another report")); + addClass(wSubReport); +} + +KexiReportFactory::~KexiReportFactory() +{ +} + +QString +KexiReportFactory::name() +{ + return "kexireportwidgets"; +} + +QWidget* +KexiReportFactory::createWidget(const QCString &c, QWidget *p, const char *n, + KFormDesigner::Container *container, int options) +{ + Q_UNUSED(options); + kexipluginsdbg << "KexiReportFactory::create() " << this << endl; + + QString text( container->form()->library()->textForWidgetName(n, c) ); + + if(c == "Label") + return new Label(text, p, n); + else if(c == "PicLabel") + return new PicLabel(DesktopIcon("image"), p, n); + else if(c == "ReportLine") + return new ReportLine(p, n); + else if(c == "KexiSubReport") + return new KexiSubReport(p, n); + + return 0; +} + +bool +KexiReportFactory::createMenuActions(const QCString &classname, QWidget *w, + QPopupMenu *menu, KFormDesigner::Container *container) +{ + Q_UNUSED(w); + Q_UNUSED(container); + if(classname == "Label") { + /*! @todo use KAction */ + menu->insertItem(SmallIconSet("edit"), i18n("Edit Rich Text"), this, SLOT(editText())); + return true; + } + return false; +} + +bool +KexiReportFactory::startEditing(const QCString &c, QWidget *w, KFormDesigner::Container *container) +{ + m_container = container; + + if(c == "Label") { + QLabel *label = static_cast<QLabel*>(w); + if(label->textFormat() == RichText) { + m_widget = w; + editText(); + } + else + createEditor(c, label->text(), label, container, label->geometry(), label->alignment()); + return true; + } + return false; +} + +bool +KexiReportFactory::isPropertyVisibleInternal(const QCString &classname, QWidget *w, const QCString &property, bool isTopLevel) +{ + if(classname == "Label") { + if(property == "pixmap") + return false; + } + else if(classname == "PicLabel") { + if((property == "text") || (property == "indent") || (property == "textFormat") || (property == "font") || (property == "alignment")) + return false; + } + + return WidgetFactory::isPropertyVisibleInternal(classname, w, property, isTopLevel); +} + +QValueList<QCString> +KexiReportFactory::autoSaveProperties(const QCString &classname) +{ + QValueList<QCString> l; + + if(classname == "Label") + l << "text"; + else if(classname == "PicLabel") + l << "pixmap"; + + return l; +} + +/* +void +KexiReportFactory::changeText(const QString &text) +{ + QWidget *w = WidgetFactory::m_widget; + changeProperty("text", text, m_container); + + int width = w->sizeHint().width(); + + if(w->width() < width) + w->resize(width, w->height() ); +} + +void +KexiReportFactory::resizeEditor(QWidget *widget, const QCString &) +{ + QSize s = widget->size(); + QPoint p = widget->pos(); + QRect r; + + m_editor->resize(s); + m_editor->move(p); +}*/ + +void +KexiReportFactory::editText() +{ + QCString classname = m_widget->className(); + QString text; + + if(classname == "Label") + text = ((QLabel*)m_widget)->text(); + + if(editRichText(m_widget, text)) { + changeProperty("textFormat", "RichText", m_container->form()); + changeProperty("text", text, m_container->form()); + } + + if(classname == "Label") + m_widget->resize(m_widget->sizeHint()); +} + +bool +KexiReportFactory::previewWidget(const QCString &, QWidget *, KFormDesigner::Container *) +{ + return false; +} + +KFORMDESIGNER_WIDGET_FACTORY(KexiReportFactory, kexireportwidgets) + +#include "kexireportfactory.moc" + |