Files
libreoffice/forms/source/component/Columns.cxx

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

572 lines
18 KiB
C++
Raw Normal View History

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
re-base on ALv2 code. Includes: Patch contributed by Christian Lippka impress212: #i113063# patch: dubios self assign in svx/source/dialog/framelink.cxx http://svn.apache.org/viewvc?view=revision&revision=1167619 Patches contributed by Mathias Bauer gnumake4 work variously http://svn.apache.org/viewvc?view=revision&revision=1394707 http://svn.apache.org/viewvc?view=revision&revision=1394326 cws mba34issues01: #i117712#: fix several resource errors introduced by IAccessible2 implementation http://svn.apache.org/viewvc?view=revision&revision=1172343 cws mba34issues01: #i117719#: use correct resource ID http://svn.apache.org/viewvc?view=revision&revision=1172351 Patch contributed by Andre Fischer Do not add targets for junit tests when junit is disabled. http://svn.apache.org/viewvc?view=revision&revision=1241508 Patches contributed by Armin Le-Grand #118804# corrected GraphicExporter behaviour on shortcut when pixel graphic is requested http://svn.apache.org/viewvc?view=revision&revision=1240195 fix for #118525#: Using primitives for chart sub-geometry visualisation http://svn.apache.org/viewvc?view=revision&revision=1226879 #118485# - Styles for OLEs are not saved. http://svn.apache.org/viewvc?view=revision&revision=1182166 #118524: apply patch, followup fixes to 118485 http://svn.apache.org/viewvc?view=revision&revision=1186077 13f79535-47bb-0310-9956-ffa450edef68 Patch contributed by Regina Henschel linecap: Reintegrating finished LineCap feature http://svn.apache.org/viewvc?view=revision&revision=1232507 Patch contributed by Wang Lei (leiw) #i118760# split the first table cell vertically, then undo&redo, the Presentation app will crash http://svn.apache.org/viewvc?view=revision&revision=1301361 cleanup globlmn hacks, undo dependent fixmes.
2012-11-21 22:06:52 +00:00
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
2000-09-18 15:33:13 +00:00
#include "Columns.hxx"
#include <property.hxx>
#include <componenttools.hxx>
#include "findpos.hxx"
2000-09-18 15:33:13 +00:00
#include <com/sun/star/io/XPersistObject.hpp>
#include <com/sun/star/io/XMarkableStream.hpp>
#include <com/sun/star/form/XFormComponent.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/form/binding/XBindableValue.hpp>
#include <com/sun/star/beans/XPropertyContainer.hpp>
#include <com/sun/star/text/XText.hpp>
2000-10-19 10:52:20 +00:00
#include <comphelper/property.hxx>
#include <comphelper/basicio.hxx>
2011-06-02 00:08:44 +01:00
#include <comphelper/servicehelper.hxx>
#include <comphelper/types.hxx>
#include <services.hxx>
2000-09-18 15:33:13 +00:00
#include <tools/debug.hxx>
#include <o3tl/sorted_vector.hxx>
2000-09-18 15:33:13 +00:00
2000-09-18 15:33:13 +00:00
namespace frm
{
2000-11-23 07:48:15 +00:00
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::container;
using namespace ::com::sun::star::form;
using namespace ::com::sun::star::awt;
using namespace ::com::sun::star::io;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::util;
using namespace ::com::sun::star::text;
using namespace ::com::sun::star::form::binding;
2000-09-18 15:33:13 +00:00
const sal_uInt16 WIDTH = 0x0001;
const sal_uInt16 ALIGN = 0x0002;
const sal_uInt16 OLD_HIDDEN = 0x0004;
const sal_uInt16 COMPATIBLE_HIDDEN = 0x0008;
const css::uno::Sequence<OUString>& getColumnTypes()
2000-09-18 15:33:13 +00:00
{
static css::uno::Sequence<OUString> aColumnTypes = [&]()
2000-09-18 15:33:13 +00:00
{
css::uno::Sequence<OUString> tmp(10);
OUString* pNames = tmp.getArray();
pNames[TYPE_CHECKBOX] = "CheckBox";
pNames[TYPE_COMBOBOX] = "ComboBox";
pNames[TYPE_CURRENCYFIELD] = "CurrencyField";
pNames[TYPE_DATEFIELD] = "DateField";
pNames[TYPE_FORMATTEDFIELD] = "FormattedField";
pNames[TYPE_LISTBOX] = "ListBox";
pNames[TYPE_NUMERICFIELD] = "NumericField";
pNames[TYPE_PATTERNFIELD] = "PatternField";
pNames[TYPE_TEXTFIELD] = "TextField";
pNames[TYPE_TIMEFIELD] = "TimeField";
return tmp;
}();
2000-09-18 15:33:13 +00:00
return aColumnTypes;
}
sal_Int32 getColumnTypeByModelName(const OUString& aModelName)
2000-09-18 15:33:13 +00:00
{
static const OUStringLiteral aModelPrefix (u"com.sun.star.form.component.");
static const OUStringLiteral aCompatibleModelPrefix (u"stardiv.one.form.component.");
2000-09-18 15:33:13 +00:00
sal_Int32 nTypeId = -1;
if (aModelName == FRM_COMPONENT_EDIT)
nTypeId = TYPE_TEXTFIELD;
else
{
2001-05-11 08:33:55 +00:00
sal_Int32 nPrefixPos = aModelName.indexOf(aModelPrefix);
#ifdef DBG_UTIL
sal_Int32 nCompatiblePrefixPos = aModelName.indexOf(aCompatibleModelPrefix);
DBG_ASSERT( (nPrefixPos != -1) || (nCompatiblePrefixPos != -1),
"::getColumnTypeByModelName() : wrong service!");
#endif
2000-09-18 15:33:13 +00:00
OUString aColumnType = (nPrefixPos != -1)
2001-05-11 08:33:55 +00:00
? aModelName.copy(aModelPrefix.getLength())
: aModelName.copy(aCompatibleModelPrefix.getLength());
2000-09-18 15:33:13 +00:00
const css::uno::Sequence<OUString>& rColumnTypes = getColumnTypes();
nTypeId = ::detail::findPos(aColumnType, rColumnTypes);
2000-09-18 15:33:13 +00:00
}
return nTypeId;
}
const Sequence<sal_Int8>& OGridColumn::getUnoTunnelId()
2000-09-18 15:33:13 +00:00
{
static const UnoTunnelIdInit theOGridColumnImplementationId;
return theOGridColumnImplementationId.getSeq();
2000-09-18 15:33:13 +00:00
}
sal_Int64 SAL_CALL OGridColumn::getSomething( const Sequence<sal_Int8>& _rIdentifier)
2000-09-18 15:33:13 +00:00
{
sal_Int64 nReturn(0);
if ( isUnoTunnelId<OGridColumn>(_rIdentifier) )
2000-09-18 15:33:13 +00:00
{
nReturn = reinterpret_cast<sal_Int64>(this);
}
else
{
Reference< XUnoTunnel > xAggTunnel;
if ( query_aggregation( m_xAggregate, xAggTunnel ) )
return xAggTunnel->getSomething( _rIdentifier );
2000-09-18 15:33:13 +00:00
}
return nReturn;
}
Sequence<sal_Int8> SAL_CALL OGridColumn::getImplementationId()
2000-09-18 15:33:13 +00:00
{
return css::uno::Sequence<sal_Int8>();
2000-09-18 15:33:13 +00:00
}
Sequence<Type> SAL_CALL OGridColumn::getTypes()
2000-09-18 15:33:13 +00:00
{
TypeBag aTypes( OGridColumn_BASE::getTypes() );
// erase the types which we do not support
aTypes.removeType( cppu::UnoType<XFormComponent>::get() );
aTypes.removeType( cppu::UnoType<XServiceInfo>::get() );
aTypes.removeType( cppu::UnoType<XBindableValue>::get() );
aTypes.removeType( cppu::UnoType<XPropertyContainer>::get() );
// but re-add their base class(es)
aTypes.addType( cppu::UnoType<XChild>::get() );
Reference< XTypeProvider > xProv;
if ( query_aggregation( m_xAggregate, xProv ))
aTypes.addTypes( xProv->getTypes() );
aTypes.removeType( cppu::UnoType<XTextRange>::get() );
aTypes.removeType( cppu::UnoType<XSimpleText>::get() );
aTypes.removeType( cppu::UnoType<XText>::get() );
return aTypes.getTypes();
2000-09-18 15:33:13 +00:00
}
Any SAL_CALL OGridColumn::queryAggregation( const Type& _rType )
2000-09-18 15:33:13 +00:00
{
2000-11-23 07:48:15 +00:00
Any aReturn;
Many spelling fixes: directories a* - g*. Attempt to clean up most but certainly not all the spelling mistakes that found home in OpenOffice through decades. We could probably blame the international nature of the code but it is somewhat shameful that this wasn't done before. (cherry picked from commit a6efc99d19d533fcf53106b6667bafba4d364370) Conflicts: accessibility/bridge/org/openoffice/java/accessibility/AccessibleTextImpl.java accessibility/bridge/org/openoffice/java/accessibility/Component.java accessibility/bridge/org/openoffice/java/accessibility/Container.java accessibility/bridge/org/openoffice/java/accessibility/DescendantManager.java accessibility/bridge/org/openoffice/java/accessibility/Dialog.java accessibility/bridge/org/openoffice/java/accessibility/Frame.java accessibility/bridge/org/openoffice/java/accessibility/List.java accessibility/bridge/org/openoffice/java/accessibility/Menu.java accessibility/bridge/org/openoffice/java/accessibility/Table.java accessibility/bridge/org/openoffice/java/accessibility/Tree.java accessibility/bridge/org/openoffice/java/accessibility/Window.java accessibility/bridge/source/java/WindowsAccessBridgeAdapter.cxx accessibility/inc/accessibility/extended/AccessibleBrowseBoxBase.hxx accessibility/inc/accessibility/extended/AccessibleGridControlBase.hxx accessibility/inc/accessibility/standard/vclxaccessiblebox.hxx accessibility/source/extended/accessibleiconchoicectrlentry.cxx accessibility/source/extended/accessiblelistboxentry.cxx accessibility/source/extended/accessibletablistbox.cxx accessibility/source/extended/accessibletablistboxtable.cxx accessibility/workben/org/openoffice/accessibility/awb/canvas/Canvas.java accessibility/workben/org/openoffice/accessibility/misc/OfficeConnection.java apple_remote/AppleRemote.m autodoc/inc/ary/cpp/c_gate.hxx autodoc/inc/ary/cpp/cp_ce.hxx autodoc/inc/ary/cpp/cp_def.hxx autodoc/inc/ary/cpp/cp_type.hxx autodoc/inc/ary/doc/d_parametrized.hxx autodoc/inc/ary/idl/i_type.hxx autodoc/source/ary/inc/cross_refs.hxx autodoc/source/ary/inc/sorted_idset.hxx autodoc/source/display/html/outfile.hxx autodoc/source/display/html/pagemake.cxx autodoc/source/display/idl/hi_env.hxx autodoc/source/parser/inc/tokens/tokproct.hxx autodoc/source/parser_i/inc/s2_luidl/tokproct.hxx autodoc/source/parser_i/inc/tokens/tkp2.hxx automation/inc/automation/commtypes.hxx automation/inc/automation/simplecm.hxx automation/source/server/recorder.cxx automation/source/server/recorder.hxx automation/source/server/statemnt.cxx automation/source/simplecm/packethandler.hxx automation/source/simplecm/simplecm.cxx avmedia/source/framework/soundhandler.cxx basegfx/inc/basegfx/range/rangeexpander.hxx basic/inc/basic/sbxdef.hxx basic/source/classes/sbunoobj.cxx basic/source/classes/sbxmod.cxx basic/source/comp/dim.cxx basic/source/comp/exprgen.cxx basic/source/runtime/step1.cxx basic/source/runtime/step2.cxx basic/source/sbx/sbxint.cxx basic/source/uno/namecont.cxx basic/workben/mgrtest.cxx bean/com/sun/star/beans/LocalOfficeConnection.java bean/com/sun/star/beans/LocalOfficeWindow.java bean/com/sun/star/comp/beans/LocalOfficeConnection.java bean/com/sun/star/comp/beans/LocalOfficeWindow.java bean/com/sun/star/comp/beans/OOoBean.java bridges/inc/bridges/cpp_uno/bridge.hxx bridges/source/cpp_uno/cc50_solaris_intel/cpp2uno.cxx bridges/source/cpp_uno/cc50_solaris_intel/except.cxx bridges/source/cpp_uno/cc50_solaris_intel/uno2cpp.cxx bridges/source/cpp_uno/cc50_solaris_sparc/cpp2uno.cxx bridges/source/cpp_uno/cc50_solaris_sparc/except.cxx bridges/source/cpp_uno/cc50_solaris_sparc/uno2cpp.cxx bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx bridges/source/cpp_uno/gcc3_macosx_x86-64/uno2cpp.cxx bridges/source/cpp_uno/gcc3_netbsd_intel/cpp2uno.cxx bridges/source/cpp_uno/gcc3_netbsd_intel/except.cxx bridges/source/cpp_uno/gcc3_netbsd_intel/uno2cpp.cxx bridges/source/cpp_uno/gcc3_os2_intel/cpp2uno.cxx bridges/source/cpp_uno/gcc3_os2_intel/except.cxx bridges/source/cpp_uno/gcc3_os2_intel/uno2cpp.cxx bridges/source/cpp_uno/mingw_x86-64/uno2cpp.cxx bridges/source/cpp_uno/msvc_win32_intel/except.cxx bridges/source/cpp_uno/s5abi_macosx_x86-64/except.cxx bridges/source/cpp_uno/shared/component.cxx bridges/source/jni_uno/jni_base.h bridges/source/jni_uno/jni_bridge.cxx bridges/source/jni_uno/jni_java2uno.cxx bridges/source/jni_uno/jni_uno2java.cxx canvas/inc/canvas/base/doublebitmapbase.hxx canvas/inc/canvas/base/floatbitmapbase.hxx canvas/inc/canvas/base/integerbitmapbase.hxx canvas/source/cairo/cairo_canvasbitmap.cxx canvas/source/cairo/cairo_textlayout.cxx chart2/source/controller/dialogs/ObjectNameProvider.cxx chart2/source/view/diagram/VDiagram.cxx chart2/source/view/main/ChartView.cxx cli_ure/source/native/makefile.mk cli_ure/source/uno_bridge/cli_data.cxx codemaker/source/javamaker/javatype.cxx comphelper/inc/comphelper/componentcontext.hxx comphelper/inc/comphelper/interaction.hxx comphelper/inc/comphelper/locale.hxx comphelper/inc/comphelper/string.hxx comphelper/source/container/embeddedobjectcontainer.cxx comphelper/source/misc/accessiblecontexthelper.cxx comphelper/source/misc/asyncnotification.cxx comphelper/source/misc/locale.cxx comphelper/source/misc/mediadescriptor.cxx comphelper/source/misc/numberedcollection.cxx comphelper/source/misc/proxyaggregation.cxx comphelper/source/misc/scopeguard.cxx comphelper/source/misc/sequenceashashmap.cxx configure.in connectivity/source/commontools/parameters.cxx connectivity/source/drivers/dbase/DTable.cxx connectivity/source/drivers/evoab2/NStatement.cxx connectivity/source/drivers/file/FPreparedStatement.cxx connectivity/source/drivers/jdbc/DatabaseMetaData.cxx connectivity/source/inc/flat/ETable.hxx connectivity/source/parse/sqlnode.cxx cosv/inc/cosv/persist.hxx cosv/inc/cosv/ploc_dir.hxx cosv/inc/cosv/tpl/dyn.hxx cppu/source/LogBridge/LogBridge.cxx cppu/source/uno/data.cxx cppuhelper/source/bootstrap.cxx cppuhelper/source/component_context.cxx cppuhelper/source/propshlp.cxx cppuhelper/source/servicefactory.cxx cpputools/source/registercomponent/registercomponent.cxx cui/source/customize/acccfg.cxx cui/source/dialogs/about.cxx cui/source/dialogs/commonlingui.hxx cui/source/dialogs/showcols.cxx cui/source/inc/cuihyperdlg.hxx cui/source/inc/cuitabline.hxx cui/source/options/optsave.src cui/source/tabpages/tpline.cxx cui/source/tabpages/transfrm.cxx dbaccess/source/core/api/CacheSet.cxx dbaccess/source/core/api/KeySet.cxx dbaccess/source/core/api/RowSet.cxx dbaccess/source/core/api/RowSet.hxx dbaccess/source/core/api/RowSetBase.cxx dbaccess/source/core/api/RowSetBase.hxx dbaccess/source/core/api/RowSetCache.cxx dbaccess/source/core/api/querycomposer.cxx dbaccess/source/ext/adabas/Acomponentmodule.hxx dbaccess/source/ui/app/AppControllerDnD.cxx dbaccess/source/ui/app/AppDetailView.cxx dbaccess/source/ui/browser/brwctrlr.cxx dbaccess/source/ui/browser/sbagrid.cxx dbaccess/source/ui/browser/unodatbr.cxx dbaccess/source/ui/dlg/AdabasStat.hxx dbaccess/source/ui/dlg/UserAdmin.cxx dbaccess/source/ui/dlg/directsql.cxx dbaccess/source/ui/dlg/generalpage.hxx dbaccess/source/ui/dlg/tablespage.cxx dbaccess/source/ui/inc/JoinTableView.hxx dbaccess/source/ui/inc/TableController.hxx dbaccess/source/ui/inc/UITools.hxx dbaccess/source/ui/inc/brwctrlr.hxx dbaccess/source/ui/inc/datasourcemap.hxx dbaccess/source/ui/querydesign/JoinTableView.cxx dbaccess/source/ui/querydesign/QueryDesignView.cxx dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx dbaccess/source/ui/querydesign/TableWindow.cxx dbaccess/source/ui/querydesign/querycontroller.cxx dbaccess/source/ui/relationdesign/RelationTableView.cxx dbaccess/source/ui/tabledesign/TableController.cxx desktop/source/app/app.cxx desktop/source/app/appinit.cxx desktop/source/app/langselect.cxx desktop/source/app/officeipcthread.cxx desktop/source/deployment/manager/dp_extensionmanager.cxx desktop/source/deployment/misc/dp_misc.cxx desktop/source/deployment/misc/dp_resource.cxx desktop/source/deployment/registry/dp_backend.cxx desktop/source/deployment/registry/package/dp_package.cxx desktop/source/migration/cfgfilter.cxx desktop/source/migration/migration.cxx desktop/source/splash/splash.cxx desktop/win32/source/QuickStart/QuickStart.cpp desktop/win32/source/setup/setup.cpp drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx dtrans/source/win32/clipb/MtaOleClipb.hxx dtrans/source/win32/clipb/WinClipbImpl.cxx editeng/source/editeng/editview.cxx editeng/source/editeng/impedit2.cxx editeng/source/editeng/impedit3.cxx editeng/source/editeng/impedit4.cxx editeng/source/editeng/textconv.hxx editeng/source/misc/unolingu.cxx embeddedobj/source/commonembedding/persistence.cxx embeddedobj/source/general/dummyobject.cxx embeddedobj/source/msole/olecomponent.cxx embeddedobj/source/msole/olepersist.cxx embeddedobj/test/Container1/NativeView.java extensions/source/bibliography/framectr.cxx extensions/source/macosx/spotlight/OOoContentDataParser.m extensions/source/macosx/spotlight/unzip.h extensions/source/macosx/spotlight/unzip.m extensions/source/oooimprovement/myconfigurationhelper.hxx extensions/source/propctrlr/eventhandler.cxx extensions/source/propctrlr/formcomponenthandler.cxx extensions/source/propctrlr/pcrcomponentcontext.hxx extensions/source/scanner/twain.cxx extensions/source/update/check/updatecheckconfig.hxx external/mingwheaders/mingw_atl_headers.patch extras/source/misc_config/wizard/web/layouts/source.xml.xsl fileaccess/source/FileAccess.cxx filter/inc/filter/msfilter/msocximex.hxx filter/inc/filter/msfilter/svxmsbas.hxx filter/qa/complex/filter/detection/typeDetection/Helper.java filter/source/config/cache/basecontainer.cxx filter/source/config/cache/cacheitem.hxx filter/source/config/cache/contenthandlerfactory.cxx filter/source/config/cache/filtercache.cxx filter/source/config/cache/filtercache.hxx filter/source/config/cache/filterfactory.cxx filter/source/config/cache/frameloaderfactory.cxx filter/source/config/cache/querytokenizer.hxx filter/source/config/cache/typedetection.cxx filter/source/config/cache/typedetection.hxx filter/source/config/cache/versions.hxx filter/source/config/fragments/makefile.mk filter/source/config/tools/merge/pyAltFCFGMerge filter/source/flash/swfwriter.cxx filter/source/flash/swfwriter1.cxx filter/source/msfilter/msdffimp.cxx filter/source/msfilter/msocximex.cxx filter/source/msfilter/msvbahelper.cxx filter/source/msfilter/svxmsbas.cxx filter/source/xmlfilterdetect/filterdetect.cxx filter/source/xslt/import/uof2/uof2odf.xsl filter/source/xslt/odf2xhtml/export/xhtml/body.xsl filter/source/xsltfilter/com/sun/star/comp/xsltfilter/Base64.java forms/source/xforms/convert.hxx forms/source/xforms/model.cxx fpicker/source/aqua/SalAquaFilePicker.mm fpicker/source/office/fpinteraction.cxx fpicker/source/unx/gnome/SalGtkFolderPicker.cxx fpicker/source/unx/kde4/KDE4FilePicker.cxx fpicker/source/win32/filepicker/PreviewCtrl.cxx fpicker/source/win32/filepicker/PreviewCtrl.hxx fpicker/source/win32/filepicker/VistaFilePicker.cxx fpicker/source/win32/filepicker/VistaFilePickerImpl.hxx fpicker/source/win32/filepicker/helppopupwindow.hxx fpicker/source/win32/folderpicker/MtaFop.hxx framework/inc/classes/droptargetlistener.hxx framework/inc/classes/filtercache.hxx framework/inc/classes/filtercachedata.hxx framework/inc/classes/protocolhandlercache.hxx framework/inc/classes/servicemanager.hxx framework/inc/commands.h framework/inc/dispatch/basedispatcher.hxx framework/inc/dispatch/blankdispatcher.hxx framework/inc/dispatch/closedispatcher.hxx framework/inc/dispatch/createdispatcher.hxx framework/inc/dispatch/dispatchprovider.hxx framework/inc/dispatch/helpagentdispatcher.hxx framework/inc/dispatch/mailtodispatcher.hxx framework/inc/dispatch/menudispatcher.hxx framework/inc/dispatch/oxt_handler.hxx framework/inc/dispatch/popupmenudispatcher.hxx framework/inc/dispatch/selfdispatcher.hxx framework/inc/dispatch/servicehandler.hxx framework/inc/dispatch/startmoduledispatcher.hxx framework/inc/dispatch/systemexec.hxx framework/inc/helper/fixeddocumentproperties.hxx framework/inc/helper/ocomponentaccess.hxx framework/inc/helper/oframes.hxx framework/inc/helper/otasksenumeration.hxx framework/inc/helper/persistentwindowstate.hxx framework/inc/helper/statusindicator.hxx framework/inc/helper/statusindicatorfactory.hxx framework/inc/helper/tagwindowasmodified.hxx framework/inc/helper/titlebarupdate.hxx framework/inc/helper/vclstatusindicator.hxx framework/inc/interaction/quietinteraction.hxx framework/inc/jobs/helponstartup.hxx framework/inc/jobs/job.hxx framework/inc/jobs/jobdata.hxx framework/inc/jobs/jobexecutor.hxx framework/inc/loadstate.h framework/inc/macros/debug/assertion.hxx framework/inc/macros/debug/event.hxx framework/inc/macros/debug/filterdbg.hxx framework/inc/macros/debug/memorymeasure.hxx framework/inc/macros/debug/timemeasure.hxx framework/inc/macros/xserviceinfo.hxx framework/inc/queries.h framework/inc/recording/dispatchrecordersupplier.hxx framework/inc/services/autorecovery.hxx framework/inc/services/backingcomp.hxx framework/inc/services/contenthandlerfactory.hxx framework/inc/services/desktop.hxx framework/inc/services/detectorfactory.hxx framework/inc/services/frame.hxx framework/inc/services/frameloaderfactory.hxx framework/inc/services/layoutmanager.hxx framework/inc/services/license.hxx framework/inc/services/logindialog.hxx framework/inc/services/modulemanager.hxx framework/inc/services/pathsettings.hxx framework/inc/services/pluginframe.hxx framework/inc/services/substitutepathvars.hxx framework/inc/services/task.hxx framework/inc/services/taskcreatorsrv.hxx framework/inc/stdtypes.h framework/inc/threadhelp/fairrwlock.hxx framework/inc/threadhelp/inoncopyable.h framework/inc/threadhelp/itransactionmanager.h framework/inc/threadhelp/lockhelper.hxx framework/inc/threadhelp/readguard.hxx framework/inc/threadhelp/resetableguard.hxx framework/inc/threadhelp/transactionguard.hxx framework/inc/threadhelp/writeguard.hxx framework/inc/uifactory/uielementfactorymanager.hxx framework/inc/xml/acceleratorconfigurationreader.hxx framework/qa/complex/dispatches/checkdispatchapi.java framework/qa/complex/framework/autosave/AutoSave.java framework/qa/complex/framework/autosave/Protocol.java framework/qa/complex/framework/recovery/RecoveryTest.java framework/qa/complex/loadAllDocuments/StreamSimulator.java framework/source/accelerators/acceleratorconfiguration.cxx framework/source/accelerators/acceleratorexecute.cxx framework/source/accelerators/acceleratorexecute.hxx framework/source/accelerators/keymapping.cxx framework/source/accelerators/presethandler.cxx framework/source/application/framework.cxx framework/source/application/login.cxx framework/source/classes/framecontainer.cxx framework/source/classes/menumanager.cxx framework/source/classes/taskcreator.cxx framework/source/dispatch/closedispatcher.cxx framework/source/dispatch/dispatchprovider.cxx framework/source/dispatch/helpagentdispatcher.cxx framework/source/dispatch/interceptionhelper.cxx framework/source/dispatch/mailtodispatcher.cxx framework/source/dispatch/menudispatcher.cxx framework/source/dispatch/oxt_handler.cxx framework/source/dispatch/servicehandler.cxx framework/source/fwe/classes/framelistanalyzer.cxx framework/source/fwe/dispatch/interaction.cxx framework/source/fwe/helper/titlehelper.cxx framework/source/fwe/helper/undomanagerhelper.cxx framework/source/fwe/xml/eventsdocumenthandler.cxx framework/source/fwe/xml/statusbardocumenthandler.cxx framework/source/fwe/xml/toolboxdocumenthandler.cxx framework/source/fwi/classes/protocolhandlercache.cxx framework/source/fwi/threadhelp/lockhelper.cxx framework/source/fwi/threadhelp/transactionmanager.cxx framework/source/helper/persistentwindowstate.cxx framework/source/helper/statusindicatorfactory.cxx framework/source/helper/vclstatusindicator.cxx framework/source/inc/accelerators/acceleratorcache.hxx framework/source/inc/accelerators/acceleratorconfiguration.hxx framework/source/inc/accelerators/presethandler.hxx framework/source/inc/accelerators/storageholder.hxx framework/source/inc/loadenv/actionlockguard.hxx framework/source/inc/loadenv/loadenv.hxx framework/source/inc/loadenv/loadenvexception.hxx framework/source/inc/pattern/frame.hxx framework/source/inc/pattern/storages.hxx framework/source/inc/pattern/window.hxx framework/source/jobs/helponstartup.cxx framework/source/jobs/job.cxx framework/source/jobs/jobdata.cxx framework/source/jobs/jobdispatch.cxx framework/source/jobs/jobresult.cxx framework/source/jobs/joburl.cxx framework/source/jobs/shelljob.cxx framework/source/loadenv/loadenv.cxx framework/source/services/autorecovery.cxx framework/source/services/backingwindow.cxx framework/source/services/desktop.cxx framework/source/services/frame.cxx framework/source/services/modulemanager.cxx framework/source/services/pathsettings.cxx framework/source/services/substitutepathvars.cxx framework/source/uiconfiguration/moduleuicfgsupplier.cxx framework/source/uiconfiguration/moduleuiconfigurationmanager.cxx framework/source/uiconfiguration/uicategorydescription.cxx framework/source/uiconfiguration/uiconfigurationmanagerimpl.cxx framework/source/uiconfiguration/windowstateconfiguration.cxx framework/source/uielement/uicommanddescription.cxx framework/source/unotypes/fwk.xml framework/source/xml/imagesdocumenthandler.cxx framework/test/test.cxx framework/test/test_componentenumeration.bas framework/test/test_statusindicatorfactory.bas framework/test/threadtest.cxx framework/test/threadtest/threadtest.cxx framework/test/typecfg/cfgview.cxx framework/test/typecfg/xml2xcd.cxx include/basegfx/polygon/b2dpolygon.hxx include/canvas/base/graphicdevicebase.hxx include/canvas/canvastools.hxx include/comphelper/configurationhelper.hxx include/comphelper/embeddedobjectcontainer.hxx include/comphelper/propagg.hxx include/comphelper/sequenceashashmap.hxx include/connectivity/sqlerror.hxx include/connectivity/sqlnode.hxx include/cppuhelper/propshlp.hxx include/editeng/AccessibleContextBase.hxx include/framework/framelistanalyzer.hxx sfx2/source/dialog/backingcomp.cxx vcl/unx/gtk/fpicker/SalGtkFilePicker.cxx Change-Id: I2618bf83c0e30f68f23ff25f6eb466df04d34c6d
2014-04-29 19:05:05 +00:00
// some functionality at our aggregate cannot be reasonably fulfilled here.
if ( _rType.equals(cppu::UnoType<XFormComponent>::get())
|| _rType.equals(cppu::UnoType<XServiceInfo>::get())
|| _rType.equals(cppu::UnoType<XBindableValue>::get())
|| _rType.equals(cppu::UnoType<XPropertyContainer>::get())
|| comphelper::isAssignableFrom(cppu::UnoType<XTextRange>::get(),_rType)
)
return aReturn;
2000-09-18 15:33:13 +00:00
2000-11-23 07:48:15 +00:00
aReturn = OGridColumn_BASE::queryAggregation(_rType);
2000-09-18 15:33:13 +00:00
if (!aReturn.hasValue())
2000-11-23 07:48:15 +00:00
{
2000-09-18 15:33:13 +00:00
aReturn = OPropertySetAggregationHelper::queryInterface(_rType);
2000-11-23 07:48:15 +00:00
if (!aReturn.hasValue() && m_xAggregate.is())
aReturn = m_xAggregate->queryAggregation(_rType);
}
2000-09-18 15:33:13 +00:00
return aReturn;
}
OGridColumn::OGridColumn( const Reference<XComponentContext>& _rContext, const OUString& _sModelName )
:OGridColumn_BASE(m_aMutex)
,OPropertySetAggregationHelper(OGridColumn_BASE::rBHelper)
,m_aHidden( makeAny( false ) )
,m_aModelName(_sModelName)
2000-09-18 15:33:13 +00:00
{
// Create the UnoControlModel
if ( m_aModelName.isEmpty() ) // is there a to-be-aggregated model?
return;
2000-09-18 15:33:13 +00:00
osl_atomic_increment( &m_refCount );
2000-09-18 15:33:13 +00:00
{
m_xAggregate.set( _rContext->getServiceManager()->createInstanceWithContext( m_aModelName, _rContext ), UNO_QUERY );
setAggregation( m_xAggregate );
}
2000-09-18 15:33:13 +00:00
if ( m_xAggregate.is() )
{ // don't omit those brackets - they ensure that the following temporary is properly deleted
m_xAggregate->setDelegator( static_cast< ::cppu::OWeakObject* >( this ) );
2000-09-18 15:33:13 +00:00
}
// Set refcount back to zero
osl_atomic_decrement( &m_refCount );
}
OGridColumn::OGridColumn( const OGridColumn* _pOriginal )
:OGridColumn_BASE( m_aMutex )
,OPropertySetAggregationHelper( OGridColumn_BASE::rBHelper )
{
m_aWidth = _pOriginal->m_aWidth;
m_aAlign = _pOriginal->m_aAlign;
m_aHidden = _pOriginal->m_aHidden;
m_aModelName = _pOriginal->m_aModelName;
m_aLabel = _pOriginal->m_aLabel;
osl_atomic_increment( &m_refCount );
{
{
m_xAggregate = createAggregateClone( _pOriginal );
setAggregation( m_xAggregate );
}
if ( m_xAggregate.is() )
{ // don't omit this brackets - they ensure that the following temporary is properly deleted
m_xAggregate->setDelegator( static_cast< ::cppu::OWeakObject* >( this ) );
}
}
osl_atomic_decrement( &m_refCount );
2000-09-18 15:33:13 +00:00
}
2000-09-18 15:33:13 +00:00
OGridColumn::~OGridColumn()
{
2000-11-23 07:48:15 +00:00
if (!OGridColumn_BASE::rBHelper.bDisposed)
2000-09-18 15:33:13 +00:00
{
acquire();
dispose();
}
// Free the aggregate
2000-09-18 15:33:13 +00:00
if (m_xAggregate.is())
{
css::uno::Reference<css::uno::XInterface> xIface;
2000-09-18 15:33:13 +00:00
m_xAggregate->setDelegator(xIface);
}
2000-09-18 15:33:13 +00:00
}
2000-11-23 07:48:15 +00:00
// XEventListener
void SAL_CALL OGridColumn::disposing(const EventObject& _rSource)
2000-09-18 15:33:13 +00:00
{
OPropertySetAggregationHelper::disposing(_rSource);
2000-11-23 07:48:15 +00:00
Reference<XEventListener> xEvtLstner;
2000-09-18 15:33:13 +00:00
if (query_aggregation(m_xAggregate, xEvtLstner))
xEvtLstner->disposing(_rSource);
}
2000-11-23 07:48:15 +00:00
// OGridColumn_BASE
2000-09-18 15:33:13 +00:00
void OGridColumn::disposing()
{
2000-11-23 07:48:15 +00:00
OGridColumn_BASE::disposing();
2000-09-18 15:33:13 +00:00
OPropertySetAggregationHelper::disposing();
2000-11-23 07:48:15 +00:00
Reference<XComponent> xComp;
2000-09-18 15:33:13 +00:00
if (query_aggregation(m_xAggregate, xComp))
xComp->dispose();
}
void OGridColumn::clearAggregateProperties( Sequence< Property >& _rProps, bool bAllowDropDown )
2000-09-18 15:33:13 +00:00
{
// some properties are not to be exposed to the outer world
static const o3tl::sorted_vector< OUString > aForbiddenProperties {
PROPERTY_ALIGN,
PROPERTY_AUTOCOMPLETE,
PROPERTY_BACKGROUNDCOLOR,
PROPERTY_BORDER,
PROPERTY_BORDERCOLOR,
PROPERTY_ECHO_CHAR,
PROPERTY_FILLCOLOR,
PROPERTY_FONT,
PROPERTY_FONT_NAME,
PROPERTY_FONT_STYLENAME,
PROPERTY_FONT_FAMILY,
PROPERTY_FONT_CHARSET,
PROPERTY_FONT_HEIGHT,
PROPERTY_FONT_WEIGHT,
PROPERTY_FONT_SLANT,
PROPERTY_FONT_UNDERLINE,
PROPERTY_FONT_STRIKEOUT,
PROPERTY_FONT_WORDLINEMODE,
PROPERTY_TEXTLINECOLOR,
PROPERTY_FONTEMPHASISMARK,
PROPERTY_FONTRELIEF,
PROPERTY_HARDLINEBREAKS,
PROPERTY_HSCROLL,
PROPERTY_LABEL,
PROPERTY_LINECOLOR,
PROPERTY_MULTISELECTION,
PROPERTY_PRINTABLE,
PROPERTY_TABINDEX,
PROPERTY_TABSTOP,
PROPERTY_TEXTCOLOR,
PROPERTY_VSCROLL,
PROPERTY_CONTROLLABEL,
PROPERTY_RICH_TEXT,
PROPERTY_VERTICAL_ALIGN,
PROPERTY_IMAGE_URL,
PROPERTY_IMAGE_POSITION,
PROPERTY_ENABLEVISIBLE
};
Sequence< Property > aNewProps( _rProps.getLength() );
Property* pNewProps = aNewProps.getArray();
const Property* pProps = _rProps.getConstArray();
const Property* pPropsEnd = pProps + _rProps.getLength();
for ( ; pProps != pPropsEnd; ++pProps )
{
if ( aForbiddenProperties.find( pProps->Name ) == aForbiddenProperties.end()
&& (bAllowDropDown || pProps->Name != PROPERTY_DROPDOWN))
*pNewProps++ = *pProps;
}
aNewProps.realloc( pNewProps - aNewProps.getArray() );
_rProps = aNewProps;
2000-09-18 15:33:13 +00:00
}
2000-11-23 07:48:15 +00:00
void OGridColumn::setOwnProperties(Sequence<Property>& aDescriptor)
2000-09-18 15:33:13 +00:00
{
aDescriptor.realloc(5);
Property* pProperties = aDescriptor.getArray();
DECL_PROP1(LABEL, OUString, BOUND);
2000-09-18 15:33:13 +00:00
DECL_PROP3(WIDTH, sal_Int32, BOUND, MAYBEVOID, MAYBEDEFAULT);
DECL_PROP3(ALIGN, sal_Int16, BOUND, MAYBEVOID, MAYBEDEFAULT);
DECL_BOOL_PROP2(HIDDEN, BOUND, MAYBEDEFAULT);
DECL_PROP1(COLUMNSERVICENAME, OUString, READONLY);
2000-09-18 15:33:13 +00:00
}
2000-11-23 07:48:15 +00:00
// Reference<XPropertySet>
2000-11-23 07:48:15 +00:00
void OGridColumn::getFastPropertyValue(Any& rValue, sal_Int32 nHandle ) const
2000-09-18 15:33:13 +00:00
{
switch (nHandle)
{
case PROPERTY_ID_COLUMNSERVICENAME:
rValue <<= m_aModelName;
break;
case PROPERTY_ID_LABEL:
rValue <<= m_aLabel;
break;
case PROPERTY_ID_WIDTH:
rValue = m_aWidth;
break;
case PROPERTY_ID_ALIGN:
rValue = m_aAlign;
break;
case PROPERTY_ID_HIDDEN:
rValue = m_aHidden;
break;
default:
OPropertySetAggregationHelper::getFastPropertyValue(rValue, nHandle);
}
}
2000-11-23 07:48:15 +00:00
sal_Bool OGridColumn::convertFastPropertyValue( Any& rConvertedValue, Any& rOldValue,
sal_Int32 nHandle, const Any& rValue )
2000-09-18 15:33:13 +00:00
{
bool bModified(false);
2000-09-18 15:33:13 +00:00
switch (nHandle)
{
case PROPERTY_ID_LABEL:
bModified = tryPropertyValue(rConvertedValue, rOldValue, rValue, m_aLabel);
break;
case PROPERTY_ID_WIDTH:
bModified = tryPropertyValue(rConvertedValue, rOldValue, rValue, m_aWidth, cppu::UnoType<sal_Int32>::get());
2000-09-18 15:33:13 +00:00
break;
case PROPERTY_ID_ALIGN:
bModified = tryPropertyValue( rConvertedValue, rOldValue, rValue, m_aAlign, cppu::UnoType<sal_Int32>::get());
// strange enough, css.awt.TextAlign is a 32-bit integer, while the Align property (both here for grid controls
// and for ordinary toolkit controls) is a 16-bit integer. So, allow for 32 bit, but normalize it to 16 bit
if ( bModified )
2000-12-14 12:46:11 +00:00
{
sal_Int32 nAlign( 0 );
if ( rConvertedValue >>= nAlign )
rConvertedValue <<= static_cast<sal_Int16>(nAlign);
2000-12-14 12:46:11 +00:00
}
2000-09-18 15:33:13 +00:00
break;
case PROPERTY_ID_HIDDEN:
bModified = tryPropertyValue(rConvertedValue, rOldValue, rValue, getBOOL(m_aHidden));
break;
}
return bModified;
}
void OGridColumn::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const Any& rValue )
2000-09-18 15:33:13 +00:00
{
switch (nHandle)
{
case PROPERTY_ID_LABEL:
2000-11-23 07:48:15 +00:00
DBG_ASSERT(rValue.getValueType().getTypeClass() == TypeClass_STRING, "invalid type" );
2000-09-18 15:33:13 +00:00
rValue >>= m_aLabel;
break;
case PROPERTY_ID_WIDTH:
m_aWidth = rValue;
break;
case PROPERTY_ID_ALIGN:
m_aAlign = rValue;
break;
case PROPERTY_ID_HIDDEN:
m_aHidden = rValue;
break;
}
}
2000-11-23 07:48:15 +00:00
// XPropertyState
2000-11-23 07:48:15 +00:00
Any OGridColumn::getPropertyDefaultByHandle( sal_Int32 nHandle ) const
2000-09-18 15:33:13 +00:00
{
switch (nHandle)
{
case PROPERTY_ID_WIDTH:
case PROPERTY_ID_ALIGN:
2000-11-23 07:48:15 +00:00
return Any();
2000-09-18 15:33:13 +00:00
case PROPERTY_ID_HIDDEN:
return makeAny(false);
2000-09-18 15:33:13 +00:00
default:
return OPropertySetAggregationHelper::getPropertyDefaultByHandle(nHandle);
}
}
// XCloneable
Reference< XCloneable > SAL_CALL OGridColumn::createClone( )
{
return createCloneColumn();
}
// XPersistObject
void OGridColumn::write(const Reference<XObjectOutputStream>& _rxOutStream)
2000-09-18 15:33:13 +00:00
{
// 1. Write the UnoControl
2000-11-23 07:48:15 +00:00
Reference<XMarkableStream> xMark(_rxOutStream, UNO_QUERY);
2000-09-18 15:33:13 +00:00
sal_Int32 nMark = xMark->createMark();
sal_Int32 nLen = 0;
_rxOutStream->writeLong(nLen);
2000-11-23 07:48:15 +00:00
Reference<XPersistObject> xPersist;
2000-09-18 15:33:13 +00:00
if (query_aggregation(m_xAggregate, xPersist))
xPersist->write(_rxOutStream);
// Calculate the length
2000-09-18 15:33:13 +00:00
nLen = xMark->offsetToMark(nMark) - 4;
xMark->jumpToMark(nMark);
_rxOutStream->writeLong(nLen);
xMark->jumpToFurthest();
xMark->deleteMark(nMark);
// 2. Write a version number
2000-09-18 15:33:13 +00:00
_rxOutStream->writeShort(0x0002);
sal_uInt16 nAnyMask = 0;
2000-11-23 07:48:15 +00:00
if (m_aWidth.getValueType().getTypeClass() == TypeClass_LONG)
2000-09-18 15:33:13 +00:00
nAnyMask |= WIDTH;
2000-12-14 12:46:11 +00:00
if (m_aAlign.getValueTypeClass() == TypeClass_SHORT)
2000-09-18 15:33:13 +00:00
nAnyMask |= ALIGN;
nAnyMask |= COMPATIBLE_HIDDEN;
_rxOutStream->writeShort(nAnyMask);
if (nAnyMask & WIDTH)
_rxOutStream->writeLong(getINT32(m_aWidth));
if (nAnyMask & ALIGN)
_rxOutStream->writeShort(getINT16(m_aAlign));
// Name
_rxOutStream << m_aLabel;
// the new place for the hidden flag : after m_aLabel, so older office version read the correct label, too
if (nAnyMask & COMPATIBLE_HIDDEN)
_rxOutStream->writeBoolean(getBOOL(m_aHidden));
}
void OGridColumn::read(const Reference<XObjectInputStream>& _rxInStream)
2000-09-18 15:33:13 +00:00
{
// 1. Read the UnoControl
2000-09-18 15:33:13 +00:00
sal_Int32 nLen = _rxInStream->readLong();
if (nLen)
{
2000-11-23 07:48:15 +00:00
Reference<XMarkableStream> xMark(_rxInStream, UNO_QUERY);
2000-09-18 15:33:13 +00:00
sal_Int32 nMark = xMark->createMark();
2000-11-23 07:48:15 +00:00
Reference<XPersistObject> xPersist;
2000-09-18 15:33:13 +00:00
if (query_aggregation(m_xAggregate, xPersist))
xPersist->read(_rxInStream);
xMark->jumpToMark(nMark);
_rxInStream->skipBytes(nLen);
xMark->deleteMark(nMark);
}
// 2. Write a version number
_rxInStream->readShort(); // version;
2000-09-18 15:33:13 +00:00
sal_uInt16 nAnyMask = _rxInStream->readShort();
if (nAnyMask & WIDTH)
{
sal_Int32 nValue = _rxInStream->readLong();
m_aWidth <<= nValue;
2000-09-18 15:33:13 +00:00
}
if (nAnyMask & ALIGN)
{
sal_Int16 nValue = _rxInStream->readShort();
m_aAlign <<= nValue;
}
if (nAnyMask & OLD_HIDDEN)
{
bool bValue = _rxInStream->readBoolean();
m_aHidden <<= bValue;
2000-09-18 15:33:13 +00:00
}
// Name
_rxInStream >> m_aLabel;
if (nAnyMask & COMPATIBLE_HIDDEN)
{
bool bValue = _rxInStream->readBoolean();
m_aHidden <<= bValue;
2000-09-18 15:33:13 +00:00
}
}
IMPL_COLUMN(TextFieldColumn, FRM_SUN_COMPONENT_TEXTFIELD, false);
IMPL_COLUMN(PatternFieldColumn, FRM_SUN_COMPONENT_PATTERNFIELD, false);
IMPL_COLUMN(DateFieldColumn, FRM_SUN_COMPONENT_DATEFIELD, true);
IMPL_COLUMN(TimeFieldColumn, FRM_SUN_COMPONENT_TIMEFIELD, false);
IMPL_COLUMN(NumericFieldColumn, FRM_SUN_COMPONENT_NUMERICFIELD, false);
IMPL_COLUMN(CurrencyFieldColumn, FRM_SUN_COMPONENT_CURRENCYFIELD, false);
IMPL_COLUMN(CheckBoxColumn, FRM_SUN_COMPONENT_CHECKBOX, false);
IMPL_COLUMN(ComboBoxColumn, FRM_SUN_COMPONENT_COMBOBOX, false);
IMPL_COLUMN(ListBoxColumn, FRM_SUN_COMPONENT_LISTBOX, false);
IMPL_COLUMN(FormattedFieldColumn, FRM_SUN_COMPONENT_FORMATTEDFIELD, false);
2000-09-18 15:33:13 +00:00
2000-09-18 15:33:13 +00:00
} // namespace frm
2000-09-18 15:33:13 +00:00
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */