summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
Diffstat (limited to 'desktop')
-rw-r--r--desktop/inc/app.hxx21
-rwxr-xr-x[-rw-r--r--]desktop/inc/deployment.hrc9
-rwxr-xr-x[-rw-r--r--]desktop/inc/makefile.mk0
-rwxr-xr-x[-rw-r--r--]desktop/os2/source/applauncher/makefile.mk6
-rw-r--r--desktop/os2/source/applauncher/os2quickstart.cxx (renamed from desktop/os2/source/applauncher/quickstart.cxx)0
-rw-r--r--desktop/prj/build.lst15
-rw-r--r--desktop/prj/d.lst17
-rwxr-xr-x[-rw-r--r--]desktop/qa/deployment_misc/makefile.mk16
-rw-r--r--desktop/qa/deployment_misc/test_dp_version.cxx9
-rwxr-xr-x[-rw-r--r--]desktop/qa/deployment_misc/version.map2
-rwxr-xr-x[-rw-r--r--]desktop/registry/data/org/openoffice/Office/makefile.mk0
-rwxr-xr-x[-rw-r--r--]desktop/scripts/basis-link0
-rwxr-xr-x[-rw-r--r--]desktop/scripts/makefile.mk0
-rwxr-xr-x[-rw-r--r--]desktop/scripts/mozwrapper.sh0
-rwxr-xr-x[-rw-r--r--]desktop/scripts/odf-basis-link0
-rwxr-xr-x[-rw-r--r--]desktop/scripts/sbase.sh2
-rwxr-xr-x[-rw-r--r--]desktop/scripts/scalc.sh2
-rwxr-xr-x[-rw-r--r--]desktop/scripts/sdraw.sh2
-rwxr-xr-x[-rw-r--r--]desktop/scripts/simpress.sh2
-rwxr-xr-x[-rw-r--r--]desktop/scripts/smaster.sh2
-rwxr-xr-x[-rw-r--r--]desktop/scripts/smath.sh2
-rwxr-xr-x[-rw-r--r--]desktop/scripts/so-basis-link0
-rwxr-xr-x[-rw-r--r--]desktop/scripts/soffice.sh155
-rwxr-xr-x[-rw-r--r--]desktop/scripts/sweb.sh2
-rwxr-xr-x[-rw-r--r--]desktop/scripts/swriter.sh2
-rwxr-xr-x[-rw-r--r--]desktop/scripts/unoinfo.sh15
-rwxr-xr-x[-rw-r--r--]desktop/scripts/unopkg.sh40
-rwxr-xr-x[-rw-r--r--]desktop/scripts/ure-link0
-rw-r--r--desktop/source/app/app.cxx512
-rw-r--r--desktop/source/app/appfirststart.cxx204
-rw-r--r--desktop/source/app/appinit.cxx40
-rw-r--r--desktop/source/app/appsys.cxx7
-rw-r--r--desktop/source/app/check_ext_deps.cxx28
-rw-r--r--desktop/source/app/checkinstall.cxx3
-rw-r--r--desktop/source/app/cmdlineargs.cxx537
-rw-r--r--desktop/source/app/cmdlineargs.hxx48
-rw-r--r--desktop/source/app/cmdlinehelp.cxx99
-rw-r--r--desktop/source/app/cmdlinehelp.hxx1
-rw-r--r--desktop/source/app/configinit.cxx5
-rwxr-xr-x[-rw-r--r--]desktop/source/app/copyright_ascii_ooo.c0
-rwxr-xr-x[-rw-r--r--]desktop/source/app/copyright_ascii_sun.c0
-rwxr-xr-x[-rw-r--r--]desktop/source/app/desktop.hrc0
-rw-r--r--desktop/source/app/desktop.src1
-rw-r--r--desktop/source/app/desktopcontext.cxx5
-rw-r--r--desktop/source/app/desktopresid.cxx2
-rw-r--r--desktop/source/app/desktopresid.hxx2
-rw-r--r--desktop/source/app/dispatchwatcher.cxx25
-rw-r--r--desktop/source/app/dispatchwatcher.hxx4
-rwxr-xr-x[-rw-r--r--]desktop/source/app/exports.dxp1
-rw-r--r--desktop/source/app/langselect.cxx16
-rw-r--r--desktop/source/app/lockfile.cxx36
-rwxr-xr-x[-rw-r--r--]desktop/source/app/main.c0
-rwxr-xr-x[-rw-r--r--]desktop/source/app/makefile.mk0
-rw-r--r--desktop/source/app/officeipcthread.cxx50
-rw-r--r--desktop/source/app/officeipcthread.hxx2
-rw-r--r--desktop/source/app/sofficemain.cxx24
-rwxr-xr-x[-rw-r--r--]desktop/source/app/sofficemain.h0
-rw-r--r--desktop/source/app/userinstall.cxx30
-rwxr-xr-x[-rw-r--r--]desktop/source/app/version.map0
-rwxr-xr-xdesktop/source/deployment/deployment.component64
-rw-r--r--desktop/source/deployment/dp_log.cxx4
-rw-r--r--desktop/source/deployment/dp_persmap.cxx21
-rw-r--r--desktop/source/deployment/dp_services.cxx21
-rw-r--r--desktop/source/deployment/dp_xml.cxx14
-rwxr-xr-xdesktop/source/deployment/gui/deploymentgui.component40
-rw-r--r--desktop/source/deployment/gui/descedit.cxx2
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/gui/dp_gui.h0
-rwxr-xr-xdesktop/source/deployment/gui/dp_gui.hrc63
-rw-r--r--desktop/source/deployment/gui/dp_gui_autoscrolledit.cxx3
-rw-r--r--desktop/source/deployment/gui/dp_gui_backend.src45
-rw-r--r--desktop/source/deployment/gui/dp_gui_dependencydialog.src2
-rw-r--r--[-rwxr-xr-x]desktop/source/deployment/gui/dp_gui_dialog.src80
-rw-r--r--desktop/source/deployment/gui/dp_gui_dialog2.cxx136
-rw-r--r--desktop/source/deployment/gui/dp_gui_dialog2.hxx28
-rw-r--r--desktop/source/deployment/gui/dp_gui_dialog2.src30
-rw-r--r--desktop/source/deployment/gui/dp_gui_extensioncmdqueue.cxx92
-rw-r--r--desktop/source/deployment/gui/dp_gui_extlistbox.cxx43
-rw-r--r--desktop/source/deployment/gui/dp_gui_extlistbox.hxx16
-rw-r--r--desktop/source/deployment/gui/dp_gui_service.cxx14
-rw-r--r--desktop/source/deployment/gui/dp_gui_shared.hxx2
-rw-r--r--desktop/source/deployment/gui/dp_gui_system.cxx62
-rw-r--r--desktop/source/deployment/gui/dp_gui_system.hxx40
-rw-r--r--desktop/source/deployment/gui/dp_gui_theextmgr.cxx4
-rw-r--r--desktop/source/deployment/gui/dp_gui_theextmgr.hxx2
-rw-r--r--desktop/source/deployment/gui/dp_gui_updatedata.hxx5
-rw-r--r--desktop/source/deployment/gui/dp_gui_updatedialog.cxx880
-rw-r--r--desktop/source/deployment/gui/dp_gui_updatedialog.hxx63
-rw-r--r--desktop/source/deployment/gui/dp_gui_updatedialog.src36
-rw-r--r--desktop/source/deployment/gui/dp_gui_updateinstalldialog.cxx10
-rw-r--r--desktop/source/deployment/gui/dp_gui_updateinstalldialog.hxx2
-rw-r--r--desktop/source/deployment/gui/dp_gui_updateinstalldialog.src1
-rw-r--r--desktop/source/deployment/gui/license_dialog.cxx35
-rw-r--r--desktop/source/deployment/gui/license_dialog.hxx5
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/gui/makefile.mk12
-rw-r--r--desktop/source/deployment/inc/db.hxx38
-rw-r--r--desktop/source/deployment/inc/dp_dependencies.hxx9
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/inc/dp_interact.h0
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/inc/dp_misc.h0
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/inc/dp_misc.mk0
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/inc/dp_persmap.h4
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/inc/dp_resource.h6
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/inc/dp_ucb.h0
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/inc/dp_xml.h0
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/makefile.mk9
-rw-r--r--desktop/source/deployment/manager/dp_activepackages.cxx2
-rw-r--r--desktop/source/deployment/manager/dp_commandenvironments.cxx36
-rw-r--r--desktop/source/deployment/manager/dp_commandenvironments.hxx18
-rw-r--r--desktop/source/deployment/manager/dp_extensionmanager.cxx188
-rw-r--r--desktop/source/deployment/manager/dp_extensionmanager.hxx21
-rw-r--r--desktop/source/deployment/manager/dp_informationprovider.cxx41
-rw-r--r--desktop/source/deployment/manager/dp_manager.cxx68
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/manager/dp_manager.h0
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/manager/dp_manager.hrc0
-rw-r--r--desktop/source/deployment/manager/dp_managerfac.cxx4
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/manager/makefile.mk0
-rw-r--r--desktop/source/deployment/misc/db.cxx1
-rw-r--r--desktop/source/deployment/misc/dp_dependencies.cxx48
-rw-r--r--desktop/source/deployment/misc/dp_descriptioninfoset.cxx3
-rw-r--r--desktop/source/deployment/misc/dp_misc.cxx8
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/misc/dp_misc.hrc0
-rw-r--r--desktop/source/deployment/misc/dp_misc.src4
-rw-r--r--desktop/source/deployment/misc/dp_platform.cxx15
-rw-r--r--desktop/source/deployment/misc/dp_resource.cxx4
-rw-r--r--desktop/source/deployment/misc/dp_ucb.cxx2
-rw-r--r--desktop/source/deployment/misc/dp_update.cxx45
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/misc/makefile.mk0
-rw-r--r--desktop/source/deployment/registry/component/dp_compbackenddb.cxx43
-rw-r--r--desktop/source/deployment/registry/component/dp_component.cxx1043
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/registry/component/dp_component.hrc1
-rw-r--r--desktop/source/deployment/registry/component/dp_component.src5
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/registry/component/makefile.mk0
-rw-r--r--desktop/source/deployment/registry/configuration/dp_configuration.cxx137
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/registry/configuration/dp_configuration.hrc0
-rw-r--r--desktop/source/deployment/registry/configuration/dp_configurationbackenddb.cxx22
-rw-r--r--desktop/source/deployment/registry/configuration/dp_configurationbackenddb.hxx1
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/registry/configuration/makefile.mk0
-rw-r--r--desktop/source/deployment/registry/dp_backend.cxx89
-rw-r--r--desktop/source/deployment/registry/dp_backenddb.cxx130
-rw-r--r--desktop/source/deployment/registry/dp_registry.cxx30
-rw-r--r--desktop/source/deployment/registry/executable/dp_executable.cxx45
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/registry/executable/makefile.mk0
-rw-r--r--desktop/source/deployment/registry/help/dp_help.cxx478
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/registry/help/dp_help.hrc0
-rw-r--r--desktop/source/deployment/registry/help/dp_helpbackenddb.cxx46
-rw-r--r--desktop/source/deployment/registry/help/dp_helpbackenddb.hxx2
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/registry/help/makefile.mk0
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/registry/inc/dp_backend.h38
-rw-r--r--desktop/source/deployment/registry/inc/dp_backenddb.hxx15
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/registry/inc/dp_registry.hrc0
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/registry/makefile.mk0
-rw-r--r--desktop/source/deployment/registry/package/dp_extbackenddb.cxx23
-rw-r--r--desktop/source/deployment/registry/package/dp_extbackenddb.hxx11
-rw-r--r--[-rwxr-xr-x]desktop/source/deployment/registry/package/dp_package.cxx81
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/registry/package/dp_package.hrc0
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/registry/package/makefile.mk0
-rw-r--r--desktop/source/deployment/registry/script/dp_lib_container.cxx6
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/registry/script/dp_lib_container.h17
-rw-r--r--desktop/source/deployment/registry/script/dp_script.cxx202
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/registry/script/dp_script.hrc0
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/registry/script/makefile.mk0
-rw-r--r--desktop/source/deployment/registry/sfwk/dp_parceldesc.cxx4
-rw-r--r--desktop/source/deployment/registry/sfwk/dp_sfwk.cxx66
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/registry/sfwk/dp_sfwk.hrc0
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/registry/sfwk/makefile.mk0
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/target.pmk0
-rwxr-xr-x[-rw-r--r--]desktop/source/deployment/unopkg/makefile.mk0
-rwxr-xr-x[-rw-r--r--]desktop/source/inc/helpid.hrc71
-rw-r--r--desktop/source/migration/cfgfilter.cxx336
-rw-r--r--desktop/source/migration/cfgfilter.hxx175
-rwxr-xr-x[-rw-r--r--]desktop/source/migration/makefile.mk3
-rw-r--r--desktop/source/migration/migration.cxx58
-rw-r--r--desktop/source/migration/migration_impl.hxx6
-rw-r--r--desktop/source/migration/pages.cxx671
-rw-r--r--desktop/source/migration/pages.hxx212
-rw-r--r--desktop/source/migration/services/autocorrmigration.cxx10
-rw-r--r--desktop/source/migration/services/basicmigration.cxx8
-rw-r--r--desktop/source/migration/services/cexports.cxx7
-rw-r--r--desktop/source/migration/services/cexportsoo3.cxx7
-rwxr-xr-x[-rw-r--r--]desktop/source/migration/services/cppumaker.mk0
-rw-r--r--desktop/source/migration/services/jvmfwk.cxx24
-rwxr-xr-x[-rw-r--r--]desktop/source/migration/services/makefile.mk20
-rwxr-xr-xdesktop/source/migration/services/migrationoo2.component37
-rwxr-xr-x[-rw-r--r--]desktop/source/migration/services/migrationoo2.xml0
-rwxr-xr-xdesktop/source/migration/services/migrationoo3.component34
-rw-r--r--desktop/source/migration/services/migrationoo3.map8
-rw-r--r--desktop/source/migration/services/oo3extensionmigration.cxx32
-rw-r--r--desktop/source/migration/services/wordbookmigration.cxx10
-rw-r--r--desktop/source/migration/wizard.cxx603
-rwxr-xr-xdesktop/source/migration/wizard.hrc100
-rw-r--r--desktop/source/migration/wizard.hxx105
-rw-r--r--desktop/source/migration/wizard.src442
-rw-r--r--desktop/source/offacc/acceptor.cxx43
-rwxr-xr-x[-rw-r--r--]desktop/source/offacc/makefile.mk8
-rwxr-xr-xdesktop/source/offacc/offacc.component34
-rwxr-xr-x[-rw-r--r--]desktop/source/pagein/file_image.h0
-rwxr-xr-x[-rw-r--r--]desktop/source/pagein/file_image_unx.c0
-rwxr-xr-x[-rw-r--r--]desktop/source/pagein/makefile.mk59
-rw-r--r--desktop/source/pagein/pagein-main.c12
-rwxr-xr-x[-rw-r--r--]desktop/source/pagein/pagein.c11
-rwxr-xr-x[-rw-r--r--]desktop/source/pkgchk/unopkg/makefile.mk0
-rw-r--r--desktop/source/pkgchk/unopkg/unopkg_app.cxx46
-rw-r--r--desktop/source/pkgchk/unopkg/unopkg_cmdenv.cxx2
-rwxr-xr-x[-rw-r--r--]desktop/source/pkgchk/unopkg/unopkg_main.c0
-rwxr-xr-x[-rw-r--r--]desktop/source/pkgchk/unopkg/unopkg_main.h0
-rw-r--r--desktop/source/pkgchk/unopkg/unopkg_misc.cxx9
-rwxr-xr-x[-rw-r--r--]desktop/source/pkgchk/unopkg/unopkg_shared.h2
-rwxr-xr-x[-rw-r--r--]desktop/source/pkgchk/unopkg/version.map0
-rwxr-xr-x[-rw-r--r--]desktop/source/registration/com/sun/star/registration/Registration.java5
-rwxr-xr-x[-rw-r--r--]desktop/source/registration/com/sun/star/registration/makefile.mk7
-rwxr-xr-x[-rw-r--r--]desktop/source/registration/com/sun/star/registration/manifest0
-rwxr-xr-xdesktop/source/registration/com/sun/star/registration/productregistration.jar.component34
-rwxr-xr-x[-rw-r--r--]desktop/source/registration/com/sun/star/servicetag/BrowserSupport.java0
-rwxr-xr-x[-rw-r--r--]desktop/source/registration/com/sun/star/servicetag/Installer.java0
-rwxr-xr-x[-rw-r--r--]desktop/source/registration/com/sun/star/servicetag/LinuxSystemEnvironment.java1
-rwxr-xr-x[-rw-r--r--]desktop/source/registration/com/sun/star/servicetag/RegistrationData.java0
-rwxr-xr-x[-rw-r--r--]desktop/source/registration/com/sun/star/servicetag/RegistrationDocument.java0
-rwxr-xr-x[-rw-r--r--]desktop/source/registration/com/sun/star/servicetag/Registry.java1
-rwxr-xr-x[-rw-r--r--]desktop/source/registration/com/sun/star/servicetag/ServiceTag.java0
-rwxr-xr-x[-rw-r--r--]desktop/source/registration/com/sun/star/servicetag/SolarisServiceTag.java0
-rwxr-xr-x[-rw-r--r--]desktop/source/registration/com/sun/star/servicetag/SolarisSystemEnvironment.java1
-rwxr-xr-x[-rw-r--r--]desktop/source/registration/com/sun/star/servicetag/SunConnection.java0
-rwxr-xr-x[-rw-r--r--]desktop/source/registration/com/sun/star/servicetag/SysnetRegistryHelper.java1
-rwxr-xr-x[-rw-r--r--]desktop/source/registration/com/sun/star/servicetag/SystemEnvironment.java0
-rwxr-xr-x[-rw-r--r--]desktop/source/registration/com/sun/star/servicetag/UnauthorizedAccessException.java0
-rwxr-xr-x[-rw-r--r--]desktop/source/registration/com/sun/star/servicetag/Util.java0
-rwxr-xr-x[-rw-r--r--]desktop/source/registration/com/sun/star/servicetag/WindowsSystemEnvironment.java0
-rwxr-xr-x[-rw-r--r--]desktop/source/registration/com/sun/star/servicetag/makefile.mk0
-rwxr-xr-x[-rw-r--r--]desktop/source/registration/com/sun/star/servicetag/resources/product_registration.xsd0
-rw-r--r--desktop/source/so_comp/evaluation.cxx9
-rwxr-xr-x[-rw-r--r--]desktop/source/so_comp/makefile.mk12
-rw-r--r--desktop/source/so_comp/oemjob.cxx73
-rw-r--r--desktop/source/so_comp/services.cxx48
-rwxr-xr-xdesktop/source/so_comp/socomp.component37
-rwxr-xr-x[-rw-r--r--]desktop/source/splash/makefile.mk11
-rw-r--r--desktop/source/splash/services_spl.cxx47
-rwxr-xr-xdesktop/source/splash/spl.component37
-rw-r--r--desktop/source/splash/splash.cxx47
-rw-r--r--desktop/test/deployment/active/Addons.xcu67
-rwxr-xr-xdesktop/test/deployment/active/Dispatch.java101
-rwxr-xr-xdesktop/test/deployment/active/MANIFEST.MF3
-rw-r--r--desktop/test/deployment/active/ProtocolHandler.xcu48
-rwxr-xr-xdesktop/test/deployment/active/Provider.java81
-rwxr-xr-xdesktop/test/deployment/active/Services.java72
-rw-r--r--desktop/test/deployment/active/active_native.cxx320
-rwxr-xr-xdesktop/test/deployment/active/active_python.py120
-rwxr-xr-xdesktop/test/deployment/active/description.xml36
-rwxr-xr-xdesktop/test/deployment/active/makefile.mk87
-rwxr-xr-xdesktop/test/deployment/active/manifest.xml43
-rw-r--r--desktop/test/deployment/boxt/boxt.cxx102
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/boxt/description.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/boxt/makefile.mk2
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/boxt/manifest.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/dependencies/readme.txt0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/display_name/readme.txt0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/executable_content/build/hello.c6
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/executable_content/build/makefile.mk0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/executable_content/build/readme.txt0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/executable_content/readme.txt0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/identifier/readme.txt0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/locationtest/LocationTest.java0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/locationtest/MANIFEST.MF0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/locationtest/delzip0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/locationtest/description.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/locationtest/makefile.mk3
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/locationtest/manifest.xml4
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/options/handler/com/sun/star/comp/extensionoptions/MANIFEST.MF0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/options/handler/com/sun/star/comp/extensionoptions/OptionsEventHandler.java0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/options/handler/com/sun/star/comp/extensionoptions/makefile.mk0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/options/readme.txt0
-rw-r--r--desktop/test/deployment/passive/Addons.xcu67
-rwxr-xr-xdesktop/test/deployment/passive/Dispatch.java101
-rwxr-xr-xdesktop/test/deployment/passive/MANIFEST.MF3
-rw-r--r--desktop/test/deployment/passive/ProtocolHandler.xcu48
-rwxr-xr-xdesktop/test/deployment/passive/Provider.java81
-rwxr-xr-xdesktop/test/deployment/passive/Services.java49
-rwxr-xr-xdesktop/test/deployment/passive/description.xml36
-rwxr-xr-xdesktop/test/deployment/passive/makefile.mk141
-rwxr-xr-xdesktop/test/deployment/passive/manifest.xml40
-rwxr-xr-xdesktop/test/deployment/passive/passive_java.component38
-rwxr-xr-xdesktop/test/deployment/passive/passive_native.component38
-rw-r--r--desktop/test/deployment/passive/passive_native.cxx289
-rwxr-xr-xdesktop/test/deployment/passive/passive_python.component38
-rwxr-xr-xdesktop/test/deployment/passive/passive_python.py101
-rw-r--r--[-rwxr-xr-x]desktop/test/deployment/simple_license/suppress_license.oxtbin2143 -> 2143 bytes
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/changing_display_name/readme.txt0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/changing_display_name/update1/change1.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/changing_display_name/update2/change1.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/default_url/readme.txt0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/default_url/update/default1.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/default_url/update/default2.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/default_url/update/feed1.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/defect/readme.txt0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/defect/update/fail1.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/defect/update/fail2.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/defect/update/fail3.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/defect/update/fail4.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/defect/update/info1.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/defect/update/info2.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/defect/update/info3.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/dependencies/publisher_en.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/dependencies/readme.txt0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/dependencies/release-notes_en.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/dependencies/update/update-dependencies.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/license/readme.txt0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/license/update/lic1.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/license/update/lic2.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/license/update/lic3.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/platform/readme.txt0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/publisher_de-DE-altmark.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/publisher_de-DE.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/publisher_de.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/publisher_en-GB.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/publisher_en-US-region1.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/publisher_en-US-region2.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/publisher_en-US.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/publisher_en-region3.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/publisher_en.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/readme.txt0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/release-notes_de-DE-altmark.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/release-notes_de-DE.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/release-notes_de.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/release-notes_en-GB.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/release-notes_en-US-region1.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/release-notes_en-US-region2.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/release-notes_en-US.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/release-notes_en-region3.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/release-notes_en.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/update/pub1.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/update/pub2.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/update/pub3.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/update/pub4.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/update/pub5.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/update/pub6.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/publisher/update/pub7.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/readme.txt0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/simple/readme.txt0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/simple/update/plain1.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/simple/update/plain2.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/simple/update/plain3.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/updatefeed/update/feed1.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/updatefeed/update/feed1.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/updatefeed/update/feed2.update.xml0
-rw-r--r--[-rwxr-xr-x]desktop/test/deployment/update/updateinfocreation/build/TestExtension.idl0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/updateinfocreation/build/description.xml0
-rwxr-xr-xdesktop/test/deployment/update/updateinfocreation/build/makefile.mk3
-rwxr-xr-xdesktop/test/deployment/update/updateinfocreation/build/manifest.xml4
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/updateinfocreation/readme.txt0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/website_update/readme.txt0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/website_update/update/web1.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/website_update/update/web1_de-DE-altmark.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/website_update/update/web1_de-DE.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/website_update/update/web1_de.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/website_update/update/web1_en-GB.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/website_update/update/web1_en-US-region1.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/website_update/update/web1_en-US-region2.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/website_update/update/web1_en-US.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/website_update/update/web1_en-region3.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/website_update/update/web1_en.html0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/website_update/update/web2.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/website_update/update/web3.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/website_update/update/web4.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/website_update/update/web5.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/website_update/update/web6/description.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/website_update/update/web6/readme.txt0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/website_update/update/web7/description.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/website_update/update/web7/readme.txt0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/wrong_url/readme.txt0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/wrong_url/update/url1.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/wrong_url/update/url2.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/wrong_url/update/wrongdownload1.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/wrong_url/update/wrongdownload2.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/update/wrong_url/update/wrongdownload3.update.xml0
-rwxr-xr-x[-rw-r--r--]desktop/test/deployment/version/readme.txt0
-rw-r--r--desktop/unx/source/args.c152
-rw-r--r--desktop/unx/source/args.h50
-rwxr-xr-x[-rw-r--r--]desktop/unx/source/makefile.mk25
-rwxr-xr-x[-rw-r--r--]desktop/unx/source/officeloader/makefile.mk0
-rw-r--r--desktop/unx/source/officeloader/officeloader.cxx2
-rwxr-xr-x[-rw-r--r--]desktop/unx/source/splashx.c53
-rwxr-xr-x[-rw-r--r--]desktop/unx/source/splashx.h0
-rwxr-xr-x[-rw-r--r--]desktop/unx/source/start.c565
-rwxr-xr-x[-rw-r--r--]desktop/unx/splash/exports.map1
-rwxr-xr-x[-rw-r--r--]desktop/unx/splash/makefile.mk21
-rw-r--r--desktop/unx/splash/services_unxsplash.cxx159
-rwxr-xr-xdesktop/unx/splash/splash.component7
-rw-r--r--desktop/unx/splash/unxsplash.cxx82
-rw-r--r--desktop/unx/splash/unxsplash.hxx16
-rwxr-xr-x[-rw-r--r--]desktop/util/makefile.mk8
-rwxr-xr-x[-rw-r--r--]desktop/util/ooverinfo.rc2
-rwxr-xr-x[-rw-r--r--]desktop/util/ooverinfo2.rc18
-rwxr-xr-x[-rw-r--r--]desktop/util/template.manifest0
-rw-r--r--[-rwxr-xr-x]desktop/util/verinfo.rc4
-rw-r--r--desktop/util/writer.r1
-rwxr-xr-xdesktop/win32/source/QuickStart/OOQuickStart.rc130
-rwxr-xr-xdesktop/win32/source/QuickStart/QuickStart.cpp426
-rwxr-xr-xdesktop/win32/source/QuickStart/QuickStart.h15
-rwxr-xr-xdesktop/win32/source/QuickStart/StdAfx.h42
-rw-r--r--desktop/win32/source/QuickStart/makefile.mk74
-rwxr-xr-xdesktop/win32/source/QuickStart/resource.h35
-rwxr-xr-xdesktop/win32/source/QuickStart/so/QuickStart.rc130
-rwxr-xr-xdesktop/win32/source/QuickStart/so/makefile.mk77
-rw-r--r--desktop/win32/source/applauncher/launcher.cxx1
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/applauncher/makefile.mk4
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/applauncher/ooo/makefile.mk0
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/applauncher/verinfo.rc0
-rw-r--r--desktop/win32/source/extendloaderenvironment.hxx2
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/guiloader/makefile.mk4
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/guistdio/guistdio.inc0
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/guistdio/makefile.mk0
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/main.h0
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/makefile.mk0
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/officeloader/makefile.mk18
-rw-r--r--desktop/win32/source/officeloader/officeloader.cxx8
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/rebase/Resource.h0
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/rebase/makefile.mk0
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/rebase/rcfooter.txt0
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/rebase/rcheader.txt0
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/rebase/rctmpl.txt0
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/rebase/rebasegui.ulf0
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/setup/Resource.h0
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/setup/makefile.mk4
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/setup/rcfooter.txt0
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/setup/rcheader.txt0
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/setup/rctmpl.txt0
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/setup/setup.cpp0
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/setup/setup.ulf2
-rw-r--r--desktop/win32/source/setup/setup_main.cxx4
-rwxr-xr-x[-rw-r--r--]desktop/win32/source/wrapper.h0
-rwxr-xr-x[-rw-r--r--]desktop/zipintro/delzip0
-rwxr-xr-x[-rw-r--r--]desktop/zipintro/makefile.mk4
430 files changed, 10073 insertions, 4810 deletions
diff --git a/desktop/inc/app.hxx b/desktop/inc/app.hxx
index 977080c73a..7f9a7efde4 100644
--- a/desktop/inc/app.hxx
+++ b/desktop/inc/app.hxx
@@ -63,6 +63,8 @@ class Desktop : public Application
{
friend class UserInstall;
+ int doShutdown();
+
public:
enum BootstrapError
{
@@ -84,15 +86,15 @@ class Desktop : public Application
Desktop();
~Desktop();
- virtual void Main( );
+ virtual int Main( );
virtual void Init();
virtual void InitFinished();
virtual void DeInit();
- virtual BOOL QueryExit();
- virtual USHORT Exception(USHORT nError);
+ virtual sal_Bool QueryExit();
+ virtual sal_uInt16 Exception(sal_uInt16 nError);
virtual void SystemSettingsChanging( AllSettings& rSettings, Window* pFrame );
virtual void AppEvent( const ApplicationEvent& rAppEvent );
-
+
DECL_LINK( OpenClients_Impl, void* );
static void OpenClients();
@@ -127,10 +129,7 @@ class Desktop : public Application
static sal_Bool CheckOEM();
static sal_Bool isCrashReporterEnabled();
- // first-start (ever) & license relate methods
- static rtl::OUString GetLicensePath();
- static sal_Bool LicenseNeedsAcceptance();
- static sal_Bool IsFirstStartWizardNeeded();
+ // first-start (ever) related methods
static sal_Bool CheckExtensionDependencies();
static void DoRestartActionsIfNecessary( sal_Bool bQuickStart );
@@ -140,6 +139,8 @@ class Desktop : public Application
void SetSplashScreenText( const ::rtl::OUString& rText );
void SetSplashScreenProgress( sal_Int32 );
+ void CreateProcessServiceFactory();
+
private:
// Bootstrap methods
::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > CreateApplicationServiceManager();
@@ -162,7 +163,7 @@ class Desktop : public Application
void StartSetup( const ::rtl::OUString& aParameters );
// Get a resource message string securely e.g. if resource cannot be retrieved return aFaultBackMsg
- ::rtl::OUString GetMsgString( USHORT nId, const ::rtl::OUString& aFaultBackMsg );
+ ::rtl::OUString GetMsgString( sal_uInt16 nId, const ::rtl::OUString& aFaultBackMsg );
// Create a error message depending on bootstrap failure code and an optional file url
::rtl::OUString CreateErrorMsgString( utl::Bootstrap::FailureCode nFailureCode,
@@ -201,7 +202,7 @@ class Desktop : public Application
sal_Bool m_bMinimized;
sal_Bool m_bInvisible;
bool m_bServicesRegistered;
- USHORT m_nAppEvents;
+ sal_uInt16 m_nAppEvents;
BootstrapError m_aBootstrapError;
BootstrapStatus m_aBootstrapStatus;
diff --git a/desktop/inc/deployment.hrc b/desktop/inc/deployment.hrc
index 92c5742fcd..65131af453 100644..100755
--- a/desktop/inc/deployment.hrc
+++ b/desktop/inc/deployment.hrc
@@ -40,27 +40,19 @@
#define RID_DEPLOYMENT_BUNDLE_START (RID_DEPLOYMENT_START+2000)
#define RID_IMG_DEF_PACKAGE_BUNDLE RID_DEPLOYMENT_BUNDLE_START
-#define RID_IMG_DEF_PACKAGE_BUNDLE_HC (RID_DEPLOYMENT_BUNDLE_START+1)
#define RID_DEPLOYMENT_SCRIPT_START (RID_DEPLOYMENT_START+2500)
#define RID_IMG_SCRIPTLIB RID_DEPLOYMENT_SCRIPT_START
-#define RID_IMG_SCRIPTLIB_HC (RID_DEPLOYMENT_SCRIPT_START+1)
#define RID_IMG_DIALOGLIB (RID_DEPLOYMENT_SCRIPT_START+2)
-#define RID_IMG_DIALOGLIB_HC (RID_DEPLOYMENT_SCRIPT_START+3)
#define RID_DEPLOYMENT_CONF_START (RID_DEPLOYMENT_START+3000)
#define RID_IMG_CONF_XML RID_DEPLOYMENT_CONF_START
-#define RID_IMG_CONF_XML_HC (RID_DEPLOYMENT_CONF_START+1)
#define RID_DEPLOYMENT_COMPONENT_START (RID_DEPLOYMENT_START+3500)
#define RID_IMG_COMPONENT RID_DEPLOYMENT_COMPONENT_START
-#define RID_IMG_COMPONENT_HC (RID_DEPLOYMENT_COMPONENT_START+1)
#define RID_IMG_JAVA_COMPONENT (RID_DEPLOYMENT_COMPONENT_START+2)
-#define RID_IMG_JAVA_COMPONENT_HC (RID_DEPLOYMENT_COMPONENT_START+3)
#define RID_IMG_TYPELIB (RID_DEPLOYMENT_COMPONENT_START+4)
-#define RID_IMG_TYPELIB_HC (RID_DEPLOYMENT_COMPONENT_START+5)
#define RID_IMG_JAVA_TYPELIB (RID_DEPLOYMENT_COMPONENT_START+6)
-#define RID_IMG_JAVA_TYPELIB_HC (RID_DEPLOYMENT_COMPONENT_START+7)
#define RID_DEPLOYMENT_UNOPKG_START (RID_DEPLOYMENT_START+4000)
#define RID_STR_UNOPKG_ACCEPT_LIC_1 (RID_DEPLOYMENT_UNOPKG_START+1)
@@ -83,5 +75,4 @@
#define RID_DEPLOYMENT_HELP_START (RID_DEPLOYMENT_START+5000)
#define RID_IMG_HELP RID_DEPLOYMENT_HELP_START
-#define RID_IMG_HELP_HC (RID_DEPLOYMENT_HELP_START+1)
#endif
diff --git a/desktop/inc/makefile.mk b/desktop/inc/makefile.mk
index 8715d81427..8715d81427 100644..100755
--- a/desktop/inc/makefile.mk
+++ b/desktop/inc/makefile.mk
diff --git a/desktop/os2/source/applauncher/makefile.mk b/desktop/os2/source/applauncher/makefile.mk
index bf71b57c2f..7eec8aee9c 100644..100755
--- a/desktop/os2/source/applauncher/makefile.mk
+++ b/desktop/os2/source/applauncher/makefile.mk
@@ -47,7 +47,7 @@ OBJFILES= \
$(OBJ)$/sbase.obj \
$(OBJ)$/smath.obj \
$(OBJ)$/officeloader.obj \
- $(OBJ)$/quickstart.obj
+ $(OBJ)$/os2quickstart.obj
APP1TARGET=swriter
APP1NOSAL=TRUE
@@ -106,13 +106,13 @@ APP7OBJS = \
$(OBJ)$/launcher.obj\
$(OBJ)$/officeloader.obj
-APP8TARGET=quickstart
+APP8TARGET=os2quickstart
APP8NOSAL=TRUE
APP8LINKRES=$(MISC)$/$(TARGET)8.res
APP8ICON=$(SOLARRESDIR)$/icons$/ooo-main-app.ico
APP8OBJS = \
$(OBJ)$/launcher.obj\
- $(OBJ)$/quickstart.obj
+ $(OBJ)$/os2quickstart.obj
# --- Targets ------------------------------------------------------
diff --git a/desktop/os2/source/applauncher/quickstart.cxx b/desktop/os2/source/applauncher/os2quickstart.cxx
index b67389272f..b67389272f 100644
--- a/desktop/os2/source/applauncher/quickstart.cxx
+++ b/desktop/os2/source/applauncher/os2quickstart.cxx
diff --git a/desktop/prj/build.lst b/desktop/prj/build.lst
index 162c43b38f..0307d00228 100644
--- a/desktop/prj/build.lst
+++ b/desktop/prj/build.lst
@@ -1,4 +1,4 @@
-dt desktop : l10n sfx2 stoc BERKELEYDB:berkeleydb sysui SO:sysui_so BOOST:boost svx xmlhelp sal unoil officecfg offuh NULL
+dt desktop : TRANSLATIONS:translations sfx2 stoc BERKELEYDB:berkeleydb sysui BOOST:boost svx xmlhelp sal unoil officecfg offuh filter LIBXSLT:libxslt NULL
dt desktop usr1 - all dt_mkout NULL
dt desktop\inc nmake - all dt_inc NULL
dt desktop\prj get - all dt_prj NULL
@@ -17,12 +17,15 @@ dt desktop\win32\source\guistdio nmake - w dt_guistdio dt_inc N
dt desktop\win32\source\applauncher nmake - w dt_applauncher dt_inc NULL
dt desktop\win32\source\applauncher\ooo nmake - w dt_applauncher_ooo dt_applauncher.w dt_inc NULL
dt desktop\win32\source\rebase nmake - w dt_rebase dt_inc NULL
+dt desktop\win32\source\QuickStart nmake - w dt_win32_quickstart NULL
+dt desktop\win32\source\QuickStart\so nmake - w dt_win32_quickstart_so dt_win32_quickstart.w NULL
+
dt desktop\os2\source\applauncher nmake - p dt_applauncher dt_inc NULL
dt desktop\unx\source\officeloader nmake - u dt_officeloader_unx dt_inc NULL
-dt desktop\unx\source nmake - u dt_uwrapper dt_inc NULL
-dt desktop\unx\splash nmake - u dt_usplash dt_inc NULL
+dt desktop\unx\source nmake - u dt_uwrapper dt_pagein.u dt_inc NULL
dt desktop\source\pagein nmake - u dt_pagein dt_inc NULL
dt desktop\source\pkgchk\unopkg nmake - all dt_unopkg dt_dp_misc dt_app dt_inc dt_guiloader.w NULL
+dt desktop\unx\splash nmake - u dt_usplash dt_pagein.u dt_inc NULL
dt desktop\source\deployment nmake - all dt_deployment dt_dp_manager dt_dp_registry dt_dp_registry_package dt_dp_registry_executable dt_dp_registry_help dt_dp_registry_script dt_dp_registry_sfwk dt_dp_registry_component dt_dp_registry_configuration dt_dp_unopkg dt_inc dt_dp_misc NULL
dt desktop\source\deployment\misc nmake - all dt_dp_misc dt_inc NULL
dt desktop\source\deployment\unopkg nmake - all dt_dp_unopkg dt_inc NULL
@@ -37,9 +40,13 @@ dt desktop\source\deployment\registry\configuration nmake - all dt_dp_registry_c
dt desktop\source\deployment\registry\help nmake - all dt_dp_registry_help dt_inc NULL
dt desktop\source\deployment\registry\executable nmake - all dt_dp_registry_executable dt_inc NULL
dt desktop\scripts nmake - u dt_scripts dt_inc NULL
-dt desktop\util nmake - all dt_util dt_app dt_pagein.u dt_so_comp dt_spl dt_uwrapper.u dt_usplash.u dt_wrapper.w dt_officeloader.w dt_officeloader_unx.u dt_migr dt_rebase.w NULL
+dt desktop\util nmake - all dt_util dt_app dt_pagein.u dt_so_comp dt_spl dt_uwrapper.u dt_usplash.u dt_wrapper.w dt_officeloader.w dt_officeloader_unx.u dt_migr dt_rebase.w dt_win32_quickstart_so.w dt_zipintro NULL
dt desktop\zipintro nmake - all dt_zipintro NULL
dt desktop\registry\data\org\openoffice\Office nmake - all sn_regconfig NULL
dt desktop\source\registration\com\sun\star\servicetag\resources get - all sn_svctagres NULL
dt desktop\source\registration\com\sun\star\servicetag nmake - all sn_svctag NULL
dt desktop\source\registration\com\sun\star\registration nmake - all sn_regjob sn_svctag NULL
+dt desktop\qa\deployment_misc nmake - all sn_qa_deployment_misc dt_dp_misc dt_inc NULL
+dt desktop\test\deployment\active nmake - all dt_test_deployment_active NULL
+dt desktop\test\deployment\boxt nmake - all dt_test_deployment_boxt NULL
+dt desktop\test\deployment\passive nmake - all dt_test_deployment_passive NULL
diff --git a/desktop/prj/d.lst b/desktop/prj/d.lst
index 6251de274a..cb4fa06172 100644
--- a/desktop/prj/d.lst
+++ b/desktop/prj/d.lst
@@ -32,7 +32,7 @@ mkdir: %_DEST%\bin%_EXT%\odf4ms
..\%__SRC%\bin\swriter.exe %_DEST%\bin%_EXT%\swriter.exe
..\%__SRC%\bin\sbase.exe %_DEST%\bin%_EXT%\sbase.exe
..\%__SRC%\bin\sweb.exe %_DEST%\bin%_EXT%\sweb.exe
-..\%__SRC%\bin\quickstart.exe %_DEST%\bin%_EXT%\quickstart.exe
+..\%__SRC%\bin\os2quickstart.exe %_DEST%\bin%_EXT%\quickstart.exe
..\%__SRC%\bin\so\scalc.exe %_DEST%\bin%_EXT%\so\scalc.exe
..\%__SRC%\bin\so\sdraw.exe %_DEST%\bin%_EXT%\so\sdraw.exe
..\%__SRC%\bin\so\simpress.exe %_DEST%\bin%_EXT%\so\simpress.exe
@@ -41,6 +41,11 @@ mkdir: %_DEST%\bin%_EXT%\odf4ms
..\%__SRC%\bin\so\sbase.exe %_DEST%\bin%_EXT%\so\sbase.exe
..\%__SRC%\bin\so\sweb.exe %_DEST%\bin%_EXT%\so\sweb.exe
+..\%__SRC%\bin\quickstart.exe %_DEST%\bin%_EXT%\quickstart.exe
+..\%__SRC%\bin\quickstart.exe %_DEST%\bin%_EXT%\install_quickstart.exe
+..\%__SRC%\bin\soquickstart.exe %_DEST%\bin%_EXT%\so\quickstart.exe
+..\%__SRC%\bin\soquickstart.exe %_DEST%\bin%_EXT%\so\install_quickstart.exe
+
..\%__SRC%\misc\soffice.exe.manifest %_DEST%\bin%_EXT%\soffice.exe.manifest
..\%__SRC%\misc\soffice.bin.manifest %_DEST%\bin%_EXT%\soffice.bin.manifest
..\%__SRC%\bin\wrp*.dll %_DEST%\bin%_EXT%\wrp*.dll
@@ -109,6 +114,7 @@ mkdir: %_DEST%\bin%_EXT%\odf4ms
mkdir: %COMMON_DEST%\pck%_EXT%\brand
mkdir: %COMMON_DEST%\pck%_EXT%\brand_dev
+..\%__SRC%\bin\intro.zip %COMMON_DEST%\pck%_EXT%\intro.zip
..\%__SRC%\bin\brand\intro.zip %COMMON_DEST%\pck%_EXT%\brand\intro.zip
..\%__SRC%\bin\brand_dev\intro.zip %COMMON_DEST%\pck%_EXT%\brand_dev\intro.zip
..\%__SRC%\bin\shell\shell.zip %COMMON_DEST%\pck%_EXT%\shell.zip
@@ -135,3 +141,12 @@ mkdir: %_DEST%\xml%_EXT%\registry\spool\org\openoffice\Office\Jobs
..\%__SRC%\class\*.jar %_DEST%\bin%_EXT%\*.jar
..\%__SRC%\misc\registry\spool\org\openoffice\Office\Jobs\*.xcu %_DEST%\xml%_EXT%\registry\spool\org\openoffice\Office\Jobs
+..\%__SRC%\misc\deployment.component %_DEST%\xml%_EXT%\deployment.component
+..\%__SRC%\misc\deploymentgui.component %_DEST%\xml%_EXT%\deploymentgui.component
+..\%__SRC%\misc\migrationoo2.component %_DEST%\xml%_EXT%\migrationoo2.component
+..\%__SRC%\misc\migrationoo3.component %_DEST%\xml%_EXT%\migrationoo3.component
+..\%__SRC%\misc\offacc.component %_DEST%\xml%_EXT%\offacc.component
+..\%__SRC%\misc\productregistration.jar.component %_DEST%\xml%_EXT%\productregistration.jar.component
+..\%__SRC%\misc\socomp.component %_DEST%\xml%_EXT%\socomp.component
+..\%__SRC%\misc\spl.component %_DEST%\xml%_EXT%\spl.component
+..\%__SRC%\misc\splash.component %_DEST%\xml%_EXT%\splash.component
diff --git a/desktop/qa/deployment_misc/makefile.mk b/desktop/qa/deployment_misc/makefile.mk
index 15faef0dc4..16223914e7 100644..100755
--- a/desktop/qa/deployment_misc/makefile.mk
+++ b/desktop/qa/deployment_misc/makefile.mk
@@ -35,20 +35,22 @@ ENABLE_EXCEPTIONS := TRUE
.INCLUDE: $(PRJ)$/source$/deployment$/inc$/dp_misc.mk
CFLAGSCXX += $(CPPUNIT_CFLAGS)
-DLLPRE = # no leading "lib" on .so files
+
+# TODO: On Windows, test_dp_version.cxx fails due to BOOL redefinition between
+# windef.h and tools/solar.h caused by including "precompiled_desktop.hxx"; this
+# hack to temporarily disable PCH will become unnecessary with the fix for issue
+# 112600:
+CFLAGSCXX += -DDISABLE_PCH_HACK
SHL1TARGET = $(TARGET)
SHL1OBJS = $(SLO)$/test_dp_version.obj
-SHL1STDLIBS = $(CPPUNITLIB) $(DEPLOYMENTMISCLIB) $(SALLIB) $(TESTSHL2LIB)
+SHL1STDLIBS = $(CPPUNITLIB) $(DEPLOYMENTMISCLIB) $(SALLIB)
SHL1VERSIONMAP = version.map
+SHL1RPATH = NONE
SHL1IMPLIB = i$(SHL1TARGET)
DEF1NAME = $(SHL1TARGET)
SLOFILES = $(SHL1OBJS)
.INCLUDE: target.mk
-
-ALLTAR: test
-
-test .PHONY: $(SHL1TARGETN)
- $(TESTSHL2) $(SHL1TARGETN)
+.INCLUDE : _cppunit.mk
diff --git a/desktop/qa/deployment_misc/test_dp_version.cxx b/desktop/qa/deployment_misc/test_dp_version.cxx
index d5f2d5b413..c6c5372f21 100644
--- a/desktop/qa/deployment_misc/test_dp_version.cxx
+++ b/desktop/qa/deployment_misc/test_dp_version.cxx
@@ -33,7 +33,10 @@
#include <cstddef>
-#include "testshl/simpleheader.hxx"
+#include "cppunit/TestAssert.h"
+#include "cppunit/TestFixture.h"
+#include "cppunit/extensions/HelperMacros.h"
+#include "cppunit/plugin/TestPlugIn.h"
#include "rtl/ustring.h"
#include "rtl/ustring.hxx"
@@ -84,10 +87,10 @@ void Test::test() {
}
}
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(Test, "alltests");
+CPPUNIT_TEST_SUITE_REGISTRATION(Test);
}
-NOADDITIONAL;
+CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/qa/deployment_misc/version.map b/desktop/qa/deployment_misc/version.map
index f313c44bd7..0dbbcc5a73 100644..100755
--- a/desktop/qa/deployment_misc/version.map
+++ b/desktop/qa/deployment_misc/version.map
@@ -27,7 +27,7 @@
UDK_3_0_0 {
global:
- registerAllTestFunction;
+ cppunitTestPlugIn;
local:
*;
diff --git a/desktop/registry/data/org/openoffice/Office/makefile.mk b/desktop/registry/data/org/openoffice/Office/makefile.mk
index 2ad8441ea3..2ad8441ea3 100644..100755
--- a/desktop/registry/data/org/openoffice/Office/makefile.mk
+++ b/desktop/registry/data/org/openoffice/Office/makefile.mk
diff --git a/desktop/scripts/basis-link b/desktop/scripts/basis-link
index 3af84201e0..3af84201e0 100644..100755
--- a/desktop/scripts/basis-link
+++ b/desktop/scripts/basis-link
diff --git a/desktop/scripts/makefile.mk b/desktop/scripts/makefile.mk
index 5c412f8187..5c412f8187 100644..100755
--- a/desktop/scripts/makefile.mk
+++ b/desktop/scripts/makefile.mk
diff --git a/desktop/scripts/mozwrapper.sh b/desktop/scripts/mozwrapper.sh
index 89b6415358..89b6415358 100644..100755
--- a/desktop/scripts/mozwrapper.sh
+++ b/desktop/scripts/mozwrapper.sh
diff --git a/desktop/scripts/odf-basis-link b/desktop/scripts/odf-basis-link
index 3af84201e0..3af84201e0 100644..100755
--- a/desktop/scripts/odf-basis-link
+++ b/desktop/scripts/odf-basis-link
diff --git a/desktop/scripts/sbase.sh b/desktop/scripts/sbase.sh
index 932a535e53..e3a8ed07d5 100644..100755
--- a/desktop/scripts/sbase.sh
+++ b/desktop/scripts/sbase.sh
@@ -1,4 +1,4 @@
#!/bin/sh
cmd=`dirname "$0"`/soffice
-exec "$cmd" -base "$@"
+exec "$cmd" --base "$@"
diff --git a/desktop/scripts/scalc.sh b/desktop/scripts/scalc.sh
index b1c3eebaff..c9c3cde39e 100644..100755
--- a/desktop/scripts/scalc.sh
+++ b/desktop/scripts/scalc.sh
@@ -1,4 +1,4 @@
#!/bin/sh
cmd=`dirname "$0"`/soffice
-exec "$cmd" -calc "$@"
+exec "$cmd" --calc "$@"
diff --git a/desktop/scripts/sdraw.sh b/desktop/scripts/sdraw.sh
index fe0338a893..4131a2505f 100644..100755
--- a/desktop/scripts/sdraw.sh
+++ b/desktop/scripts/sdraw.sh
@@ -1,4 +1,4 @@
#!/bin/sh
cmd=`dirname "$0"`/soffice
-exec "$cmd" -draw "$@"
+exec "$cmd" --draw "$@"
diff --git a/desktop/scripts/simpress.sh b/desktop/scripts/simpress.sh
index 20cae509b1..d78ea14207 100644..100755
--- a/desktop/scripts/simpress.sh
+++ b/desktop/scripts/simpress.sh
@@ -1,4 +1,4 @@
#!/bin/sh
cmd=`dirname "$0"`/soffice
-exec "$cmd" -impress "$@"
+exec "$cmd" --impress "$@"
diff --git a/desktop/scripts/smaster.sh b/desktop/scripts/smaster.sh
index affd55b265..ed9b09d512 100644..100755
--- a/desktop/scripts/smaster.sh
+++ b/desktop/scripts/smaster.sh
@@ -1,4 +1,4 @@
#!/bin/sh
cmd=`dirname "$0"`/soffice
-exec "$cmd" -global "$@"
+exec "$cmd" --global "$@"
diff --git a/desktop/scripts/smath.sh b/desktop/scripts/smath.sh
index ae4e3670a8..454fa135ff 100644..100755
--- a/desktop/scripts/smath.sh
+++ b/desktop/scripts/smath.sh
@@ -1,4 +1,4 @@
#!/bin/sh
cmd=`dirname "$0"`/soffice
-exec "$cmd" -math "$@"
+exec "$cmd" --math "$@"
diff --git a/desktop/scripts/so-basis-link b/desktop/scripts/so-basis-link
index 3af84201e0..3af84201e0 100644..100755
--- a/desktop/scripts/so-basis-link
+++ b/desktop/scripts/so-basis-link
diff --git a/desktop/scripts/soffice.sh b/desktop/scripts/soffice.sh
index 71a5f18958..dd17fe9b9c 100644..100755
--- a/desktop/scripts/soffice.sh
+++ b/desktop/scripts/soffice.sh
@@ -39,32 +39,49 @@ export SAL_ENABLE_FILE_LOCKING
# working on your system.
# SAL_NOOPENGL=true; export SAL_NOOPENGL
+unset XENVIRONMENT
+
+# uncomment line below to disable anti aliasing of fonts
+# SAL_ANTIALIAS_DISABLE=true; export SAL_ANTIALIAS_DISABLE
+
+# uncomment line below if you encounter problems starting soffice on your system
+# SAL_NO_XINITTHREADS=true; export SAL_NO_XINITTHREADS
+
+# read database entries for Adabas D
+if [ -f /etc/adabasrc ]; then
+ . /etc/adabasrc
+fi
+
# The following is needed on Linux PPC with IBM j2sdk142:
#@# export JITC_PROCESSOR_TYPE=6
# resolve installation directory
-sd_cwd="`pwd`"
-if [ -h "$0" ] ; then
- sd_basename=`basename "$0"`
- sd_script=`ls -l "$0" | sed "s/.*${sd_basename} -> //g"`
- cd "`dirname "$0"`"
- cd "`dirname "$sd_script"`"
-else
- cd "`dirname "$0"`"
-fi
+sd_cwd=`pwd`
+sd_res=$0
+while [ -h "$sd_res" ] ; do
+ cd "`dirname "$sd_res"`"
+ sd_basename=`basename "$sd_res"`
+ sd_res=`ls -l "$sd_basename" | sed "s/.*$sd_basename -> //g"`
+done
+cd "`dirname "$sd_res"`"
sd_prog=`pwd`
cd "$sd_cwd"
# linked build needs additional settings
-if [ -e ooenv ] ; then
- . ./ooenv
+if [ -e $sd_prog/ooenv ] ; then
+ . $sd_prog/ooenv
fi
-sd_binary=`basename "$0"`.bin
+if [ "$VALGRIND" != "" ]; then
+ VALGRINDCHECK="valgrind --tool=$VALGRIND --trace-children=yes --trace-children-skip=*/java --error-exitcode=101"
+ export VALGRINDCHECK
+ G_SLICE=always-malloc
+ export G_SLICE
+fi
-# this is a temporary hack until we can live with the default search paths
case "`uname -s`" in
-OpenBSD)
+NetBSD|OpenBSD|FreeBSD|DragonFly)
+# this is a temporary hack until we can live with the default search paths
sd_prog1="$sd_prog/../basis-link/program"
sd_prog2="$sd_prog/../basis-link/ure-link/lib"
LD_LIBRARY_PATH=$sd_prog1:$sd_prog2${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
@@ -74,109 +91,11 @@ OpenBSD)
export JAVA_HOME
fi
;;
+AIX)
+ LIBPATH=$sd_prog:$sd_prog/../basis-link/program:$sd_prog/../basis-link/ure-link/lib${LIBPATH:+:$LIBPATH}
+ export LIBPATH
+ ;;
esac
-#collect all bootstrap variables specified on the command line
-#so that they can be passed as arguments to javaldx later on
-for arg in $@
-do
- case "$arg" in
- -env:*) BOOTSTRAPVARS=$BOOTSTRAPVARS" ""$arg";;
- esac
-done
-
-# test for availability of the fast external splash
-for arg in $@; do
- if [ "$arg" = "-nologo" -o "$arg" = "-no-oosplash" ]; then
- no_oosplash=y
- fi
-done
-
-# Setup our app as oosplash, but try to avoid executing pagein,
-# and other expensive environment setup pieces wherever possible
-# for a second started office
-if [ "$sd_binary" = "soffice.bin" -a -x "$sd_prog/oosplash.bin" ] && [ "$no_oosplash" != "y" ] ; then
- sd_binary="oosplash.bin"
-
- # try to connect to a running instance early
- if "$sd_prog/$sd_binary" -qsend-and-report "$@" ; then
- exit 0
- fi
-fi
-
-# pagein
-sd_pagein_args=@pagein-common
-for sd_arg in "$@"; do
- case ${sd_arg} in
- -calc)
- sd_pagein_args="${sd_pagein_args} @pagein-calc"
- break;
- ;;
- -draw)
- sd_pagein_args="${sd_pagein_args} @pagein-draw"
- break;
- ;;
- -impress)
- sd_pagein_args="${sd_pagein_args} @pagein-impress"
- break;
- ;;
- -writer)
- sd_pagein_args="${sd_pagein_args} @pagein-writer"
- break;
- ;;
- esac
-done
-"$sd_prog/../basis-link/program/pagein" -L"$sd_prog/../basis-link/program" \
- ${sd_pagein_args}
-
-# extend the ld_library_path for java: javaldx checks the sofficerc for us
-if [ -x "$sd_prog/../basis-link/ure-link/bin/javaldx" ] ; then
- my_path=`"$sd_prog/../basis-link/ure-link/bin/javaldx" $BOOTSTRAPVARS \
- "-env:INIFILENAME=vnd.sun.star.pathname:$sd_prog/redirectrc"`
- if [ -n "$my_path" ] ; then
- sd_platform=`uname -s`
- case $sd_platform in
- AIX)
- LIBPATH=$my_path${LIBPATH:+:$LIBPATH}
- export LIBPATH
- ;;
- *)
- LD_LIBRARY_PATH=$my_path${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
- export LD_LIBRARY_PATH
- ;;
- esac
- fi
-fi
-
-unset XENVIRONMENT
-
-# uncomment line below to disable anti aliasing of fonts
-# SAL_ANTIALIAS_DISABLE=true; export SAL_ANTIALIAS_DISABLE
-
-# uncomment line below if you encounter problems starting soffice on your system
-# SAL_NO_XINITTHREADS=true; export SAL_NO_XINITTHREADS
-
-# read database entries for Adabas D
-if [ -f /etc/adabasrc ]; then
- . /etc/adabasrc
-fi
-
-# execute soffice binary
-"$sd_prog/$sd_binary" "$@" &
-trap 'kill -9 $!' TERM
-wait $!
-sd_ret=$?
-
-while [ $sd_ret -eq 79 -o $sd_ret -eq 81 ]
-do
- if [ $sd_ret -eq 79 ]; then
- "$sd_prog/$sd_binary" ""$BOOTSTRAPVARS"" &
- elif [ $sd_ret -eq 81 ]; then
- "$sd_prog/$sd_binary" "$@" &
- fi
-
- wait $!
- sd_ret=$?
-done
-
-exit $sd_ret
+# oosplash does the rest: forcing pages in, javaldx etc. are
+exec $VALGRINDCHECK "$sd_prog/oosplash.bin" "$@"
diff --git a/desktop/scripts/sweb.sh b/desktop/scripts/sweb.sh
index 6d814e26e8..a365392584 100644..100755
--- a/desktop/scripts/sweb.sh
+++ b/desktop/scripts/sweb.sh
@@ -1,4 +1,4 @@
#!/bin/sh
cmd=`dirname "$0"`/soffice
-exec "$cmd" -web "$@"
+exec "$cmd" --web "$@"
diff --git a/desktop/scripts/swriter.sh b/desktop/scripts/swriter.sh
index 34ca9fee30..3fa48c0d3e 100644..100755
--- a/desktop/scripts/swriter.sh
+++ b/desktop/scripts/swriter.sh
@@ -1,4 +1,4 @@
#!/bin/sh
cmd=`dirname "$0"`/soffice
-exec "$cmd" -writer "$@"
+exec "$cmd" --writer "$@"
diff --git a/desktop/scripts/unoinfo.sh b/desktop/scripts/unoinfo.sh
index 3af17625a6..9fc80b5f32 100644..100755
--- a/desktop/scripts/unoinfo.sh
+++ b/desktop/scripts/unoinfo.sh
@@ -29,14 +29,13 @@
set -e
# resolve installation directory
-if [ -h "$0" ] ; then
- sd_basename=`basename "$0"`
- sd_script=`ls -l "$0" | sed "s/.*${sd_basename} -> //g"`
- cd "`dirname "$0"`"
- cd "`dirname "$sd_script"`"
-else
- cd "`dirname "$0"`"
-fi
+sd_res=$0
+while [ -h "$sd_res" ] ; do
+ cd "`dirname "$sd_res"`"
+ sd_basename=`basename "$sd_res"`
+ sd_res=`ls -l "$sd_basename" | sed "s/.*$sd_basename -> //g"`
+done
+cd "`dirname "$sd_res"`"
sd_prog=`pwd`
case $1 in
diff --git a/desktop/scripts/unopkg.sh b/desktop/scripts/unopkg.sh
index 2be74935ef..07811c5a5e 100644..100755
--- a/desktop/scripts/unopkg.sh
+++ b/desktop/scripts/unopkg.sh
@@ -31,21 +31,20 @@ SAL_ENABLE_FILE_LOCKING=1
export SAL_ENABLE_FILE_LOCKING
# resolve installation directory
-sd_cwd="`pwd`"
-if [ -h "$0" ] ; then
- sd_basename=`basename "$0"`
- sd_script=`ls -l "$0" | sed "s/.*${sd_basename} -> //g"`
- cd "`dirname "$0"`"
- cd "`dirname "$sd_script"`"
-else
- cd "`dirname "$0"`"
-fi
+sd_cwd=`pwd`
+sd_res=$0
+while [ -h "$sd_res" ] ; do
+ cd "`dirname "$sd_res"`"
+ sd_basename=`basename "$sd_res"`
+ sd_res=`ls -l "$sd_basename" | sed "s/.*$sd_basename -> //g"`
+done
+cd "`dirname "$sd_res"`"
sd_prog=`pwd`
cd "$sd_cwd"
# this is a temporary hack until we can live with the default search paths
case "`uname -s`" in
-OpenBSD)
+NetBSD|OpenBSD|FreeBSD|DragonFly)
sd_prog1="$sd_prog/../basis-link/program"
sd_prog2="$sd_prog/../basis-link/ure-link/lib"
LD_LIBRARY_PATH=$sd_prog1:$sd_prog2${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
@@ -55,20 +54,37 @@ OpenBSD)
export JAVA_HOME
fi
;;
+AIX)
+ sd_prog1="$sd_prog/../basis-link/program"
+ sd_prog2="$sd_prog/../basis-link/ure-link/lib"
+ LIBPATH=$sd_prog1:$sd_prog2${LIBPATH:+:${LIBPATH}}
+ export LIBPATH
+ ;;
esac
#collect all bootstrap variables specified on the command line
#so that they can be passed as arguments to javaldx later on
+#Recognize the "sync" option. sync must be applied without any other
+#options except bootstrap variables or the verbose option
for arg in $@
do
case "$arg" in
-env:*) BOOTSTRAPVARS=$BOOTSTRAPVARS" ""$arg";;
+ sync) OPTSYNC=true;;
+ -v) VERBOSE=true;;
+ --verbose) VERBOSE=true;;
+ *) OPTOTHER=$arg;;
esac
done
+if [ "$OPTSYNC" = "true" ] && [ -z "$OPTOTHER" ]
+then
+ JVMFWKPARAMS='-env:UNO_JAVA_JFW_INSTALL_DATA=$OOO_BASE_DIR/share/config/javasettingsunopkginstall.xml -env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY=1'
+fi
+
# extend the ld_library_path for java: javaldx checks the sofficerc for us
if [ -x "$sd_prog/../basis-link/ure-link/bin/javaldx" ] ; then
- my_path=`"$sd_prog/../basis-link/ure-link/bin/javaldx" $BOOTSTRAPVARS \
+ my_path=`"$sd_prog/../basis-link/ure-link/bin/javaldx" $BOOTSTRAPVARS $JVMFWKPARAMS \
"-env:INIFILENAME=vnd.sun.star.pathname:$sd_prog/redirectrc"`
if [ -n "$my_path" ] ; then
sd_platform=`uname -s`
@@ -94,6 +110,6 @@ unset XENVIRONMENT
# SAL_NO_XINITTHREADS=true; export SAL_NO_XINITTHREADS
# execute binary
-exec "$sd_prog/unopkg.bin" "$@" \
+exec "$sd_prog/unopkg.bin" "$@" "$JVMFWKPARAMS" \
"-env:INIFILENAME=vnd.sun.star.pathname:$sd_prog/redirectrc"
diff --git a/desktop/scripts/ure-link b/desktop/scripts/ure-link
index dd0ecb6115..dd0ecb6115 100644..100755
--- a/desktop/scripts/ure-link
+++ b/desktop/scripts/ure-link
diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index 05858e19cd..1544b20506 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -117,6 +117,7 @@
#include <osl/file.hxx>
#include <osl/process.h>
#include <osl/signal.h>
+#include <osl/thread.hxx>
#include <rtl/uuid.h>
#include <rtl/uri.hxx>
#include <unotools/pathoptions.hxx>
@@ -167,14 +168,10 @@
using rtl::OUString;
using rtl::OUStringBuffer;
-//Gives an ICE with MSVC6
-//namespace css = ::com::sun::star;
-
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::util;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::beans;
-//using namespace ::com::sun::star::bridge;
using namespace ::com::sun::star::frame;
using namespace ::com::sun::star::document;
using namespace ::com::sun::star::view;
@@ -193,38 +190,23 @@ namespace desktop
static oslSignalHandler pSignalHandler = 0;
static sal_Bool _bCrashReporterEnabled = sal_True;
-static const ::rtl::OUString CFG_PACKAGE_COMMON_HELP ( RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.Office.Common/Help"));
-static const ::rtl::OUString CFG_PATH_REG ( RTL_CONSTASCII_USTRINGPARAM( "Registration" ));
-static const ::rtl::OUString CFG_ENTRY_REGURL ( RTL_CONSTASCII_USTRINGPARAM( "URL" ));
-static const ::rtl::OUString CFG_ENTRY_TEMPLATEREGURL ( RTL_CONSTASCII_USTRINGPARAM( "TemplateURL" ));
-
+static ::rtl::OUString getBrandSharePreregBundledPathURL();
// ----------------------------------------------------------------------------
ResMgr* Desktop::GetDesktopResManager()
{
if ( !Desktop::pResMgr )
{
- String aMgrName = String::CreateFromAscii( "dkt" );
-
// Create desktop resource manager and bootstrap process
// was successful. Use default way to get language specific message.
if ( Application::IsInExecute() )
- Desktop::pResMgr = ResMgr::CreateResMgr( U2S( aMgrName ));
+ Desktop::pResMgr = ResMgr::CreateResMgr("dkt");
if ( !Desktop::pResMgr )
{
// Use VCL to get the correct language specific message as we
// are in the bootstrap process and not able to get the installed
// language!!
-/*
- LanguageType aLanguageType = LANGUAGE_DONTKNOW;
-
- Desktop::pResMgr = ResMgr::SearchCreateResMgr( U2S( aMgrName ), aLanguageType );
- AllSettings as = GetSettings();
- as.SetUILanguage(aLanguageType);
- SetSettings(as);
-*/
- // LanguageSelection langselect;
OUString aUILocaleString = LanguageSelection::getLanguageString();
sal_Int32 nIndex = 0;
OUString aLanguage = aUILocaleString.getToken( 0, '-', nIndex);
@@ -233,7 +215,7 @@ ResMgr* Desktop::GetDesktopResManager()
::com::sun::star::lang::Locale aLocale( aLanguage, aCountry, aVariant );
- Desktop::pResMgr = ResMgr::SearchCreateResMgr( U2S( aMgrName ), aLocale);
+ Desktop::pResMgr = ResMgr::SearchCreateResMgr( "dkt", aLocale);
AllSettings as = GetSettings();
as.SetUILocale(aLocale);
SetSettings(as);
@@ -247,7 +229,7 @@ ResMgr* Desktop::GetDesktopResManager()
// Get a message string securely. There is a fallback string if the resource
// is not available.
-OUString Desktop::GetMsgString( USHORT nId, const OUString& aFaultBackMsg )
+OUString Desktop::GetMsgString( sal_uInt16 nId, const OUString& aFaultBackMsg )
{
ResMgr* resMgr = GetDesktopResManager();
if ( !resMgr )
@@ -289,7 +271,7 @@ OUString MakeStartupConfigAccessErrorMessage( OUString const & aInternalErrMsg )
if ( pResMgr )
aDiagnosticMessage.append( OUString(String(ResId(STR_INTERNAL_ERRMSG, *pResMgr ))) );
else
- aDiagnosticMessage.appendAscii( "The following internal error has occured:\n\n" );
+ aDiagnosticMessage.appendAscii( "The following internal error has occurred:\n\n" );
aDiagnosticMessage.append( aInternalErrMsg );
}
@@ -298,15 +280,12 @@ OUString MakeStartupConfigAccessErrorMessage( OUString const & aInternalErrMsg )
//=============================================================================
// shows a simple error box with the given message ... but exits from these process !
-//
// Fatal errors cant be solved by the process ... nor any recovery can help.
// Mostly the installation was damaged and must be repaired manually .. or by calling
// setup again.
-//
// On the other side we must make sure that no further actions will be possible within
// the current office process ! No pipe requests, no menu/toolbar/shortuct actions
// are allowed. Otherwise we will force a "crash inside a crash".
-//
// Thats why we have to use a special native message box here which does not use yield :-)
//=============================================================================
void FatalError(const ::rtl::OUString& sMessage)
@@ -343,10 +322,8 @@ CommandLineArgs* Desktop::GetCommandLineArgs()
{
::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
if ( !pArgs )
- {
pArgs = new CommandLineArgs;
}
- }
return pArgs;
}
@@ -484,7 +461,7 @@ static bool needsSynchronization(
}
else if (err1 != ::osl::File::E_None)
{
- OSL_ENSURE(0, "Cannot access lastsynchronized in user layer");
+ OSL_FAIL("Cannot access lastsynchronized in user layer");
return true; //sync just in case
}
@@ -498,7 +475,7 @@ static bool needsSynchronization(
}
else if (err2 != ::osl::File::E_None)
{
- OSL_ENSURE(0, "Cannot access file lastsynchronized in base layer");
+ OSL_FAIL("Cannot access file lastsynchronized in base layer");
return true; //sync just in case
}
@@ -575,6 +552,44 @@ static ::rtl::OUString getLastSyncFileURLFromUserInstallation()
return aTmp.makeStringAndClear();
}
+//Checks if the argument src is the folder of the help or configuration
+//backend in the prereg folder
+static bool excludeTmpFilesAndFolders(const rtl::OUString & src)
+{
+ const char helpBackend[] = "com.sun.star.comp.deployment.help.PackageRegistryBackend";
+ const char configBackend[] = "com.sun.star.comp.deployment.configuration.PackageRegistryBackend";
+ if (src.endsWithAsciiL(helpBackend, sizeof(helpBackend) - 1 )
+ || src.endsWithAsciiL(configBackend, sizeof(configBackend) - 1))
+ {
+ return true;
+ }
+ return false;
+}
+
+//If we are about to copy the contents of some special folder as determined
+//by excludeTmpFilesAndFolders, then we omit those files or folders with a name
+//derived from temporary folders.
+static bool isExcludedFileOrFolder( const rtl::OUString & name)
+{
+ char const * allowed[] = {
+ "backenddb.xml",
+ "configmgr.ini",
+ "registered_packages.db"
+ };
+
+ const unsigned int size = sizeof(allowed) / sizeof (char const *);
+ bool bExclude = true;
+ for (unsigned int i= 0; i < size; i ++)
+ {
+ ::rtl::OUString allowedName = ::rtl::OUString::createFromAscii(allowed[i]);
+ if (allowedName.equals(name))
+ {
+ bExclude = false;
+ break;
+ }
+ }
+ return bExclude;
+}
static osl::FileBase::RC copy_bundled_recursive(
const rtl::OUString& srcUnqPath,
@@ -590,64 +605,73 @@ throw()
}
else if( TypeToCopy == +1 ) // Folder
{
- osl::Directory aDir( srcUnqPath );
- aDir.open();
-
err = osl::Directory::create( dstUnqPath );
osl::FileBase::RC next = err;
- if( err == osl::FileBase::E_None ||
- err == osl::FileBase::E_EXIST )
+ if( err == osl::FileBase::E_None || err == osl::FileBase::E_EXIST )
{
err = osl::FileBase::E_None;
- sal_Int32 n_Mask = FileStatusMask_FileURL | FileStatusMask_FileName | FileStatusMask_Type;
- osl::DirectoryItem aDirItem;
-
- while( err == osl::FileBase::E_None && ( next = aDir.getNextItem( aDirItem ) ) == osl::FileBase::E_None )
+ osl::Directory aDir( srcUnqPath );
+ bool bExcludeFiles = excludeTmpFilesAndFolders(srcUnqPath);
+ if (aDir.open() == osl::FileBase::E_None)
{
- sal_Bool IsDoc = false;
- sal_Bool bFilter = false;
- osl::FileStatus aFileStatus( n_Mask );
- aDirItem.getFileStatus( aFileStatus );
- if( aFileStatus.isValid( FileStatusMask_Type ) )
- IsDoc = aFileStatus.getFileType() == osl::FileStatus::Regular;
-
- // Getting the information for the next recursive copy
- sal_Int32 newTypeToCopy = IsDoc ? -1 : +1;
-
- rtl::OUString newSrcUnqPath;
- if( aFileStatus.isValid( FileStatusMask_FileURL ) )
- newSrcUnqPath = aFileStatus.getFileURL();
-
- rtl::OUString newDstUnqPath = dstUnqPath;
- rtl::OUString tit;
- if( aFileStatus.isValid( FileStatusMask_FileName ) )
+ sal_Int32 n_Mask = FileStatusMask_FileURL |
+ FileStatusMask_FileName |
+ FileStatusMask_Type;
+
+ osl::DirectoryItem aDirItem;
+ while( err == osl::FileBase::E_None && ( next = aDir.getNextItem( aDirItem ) ) == osl::FileBase::E_None )
{
- ::rtl::OUString aFileName = aFileStatus.getFileName();
- tit = rtl::Uri::encode( aFileName,
- rtl_UriCharClassPchar,
- rtl_UriEncodeIgnoreEscapes,
- RTL_TEXTENCODING_UTF8 );
+ sal_Bool IsDoc = false;
+ sal_Bool bFilter = false;
+ osl::FileStatus aFileStatus( n_Mask );
+ aDirItem.getFileStatus( aFileStatus );
+ if( aFileStatus.isValid( FileStatusMask_Type ) )
+ IsDoc = aFileStatus.getFileType() == osl::FileStatus::Regular;
+
+ // Getting the information for the next recursive copy
+ sal_Int32 newTypeToCopy = IsDoc ? -1 : +1;
+
+ rtl::OUString newSrcUnqPath;
+ if( aFileStatus.isValid( FileStatusMask_FileURL ) )
+ newSrcUnqPath = aFileStatus.getFileURL();
+
+ rtl::OUString newDstUnqPath = dstUnqPath;
+ rtl::OUString tit;
+ if( aFileStatus.isValid( FileStatusMask_FileName ) )
+ {
+ ::rtl::OUString aFileName = aFileStatus.getFileName();
+ tit = rtl::Uri::encode( aFileName,
+ rtl_UriCharClassPchar,
+ rtl_UriEncodeIgnoreEscapes,
+ RTL_TEXTENCODING_UTF8 );
+
+ // Special treatment for "lastsychronized" file. Must not be
+ // copied from the bundled folder!
+ //Also do not copy *.tmp files and *.tmp_ folders. This affects the files/folders
+ //from the help and configuration backend
+ if ( IsDoc && (aFileName.equalsAscii( pLastSyncFileName )
+ || (bExcludeFiles && isExcludedFileOrFolder(aFileName))))
+ bFilter = true;
+ else if (!IsDoc && bExcludeFiles && isExcludedFileOrFolder(aFileName))
+ bFilter = true;
+ }
- // Special treatment for "lastsychronized" file. Must not be
- // copied from the bundled folder!
- if ( IsDoc && aFileName.equalsAscii( pLastSyncFileName ))
- bFilter = true;
+ if( newDstUnqPath.lastIndexOf( sal_Unicode('/') ) != newDstUnqPath.getLength()-1 )
+ newDstUnqPath += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/"));
+
+ newDstUnqPath += tit;
+
+ if (( newSrcUnqPath != dstUnqPath ) && !bFilter )
+ err = copy_bundled_recursive( newSrcUnqPath,newDstUnqPath, newTypeToCopy );
}
-
- if( newDstUnqPath.lastIndexOf( sal_Unicode('/') ) != newDstUnqPath.getLength()-1 )
- newDstUnqPath += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/"));
- newDstUnqPath += tit;
+ if( err == osl::FileBase::E_None && next != osl::FileBase::E_NOENT )
+ err = next;
- if (( newSrcUnqPath != dstUnqPath ) && !bFilter )
- err = copy_bundled_recursive( newSrcUnqPath,newDstUnqPath, newTypeToCopy );
+ aDir.close();
}
-
- if( err == osl::FileBase::E_None && next != osl::FileBase::E_NOENT )
- err = next;
}
- aDir.close();
}
return err;
@@ -688,14 +712,10 @@ void Desktop::Init()
}
}
- // create service factory...
- Reference < XMultiServiceFactory > rSMgr = CreateApplicationServiceManager();
- if( rSMgr.is() )
- {
- ::comphelper::setProcessServiceFactory( rSMgr );
- }
- else
+ // We need to have service factory before going further.
+ if( !::comphelper::getProcessServiceFactory().is())
{
+ OSL_FAIL("Service factory should have been crated in soffice_main().");
SetBootstrapError( BE_UNO_SERVICEMANAGER );
}
@@ -714,13 +734,6 @@ void Desktop::Init()
if ( GetBootstrapError() == BE_OK )
{
CommandLineArgs* pCmdLineArgs = GetCommandLineArgs();
-#ifdef UNX
- // check whether we need to print cmdline help
- if ( pCmdLineArgs->IsHelp() ) {
- displayCmdlineHelp();
- SetBootstrapStatus(BS_TERMINATE);
- }
-#endif
// start ipc thread only for non-remote offices
RTL_LOGFILE_CONTEXT( aLog2, "desktop (cd100003) ::OfficeIPCThread::EnableOfficeIPCThread" );
OfficeIPCThread::Status aStatus = OfficeIPCThread::EnableOfficeIPCThread();
@@ -749,6 +762,17 @@ void Desktop::InitFinished()
CloseSplashScreen();
}
+// GetCommandLineArgs() requires this code to work, otherwise it will abort, and
+// on Unix command line args needs to be checked before Desktop::Init()
+void Desktop::CreateProcessServiceFactory()
+{
+ Reference < XMultiServiceFactory > rSMgr = CreateApplicationServiceManager();
+ if( rSMgr.is() )
+ {
+ ::comphelper::setProcessServiceFactory( rSMgr );
+ }
+}
+
void Desktop::DeInit()
{
RTL_LOGFILE_CONTEXT( aLog, "desktop (cd100003) ::Desktop::DeInit" );
@@ -782,7 +806,7 @@ void Desktop::DeInit()
RTL_LOGFILE_CONTEXT_TRACE( aLog, "FINISHED WITH Destop::DeInit" );
}
-BOOL Desktop::QueryExit()
+sal_Bool Desktop::QueryExit()
{
try
{
@@ -808,7 +832,7 @@ BOOL Desktop::QueryExit()
xPropertySet->setPropertyValue( OUSTRING(RTL_CONSTASCII_USTRINGPARAM( SUSPEND_QUICKSTARTVETO )), a );
}
- BOOL bExit = ( !xDesktop.is() || xDesktop->terminate() );
+ sal_Bool bExit = ( !xDesktop.is() || xDesktop->terminate() );
if ( !bExit && xPropertySet.is() )
@@ -840,9 +864,6 @@ void Desktop::HandleBootstrapPathErrors( ::utl::Bootstrap::Status aBootstrapStat
{
if ( aBootstrapStatus != ::utl::Bootstrap::DATA_OK )
{
- sal_Bool bWorkstationInstallation = sal_False;
- ::rtl::OUString aBaseInstallURL;
- ::rtl::OUString aUserInstallURL;
::rtl::OUString aProductKey;
::rtl::OUString aTemp;
@@ -855,16 +876,6 @@ void Desktop::HandleBootstrapPathErrors( ::utl::Bootstrap::Status aBootstrapStat
if ( aTemp.getLength() > 0 )
aProductKey = aTemp;
- ::utl::Bootstrap::PathStatus aBaseInstallStatus = ::utl::Bootstrap::locateBaseInstallation( aBaseInstallURL );
- ::utl::Bootstrap::PathStatus aUserInstallStatus = ::utl::Bootstrap::locateUserInstallation( aUserInstallURL );
-
- if (( aBaseInstallStatus == ::utl::Bootstrap::PATH_EXISTS &&
- aUserInstallStatus == ::utl::Bootstrap::PATH_EXISTS ))
- {
- if ( aBaseInstallURL != aUserInstallURL )
- bWorkstationInstallation = sal_True;
- }
-
OUString aMessage;
OUStringBuffer aBuffer( 100 );
aBuffer.append( aDiagnosticMessage );
@@ -1248,8 +1259,6 @@ void impl_checkRecoveryState(sal_Bool& bCrashed ,
static const ::rtl::OUString PROP_CRASHED(RTL_CONSTASCII_USTRINGPARAM("Crashed"));
static const ::rtl::OUString PROP_EXISTSRECOVERY(RTL_CONSTASCII_USTRINGPARAM("ExistsRecoveryData"));
static const ::rtl::OUString PROP_EXISTSSESSION(RTL_CONSTASCII_USTRINGPARAM("ExistsSessionData"));
- static const ::rtl::OUString CFG_PACKAGE_RECOVERY(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Recovery/"));
- static const ::rtl::OUString CFG_PATH_RECOVERYINFO(RTL_CONSTASCII_USTRINGPARAM("RecoveryInfo"));
bCrashed = sal_False;
bRecoveryDataExists = sal_False;
@@ -1410,10 +1419,10 @@ void restartOnMac(bool passArguments) {
}
-USHORT Desktop::Exception(USHORT nError)
+sal_uInt16 Desktop::Exception(sal_uInt16 nError)
{
// protect against recursive calls
- static BOOL bInException = FALSE;
+ static sal_Bool bInException = sal_False;
sal_uInt16 nOldMode = Application::GetSystemWindowMode();
Application::SetSystemWindowMode( nOldMode & ~SYSTEMWINDOW_MODE_NOAUTOMODE );
@@ -1425,7 +1434,7 @@ USHORT Desktop::Exception(USHORT nError)
Application::Abort( aDoubleExceptionString );
}
- bInException = TRUE;
+ bInException = sal_True;
CommandLineArgs* pArgs = GetCommandLineArgs();
// save all modified documents ... if it's allowed doing so.
@@ -1511,8 +1520,26 @@ namespace {
}
}
-void Desktop::Main()
+struct ExecuteGlobals
+{
+ Reference < css::document::XEventListener > xGlobalBroadcaster;
+ sal_Bool bRestartRequested;
+ sal_Bool bUseSystemFileDialog;
+ std::auto_ptr<SvtLanguageOptions> pLanguageOptions;
+ std::auto_ptr<SvtPathOptions> pPathOptions;
+
+ ExecuteGlobals()
+ : bRestartRequested( sal_False )
+ , bUseSystemFileDialog( sal_True )
+ {}
+};
+
+static ExecuteGlobals* pExecGlobals = NULL;
+
+int Desktop::Main()
{
+ pExecGlobals = new ExecuteGlobals();
+
RTL_LOGFILE_CONTEXT( aLog, "desktop (cd100003) ::Desktop::Main" );
// Remember current context object
@@ -1523,12 +1550,12 @@ void Desktop::Main()
if ( eError != BE_OK )
{
HandleBootstrapErrors( eError );
- return;
+ return EXIT_FAILURE;
}
BootstrapStatus eStatus = GetBootstrapStatus();
if (eStatus == BS_TERMINATE) {
- return;
+ return EXIT_FAILURE;
}
// Detect desktop environment - need to do this as early as possible
@@ -1554,14 +1581,14 @@ void Desktop::Main()
UserInstall::UserInstallError instErr_fin = UserInstall::finalize();
if ( instErr_fin != UserInstall::E_None)
{
- OSL_ENSURE(sal_False, "userinstall failed");
+ OSL_FAIL("userinstall failed");
if ( instErr_fin == UserInstall::E_NoDiskSpace )
HandleBootstrapErrors( BE_USERINSTALL_NOTENOUGHDISKSPACE );
else if ( instErr_fin == UserInstall::E_NoWriteAccess )
HandleBootstrapErrors( BE_USERINSTALL_NOWRITEACCESS );
else
HandleBootstrapErrors( BE_USERINSTALL_FAILED );
- return;
+ return EXIT_FAILURE;
}
// refresh path information
utl::Bootstrap::reloadData();
@@ -1571,14 +1598,8 @@ void Desktop::Main()
Reference< XMultiServiceFactory > xSMgr =
::comphelper::getProcessServiceFactory();
- std::auto_ptr<SvtLanguageOptions> pLanguageOptions;
- std::auto_ptr<SvtPathOptions> pPathOptions;
-
Reference< ::com::sun::star::task::XRestartManager > xRestartManager;
- sal_Bool bRestartRequested( sal_False );
- sal_Bool bUseSystemFileDialog(sal_True);
- int nAcquireCount( 0 );
- Reference < css::document::XEventListener > xGlobalBroadcaster;
+ int nAcquireCount( 0 );
try
{
RegisterServices( xSMgr );
@@ -1588,7 +1609,7 @@ void Desktop::Main()
#ifndef UNX
if ( pCmdLineArgs->IsHelp() ) {
displayCmdlineHelp();
- return;
+ return EXIT_SUCCESS;
}
#endif
@@ -1596,9 +1617,10 @@ void Desktop::Main()
// there is no other instance using our data files from a remote host
RTL_LOGFILE_CONTEXT_TRACE( aLog, "desktop (lo119109) Desktop::Main -> Lockfile" );
m_pLockfile = new Lockfile;
- if ( !pCmdLineArgs->IsInvisible() && !pCmdLineArgs->IsNoLockcheck() && !m_pLockfile->check( Lockfile_execWarning )) {
+ if ( !pCmdLineArgs->IsHeadless() && !pCmdLineArgs->IsInvisible() &&
+ !pCmdLineArgs->IsNoLockcheck() && !m_pLockfile->check( Lockfile_execWarning )) {
// Lockfile exists, and user clicked 'no'
- return;
+ return EXIT_FAILURE;
}
RTL_LOGFILE_CONTEXT_TRACE( aLog, "desktop (lo119109) Desktop::Main <- Lockfile" );
@@ -1606,20 +1628,22 @@ void Desktop::Main()
RTL_LOGFILE_CONTEXT_TRACE( aLog, "{ GetEnableATToolSupport" );
if( Application::GetSettings().GetMiscSettings().GetEnableATToolSupport() )
{
- BOOL bQuitApp;
+ sal_Bool bQuitApp;
if( !InitAccessBridge( true, bQuitApp ) )
if( bQuitApp )
- return;
+ return EXIT_FAILURE;
}
RTL_LOGFILE_CONTEXT_TRACE( aLog, "} GetEnableATToolSupport" );
// terminate if requested...
- if( pCmdLineArgs->IsTerminateAfterInit() ) return;
+ if( pCmdLineArgs->IsTerminateAfterInit() )
+ return EXIT_SUCCESS;
// Read the common configuration items for optimization purpose
- if ( !InitializeConfiguration() ) return;
+ if ( !InitializeConfiguration() )
+ return EXIT_FAILURE;
SetSplashScreenProgress(30);
@@ -1634,41 +1658,16 @@ void Desktop::Main()
// create title string
sal_Bool bCheckOk = sal_False;
::com::sun::star::lang::Locale aLocale;
- String aMgrName = String::CreateFromAscii( "iso" );
- ResMgr* pLabelResMgr = ResMgr::SearchCreateResMgr( U2S( aMgrName ), aLocale );
- if ( !pLabelResMgr )
- {
- // no "iso" resource -> search for "ooo" resource
- aMgrName = String::CreateFromAscii( "ooo" );
- pLabelResMgr = ResMgr::SearchCreateResMgr( U2S( aMgrName ), aLocale);
- }
+ String aMgrName = String::CreateFromAscii( "ofa" );
+ ResMgr* pLabelResMgr = ResMgr::SearchCreateResMgr( "ofa", aLocale );
String aTitle = pLabelResMgr ? String( ResId( RID_APPTITLE, *pLabelResMgr ) ) : String();
delete pLabelResMgr;
-/*
- // locale and UI locale in AppSettings are now retrieved from configuration or system directly via SvtSysLocale
- // no reason to set while starting
- // set UI language and locale
- RTL_LOGFILE_CONTEXT_TRACE( aLog, "{ set locale settings" );
- //LanguageSelection langselect;
- OUString aUILocaleString = LanguageSelection::getLanguageString();
- Locale aUILocale = LanguageSelection::IsoStringToLocale(aUILocaleString);
- LanguageType eLanguage = SvtSysLocale().GetLanguage();
-
- // #i39040#, do not call anything between GetSettings and SetSettings that might have
- // a side effect on the settings (like, eg, SvtSysLocaleOptions().GetLocaleLanguageType(),
- // which changes the MiscSettings !!! )
- AllSettings aSettings( Application::GetSettings() );
- aSettings.SetUILocale( aUILocale );
- aSettings.SetLanguage( eLanguage );
- Application::SetSettings( aSettings );
- RTL_LOGFILE_CONTEXT_TRACE( aLog, "} set locale settings" );
-*/
// Check for StarOffice/Suite specific extensions runs also with OpenOffice installation sets
OUString aTitleString( aTitle );
bCheckOk = CheckInstallation( aTitleString );
if ( !bCheckOk )
- return;
+ return EXIT_FAILURE;
else
aTitle = aTitleString;
@@ -1684,13 +1683,11 @@ void Desktop::Main()
SetDisplayName( aTitle );
SetSplashScreenProgress(35);
RTL_LOGFILE_CONTEXT_TRACE( aLog, "{ create SvtPathOptions and SvtLanguageOptions" );
- pPathOptions.reset( new SvtPathOptions);
+ pExecGlobals->pPathOptions.reset( new SvtPathOptions);
SetSplashScreenProgress(40);
-// pLanguageOptions = new SvtLanguageOptions(sal_True);
-// SetSplashScreenProgress(45);
RTL_LOGFILE_CONTEXT_TRACE( aLog, "} create SvtPathOptions and SvtLanguageOptions" );
- // Check special env variable #111015#
+ // Check special env variable
std::vector< String > aUnrestrictedFolders;
svt::getUnrestrictedFolders( aUnrestrictedFolders );
@@ -1703,7 +1700,7 @@ void Desktop::Main()
}
// create service for loadin SFX (still needed in startup)
- xGlobalBroadcaster = Reference < css::document::XEventListener >
+ pExecGlobals->xGlobalBroadcaster = Reference < css::document::XEventListener >
( xSMgr->createInstance(
DEFINE_CONST_UNICODE( "com.sun.star.frame.GlobalEventBroadcaster" ) ), UNO_QUERY );
@@ -1725,21 +1722,22 @@ void Desktop::Main()
SynchronizeExtensionRepositories();
bool bAbort = CheckExtensionDependencies();
if ( bAbort )
- return;
+ return EXIT_FAILURE;
Migration::migrateSettingsIfNecessary();
// keep a language options instance...
- pLanguageOptions.reset( new SvtLanguageOptions(sal_True));
+ pExecGlobals->pLanguageOptions.reset( new SvtLanguageOptions(sal_True));
- if (xGlobalBroadcaster.is())
+ if (pExecGlobals->xGlobalBroadcaster.is())
{
css::document::EventObject aEvent;
aEvent.EventName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("OnStartApp"));
- xGlobalBroadcaster->notifyEvent(aEvent);
+ pExecGlobals->xGlobalBroadcaster->notifyEvent(aEvent);
}
SetSplashScreenProgress(50);
+
// Backing Component
sal_Bool bCrashed = sal_False;
sal_Bool bExistsRecoveryData = sal_False;
@@ -1755,7 +1753,7 @@ void Desktop::Main()
}
// check whether the shutdown is caused by restart
- bRestartRequested = ( xRestartManager.is() && xRestartManager->isRestartRequested( sal_True ) );
+ pExecGlobals->bRestartRequested = ( xRestartManager.is() && xRestartManager->isRestartRequested( sal_True ) );
if ( pCmdLineArgs->IsHeadless() )
{
@@ -1763,43 +1761,38 @@ void Desktop::Main()
// headless mode relies on Application::EnableHeadlessMode()
// which does only work for VCL dialogs!!
SvtMiscOptions aMiscOptions;
- bUseSystemFileDialog = aMiscOptions.UseSystemFileDialog();
+ pExecGlobals->bUseSystemFileDialog = aMiscOptions.UseSystemFileDialog();
aMiscOptions.SetUseSystemFileDialog( sal_False );
}
- if ( !bRestartRequested )
+ if ( !pExecGlobals->bRestartRequested )
{
- if (
- (pCmdLineArgs->IsEmptyOrAcceptOnly() ) &&
+ if ((!pCmdLineArgs->WantsToLoadDocument() && !pCmdLineArgs->IsInvisible() && !pCmdLineArgs->IsHeadless() ) &&
(SvtModuleOptions().IsModuleInstalled(SvtModuleOptions::E_SSTARTMODULE)) &&
(!bExistsRecoveryData ) &&
(!bExistsSessionData ) &&
- (!Application::AnyInput( INPUT_APPEVENT ) )
- )
+ (!Application::AnyInput( INPUT_APPEVENT ) ))
{
- RTL_LOGFILE_CONTEXT_TRACE( aLog, "{ create BackingComponent" );
- Reference< XFrame > xDesktopFrame( xSMgr->createInstance(
- OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.Desktop" ))), UNO_QUERY );
- if (xDesktopFrame.is())
- {
- SetSplashScreenProgress(60);
- Reference< XFrame > xBackingFrame;
- Reference< ::com::sun::star::awt::XWindow > xContainerWindow;
-
- xBackingFrame = xDesktopFrame->findFrame(OUString( RTL_CONSTASCII_USTRINGPARAM( "_blank" )), 0);
- if (xBackingFrame.is())
- xContainerWindow = xBackingFrame->getContainerWindow();
- if (xContainerWindow.is())
- {
- SetDocumentExtendedStyle(xContainerWindow);
- SetSplashScreenProgress(75);
- Sequence< Any > lArgs(1);
- lArgs[0] <<= xContainerWindow;
-
- Reference< XController > xBackingComp(
- xSMgr->createInstanceWithArguments(OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.StartModule") ), lArgs),
- UNO_QUERY);
- SetSplashScreenProgress(80);
+ RTL_LOGFILE_CONTEXT_TRACE( aLog, "{ create BackingComponent" );
+ Reference< XFrame > xDesktopFrame( xSMgr->createInstance( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.Desktop" ))), UNO_QUERY );
+ if (xDesktopFrame.is())
+ {
+ SetSplashScreenProgress(60);
+ Reference< XFrame > xBackingFrame;
+ Reference< ::com::sun::star::awt::XWindow > xContainerWindow;
+
+ xBackingFrame = xDesktopFrame->findFrame(OUString( RTL_CONSTASCII_USTRINGPARAM( "_blank" )), 0);
+ if (xBackingFrame.is())
+ xContainerWindow = xBackingFrame->getContainerWindow();
+ if (xContainerWindow.is())
+ {
+ SetDocumentExtendedStyle(xContainerWindow);
+ SetSplashScreenProgress(75);
+ Sequence< Any > lArgs(1);
+ lArgs[0] <<= xContainerWindow;
+
+ Reference< XController > xBackingComp(
+ xSMgr->createInstanceWithArguments(OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.StartModule") ), lArgs), UNO_QUERY);
if (xBackingComp.is())
{
Reference< ::com::sun::star::awt::XWindow > xBackingWin(xBackingComp, UNO_QUERY);
@@ -1823,22 +1816,13 @@ void Desktop::Main()
com::sun::star::uno::Exception te;
wte.TargetException >>= te;
FatalError( MakeStartupConfigAccessErrorMessage(wte.Message + te.Message) );
- return;
+ return EXIT_FAILURE;
}
catch ( com::sun::star::uno::Exception& e )
{
FatalError( MakeStartupErrorMessage(e.Message) );
- return;
+ return EXIT_FAILURE;
}
- /*
- catch ( ... )
- {
- FatalError( MakeStartupErrorMessage(
- OUString::createFromAscii(
- "Unknown error during startup (Office wrapper service).\nInstallation could be damaged.")));
- return;
- }
- */
SetSplashScreenProgress(55);
SvtFontSubstConfig().Apply();
@@ -1850,10 +1834,9 @@ void Desktop::Main()
aOptions.SetVCLSettings();
SetSplashScreenProgress(60);
- if ( !bRestartRequested )
+ if ( !pExecGlobals->bRestartRequested )
{
Application::SetFilterHdl( LINK( this, Desktop, ImplInitFilterHdl ) );
-
sal_Bool bTerminateRequested = sal_False;
// Preload function depends on an initialized sfx application!
@@ -1880,17 +1863,8 @@ void Desktop::Main()
catch ( com::sun::star::uno::Exception& e )
{
FatalError( MakeStartupErrorMessage(e.Message) );
- return;
- }
- /*
- catch ( ... )
- {
- FatalError( MakeStartupErrorMessage(
- OUString::createFromAscii(
- "Unknown error during startup (TD/Desktop service).\nInstallation could be damaged.")));
- return;
+ return EXIT_FAILURE;
}
- */
// Post user event to startup first application component window
// We have to send this OpenClients message short before execute() to
@@ -1918,9 +1892,9 @@ void Desktop::Main()
new svt::JavaContext( com::sun::star::uno::getCurrentContext() ) );
// check whether the shutdown is caused by restart just before entering the Execute
- bRestartRequested = bRestartRequested || ( xRestartManager.is() && xRestartManager->isRestartRequested( sal_True ) );
+ pExecGlobals->bRestartRequested = pExecGlobals->bRestartRequested || ( xRestartManager.is() && xRestartManager->isRestartRequested( sal_True ) );
- if ( !bRestartRequested )
+ if ( !pExecGlobals->bRestartRequested )
{
// if this run of the office is triggered by restart, some additional actions should be done
DoRestartActionsIfNecessary( !pCmdLineArgs->IsInvisible() && !pCmdLineArgs->IsNoQuickstart() );
@@ -1939,52 +1913,65 @@ void Desktop::Main()
FatalError( MakeStartupErrorMessage(exAnyCfg.Message) );
}
}
-
- if ( bRestartRequested )
+ // CAUTION: you do not necessarily get here e.g. on the Mac.
+ // please put all deinitialization code into doShutdown
+ return doShutdown();
+}
+
+int Desktop::doShutdown()
+{
+ if( ! pExecGlobals )
+ return EXIT_SUCCESS;
+
+ if ( pExecGlobals->bRestartRequested )
SetRestartState();
- if (xGlobalBroadcaster.is())
+ if (pExecGlobals->xGlobalBroadcaster.is())
{
css::document::EventObject aEvent;
aEvent.EventName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("OnCloseApp"));
- xGlobalBroadcaster->notifyEvent(aEvent);
+ pExecGlobals->xGlobalBroadcaster->notifyEvent(aEvent);
}
- delete pResMgr;
+ delete pResMgr, pResMgr = NULL;
// Restore old value
+ CommandLineArgs* pCmdLineArgs = GetCommandLineArgs();
if ( pCmdLineArgs->IsHeadless() )
- SvtMiscOptions().SetUseSystemFileDialog( bUseSystemFileDialog );
+ SvtMiscOptions().SetUseSystemFileDialog( pExecGlobals->bUseSystemFileDialog );
// remove temp directory
RemoveTemporaryDirectory();
FlushConfiguration();
// The acceptors in the AcceptorMap must be released (in DeregisterServices)
// with the solar mutex unlocked, to avoid deadlock:
- nAcquireCount = Application::ReleaseSolarMutex();
+ sal_uLong nAcquireCount = Application::ReleaseSolarMutex();
DeregisterServices();
Application::AcquireSolarMutex(nAcquireCount);
tools::DeInitTestToolLib();
// be sure that path/language options gets destroyed before
// UCB is deinitialized
RTL_LOGFILE_CONTEXT_TRACE( aLog, "-> dispose path/language options" );
- pLanguageOptions.reset( 0 );
- pPathOptions.reset( 0 );
+ pExecGlobals->pLanguageOptions.reset( 0 );
+ pExecGlobals->pPathOptions.reset( 0 );
RTL_LOGFILE_CONTEXT_TRACE( aLog, "<- dispose path/language options" );
RTL_LOGFILE_CONTEXT_TRACE( aLog, "-> deinit ucb" );
::ucbhelper::ContentBroker::deinitialize();
RTL_LOGFILE_CONTEXT_TRACE( aLog, "<- deinit ucb" );
+ sal_Bool bRR = pExecGlobals->bRestartRequested;
+ delete pExecGlobals, pExecGlobals = NULL;
+
RTL_LOGFILE_CONTEXT_TRACE( aLog, "FINISHED WITH Destop::Main" );
- if ( bRestartRequested )
+ if ( bRR )
{
restartOnMac(true);
if ( m_rSplashScreen.is() )
m_rSplashScreen->reset();
- // wouldn't the solution be more clean if SalMain returns the exit code to the system?
- _exit( ExitHelper::E_NORMAL_RESTART );
+ return ExitHelper::E_NORMAL_RESTART;
}
+ return EXIT_SUCCESS;
}
IMPL_LINK( Desktop, ImplInitFilterHdl, ConvertData*, pData )
@@ -2082,7 +2069,7 @@ sal_Bool Desktop::shouldLaunchQuickstart()
const SfxPoolItem* pItem=0;
SfxItemSet aQLSet(SFX_APP()->GetPool(), SID_ATTR_QUICKLAUNCHER, SID_ATTR_QUICKLAUNCHER);
SFX_APP()->GetOptions(aQLSet);
- SfxItemState eState = aQLSet.GetItemState(SID_ATTR_QUICKLAUNCHER, FALSE, &pItem);
+ SfxItemState eState = aQLSet.GetItemState(SID_ATTR_QUICKLAUNCHER, sal_False, &pItem);
if (SFX_ITEM_SET == eState)
bQuickstart = ((SfxBoolItem*)pItem)->GetValue();
}
@@ -2164,18 +2151,6 @@ void Desktop::SystemSettingsChanging( AllSettings& rSettings, Window* )
SvtMenuOptions aMenuOpt;
hStyleSettings.SetUseImagesInMenus(aMenuOpt.GetMenuIconsState());
-
- sal_uInt16 nTabStyle = hStyleSettings.GetTabControlStyle();
- nTabStyle &= ~STYLE_TABCONTROL_SINGLELINE;
- if( aAppearanceCfg.IsSingleLineTabCtrl() )
- nTabStyle |=STYLE_TABCONTROL_SINGLELINE;
-
- nTabStyle &= ~STYLE_TABCONTROL_COLOR;
- if( aAppearanceCfg.IsColoredTabCtrl() )
- nTabStyle |= STYLE_TABCONTROL_COLOR;
-
- hStyleSettings.SetTabControlStyle(nTabStyle);
-
hStyleSettings.SetDragFullOptions( nDragFullOptions );
rSettings.SetStyleSettings ( hStyleSettings );
}
@@ -2211,14 +2186,8 @@ IMPL_LINK( Desktop, OpenClients_Impl, void*, EMPTYARG )
OfficeIPCThread::SetReady();
- // CloseStartupScreen();
CloseSplashScreen();
-
CheckFirstRun( );
-
- // allow ipc interaction
-// OfficeIPCThread::SetReady();
-
EnableOleAutomation();
if (getenv ("OOO_EXIT_POST_STARTUP"))
@@ -2611,7 +2580,7 @@ void Desktop::OpenClients()
// check if a document has been recovered - if there is one of if a document was loaded by cmdline, no default document
// should be created
Reference < XComponent > xFirst;
- BOOL bLoaded = FALSE;
+ sal_Bool bLoaded = sal_False;
CommandLineArgs* pArgs = GetCommandLineArgs();
SvtInternalOptions aInternalOptions;
@@ -2655,8 +2624,6 @@ void Desktop::OpenClients()
aHelpURLBuffer.appendAscii("&System=UNX");
#elif defined WNT
aHelpURLBuffer.appendAscii("&System=WIN");
-#elif defined MAC
- aHelpURLBuffer.appendAscii("&System=MAC");
#elif defined OS2
aHelpURLBuffer.appendAscii("&System=OS2");
#endif
@@ -2687,7 +2654,7 @@ void Desktop::OpenClients()
OUString aPreloadData;
aPerfTuneIniFile.getFrom( OUString( RTL_CONSTASCII_USTRINGPARAM( "QuickstartPreloadConfiguration" )), aPreloadData, aDefault );
- if ( aPreloadData.equalsAscii( "1" ))
+ if ( aPreloadData.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "1" ) ))
{
if ( pArgs->IsWriter() ||
pArgs->IsCalc() ||
@@ -2716,16 +2683,6 @@ void Desktop::OpenClients()
if ( ! bAllowRecoveryAndSessionManagement )
{
- /*
- ::comphelper::ConfigurationHelper::writeDirectKey(
- ::comphelper::getProcessServiceFactory(),
- ::rtl::OUString::createFromAscii("org.openoffice.Office.Recovery"),
- ::rtl::OUString::createFromAscii("AutoSave"),
- ::rtl::OUString::createFromAscii("Enabled"),
- ::com::sun::star::uno::makeAny(sal_False),
- ::comphelper::ConfigurationHelper::E_STANDARD);
-
- */
try
{
Reference< XDispatch > xRecovery(
@@ -2746,7 +2703,7 @@ void Desktop::OpenClients()
{
OUString aMessage = OUString(RTL_CONSTASCII_USTRINGPARAM("Could not disable AutoRecovery.\n"))
+ e.Message;
- OSL_ENSURE(sal_False, OUStringToOString(aMessage, RTL_TEXTENCODING_ASCII_US).getStr());
+ OSL_FAIL(OUStringToOString(aMessage, RTL_TEXTENCODING_ASCII_US).getStr());
}
}
else
@@ -2772,7 +2729,7 @@ void Desktop::OpenClients()
bCrashed ,
bExistsRecoveryData);
/* TODO we cant be shure, that at least one document could be recovered here successfully
- So we set bLoaded=TRUE to supress opening of the default document.
+ So we set bLoaded=sal_True to supress opening of the default document.
But we should make it more safe. Otherwhise we have an office without an UI ...
...
May be we can check the desktop if some documents are existing there.
@@ -2788,7 +2745,7 @@ void Desktop::OpenClients()
{
OUString aMessage = OUString(RTL_CONSTASCII_USTRINGPARAM("Error during recovery\n"))
+ e.Message;
- OSL_ENSURE(sal_False, OUStringToOString(aMessage, RTL_TEXTENCODING_ASCII_US).getStr());
+ OSL_FAIL(OUStringToOString(aMessage, RTL_TEXTENCODING_ASCII_US).getStr());
}
}
@@ -2811,7 +2768,7 @@ void Desktop::OpenClients()
{
OUString aMessage = OUString(RTL_CONSTASCII_USTRINGPARAM("Registration of session listener failed\n"))
+ e.Message;
- OSL_ENSURE(sal_False, OUStringToOString(aMessage, RTL_TEXTENCODING_ASCII_US).getStr());
+ OSL_FAIL(OUStringToOString(aMessage, RTL_TEXTENCODING_ASCII_US).getStr());
}
if (
@@ -2829,7 +2786,7 @@ void Desktop::OpenClients()
{
OUString aMessage = OUString(RTL_CONSTASCII_USTRINGPARAM("Error in session management\n"))
+ e.Message;
- OSL_ENSURE(sal_False, OUStringToOString(aMessage, RTL_TEXTENCODING_ASCII_US).getStr());
+ OSL_FAIL(OUStringToOString(aMessage, RTL_TEXTENCODING_ASCII_US).getStr());
}
}
}
@@ -2998,7 +2955,7 @@ String GetURL_Impl(
}
// Add path seperator to these directory and make given URL (rName) absolute by using of current working directory
- // Attention: "setFianlSlash()" is neccessary for calling "smartRel2Abs()"!!!
+ // Attention: "setFinalSlash()" is necessary for calling "smartRel2Abs()"!!!
// Otherwhise last part will be ignored and wrong result will be returned!!!
// "smartRel2Abs()" interpret given URL as file not as path. So he truncate last element to get the base path ...
// But if we add a seperator - he doesn't do it anymore.
@@ -3010,7 +2967,6 @@ String GetURL_Impl(
// Use the provided parameters for smartRel2Abs to support the usage of '%' in system paths.
// Otherwise this char won't get encoded and we are not able to load such files later,
- // see #110156#
bool bWasAbsolute;
INetURLObject aURL = aObj.smartRel2Abs( rName, bWasAbsolute, false, INetURLObject::WAS_ENCODED,
RTL_TEXTENCODING_UTF8, true );
@@ -3198,6 +3154,13 @@ void Desktop::HandleAppEvent( const ApplicationEvent& rAppEvent )
catch(const css::uno::Exception&)
{}
}
+ else if( rAppEvent.GetEvent() == "PRIVATE:DOSHUTDOWN" )
+ {
+ Desktop* pD = dynamic_cast<Desktop*>(GetpApp());
+ OSL_ENSURE( pD, "no desktop ?!?" );
+ if( pD )
+ pD->doShutdown();
+ }
}
void Desktop::OpenSplashScreen()
@@ -3207,6 +3170,7 @@ void Desktop::OpenSplashScreen()
sal_Bool bVisible = sal_False;
// Show intro only if this is normal start (e.g. no server, no quickstart, no printing )
if ( !pCmdLine->IsInvisible() &&
+ !pCmdLine->IsHeadless() &&
!pCmdLine->IsQuickstart() &&
!pCmdLine->IsMinimized() &&
!pCmdLine->IsNoLogo() &&
@@ -3289,7 +3253,7 @@ void Desktop::DoFirstRunInitializations()
}
catch(const ::com::sun::star::uno::Exception&)
{
- OSL_ENSURE( sal_False, "Desktop::DoFirstRunInitializations: caught an exception while trigger job executor ..." );
+ OSL_FAIL( "Desktop::DoFirstRunInitializations: caught an exception while trigger job executor ..." );
}
}
diff --git a/desktop/source/app/appfirststart.cxx b/desktop/source/app/appfirststart.cxx
index 6e6b4c32c7..4ab37b7a3e 100644
--- a/desktop/source/app/appfirststart.cxx
+++ b/desktop/source/app/appfirststart.cxx
@@ -49,88 +49,6 @@ using namespace ::com::sun::star::beans;
static const OUString sConfigSrvc( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationProvider" ) );
static const OUString sAccessSrvc( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationUpdateAccess" ) );
-/* Path of the license. */
-OUString Desktop::GetLicensePath()
-{
- // license file name
- static const char *szLicensePath = "/share/readme";
-#if defined(WNT) || defined(OS2)
- static const char *szWNTLicenseName = "/license";
- static const char *szWNTLicenseExt = ".txt";
-#else
- static const char *szUNXLicenseName = "/LICENSE";
- static const char *szUNXLicenseExt = "";
-#endif
- static OUString aLicensePath;
-
- if (aLicensePath.getLength() > 0)
- return aLicensePath;
-
- OUString aBaseInstallPath(RTL_CONSTASCII_USTRINGPARAM("$BRAND_BASE_DIR"));
- rtl::Bootstrap::expandMacros(aBaseInstallPath);
-
- // determine the filename of the license to show
- OUString aLangString;
- ::com::sun::star::lang::Locale aLocale;
- rtl::OString aMgrName = rtl::OString("dkt");
-
- AllSettings aSettings(Application::GetSettings());
- aLocale = aSettings.GetUILocale();
- ResMgr* pLocalResMgr = ResMgr::SearchCreateResMgr(aMgrName, aLocale);
-
- aLangString = aLocale.Language;
- if ( aLocale.Country.getLength() != 0 )
- {
- aLangString += OUString::createFromAscii("-");
- aLangString += aLocale.Country;
- if ( aLocale.Variant.getLength() != 0 )
- {
- aLangString += OUString::createFromAscii("-");
- aLangString += aLocale.Variant;
- }
- }
-#if defined(WNT) || defined(OS2)
- aLicensePath =
- aBaseInstallPath + OUString::createFromAscii(szLicensePath)
- + OUString::createFromAscii(szWNTLicenseName)
- + OUString::createFromAscii("_")
- + aLangString
- + OUString::createFromAscii(szWNTLicenseExt);
-#else
- aLicensePath =
- aBaseInstallPath + OUString::createFromAscii(szLicensePath)
- + OUString::createFromAscii(szUNXLicenseName)
- + OUString::createFromAscii("_")
- + aLangString
- + OUString::createFromAscii(szUNXLicenseExt);
-#endif
- delete pLocalResMgr;
- return aLicensePath;
-}
-
-/* Check if we need to accept license. */
-sal_Bool Desktop::LicenseNeedsAcceptance()
-{
- // Don't show a license
- return sal_False;
-/*
- sal_Bool bShowLicense = sal_True;
- sal_Int32 nOpenSourceContext = 0;
- try
- {
- ::utl::ConfigManager::GetDirectConfigProperty(
- ::utl::ConfigManager::OPENSOURCECONTEXT ) >>= nOpenSourceContext;
- }
- catch( const ::com::sun::star::uno::Exception& ) {}
-
- // open source needs no license
- if ( nOpenSourceContext > 0 )
- bShowLicense = sal_False;
-
- return bShowLicense;
-*/
-}
-
/* Local function - get access to the configuration */
static Reference< XPropertySet > impl_getConfigurationAccess( const OUString& rPath )
{
@@ -147,128 +65,6 @@ static Reference< XPropertySet > impl_getConfigurationAccess( const OUString& rP
xConfigProvider->createInstanceWithArguments( sAccessSrvc, aArgs ), UNO_QUERY_THROW );
}
-/* Local function - was the wizard completed already? */
-static sal_Bool impl_isFirstStart()
-{
- try {
- Reference< XPropertySet > xPSet = impl_getConfigurationAccess( OUString( RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.Setup/Office" ) ) );
-
- Any result = xPSet->getPropertyValue(OUString::createFromAscii("FirstStartWizardCompleted"));
- sal_Bool bCompleted = sal_False;
- if ((result >>= bCompleted) && bCompleted)
- return sal_False; // wizard was already completed
- else
- return sal_True;
- } catch (const Exception&)
- {
- return sal_True;
- }
-}
-
-/* Local function - convert oslDateTime to tools DateTime */
-static DateTime impl_oslDateTimeToDateTime(const oslDateTime& aDateTime)
-{
- return DateTime(
- Date(aDateTime.Day, aDateTime.Month, aDateTime.Year),
- Time(aDateTime.Hours, aDateTime.Minutes, aDateTime.Seconds));
-}
-
-/* Local function - get DateTime from a string */
-static sal_Bool impl_parseDateTime(const OUString& aString, DateTime& aDateTime)
-{
- // take apart a canonical literal xsd:dateTime string
- //CCYY-MM-DDThh:mm:ss(Z)
-
- OUString aDateTimeString = aString.trim();
-
- // check length
- if (aDateTimeString.getLength() < 19 || aDateTimeString.getLength() > 20)
- return sal_False;
-
- sal_Int32 nDateLength = 10;
- sal_Int32 nTimeLength = 8;
-
- OUString aDateTimeSep = OUString::createFromAscii("T");
- OUString aDateSep = OUString::createFromAscii("-");
- OUString aTimeSep = OUString::createFromAscii(":");
- OUString aUTCString = OUString::createFromAscii("Z");
-
- OUString aDateString = aDateTimeString.copy(0, nDateLength);
- OUString aTimeString = aDateTimeString.copy(nDateLength+1, nTimeLength);
-
- sal_Int32 nIndex = 0;
- sal_Int32 nYear = aDateString.getToken(0, '-', nIndex).toInt32();
- sal_Int32 nMonth = aDateString.getToken(0, '-', nIndex).toInt32();
- sal_Int32 nDay = aDateString.getToken(0, '-', nIndex).toInt32();
- nIndex = 0;
- sal_Int32 nHour = aTimeString.getToken(0, ':', nIndex).toInt32();
- sal_Int32 nMinute = aTimeString.getToken(0, ':', nIndex).toInt32();
- sal_Int32 nSecond = aTimeString.getToken(0, ':', nIndex).toInt32();
-
- Date tmpDate((USHORT)nDay, (USHORT)nMonth, (USHORT)nYear);
- Time tmpTime(nHour, nMinute, nSecond);
- DateTime tmpDateTime(tmpDate, tmpTime);
- if (aString.indexOf(aUTCString) < 0)
- tmpDateTime.ConvertToUTC();
-
- aDateTime = tmpDateTime;
- return sal_True;
-}
-
-/* Local function - was the license accepted already? */
-static sal_Bool impl_isLicenseAccepted()
-{
- // If no license will be shown ... it must not be accepted.
- // So it was accepted "hardly" by the outside installer.
- // But if the configuration entry "HideEula" will be removed afterwards ..
- // we have to show the licese page again and user has to accept it here .-)
- if ( ! Desktop::LicenseNeedsAcceptance() )
- return sal_True;
-
- try
- {
- Reference< XPropertySet > xPSet = impl_getConfigurationAccess( OUString( RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.Setup/Office" ) ) );
-
- Any result = xPSet->getPropertyValue(OUString::createFromAscii("LicenseAcceptDate"));
-
- OUString aAcceptDate;
- if (result >>= aAcceptDate)
- {
- // compare to date of license file
- OUString aLicenseURL = Desktop::GetLicensePath();
- osl::DirectoryItem aDirItem;
- if (osl::DirectoryItem::get(aLicenseURL, aDirItem) != osl::FileBase::E_None)
- return sal_False;
- osl::FileStatus aStatus(FileStatusMask_All);
- if (aDirItem.getFileStatus(aStatus) != osl::FileBase::E_None)
- return sal_False;
- TimeValue aTimeVal = aStatus.getModifyTime();
- oslDateTime aDateTimeVal;
- if (!osl_getDateTimeFromTimeValue(&aTimeVal, &aDateTimeVal))
- return sal_False;
-
- // compare dates
- DateTime aLicenseDateTime = impl_oslDateTimeToDateTime(aDateTimeVal);
- DateTime aAcceptDateTime;
- if (!impl_parseDateTime(aAcceptDate, aAcceptDateTime))
- return sal_False;
-
- if ( aAcceptDateTime > aLicenseDateTime )
- return sal_True;
- }
- return sal_False;
- } catch (const Exception&)
- {
- return sal_False;
- }
-}
-
-/* Check if we need the first start wizard. */
-sal_Bool Desktop::IsFirstStartWizardNeeded()
-{
- return impl_isFirstStart() || !impl_isLicenseAccepted();
-}
-
void Desktop::DoRestartActionsIfNecessary( sal_Bool bQuickStart )
{
if ( bQuickStart )
diff --git a/desktop/source/app/appinit.cxx b/desktop/source/app/appinit.cxx
index c33e7c0077..bb83abc18a 100644
--- a/desktop/source/app/appinit.cxx
+++ b/desktop/source/app/appinit.cxx
@@ -82,7 +82,6 @@
#define DESKTOP_TEMPDIRNAME "soffice.tmp"
-using namespace rtl;
using namespace desktop;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::lang;
@@ -90,6 +89,8 @@ using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::registry;
using namespace ::com::sun::star::ucb;
+using ::rtl::OUString;
+
namespace desktop
{
@@ -102,7 +103,7 @@ static bool configureUcb(bool bServer, rtl::OUString const & rPortalConnect)
xServiceFactory( comphelper::getProcessServiceFactory() );
if (!xServiceFactory.is())
{
- DBG_ERROR("configureUcb(): No XMultiServiceFactory");
+ OSL_FAIL("configureUcb(): No XMultiServiceFactory");
return false;
}
@@ -118,14 +119,13 @@ static bool configureUcb(bool bServer, rtl::OUString const & rPortalConnect)
Sequence< Any > aArgs(6);
aArgs[0]
- <<= rtl::OUString::createFromAscii(bServer ?
- UCB_CONFIGURATION_KEY1_SERVER :
- UCB_CONFIGURATION_KEY1_LOCAL);
+ <<= bServer ? rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(UCB_CONFIGURATION_KEY1_SERVER)) :
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(UCB_CONFIGURATION_KEY1_LOCAL));
aArgs[1]
- <<= rtl::OUString::createFromAscii(UCB_CONFIGURATION_KEY2_OFFICE);
- aArgs[2] <<= rtl::OUString::createFromAscii("PIPE");
+ <<= rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(UCB_CONFIGURATION_KEY2_OFFICE));
+ aArgs[2] <<= rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PIPE"));
aArgs[3] <<= aPipe;
- aArgs[4] <<= rtl::OUString::createFromAscii("PORTAL");
+ aArgs[4] <<= rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PORTAL"));
aArgs[5] <<= aPortal.makeStringAndClear();
bool ret =
@@ -146,13 +146,13 @@ static bool configureUcb(bool bServer, rtl::OUString const & rPortalConnect)
);
rtl::OUString aDesktopEnvironment;
if ((aValue >>= aDesktopEnvironment)
- && aDesktopEnvironment.equalsAscii("GNOME"))
+ && aDesktopEnvironment.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("GNOME")))
{
Reference<XContentProviderManager> xCPM =
cb->getContentProviderManagerInterface();
- // Workaround for P1 #124597#. Instanciate GNOME-VFS-UCP in the thread that initialized
+ //Instanciate GNOME-VFS-UCP in the thread that initialized
// GNOME in order to avoid a deadlock that may occure in case UCP gets initialized from
// a different thread. The latter may happen when calling the Office remotely via UNO.
// THIS IS NOT A FIX, JUST A WORKAROUND!
@@ -161,20 +161,20 @@ static bool configureUcb(bool bServer, rtl::OUString const & rPortalConnect)
{
Reference<XContentProvider> xCP(
xServiceFactory->createInstance(
- rtl::OUString::createFromAscii(
- "com.sun.star.ucb.GnomeVFSContentProvider")),
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.ucb.GnomeVFSContentProvider"))),
UNO_QUERY);
if(xCP.is())
xCPM->registerContentProvider(
xCP,
- rtl::OUString::createFromAscii(".*"),
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".*")),
false);
} catch (...)
{
}
}
}
- } catch (RuntimeException e) {
+ } catch (RuntimeException &e) {
}
}
#endif // GNOME_VFS_ENABLED
@@ -277,8 +277,8 @@ void Desktop::RegisterServices( Reference< XMultiServiceFactory >& xSMgr )
pCmdLine->GetPortalConnectString( aPortalConnect );
if ( !configureUcb( bServer, aPortalConnect ) )
{
- DBG_ERROR( "Can't configure UCB" );
- throw com::sun::star::uno::Exception(rtl::OUString::createFromAscii("RegisterServices, configureUcb"), NULL);
+ OSL_FAIL( "Can't configure UCB" );
+ throw com::sun::star::uno::Exception(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("RegisterServices, configureUcb")), NULL);
}
CreateTemporaryDirectory();
@@ -306,7 +306,7 @@ void Desktop::createAcceptor(const OUString& aAcceptString)
aSeq[1] <<= bAccept;
Reference<XInitialization> rAcceptor(
::comphelper::getProcessServiceFactory()->createInstance(
- OUString::createFromAscii( "com.sun.star.office.Acceptor" )), UNO_QUERY );
+ OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.office.Acceptor" ))), UNO_QUERY );
if ( rAcceptor.is() ) {
try{
rAcceptor->initialize( aSeq );
@@ -314,11 +314,11 @@ void Desktop::createAcceptor(const OUString& aAcceptString)
} catch (com::sun::star::uno::Exception&) {
// no error handling needed...
// acceptor just won't come up
- OSL_ENSURE(sal_False, "Acceptor could not be created.");
+ OSL_FAIL("Acceptor could not be created.");
}
} else {
// there is already an acceptor with this description
- OSL_ENSURE(sal_False, "Acceptor already exists.");
+ OSL_FAIL("Acceptor already exists.");
}
}
@@ -368,7 +368,7 @@ void Desktop::destroyAcceptor(const OUString& aAcceptString)
// this is the last reference and the acceptor will be destructed
rMap.erase(aAcceptString);
} else {
- OSL_ENSURE(sal_False, "Found no acceptor to remove");
+ OSL_FAIL("Found no acceptor to remove");
}
}
}
diff --git a/desktop/source/app/appsys.cxx b/desktop/source/app/appsys.cxx
index 61948550ca..e2856d5b72 100644
--- a/desktop/source/app/appsys.cxx
+++ b/desktop/source/app/appsys.cxx
@@ -35,11 +35,10 @@
#include <rtl/ustring.hxx>
#include <tools/solar.h>
-#include <tools/prewin.h>
-#include <winreg.h>
-#include <tools/postwin.h>
#include <tools/urlobj.hxx>
+#include <windows.h>
+
#define U2S(STRING) ::rtl::OUStringToOString(STRING, RTL_TEXTENCODING_UTF8)
@@ -55,7 +54,7 @@ void FATToVFat_Impl( String& aName )
HANDLE h = FindFirstFile( U2S(aName).getStr(), &aData );
if ( h )
{
- // FAT-Kurzname in VFAT-Langname wandeln
+ // Change FAT short filename into VFAT long filename
aObj.removeSegment();
aObj.insertName( String::CreateFromAscii( aData.cFileName ) );
aName = aObj.PathToFileName();
diff --git a/desktop/source/app/check_ext_deps.cxx b/desktop/source/app/check_ext_deps.cxx
index bfc0197b3a..fbc5136518 100644
--- a/desktop/source/app/check_ext_deps.cxx
+++ b/desktop/source/app/check_ext_deps.cxx
@@ -2,7 +2,7 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
+ *
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
@@ -148,7 +148,7 @@ void SilentCommandEnv::handle( Reference< task::XInteractionRequest> const & xRe
uno::Reference< uno::XComponentContext > xContext = comphelper_getProcessComponentContext();
uno::Reference< ui::dialogs::XExecutableDialog > xDialog(
deployment::ui::LicenseDialog::create(
- xContext, VCLUnoHelper::GetInterface( NULL ),
+ xContext, VCLUnoHelper::GetInterface( NULL ),
licExc.ExtensionName, licExc.Text ) );
sal_Int16 res = xDialog->execute();
if ( res == ui::dialogs::ExecutableDialogResults::CANCEL )
@@ -220,8 +220,6 @@ void SilentCommandEnv::pop() throw (uno::RuntimeException)
} // end namespace
//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
static const OUString sConfigSrvc( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationProvider" ) );
static const OUString sAccessSrvc( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationUpdateAccess" ) );
//------------------------------------------------------------------------------
@@ -233,7 +231,7 @@ static sal_Int16 impl_showExtensionDialog( uno::Reference< uno::XComponentContex
uno::Reference< lang::XMultiComponentFactory > xServiceManager( xContext->getServiceManager() );
if( !xServiceManager.is() )
- throw uno::RuntimeException(
+ throw uno::RuntimeException(
UNISTRING( "impl_showExtensionDialog(): unable to obtain service manager from component context" ), uno::Reference< uno::XInterface > () );
xService = xServiceManager->createInstanceWithContext( sServiceName, xContext );
@@ -254,7 +252,7 @@ static bool impl_checkDependencies( const uno::Reference< uno::XComponentContext
if ( !xExtensionManager.is() )
{
- OSL_ENSURE( 0, "Could not get the Extension Manager!" );
+ OSL_FAIL( "Could not get the Extension Manager!" );
return true;
}
@@ -301,7 +299,7 @@ static bool impl_checkDependencies( const uno::Reference< uno::XComponentContext
catch ( uno::RuntimeException & ) { throw; }
catch ( uno::Exception & exc) {
(void) exc;
- OSL_ENSURE( 0, ::rtl::OUStringToOString( exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
+ OSL_FAIL( ::rtl::OUStringToOString( exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
}
if ( bRegistered )
@@ -334,15 +332,15 @@ static void impl_setNeedsCompatCheck()
xFactory->createInstance(sConfigSrvc), UNO_QUERY_THROW);
Sequence< Any > theArgs(1);
- beans::NamedValue v( OUString::createFromAscii("NodePath"),
- makeAny( OUString::createFromAscii("org.openoffice.Setup/Office") ) );
+ beans::NamedValue v( OUString(RTL_CONSTASCII_USTRINGPARAM("NodePath")),
+ makeAny( OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Setup/Office")) ) );
theArgs[0] <<= v;
Reference< beans::XPropertySet > pset = Reference< beans::XPropertySet >(
theConfigProvider->createInstanceWithArguments( sAccessSrvc, theArgs ), UNO_QUERY_THROW );
- Any value = makeAny( OUString::createFromAscii("never") );
+ Any value = makeAny( OUString(RTL_CONSTASCII_USTRINGPARAM("never")) );
- pset->setPropertyValue( OUString::createFromAscii("LastCompatibilityCheckID"), value );
+ pset->setPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("LastCompatibilityCheckID")), value );
Reference< util::XChangesBatch >( pset, UNO_QUERY_THROW )->commitChanges();
}
catch (const Exception&) {}
@@ -387,20 +385,20 @@ static bool impl_needsCompatCheck()
xFactory->createInstance(sConfigSrvc), UNO_QUERY_THROW);
Sequence< Any > theArgs(1);
- beans::NamedValue v( OUString::createFromAscii("NodePath"),
- makeAny( OUString::createFromAscii("org.openoffice.Setup/Office") ) );
+ beans::NamedValue v( OUString(RTL_CONSTASCII_USTRINGPARAM("NodePath")),
+ makeAny( OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Setup/Office")) ) );
theArgs[0] <<= v;
Reference< beans::XPropertySet > pset = Reference< beans::XPropertySet >(
theConfigProvider->createInstanceWithArguments( sAccessSrvc, theArgs ), UNO_QUERY_THROW );
- Any result = pset->getPropertyValue( OUString::createFromAscii("LastCompatibilityCheckID") );
+ Any result = pset->getPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("LastCompatibilityCheckID")) );
result >>= aLastCheckBuildID;
if ( aLastCheckBuildID != aCurrentBuildID )
{
bNeedsCheck = true;
result <<= aCurrentBuildID;
- pset->setPropertyValue( OUString::createFromAscii("LastCompatibilityCheckID"), result );
+ pset->setPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("LastCompatibilityCheckID")), result );
Reference< util::XChangesBatch >( pset, UNO_QUERY_THROW )->commitChanges();
}
#ifdef DEBUG
diff --git a/desktop/source/app/checkinstall.cxx b/desktop/source/app/checkinstall.cxx
index ee5c96b8c7..52f6c6d526 100644
--- a/desktop/source/app/checkinstall.cxx
+++ b/desktop/source/app/checkinstall.cxx
@@ -39,11 +39,12 @@
#include <vcl/msgbox.hxx>
#include <tools/date.hxx>
-using namespace rtl;
using namespace com::sun::star::uno;
using namespace com::sun::star::lang;
using namespace com::sun::star::beans;
+using ::rtl::OUString;
+
namespace desktop
{
diff --git a/desktop/source/app/cmdlineargs.cxx b/desktop/source/app/cmdlineargs.cxx
index 841f55ce5e..817a43f696 100644
--- a/desktop/source/app/cmdlineargs.cxx
+++ b/desktop/source/app/cmdlineargs.cxx
@@ -2,7 +2,7 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
+ *
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
@@ -41,11 +41,14 @@
#include <svl/documentlockfile.hxx>
-using namespace rtl;
+#include <cstdio>
+
using namespace com::sun::star::lang;
using namespace com::sun::star::uri;
using namespace com::sun::star::uno;
+using ::rtl::OUString;
+
namespace desktop
{
@@ -58,7 +61,7 @@ public:
m_index(0)
{
rtl::OUString url;
- if (tools::getProcessWorkingDir(&url)) {
+ if (tools::getProcessWorkingDir(url)) {
m_cwdUrl.reset(url);
}
}
@@ -138,25 +141,26 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier )
Reference< XExternalUriReferenceTranslator > xTranslator(
xMS->createInstance(
- OUString::createFromAscii(
- "com.sun.star.uri.ExternalUriReferenceTranslator")),
+ OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.uri.ExternalUriReferenceTranslator"))),
UNO_QUERY);
// parse command line arguments
- sal_Bool bPrintEvent = sal_False;
- sal_Bool bOpenEvent = sal_True;
- sal_Bool bViewEvent = sal_False;
- sal_Bool bStartEvent = sal_False;
- sal_Bool bPrintToEvent = sal_False;
- sal_Bool bPrinterName = sal_False;
- sal_Bool bForceOpenEvent = sal_False;
- sal_Bool bForceNewEvent = sal_False;
- sal_Bool bDisplaySpec = sal_False;
- sal_Bool bConversionEvent= sal_False;
- sal_Bool bConversionParamsEvent= sal_False;
- sal_Bool bBatchPrintEvent= sal_False;
- sal_Bool bBatchPrinterNameEvent= sal_False;
- sal_Bool bConversionOutEvent = sal_False;
+ bool bOpenEvent(true);
+ bool bPrintEvent(false);
+ bool bViewEvent(false);
+ bool bStartEvent(false);
+ bool bPrintToEvent(false);
+ bool bPrinterName(false);
+ bool bForceOpenEvent(false);
+ bool bForceNewEvent(false);
+ bool bDisplaySpec(false);
+ bool bOpenDoc(false);
+ bool bConversionEvent(false);
+ bool bConversionParamsEvent(false);
+ bool bBatchPrintEvent(false);
+ bool bBatchPrinterNameEvent(false);
+ bool bConversionOutEvent(false);
m_eArgumentCount = NONE;
@@ -167,160 +171,140 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier )
{
break;
}
- // convert file URLs to internal form #112849#
- if (aArg.indexOf(OUString::createFromAscii("file:"))==0 &&
+ // convert file URLs to internal form
+ if (aArg.indexOfAsciiL(RTL_CONSTASCII_STRINGPARAM("file:"))==0 &&
xTranslator.is())
{
OUString tmp(xTranslator->translateToInternal(aArg));
if (tmp.getLength() > 0)
aArg = tmp;
}
- String aArgStr = aArg;
if ( aArg.getLength() > 0 )
{
m_eArgumentCount = m_eArgumentCount == NONE ? ONE : MANY;
- if ( !InterpretCommandLineParameter( aArg ))
+ ::rtl::OUString oArg;
+ if ( !InterpretCommandLineParameter( aArg, oArg ))
{
- if ( aArgStr.GetChar(0) == '-' )
+ if ( aArg.toChar() == '-' )
{
// handle this argument as an option
- if ( aArgStr.EqualsIgnoreCaseAscii( "-n" ))
+ if ( aArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("-n")))
{
// force new documents based on the following documents
- bForceNewEvent = sal_True;
- bOpenEvent = sal_False;
- bForceOpenEvent = sal_False;
- bPrintToEvent = sal_False;
- bPrintEvent = sal_False;
- bViewEvent = sal_False;
- bStartEvent = sal_False;
- bDisplaySpec = sal_False;
- }
- else if ( aArgStr.EqualsIgnoreCaseAscii( "-o" ))
- {
- // force open documents regards if they are templates or not
- bForceOpenEvent = sal_True;
- bOpenEvent = sal_False;
- bForceNewEvent = sal_False;
- bPrintToEvent = sal_False;
- bPrintEvent = sal_False;
- bViewEvent = sal_False;
- bStartEvent = sal_False;
- bDisplaySpec = sal_False;
- }
- else if ( aArgStr.EqualsIgnoreCaseAscii( "-pt" ))
+ bForceNewEvent = true;
+ bOpenEvent = false;
+ bForceOpenEvent = false;
+ bPrintToEvent = false;
+ bPrintEvent = false;
+ bViewEvent = false;
+ bStartEvent = false;
+ bDisplaySpec = false;
+ }
+ else if ( aArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM( "-o" )))
{
- // Print to special printer
- bPrintToEvent = sal_True;
- bPrinterName = sal_True;
- bPrintEvent = sal_False;
- bOpenEvent = sal_False;
- bForceNewEvent = sal_False;
- bViewEvent = sal_False;
- bStartEvent = sal_False;
- bDisplaySpec = sal_False;
- bForceOpenEvent = sal_False;
+ // force open documents regardless if they are templates or not
+ bForceOpenEvent = true;
+ bOpenEvent = false;
+ bForceNewEvent = false;
+ bPrintToEvent = false;
+ bPrintEvent = false;
+ bViewEvent = false;
+ bStartEvent = false;
+ bDisplaySpec = false;
}
- else if ( aArgStr.EqualsIgnoreCaseAscii( "-p" ))
+ else if ( aArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM( "-pt" )))
{
+ // Print to special printer
+ bPrintToEvent = true;
+ bPrinterName = true;
+ bPrintEvent = false;
+ bOpenEvent = false;
+ bForceNewEvent = false;
+ bViewEvent = false;
+ bStartEvent = false;
+ bDisplaySpec = false;
+ bForceOpenEvent = false;
+ }
+ else if ( aArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM( "-p" )))
+ {
// Print to default printer
- bPrintEvent = sal_True;
- bPrintToEvent = sal_False;
- bOpenEvent = sal_False;
- bForceNewEvent = sal_False;
- bForceOpenEvent = sal_False;
- bViewEvent = sal_False;
- bStartEvent = sal_False;
- bDisplaySpec = sal_False;
- }
- else if ( aArgStr.EqualsIgnoreCaseAscii( "-view" ))
- {
+ bPrintEvent = true;
+ bPrintToEvent = false;
+ bOpenEvent = false;
+ bForceNewEvent = false;
+ bForceOpenEvent = false;
+ bViewEvent = false;
+ bStartEvent = false;
+ bDisplaySpec = false;
+ }
+ else if ( aArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM( "-view" )))
+ {
// open in viewmode
- bOpenEvent = sal_False;
- bPrintEvent = sal_False;
- bPrintToEvent = sal_False;
- bForceNewEvent = sal_False;
- bForceOpenEvent = sal_False;
- bViewEvent = sal_True;
- bStartEvent = sal_False;
- bDisplaySpec = sal_False;
- }
- else if ( aArgStr.EqualsIgnoreCaseAscii( "-show" ))
- {
+ bOpenEvent = false;
+ bPrintEvent = false;
+ bPrintToEvent = false;
+ bForceNewEvent = false;
+ bForceOpenEvent = false;
+ bViewEvent = true;
+ bStartEvent = false;
+ bDisplaySpec = false;
+ }
+ else if ( aArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM( "-show" )))
+ {
// open in viewmode
- bOpenEvent = sal_False;
- bViewEvent = sal_False;
- bStartEvent = sal_True;
- bPrintEvent = sal_False;
- bPrintToEvent = sal_False;
- bForceNewEvent = sal_False;
- bForceOpenEvent = sal_False;
- bDisplaySpec = sal_False;
+ bOpenEvent = false;
+ bViewEvent = false;
+ bStartEvent = true;
+ bPrintEvent = false;
+ bPrintToEvent = false;
+ bForceNewEvent = false;
+ bForceOpenEvent = false;
+ bDisplaySpec = false;
}
- else if ( aArgStr.EqualsIgnoreCaseAscii( "-display" ))
+ else if ( oArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("display")))
{
// set display
- bOpenEvent = sal_False;
- bPrintEvent = sal_False;
- bForceOpenEvent = sal_False;
- bPrintToEvent = sal_False;
- bForceNewEvent = sal_False;
- bViewEvent = sal_False;
- bStartEvent = sal_False;
- bDisplaySpec = sal_True;
+ bOpenEvent = false;
+ bPrintEvent = false;
+ bForceOpenEvent = false;
+ bPrintToEvent = false;
+ bForceNewEvent = false;
+ bViewEvent = false;
+ bStartEvent = false;
+ bDisplaySpec = true;
}
- else if ( aArgStr.EqualsIgnoreCaseAscii( "-language" ))
- {
- bOpenEvent = sal_False;
- bPrintEvent = sal_False;
- bForceOpenEvent = sal_False;
- bPrintToEvent = sal_False;
- bForceNewEvent = sal_False;
- bViewEvent = sal_False;
- bStartEvent = sal_False;
- bDisplaySpec = sal_False;
- }
-
- #ifdef MACOSX
- /* #i84053# ignore -psn on Mac
- Platform dependent #ifdef here is ugly, however this is currently
- the only platform dependent parameter. Should more appear
- we should find a better solution
- */
- else if ( aArgStr.CompareToAscii( "-psn", 4 ) == COMPARE_EQUAL )
+ else if ( oArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("language")))
{
- // finder argument from MacOSX
- bOpenEvent = sal_False;
- bPrintEvent = sal_False;
- bForceOpenEvent = sal_False;
- bPrintToEvent = sal_False;
- bForceNewEvent = sal_False;
- bViewEvent = sal_False;
- bStartEvent = sal_False;
- bDisplaySpec = sal_False;
+ bOpenEvent = false;
+ bPrintEvent = false;
+ bForceOpenEvent = false;
+ bPrintToEvent = false;
+ bForceNewEvent = false;
+ bViewEvent = false;
+ bStartEvent = false;
+ bDisplaySpec = false;
}
- #endif
- else if ( aArgStr.EqualsIgnoreCaseAscii( "-convert-to" ) )
+ else if ( oArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("convert-to")))
{
- bOpenEvent = sal_False;
- bConversionEvent = sal_True;
- bConversionParamsEvent = sal_True;
+ bOpenEvent = false;
+ bConversionEvent = true;
+ bConversionParamsEvent = true;
}
- else if ( aArgStr.EqualsIgnoreCaseAscii( "-print-to-file" ) )
+ else if ( oArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("print-to-file")))
{
- bOpenEvent = sal_False;
- bBatchPrintEvent = sal_True;
+ bOpenEvent = false;
+ bBatchPrintEvent = true;
}
- else if ( aArgStr.EqualsIgnoreCaseAscii( "-printer-name" ) &&
+ else if ( oArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("printer-name")) &&
bBatchPrintEvent )
{
- bBatchPrinterNameEvent = sal_True;
+ bBatchPrinterNameEvent = true;
}
- else if ( aArgStr.EqualsIgnoreCaseAscii( "-outdir" ) &&
+ else if ( oArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("outdir")) &&
(bConversionEvent || bBatchPrintEvent) )
{
- bConversionOutEvent = sal_True;
+ bConversionOutEvent = true;
}
}
else
@@ -328,64 +312,89 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier )
if ( bPrinterName && bPrintToEvent )
{
// first argument after "-pt" this must be the printer name
- AddStringListParam_Impl( CMD_STRINGPARAM_PRINTERNAME, aArgStr );
- bPrinterName = sal_False;
+ AddStringListParam_Impl( CMD_STRINGPARAM_PRINTERNAME, aArg );
+ bPrinterName = false;
}
else if ( bConversionParamsEvent && bConversionEvent )
{
// first argument must be the the params
- AddStringListParam_Impl( CMD_STRINGPARAM_CONVERSIONPARAMS, aArgStr );
- bConversionParamsEvent = sal_False;
+ AddStringListParam_Impl( CMD_STRINGPARAM_CONVERSIONPARAMS, aArg );
+ bConversionParamsEvent = false;
}
else if ( bBatchPrinterNameEvent && bBatchPrintEvent )
{
// first argument is the printer name
- AddStringListParam_Impl( CMD_STRINGPARAM_PRINTERNAME, aArgStr );
- bBatchPrinterNameEvent = sal_False;
+ AddStringListParam_Impl( CMD_STRINGPARAM_PRINTERNAME, aArg );
+ bBatchPrinterNameEvent = false;
}
else if ( (bConversionEvent || bBatchPrintEvent) && bConversionOutEvent )
{
- AddStringListParam_Impl( CMD_STRINGPARAM_CONVERSIONOUT, aArgStr );
- bConversionOutEvent = sal_False;
+ AddStringListParam_Impl( CMD_STRINGPARAM_CONVERSIONOUT, aArg );
+ bConversionOutEvent = false;
}
else
{
if( bOpenEvent || bViewEvent || bForceNewEvent || bForceOpenEvent )
{
- if( ::rtl::OUString(aArgStr).matchIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("::ODMA")) )
+ if( aArg.matchIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("::ODMA")) )
{
- ::rtl::OUString sArg = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vnd.sun.star.odma:/"));
- sArg += aArgStr;
- aArgStr = sArg;
+ ::rtl::OUString sArg(RTL_CONSTASCII_USTRINGPARAM("vnd.sun.star.odma:/"));
+ sArg += aArg;
+ aArg = sArg;
}
}
// handle this argument as a filename
if ( bOpenEvent )
- AddStringListParam_Impl( CMD_STRINGPARAM_OPENLIST, aArgStr );
+ {
+ AddStringListParam_Impl( CMD_STRINGPARAM_OPENLIST, aArg );
+ bOpenDoc = true;
+ }
else if ( bViewEvent )
- AddStringListParam_Impl( CMD_STRINGPARAM_VIEWLIST, aArgStr );
+ {
+ AddStringListParam_Impl( CMD_STRINGPARAM_VIEWLIST, aArg );
+ bOpenDoc = true;
+ }
else if ( bStartEvent )
- AddStringListParam_Impl( CMD_STRINGPARAM_STARTLIST, aArgStr );
+ {
+ AddStringListParam_Impl( CMD_STRINGPARAM_STARTLIST, aArg );
+ bOpenDoc = true;
+ }
else if ( bPrintEvent )
- AddStringListParam_Impl( CMD_STRINGPARAM_PRINTLIST, aArgStr );
+ {
+ AddStringListParam_Impl( CMD_STRINGPARAM_PRINTLIST, aArg );
+ bOpenDoc = true;
+ }
else if ( bPrintToEvent )
- AddStringListParam_Impl( CMD_STRINGPARAM_PRINTTOLIST, aArgStr );
+ {
+ AddStringListParam_Impl( CMD_STRINGPARAM_PRINTTOLIST, aArg );
+ bOpenDoc = true;
+ }
else if ( bForceNewEvent )
- AddStringListParam_Impl( CMD_STRINGPARAM_FORCENEWLIST, aArgStr );
+ {
+ AddStringListParam_Impl( CMD_STRINGPARAM_FORCENEWLIST, aArg );
+ bOpenDoc = true;
+ }
else if ( bForceOpenEvent )
- AddStringListParam_Impl( CMD_STRINGPARAM_FORCEOPENLIST, aArgStr );
- else if ( bDisplaySpec ){
- AddStringListParam_Impl( CMD_STRINGPARAM_DISPLAY, aArgStr );
- bDisplaySpec = sal_False; // only one display, not a lsit
- bOpenEvent = sal_True; // set back to standard
+ {
+ AddStringListParam_Impl( CMD_STRINGPARAM_FORCEOPENLIST, aArg );
+ bOpenDoc = true;
+ }
+ else if ( bDisplaySpec )
+ {
+ AddStringListParam_Impl( CMD_STRINGPARAM_DISPLAY, aArg );
+ bDisplaySpec = false; // only one display, not a lsit
+ bOpenEvent = true; // set back to standard
}
else if ( bConversionEvent || bBatchPrintEvent )
- AddStringListParam_Impl( CMD_STRINGPARAM_CONVERSIONLIST, aArgStr );
+ AddStringListParam_Impl( CMD_STRINGPARAM_CONVERSIONLIST, aArg );
}
}
}
}
}
+
+ if ( bOpenDoc )
+ m_bDocumentArgs = true;
}
void CommandLineArgs::AddStringListParam_Impl( StringParam eParam, const rtl::OUString& aParam )
@@ -403,255 +412,245 @@ void CommandLineArgs::SetBoolParam_Impl( BoolParam eParam, sal_Bool bValue )
m_aBoolParams[eParam] = bValue;
}
-sal_Bool CommandLineArgs::InterpretCommandLineParameter( const ::rtl::OUString& aArg )
+sal_Bool CommandLineArgs::InterpretCommandLineParameter( const ::rtl::OUString& aArg, ::rtl::OUString& oArg )
{
- String aArgStr( aArg );
+ bool bDeprecated = false;
+ if (aArg.matchIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("--")))
+ {
+ oArg = ::rtl::OUString(aArg.getStr()+2, aArg.getLength()-2);
+ }
+ else if (aArg.toChar() == '-')
+ {
+ bDeprecated = true;
+ oArg = ::rtl::OUString(aArg.getStr()+1, aArg.getLength()-1);
+ }
+ else
+ {
+ return sal_False;
+ }
- if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-minimized" )) == sal_True )
+ if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "minimized" )) == sal_True )
{
SetBoolParam_Impl( CMD_BOOLPARAM_MINIMIZED, sal_True );
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-invisible" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "invisible" )) == sal_True )
{
SetBoolParam_Impl( CMD_BOOLPARAM_INVISIBLE, sal_True );
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-norestore" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "norestore" )) == sal_True )
{
SetBoolParam_Impl( CMD_BOOLPARAM_NORESTORE, sal_True );
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-nodefault" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "nodefault" )) == sal_True )
{
SetBoolParam_Impl( CMD_BOOLPARAM_NODEFAULT, sal_True );
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-bean" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "bean" )) == sal_True )
{
SetBoolParam_Impl( CMD_BOOLPARAM_BEAN, sal_True );
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-plugin" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "plugin" )) == sal_True )
{
SetBoolParam_Impl( CMD_BOOLPARAM_PLUGIN, sal_True );
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-server" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "server" )) == sal_True )
{
SetBoolParam_Impl( CMD_BOOLPARAM_SERVER, sal_True );
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-headless" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "headless" )) == sal_True )
{
// Headless means also invisibile, so set this parameter to true!
SetBoolParam_Impl( CMD_BOOLPARAM_HEADLESS, sal_True );
SetBoolParam_Impl( CMD_BOOLPARAM_INVISIBLE, sal_True );
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-quickstart" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "quickstart" )) == sal_True )
{
#if defined(ENABLE_QUICKSTART_APPLET)
SetBoolParam_Impl( CMD_BOOLPARAM_QUICKSTART, sal_True );
#endif
SetBoolParam_Impl( CMD_BOOLPARAM_NOQUICKSTART, sal_False );
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-quickstart=no" )))
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "quickstart=no" )))
{
SetBoolParam_Impl( CMD_BOOLPARAM_NOQUICKSTART, sal_True );
SetBoolParam_Impl( CMD_BOOLPARAM_QUICKSTART, sal_False );
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-terminate_after_init" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "terminate_after_init" )) == sal_True )
{
SetBoolParam_Impl( CMD_BOOLPARAM_TERMINATEAFTERINIT, sal_True );
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-nofirststartwizard" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "nofirststartwizard" )) == sal_True )
{
SetBoolParam_Impl( CMD_BOOLPARAM_NOFIRSTSTARTWIZARD, sal_True );
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-nologo" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "nologo" )) == sal_True )
{
SetBoolParam_Impl( CMD_BOOLPARAM_NOLOGO, sal_True );
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-nolockcheck" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "nolockcheck" )) == sal_True )
{
SetBoolParam_Impl( CMD_BOOLPARAM_NOLOCKCHECK, sal_True );
// Workaround for automated testing
::svt::DocumentLockFile::AllowInteraction( sal_False );
-
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-help" ))
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "help" ))
|| aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-h" ))
|| aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-?" )))
{
SetBoolParam_Impl( CMD_BOOLPARAM_HELP, sal_True );
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-helpwriter" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "helpwriter" )) == sal_True )
{
SetBoolParam_Impl( CMD_BOOLPARAM_HELPWRITER, sal_True );
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-helpcalc" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "helpcalc" )) == sal_True )
{
SetBoolParam_Impl( CMD_BOOLPARAM_HELPCALC, sal_True );
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-helpdraw" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "helpdraw" )) == sal_True )
{
SetBoolParam_Impl( CMD_BOOLPARAM_HELPDRAW, sal_True );
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-helpimpress" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "helpimpress" )) == sal_True )
{
SetBoolParam_Impl( CMD_BOOLPARAM_HELPIMPRESS, sal_True );
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-helpbase" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "helpbase" )) == sal_True )
{
SetBoolParam_Impl( CMD_BOOLPARAM_HELPBASE, sal_True );
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-helpbasic" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "helpbasic" )) == sal_True )
{
SetBoolParam_Impl( CMD_BOOLPARAM_HELPBASIC, sal_True );
- return sal_True;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-helpmath" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "helpmath" )) == sal_True )
{
SetBoolParam_Impl( CMD_BOOLPARAM_HELPMATH, sal_True );
- return sal_True;
}
- else if ( aArgStr.Copy(0, 13).EqualsIgnoreCaseAscii( "-splash-pipe=" ))
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "version" )) == sal_True )
{
- AddStringListParam_Impl( CMD_STRINGPARAM_SPLASHPIPE, aArgStr.Copy( 13 ) );
- return sal_True;
+ SetBoolParam_Impl( CMD_BOOLPARAM_VERSION, sal_True );
+ }
+ else if ( oArg.matchIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("splash-pipe=")) )
+ {
+ AddStringListParam_Impl( CMD_STRINGPARAM_SPLASHPIPE, oArg.copy(RTL_CONSTASCII_LENGTH("splash-pipe=")) );
}
- #ifdef MACOSX
+#ifdef MACOSX
/* #i84053# ignore -psn on Mac
Platform dependent #ifdef here is ugly, however this is currently
the only platform dependent parameter. Should more appear
we should find a better solution
*/
- else if ( aArg.compareToAscii( "-psn", 4 ) == 0 )
+ else if ( aArg.matchAsciiL(RTL_CONSTASCII_STRINGPARAM("-psn")) )
{
SetBoolParam_Impl( CMD_BOOLPARAM_PSN, sal_True );
return sal_True;
}
- #endif
- else if ( aArgStr.Copy(0, 10).EqualsIgnoreCaseAscii( "-infilter=" ))
+#endif
+ else if ( oArg.matchIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("infilter=")))
{
- AddStringListParam_Impl( CMD_STRINGPARAM_INFILTER, aArgStr.Copy( 10 ) );
- return sal_True;
+ AddStringListParam_Impl( CMD_STRINGPARAM_INFILTER, oArg.copy(RTL_CONSTASCII_LENGTH("infilter=")) );
}
- else if ( aArgStr.Copy(0, 8).EqualsIgnoreCaseAscii( "-accept=" ))
+ else if ( oArg.matchIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("accept=")))
{
- AddStringListParam_Impl( CMD_STRINGPARAM_ACCEPT, aArgStr.Copy( 8 ) );
- return sal_True;
+ AddStringListParam_Impl( CMD_STRINGPARAM_ACCEPT, oArg.copy(RTL_CONSTASCII_LENGTH("accept=")) );
}
- else if ( aArgStr.Copy(0, 10).EqualsIgnoreCaseAscii( "-unaccept=" ))
+ else if ( oArg.matchIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("unaccept=")))
{
- AddStringListParam_Impl( CMD_STRINGPARAM_UNACCEPT, aArgStr.Copy( 10 ) );
- return sal_True;
+ AddStringListParam_Impl( CMD_STRINGPARAM_UNACCEPT, oArg.copy(RTL_CONSTASCII_LENGTH("unaccept=")) );
}
- else if ( aArgStr.CompareIgnoreCaseToAscii( "-portal," ,
- RTL_CONSTASCII_LENGTH( "-portal," )) == COMPARE_EQUAL )
+ else if ( oArg.matchIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("portal,")))
{
- AddStringListParam_Impl( CMD_STRINGPARAM_PORTAL, aArgStr.Copy( RTL_CONSTASCII_LENGTH( "-portal," )) );
- return sal_True;
+ AddStringListParam_Impl( CMD_STRINGPARAM_PORTAL, oArg.copy(RTL_CONSTASCII_LENGTH("portal,")) );
}
- else if ( aArgStr.Copy( 0, 7 ).EqualsIgnoreCaseAscii( "-userid" ))
+ else if ( oArg.matchIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("userid")))
{
- if ( aArgStr.Len() > 8 )
+ if ( oArg.getLength() > RTL_CONSTASCII_LENGTH("userid")+1 )
{
- rtl::OUString aUserDir = aArgStr;
AddStringListParam_Impl(
CMD_STRINGPARAM_USERDIR,
- ::rtl::Uri::decode( aUserDir.copy( 8 ),
+ ::rtl::Uri::decode( oArg.copy(RTL_CONSTASCII_LENGTH("userid")+1),
rtl_UriDecodeWithCharset,
RTL_TEXTENCODING_UTF8 ) );
}
- return sal_True;
}
- else if ( aArgStr.Copy( 0, 15).EqualsIgnoreCaseAscii( "-clientdisplay=" ))
+ else if ( oArg.matchIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("clientdisplay=")))
{
- AddStringListParam_Impl( CMD_STRINGPARAM_CLIENTDISPLAY, aArgStr.Copy( 15 ) );
- return sal_True;
+ AddStringListParam_Impl( CMD_STRINGPARAM_CLIENTDISPLAY, oArg.copy(RTL_CONSTASCII_LENGTH("clientdisplay=")) );
}
- else if ( aArgStr.Copy(0, 9).EqualsIgnoreCaseAscii( "-version=" ))
+ else if ( oArg.matchIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("version=")))
{
- AddStringListParam_Impl( CMD_STRINGPARAM_VERSION, aArgStr.Copy( 9 ) );
- return sal_True;
+ AddStringListParam_Impl( CMD_STRINGPARAM_VERSION, oArg.copy(RTL_CONSTASCII_LENGTH("version=")) );
}
- else if ( aArgStr.Copy(0, 10).EqualsIgnoreCaseAscii( "-language=" ))
+ else if ( oArg.matchIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("language=")))
{
- AddStringListParam_Impl( CMD_STRINGPARAM_LANGUAGE, aArgStr.Copy( 10 ) );
- return sal_True;
+ AddStringListParam_Impl( CMD_STRINGPARAM_LANGUAGE, oArg.copy(RTL_CONSTASCII_LENGTH("language=")) );
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-writer" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "writer" )) == sal_True )
{
sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_WRITER );
if ( !bAlreadySet )
SetBoolParam_Impl( CMD_BOOLPARAM_WRITER, sal_True );
- return sal_True;
+ m_bDocumentArgs = true;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-calc" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "calc" )) == sal_True )
{
sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_CALC );
if ( !bAlreadySet )
SetBoolParam_Impl( CMD_BOOLPARAM_CALC, sal_True );
- return sal_True;
+ m_bDocumentArgs = true;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-draw" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "draw" )) == sal_True )
{
sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_DRAW );
if ( !bAlreadySet )
SetBoolParam_Impl( CMD_BOOLPARAM_DRAW, sal_True );
- return sal_True;
+ m_bDocumentArgs = true;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-impress" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "impress" )) == sal_True )
{
sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_IMPRESS );
if ( !bAlreadySet )
SetBoolParam_Impl( CMD_BOOLPARAM_IMPRESS, sal_True );
- return sal_True;
+ m_bDocumentArgs = true;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-base" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "base" )) == sal_True )
{
sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_BASE );
if ( !bAlreadySet )
SetBoolParam_Impl( CMD_BOOLPARAM_BASE, sal_True );
- return sal_True;
+ m_bDocumentArgs = true;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-global" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "global" )) == sal_True )
{
sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_GLOBAL );
if ( !bAlreadySet )
SetBoolParam_Impl( CMD_BOOLPARAM_GLOBAL, sal_True );
- return sal_True;
+ m_bDocumentArgs = true;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-math" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "math" )) == sal_True )
{
sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_MATH );
if ( !bAlreadySet )
SetBoolParam_Impl( CMD_BOOLPARAM_MATH, sal_True );
- return sal_True;
+ m_bDocumentArgs = true;
}
- else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-web" )) == sal_True )
+ else if ( oArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "web" )) == sal_True )
{
sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_WEB );
if ( !bAlreadySet )
SetBoolParam_Impl( CMD_BOOLPARAM_WEB, sal_True );
- return sal_True;
+ m_bDocumentArgs = true;
}
+ else
+ return sal_False;
- return sal_False;
+ if (bDeprecated)
+ {
+ rtl::OString sArg(rtl::OUStringToOString(aArg, RTL_TEXTENCODING_UTF8));
+ fprintf(stderr, "Warning: %s is deprecated. Use -%s instead.\n", sArg.getStr(), sArg.getStr());
+ }
+ return sal_True;
}
sal_Bool CommandLineArgs::CheckGroupMembers( GroupParamId nGroupId, BoolParam nExcludeMember ) const
@@ -670,12 +669,12 @@ sal_Bool CommandLineArgs::CheckGroupMembers( GroupParamId nGroupId, BoolParam nE
void CommandLineArgs::ResetParamValues()
{
int i;
-
for ( i = 0; i < CMD_BOOLPARAM_COUNT; i++ )
m_aBoolParams[i] = sal_False;
for ( i = 0; i < CMD_STRINGPARAM_COUNT; i++ )
m_aStrSetParams[i] = sal_False;
m_eArgumentCount = NONE;
+ m_bDocumentArgs = false;
}
void CommandLineArgs::SetBoolParam( BoolParam eParam, sal_Bool bNewValue )
@@ -754,12 +753,6 @@ sal_Bool CommandLineArgs::IsTerminateAfterInit() const
return m_aBoolParams[ CMD_BOOLPARAM_TERMINATEAFTERINIT ];
}
-sal_Bool CommandLineArgs::IsNoFirstStartWizard() const
-{
- osl::MutexGuard aMutexGuard( m_aMutex );
- return m_aBoolParams[ CMD_BOOLPARAM_NOFIRSTSTARTWIZARD ];
-}
-
sal_Bool CommandLineArgs::IsNoLogo() const
{
osl::MutexGuard aMutexGuard( m_aMutex );
@@ -865,6 +858,12 @@ sal_Bool CommandLineArgs::IsWeb() const
return m_aBoolParams[ CMD_BOOLPARAM_WEB ];
}
+sal_Bool CommandLineArgs::IsVersion() const
+{
+ osl::MutexGuard aMutexGuard( m_aMutex );
+ return m_aBoolParams[ CMD_BOOLPARAM_VERSION ];
+}
+
sal_Bool CommandLineArgs::HasModuleParam() const
{
osl::MutexGuard aMutexGuard( m_aMutex );
@@ -982,8 +981,6 @@ sal_Bool CommandLineArgs::GetConversionOut( ::rtl::OUString& rPara ) const
return m_aStrSetParams[ CMD_STRINGPARAM_CONVERSIONOUT ];
}
-
-
sal_Bool CommandLineArgs::IsEmpty() const
{
osl::MutexGuard aMutexGuard( m_aMutex );
@@ -1000,6 +997,12 @@ sal_Bool CommandLineArgs::IsEmptyOrAcceptOnly() const
( ( m_eArgumentCount == ONE ) && m_aBoolParams[ CMD_BOOLPARAM_PSN ] );
}
+sal_Bool CommandLineArgs::WantsToLoadDocument() const
+{
+ osl::MutexGuard aMutexGuard( m_aMutex );
+ return m_bDocumentArgs;
+}
+
} // namespace desktop
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/source/app/cmdlineargs.hxx b/desktop/source/app/cmdlineargs.hxx
index 05b31f40ec..c983ab274f 100644
--- a/desktop/source/app/cmdlineargs.hxx
+++ b/desktop/source/app/cmdlineargs.hxx
@@ -39,9 +39,9 @@ namespace desktop
class CommandLineArgs
{
public:
- enum BoolParam // must be zero based!
+ enum BoolParam // must be zero based!
{
- CMD_BOOLPARAM_MINIMIZED,
+ CMD_BOOLPARAM_MINIMIZED = 0,
CMD_BOOLPARAM_INVISIBLE,
CMD_BOOLPARAM_NORESTORE,
CMD_BOOLPARAM_BEAN,
@@ -72,12 +72,13 @@ class CommandLineArgs
CMD_BOOLPARAM_HELPIMPRESS,
CMD_BOOLPARAM_HELPBASE,
CMD_BOOLPARAM_PSN,
+ CMD_BOOLPARAM_VERSION,
CMD_BOOLPARAM_COUNT // must be last element!
};
enum StringParam // must be zero based!
{
- CMD_STRINGPARAM_PORTAL,
+ CMD_STRINGPARAM_PORTAL = 0,
CMD_STRINGPARAM_SPLASHPIPE,
CMD_STRINGPARAM_ACCEPT,
CMD_STRINGPARAM_UNACCEPT,
@@ -98,16 +99,17 @@ class CommandLineArgs
CMD_STRINGPARAM_INFILTER,
CMD_STRINGPARAM_DISPLAY,
CMD_STRINGPARAM_LANGUAGE,
- CMD_STRINGPARAM_COUNT // must be last element!
+ CMD_STRINGPARAM_COUNT // must be last element!
};
enum GroupParamId
{
- CMD_GRPID_MODULE,
+ CMD_GRPID_MODULE = 0,
CMD_GRPID_COUNT
};
- struct Supplier {
+ struct Supplier
+ {
// Thrown from constructors and next:
class Exception {
public:
@@ -128,7 +130,7 @@ class CommandLineArgs
boost::optional< rtl::OUString > getCwdUrl() const { return m_cwdUrl; }
// generic methods to access parameter
- void SetBoolParam( BoolParam eParam, sal_Bool bNewValue );
+ void SetBoolParam( BoolParam eParam, sal_Bool bNewValue );
const rtl::OUString& GetStringParam( StringParam eParam ) const;
@@ -143,7 +145,6 @@ class CommandLineArgs
sal_Bool IsQuickstart() const;
sal_Bool IsNoQuickstart() const;
sal_Bool IsTerminateAfterInit() const;
- sal_Bool IsNoFirstStartWizard() const;
sal_Bool IsNoLogo() const;
sal_Bool IsNoLockcheck() const;
sal_Bool IsHelp() const;
@@ -162,7 +163,9 @@ class CommandLineArgs
sal_Bool IsGlobal() const;
sal_Bool IsMath() const;
sal_Bool IsWeb() const;
+ sal_Bool IsVersion() const;
sal_Bool HasModuleParam() const;
+ sal_Bool WantsToLoadDocument() const;
// Access to string parameters
sal_Bool GetPortalConnectString( ::rtl::OUString& rPara) const;
@@ -183,40 +186,41 @@ class CommandLineArgs
sal_Bool GetConversionOut( ::rtl::OUString& rPara ) const;
// Special analyzed states (does not match directly to a command line parameter!)
- sal_Bool IsPrinting() const;
- sal_Bool IsEmpty() const;
- sal_Bool IsEmptyOrAcceptOnly() const;
+ sal_Bool IsPrinting() const;
+ sal_Bool IsEmpty() const;
+ sal_Bool IsEmptyOrAcceptOnly() const;
private:
enum Count { NONE, ONE, MANY };
struct GroupDefinition
{
- sal_Int32 nCount;
- BoolParam* pGroupMembers;
+ sal_Int32 nCount;
+ BoolParam* pGroupMembers;
};
// no copy and operator=
CommandLineArgs( const CommandLineArgs& );
CommandLineArgs operator=( const CommandLineArgs& );
- sal_Bool InterpretCommandLineParameter( const ::rtl::OUString& );
+ sal_Bool InterpretCommandLineParameter( const ::rtl::OUString&, ::rtl::OUString& );
void ParseCommandLine_Impl( Supplier& supplier );
void ResetParamValues();
sal_Bool CheckGroupMembers( GroupParamId nGroup, BoolParam nExcludeMember ) const;
- void AddStringListParam_Impl( StringParam eParam, const rtl::OUString& aParam );
- void SetBoolParam_Impl( BoolParam eParam, sal_Bool bValue );
+ void AddStringListParam_Impl( StringParam eParam, const rtl::OUString& aParam );
+ void SetBoolParam_Impl( BoolParam eParam, sal_Bool bValue );
boost::optional< rtl::OUString > m_cwdUrl;
- sal_Bool m_aBoolParams[ CMD_BOOLPARAM_COUNT ]; // Stores boolean parameters
- rtl::OUString m_aStrParams[ CMD_STRINGPARAM_COUNT ]; // Stores string parameters
- sal_Bool m_aStrSetParams[ CMD_STRINGPARAM_COUNT ]; // Stores if string parameters are provided on cmdline
- Count m_eArgumentCount; // Number of Args
- mutable ::osl::Mutex m_aMutex;
+ sal_Bool m_aBoolParams[ CMD_BOOLPARAM_COUNT ]; // Stores boolean parameters
+ rtl::OUString m_aStrParams[ CMD_STRINGPARAM_COUNT ]; // Stores string parameters
+ sal_Bool m_aStrSetParams[ CMD_STRINGPARAM_COUNT ]; // Stores if string parameters are provided on cmdline
+ Count m_eArgumentCount; // Number of Args
+ bool m_bDocumentArgs; // A document creation/open/load arg is used
+ mutable ::osl::Mutex m_aMutex;
// static definition for groups where only one member can be true
- static GroupDefinition m_pGroupDefinitions[ CMD_GRPID_COUNT ];
+ static GroupDefinition m_pGroupDefinitions[ CMD_GRPID_COUNT ];
};
}
diff --git a/desktop/source/app/cmdlinehelp.cxx b/desktop/source/app/cmdlinehelp.cxx
index 110aa3e731..6a09755a7b 100644
--- a/desktop/source/app/cmdlinehelp.cxx
+++ b/desktop/source/app/cmdlinehelp.cxx
@@ -54,30 +54,32 @@ namespace desktop
// __BOTTOM__
// [OK]
- const char *aCmdLineHelp_head =
+ const char *aCmdLineHelp_version =
"%PRODUCTNAME %PRODUCTVERSION %PRODUCTEXTENSION %BUILDID\n"\
- "\n"\
+ "\n";
+ const char *aCmdLineHelp_head =
"Usage: %CMDNAME [options] [documents...]\n"\
"\n"\
"Options:\n";
const char *aCmdLineHelp_left =
- "-minimized \n"\
- "-invisible \n"\
- "-norestore \n"\
- "-quickstart \n"\
- "-nologo \n"\
- "-nolockcheck \n"\
- "-nodefault \n"\
- "-headless \n"\
- "-help/-h/-? \n"\
- "-writer \n"\
- "-calc \n"\
- "-draw \n"\
- "-impress \n"\
- "-base \n"\
- "-math \n"\
- "-global \n"\
- "-web \n"\
+ "--minimized \n"\
+ "--invisible \n"\
+ "--norestore \n"\
+ "--quickstart \n"\
+ "--nologo \n"\
+ "--nolockcheck \n"\
+ "--nodefault \n"\
+ "--headless \n"\
+ "--help/-h/-? \n"\
+ "--version \n"\
+ "--writer \n"\
+ "--calc \n"\
+ "--draw \n"\
+ "--impress \n"\
+ "--base \n"\
+ "--math \n"\
+ "--global \n"\
+ "--web \n"\
"-o \n"\
"-n \n";
const char *aCmdLineHelp_right =
@@ -90,6 +92,7 @@ namespace desktop
"don't start with an empty document\n"\
"like invisible but no userinteraction at all.\n"\
"show this message and exit.\n"\
+ "display the version information.\n"\
"create new text document.\n"\
"create new spreadsheet document.\n"\
"create new drawing.\n"\
@@ -101,36 +104,36 @@ namespace desktop
"open documents regardless whether they are templates or not.\n"\
"always open documents as new files (use as template).\n";
const char *aCmdLineHelp_bottom =
- "-display <display>\n"\
+ "--display <display>\n"\
" Specify X-Display to use in Unix/X11 versions.\n"
"-p <documents...>\n"\
" print the specified documents on the default printer.\n"\
- "-pt <printer> <documents...>\n"\
+ "--pt <printer> <documents...>\n"\
" print the specified documents on the specified printer.\n"\
- "-view <documents...>\n"\
+ "--view <documents...>\n"\
" open the specified documents in viewer-(readonly-)mode.\n"\
- "-show <presentation>\n"\
+ "--show <presentation>\n"\
" open the specified presentation and start it immediately\n"\
- "-accept=<accept-string>\n"\
+ "--accept=<accept-string>\n"\
" Specify an UNO connect-string to create an UNO acceptor through which\n"\
" other programs can connect to access the API\n"\
- "-unaccept=<accept-string>\n"\
+ "--unaccept=<accept-string>\n"\
" Close an acceptor that was created with -accept=<accept-string>\n"\
" Use -unnaccept=all to close all open acceptors\n"\
- "-infilter=<filter>\n"\
+ "--infilter=<filter>\n"\
" Force an input filter type if possible\n"\
" Eg. -infilter=\"Calc Office Open XML\"\n"\
- "-convert-to output_file_extension[:output_filter_name] [-outdir ouput_dir] files\n"\
+ "--convert-to output_file_extension[:output_filter_name] [-outdir ouput_dir] files\n"\
" Batch convert files.\n"\
" If -outdir is not specified then current working dir is used as output_dir.\n"\
" Eg. -convert-to pdf *.doc\n"\
" -convert-to pdf:writer_pdf_Export -outdir /home/user *.doc\n"\
- "-print-to-file [-printer-name printer_name] [-outdir ouput_dir] files\n"\
+ "--print-to-file [-printer-name printer_name] [-outdir ouput_dir] files\n"\
" Batch print files to file.\n"\
" If -outdir is not specified then current working dir is used as output_dir.\n"\
" Eg. -print-to-file *.doc\n"\
" -print-to-file -printer-name nasty_lowres_printer -outdir /home/user *.doc\n"\
- "\nRemaining arguments will be treated as filenames or URLs of documents to open.\n";
+ "\nRemaining arguments will be treated as filenames or URLs of documents to open.\n\n";
void ReplaceStringHookProc( UniString& rStr );
@@ -138,40 +141,62 @@ namespace desktop
{
// if you put variables in other chunks don't forget to call the replace routines
// for those chunks...
+ String aHelpMessage_version(aCmdLineHelp_version, RTL_TEXTENCODING_ASCII_US);
String aHelpMessage_head(aCmdLineHelp_head, RTL_TEXTENCODING_ASCII_US);
String aHelpMessage_left(aCmdLineHelp_left, RTL_TEXTENCODING_ASCII_US);
String aHelpMessage_right(aCmdLineHelp_right, RTL_TEXTENCODING_ASCII_US);
String aHelpMessage_bottom(aCmdLineHelp_bottom, RTL_TEXTENCODING_ASCII_US);
- ReplaceStringHookProc(aHelpMessage_head);
+ ReplaceStringHookProc(aHelpMessage_version);
::rtl::OUString aDefault;
String aVerId( ::utl::Bootstrap::getBuildIdData( aDefault ));
- aHelpMessage_head.SearchAndReplaceAscii( "%BUILDID", aVerId );
+ aHelpMessage_version.SearchAndReplaceAscii( "%BUILDID", aVerId );
aHelpMessage_head.SearchAndReplaceAscii( "%CMDNAME", String( "soffice", RTL_TEXTENCODING_ASCII_US) );
#ifdef UNX
// on unix use console for output
- fprintf(stderr, "%s\n", ByteString(aHelpMessage_head,
- RTL_TEXTENCODING_ASCII_US).GetBuffer());
+ fprintf(stdout, "%s%s",
+ ByteString(aHelpMessage_version, RTL_TEXTENCODING_ASCII_US).GetBuffer(),
+ ByteString(aHelpMessage_head, RTL_TEXTENCODING_ASCII_US).GetBuffer());
// merge left and right column
int n = aHelpMessage_left.GetTokenCount ('\n');
ByteString bsLeft(aHelpMessage_left, RTL_TEXTENCODING_ASCII_US);
ByteString bsRight(aHelpMessage_right, RTL_TEXTENCODING_ASCII_US);
for ( int i = 0; i < n; i++ )
{
- fprintf(stderr, "%s", bsLeft.GetToken(i, '\n').GetBuffer());
- fprintf(stderr, "%s\n", bsRight.GetToken(i, '\n').GetBuffer());
+ fprintf(stdout, "%s", bsLeft.GetToken(i, '\n').GetBuffer());
+ fprintf(stdout, "%s\n", bsRight.GetToken(i, '\n').GetBuffer());
}
- fprintf(stderr, "%s", ByteString(aHelpMessage_bottom,
+ fprintf(stdout, "%s", ByteString(aHelpMessage_bottom,
RTL_TEXTENCODING_ASCII_US).GetBuffer());
#else
// rest gets a dialog box
CmdlineHelpDialog aDlg;
- aDlg.m_ftHead.SetText(aHelpMessage_head);
+ String head = aHelpMessage_version;
+ head.Append(aHelpMessage_head);
+ aDlg.m_ftHead.SetText(head);
aDlg.m_ftLeft.SetText(aHelpMessage_left);
aDlg.m_ftRight.SetText(aHelpMessage_right);
aDlg.m_ftBottom.SetText(aHelpMessage_bottom);
aDlg.Execute();
#endif
}
+
+ void displayVersion()
+ {
+ String aVersionMsg(aCmdLineHelp_version, RTL_TEXTENCODING_ASCII_US);
+ ReplaceStringHookProc(aVersionMsg);
+ ::rtl::OUString aDefault;
+ String aVerId = ::utl::Bootstrap::getBuildIdData(aDefault);
+ aVersionMsg.SearchAndReplaceAscii("%BUILDID", aVerId);
+#ifdef UNX
+ fprintf(stdout, "%s", ByteString(aVersionMsg, RTL_TEXTENCODING_ASCII_US).GetBuffer());
+#else
+ // Just re-use the help dialog for now.
+ CmdlineHelpDialog aDlg;
+ aDlg.m_ftHead.SetText(aVersionMsg);
+ aDlg.Execute();
+#endif
+ }
+
#ifndef UNX
CmdlineHelpDialog::CmdlineHelpDialog (void)
: ModalDialog( NULL, DesktopResId( DLG_CMDLINEHELP ) )
diff --git a/desktop/source/app/cmdlinehelp.hxx b/desktop/source/app/cmdlinehelp.hxx
index 823e7b4d9f..2036d64678 100644
--- a/desktop/source/app/cmdlinehelp.hxx
+++ b/desktop/source/app/cmdlinehelp.hxx
@@ -6,6 +6,7 @@
namespace desktop
{
void displayCmdlineHelp( void );
+ void displayVersion();
#ifndef UNX
class CmdlineHelpDialog : public ModalDialog
{
diff --git a/desktop/source/app/configinit.cxx b/desktop/source/app/configinit.cxx
index 3704d842c3..c5bad69298 100644
--- a/desktop/source/app/configinit.cxx
+++ b/desktop/source/app/configinit.cxx
@@ -81,7 +81,7 @@ typedef uno::Reference< lang::XMultiServiceFactory > ConfigurationProvider;
// Get a message string securely. There is a fallback string if the resource
// is not available. Adapted from Desktop::GetMsgString()
-OUString getMsgString( USHORT nId, char const * aFallBackMsg )
+OUString getMsgString( sal_uInt16 nId, char const * aFallBackMsg )
{
ResMgr* pResMgr = Desktop::GetDesktopResManager();
if ( !pResMgr || !nId )
@@ -176,7 +176,6 @@ uno::Reference< lang::XMultiServiceFactory > CreateApplicationConfigurationProvi
// ----------------------------------------------------------------------------
-// ----------------------------------------------------------------------------
// ConfigurationErrorHandler
// ----------------------------------------------------------------------------
@@ -243,7 +242,7 @@ private:
uno::Any SAL_CALL ConfigurationErrorHandler::Context::getValueByName( OUString const & aName)
throw (uno::RuntimeException)
{
- if ( aName.equalsAscii( CONFIG_ERROR_HANDLER ) )
+ if ( aName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(CONFIG_ERROR_HANDLER)) )
{
if ( !m_xHandler.is() )
m_xHandler = ConfigurationErrorHandler::getDefaultInteractionHandler();
diff --git a/desktop/source/app/copyright_ascii_ooo.c b/desktop/source/app/copyright_ascii_ooo.c
index b35aa2cee9..b35aa2cee9 100644..100755
--- a/desktop/source/app/copyright_ascii_ooo.c
+++ b/desktop/source/app/copyright_ascii_ooo.c
diff --git a/desktop/source/app/copyright_ascii_sun.c b/desktop/source/app/copyright_ascii_sun.c
index a94966855e..a94966855e 100644..100755
--- a/desktop/source/app/copyright_ascii_sun.c
+++ b/desktop/source/app/copyright_ascii_sun.c
diff --git a/desktop/source/app/desktop.hrc b/desktop/source/app/desktop.hrc
index 035318b4d7..035318b4d7 100644..100755
--- a/desktop/source/app/desktop.hrc
+++ b/desktop/source/app/desktop.hrc
diff --git a/desktop/source/app/desktop.src b/desktop/source/app/desktop.src
index e333c44181..10411e5adb 100644
--- a/desktop/source/app/desktop.src
+++ b/desktop/source/app/desktop.src
@@ -159,6 +159,7 @@ InfoBox INFOBOX_CMDLINEHELP
ModalDialog DLG_CMDLINEHELP
{
+ HelpID = "desktop:ModalDialog:DLG_CMDLINEHELP";
Text = "Help Message...";
Size = MAP_APPFONT(250, 365);
Border = True;
diff --git a/desktop/source/app/desktopcontext.cxx b/desktop/source/app/desktopcontext.cxx
index 73038d30f7..a6b29a092d 100644
--- a/desktop/source/app/desktopcontext.cxx
+++ b/desktop/source/app/desktopcontext.cxx
@@ -33,10 +33,11 @@
#include <vcl/svapp.hxx>
#include <svtools/javainteractionhandler.hxx>
-using namespace rtl;
using namespace com::sun::star::uno;
using namespace com::sun::star::task;
+using ::rtl::OUString;
+
namespace desktop
{
@@ -49,7 +50,7 @@ Any SAL_CALL DesktopContext::getValueByName( const OUString& Name) throw (Runtim
{
Any retVal;
- if ( 0 == Name.compareToAscii( JAVA_INTERACTION_HANDLER_NAME ))
+ if (Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(JAVA_INTERACTION_HANDLER_NAME)))
{
retVal = makeAny( Reference< XInteractionHandler >( new svt::JavaInteractionHandler()) );
}
diff --git a/desktop/source/app/desktopresid.cxx b/desktop/source/app/desktopresid.cxx
index 347ee542a3..b817738772 100644
--- a/desktop/source/app/desktopresid.cxx
+++ b/desktop/source/app/desktopresid.cxx
@@ -37,7 +37,7 @@
namespace desktop
{
-DesktopResId::DesktopResId( USHORT nId ) :
+DesktopResId::DesktopResId( sal_uInt16 nId ) :
ResId( nId, *Desktop::GetDesktopResManager() )
{
}
diff --git a/desktop/source/app/desktopresid.hxx b/desktop/source/app/desktopresid.hxx
index 689a0f11da..2a517c9f29 100644
--- a/desktop/source/app/desktopresid.hxx
+++ b/desktop/source/app/desktopresid.hxx
@@ -37,7 +37,7 @@ namespace desktop
class DesktopResId : public ResId
{
public:
- DesktopResId( USHORT nId );
+ DesktopResId( sal_uInt16 nId );
};
}
diff --git a/desktop/source/app/dispatchwatcher.cxx b/desktop/source/app/dispatchwatcher.cxx
index 7701bbae48..2a9dcad5c7 100644
--- a/desktop/source/app/dispatchwatcher.cxx
+++ b/desktop/source/app/dispatchwatcher.cxx
@@ -94,7 +94,7 @@ static String impl_GetFilterFromExt( OUString aUrl, SfxFilterFlags nFlags,
{
String aFilter;
SfxMedium* pMedium = new SfxMedium( aUrl,
- STREAM_STD_READ, FALSE );
+ STREAM_STD_READ, sal_False );
const SfxFilter *pSfxFilter = NULL;
SfxFilterMatcher aMatcher;
if( nFlags == SFX_FILTER_EXPORT )
@@ -176,7 +176,7 @@ sal_Bool DispatchWatcher::executeDispatchRequests( const DispatchList& aDispatch
sal_Bool bSetInputFilter = sal_False;
::rtl::OUString aForcedInputFilter;
- for ( p = aDispatchRequestsList.begin(); p != aDispatchRequestsList.end(); p++ )
+ for ( p = aDispatchRequestsList.begin(); p != aDispatchRequestsList.end(); ++p )
{
const DispatchRequest& aDispatchRequest = *p;
@@ -340,7 +340,7 @@ sal_Bool DispatchWatcher::executeDispatchRequests( const DispatchList& aDispatch
{
OUString aMsg = OUString(RTL_CONSTASCII_USTRINGPARAM(
"Desktop::OpenDefault() IllegalArgumentException while calling XNotifyingDispatch: "));
- OSL_ENSURE( sal_False, OUStringToOString(aMsg, RTL_TEXTENCODING_ASCII_US).getStr());
+ OSL_FAIL( OUStringToOString(aMsg, RTL_TEXTENCODING_ASCII_US).getStr());
}
}
}
@@ -364,7 +364,6 @@ sal_Bool DispatchWatcher::executeDispatchRequests( const DispatchList& aDispatch
}
// if we are called in viewmode, open document read-only
- // #95425#
if(aDispatchRequest.aRequestType == REQUEST_VIEW) {
sal_Int32 nIndex = aArgs.getLength();
aArgs.realloc(nIndex+1);
@@ -393,21 +392,20 @@ sal_Bool DispatchWatcher::executeDispatchRequests( const DispatchList& aDispatch
try
{
xDoc = Reference < XPrintable >( ::comphelper::SynchronousDispatch::dispatch( xDesktop, aName, aTarget, 0, aArgs ), UNO_QUERY );
- //xDoc = Reference < XPrintable >( xDesktop->loadComponentFromURL( aName, aTarget, 0, aArgs ), UNO_QUERY );
}
catch ( ::com::sun::star::lang::IllegalArgumentException& iae)
{
OUString aMsg = OUString(RTL_CONSTASCII_USTRINGPARAM(
"Dispatchwatcher IllegalArgumentException while calling loadComponentFromURL: "))
+ iae.Message;
- OSL_ENSURE( sal_False, OUStringToOString(aMsg, RTL_TEXTENCODING_ASCII_US).getStr());
+ OSL_FAIL( OUStringToOString(aMsg, RTL_TEXTENCODING_ASCII_US).getStr());
}
catch (com::sun::star::io::IOException& ioe)
{
OUString aMsg = OUString(RTL_CONSTASCII_USTRINGPARAM(
"Dispatchwatcher IOException while calling loadComponentFromURL: "))
+ ioe.Message;
- OSL_ENSURE( sal_False, OUStringToOString(aMsg, RTL_TEXTENCODING_ASCII_US).getStr());
+ OSL_FAIL( OUStringToOString(aMsg, RTL_TEXTENCODING_ASCII_US).getStr());
}
if ( aDispatchRequest.aRequestType == REQUEST_OPEN ||
aDispatchRequest.aRequestType == REQUEST_VIEW ||
@@ -455,7 +453,6 @@ sal_Bool DispatchWatcher::executeDispatchRequests( const DispatchList& aDispatch
rtl::OUString aOutFile = aFilterOut+
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "/" ))+
aOutFilename.getName();
- //FileBase::getFileURLFromSystemPath( aOutFile, aOutFile );
if ( bGuess )
{
@@ -639,18 +636,6 @@ void SAL_CALL DispatchWatcher::dispatchFinished( const DispatchResultEvent& ) th
sal_Int16 nCount = --m_nRequestCount;
aGuard.clear();
OfficeIPCThread::RequestsCompleted( 1 );
-/*
- // Find request in our hash map and remove it as a pending request
- DispatchWatcherHashMap::iterator pDispatchEntry = m_aRequestContainer.find( rEvent.FeatureURL.Complete ) ;
- if ( pDispatchEntry != m_aRequestContainer.end() )
- {
- m_aRequestContainer.erase( pDispatchEntry );
- aGuard.clear();
- OfficeIPCThread::RequestsCompleted( 1 );
- }
- else
- aGuard.clear();
-*/
if ( !nCount && !OfficeIPCThread::AreRequestsPending() )
{
// We have to check if we have an open task otherwise we have to shutdown the office.
diff --git a/desktop/source/app/dispatchwatcher.hxx b/desktop/source/app/dispatchwatcher.hxx
index 6dc2d9362c..a787c1e069 100644
--- a/desktop/source/app/dispatchwatcher.hxx
+++ b/desktop/source/app/dispatchwatcher.hxx
@@ -34,7 +34,7 @@
#include <com/sun/star/frame/XDispatchResultListener.hpp>
#include "officeipcthread.hxx"
-#include <hash_map>
+#include <boost/unordered_map.hpp>
#include <vector>
namespace desktop
@@ -56,7 +56,7 @@ struct OUStringHashCode
}
};
-class DispatchWatcherHashMap : public ::std::hash_map< ::rtl::OUString, sal_Int32, OUStringHashCode, ::std::equal_to< ::rtl::OUString > >
+class DispatchWatcherHashMap : public ::boost::unordered_map< ::rtl::OUString, sal_Int32, OUStringHashCode, ::std::equal_to< ::rtl::OUString > >
{
public:
inline void free()
diff --git a/desktop/source/app/exports.dxp b/desktop/source/app/exports.dxp
index 9630d7e067..f0e1c69934 100644..100755
--- a/desktop/source/app/exports.dxp
+++ b/desktop/source/app/exports.dxp
@@ -1,3 +1,2 @@
component_getImplementationEnvironment
-component_writeInfo
component_getFactory
diff --git a/desktop/source/app/langselect.cxx b/desktop/source/app/langselect.cxx
index e356360608..7e0776799b 100644
--- a/desktop/source/app/langselect.cxx
+++ b/desktop/source/app/langselect.cxx
@@ -54,13 +54,16 @@
#include <osl/process.h>
#include <osl/file.hxx>
-using namespace rtl;
using namespace com::sun::star::uno;
using namespace com::sun::star::lang;
using namespace com::sun::star::container;
using namespace com::sun::star::beans;
using namespace com::sun::star::util;
+using ::rtl::OUString;
+using ::rtl::OUStringBuffer;
+using ::rtl::OString;
+
namespace desktop {
static char const SOFFICE_BOOTSTRAP[] = "Bootstrap";
@@ -268,7 +271,7 @@ bool LanguageSelection::prepareLanguage()
catch (Exception& e)
{
OString aMsg = OUStringToOString(e.Message, RTL_TEXTENCODING_ASCII_US);
- OSL_ENSURE(sal_False, aMsg.getStr());
+ OSL_FAIL(aMsg.getStr());
}
}
@@ -283,7 +286,6 @@ bool LanguageSelection::prepareLanguage()
void LanguageSelection::setDefaultLanguage(const OUString& sLocale)
{
// #i32939# setting of default document language
- //
// See #i42730# for rules for determining source of settings
// determine script type of locale
@@ -396,7 +398,7 @@ Reference< XNameAccess > LanguageSelection::getConfigAccess(const sal_Char* pPat
} catch (com::sun::star::uno::Exception& e)
{
OString aMsg = OUStringToOString(e.Message, RTL_TEXTENCODING_ASCII_US);
- OSL_ENSURE(sal_False, aMsg.getStr());
+ OSL_FAIL(aMsg.getStr());
}
return xNameAccess;
}
@@ -416,7 +418,7 @@ Sequence< OUString > LanguageSelection::getInstalledLanguages()
static Sequence< OUString > _getFallbackLocales(const OUString& aIsoLang)
{
Sequence< OUString > seqFallbacks;
- if (aIsoLang.equalsAscii("zh-HK")) {
+ if (aIsoLang.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("zh-HK"))) {
seqFallbacks = Sequence< OUString >(1);
seqFallbacks[0] = OUString(RTL_CONSTASCII_USTRINGPARAM("zh-TW"));
}
@@ -536,7 +538,7 @@ void LanguageSelection::resetUserLanguage()
try
{
Reference< XPropertySet > xProp(getConfigAccess("org.openoffice.Office.Linguistic/General", sal_True), UNO_QUERY_THROW);
- xProp->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("UILocale")), makeAny(OUString::createFromAscii("")));
+ xProp->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("UILocale")), makeAny(OUString()));
Reference< XChangesBatch >(xProp, UNO_QUERY_THROW)->commitChanges();
}
catch ( PropertyVetoException& )
@@ -546,7 +548,7 @@ void LanguageSelection::resetUserLanguage()
catch ( Exception& e)
{
OString aMsg = OUStringToOString(e.Message, RTL_TEXTENCODING_ASCII_US);
- OSL_ENSURE(sal_False, aMsg.getStr());
+ OSL_FAIL(aMsg.getStr());
m_eStatus = LS_STATUS_CONFIGURATIONACCESS_BROKEN;
}
}
diff --git a/desktop/source/app/lockfile.cxx b/desktop/source/app/lockfile.cxx
index db23c7db19..8ac41ce99a 100644
--- a/desktop/source/app/lockfile.cxx
+++ b/desktop/source/app/lockfile.cxx
@@ -30,12 +30,10 @@
#include "precompiled_desktop.hxx"
#include <stdlib.h>
#include <time.h>
-#ifdef WNT
-#include <tools/prewin.h>
-#include <windows.h>
-#include <tools/postwin.h>
-#else
+#ifndef WNT
#include <unistd.h>
+#else
+#include <windows.h>
#endif
#include <sal/types.h>
#include <osl/file.hxx>
@@ -104,7 +102,7 @@ namespace desktop {
int tmpByte = 0;
for (int i = 0; i<nIdBytes; i++) {
tmpByte = rand( ) % 0xFF;
- sprintf( tmpId+i*2, "%02X", tmpByte ); // #100211# - checked
+ sprintf( tmpId+i*2, "%02X", tmpByte );
}
tmpId[nIdBytes*2]=0x00;
m_aId = OUString::createFromAscii( tmpId );
@@ -121,7 +119,7 @@ namespace desktop {
// try to create file
File aFile(m_aLockname);
- if (aFile.open( OpenFlag_Create ) == File::E_EXIST) {
+ if (aFile.open( osl_File_OpenFlag_Create ) == File::E_EXIST) {
m_bIsLocked = sal_True;
} else {
// new lock created
@@ -141,7 +139,7 @@ namespace desktop {
// remove file and create new
File::remove( m_aLockname );
File aFile(m_aLockname);
- aFile.open( OpenFlag_Create );
+ aFile.open( osl_File_OpenFlag_Create );
aFile.close( );
syncToFile( );
m_bRemove = sal_True;
@@ -165,21 +163,21 @@ namespace desktop {
String aLockname = m_aLockname;
Config aConfig(aLockname);
aConfig.SetGroup(LOCKFILE_GROUP);
- ByteString aIPCserver = aConfig.ReadKey( LOCKFILE_IPCKEY );
- if (! aIPCserver.EqualsIgnoreCaseAscii( "true" ))
+ rtl::OString aIPCserver = aConfig.ReadKey( LOCKFILE_IPCKEY );
+ if (!aIPCserver.equalsIgnoreAsciiCase(rtl::OString("true")))
return false;
- ByteString aHost = aConfig.ReadKey( LOCKFILE_HOSTKEY );
- ByteString aUser = aConfig.ReadKey( LOCKFILE_USERKEY );
+ rtl::OString aHost = aConfig.ReadKey( LOCKFILE_HOSTKEY );
+ rtl::OString aUser = aConfig.ReadKey( LOCKFILE_USERKEY );
// lockfile from same host?
- ByteString myHost( impl_getHostname() );
+ rtl::OString myHost( impl_getHostname() );
if (aHost == myHost) {
// lockfile by same UID
OUString myUserName;
Security aSecurity;
aSecurity.getUserName( myUserName );
- ByteString myUser = OUStringToOString( myUserName, RTL_TEXTENCODING_ASCII_US );
+ rtl::OString myUser(rtl::OUStringToOString(myUserName, RTL_TEXTENCODING_ASCII_US));
if (aUser == myUser)
return sal_True;
}
@@ -193,13 +191,13 @@ namespace desktop {
aConfig.SetGroup(LOCKFILE_GROUP);
// get information
- ByteString aHost( impl_getHostname() );
+ rtl::OString aHost( impl_getHostname() );
OUString aUserName;
Security aSecurity;
aSecurity.getUserName( aUserName );
- ByteString aUser = OUStringToOString( aUserName, RTL_TEXTENCODING_ASCII_US );
- ByteString aTime = OUStringToOString( m_aDate, RTL_TEXTENCODING_ASCII_US );
- ByteString aStamp = OUStringToOString( m_aId, RTL_TEXTENCODING_ASCII_US );
+ rtl::OString aUser = OUStringToOString( aUserName, RTL_TEXTENCODING_ASCII_US );
+ rtl::OString aTime = OUStringToOString( m_aDate, RTL_TEXTENCODING_ASCII_US );
+ rtl::OString aStamp = OUStringToOString( m_aId, RTL_TEXTENCODING_ASCII_US );
// write information
aConfig.WriteKey( LOCKFILE_USERKEY, aUser );
@@ -208,7 +206,7 @@ namespace desktop {
aConfig.WriteKey( LOCKFILE_TIMEKEY, aTime );
aConfig.WriteKey(
LOCKFILE_IPCKEY,
- m_bIPCserver ? ByteString("true") : ByteString("false") );
+ m_bIPCserver ? rtl::OString("true") : rtl::OString("false") );
aConfig.Flush( );
}
diff --git a/desktop/source/app/main.c b/desktop/source/app/main.c
index 198e42a0ca..198e42a0ca 100644..100755
--- a/desktop/source/app/main.c
+++ b/desktop/source/app/main.c
diff --git a/desktop/source/app/makefile.mk b/desktop/source/app/makefile.mk
index e7c30a2ca7..e7c30a2ca7 100644..100755
--- a/desktop/source/app/makefile.mk
+++ b/desktop/source/app/makefile.mk
diff --git a/desktop/source/app/officeipcthread.cxx b/desktop/source/app/officeipcthread.cxx
index c685596d26..e12add5a12 100644
--- a/desktop/source/app/officeipcthread.cxx
+++ b/desktop/source/app/officeipcthread.cxx
@@ -53,12 +53,15 @@
#include "rtl/process.h"
#include "tools/getprocessworkingdir.hxx"
-using namespace rtl;
using namespace desktop;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::frame;
+using ::rtl::OString;
+using ::rtl::OUString;
+using ::rtl::OUStringBuffer;
+
const char *OfficeIPCThread::sc_aTerminationSequence = "InternalIPC::TerminateThread";
const int OfficeIPCThread::sc_nTSeqLength = 28;
const char *OfficeIPCThread::sc_aShowSequence = "-tofront";
@@ -222,7 +225,7 @@ OfficeIPCThread* OfficeIPCThread::pGlobalOfficeIPCThread = 0;
namespace { struct Security : public rtl::Static<osl::Security, Security> {}; }
::osl::Mutex* OfficeIPCThread::pOfficeIPCThreadMutex = 0;
-// Turns a string in aMsg such as file://home/foo/.libreoffice/3
+// Turns a string in aMsg such as file:///home/foo/.libreoffice/3
// Into a hex string of well known length ff132a86...
String CreateMD5FromString( const OUString& aMsg )
{
@@ -472,18 +475,18 @@ OfficeIPCThread::Status OfficeIPCThread::EnableOfficeIPCThread()
aIniName += OUString( RTL_CONSTASCII_USTRINGPARAM( "rc" ));
#endif
}
-
+
::rtl::Bootstrap aPerfTuneIniFile( aIniName );
-
+
OUString aDefault( RTL_CONSTASCII_USTRINGPARAM( "0" ));
OUString aPreloadData;
-
+
aPerfTuneIniFile.getFrom( OUString( RTL_CONSTASCII_USTRINGPARAM( "FastPipeCommunication" )), aPreloadData, aDefault );
OUString aUserInstallPathHashCode;
- if ( aPreloadData.equalsAscii( "1" ))
+ if ( aPreloadData.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "1" ) ))
{
sal_Char szBuffer[32];
sprintf( szBuffer, "%d", SUPD );
@@ -491,7 +494,7 @@ OfficeIPCThread::Status OfficeIPCThread::EnableOfficeIPCThread()
}
else
aUserInstallPathHashCode = CreateMD5FromString( aDummy );
-
+
// Check result to create a hash code from the user install path
if ( aUserInstallPathHashCode.getLength() == 0 )
@@ -540,10 +543,9 @@ OfficeIPCThread::Status OfficeIPCThread::EnableOfficeIPCThread()
// Seems another office is running. Pipe arguments to it and self terminate
osl::StreamPipe aStreamPipe(pThread->maPipe.getHandle());
- sal_Bool bWaitBeforeClose = sal_False;
ByteString aArguments(RTL_CONSTASCII_STRINGPARAM(ARGUMENT_PREFIX));
rtl::OUString cwdUrl;
- if (!(tools::getProcessWorkingDir(&cwdUrl) &&
+ if (!(tools::getProcessWorkingDir(cwdUrl) &&
addArgument(&aArguments, '1', cwdUrl)))
{
aArguments += '0';
@@ -552,19 +554,14 @@ OfficeIPCThread::Status OfficeIPCThread::EnableOfficeIPCThread()
for( sal_uInt32 i=0; i < nCount; i++ )
{
rtl_getAppCommandArg( i, &aDummy.pData );
- if( aDummy.indexOf('-',0) != 0 )
- {
- bWaitBeforeClose = sal_True;
- }
if (!addArgument(&aArguments, ',', aDummy)) {
return IPC_STATUS_BOOTSTRAP_ERROR;
}
}
- // finaly, write the string onto the pipe
+ // finally, write the string onto the pipe
aStreamPipe.write( aArguments.GetBuffer(), aArguments.Len() );
aStreamPipe.write( "\0", 1 );
- // wait for confirmation #95361# #95425#
ByteString aToken(sc_aConfirmationSequence);
char *aReceiveBuffer = new char[aToken.Len()+1];
int n = aStreamPipe.read( aReceiveBuffer, aToken.Len() );
@@ -597,7 +594,6 @@ void OfficeIPCThread::DisableOfficeIPCThread()
// this is done so the subsequent join will not hang
// because the thread hangs in accept of pipe
osl::StreamPipe aPipe ( pOfficeIPCThread->maPipeIdent, osl_Pipe_OPEN, Security::get() );
- //Pipe.send( TERMINATION_SEQUENCE, TERMINATION_LENGTH );
if (aPipe.is())
{
aPipe.send( sc_aTerminationSequence, sc_nTSeqLength+1 ); // also send 0-byte
@@ -664,8 +660,6 @@ void SAL_CALL OfficeIPCThread::run()
if( nError == osl_Pipe_E_None )
{
-
- // #111143# and others:
// if we receive a request while the office is displaying some dialog or error during
// bootstrap, that dialogs event loop might get events that are dispatched by this thread
// we have to wait for cReady to be set by the real main loop.
@@ -695,7 +689,7 @@ void SAL_CALL OfficeIPCThread::run()
}
// don't close pipe ...
- // #90717# Is this a lookup message from another application? if so, ignore
+ // Is this a lookup message from another application? if so, ignore
if ( aArguments.Len() == 0 )
continue;
@@ -728,14 +722,12 @@ void SAL_CALL OfficeIPCThread::run()
}
// handle request for acceptor
- sal_Bool bAcceptorRequest = sal_False;
OUString aAcceptString;
if ( aCmdLineArgs->GetAcceptString(aAcceptString) && Desktop::CheckOEM()) {
ApplicationEvent* pAppEvent =
new ApplicationEvent( aEmpty, aEmpty,
"ACCEPT", aAcceptString );
ImplPostForeignAppEvent( pAppEvent );
- bAcceptorRequest = sal_True;
}
// handle acceptor removal
OUString aUnAcceptString;
@@ -744,7 +736,6 @@ void SAL_CALL OfficeIPCThread::run()
new ApplicationEvent( aEmpty, aEmpty,
"UNACCEPT", aUnAcceptString );
ImplPostForeignAppEvent( pAppEvent );
- bAcceptorRequest = sal_True;
}
#ifndef UNX
@@ -849,8 +840,6 @@ void SAL_CALL OfficeIPCThread::run()
aHelpURLBuffer.appendAscii("&System=UNX");
#elif defined WNT
aHelpURLBuffer.appendAscii("&System=WIN");
-#elif defined MAC
- aHelpURLBuffer.appendAscii("&System=MAC");
#elif defined OS2
aHelpURLBuffer.appendAscii("&System=OS2");
#endif
@@ -908,9 +897,6 @@ void SAL_CALL OfficeIPCThread::run()
while (
(nResult = maStreamPipe.send(sc_aConfirmationSequence+nBytes, sc_nCSeqLength-nBytes))>0 &&
((nBytes += nResult) < sc_nCSeqLength) ) ;
- // now we can close, don't we?
- // maStreamPipe.close();
-
}
else
{
@@ -972,20 +958,20 @@ static void AddConversionsToDispatchList(
OUString aOutDir( rParamOut.trim() );
::rtl::OUString aPWD;
- ::tools::getProcessWorkingDir( &aPWD );
+ ::tools::getProcessWorkingDir( aPWD );
if( !::osl::FileBase::getAbsoluteFileURL( aPWD, rParamOut, aOutDir ) )
::osl::FileBase::getSystemPathFromFileURL( aOutDir, aOutDir );
if( rParamOut.trim().getLength() )
{
- aParam += ::rtl::OUString::createFromAscii(";");
+ aParam += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(";"));
aParam += aOutDir;
}
else
{
::osl::FileBase::getSystemPathFromFileURL( aPWD, aPWD );
- aParam += ::rtl::OUString::createFromAscii( ";" ) + aPWD;
+ aParam += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ";" )) + aPWD;
}
if ( rRequestList.getLength() > 0 )
@@ -1027,7 +1013,7 @@ sal_Bool OfficeIPCThread::ExecuteCmdLineRequests( ProcessDocumentsRequest& aRequ
{
if( ! pGlobalOfficeIPCThread->AreRequestsEnabled() )
return bShutdown;
-
+
pGlobalOfficeIPCThread->mnPendingRequests += aDispatchList.size();
if ( !pGlobalOfficeIPCThread->mpDispatchWatcher )
{
@@ -1038,7 +1024,7 @@ sal_Bool OfficeIPCThread::ExecuteCmdLineRequests( ProcessDocumentsRequest& aRequ
// copy for execute
DispatchWatcher::DispatchList aTempList( aDispatchList );
aDispatchList.clear();
-
+
aGuard.clear();
// Execute dispatch requests
diff --git a/desktop/source/app/officeipcthread.hxx b/desktop/source/app/officeipcthread.hxx
index f075aec313..e72db07e05 100644
--- a/desktop/source/app/officeipcthread.hxx
+++ b/desktop/source/app/officeipcthread.hxx
@@ -123,7 +123,7 @@ class OfficeIPCThread : public osl::Thread
static void RequestsCompleted( int n = 1 );
static sal_Bool ExecuteCmdLineRequests( ProcessDocumentsRequest& );
- // return FALSE if second office
+ // return sal_False if second office
static Status EnableOfficeIPCThread();
static void DisableOfficeIPCThread();
// start dispatching events...
diff --git a/desktop/source/app/sofficemain.cxx b/desktop/source/app/sofficemain.cxx
index b7d190c845..1e640c58ae 100644
--- a/desktop/source/app/sofficemain.cxx
+++ b/desktop/source/app/sofficemain.cxx
@@ -30,11 +30,13 @@
#include "precompiled_desktop.hxx"
#include "app.hxx"
+#include "cmdlineargs.hxx"
+#include "cmdlinehelp.hxx"
#include <rtl/logfile.hxx>
#include <tools/extendapplicationenvironment.hxx>
-BOOL SVMain();
+int SVMain();
// -=-= main() -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
@@ -47,9 +49,23 @@ extern "C" int soffice_main()
desktop::Desktop aDesktop;
// This string is used during initialization of the Gtk+ VCL module
aDesktop.SetAppName( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("soffice")) );
- SVMain();
-
- return 0;
+ aDesktop.CreateProcessServiceFactory();
+#ifdef UNX
+ // handle --version and --help already here, otherwise they would be handled
+ // after VCL initialization that might fail if $DISPLAY is not set
+ desktop::CommandLineArgs* pCmdLineArgs = aDesktop.GetCommandLineArgs();
+ if ( pCmdLineArgs->IsHelp() )
+ {
+ desktop::displayCmdlineHelp();
+ return EXIT_SUCCESS;
+ }
+ else if ( pCmdLineArgs->IsVersion() )
+ {
+ desktop::displayVersion();
+ return EXIT_SUCCESS;
+ }
+#endif
+ return SVMain();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/source/app/sofficemain.h b/desktop/source/app/sofficemain.h
index 5b07bb4684..5b07bb4684 100644..100755
--- a/desktop/source/app/sofficemain.h
+++ b/desktop/source/app/sofficemain.h
diff --git a/desktop/source/app/userinstall.cxx b/desktop/source/app/userinstall.cxx
index ca68ab00ad..a41dccd0da 100644
--- a/desktop/source/app/userinstall.cxx
+++ b/desktop/source/app/userinstall.cxx
@@ -97,11 +97,6 @@ namespace desktop {
theMSF->createInstance(sConfigSrvc), UNO_QUERY_THROW);
// localize the provider to user selection
-// Reference< XLocalizable > localizable(theConfigProvider, UNO_QUERY_THROW);
-// LanguageType aUserLanguageType = LanguageSelection::getLanguageType();
-// Locale aLocale( MsLangId::convertLanguageToIsoString(aUserLanguageType));
-// localizable->setLocale(aLocale);
-
Reference< XLocalizable > localizable(theConfigProvider, UNO_QUERY_THROW);
OUString aUserLanguage = LanguageSelection::getLanguageString();
Locale aLocale = LanguageSelection::IsoStringToLocale(aUserLanguage);
@@ -109,8 +104,8 @@ namespace desktop {
Sequence< Any > theArgs(1);
NamedValue v;
- v.Name = OUString::createFromAscii("NodePath");
- v.Value = makeAny(OUString::createFromAscii("org.openoffice.Setup"));
+ v.Name = OUString(RTL_CONSTASCII_USTRINGPARAM("NodePath"));
+ v.Value = makeAny(OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Setup")));
theArgs[0] <<= v;
Reference< XHierarchicalNameAccess> hnacc(
theConfigProvider->createInstanceWithArguments(
@@ -133,7 +128,7 @@ namespace desktop {
catch (Exception const & e)
{
OString msg(OUStringToOString(e.Message, RTL_TEXTENCODING_ASCII_US));
- OSL_ENSURE(sal_False, msg.getStr());
+ OSL_FAIL(msg.getStr());
}
return false;
@@ -202,7 +197,7 @@ namespace desktop {
rtl::OUString itemname = aFileStatus.getFileName();
// append trailing '/' if needed
if (newDstUnqPath.lastIndexOf(sal_Unicode('/')) != newDstUnqPath.getLength()-1)
- newDstUnqPath += rtl::OUString::createFromAscii("/");
+ newDstUnqPath += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/"));
newDstUnqPath += itemname;
// recursion
err = copy_recursive(newSrcUnqPath, newDstUnqPath);
@@ -243,6 +238,11 @@ namespace desktop {
FileBase::RC rc = Directory::createPath(aUserPath);
if ((rc != FileBase::E_None) && (rc != FileBase::E_EXIST)) return UserInstall::E_Creation;
+#ifdef UNIX
+ // set safer permissions for the user directory by default
+ File::setAttributes(aUserPath, Attribute_OwnWrite| Attribute_OwnRead| Attribute_OwnExe);
+#endif
+
// copy data from shared data directory of base installation
for (sal_Int32 i=0; pszSrcList[i]!=NULL && pszDstList[i]!=NULL; i++)
{
@@ -261,21 +261,19 @@ namespace desktop {
}
try
{
- OUString sConfigSrvc = OUString::createFromAscii("com.sun.star.configuration.ConfigurationProvider");
- OUString sAccessSrvc = OUString::createFromAscii("com.sun.star.configuration.ConfigurationUpdateAccess");
+ OUString sConfigSrvc(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationProvider"));
+ OUString sAccessSrvc(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationUpdateAccess"));
// get configuration provider
Reference< XMultiServiceFactory > theMSF = comphelper::getProcessServiceFactory();
Reference< XMultiServiceFactory > theConfigProvider = Reference< XMultiServiceFactory >(
theMSF->createInstance(sConfigSrvc), UNO_QUERY_THROW);
Sequence< Any > theArgs(1);
- NamedValue v(OUString::createFromAscii("NodePath"), makeAny(OUString::createFromAscii("org.openoffice.Setup")));
- //v.Name = OUString::createFromAscii("NodePath");
- //v.Value = makeAny(OUString::createFromAscii("org.openoffice.Setup"));
+ NamedValue v(OUString(RTL_CONSTASCII_USTRINGPARAM("NodePath")), makeAny(OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Setup"))));
theArgs[0] <<= v;
Reference< XHierarchicalPropertySet> hpset(
theConfigProvider->createInstanceWithArguments(sAccessSrvc, theArgs), UNO_QUERY_THROW);
- hpset->setHierarchicalPropertyValue(OUString::createFromAscii("Office/ooSetupInstCompleted"), makeAny(sal_True));
+ hpset->setHierarchicalPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("Office/ooSetupInstCompleted")), makeAny(sal_True));
Reference< XChangesBatch >(hpset, UNO_QUERY_THROW)->commitChanges();
}
catch ( PropertyVetoException& )
@@ -286,7 +284,7 @@ namespace desktop {
{
OString aMsg("create_user_install(): ");
aMsg += OUStringToOString(e.Message, RTL_TEXTENCODING_ASCII_US);
- OSL_ENSURE(sal_False, aMsg.getStr());
+ OSL_FAIL(aMsg.getStr());
return UserInstall::E_Creation;
}
diff --git a/desktop/source/app/version.map b/desktop/source/app/version.map
index ad52c57cc1..ad52c57cc1 100644..100755
--- a/desktop/source/app/version.map
+++ b/desktop/source/app/version.map
diff --git a/desktop/source/deployment/deployment.component b/desktop/source/deployment/deployment.component
new file mode 100755
index 0000000000..11385c7aa8
--- /dev/null
+++ b/desktop/source/deployment/deployment.component
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<component loader="com.sun.star.loader.SharedLibrary"
+ xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.comp.deployment.ExtensionManager">
+ <service name="com.sun.star.comp.deployment.ExtensionManager"/>
+ <singleton name="com.sun.star.deployment.ExtensionManager"/>
+ </implementation>
+ <implementation name="com.sun.star.comp.deployment.PackageInformationProvider">
+ <service name="com.sun.star.comp.deployment.PackageInformationProvider"/>
+ <singleton name="com.sun.star.deployment.PackageInformationProvider"/>
+ </implementation>
+ <implementation name="com.sun.star.comp.deployment.PackageManagerFactory">
+ <service name="com.sun.star.comp.deployment.PackageManagerFactory"/>
+ <singleton name="com.sun.star.deployment.thePackageManagerFactory"/>
+ </implementation>
+ <implementation name="com.sun.star.comp.deployment.ProgressLog">
+ <service name="com.sun.star.comp.deployment.ProgressLog"/>
+ </implementation>
+ <implementation name="com.sun.star.comp.deployment.component.PackageRegistryBackend">
+ <service name="com.sun.star.deployment.PackageRegistryBackend"/>
+ </implementation>
+ <implementation name="com.sun.star.comp.deployment.configuration.PackageRegistryBackend">
+ <service name="com.sun.star.deployment.PackageRegistryBackend"/>
+ </implementation>
+ <implementation name="com.sun.star.comp.deployment.executable.PackageRegistryBackend">
+ <service name="com.sun.star.deployment.PackageRegistryBackend"/>
+ </implementation>
+ <implementation name="com.sun.star.comp.deployment.help.PackageRegistryBackend">
+ <service name="com.sun.star.deployment.PackageRegistryBackend"/>
+ </implementation>
+ <implementation name="com.sun.star.comp.deployment.script.PackageRegistryBackend">
+ <service name="com.sun.star.deployment.PackageRegistryBackend"/>
+ </implementation>
+ <implementation name="com.sun.star.comp.deployment.sfwk.PackageRegistryBackend">
+ <service name="com.sun.star.deployment.PackageRegistryBackend"/>
+ </implementation>
+</component>
diff --git a/desktop/source/deployment/dp_log.cxx b/desktop/source/deployment/dp_log.cxx
index bb58770c4c..e8afda6542 100644
--- a/desktop/source/deployment/dp_log.cxx
+++ b/desktop/source/deployment/dp_log.cxx
@@ -89,7 +89,7 @@ void ProgressLogImpl::disposing()
}
catch (Exception & exc) {
(void) exc;
- OSL_ENSURE( 0, OUStringToOString(
+ OSL_FAIL( OUStringToOString(
exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
}
}
@@ -153,7 +153,7 @@ void ProgressLogImpl::log_write( OString const & text )
}
catch (io::IOException & exc) {
(void) exc;
- OSL_ENSURE( 0, OUStringToOString(
+ OSL_FAIL( OUStringToOString(
exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
}
}
diff --git a/desktop/source/deployment/dp_persmap.cxx b/desktop/source/deployment/dp_persmap.cxx
index 410bb01c1a..eb5267ee4a 100644
--- a/desktop/source/deployment/dp_persmap.cxx
+++ b/desktop/source/deployment/dp_persmap.cxx
@@ -61,7 +61,7 @@ void PersistentMap::throw_rtexc( int err, char const * pmsg ) const
buf.append( OUString( msg.getStr(), msg.getLength(),
osl_getThreadTextEncoding() ) );
const OUString msg_(buf.makeStringAndClear());
- OSL_ENSURE( 0, rtl::OUStringToOString(
+ OSL_FAIL( rtl::OUStringToOString(
msg_, RTL_TEXTENCODING_UTF8 ).getStr() );
throw RuntimeException( msg_, Reference<XInterface>() );
}
@@ -74,7 +74,7 @@ PersistentMap::~PersistentMap()
}
catch (DbException & exc) {
(void) exc; // avoid warnings
- OSL_ENSURE( 0, DbEnv::strerror( exc.get_errno() ) );
+ OSL_FAIL( DbEnv::strerror( exc.get_errno() ) );
}
}
@@ -228,15 +228,14 @@ t_string2string_map PersistentMap::getEntries() const
if (err != 0)
throw_rtexc(err);
- ::std::pair<t_string2string_map::iterator, bool > insertion(
- ret.insert( t_string2string_map::value_type(
- t_string2string_map::value_type(
- OString( static_cast< sal_Char const * >(
- dbKey.get_data()),
- dbKey.get_size() ),
- OString( static_cast< sal_Char const * >(
- dbData.get_data()),
- dbData.get_size() ) ) ) ) );
+#if OSL_DEBUG_LEVEL > 0
+ ::std::pair<t_string2string_map::iterator, bool> insertion =
+#endif
+ ret.insert(
+ t_string2string_map::value_type(
+ OString( static_cast<sal_Char const*>(dbKey.get_data()), dbKey.get_size() ),
+ OString( static_cast<sal_Char const*>(dbData.get_data()), dbData.get_size() )
+ ) );
OSL_ASSERT( insertion.second );
}
err = pcurs->close();
diff --git a/desktop/source/deployment/dp_services.cxx b/desktop/source/deployment/dp_services.cxx
index 36e7163f28..b9a8185b2d 100644
--- a/desktop/source/deployment/dp_services.cxx
+++ b/desktop/source/deployment/dp_services.cxx
@@ -93,27 +93,6 @@ void SAL_CALL component_getImplementationEnvironment(
*ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
}
-sal_Bool SAL_CALL component_writeInfo(
- lang::XMultiServiceFactory * pServiceManager,
- registry::XRegistryKey * pRegistryKey )
-{
- return component_writeInfoHelper(
- pServiceManager, pRegistryKey,
- dp_registry::backend::configuration::serviceDecl,
- dp_registry::backend::component::serviceDecl,
- dp_registry::backend::help::serviceDecl,
- dp_registry::backend::script::serviceDecl,
- dp_registry::backend::sfwk::serviceDecl,
- dp_registry::backend::executable::serviceDecl,
- dp_manager::factory::serviceDecl,
- dp_log::serviceDecl,
- dp_info::serviceDecl,
- dp_manager::serviceDecl) &&
- dp_manager::factory::singleton_entries( pRegistryKey ) &&
- dp_info::singleton_entries( pRegistryKey ) &&
- dp_manager::singleton_entries( pRegistryKey);
-}
-
void * SAL_CALL component_getFactory(
sal_Char const * pImplName,
lang::XMultiServiceFactory * pServiceManager,
diff --git a/desktop/source/deployment/dp_xml.cxx b/desktop/source/deployment/dp_xml.cxx
index db787eb578..8bd219c1ed 100644
--- a/desktop/source/deployment/dp_xml.cxx
+++ b/desktop/source/deployment/dp_xml.cxx
@@ -45,20 +45,6 @@ namespace dp_misc
//==============================================================================
void xml_parse(
- Reference<xml::input::XRoot> const & xRoot,
- ::ucbhelper::Content & ucb_content,
- Reference<XComponentContext> const & xContext )
-{
- const Any arg(xRoot);
- const Reference<xml::sax::XDocumentHandler> xDocHandler(
- xContext->getServiceManager()->createInstanceWithArgumentsAndContext(
- OUSTR("com.sun.star.xml.input.SaxDocumentHandler"),
- Sequence<Any>( &arg, 1 ), xContext ), UNO_QUERY_THROW );
- xml_parse( xDocHandler, ucb_content, xContext );
- }
-
-//==============================================================================
-void xml_parse(
Reference<xml::sax::XDocumentHandler> const & xDocHandler,
::ucbhelper::Content & ucb_content,
Reference<XComponentContext> const & xContext )
diff --git a/desktop/source/deployment/gui/deploymentgui.component b/desktop/source/deployment/gui/deploymentgui.component
new file mode 100755
index 0000000000..d613f482e7
--- /dev/null
+++ b/desktop/source/deployment/gui/deploymentgui.component
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<component loader="com.sun.star.loader.SharedLibrary"
+ xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.comp.deployment.ui.LicenseDialog">
+ <service name="com.sun.star.deployment.ui.LicenseDialog"/>
+ </implementation>
+ <implementation name="com.sun.star.comp.deployment.ui.PackageManagerDialog">
+ <service name="com.sun.star.deployment.ui.PackageManagerDialog"/>
+ </implementation>
+ <implementation name="com.sun.star.comp.deployment.ui.UpdateRequiredDialog">
+ <service name="com.sun.star.deployment.ui.UpdateRequiredDialog"/>
+ </implementation>
+</component>
diff --git a/desktop/source/deployment/gui/descedit.cxx b/desktop/source/deployment/gui/descedit.cxx
index 0291ce5802..4091e89f53 100644
--- a/desktop/source/deployment/gui/descedit.cxx
+++ b/desktop/source/deployment/gui/descedit.cxx
@@ -61,7 +61,7 @@ void DescriptionEdit::Init()
// read-only
SetReadOnly();
// no cursor
- EnableCursor( FALSE );
+ EnableCursor( sal_False );
}
// -----------------------------------------------------------------------
diff --git a/desktop/source/deployment/gui/dp_gui.h b/desktop/source/deployment/gui/dp_gui.h
index 043a86f1af..043a86f1af 100644..100755
--- a/desktop/source/deployment/gui/dp_gui.h
+++ b/desktop/source/deployment/gui/dp_gui.h
diff --git a/desktop/source/deployment/gui/dp_gui.hrc b/desktop/source/deployment/gui/dp_gui.hrc
index 19b2faf129..aa856c4ab6 100755
--- a/desktop/source/deployment/gui/dp_gui.hrc
+++ b/desktop/source/deployment/gui/dp_gui.hrc
@@ -1,7 +1,7 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
+ *
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
@@ -35,7 +35,7 @@
#define RID_DLG_EXTENSION_MANAGER RID_DEPLOYMENT_GUI_START
#define RID_DLG_UPDATE_REQUIRED (RID_DEPLOYMENT_GUI_START + 11)
-#define RID_EM_BTN_CLOSE 10
+#define RID_EM_BTN_CLOSE 10
#define RID_EM_BTN_HELP 11
#define RID_EM_BTN_ADD 12
#define RID_EM_BTN_CHECK_UPDATES 13
@@ -57,7 +57,6 @@
#define FL_LICENSE 69
#define FI_LICENSE_ARROW1 60
#define FI_LICENSE_ARROW2 61
-#define IMG_LICENCE_ARROW_HC 62
#define BTN_LICENSE_ACCEPT 63
// local RIDs for "Download and Install" dialog
@@ -94,28 +93,27 @@
#define RID_STR_WARNINGBOX_VERSION_GREATER_DIFFERENT_NAMES (RID_DEPLOYMENT_GUI_START + 8)
#define RID_WARNINGBOX_INSTALL_EXTENSION (RID_DEPLOYMENT_GUI_START + 9)
-#define RID_DLG_UPDATE (RID_DEPLOYMENT_GUI_START + 10)
-
-#define RID_DLG_UPDATE_CHECKING 1
-#define RID_DLG_UPDATE_THROBBER 2
-#define RID_DLG_UPDATE_UPDATE 3
-#define RID_DLG_UPDATE_UPDATES 4
-#define RID_DLG_UPDATE_ALL 5
-#define RID_DLG_UPDATE_DESCRIPTION 6
-#define RID_DLG_UPDATE_DESCRIPTIONS 7
-#define RID_DLG_UPDATE_LINE 8
-#define RID_DLG_UPDATE_HELP 9
-#define RID_DLG_UPDATE_OK 10
-#define RID_DLG_UPDATE_CANCEL 11
-#define RID_DLG_UPDATE_NORMALALERT 12
-#define RID_DLG_UPDATE_HIGHCONTRASTALERT 13
-#define RID_DLG_UPDATE_ERROR 14
-#define RID_DLG_UPDATE_NONE 15
-#define RID_DLG_UPDATE_NOINSTALLABLE 16
-#define RID_DLG_UPDATE_FAILURE 17
-#define RID_DLG_UPDATE_UNKNOWNERROR 18
-#define RID_DLG_UPDATE_NODESCRIPTION 19
-#define RID_DLG_UPDATE_NOINSTALL 20
+#define RID_DLG_UPDATE (RID_DEPLOYMENT_GUI_START + 10)
+
+#define RID_DLG_UPDATE_CHECKING 1
+#define RID_DLG_UPDATE_THROBBER 2
+#define RID_DLG_UPDATE_UPDATE 3
+#define RID_DLG_UPDATE_UPDATES 4
+#define RID_DLG_UPDATE_ALL 5
+#define RID_DLG_UPDATE_DESCRIPTION 6
+#define RID_DLG_UPDATE_DESCRIPTIONS 7
+#define RID_DLG_UPDATE_LINE 8
+#define RID_DLG_UPDATE_HELP 9
+#define RID_DLG_UPDATE_OK 10
+#define RID_DLG_UPDATE_CLOSE 11
+#define RID_DLG_UPDATE_NORMALALERT 12
+#define RID_DLG_UPDATE_ERROR 14
+#define RID_DLG_UPDATE_NONE 15
+#define RID_DLG_UPDATE_NOINSTALLABLE 16
+#define RID_DLG_UPDATE_FAILURE 17
+#define RID_DLG_UPDATE_UNKNOWNERROR 18
+#define RID_DLG_UPDATE_NODESCRIPTION 19
+#define RID_DLG_UPDATE_NOINSTALL 20
#define RID_DLG_UPDATE_NODEPENDENCY 21
#define RID_DLG_UPDATE_NODEPENDENCY_CUR_VER 22
#define RID_DLG_UPDATE_NOPERMISSION 23
@@ -123,23 +121,24 @@
#define RID_DLG_UPDATE_BROWSERBASED 25
#define RID_DLG_UPDATE_PUBLISHER_LABEL 26
#define RID_DLG_UPDATE_PUBLISHER_LINK 27
-#define RID_DLG_UPDATE_RELEASENOTES_LABEL 28
-#define RID_DLG_UPDATE_RELEASENOTES_LINK 29
+#define RID_DLG_UPDATE_RELEASENOTES_LABEL 28
+#define RID_DLG_UPDATE_RELEASENOTES_LINK 29
#define RID_DLG_UPDATE_NOUPDATE 30
#define RID_DLG_UPDATE_VERSION 31
+#define RID_DLG_UPDATE_IGNORE 32
+#define RID_DLG_UPDATE_ENABLE 33
+#define RID_DLG_UPDATE_IGNORE_ALL 34
+#define RID_DLG_UPDATE_IGNORED_UPDATE 35
+
#define RID_DLG_UPDATEINSTALL (RID_DEPLOYMENT_GUI_START + 20)
#define RID_INFOBOX_UPDATE_SHARED_EXTENSION (RID_DEPLOYMENT_GUI_START + 21)
#define RID_IMG_WARNING (RID_DEPLOYMENT_GUI_START+56)
-#define RID_IMG_WARNING_HC (RID_DEPLOYMENT_GUI_START+57)
#define RID_IMG_LOCKED (RID_DEPLOYMENT_GUI_START+58)
-#define RID_IMG_LOCKED_HC (RID_DEPLOYMENT_GUI_START+59)
#define RID_IMG_EXTENSION (RID_DEPLOYMENT_GUI_START+60)
-#define RID_IMG_EXTENSION_HC (RID_DEPLOYMENT_GUI_START+61)
#define RID_IMG_SHARED (RID_DEPLOYMENT_GUI_START+62)
-#define RID_IMG_SHARED_HC (RID_DEPLOYMENT_GUI_START+63)
#define RID_STR_ADD_PACKAGES (RID_DEPLOYMENT_GUI_START+70)
@@ -163,6 +162,7 @@
#define RID_STR_NO_ADMIN_PRIVILEGE (RID_DEPLOYMENT_GUI_START+95)
#define RID_STR_ERROR_MISSING_DEPENDENCIES (RID_DEPLOYMENT_GUI_START+96)
#define RID_STR_ERROR_MISSING_LICENSE (RID_DEPLOYMENT_GUI_START+97)
+#define RID_STR_SHOW_LICENSE_CMD (RID_DEPLOYMENT_GUI_START+98)
#define WARNINGBOX_CONCURRENTINSTANCE (RID_DEPLOYMENT_GUI_START+100)
@@ -172,6 +172,7 @@
#define RID_WARNINGBOX_REMOVE_SHARED_EXTENSION (RID_DEPLOYMENT_GUI_START+104)
#define RID_WARNINGBOX_ENABLE_SHARED_EXTENSION (RID_DEPLOYMENT_GUI_START+105)
#define RID_WARNINGBOX_DISABLE_SHARED_EXTENSION (RID_DEPLOYMENT_GUI_START+106)
+#define RID_DLG_SHOW_LICENSE (RID_DEPLOYMENT_GUI_START+107)
#define RID_DLG_LICENSE RID_DEPLOYMENT_LICENSE_START
diff --git a/desktop/source/deployment/gui/dp_gui_autoscrolledit.cxx b/desktop/source/deployment/gui/dp_gui_autoscrolledit.cxx
index c00123fb91..fae0f3022a 100644
--- a/desktop/source/deployment/gui/dp_gui_autoscrolledit.cxx
+++ b/desktop/source/deployment/gui/dp_gui_autoscrolledit.cxx
@@ -47,7 +47,6 @@ AutoScrollEdit::AutoScrollEdit( Window* pParent, const ResId& rResId )
ScrollBar* pScroll = GetVScrollBar();
if (pScroll)
pScroll->Hide();
-// SetLeftMargin( 0 );
StartListening( *GetTextEngine() );
}
@@ -60,7 +59,7 @@ void AutoScrollEdit::Notify( SfxBroadcaster&, const SfxHint& rHint )
{
if ( rHint.IsA( TYPE(TextHint) ) )
{
- ULONG nId = ((const TextHint&)rHint).GetId();
+ sal_uLong nId = ((const TextHint&)rHint).GetId();
if ( nId == TEXT_HINT_VIEWSCROLLED )
{
ScrollBar* pScroll = GetVScrollBar();
diff --git a/desktop/source/deployment/gui/dp_gui_backend.src b/desktop/source/deployment/gui/dp_gui_backend.src
index 343d75df6a..b002bf2408 100644
--- a/desktop/source/deployment/gui/dp_gui_backend.src
+++ b/desktop/source/deployment/gui/dp_gui_backend.src
@@ -33,11 +33,6 @@ Image RID_IMG_DEF_PACKAGE_BUNDLE
ImageBitmap = Bitmap { File = "sx03256.bmp"; };
MASKCOLOR
};
-Image RID_IMG_DEF_PACKAGE_BUNDLE_HC
-{
- ImageBitmap = Bitmap { File = "sxh03256.bmp"; };
- MASKCOLOR
-};
// script, dialog:
Image RID_IMG_SCRIPTLIB
@@ -45,22 +40,12 @@ Image RID_IMG_SCRIPTLIB
ImageBitmap = Bitmap { File = "im30820.bmp"; };
MASKCOLOR
};
-Image RID_IMG_SCRIPTLIB_HC
-{
- ImageBitmap = Bitmap { File = "imh30820.bmp"; };
- MASKCOLOR
-};
Image RID_IMG_DIALOGLIB
{
ImageBitmap = Bitmap { File = "dialogfolder_16.bmp"; };
MASKCOLOR
};
-Image RID_IMG_DIALOGLIB_HC
-{
- ImageBitmap = Bitmap { File = "dialogfolder_16_h.bmp"; };
- MASKCOLOR
-};
// configuration:
Image RID_IMG_CONF_XML
@@ -68,11 +53,6 @@ Image RID_IMG_CONF_XML
ImageBitmap = Bitmap { File = "xml_16.bmp"; };
MASKCOLOR
};
-Image RID_IMG_CONF_XML_HC
-{
- ImageBitmap = Bitmap { File = "xml_16_h.bmp"; };
- MASKCOLOR
-};
// component, typelib:
Image RID_IMG_COMPONENT
@@ -80,52 +60,27 @@ Image RID_IMG_COMPONENT
ImageBitmap = Bitmap { File = "component_16.bmp"; };
MASKCOLOR
};
-Image RID_IMG_COMPONENT_HC
-{
- ImageBitmap = Bitmap { File = "component_16_h.bmp"; };
- MASKCOLOR
-};
Image RID_IMG_JAVA_COMPONENT
{
ImageBitmap = Bitmap { File = "javacomponent_16.bmp"; };
MASKCOLOR
};
-Image RID_IMG_JAVA_COMPONENT_HC
-{
- ImageBitmap = Bitmap { File = "javacomponent_16_h.bmp"; };
- MASKCOLOR
-};
Image RID_IMG_TYPELIB
{
ImageBitmap = Bitmap { File = "library_16.bmp"; };
MASKCOLOR
};
-Image RID_IMG_TYPELIB_HC
-{
- ImageBitmap = Bitmap { File = "library_16_h.bmp"; };
- MASKCOLOR
-};
Image RID_IMG_JAVA_TYPELIB
{
ImageBitmap = Bitmap { File = "javalibrary_16.bmp"; };
MASKCOLOR
};
-Image RID_IMG_JAVA_TYPELIB_HC
-{
- ImageBitmap = Bitmap { File = "javalibrary_16_h.bmp"; };
- MASKCOLOR
-};
Image RID_IMG_HELP
{
ImageBitmap = Bitmap { File = "commandimagelist/sc_helperdialog.bmp"; };
MASKCOLOR
};
-Image RID_IMG_HELP_HC
-{
- ImageBitmap = Bitmap { File = "commandimagelist/sch_helperdialog.bmp"; };
- MASKCOLOR
-};
diff --git a/desktop/source/deployment/gui/dp_gui_dependencydialog.src b/desktop/source/deployment/gui/dp_gui_dependencydialog.src
index 80b584f894..1e5d273943 100644
--- a/desktop/source/deployment/gui/dp_gui_dependencydialog.src
+++ b/desktop/source/deployment/gui/dp_gui_dependencydialog.src
@@ -34,6 +34,7 @@
#define LOCAL_LIST_HEIGHT (6 * RSC_BS_CHARHEIGHT)
ModalDialog RID_DLG_DEPENDENCIES {
+ HelpID = "desktop:ModalDialog:RID_DLG_DEPENDENCIES";
Size = MAP_APPFONT(
(RSC_SP_DLG_INNERBORDER_LEFT + LOCAL_WIDTH +
RSC_SP_DLG_INNERBORDER_RIGHT),
@@ -52,6 +53,7 @@ ModalDialog RID_DLG_DEPENDENCIES {
NoLabel = TRUE;
};
ListBox RID_DLG_DEPENDENCIES_LIST {
+ HelpID = "desktop:ListBox:RID_DLG_DEPENDENCIES:RID_DLG_DEPENDENCIES_LIST";
Pos = MAP_APPFONT(
RSC_SP_DLG_INNERBORDER_LEFT,
(RSC_SP_DLG_INNERBORDER_TOP + LOCAL_TEXT_HEIGHT +
diff --git a/desktop/source/deployment/gui/dp_gui_dialog.src b/desktop/source/deployment/gui/dp_gui_dialog.src
index db2e09769d..12b6acb847 100755..100644
--- a/desktop/source/deployment/gui/dp_gui_dialog.src
+++ b/desktop/source/deployment/gui/dp_gui_dialog.src
@@ -1,7 +1,7 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
+ *
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
@@ -31,27 +31,33 @@ String RID_STR_ADD_PACKAGES
{
Text [ en-US ] = "Add Extension(s)";
};
+
String RID_CTX_ITEM_REMOVE
{
Text [ en-US ] = "~Remove";
};
+
String RID_CTX_ITEM_ENABLE
{
Text [ en-US ] = "~Enable";
};
+
String RID_CTX_ITEM_DISABLE
{
Text [ en-US ] = "~Disable";
};
+
String RID_CTX_ITEM_CHECK_UPDATE
{
Text [ en-US ] = "~Update...";
};
+
String RID_CTX_ITEM_OPTIONS
{
Text [ en-US ] = "~Options...";
};
+
String RID_STR_ADDING_PACKAGES
{
Text [ en-US ] = "Adding %EXTENSION_NAME";
@@ -119,11 +125,16 @@ String RID_STR_ERROR_MISSING_LICENSE
Text [ en-US ] = "This extension is disabled because you haven't accepted the license yet.\n";
};
+String RID_STR_SHOW_LICENSE_CMD
+{
+ Text [ en-US ] = "Show license";
+};
+
// Dialog layout
// ---------------------------------------------------
// row 1 | multi line edit
// ---------------------------------------------------
-// row 2 | fixed text
+// row 2 | fixed text
// ---------------------------------------------------
// row 3 | img | fixed text | fixed text | button
// ----------------------------------------------------
@@ -131,7 +142,7 @@ String RID_STR_ERROR_MISSING_LICENSE
// ---------------------------------------------------
// row 5 |fixed line
// ---------------------------------------------------
-// row 6 | | |button | button
+// row 6 | | |button | button
// ---------------------------------------------------
// | col 1 | col 2 | col3 | col4 | col5
@@ -169,6 +180,7 @@ String RID_STR_ERROR_MISSING_LICENSE
ModalDialog RID_DLG_LICENSE
{
+ HelpID = "desktop:ModalDialog:RID_DLG_LICENSE";
Text [ en-US ] = "Extension Software License Agreement";
Size = MAP_APPFONT(LIC_DLG_WIDTH, LIC_DLG_HEIGHT);
@@ -177,10 +189,10 @@ ModalDialog RID_DLG_LICENSE
Moveable = TRUE;
Closeable = TRUE;
Sizeable = FALSE;
-// Hide = TRUE;
MultiLineEdit ML_LICENSE
{
+ HelpID = "desktop:MultiLineEdit:RID_DLG_LICENSE:ML_LICENSE";
Pos = MAP_APPFONT(COL1_X, ROW1_Y);
Size = MAP_APPFONT(BODYWIDTH, ROW1_HEIGHT);
Border = TRUE;
@@ -195,14 +207,16 @@ ModalDialog RID_DLG_LICENSE
WordBreak = TRUE;
NoLabel = TRUE;
Text [ en-US ] = "Please follow these steps to proceed with the installation of the extension:";
- };
+ };
+
FixedText FT_LICENSE_BODY_1
{
Pos = MAP_APPFONT(COL2_X, ROW3_Y);
Size = MAP_APPFONT( COL2_WIDTH, ROW3_HEIGHT );
NoLabel = TRUE;
Text [ en-US ] = "1.";
- };
+ };
+
//spans col3 + col4
FixedText FT_LICENSE_BODY_1_TXT
{
@@ -211,14 +225,16 @@ ModalDialog RID_DLG_LICENSE
WordBreak = TRUE;
NoLabel = TRUE;
Text [ en-US ] = "Read the complete License Agreement. Use the scroll bar or the \'Scroll Down\' button in this dialog to view the entire license text.";
- };
+ };
+
FixedText FT_LICENSE_BODY_2
{
Pos = MAP_APPFONT(COL2_X, ROW4_Y);
Size = MAP_APPFONT(COL2_WIDTH, ROW4_HEIGHT);
NoLabel = TRUE;
Text [ en-US ] = "2.";
- };
+ };
+
FixedText FT_LICENSE_BODY_2_TXT
{
Pos = MAP_APPFONT(COL3_X, ROW4_Y);
@@ -226,22 +242,25 @@ ModalDialog RID_DLG_LICENSE
WordBreak = TRUE;
NoLabel = TRUE;
Text [ en-US ] = "Accept the License Agreement for the extension by pressing the \'Accept\' button.";
-
- };
+
+ };
+
PushButton PB_LICENSE_DOWN
{
+ HelpID = "desktop:PushButton:RID_DLG_LICENSE:PB_LICENSE_DOWN";
TabStop = TRUE ;
Pos = MAP_APPFONT(COL5_X , ROW3_Y) ;
Size = MAP_APPFONT(RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT) ;
Text [ en-US ] = "~Scroll Down";
-
+
};
+
FixedLine FL_LICENSE
{
Pos = MAP_APPFONT ( 0, ROW5_Y) ;
Size = MAP_APPFONT ( LIC_DLG_WIDTH, ROW5_HEIGHT ) ;
};
-
+
FixedImage FI_LICENSE_ARROW1
{
Pos = MAP_APPFONT (COL1_X, ROW3_Y) ;
@@ -263,13 +282,7 @@ ModalDialog RID_DLG_LICENSE
MASKCOLOR
};
};
-
- Image IMG_LICENCE_ARROW_HC
- {
- ImageBitmap = Bitmap { File = "sch06300.png"; };
- MASKCOLOR
- };
-
+
OKButton BTN_LICENSE_ACCEPT
{
Pos = MAP_APPFONT(COL4_X, ROW6_Y);
@@ -290,6 +303,35 @@ ModalDialog RID_DLG_LICENSE
};
+ModalDialog RID_DLG_SHOW_LICENSE
+{
+ Text [ en-US ] = "Extension Software License Agreement";
+ Size = MAP_APPFONT( 300, 200 );
+ OutputSize = TRUE;
+ SVLook = TRUE;
+ Moveable = TRUE;
+ Closeable = TRUE;
+ Sizeable = TRUE;
+
+ MultiLineEdit ML_LICENSE
+ {
+ Pos = MAP_APPFONT( 5, 5 );
+ Size = MAP_APPFONT( 300 - 10, 200 - 15 - RSC_CD_PUSHBUTTON_HEIGHT );
+ Border = TRUE;
+ VScroll = TRUE;
+ ReadOnly = TRUE;
+ };
+
+ OKButton RID_EM_BTN_CLOSE
+ {
+ TabStop = TRUE;
+ DefButton = TRUE;
+ Text [ en-US ] = "Close";
+ Pos = MAP_APPFONT( (300-RSC_CD_PUSHBUTTON_WIDTH)/2, 200 - 5 - RSC_CD_PUSHBUTTON_HEIGHT );
+ Size = MAP_APPFONT( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT );
+ };
+};
+
WarningBox RID_WARNINGBOX_INSTALL_EXTENSION {
diff --git a/desktop/source/deployment/gui/dp_gui_dialog2.cxx b/desktop/source/deployment/gui/dp_gui_dialog2.cxx
index 53628fb854..7aa8decb6f 100644
--- a/desktop/source/deployment/gui/dp_gui_dialog2.cxx
+++ b/desktop/source/deployment/gui/dp_gui_dialog2.cxx
@@ -40,8 +40,10 @@
#include "dp_gui_theextmgr.hxx"
#include "dp_gui_extensioncmdqueue.hxx"
#include "dp_misc.h"
+#include "dp_ucb.h"
#include "dp_update.hxx"
#include "dp_identifier.hxx"
+#include "dp_descriptioninfoset.hxx"
#include "vcl/ctrl.hxx"
#include "vcl/menu.hxx"
@@ -119,7 +121,8 @@ enum MENU_COMMAND
CMD_REMOVE = 1,
CMD_ENABLE,
CMD_DISABLE,
- CMD_UPDATE
+ CMD_UPDATE,
+ CMD_SHOW_LICENSE
};
class ExtBoxWithBtns_Impl : public ExtensionBox_Impl
@@ -207,8 +210,6 @@ ExtBoxWithBtns_Impl::~ExtBoxWithBtns_Impl()
}
//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
const Size ExtBoxWithBtns_Impl::GetMinOutputSizePixel() const
{
Size aMinSize( ExtensionBox_Impl::GetMinOutputSizePixel() );
@@ -225,13 +226,10 @@ const Size ExtBoxWithBtns_Impl::GetMinOutputSizePixel() const
// -----------------------------------------------------------------------
void ExtBoxWithBtns_Impl::RecalcAll()
{
- ExtensionBox_Impl::RecalcAll();
-
const sal_Int32 nActive = getSelIndex();
if ( nActive != EXTENSION_LISTBOX_ENTRY_NOTFOUND )
{
- SetButtonPos( GetEntryRect( nActive ) );
SetButtonStatus( GetEntryData( nActive) );
}
else
@@ -240,6 +238,11 @@ void ExtBoxWithBtns_Impl::RecalcAll()
m_pEnableBtn->Hide();
m_pRemoveBtn->Hide();
}
+
+ ExtensionBox_Impl::RecalcAll();
+
+ if ( nActive != EXTENSION_LISTBOX_ENTRY_NOTFOUND )
+ SetButtonPos( GetEntryRect( nActive ) );
}
@@ -364,28 +367,29 @@ bool ExtBoxWithBtns_Impl::HandleTabKey( bool bReverse )
// -----------------------------------------------------------------------
MENU_COMMAND ExtBoxWithBtns_Impl::ShowPopupMenu( const Point & rPos, const long nPos )
{
- if ( ( nPos >= 0 ) && ( nPos < (long) getItemCount() ) )
- {
- if ( ! GetEntryData( nPos )->m_bLocked )
- {
- PopupMenu aPopup;
+ if ( nPos >= (long) getItemCount() )
+ return CMD_NONE;
- aPopup.InsertItem( CMD_UPDATE, DialogHelper::getResourceString( RID_CTX_ITEM_CHECK_UPDATE ) );
+ PopupMenu aPopup;
- if ( GetEntryData( nPos )->m_bUser )
- {
- if ( GetEntryData( nPos )->m_eState == REGISTERED )
- aPopup.InsertItem( CMD_DISABLE, DialogHelper::getResourceString( RID_CTX_ITEM_DISABLE ) );
- else if ( GetEntryData( nPos )->m_eState != NOT_AVAILABLE )
- aPopup.InsertItem( CMD_ENABLE, DialogHelper::getResourceString( RID_CTX_ITEM_ENABLE ) );
- }
+ aPopup.InsertItem( CMD_UPDATE, DialogHelper::getResourceString( RID_CTX_ITEM_CHECK_UPDATE ) );
- aPopup.InsertItem( CMD_REMOVE, DialogHelper::getResourceString( RID_CTX_ITEM_REMOVE ) );
-
- return (MENU_COMMAND) aPopup.Execute( this, rPos );
+ if ( ! GetEntryData( nPos )->m_bLocked )
+ {
+ if ( GetEntryData( nPos )->m_bUser )
+ {
+ if ( GetEntryData( nPos )->m_eState == REGISTERED )
+ aPopup.InsertItem( CMD_DISABLE, DialogHelper::getResourceString( RID_CTX_ITEM_DISABLE ) );
+ else if ( GetEntryData( nPos )->m_eState != NOT_AVAILABLE )
+ aPopup.InsertItem( CMD_ENABLE, DialogHelper::getResourceString( RID_CTX_ITEM_ENABLE ) );
}
+ aPopup.InsertItem( CMD_REMOVE, DialogHelper::getResourceString( RID_CTX_ITEM_REMOVE ) );
}
- return CMD_NONE;
+
+ if ( GetEntryData( nPos )->m_sLicenseText.Len() )
+ aPopup.InsertItem( CMD_SHOW_LICENSE, DialogHelper::getResourceString( RID_STR_SHOW_LICENSE_CMD ) );
+
+ return (MENU_COMMAND) aPopup.Execute( this, rPos );
}
//------------------------------------------------------------------------------
@@ -410,6 +414,12 @@ void ExtBoxWithBtns_Impl::MouseButtonDown( const MouseEvent& rMEvt )
break;
case CMD_REMOVE: m_pParent->removePackage( GetEntryData( nPos )->m_xPackage );
break;
+ case CMD_SHOW_LICENSE:
+ {
+ ShowLicenseDialog aLicenseDlg( m_pParent, GetEntryData( nPos )->m_xPackage );
+ aLicenseDlg.Execute();
+ break;
+ }
}
}
else if ( rMEvt.IsLeft() )
@@ -431,7 +441,7 @@ long ExtBoxWithBtns_Impl::Notify( NotifyEvent& rNEvt )
{
const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
KeyCode aKeyCode = pKEvt->GetKeyCode();
- USHORT nKeyCode = aKeyCode.GetCode();
+ sal_uInt16 nKeyCode = aKeyCode.GetCode();
if ( nKeyCode == KEY_TAB )
bHandled = HandleTabKey( aKeyCode.IsShift() );
@@ -558,14 +568,14 @@ DialogHelper::~DialogHelper()
}
//------------------------------------------------------------------------------
-ResId DialogHelper::getResId( USHORT nId )
+ResId DialogHelper::getResId( sal_uInt16 nId )
{
const SolarMutexGuard guard;
return ResId( nId, *DeploymentGuiResMgr::get() );
}
//------------------------------------------------------------------------------
-String DialogHelper::getResourceString( USHORT id )
+String DialogHelper::getResourceString( sal_uInt16 id )
{
// init with non-acquired solar mutex:
BrandName::get();
@@ -589,7 +599,7 @@ bool DialogHelper::IsSharedPkgMgr( const uno::Reference< deployment::XPackage >
//------------------------------------------------------------------------------
bool DialogHelper::continueOnSharedExtension( const uno::Reference< deployment::XPackage > &xPackage,
Window *pParent,
- const USHORT nResID,
+ const sal_uInt16 nResID,
bool &bHadWarning )
{
if ( !bHadWarning && IsSharedPkgMgr( xPackage ) )
@@ -658,8 +668,8 @@ bool DialogHelper::installForAllUsers( bool &bInstallForAll ) const
sMsgText.SearchAndReplaceAllAscii( "%PRODUCTNAME", BrandName::get() );
aQuery.SetMessText( sMsgText );
- USHORT nYesBtnID = aQuery.GetButtonId( 0 );
- USHORT nNoBtnID = aQuery.GetButtonId( 1 );
+ sal_uInt16 nYesBtnID = aQuery.GetButtonId( 0 );
+ sal_uInt16 nNoBtnID = aQuery.GetButtonId( 1 );
if ( nYesBtnID != BUTTONDIALOG_BUTTON_NOTFOUND )
aQuery.SetButtonText( nYesBtnID, getResourceString( RID_STR_INSTALL_FOR_ME ) );
@@ -929,7 +939,7 @@ uno::Sequence< OUString > ExtMgrDialog::raiseAddPicker()
xFilterManager->appendFilter( iPos->first, iPos->second );
}
catch (lang::IllegalArgumentException & exc) {
- OSL_ENSURE( 0, ::rtl::OUStringToOString(
+ OSL_FAIL( ::rtl::OUStringToOString(
exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
(void) exc;
}
@@ -948,7 +958,6 @@ uno::Sequence< OUString > ExtMgrDialog::raiseAddPicker()
//------------------------------------------------------------------------------
IMPL_LINK( ExtMgrDialog, HandleCancelBtn, void*, EMPTYARG )
{
- // m_dialog->m_cmdEnv->m_aborted = true;
if ( m_xAbortChannel.is() )
{
try
@@ -957,7 +966,7 @@ IMPL_LINK( ExtMgrDialog, HandleCancelBtn, void*, EMPTYARG )
}
catch ( uno::RuntimeException & )
{
- OSL_ENSURE( 0, "### unexpected RuntimeException!" );
+ OSL_FAIL( "### unexpected RuntimeException!" );
}
}
return 1;
@@ -1106,7 +1115,7 @@ IMPL_LINK( ExtMgrDialog, TimeOutHdl, Timer*, EMPTYARG )
}
if ( m_aProgressBar.IsVisible() )
- m_aProgressBar.SetValue( (USHORT) m_nProgress );
+ m_aProgressBar.SetValue( (sal_uInt16) m_nProgress );
m_aTimeoutTimer.Start();
}
@@ -1154,12 +1163,11 @@ void ExtMgrDialog::Resize()
if( IsNativeControlSupported( CTRL_PROGRESS, PART_ENTIRE_CONTROL ) )
{
ImplControlValue aValue;
- bool bNativeOK;
Rectangle aControlRegion( Point( 0, 0 ), m_aProgressBar.GetSizePixel() );
Rectangle aNativeControlRegion, aNativeContentRegion;
- if( (bNativeOK = GetNativeControlRegion( CTRL_PROGRESS, PART_ENTIRE_CONTROL, aControlRegion,
+ if( GetNativeControlRegion( CTRL_PROGRESS, PART_ENTIRE_CONTROL, aControlRegion,
CTRL_STATE_ENABLED, aValue, rtl::OUString(),
- aNativeControlRegion, aNativeContentRegion ) ) != FALSE )
+ aNativeControlRegion, aNativeContentRegion ) != sal_False )
{
nProgressHeight = aNativeControlRegion.GetHeight();
}
@@ -1196,7 +1204,7 @@ long ExtMgrDialog::Notify( NotifyEvent& rNEvt )
{
const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
KeyCode aKeyCode = pKEvt->GetKeyCode();
- USHORT nKeyCode = aKeyCode.GetCode();
+ sal_uInt16 nKeyCode = aKeyCode.GetCode();
if ( nKeyCode == KEY_TAB )
{
@@ -1223,7 +1231,7 @@ long ExtMgrDialog::Notify( NotifyEvent& rNEvt )
}
//------------------------------------------------------------------------------
-BOOL ExtMgrDialog::Close()
+sal_Bool ExtMgrDialog::Close()
{
bool bRet = m_pManager->queryTermination();
if ( bRet )
@@ -1364,7 +1372,6 @@ bool UpdateRequiredDialog::enablePackage( const uno::Reference< deployment::XPac
//------------------------------------------------------------------------------
IMPL_LINK( UpdateRequiredDialog, HandleCancelBtn, void*, EMPTYARG )
{
- // m_dialog->m_cmdEnv->m_aborted = true;
if ( m_xAbortChannel.is() )
{
try
@@ -1373,7 +1380,7 @@ IMPL_LINK( UpdateRequiredDialog, HandleCancelBtn, void*, EMPTYARG )
}
catch ( uno::RuntimeException & )
{
- OSL_ENSURE( 0, "### unexpected RuntimeException!" );
+ OSL_FAIL( "### unexpected RuntimeException!" );
}
}
return 1;
@@ -1545,7 +1552,7 @@ IMPL_LINK( UpdateRequiredDialog, TimeOutHdl, Timer*, EMPTYARG )
}
if ( m_aProgressBar.IsVisible() )
- m_aProgressBar.SetValue( (USHORT) m_nProgress );
+ m_aProgressBar.SetValue( (sal_uInt16) m_nProgress );
m_aTimeoutTimer.Start();
}
@@ -1599,12 +1606,11 @@ void UpdateRequiredDialog::Resize()
if( IsNativeControlSupported( CTRL_PROGRESS, PART_ENTIRE_CONTROL ) )
{
ImplControlValue aValue;
- bool bNativeOK;
Rectangle aControlRegion( Point( 0, 0 ), m_aProgressBar.GetSizePixel() );
Rectangle aNativeControlRegion, aNativeContentRegion;
- if( (bNativeOK = GetNativeControlRegion( CTRL_PROGRESS, PART_ENTIRE_CONTROL, aControlRegion,
+ if( GetNativeControlRegion( CTRL_PROGRESS, PART_ENTIRE_CONTROL, aControlRegion,
CTRL_STATE_ENABLED, aValue, rtl::OUString(),
- aNativeControlRegion, aNativeContentRegion ) ) != FALSE )
+ aNativeControlRegion, aNativeContentRegion ) != sal_False )
{
nProgressHeight = aNativeControlRegion.GetHeight();
}
@@ -1642,7 +1648,7 @@ short UpdateRequiredDialog::Execute()
//------------------------------------------------------------------------------
// VCL::Dialog
-BOOL UpdateRequiredDialog::Close()
+sal_Bool UpdateRequiredDialog::Close()
{
::osl::MutexGuard aGuard( m_aMutex );
@@ -1682,7 +1688,7 @@ bool UpdateRequiredDialog::isEnabled( const uno::Reference< deployment::XPackage
catch ( uno::RuntimeException & ) { throw; }
catch ( uno::Exception & exc) {
(void) exc;
- OSL_ENSURE( 0, ::rtl::OUStringToOString( exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
+ OSL_FAIL( ::rtl::OUStringToOString( exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
bRegistered = false;
}
@@ -1748,6 +1754,42 @@ void UpdateRequiredDialog::disableAllEntries()
m_aCloseBtn.SetText( m_sCloseText );
}
+//------------------------------------------------------------------------------
+// ShowLicenseDialog
+//------------------------------------------------------------------------------
+ShowLicenseDialog::ShowLicenseDialog( Window * pParent,
+ const uno::Reference< deployment::XPackage > &xPackage ) :
+ ModalDialog( pParent, DialogHelper::getResId( RID_DLG_SHOW_LICENSE ) ),
+ m_aLicenseText( this, DialogHelper::getResId( ML_LICENSE ) ),
+ m_aCloseBtn( this, DialogHelper::getResId( RID_EM_BTN_CLOSE ) )
+{
+ FreeResource();
+
+ OUString aText = xPackage->getLicenseText();
+ m_aLicenseText.SetText( aText );
+}
+
+//------------------------------------------------------------------------------
+ShowLicenseDialog::~ShowLicenseDialog()
+{}
+
+//------------------------------------------------------------------------------
+void ShowLicenseDialog::Resize()
+{
+ Size aTotalSize( GetOutputSizePixel() );
+ Size aTextSize( aTotalSize.Width() - RSC_SP_DLG_INNERBORDER_LEFT - RSC_SP_DLG_INNERBORDER_RIGHT,
+ aTotalSize.Height() - RSC_SP_DLG_INNERBORDER_TOP - 2*RSC_SP_DLG_INNERBORDER_BOTTOM
+ - m_aCloseBtn.GetSizePixel().Height() );
+
+ m_aLicenseText.SetPosSizePixel( Point( RSC_SP_DLG_INNERBORDER_LEFT, RSC_SP_DLG_INNERBORDER_TOP ),
+ aTextSize );
+
+ Point aBtnPos( (aTotalSize.Width() - m_aCloseBtn.GetSizePixel().Width())/2,
+ aTotalSize.Height() - RSC_SP_DLG_INNERBORDER_BOTTOM
+ - m_aCloseBtn.GetSizePixel().Height() );
+ m_aCloseBtn.SetPosPixel( aBtnPos );
+}
+
//=================================================================================
// UpdateRequiredDialogService
//=================================================================================
@@ -1778,8 +1820,6 @@ sal_Int16 UpdateRequiredDialogService::execute() throw ( uno::RuntimeException )
}
//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
SelectedPackage::~SelectedPackage() {}
} //namespace dp_gui
diff --git a/desktop/source/deployment/gui/dp_gui_dialog2.hxx b/desktop/source/deployment/gui/dp_gui_dialog2.hxx
index bb8c9785d9..03b8839d23 100644
--- a/desktop/source/deployment/gui/dp_gui_dialog2.hxx
+++ b/desktop/source/deployment/gui/dp_gui_dialog2.hxx
@@ -36,6 +36,7 @@
#include "svtools/fixedhyper.hxx"
#include "svtools/prgsbar.hxx"
+#include "svtools/svmedit.hxx"
#include "osl/conditn.hxx"
#include "osl/mutex.hxx"
@@ -63,7 +64,7 @@ class DialogHelper
{
::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext;
Dialog* m_pVCLWindow;
- ULONG m_nEventID;
+ sal_uLong m_nEventID;
bool m_bIsBusy;
public:
@@ -88,12 +89,12 @@ public:
virtual void prepareChecking() = 0;
virtual void checkEntries() = 0;
- static ResId getResId( USHORT nId );
- static String getResourceString( USHORT id );
+ static ResId getResId( sal_uInt16 nId );
+ static String getResourceString( sal_uInt16 id );
static bool IsSharedPkgMgr( const ::com::sun::star::uno::Reference< ::com::sun::star::deployment::XPackage > &);
static bool continueOnSharedExtension( const ::com::sun::star::uno::Reference< ::com::sun::star::deployment::XPackage > &,
Window *pParent,
- const USHORT nResID,
+ const sal_uInt16 nResID,
bool &bHadWarning );
void setBusy( const bool bBusy ) { m_bIsBusy = bBusy; }
@@ -149,7 +150,7 @@ public:
virtual void Resize();
virtual long Notify( NotifyEvent& rNEvt );
- virtual BOOL Close();
+ virtual sal_Bool Close();
virtual void showProgress( bool bStart );
virtual void updateProgress( const ::rtl::OUString &rText,
@@ -221,8 +222,7 @@ public:
virtual short Execute();
virtual void Resize();
- virtual BOOL Close();
-// virtual long Notify( NotifyEvent& rNEvt );
+ virtual sal_Bool Close();
virtual void showProgress( bool bStart );
virtual void updateProgress( const ::rtl::OUString &rText,
@@ -247,6 +247,20 @@ public:
};
//==============================================================================
+class ShowLicenseDialog : public ModalDialog
+{
+ MultiLineEdit m_aLicenseText;
+ OKButton m_aCloseBtn;
+
+public:
+ ShowLicenseDialog( Window * pParent,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::deployment::XPackage > &xPackage );
+ virtual ~ShowLicenseDialog();
+
+ virtual void Resize();
+};
+
+//==============================================================================
class UpdateRequiredDialogService : public ::cppu::WeakImplHelper1< ::com::sun::star::ui::dialogs::XExecutableDialog >
{
::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > const m_xComponentContext;
diff --git a/desktop/source/deployment/gui/dp_gui_dialog2.src b/desktop/source/deployment/gui/dp_gui_dialog2.src
index b74a802ceb..296928abfb 100644
--- a/desktop/source/deployment/gui/dp_gui_dialog2.src
+++ b/desktop/source/deployment/gui/dp_gui_dialog2.src
@@ -1,7 +1,7 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
+ *
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
@@ -43,6 +43,7 @@ ModelessDialog RID_DLG_EXTENSION_MANAGER
PushButton RID_EM_BTN_ADD
{
+ HelpID = "desktop:PushButton:RID_DLG_EXTENSION_MANAGER:RID_EM_BTN_ADD";
TabStop = TRUE;
Text [ en-US ] = "~Add...";
Size = MAP_APPFONT(RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT );
@@ -50,6 +51,7 @@ ModelessDialog RID_DLG_EXTENSION_MANAGER
PushButton RID_EM_BTN_CHECK_UPDATES
{
+ HelpID = "desktop:PushButton:RID_DLG_EXTENSION_MANAGER:RID_EM_BTN_CHECK_UPDATES";
TabStop = TRUE;
Text [ en-US ] = "Check for ~Updates...";
Size = MAP_APPFONT(RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT );
@@ -131,6 +133,7 @@ ModalDialog RID_DLG_UPDATE_REQUIRED
PushButton RID_EM_BTN_CHECK_UPDATES
{
+ HelpID = "desktop:PushButton:RID_DLG_UPDATE_REQUIRED:RID_EM_BTN_CHECK_UPDATES";
TabStop = TRUE;
Text [ en-US ] = "Check for ~Updates...";
Size = MAP_APPFONT(RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT );
@@ -138,6 +141,7 @@ ModalDialog RID_DLG_UPDATE_REQUIRED
PushButton RID_EM_BTN_CLOSE
{
+ HelpID = "desktop:PushButton:RID_DLG_UPDATE_REQUIRED:RID_EM_BTN_CLOSE";
TabStop = TRUE;
DefButton = TRUE;
Text [ en-US ] = "Disable all";
@@ -158,41 +162,21 @@ Image RID_IMG_WARNING
ImageBitmap = Bitmap { File = "caution_16.png"; };
};
-Image RID_IMG_WARNING_HC
-{
- ImageBitmap = Bitmap { File = "caution_16_h.png"; };
-};
-
Image RID_IMG_LOCKED
{
ImageBitmap = Bitmap { File = "lock_16.png"; };
};
-Image RID_IMG_LOCKED_HC
-{
- ImageBitmap = Bitmap { File = "lock_16_h.png"; };
-};
-
Image RID_IMG_SHARED
{
ImageBitmap = Bitmap { File = "shared_16.png"; };
};
-Image RID_IMG_SHARED_HC
-{
- ImageBitmap = Bitmap { File = "shared_16_h.png"; };
-};
-
Image RID_IMG_EXTENSION
{
ImageBitmap = Bitmap { File = "extension_32.png"; };
};
-Image RID_IMG_EXTENSION_HC
-{
- ImageBitmap = Bitmap { File = "extension_32_h.png"; };
-};
-
QueryBox RID_QUERYBOX_INSTALL_FOR_ALL
{
Buttons = WB_YES_NO_CANCEL;
@@ -205,7 +189,7 @@ QueryBox RID_QUERYBOX_INSTALL_FOR_ALL
// ---------------------------------------------------
// row 1 | multi line edit
// ---------------------------------------------------
-// row 2 | fixed text
+// row 2 | fixed text
// ---------------------------------------------------
// row 3 | img | fixed text | fixed text | button
// ----------------------------------------------------
@@ -213,7 +197,7 @@ QueryBox RID_QUERYBOX_INSTALL_FOR_ALL
// ---------------------------------------------------
// row 5 |fixed line
// ---------------------------------------------------
-// row 6 | | |button | button
+// row 6 | | |button | button
// ---------------------------------------------------
// | col 1 | col 2 | col3 | col4 | col5
diff --git a/desktop/source/deployment/gui/dp_gui_extensioncmdqueue.cxx b/desktop/source/deployment/gui/dp_gui_extensioncmdqueue.cxx
index 3674759f6f..973e430bd3 100644
--- a/desktop/source/deployment/gui/dp_gui_extensioncmdqueue.cxx
+++ b/desktop/source/deployment/gui/dp_gui_extensioncmdqueue.cxx
@@ -102,9 +102,10 @@
#endif
#ifdef WNT
-#include "tools/prewin.h"
+#define GradientStyle_RECT BLA_GradientStyle_RECT
+#include <windows.h>
#include <objbase.h>
-#include "tools/postwin.h"
+#undef GradientStyle_RECT
#endif
@@ -261,6 +262,8 @@ private:
virtual void execute();
virtual void SAL_CALL onTerminated();
+ void _insert(const TExtensionCmd& rExtCmd);
+
void _addExtension( ::rtl::Reference< ProgressCmdEnv > &rCmdEnv,
const OUString &rPackageURL,
const OUString &rRepository,
@@ -648,57 +651,30 @@ void ExtensionCmdQueue::Thread::addExtension( const ::rtl::OUString &rExtensionU
const ::rtl::OUString &rRepository,
const bool bWarnUser )
{
- ::osl::MutexGuard aGuard( m_mutex );
-
- //If someone called stop then we do not add the extension -> game over!
- if ( m_bStopped )
- return;
-
if ( rExtensionURL.getLength() )
{
TExtensionCmd pEntry( new ExtensionCmd( ExtensionCmd::ADD, rExtensionURL, rRepository, bWarnUser ) );
-
- m_queue.push( pEntry );
- m_eInput = START;
- m_wakeup.set();
+ _insert( pEntry );
}
}
//------------------------------------------------------------------------------
void ExtensionCmdQueue::Thread::removeExtension( const uno::Reference< deployment::XPackage > &rPackage )
{
- ::osl::MutexGuard aGuard( m_mutex );
-
- //If someone called stop then we do not remove the extension -> game over!
- if ( m_bStopped )
- return;
-
if ( rPackage.is() )
{
TExtensionCmd pEntry( new ExtensionCmd( ExtensionCmd::REMOVE, rPackage ) );
-
- m_queue.push( pEntry );
- m_eInput = START;
- m_wakeup.set();
+ _insert( pEntry );
}
}
//------------------------------------------------------------------------------
void ExtensionCmdQueue::Thread::acceptLicense( const uno::Reference< deployment::XPackage > &rPackage )
{
- ::osl::MutexGuard aGuard( m_mutex );
-
- //If someone called stop then we do not remove the extension -> game over!
- if ( m_bStopped )
- return;
-
if ( rPackage.is() )
{
TExtensionCmd pEntry( new ExtensionCmd( ExtensionCmd::ACCEPT_LICENSE, rPackage ) );
-
- m_queue.push( pEntry );
- m_eInput = START;
- m_wakeup.set();
+ _insert( pEntry );
}
}
@@ -706,20 +682,12 @@ void ExtensionCmdQueue::Thread::acceptLicense( const uno::Reference< deployment:
void ExtensionCmdQueue::Thread::enableExtension( const uno::Reference< deployment::XPackage > &rPackage,
const bool bEnable )
{
- ::osl::MutexGuard aGuard( m_mutex );
-
- //If someone called stop then we do not remove the extension -> game over!
- if ( m_bStopped )
- return;
-
if ( rPackage.is() )
{
TExtensionCmd pEntry( new ExtensionCmd( bEnable ? ExtensionCmd::ENABLE :
ExtensionCmd::DISABLE,
rPackage ) );
- m_queue.push( pEntry );
- m_eInput = START;
- m_wakeup.set();
+ _insert( pEntry );
}
}
@@ -727,16 +695,8 @@ void ExtensionCmdQueue::Thread::enableExtension( const uno::Reference< deploymen
void ExtensionCmdQueue::Thread::checkForUpdates(
const std::vector<uno::Reference<deployment::XPackage > > &vExtensionList )
{
- ::osl::MutexGuard aGuard( m_mutex );
-
- //If someone called stop then we do not update the extension -> game over!
- if ( m_bStopped )
- return;
-
TExtensionCmd pEntry( new ExtensionCmd( ExtensionCmd::CHECK_FOR_UPDATES, vExtensionList ) );
- m_queue.push( pEntry );
- m_eInput = START;
- m_wakeup.set();
+ _insert( pEntry );
}
//------------------------------------------------------------------------------
@@ -848,12 +808,6 @@ void ExtensionCmdQueue::Thread::execute()
break;
}
}
- //catch ( deployment::DeploymentException &)
- //{
- //}
- //catch ( lang::IllegalArgumentException &)
- //{
- //}
catch ( ucb::CommandAbortedException & )
{
//This exception is thrown when the user clicks cancel on the progressbar.
@@ -915,9 +869,6 @@ void ExtensionCmdQueue::Thread::execute()
currentCmdEnv->stopProgress();
}
//end for
- //enable all buttons
-// m_pDialog->m_bAddingExtensions = false;
-// m_pDialog->updateButtonStates();
#ifdef WNT
CoUninitialize();
#endif
@@ -944,7 +895,7 @@ void ExtensionCmdQueue::Thread::_addExtension( ::rtl::Reference< ProgressCmdEnv
OUString sName;
if ( ! (anyTitle >>= sName) )
{
- OSL_ENSURE(0, "Could not get file name for extension.");
+ OSL_FAIL("Could not get file name for extension.");
return;
}
@@ -1013,13 +964,13 @@ void ExtensionCmdQueue::Thread::_checkForUpdates(
if ( ( pUpdateDialog->Execute() == RET_OK ) && !vData.empty() )
{
- // If there is at least one directly downloadable dialog then we
+ // If there is at least one directly downloadable extension then we
// open the install dialog.
::std::vector< UpdateData > dataDownload;
int countWebsiteDownload = 0;
typedef std::vector< dp_gui::UpdateData >::const_iterator cit;
- for ( cit i = vData.begin(); i < vData.end(); i++ )
+ for ( cit i = vData.begin(); i < vData.end(); ++i )
{
if ( i->sWebsiteURL.getLength() > 0 )
countWebsiteDownload ++;
@@ -1039,7 +990,7 @@ void ExtensionCmdQueue::Thread::_checkForUpdates(
//Now start the webbrowser and navigate to the websites where we get the updates
if ( RET_OK == nDialogResult )
{
- for ( cit i = vData.begin(); i < vData.end(); i++ )
+ for ( cit i = vData.begin(); i < vData.end(); ++i )
{
if ( m_pDialogHelper && ( i->sWebsiteURL.getLength() > 0 ) )
m_pDialogHelper->openWebBrowser( i->sWebsiteURL, m_pDialogHelper->getWindow()->GetText() );
@@ -1125,6 +1076,19 @@ void ExtensionCmdQueue::Thread::onTerminated()
m_bTerminated = true;
}
+void ExtensionCmdQueue::Thread::_insert(const TExtensionCmd& rExtCmd)
+{
+ ::osl::MutexGuard aGuard( m_mutex );
+
+ // If someone called stop then we do not process the command -> game over!
+ if ( m_bStopped )
+ return;
+
+ m_queue.push( rExtCmd );
+ m_eInput = START;
+ m_wakeup.set();
+}
+
//------------------------------------------------------------------------------
OUString ExtensionCmdQueue::Thread::searchAndReplaceAll( const OUString &rSource,
const OUString &rWhat,
@@ -1147,8 +1111,6 @@ OUString ExtensionCmdQueue::Thread::searchAndReplaceAll( const OUString &rSource
//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
ExtensionCmdQueue::ExtensionCmdQueue( DialogHelper * pDialogHelper,
TheExtensionManager *pManager,
const uno::Reference< uno::XComponentContext > &rContext )
diff --git a/desktop/source/deployment/gui/dp_gui_extlistbox.cxx b/desktop/source/deployment/gui/dp_gui_extlistbox.cxx
index 05511135e2..8cdf0a67e2 100644
--- a/desktop/source/deployment/gui/dp_gui_extlistbox.cxx
+++ b/desktop/source/deployment/gui/dp_gui_extlistbox.cxx
@@ -77,11 +77,12 @@ Entry_Impl::Entry_Impl( const uno::Reference< deployment::XPackage > &xPackage,
m_sTitle = xPackage->getDisplayName();
m_sVersion = xPackage->getVersion();
m_sDescription = xPackage->getDescription();
+ m_sLicenseText = xPackage->getLicenseText();
beans::StringPair aInfo( m_xPackage->getPublisherInfo() );
m_sPublisher = aInfo.First;
m_sPublisherURL = aInfo.Second;
-
+
// get the icons for the package if there are any
uno::Reference< graphic::XGraphic > xGraphic = xPackage->getIcon( false );
if ( xGraphic.is() )
@@ -184,13 +185,9 @@ ExtensionBox_Impl::ExtensionBox_Impl( Dialog* pParent, TheExtensionManager *pMan
m_nActiveHeight( 0 ),
m_nExtraHeight( 2 ),
m_aSharedImage( DialogHelper::getResId( RID_IMG_SHARED ) ),
- m_aSharedImageHC( DialogHelper::getResId( RID_IMG_SHARED_HC ) ),
m_aLockedImage( DialogHelper::getResId( RID_IMG_LOCKED ) ),
- m_aLockedImageHC( DialogHelper::getResId( RID_IMG_LOCKED_HC ) ),
m_aWarningImage( DialogHelper::getResId( RID_IMG_WARNING ) ),
- m_aWarningImageHC( DialogHelper::getResId( RID_IMG_WARNING_HC ) ),
m_aDefaultImage( DialogHelper::getResId( RID_IMG_EXTENSION ) ),
- m_aDefaultImageHC( DialogHelper::getResId( RID_IMG_EXTENSION_HC ) ),
m_pScrollBar( NULL ),
m_pManager( pManager )
{
@@ -334,7 +331,7 @@ void ExtensionBox_Impl::select( sal_Int32 nIndex )
{
const ::osl::MutexGuard aGuard( m_entriesMutex );
checkIndex( nIndex );
- selectEntry( nIndex );
+ selectEntry( nIndex );
}
//------------------------------------------------------------------------------
@@ -355,7 +352,6 @@ void ExtensionBox_Impl::select( const rtl::OUString & sName )
}
//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
// Title + description
void ExtensionBox_Impl::CalcActiveHeight( const long nPos )
{
@@ -455,10 +451,10 @@ void ExtensionBox_Impl::DeleteRemoved()
void ExtensionBox_Impl::selectEntry( const long nPos )
{
//ToDo whe should not use the guard at such a big scope here.
- //Currently it is used to gard m_vEntries and m_nActive. m_nActive will be
+ //Currently it is used to gard m_vEntries and m_nActive. m_nActive will be
//modified in this function.
//It would be probably best to always use a copy of m_vEntries
- //and some other state variables from ExtensionBox_Impl for
+ //and some other state variables from ExtensionBox_Impl for
//the whole painting operation. See issue i86993
::osl::ClearableMutexGuard guard(m_entriesMutex);
@@ -531,9 +527,9 @@ void ExtensionBox_Impl::DrawRow( const Rectangle& rRect, const TEntry_Impl pEntr
aPos += Point( TOP_OFFSET, TOP_OFFSET );
Image aImage;
if ( ! pEntry->m_aIcon )
- aImage = isHCMode() ? m_aDefaultImageHC : m_aDefaultImage;
+ aImage = m_aDefaultImage;
else
- aImage = isHCMode() ? pEntry->m_aIconHC : pEntry->m_aIcon;
+ aImage = pEntry->m_aIcon;
Size aImageSize = aImage.GetSizePixel();
if ( ( aImageSize.Width() <= ICON_WIDTH ) && ( aImageSize.Height() <= ICON_HEIGHT ) )
DrawImage( Point( aPos.X()+((ICON_WIDTH-aImageSize.Width())/2), aPos.Y()+((ICON_HEIGHT-aImageSize.Height())/2) ), aImage );
@@ -639,16 +635,16 @@ void ExtensionBox_Impl::DrawRow( const Rectangle& rRect, const TEntry_Impl pEntr
{
aPos = rRect.TopRight() + Point( -(RIGHT_ICON_OFFSET + SMALL_ICON_SIZE), TOP_OFFSET );
if ( pEntry->m_bLocked )
- DrawImage( aPos, Size( SMALL_ICON_SIZE, SMALL_ICON_SIZE ), isHCMode() ? m_aLockedImageHC : m_aLockedImage );
+ DrawImage( aPos, Size( SMALL_ICON_SIZE, SMALL_ICON_SIZE ), m_aLockedImage );
else
- DrawImage( aPos, Size( SMALL_ICON_SIZE, SMALL_ICON_SIZE ), isHCMode() ? m_aSharedImageHC : m_aSharedImage );
+ DrawImage( aPos, Size( SMALL_ICON_SIZE, SMALL_ICON_SIZE ), m_aSharedImage );
}
if ( ( pEntry->m_eState == AMBIGUOUS ) || pEntry->m_bMissingDeps || pEntry->m_bMissingLic )
{
aPos = rRect.TopRight() + Point( -(RIGHT_ICON_OFFSET + SPACE_BETWEEN + 2*SMALL_ICON_SIZE), TOP_OFFSET );
- DrawImage( aPos, Size( SMALL_ICON_SIZE, SMALL_ICON_SIZE ), isHCMode() ? m_aWarningImageHC : m_aWarningImage );
+ DrawImage( aPos, Size( SMALL_ICON_SIZE, SMALL_ICON_SIZE ), m_aWarningImage );
}
-
+
SetLineColor( Color( COL_LIGHTGRAY ) );
DrawLine( rRect.BottomLeft(), rRect.BottomRight() );
}
@@ -711,7 +707,7 @@ bool ExtensionBox_Impl::HandleTabKey( bool )
}
// -----------------------------------------------------------------------
-bool ExtensionBox_Impl::HandleCursorKey( USHORT nKeyCode )
+bool ExtensionBox_Impl::HandleCursorKey( sal_uInt16 nKeyCode )
{
if ( m_vEntries.empty() )
return true;
@@ -876,7 +872,7 @@ long ExtensionBox_Impl::Notify( NotifyEvent& rNEvt )
{
const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
KeyCode aKeyCode = pKEvt->GetKeyCode();
- USHORT nKeyCode = aKeyCode.GetCode();
+ sal_uInt16 nKeyCode = aKeyCode.GetCode();
if ( nKeyCode == KEY_TAB )
bHandled = HandleTabKey( aKeyCode.IsShift() );
@@ -989,7 +985,7 @@ long ExtensionBox_Impl::addEntry( const uno::Reference< deployment::XPackage > &
}
else if ( !m_bInCheckMode )
{
- OSL_ENSURE( 0, "ExtensionBox_Impl::addEntry(): Will not add duplicate entries" );
+ OSL_FAIL( "ExtensionBox_Impl::addEntry(): Will not add duplicate entries" );
}
}
@@ -1062,7 +1058,7 @@ void ExtensionBox_Impl::removeEntry( const uno::Reference< deployment::XPackage
long nPos = iIndex - m_vEntries.begin();
// Entries mustn't removed here, because they contain a hyperlink control
- // which can only be deleted when the thread has the solar mutex. Therefor
+ // which can only be deleted when the thread has the solar mutex. Therefor
// the entry will be moved into the m_vRemovedEntries list which will be
// cleared on the next paint event
m_vRemovedEntries.push_back( *iIndex );
@@ -1154,7 +1150,7 @@ void ExtensionBox_Impl::checkEntries()
nNewPos = nPos;
if ( nPos <= m_nActive )
m_nActive += 1;
- iIndex++;
+ ++iIndex;
}
else
{ // remove entry from list
@@ -1168,7 +1164,7 @@ void ExtensionBox_Impl::checkEntries()
}
}
else
- iIndex++;
+ ++iIndex;
}
guard.clear();
@@ -1184,11 +1180,6 @@ void ExtensionBox_Impl::checkEntries()
Invalidate();
}
}
-//------------------------------------------------------------------------------
-bool ExtensionBox_Impl::isHCMode()
-{
- return (bool)GetSettings().GetStyleSettings().GetHighContrastMode();
-}
//------------------------------------------------------------------------------
void ExtensionBox_Impl::SetScrollHdl( const Link& rLink )
diff --git a/desktop/source/deployment/gui/dp_gui_extlistbox.hxx b/desktop/source/deployment/gui/dp_gui_extlistbox.hxx
index 4726a0c9e2..9dbbb7d337 100644
--- a/desktop/source/deployment/gui/dp_gui_extlistbox.hxx
+++ b/desktop/source/deployment/gui/dp_gui_extlistbox.hxx
@@ -2,7 +2,7 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
+ *
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
@@ -82,6 +82,7 @@ struct Entry_Impl
String m_sPublisher;
String m_sPublisherURL;
String m_sErrorText;
+ String m_sLicenseText;
Image m_aIcon;
Image m_aIconHC;
svt::FixedHyperlink *m_pPublisher;
@@ -137,22 +138,18 @@ class ExtensionBox_Impl : public ::svt::IExtensionListBox
long m_nExtraHeight;
Size m_aOutputSize;
Image m_aSharedImage;
- Image m_aSharedImageHC;
Image m_aLockedImage;
- Image m_aLockedImageHC;
Image m_aWarningImage;
- Image m_aWarningImageHC;
Image m_aDefaultImage;
- Image m_aDefaultImageHC;
Link m_aClickHdl;
-
+
ScrollBar *m_pScrollBar;
com::sun::star::uno::Reference< ExtensionRemovedListener > m_xRemoveListener;
TheExtensionManager *m_pManager;
//This mutex is used for synchronizing access to m_vEntries.
- //Currently it is used to synchronize adding, removing entries and
+ //Currently it is used to synchronize adding, removing entries and
//functions like getItemName, getItemDescription, etc. to prevent
//that m_vEntries is accessed at an invalid index.
//ToDo: There are many more places where m_vEntries is read and which may
@@ -170,9 +167,8 @@ class ExtensionBox_Impl : public ::svt::IExtensionListBox
void SetupScrollBar();
void DrawRow( const Rectangle& rRect, const TEntry_Impl pEntry );
bool HandleTabKey( bool bReverse );
- bool HandleCursorKey( USHORT nKeyCode );
+ bool HandleCursorKey( sal_uInt16 nKeyCode );
bool FindEntryPos( const TEntry_Impl pEntry, long nStart, long nEnd, long &nFound );
- bool isHCMode();
void DeleteRemoved();
//-----------------
@@ -194,7 +190,7 @@ public:
const Size GetMinOutputSizePixel() const;
void SetExtraSize( long nSize ) { m_nExtraHeight = nSize; }
- TEntry_Impl GetEntryData( long nPos ) { return m_vEntries[ nPos ]; }
+ TEntry_Impl GetEntryData( long nPos ) { return m_vEntries[ nPos ]; }
long GetEntryCount() { return (long) m_vEntries.size(); }
Rectangle GetEntryRect( const long nPos ) const;
bool HasActive() { return m_bHasActive; }
diff --git a/desktop/source/deployment/gui/dp_gui_service.cxx b/desktop/source/deployment/gui/dp_gui_service.cxx
index a01b8b309d..cf6dc14463 100644
--- a/desktop/source/deployment/gui/dp_gui_service.cxx
+++ b/desktop/source/deployment/gui/dp_gui_service.cxx
@@ -66,7 +66,7 @@ public:
virtual ~MyApp();
// Application
- virtual void Main();
+ virtual int Main();
};
//______________________________________________________________________________
@@ -80,11 +80,11 @@ MyApp::MyApp()
}
//______________________________________________________________________________
-void MyApp::Main()
+int MyApp::Main()
{
+ return EXIT_SUCCESS;
}
-//##############################################################################
namespace
{
@@ -357,14 +357,6 @@ void SAL_CALL component_getImplementationEnvironment(
*ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
}
-sal_Bool SAL_CALL component_writeInfo(
- lang::XMultiServiceFactory * pServiceManager,
- registry::XRegistryKey * pRegistryKey )
-{
- return component_writeInfoHelper(
- pServiceManager, pRegistryKey, dp_gui::serviceDecl, dp_gui::licenseDecl, dp_gui::updateDecl );
-}
-
void * SAL_CALL component_getFactory(
sal_Char const * pImplName,
lang::XMultiServiceFactory * pServiceManager,
diff --git a/desktop/source/deployment/gui/dp_gui_shared.hxx b/desktop/source/deployment/gui/dp_gui_shared.hxx
index af3a0bd5b9..dcee2863cd 100644
--- a/desktop/source/deployment/gui/dp_gui_shared.hxx
+++ b/desktop/source/deployment/gui/dp_gui_shared.hxx
@@ -55,7 +55,7 @@ struct BrandName : public ::rtl::StaticWithInit<const ::rtl::OUString, BrandName
class DpGuiResId : public ResId
{
public:
- DpGuiResId( USHORT nId ):ResId( nId, *DeploymentGuiResMgr::get() ) {}
+ DpGuiResId( sal_uInt16 nId ):ResId( nId, *DeploymentGuiResMgr::get() ) {}
};
} // namespace dp_gui
diff --git a/desktop/source/deployment/gui/dp_gui_system.cxx b/desktop/source/deployment/gui/dp_gui_system.cxx
deleted file mode 100644
index 0e6416f161..0000000000
--- a/desktop/source/deployment/gui/dp_gui_system.cxx
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_desktop.hxx"
-
-#include "dp_gui_system.hxx"
-#ifdef WNT
-#define WIN32_LEAN_AND_MEAN
-#ifdef _MSC_VER
-#pragma warning(push,1) /* disable warnings within system headers */
-#endif
-#include <windows.h>
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
-#endif
-
-namespace dp_gui {
-
-//We cannot distinguish Vista and 2008 Server
-bool isVista()
-{
-#ifdef WNT
- OSVERSIONINFO osvi;
- ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
- osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
- GetVersionEx(&osvi);
- return osvi.dwMajorVersion >= 6;
-#else
- return false;
-#endif
-}
-
-} //namespace dp_gui
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/source/deployment/gui/dp_gui_system.hxx b/desktop/source/deployment/gui/dp_gui_system.hxx
deleted file mode 100644
index 8c8feb43cf..0000000000
--- a/desktop/source/deployment/gui/dp_gui_system.hxx
+++ /dev/null
@@ -1,40 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DESKTOP_SOURCE_DEPLOYMENT_GUI_DP_GUI_SYSTEM_HXX
-#define INCLUDED_DESKTOP_SOURCE_DEPLOYMENT_GUI_DP_GUI_SYSTEM_HXX
-
-
-/// @HTML
-namespace dp_gui {
-bool isVista();
-
-}
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/source/deployment/gui/dp_gui_theextmgr.cxx b/desktop/source/deployment/gui/dp_gui_theextmgr.cxx
index 564580c520..84e08cbe4e 100644
--- a/desktop/source/deployment/gui/dp_gui_theextmgr.cxx
+++ b/desktop/source/deployment/gui/dp_gui_theextmgr.cxx
@@ -166,7 +166,7 @@ void TheExtensionManager::SetText( const ::rtl::OUString &rTitle )
}
//------------------------------------------------------------------------------
-void TheExtensionManager::ToTop( USHORT nFlags )
+void TheExtensionManager::ToTop( sal_uInt16 nFlags )
{
const SolarMutexGuard guard;
@@ -361,7 +361,7 @@ PackageState TheExtensionManager::getPackageState( const uno::Reference< deploym
}
catch ( uno::Exception & exc) {
(void) exc;
- OSL_ENSURE( 0, ::rtl::OUStringToOString( exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
+ OSL_FAIL( ::rtl::OUStringToOString( exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
return NOT_AVAILABLE;
}
}
diff --git a/desktop/source/deployment/gui/dp_gui_theextmgr.hxx b/desktop/source/deployment/gui/dp_gui_theextmgr.hxx
index 13ba06d0b3..6b1deb7ba9 100644
--- a/desktop/source/deployment/gui/dp_gui_theextmgr.hxx
+++ b/desktop/source/deployment/gui/dp_gui_theextmgr.hxx
@@ -87,7 +87,7 @@ public:
void SetText( const ::rtl::OUString &rTitle );
void Show();
- void ToTop( USHORT nFlags );
+ void ToTop( sal_uInt16 nFlags );
bool Close();
bool isVisible();
diff --git a/desktop/source/deployment/gui/dp_gui_updatedata.hxx b/desktop/source/deployment/gui/dp_gui_updatedata.hxx
index 314f449358..3a43dce5d6 100644
--- a/desktop/source/deployment/gui/dp_gui_updatedata.hxx
+++ b/desktop/source/deployment/gui/dp_gui_updatedata.hxx
@@ -29,6 +29,7 @@
#define INCLUDED_DP_GUI_UPDATEDATA_HXX
#include "sal/config.h"
+#include "tools/solar.h"
#include "rtl/ustring.hxx"
#include "com/sun/star/uno/Reference.hxx"
@@ -81,6 +82,10 @@ struct UpdateData
//are to be ignored.
::com::sun::star::uno::Reference< ::com::sun::star::deployment::XPackage >
aUpdateSource;
+
+ // ID to find this entry in the update listbox
+ sal_uInt16 m_nID;
+ bool m_bIgnored;
};
}
diff --git a/desktop/source/deployment/gui/dp_gui_updatedialog.cxx b/desktop/source/deployment/gui/dp_gui_updatedialog.cxx
index 91f1aff663..8b73e6bae8 100644
--- a/desktop/source/deployment/gui/dp_gui_updatedialog.cxx
+++ b/desktop/source/deployment/gui/dp_gui_updatedialog.cxx
@@ -44,14 +44,15 @@
#include "com/sun/star/awt/WindowAttribute.hpp"
#include "com/sun/star/awt/WindowClass.hpp"
#include "com/sun/star/awt/WindowDescriptor.hpp"
-#include "com/sun/star/awt/XThrobber.hpp"
#include "com/sun/star/awt/XToolkit.hpp"
#include "com/sun/star/awt/XWindow.hpp"
#include "com/sun/star/awt/XWindowPeer.hpp"
#include "com/sun/star/beans/NamedValue.hpp"
#include "com/sun/star/beans/Optional.hpp"
#include "com/sun/star/beans/PropertyValue.hpp"
+#include "com/sun/star/beans/XPropertySet.hpp"
#include "com/sun/star/container/XNameAccess.hpp"
+#include "com/sun/star/container/XNameContainer.hpp"
#include "com/sun/star/deployment/DeploymentException.hpp"
#include "com/sun/star/deployment/UpdateInformationProvider.hpp"
#include "com/sun/star/deployment/XPackage.hpp"
@@ -63,6 +64,7 @@
#include "com/sun/star/frame/XDispatchProvider.hpp"
#include "com/sun/star/lang/IllegalArgumentException.hpp"
#include "com/sun/star/lang/XMultiComponentFactory.hpp"
+#include "com/sun/star/lang/XSingleServiceFactory.hpp"
#include "com/sun/star/system/SystemShellExecuteFlags.hpp"
#include "com/sun/star/system/XSystemShellExecute.hpp"
#include "com/sun/star/task/XAbortChannel.hpp"
@@ -77,6 +79,7 @@
#include "com/sun/star/uno/Sequence.hxx"
#include "com/sun/star/uno/XInterface.hpp"
#include "com/sun/star/util/URL.hpp"
+#include "com/sun/star/util/XChangesBatch.hpp"
#include "com/sun/star/util/XURLTransformer.hpp"
#include "com/sun/star/xml/dom/XElement.hpp"
#include "com/sun/star/xml/dom/XNode.hpp"
@@ -121,7 +124,6 @@
#include "dp_gui_updatedata.hxx"
#include "dp_gui_updatedialog.hxx"
#include "dp_gui_shared.hxx"
-#include "dp_gui_system.hxx"
class KeyEvent;
class MouseEvent;
@@ -130,16 +132,23 @@ namespace com { namespace sun { namespace star { namespace uno {
class XComponentContext;
} } } }
-namespace css = ::com::sun::star;
-
+using namespace ::com::sun::star;
using dp_gui::UpdateDialog;
namespace {
static sal_Unicode const LF = 0x000A;
static sal_Unicode const CR = 0x000D;
+static const sal_uInt16 CMD_ENABLE_UPDATE = 1;
+static const sal_uInt16 CMD_IGNORE_UPDATE = 2;
+static const sal_uInt16 CMD_IGNORE_ALL_UPDATES = 3;
+
+#define OUSTR(x) ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(x) )
+
+#define IGNORED_UPDATES OUSTR("/org.openoffice.Office.ExtensionManager/ExtensionUpdateData/IgnoredUpdates")
+#define PROPERTY_VERSION OUSTR("Version")
-enum Kind { ENABLED_UPDATE, DISABLED_UPDATE, GENERAL_ERROR, SPECIFIC_ERROR };
+enum Kind { ENABLED_UPDATE, DISABLED_UPDATE, SPECIFIC_ERROR };
rtl::OUString confineToParagraph(rtl::OUString const & text) {
// Confine arbitrary text to a single paragraph in a dp_gui::AutoScrollEdit.
@@ -152,86 +161,64 @@ rtl::OUString confineToParagraph(rtl::OUString const & text) {
struct UpdateDialog::DisabledUpdate {
rtl::OUString name;
- css::uno::Sequence< rtl::OUString > unsatisfiedDependencies;
+ uno::Sequence< rtl::OUString > unsatisfiedDependencies;
// We also want to show release notes and publisher for disabled updates
::com::sun::star::uno::Reference< ::com::sun::star::xml::dom::XNode > aUpdateInfo;
+ sal_uInt16 m_nID;
};
struct UpdateDialog::SpecificError {
rtl::OUString name;
rtl::OUString message;
+ sal_uInt16 m_nID;
};
-union UpdateDialog::IndexUnion{
- std::vector< dp_gui::UpdateData >::size_type enabledUpdate;
- std::vector< UpdateDialog::DisabledUpdate >::size_type disabledUpdate;
- std::vector< rtl::OUString >::size_type generalError;
- std::vector< UpdateDialog::SpecificError >::size_type specificError;
-};
-
-struct UpdateDialog::Index {
- static std::auto_ptr< UpdateDialog::Index const > newEnabledUpdate(
- std::vector< dp_gui::UpdateData >::size_type n);
-
- static std::auto_ptr< UpdateDialog::Index const > newDisabledUpdate(
- std::vector< UpdateDialog::DisabledUpdate >::size_type n);
+//------------------------------------------------------------------------------
+struct UpdateDialog::IgnoredUpdate {
+ rtl::OUString sExtensionID;
+ rtl::OUString sVersion;
+ bool bRemoved;
- static std::auto_ptr< UpdateDialog::Index const > newGeneralError(
- std::vector< rtl::OUString >::size_type n);
-
- static std::auto_ptr< UpdateDialog::Index const > newSpecificError(
- std::vector< UpdateDialog::SpecificError >::size_type n);
-
- Kind kind;
- IndexUnion index;
-
-private:
- explicit Index(Kind theKind);
+ IgnoredUpdate( const rtl::OUString &rExtensionID, const rtl::OUString &rVersion );
};
-std::auto_ptr< UpdateDialog::Index const >
-UpdateDialog::Index::newEnabledUpdate(
- std::vector< dp_gui::UpdateData >::size_type n)
-{
- UpdateDialog::Index * p = new UpdateDialog::Index(ENABLED_UPDATE);
- p->index.enabledUpdate = n;
- return std::auto_ptr< UpdateDialog::Index const >(p);
-}
-
-std::auto_ptr< UpdateDialog::Index const >
-UpdateDialog::Index::newDisabledUpdate(
- std::vector< UpdateDialog::DisabledUpdate >::size_type n)
-{
- UpdateDialog::Index * p = new UpdateDialog::Index(DISABLED_UPDATE);
- p->index.disabledUpdate = n;
- return std::auto_ptr< UpdateDialog::Index const >(p);
-}
+//------------------------------------------------------------------------------
+UpdateDialog::IgnoredUpdate::IgnoredUpdate( const rtl::OUString &rExtensionID, const rtl::OUString &rVersion ):
+ sExtensionID( rExtensionID ),
+ sVersion( rVersion ),
+ bRemoved( false )
+{}
-std::auto_ptr< UpdateDialog::Index const > UpdateDialog::Index::newGeneralError(
- std::vector< rtl::OUString >::size_type n)
+//------------------------------------------------------------------------------
+struct UpdateDialog::Index
{
- UpdateDialog::Index * p = new UpdateDialog::Index(GENERAL_ERROR);
- p->index.generalError = n;
- return std::auto_ptr< UpdateDialog::Index const >(p);
-}
+ Kind m_eKind;
+ bool m_bIgnored;
+ sal_uInt16 m_nID;
+ sal_uInt16 m_nIndex;
+ rtl::OUString m_aName;
-std::auto_ptr< UpdateDialog::Index const >
-UpdateDialog::Index::newSpecificError(
- std::vector< UpdateDialog::SpecificError >::size_type n)
-{
- UpdateDialog::Index * p = new UpdateDialog::Index(SPECIFIC_ERROR);
- p->index.specificError = n;
- return std::auto_ptr< UpdateDialog::Index const >(p);
-}
+ Index( Kind theKind, sal_uInt16 nID, sal_uInt16 nIndex, const rtl::OUString &rName );
+};
-UpdateDialog::Index::Index(Kind theKind): kind(theKind) {}
+//------------------------------------------------------------------------------
+UpdateDialog::Index::Index( Kind theKind, sal_uInt16 nID, sal_uInt16 nIndex, const rtl::OUString &rName ):
+ m_eKind( theKind ),
+ m_bIgnored( false ),
+ m_nID( nID ),
+ m_nIndex( nIndex ),
+ m_aName( rName )
+{}
+//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
class UpdateDialog::Thread: public dp_gui::Thread {
public:
Thread(
- css::uno::Reference< css::uno::XComponentContext > const & context,
+ uno::Reference< uno::XComponentContext > const & context,
UpdateDialog & dialog,
- const std::vector< css::uno::Reference< css::deployment::XPackage > > & vExtensionList);
+ const std::vector< uno::Reference< deployment::XPackage > > & vExtensionList);
void stop();
@@ -239,43 +226,20 @@ private:
Thread(UpdateDialog::Thread &); // not defined
void operator =(UpdateDialog::Thread &); // not defined
- struct Entry {
- explicit Entry(
- css::uno::Reference< css::deployment::XPackage > const & thePackage,
- rtl::OUString const & theVersion);
-
- css::uno::Reference< css::deployment::XPackage > package;
- rtl::OUString version;
- //Indicates that the extension provides its own update URLs.
- //If this is true, then we must not use the default update
- //URL to find the update information.
- bool bProvidesOwnUpdate;
- css::uno::Reference< css::xml::dom::XNode > info;
- UpdateDialog::DisabledUpdate disableUpdate;
- dp_gui::UpdateData updateData;
- };
-
- // A multimap in case an extension is installed in "user", "shared" or "bundled"
- typedef std::map< rtl::OUString, Entry > Map;
-
virtual ~Thread();
virtual void execute();
void handleSpecificError(
- css::uno::Reference< css::deployment::XPackage > const & package,
- css::uno::Any const & exception) const;
+ uno::Reference< deployment::XPackage > const & package,
+ uno::Any const & exception) const;
- css::uno::Sequence< css::uno::Reference< css::xml::dom::XElement > >
+ uno::Sequence< uno::Reference< xml::dom::XElement > >
getUpdateInformation(
- css::uno::Reference< css::deployment::XPackage > const & package,
- css::uno::Sequence< rtl::OUString > const & urls,
+ uno::Reference< deployment::XPackage > const & package,
+ uno::Sequence< rtl::OUString > const & urls,
rtl::OUString const & identifier) const;
- void getOwnUpdateInformation(
- css::uno::Reference< css::deployment::XPackage > const & package,
- Map * map);
-
::rtl::OUString getUpdateDisplayString(
dp_gui::UpdateData const & data, ::rtl::OUString const & version = ::rtl::OUString()) const;
@@ -285,40 +249,40 @@ private:
dp_gui::UpdateData & out_data) const;
bool update(
- UpdateDialog::DisabledUpdate const & du,
- dp_gui::UpdateData const & data) const;
-
- css::uno::Reference< css::uno::XComponentContext > m_context;
+ UpdateDialog::DisabledUpdate & du,
+ dp_gui::UpdateData & data) const;
+
+ uno::Reference< uno::XComponentContext > m_context;
UpdateDialog & m_dialog;
- std::vector< css::uno::Reference< css::deployment::XPackage > > m_vExtensionList;
- css::uno::Reference< css::deployment::XUpdateInformationProvider > m_updateInformation;
- css::uno::Reference< css::task::XInteractionHandler > m_xInteractionHdl;
+ std::vector< uno::Reference< deployment::XPackage > > m_vExtensionList;
+ uno::Reference< deployment::XUpdateInformationProvider > m_updateInformation;
+ uno::Reference< task::XInteractionHandler > m_xInteractionHdl;
// guarded by Application::GetSolarMutex():
- css::uno::Reference< css::task::XAbortChannel > m_abort;
+ uno::Reference< task::XAbortChannel > m_abort;
bool m_stop;
};
UpdateDialog::Thread::Thread(
- css::uno::Reference< css::uno::XComponentContext > const & context,
+ uno::Reference< uno::XComponentContext > const & context,
UpdateDialog & dialog,
- const std::vector< css::uno::Reference< css::deployment::XPackage > > &vExtensionList):
+ const std::vector< uno::Reference< deployment::XPackage > > &vExtensionList):
m_context(context),
m_dialog(dialog),
m_vExtensionList(vExtensionList),
m_updateInformation(
- css::deployment::UpdateInformationProvider::create(context)),
+ deployment::UpdateInformationProvider::create(context)),
m_stop(false)
{
if( m_context.is() )
{
- css::uno::Reference< css::lang::XMultiComponentFactory > xServiceManager( m_context->getServiceManager() );
+ uno::Reference< lang::XMultiComponentFactory > xServiceManager( m_context->getServiceManager() );
if( xServiceManager.is() )
{
- m_xInteractionHdl = css::uno::Reference< css::task::XInteractionHandler > (
+ m_xInteractionHdl = uno::Reference< task::XInteractionHandler > (
xServiceManager->createInstanceWithContext( OUSTR( "com.sun.star.task.InteractionHandler" ), m_context),
- css::uno::UNO_QUERY );
+ uno::UNO_QUERY );
if ( m_xInteractionHdl.is() )
m_updateInformation->setInteractionHandler( m_xInteractionHdl );
}
@@ -326,7 +290,7 @@ UpdateDialog::Thread::Thread(
}
void UpdateDialog::Thread::stop() {
- css::uno::Reference< css::task::XAbortChannel > abort;
+ uno::Reference< task::XAbortChannel > abort;
{
SolarMutexGuard g;
abort = m_abort;
@@ -338,21 +302,10 @@ void UpdateDialog::Thread::stop() {
m_updateInformation->cancel();
}
-UpdateDialog::Thread::Entry::Entry(
- css::uno::Reference< css::deployment::XPackage > const & thePackage,
- rtl::OUString const & theVersion):
-
- package(thePackage),
- version(theVersion),
- bProvidesOwnUpdate(false),
- updateData(thePackage)
-{
-}
-
UpdateDialog::Thread::~Thread()
{
if ( m_xInteractionHdl.is() )
- m_updateInformation->setInteractionHandler( css::uno::Reference< css::task::XInteractionHandler > () );
+ m_updateInformation->setInteractionHandler( uno::Reference< task::XInteractionHandler > () );
}
void UpdateDialog::Thread::execute()
@@ -363,20 +316,20 @@ void UpdateDialog::Thread::execute()
return;
}
}
- css::uno::Reference<css::deployment::XExtensionManager> extMgr =
- css::deployment::ExtensionManager::get(m_context);
+ uno::Reference<deployment::XExtensionManager> extMgr =
+ deployment::ExtensionManager::get(m_context);
- std::vector<std::pair<css::uno::Reference<css::deployment::XPackage>, css::uno::Any > > errors;
+ std::vector<std::pair<uno::Reference<deployment::XPackage>, uno::Any > > errors;
dp_misc::UpdateInfoMap updateInfoMap = dp_misc::getOnlineUpdateInfos(
m_context, extMgr, m_updateInformation, &m_vExtensionList, errors);
- typedef std::vector<std::pair<css::uno::Reference<css::deployment::XPackage>,
- css::uno::Any> >::const_iterator ITERROR;
- for (ITERROR ite = errors.begin(); ite != errors.end(); ite ++)
+ typedef std::vector<std::pair<uno::Reference<deployment::XPackage>,
+ uno::Any> >::const_iterator ITERROR;
+ for (ITERROR ite = errors.begin(); ite != errors.end(); ++ite )
handleSpecificError(ite->first, ite->second);
- for (dp_misc::UpdateInfoMap::iterator i(updateInfoMap.begin()); i != updateInfoMap.end(); i++)
+ for (dp_misc::UpdateInfoMap::iterator i(updateInfoMap.begin()); i != updateInfoMap.end(); ++i)
{
dp_misc::UpdateInfo const & info = i->second;
UpdateData updateData(info.extension);
@@ -391,13 +344,17 @@ void UpdateDialog::Thread::execute()
rtl::OUString sVersionUser;
rtl::OUString sVersionShared;
rtl::OUString sVersionBundled;
- css::uno::Sequence< css::uno::Reference< css::deployment::XPackage> > extensions;
+ uno::Sequence< uno::Reference< deployment::XPackage> > extensions;
try {
extensions = extMgr->getExtensionsWithSameIdentifier(
dp_misc::getIdentifier(info.extension), info.extension->getName(),
- css::uno::Reference<css::ucb::XCommandEnvironment>());
- } catch (css::lang::IllegalArgumentException& ) {
+ uno::Reference<ucb::XCommandEnvironment>());
+ } catch (lang::IllegalArgumentException& ) {
OSL_ASSERT(0);
+ continue;
+ } catch (css::ucb::CommandFailedException& ) {
+ OSL_ASSERT(0);
+ continue;
}
OSL_ASSERT(extensions.getLength() == 3);
if (extensions[0].is() )
@@ -414,7 +371,7 @@ void UpdateDialog::Thread::execute()
dp_misc::UPDATE_SOURCE sourceShared = dp_misc::isUpdateSharedExtension(
bSharedReadOnly, sVersionShared, sVersionBundled, sOnlineVersion);
- css::uno::Reference<css::deployment::XPackage> updateSource;
+ uno::Reference<deployment::XPackage> updateSource;
if (sourceUser != dp_misc::UPDATE_SOURCE_NONE)
{
if (sourceUser == dp_misc::UPDATE_SOURCE_SHARED)
@@ -453,13 +410,13 @@ void UpdateDialog::Thread::execute()
//Parameter package can be null
void UpdateDialog::Thread::handleSpecificError(
- css::uno::Reference< css::deployment::XPackage > const & package,
- css::uno::Any const & exception) const
+ uno::Reference< deployment::XPackage > const & package,
+ uno::Any const & exception) const
{
UpdateDialog::SpecificError data;
if (package.is())
data.name = package->getDisplayName();
- css::uno::Exception e;
+ uno::Exception e;
if (exception >>= e) {
data.message = e.Message;
}
@@ -501,7 +458,7 @@ void UpdateDialog::Thread::handleSpecificError(
/** out_data will only be filled if all dependencies are ok.
*/
void UpdateDialog::Thread::prepareUpdateData(
- css::uno::Reference< css::xml::dom::XNode > const & updateInfo,
+ uno::Reference< xml::dom::XNode > const & updateInfo,
UpdateDialog::DisabledUpdate & out_du,
dp_gui::UpdateData & out_data) const
{
@@ -509,7 +466,7 @@ void UpdateDialog::Thread::prepareUpdateData(
return;
dp_misc::DescriptionInfoset infoset(m_context, updateInfo);
OSL_ASSERT(infoset.getVersion().getLength() != 0);
- css::uno::Sequence< css::uno::Reference< css::xml::dom::XElement > > ds(
+ uno::Sequence< uno::Reference< xml::dom::XElement > > ds(
dp_misc::Dependencies::check(infoset));
out_du.aUpdateInfo = updateInfo;
@@ -532,8 +489,8 @@ void UpdateDialog::Thread::prepareUpdateData(
}
bool UpdateDialog::Thread::update(
- UpdateDialog::DisabledUpdate const & du,
- dp_gui::UpdateData const & data) const
+ UpdateDialog::DisabledUpdate & du,
+ dp_gui::UpdateData & data) const
{
bool ret = false;
if (du.unsatisfiedDependencies.getLength() == 0)
@@ -555,18 +512,18 @@ bool UpdateDialog::Thread::update(
// UpdateDialog ----------------------------------------------------------
UpdateDialog::UpdateDialog(
- css::uno::Reference< css::uno::XComponentContext > const & context,
+ uno::Reference< uno::XComponentContext > const & context,
Window * parent,
- const std::vector<css::uno::Reference< css::deployment::XPackage > > &vExtensionList,
+ const std::vector<uno::Reference< deployment::XPackage > > &vExtensionList,
std::vector< dp_gui::UpdateData > * updateData):
ModalDialog(parent,DpGuiResId(RID_DLG_UPDATE)),
m_context(context),
m_checking(this, DpGuiResId(RID_DLG_UPDATE_CHECKING)),
+ m_throbber(this, DpGuiResId(RID_DLG_UPDATE_THROBBER)),
m_update(this, DpGuiResId(RID_DLG_UPDATE_UPDATE)),
m_updates(
*this, DpGuiResId(RID_DLG_UPDATE_UPDATES),
- Image(DpGuiResId(RID_DLG_UPDATE_NORMALALERT)),
- Image(DpGuiResId(RID_DLG_UPDATE_HIGHCONTRASTALERT))),
+ Image(DpGuiResId(RID_DLG_UPDATE_NORMALALERT))),
m_all(this, DpGuiResId(RID_DLG_UPDATE_ALL)),
m_description(this, DpGuiResId(RID_DLG_UPDATE_DESCRIPTION)),
m_PublisherLabel(this, DpGuiResId(RID_DLG_UPDATE_PUBLISHER_LABEL)),
@@ -577,7 +534,7 @@ UpdateDialog::UpdateDialog(
m_line(this, DpGuiResId(RID_DLG_UPDATE_LINE)),
m_help(this, DpGuiResId(RID_DLG_UPDATE_HELP)),
m_ok(this, DpGuiResId(RID_DLG_UPDATE_OK)),
- m_cancel(this, DpGuiResId(RID_DLG_UPDATE_CANCEL)),
+ m_close(this, DpGuiResId(RID_DLG_UPDATE_CLOSE)),
m_error(String(DpGuiResId(RID_DLG_UPDATE_ERROR))),
m_none(String(DpGuiResId(RID_DLG_UPDATE_NONE))),
m_noInstallable(String(DpGuiResId(RID_DLG_UPDATE_NOINSTALLABLE))),
@@ -589,105 +546,116 @@ UpdateDialog::UpdateDialog(
m_noDependencyCurVer(String(DpGuiResId(RID_DLG_UPDATE_NODEPENDENCY_CUR_VER))),
m_browserbased(String(DpGuiResId(RID_DLG_UPDATE_BROWSERBASED))),
m_version(String(DpGuiResId(RID_DLG_UPDATE_VERSION))),
+ m_ignoredUpdate(String(DpGuiResId(RID_DLG_UPDATE_IGNORED_UPDATE))),
m_updateData(*updateData),
m_thread(
new UpdateDialog::Thread(
context, *this, vExtensionList)),
m_nFirstLineDelta(0),
- m_nOneLineMissing(0)
+ m_nOneLineMissing(0),
+ m_nLastID(1),
+ m_bModified( false )
// TODO: check!
// ,
// m_extensionManagerDialog(extensionManagerDialog)
{
OSL_ASSERT(updateData != NULL);
- m_xExtensionManager = css::deployment::ExtensionManager::get( context );
+ m_xExtensionManager = deployment::ExtensionManager::get( context );
- css::uno::Reference< css::awt::XToolkit > toolkit;
+ uno::Reference< awt::XToolkit > toolkit;
try {
- toolkit = css::uno::Reference< css::awt::XToolkit >(
- (css::uno::Reference< css::lang::XMultiComponentFactory >(
+ toolkit = uno::Reference< awt::XToolkit >(
+ (uno::Reference< lang::XMultiComponentFactory >(
m_context->getServiceManager(),
- css::uno::UNO_QUERY_THROW)->
+ uno::UNO_QUERY_THROW)->
createInstanceWithContext(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.Toolkit")),
m_context)),
- css::uno::UNO_QUERY_THROW);
- } catch (css::uno::RuntimeException &) {
+ uno::UNO_QUERY_THROW);
+ } catch (uno::RuntimeException &) {
throw;
- } catch (css::uno::Exception & e) {
- throw css::uno::RuntimeException(e.Message, e.Context);
- }
- Control c(this, DpGuiResId(RID_DLG_UPDATE_THROBBER));
- Point pos(c.GetPosPixel());
- Size size(c.GetSizePixel());
- try {
- m_throbber = css::uno::Reference< css::awt::XThrobber >(
- toolkit->createWindow(
- css::awt::WindowDescriptor(
- css::awt::WindowClass_SIMPLE,
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Throbber")),
- GetComponentInterface(), 0,
- css::awt::Rectangle(
- pos.X(), pos.Y(), size.Width(), size.Height()),
- css::awt::WindowAttribute::SHOW)),
- css::uno::UNO_QUERY_THROW);
- } catch (css::lang::IllegalArgumentException & e) {
- throw css::uno::RuntimeException(e.Message, e.Context);
+ } catch (uno::Exception & e) {
+ throw uno::RuntimeException(e.Message, e.Context);
}
m_updates.SetSelectHdl(LINK(this, UpdateDialog, selectionHandler));
m_all.SetToggleHdl(LINK(this, UpdateDialog, allHandler));
m_ok.SetClickHdl(LINK(this, UpdateDialog, okHandler));
- m_cancel.SetClickHdl(LINK(this, UpdateDialog, cancelHandler));
+ m_close.SetClickHdl(LINK(this, UpdateDialog, closeHandler));
if ( ! dp_misc::office_is_running())
m_help.Disable();
FreeResource();
initDescription();
+ getIgnoredUpdates();
}
-UpdateDialog::~UpdateDialog() {
- for (USHORT i = 0; i < m_updates.getItemCount(); ++i) {
- delete static_cast< UpdateDialog::Index const * >(
- m_updates.GetEntryData(i));
+//------------------------------------------------------------------------------
+UpdateDialog::~UpdateDialog()
+{
+ storeIgnoredUpdates();
+
+ for ( std::vector< UpdateDialog::Index* >::iterator i( m_ListboxEntries.begin() ); i != m_ListboxEntries.end(); ++i )
+ {
+ delete (*i);
+ }
+ for ( std::vector< UpdateDialog::IgnoredUpdate* >::iterator i( m_ignoredUpdates.begin() ); i != m_ignoredUpdates.end(); ++i )
+ {
+ delete (*i);
}
}
-BOOL UpdateDialog::Close() {
+//------------------------------------------------------------------------------
+sal_Bool UpdateDialog::Close() {
m_thread->stop();
return ModalDialog::Close();
}
short UpdateDialog::Execute() {
- m_throbber->start();
+ m_throbber.start();
m_thread->launch();
return ModalDialog::Execute();
}
-UpdateDialog::CheckListBox::CheckListBox(
- UpdateDialog & dialog, ResId const & resource,
- Image const & normalStaticImage, Image const & highContrastStaticImage):
- SvxCheckListBox(
- &dialog, resource, normalStaticImage, highContrastStaticImage),
+//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
+UpdateDialog::CheckListBox::CheckListBox( UpdateDialog & dialog, ResId const & resource,
+ Image const & normalStaticImage ):
+ SvxCheckListBox( &dialog, resource, normalStaticImage ),
+ m_ignoreUpdate( String( DpGuiResId( RID_DLG_UPDATE_IGNORE ) ) ),
+ m_ignoreAllUpdates( String( DpGuiResId( RID_DLG_UPDATE_IGNORE_ALL ) ) ),
+ m_enableUpdate( String( DpGuiResId( RID_DLG_UPDATE_ENABLE ) ) ),
m_dialog(dialog)
{}
+//------------------------------------------------------------------------------
UpdateDialog::CheckListBox::~CheckListBox() {}
-USHORT UpdateDialog::CheckListBox::getItemCount() const {
- ULONG i = GetEntryCount();
- OSL_ASSERT(i <= std::numeric_limits< USHORT >::max());
- return sal::static_int_cast< USHORT >(i);
+//------------------------------------------------------------------------------
+sal_uInt16 UpdateDialog::CheckListBox::getItemCount() const {
+ sal_uLong i = GetEntryCount();
+ OSL_ASSERT(i <= std::numeric_limits< sal_uInt16 >::max());
+ return sal::static_int_cast< sal_uInt16 >(i);
}
-void UpdateDialog::CheckListBox::MouseButtonDown(MouseEvent const & event) {
+//------------------------------------------------------------------------------
+void UpdateDialog::CheckListBox::MouseButtonDown( MouseEvent const & event )
+{
// When clicking on a selected entry in an SvxCheckListBox, the entry's
// checkbox is toggled on mouse button down:
- SvxCheckListBox::MouseButtonDown(event);
+ SvxCheckListBox::MouseButtonDown( event );
+
+ if ( event.IsRight() )
+ {
+ handlePopupMenu( event.GetPosPixel() );
+ }
+
m_dialog.enableOk();
}
+//------------------------------------------------------------------------------
void UpdateDialog::CheckListBox::MouseButtonUp(MouseEvent const & event) {
// When clicking on an entry's checkbox in an SvxCheckListBox, the entry's
// checkbox is toggled on mouse button up:
@@ -700,25 +668,82 @@ void UpdateDialog::CheckListBox::KeyInput(KeyEvent const & event) {
m_dialog.enableOk();
}
-void UpdateDialog::insertItem(
- rtl::OUString const & name, USHORT position,
- std::auto_ptr< UpdateDialog::Index const > index, SvLBoxButtonKind kind)
+//------------------------------------------------------------------------------
+void UpdateDialog::CheckListBox::handlePopupMenu( const Point &rPos )
{
- m_updates.InsertEntry(
- name, position,
- const_cast< void * >(static_cast< void const * >(index.release())),
- kind);
- //TODO #i72487#: UpdateDialog::Index potentially leaks as the exception
- // behavior of SvxCheckListBox::InsertEntry is unspecified
+ SvListEntry *pData = GetEntry( rPos );
+
+ if ( pData )
+ {
+ sal_uInt16 nEntryPos = GetSelectEntryPos();
+ UpdateDialog::Index * p = static_cast< UpdateDialog::Index * >( GetEntryData( nEntryPos ) );
+
+ if ( ( p->m_eKind == ENABLED_UPDATE ) || ( p->m_eKind == DISABLED_UPDATE ) )
+ {
+ PopupMenu aPopup;
+
+ if ( p->m_bIgnored )
+ aPopup.InsertItem( CMD_ENABLE_UPDATE, m_enableUpdate );
+ else
+ {
+ aPopup.InsertItem( CMD_IGNORE_UPDATE, m_ignoreUpdate );
+ aPopup.InsertItem( CMD_IGNORE_ALL_UPDATES, m_ignoreAllUpdates );
+ }
+
+ sal_uInt16 aCmd = aPopup.Execute( this, rPos );
+ if ( ( aCmd == CMD_IGNORE_UPDATE ) || ( aCmd == CMD_IGNORE_ALL_UPDATES ) )
+ {
+ p->m_bIgnored = true;
+ if ( p->m_eKind == ENABLED_UPDATE )
+ {
+ RemoveEntry( nEntryPos );
+ m_dialog.addAdditional( p, SvLBoxButtonKind_disabledCheckbox );
+ }
+ if ( aCmd == CMD_IGNORE_UPDATE )
+ m_dialog.setIgnoredUpdate( p, true, false );
+ else
+ m_dialog.setIgnoredUpdate( p, true, true );
+ // TODO: reselect entry to display new description!
+ }
+ else if ( aCmd == CMD_ENABLE_UPDATE )
+ {
+ p->m_bIgnored = false;
+ if ( p->m_eKind == ENABLED_UPDATE )
+ {
+ RemoveEntry( nEntryPos );
+ m_dialog.insertItem( p, SvLBoxButtonKind_enabledCheckbox );
+ }
+ m_dialog.setIgnoredUpdate( p, false, false );
+ }
+ }
+ }
+}
+
+//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
+sal_uInt16 UpdateDialog::insertItem( UpdateDialog::Index *pEntry, SvLBoxButtonKind kind )
+{
+ m_updates.InsertEntry( pEntry->m_aName, LISTBOX_APPEND, static_cast< void * >( pEntry ), kind );
+
+ for ( sal_uInt16 i = m_updates.getItemCount(); i != 0 ; )
+ {
+ i -= 1;
+ UpdateDialog::Index const * p = static_cast< UpdateDialog::Index const * >( m_updates.GetEntryData( i ) );
+ if ( p == pEntry )
+ return i;
+ }
+ OSL_ASSERT(0);
+ return 0;
}
-void UpdateDialog::addAdditional(
- rtl::OUString const & name, USHORT position,
- std::auto_ptr< UpdateDialog::Index const > index, SvLBoxButtonKind kind)
+//------------------------------------------------------------------------------
+void UpdateDialog::addAdditional( UpdateDialog::Index * index, SvLBoxButtonKind kind )
{
m_all.Enable();
- if (m_all.IsChecked()) {
- insertItem(name, position, index, kind);
+ if (m_all.IsChecked())
+ {
+ insertItem( index, kind );
m_update.Enable();
m_updates.Enable();
m_description.Enable();
@@ -726,60 +751,80 @@ void UpdateDialog::addAdditional(
}
}
-void UpdateDialog::addEnabledUpdate(
- rtl::OUString const & name, dp_gui::UpdateData const & data)
+//------------------------------------------------------------------------------
+void UpdateDialog::addEnabledUpdate( rtl::OUString const & name,
+ dp_gui::UpdateData & data )
{
- std::vector< dp_gui::UpdateData >::size_type n = m_enabledUpdates.size();
- m_enabledUpdates.push_back(data);
- insertItem(
- name, sal::static_int_cast< USHORT >(n),
- UpdateDialog::Index::newEnabledUpdate(n),
- SvLBoxButtonKind_enabledCheckbox);
- // position overflow is rather harmless
- m_updates.CheckEntryPos(sal::static_int_cast< USHORT >(n));
- //TODO #i72487#: fragile computation; insertItem should instead return
- // pos
+ sal_uInt16 nIndex = sal::static_int_cast< sal_uInt16 >( m_enabledUpdates.size() );
+ UpdateDialog::Index *pEntry = new UpdateDialog::Index( ENABLED_UPDATE, m_nLastID, nIndex, name );
+
+ data.m_nID = m_nLastID;
+ m_nLastID += 1;
+
+ m_enabledUpdates.push_back( data );
+ m_ListboxEntries.push_back( pEntry );
+
+ if ( ! isIgnoredUpdate( pEntry ) )
+ {
+ sal_uInt16 nPos = insertItem( pEntry, SvLBoxButtonKind_enabledCheckbox );
+ m_updates.CheckEntryPos( nPos );
+ }
+ else
+ addAdditional( pEntry, SvLBoxButtonKind_disabledCheckbox );
+
m_update.Enable();
m_updates.Enable();
m_description.Enable();
m_descriptions.Enable();
}
-void UpdateDialog::addDisabledUpdate(UpdateDialog::DisabledUpdate const & data)
+//------------------------------------------------------------------------------
+void UpdateDialog::addDisabledUpdate( UpdateDialog::DisabledUpdate & data )
{
- std::vector< UpdateDialog::DisabledUpdate >::size_type n =
- m_disabledUpdates.size();
- m_disabledUpdates.push_back(data);
- addAdditional(
- data.name, sal::static_int_cast< USHORT >(m_enabledUpdates.size() + n),
- UpdateDialog::Index::newDisabledUpdate(n),
- SvLBoxButtonKind_disabledCheckbox);
- // position overflow is rather harmless
+ sal_uInt16 nIndex = sal::static_int_cast< sal_uInt16 >( m_disabledUpdates.size() );
+ UpdateDialog::Index *pEntry = new UpdateDialog::Index( DISABLED_UPDATE, m_nLastID, nIndex, data.name );
+
+ data.m_nID = m_nLastID;
+ m_nLastID += 1;
+
+ m_disabledUpdates.push_back( data );
+ m_ListboxEntries.push_back( pEntry );
+
+ isIgnoredUpdate( pEntry );
+ addAdditional( pEntry, SvLBoxButtonKind_disabledCheckbox );
}
-void UpdateDialog::addSpecificError(UpdateDialog::SpecificError const & data) {
- std::vector< UpdateDialog::SpecificError >::size_type n =
- m_specificErrors.size();
- m_specificErrors.push_back(data);
- addAdditional(
- data.name, LISTBOX_APPEND, UpdateDialog::Index::newSpecificError(n),
- SvLBoxButtonKind_staticImage);
+//------------------------------------------------------------------------------
+void UpdateDialog::addSpecificError( UpdateDialog::SpecificError & data )
+{
+ sal_uInt16 nIndex = sal::static_int_cast< sal_uInt16 >( m_specificErrors.size() );
+ UpdateDialog::Index *pEntry = new UpdateDialog::Index( DISABLED_UPDATE, m_nLastID, nIndex, data.name );
+
+ data.m_nID = m_nLastID;
+ m_nLastID += 1;
+
+ m_specificErrors.push_back( data );
+ m_ListboxEntries.push_back( pEntry );
+
+ addAdditional( pEntry, SvLBoxButtonKind_staticImage);
}
void UpdateDialog::checkingDone() {
m_checking.Hide();
- m_throbber->stop();
- css::uno::Reference< css::awt::XWindow >(
- m_throbber, css::uno::UNO_QUERY_THROW)->setVisible(false);
+ m_throbber.stop();
+ m_throbber.Hide();
if (m_updates.getItemCount() == 0)
{
clearDescription();
m_description.Enable();
m_descriptions.Enable();
- showDescription(
- ( m_disabledUpdates.empty() && m_generalErrors.empty() && m_specificErrors.empty() )
- ? m_none : m_noInstallable, false );
+
+ if ( m_disabledUpdates.empty() && m_specificErrors.empty() && m_ignoredUpdates.empty() )
+ showDescription( m_none, false );
+ else
+ showDescription( m_noInstallable, false );
}
+
enableOk();
}
@@ -791,7 +836,7 @@ void UpdateDialog::enableOk() {
// *********************************************************************************
void UpdateDialog::createNotifyJob( bool bPrepareOnly,
- css::uno::Sequence< css::uno::Sequence< rtl::OUString > > &rItemList )
+ uno::Sequence< uno::Sequence< rtl::OUString > > &rItemList )
{
if ( !dp_misc::office_is_running() )
return;
@@ -799,51 +844,51 @@ void UpdateDialog::createNotifyJob( bool bPrepareOnly,
// notify update check job
try
{
- css::uno::Reference< css::lang::XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
- css::uno::Reference< css::lang::XMultiServiceFactory > xConfigProvider(
+ uno::Reference< lang::XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
+ uno::Reference< lang::XMultiServiceFactory > xConfigProvider(
xFactory->createInstance( OUSTR( "com.sun.star.configuration.ConfigurationProvider" )),
- css::uno::UNO_QUERY_THROW);
+ uno::UNO_QUERY_THROW);
- css::beans::PropertyValue aProperty;
+ beans::PropertyValue aProperty;
aProperty.Name = OUSTR( "nodepath" );
- aProperty.Value = css::uno::makeAny( OUSTR("org.openoffice.Office.Addons/AddonUI/OfficeHelp/UpdateCheckJob") );
+ aProperty.Value = uno::makeAny( OUSTR("org.openoffice.Office.Addons/AddonUI/OfficeHelp/UpdateCheckJob") );
- css::uno::Sequence< css::uno::Any > aArgumentList( 1 );
- aArgumentList[0] = css::uno::makeAny( aProperty );
+ uno::Sequence< uno::Any > aArgumentList( 1 );
+ aArgumentList[0] = uno::makeAny( aProperty );
- css::uno::Reference< css::container::XNameAccess > xNameAccess(
+ uno::Reference< container::XNameAccess > xNameAccess(
xConfigProvider->createInstanceWithArguments(
OUSTR("com.sun.star.configuration.ConfigurationAccess"), aArgumentList ),
- css::uno::UNO_QUERY_THROW );
+ uno::UNO_QUERY_THROW );
- css::util::URL aURL;
+ util::URL aURL;
xNameAccess->getByName(OUSTR("URL")) >>= aURL.Complete;
- css::uno::Reference < css::util::XURLTransformer > xTransformer( xFactory->createInstance( OUSTR( "com.sun.star.util.URLTransformer" ) ),
- css::uno::UNO_QUERY_THROW );
+ uno::Reference < util::XURLTransformer > xTransformer( xFactory->createInstance( OUSTR( "com.sun.star.util.URLTransformer" ) ),
+ uno::UNO_QUERY_THROW );
xTransformer->parseStrict(aURL);
- css::uno::Reference < css::frame::XDesktop > xDesktop( xFactory->createInstance( OUSTR( "com.sun.star.frame.Desktop" ) ),
- css::uno::UNO_QUERY_THROW );
- css::uno::Reference< css::frame::XDispatchProvider > xDispatchProvider( xDesktop->getCurrentFrame(),
- css::uno::UNO_QUERY_THROW );
- css::uno::Reference< css::frame::XDispatch > xDispatch = xDispatchProvider->queryDispatch(aURL, rtl::OUString(), 0);
+ uno::Reference < frame::XDesktop > xDesktop( xFactory->createInstance( OUSTR( "com.sun.star.frame.Desktop" ) ),
+ uno::UNO_QUERY_THROW );
+ uno::Reference< frame::XDispatchProvider > xDispatchProvider( xDesktop->getCurrentFrame(),
+ uno::UNO_QUERY_THROW );
+ uno::Reference< frame::XDispatch > xDispatch = xDispatchProvider->queryDispatch(aURL, rtl::OUString(), 0);
if( xDispatch.is() )
{
- css::uno::Sequence< css::beans::PropertyValue > aPropList(2);
+ uno::Sequence< beans::PropertyValue > aPropList(2);
aProperty.Name = OUSTR( "updateList" );
- aProperty.Value = css::uno::makeAny( rItemList );
+ aProperty.Value = uno::makeAny( rItemList );
aPropList[0] = aProperty;
aProperty.Name = OUSTR( "prepareOnly" );
- aProperty.Value = css::uno::makeAny( bPrepareOnly );
+ aProperty.Value = uno::makeAny( bPrepareOnly );
aPropList[1] = aProperty;
xDispatch->dispatch(aURL, aPropList );
}
}
- catch( const css::uno::Exception& e )
+ catch( const uno::Exception& e )
{
dp_misc::TRACE( OUSTR("Caught exception: ")
+ e.Message + OUSTR("\n thread terminated.\n\n"));
@@ -856,26 +901,26 @@ void UpdateDialog::notifyMenubar( bool bPrepareOnly, bool bRecheckOnly )
if ( !dp_misc::office_is_running() )
return;
- css::uno::Sequence< css::uno::Sequence< rtl::OUString > > aItemList;
- sal_Int32 nCount = 0;
+ uno::Sequence< uno::Sequence< rtl::OUString > > aItemList;
if ( ! bRecheckOnly )
{
+ sal_Int32 nCount = 0;
for ( sal_Int16 i = 0; i < m_updates.getItemCount(); ++i )
{
- css::uno::Sequence< rtl::OUString > aItem(2);
+ uno::Sequence< rtl::OUString > aItem(2);
UpdateDialog::Index const * p = static_cast< UpdateDialog::Index const * >(m_updates.GetEntryData(i));
- if ( p->kind == ENABLED_UPDATE )
+ if ( p->m_eKind == ENABLED_UPDATE )
{
- dp_gui::UpdateData aUpdData = m_enabledUpdates[ p->index.enabledUpdate ];
+ dp_gui::UpdateData aUpdData = m_enabledUpdates[ p->m_nIndex ];
aItem[0] = dp_misc::getIdentifier( aUpdData.aInstalledPackage );
dp_misc::DescriptionInfoset aInfoset( m_context, aUpdData.aUpdateInfo );
aItem[1] = aInfoset.getVersion();
}
- else if ( p->kind == DISABLED_UPDATE )
+ else if ( p->m_eKind == DISABLED_UPDATE )
continue;
else
continue;
@@ -885,6 +930,8 @@ void UpdateDialog::notifyMenubar( bool bPrepareOnly, bool bRecheckOnly )
nCount += 1;
}
}
+
+ storeIgnoredUpdates();
createNotifyJob( bPrepareOnly, aItemList );
}
@@ -958,17 +1005,17 @@ void UpdateDialog::clearDescription()
m_descriptions.SetPosSizePixel( m_aFirstLinePos, m_aFirstLineSize );
}
-bool UpdateDialog::showDescription(css::uno::Reference< css::xml::dom::XNode > const & aUpdateInfo)
+bool UpdateDialog::showDescription(uno::Reference< xml::dom::XNode > const & aUpdateInfo)
{
dp_misc::DescriptionInfoset infoset(m_context, aUpdateInfo);
return showDescription(infoset.getLocalizedPublisherNameAndURL(),
infoset.getLocalizedReleaseNotesURL());
}
-bool UpdateDialog::showDescription(css::uno::Reference< css::deployment::XPackage > const & aExtension)
+bool UpdateDialog::showDescription(uno::Reference< deployment::XPackage > const & aExtension)
{
OSL_ASSERT(aExtension.is());
- css::beans::StringPair pubInfo = aExtension->getPublisherInfo();
+ beans::StringPair pubInfo = aExtension->getPublisherInfo();
return showDescription(std::make_pair(pubInfo.First, pubInfo.Second),
OUSTR(""));
}
@@ -1031,16 +1078,163 @@ bool UpdateDialog::showDescription( const String& rDescription, bool bWithPublis
return true;
}
-bool UpdateDialog::isReadOnly( const css::uno::Reference< css::deployment::XPackage > &xPackage ) const
+//------------------------------------------------------------------------------
+void UpdateDialog::getIgnoredUpdates()
{
- if ( m_xExtensionManager.is() && xPackage.is() )
+ uno::Reference< lang::XMultiServiceFactory > xConfig( m_context->getServiceManager()->createInstanceWithContext(
+ OUSTR("com.sun.star.configuration.ConfigurationProvider"), m_context ), uno::UNO_QUERY_THROW);
+ beans::NamedValue aValue( OUSTR("nodepath"), uno::Any( IGNORED_UPDATES ) );
+ uno::Sequence< uno::Any > args(1);
+ args[0] <<= aValue;
+
+ uno::Reference< container::XNameAccess > xNameAccess( xConfig->createInstanceWithArguments( OUSTR("com.sun.star.configuration.ConfigurationAccess"), args), uno::UNO_QUERY_THROW );
+ uno::Sequence< rtl::OUString > aElementNames = xNameAccess->getElementNames();
+
+ for ( sal_Int32 i = 0; i < aElementNames.getLength(); i++ )
{
- return m_xExtensionManager->isReadOnlyRepository( xPackage->getRepositoryName() );
+ ::rtl::OUString aIdentifier = aElementNames[i];
+ ::rtl::OUString aVersion;
+
+ uno::Any aPropValue( uno::Reference< beans::XPropertySet >( xNameAccess->getByName( aIdentifier ), uno::UNO_QUERY_THROW )->getPropertyValue( PROPERTY_VERSION ) );
+ aPropValue >>= aVersion;
+ IgnoredUpdate *pData = new IgnoredUpdate( aIdentifier, aVersion );
+ m_ignoredUpdates.push_back( pData );
+ }
+}
+
+//------------------------------------------------------------------------------
+void UpdateDialog::storeIgnoredUpdates()
+{
+ if ( m_bModified && ( m_ignoredUpdates.size() != 0 ) )
+ {
+ uno::Reference< lang::XMultiServiceFactory > xConfig( m_context->getServiceManager()->createInstanceWithContext(
+ OUSTR("com.sun.star.configuration.ConfigurationProvider"), m_context ), uno::UNO_QUERY_THROW );
+ beans::NamedValue aValue( OUSTR("nodepath"), uno::Any( IGNORED_UPDATES ) );
+ uno::Sequence< uno::Any > args(1);
+ args[0] <<= aValue;
+
+ uno::Reference< container::XNameContainer > xNameContainer( xConfig->createInstanceWithArguments(
+ OUSTR("com.sun.star.configuration.ConfigurationUpdateAccess"), args ), uno::UNO_QUERY_THROW );
+
+ for ( std::vector< UpdateDialog::IgnoredUpdate* >::iterator i( m_ignoredUpdates.begin() ); i != m_ignoredUpdates.end(); ++i )
+ {
+ if ( xNameContainer->hasByName( (*i)->sExtensionID ) )
+ {
+ if ( (*i)->bRemoved )
+ xNameContainer->removeByName( (*i)->sExtensionID );
+ else
+ uno::Reference< beans::XPropertySet >( xNameContainer->getByName( (*i)->sExtensionID ), uno::UNO_QUERY_THROW )->setPropertyValue( PROPERTY_VERSION, uno::Any( (*i)->sVersion ) );
+ }
+ else if ( ! (*i)->bRemoved )
+ {
+ uno::Reference< beans::XPropertySet > elem( uno::Reference< lang::XSingleServiceFactory >( xNameContainer, uno::UNO_QUERY_THROW )->createInstance(), uno::UNO_QUERY_THROW );
+ elem->setPropertyValue( PROPERTY_VERSION, uno::Any( (*i)->sVersion ) );
+ xNameContainer->insertByName( (*i)->sExtensionID, uno::Any( elem ) );
+ }
+ }
+
+ uno::Reference< util::XChangesBatch > xChangesBatch( xNameContainer, uno::UNO_QUERY );
+ if ( xChangesBatch.is() && xChangesBatch->hasPendingChanges() )
+ xChangesBatch->commitChanges();
+ }
+
+ m_bModified = false;
+}
+
+//------------------------------------------------------------------------------
+bool UpdateDialog::isIgnoredUpdate( UpdateDialog::Index * index )
+{
+ bool bIsIgnored = false;
+
+ if ( m_ignoredUpdates.size() != 0 )
+ {
+ rtl::OUString aExtensionID;
+ rtl::OUString aVersion;
+
+ if ( index->m_eKind == ENABLED_UPDATE )
+ {
+ dp_gui::UpdateData aUpdData = m_enabledUpdates[ index->m_nIndex ];
+ aExtensionID = dp_misc::getIdentifier( aUpdData.aInstalledPackage );
+ aVersion = aUpdData.updateVersion;
+ }
+ else if ( index->m_eKind == DISABLED_UPDATE )
+ {
+ DisabledUpdate &rData = m_disabledUpdates[ index->m_nIndex ];
+ dp_misc::DescriptionInfoset aInfoset( m_context, rData.aUpdateInfo );
+ ::boost::optional< ::rtl::OUString > aID( aInfoset.getIdentifier() );
+ if ( aID )
+ aExtensionID = *aID;
+ aVersion = aInfoset.getVersion();
+ }
+
+ for ( std::vector< UpdateDialog::IgnoredUpdate* >::iterator i( m_ignoredUpdates.begin() ); i != m_ignoredUpdates.end(); ++i )
+ {
+ if ( (*i)->sExtensionID == aExtensionID )
+ {
+ if ( ( (*i)->sVersion.getLength() == 0 ) || ( (*i)->sVersion == aVersion ) )
+ {
+ bIsIgnored = true;
+ index->m_bIgnored = true;
+ }
+ else // when we find another update of an ignored version, we will remove the old one to keep the ignored list small
+ (*i)->bRemoved = true;
+ break;
+ }
+ }
+ }
+
+ return bIsIgnored;
+}
+
+//------------------------------------------------------------------------------
+void UpdateDialog::setIgnoredUpdate( UpdateDialog::Index *pIndex, bool bIgnore, bool bIgnoreAll )
+{
+ rtl::OUString aExtensionID;
+ rtl::OUString aVersion;
+
+ m_bModified = true;
+
+ if ( pIndex->m_eKind == ENABLED_UPDATE )
+ {
+ dp_gui::UpdateData aUpdData = m_enabledUpdates[ pIndex->m_nIndex ];
+ aExtensionID = dp_misc::getIdentifier( aUpdData.aInstalledPackage );
+ if ( !bIgnoreAll )
+ aVersion = aUpdData.updateVersion;
+ }
+ else if ( pIndex->m_eKind == DISABLED_UPDATE )
+ {
+ DisabledUpdate &rData = m_disabledUpdates[ pIndex->m_nIndex ];
+ dp_misc::DescriptionInfoset aInfoset( m_context, rData.aUpdateInfo );
+ ::boost::optional< ::rtl::OUString > aID( aInfoset.getIdentifier() );
+ if ( aID )
+ aExtensionID = *aID;
+ if ( !bIgnoreAll )
+ aVersion = aInfoset.getVersion();
+ }
+
+ if ( aExtensionID.getLength() )
+ {
+ bool bFound = false;
+ for ( std::vector< UpdateDialog::IgnoredUpdate* >::iterator i( m_ignoredUpdates.begin() ); i != m_ignoredUpdates.end(); ++i )
+ {
+ if ( (*i)->sExtensionID == aExtensionID )
+ {
+ (*i)->sVersion = aVersion;
+ (*i)->bRemoved = !bIgnore;
+ bFound = true;
+ break;
+ }
+ }
+ if ( bIgnore && !bFound )
+ {
+ IgnoredUpdate *pData = new IgnoredUpdate( aExtensionID, aVersion );
+ m_ignoredUpdates.push_back( pData );
+ }
}
- else
- return true;
}
+//------------------------------------------------------------------------------
+
IMPL_LINK(UpdateDialog, selectionHandler, void *, EMPTYARG)
{
rtl::OUStringBuffer b;
@@ -1049,42 +1243,37 @@ IMPL_LINK(UpdateDialog, selectionHandler, void *, EMPTYARG)
m_updates.GetEntryData(m_updates.GetSelectEntryPos()));
clearDescription();
- if (p != NULL)
+ if ( p != NULL )
{
- //When the index is greater or equal than the amount of enabled updates then the "Show all"
- //button is probably checked. Then we show first all enabled and then the disabled
- //updates.
- USHORT pos = m_updates.GetSelectEntryPos();
- const std::vector< dp_gui::UpdateData >::size_type sizeEnabled =
- m_enabledUpdates.size();
- const std::vector< UpdateDialog::DisabledUpdate >::size_type sizeDisabled =
- m_disabledUpdates.size();
- if (pos < sizeEnabled)
- {
- if (m_enabledUpdates[pos].aUpdateSource.is())
- bInserted = showDescription(m_enabledUpdates[pos].aUpdateSource);
- else
- bInserted = showDescription(m_enabledUpdates[pos].aUpdateInfo);
- }
- else if (pos >= sizeEnabled
- && pos < (sizeEnabled + sizeDisabled))
- bInserted = showDescription(m_disabledUpdates[pos - sizeEnabled].aUpdateInfo);
+ sal_uInt16 pos = p->m_nIndex;
- switch (p->kind)
+ switch (p->m_eKind)
{
case ENABLED_UPDATE:
{
- b.append(m_noDescription);
+ if ( m_enabledUpdates[ pos ].aUpdateSource.is() )
+ bInserted = showDescription( m_enabledUpdates[ pos ].aUpdateSource );
+ else
+ bInserted = showDescription( m_enabledUpdates[ pos ].aUpdateInfo );
+
+ if ( p->m_bIgnored )
+ b.append( m_ignoredUpdate );
+
break;
}
case DISABLED_UPDATE:
{
- UpdateDialog::DisabledUpdate & data = m_disabledUpdates[
- p->index.disabledUpdate];
+ bInserted = showDescription( m_disabledUpdates[pos].aUpdateInfo );
+
+ if ( p->m_bIgnored )
+ b.append( m_ignoredUpdate );
+
+ UpdateDialog::DisabledUpdate & data = m_disabledUpdates[ pos ];
if (data.unsatisfiedDependencies.getLength() != 0)
{
// create error string for version mismatch
::rtl::OUString sVersion( RTL_CONSTASCII_USTRINGPARAM("%VERSION") );
+ ::rtl::OUString sProductName( RTL_CONSTASCII_USTRINGPARAM("%PRODUCTNAME") );
sal_Int32 nPos = m_noDependencyCurVer.indexOf( sVersion );
if ( nPos >= 0 )
{
@@ -1092,7 +1281,17 @@ IMPL_LINK(UpdateDialog, selectionHandler, void *, EMPTYARG)
::rtl::Bootstrap::expandMacros(sCurVersion);
m_noDependencyCurVer = m_noDependencyCurVer.replaceAt( nPos, sVersion.getLength(), sCurVersion );
}
-
+ nPos = m_noDependencyCurVer.indexOf( sProductName );
+ if ( nPos >= 0 )
+ {
+ m_noDependencyCurVer = m_noDependencyCurVer.replaceAt( nPos, sProductName.getLength(), BrandName::get() );
+ }
+ nPos = m_noDependency.indexOf( sProductName );
+ if ( nPos >= 0 )
+ {
+ m_noDependency = m_noDependency.replaceAt( nPos, sProductName.getLength(), BrandName::get() );
+ }
+
b.append(m_noInstall);
b.append(LF);
b.append(m_noDependency);
@@ -1113,23 +1312,12 @@ IMPL_LINK(UpdateDialog, selectionHandler, void *, EMPTYARG)
}
break;
}
- case GENERAL_ERROR:
- {
- rtl::OUString & msg = m_generalErrors[p->index.generalError];
- b.append(m_failure);
- b.append(LF);
- b.append(msg.getLength() == 0 ? m_unknownError : msg);
- break;
- }
case SPECIFIC_ERROR:
{
- UpdateDialog::SpecificError & data = m_specificErrors[
- p->index.specificError];
+ UpdateDialog::SpecificError & data = m_specificErrors[ pos ];
b.append(m_failure);
b.append(LF);
- b.append(
- data.message.getLength() == 0
- ? m_unknownError : data.message);
+ b.append( data.message.getLength() == 0 ? m_unknownError : data.message );
break;
}
default:
@@ -1138,56 +1326,37 @@ IMPL_LINK(UpdateDialog, selectionHandler, void *, EMPTYARG)
}
}
+ if ( b.getLength() == 0 )
+ b.append( m_noDescription );
+
showDescription( b.makeStringAndClear(), bInserted );
return 0;
}
-IMPL_LINK(UpdateDialog, allHandler, void *, EMPTYARG) {
- if (m_all.IsChecked()) {
+IMPL_LINK(UpdateDialog, allHandler, void *, EMPTYARG)
+{
+ if (m_all.IsChecked())
+ {
m_update.Enable();
m_updates.Enable();
m_description.Enable();
m_descriptions.Enable();
- std::vector< UpdateDialog::DisabledUpdate >::size_type n1 = 0;
- for (std::vector< UpdateDialog::DisabledUpdate >::iterator i(
- m_disabledUpdates.begin());
- i != m_disabledUpdates.end(); ++i)
- {
- insertItem(
- i->name, LISTBOX_APPEND,
- UpdateDialog::Index::newDisabledUpdate(n1++),
- SvLBoxButtonKind_disabledCheckbox);
- }
- std::vector< rtl::OUString >::size_type n2 = 0;
- for (std::vector< rtl::OUString >::iterator i(m_generalErrors.begin());
- i != m_generalErrors.end(); ++i)
+
+ for (std::vector< UpdateDialog::Index* >::iterator i( m_ListboxEntries.begin() );
+ i != m_ListboxEntries.end(); ++i )
{
- insertItem(
- m_error, LISTBOX_APPEND,
- UpdateDialog::Index::newGeneralError(n2++),
- SvLBoxButtonKind_staticImage);
+ if ( (*i)->m_bIgnored || ( (*i)->m_eKind != ENABLED_UPDATE ) )
+ insertItem( (*i), SvLBoxButtonKind_disabledCheckbox );
}
- std::vector< UpdateDialog::SpecificError >::size_type n3 = 0;
- for (std::vector< UpdateDialog::SpecificError >::iterator i(
- m_specificErrors.begin());
- i != m_specificErrors.end(); ++i)
+ }
+ else
+ {
+ for ( sal_uInt16 i = 0; i < m_updates.getItemCount(); )
{
- insertItem(
- i->name, LISTBOX_APPEND,
- UpdateDialog::Index::newSpecificError(n3++),
- SvLBoxButtonKind_staticImage);
- }
- } else {
- for (USHORT i = 0; i < m_updates.getItemCount();) {
- UpdateDialog::Index const * p =
- static_cast< UpdateDialog::Index const * >(
- m_updates.GetEntryData(i));
- if (p->kind != ENABLED_UPDATE) {
+ UpdateDialog::Index const * p = static_cast< UpdateDialog::Index const * >( m_updates.GetEntryData(i) );
+ if ( p->m_bIgnored || ( p->m_eKind != ENABLED_UPDATE ) )
+ {
m_updates.RemoveEntry(i);
- //TODO #i72487#: UpdateDialog::Index potentially leaks as
- // SvxCheckListBox::RemoveEntry's exception behavior is
- // unspecified
- delete p;
} else {
++i;
}
@@ -1217,16 +1386,15 @@ IMPL_LINK(UpdateDialog, okHandler, void *, EMPTYARG)
OSL_ASSERT(i->aInstalledPackage.is());
//If the user has no write access to the shared folder then the update
//for a shared extension is disable, that is it cannot be in m_enabledUpdates
-// OSL_ASSERT(isReadOnly(i->aInstalledPackage) == sal_False);
}
- for (USHORT i = 0; i < m_updates.getItemCount(); ++i) {
+ for (sal_uInt16 i = 0; i < m_updates.getItemCount(); ++i) {
UpdateDialog::Index const * p =
static_cast< UpdateDialog::Index const * >(
m_updates.GetEntryData(i));
- if (p->kind == ENABLED_UPDATE && m_updates.IsChecked(i)) {
- m_updateData.push_back(m_enabledUpdates[p->index.enabledUpdate]);
+ if (p->m_eKind == ENABLED_UPDATE && m_updates.IsChecked(i)) {
+ m_updateData.push_back( m_enabledUpdates[ p->m_nIndex ] );
}
}
@@ -1234,7 +1402,7 @@ IMPL_LINK(UpdateDialog, okHandler, void *, EMPTYARG)
return 0;
}
-IMPL_LINK(UpdateDialog, cancelHandler, void *, EMPTYARG) {
+IMPL_LINK(UpdateDialog, closeHandler, void *, EMPTYARG) {
m_thread->stop();
EndDialog(RET_CANCEL);
return 0;
@@ -1250,15 +1418,15 @@ IMPL_LINK( UpdateDialog, hyperlink_clicked, svt::FixedHyperlink*, pHyperlink )
try
{
- css::uno::Reference< css::system::XSystemShellExecute > xSystemShellExecute(
+ uno::Reference< com::sun::star::system::XSystemShellExecute > xSystemShellExecute(
m_context->getServiceManager()->createInstanceWithContext(
OUSTR( "com.sun.star.system.SystemShellExecute" ),
- m_context), css::uno::UNO_QUERY_THROW);
- //throws css::lang::IllegalArgumentException, css::system::SystemShellExecuteException
+ m_context), uno::UNO_QUERY_THROW);
+ //throws lang::IllegalArgumentException, system::SystemShellExecuteException
xSystemShellExecute->execute(
- sURL, ::rtl::OUString(), css::system::SystemShellExecuteFlags::DEFAULTS);
+ sURL, ::rtl::OUString(), com::sun::star::system::SystemShellExecuteFlags::DEFAULTS);
}
- catch (css::uno::Exception& )
+ catch (uno::Exception& )
{
}
diff --git a/desktop/source/deployment/gui/dp_gui_updatedialog.hxx b/desktop/source/deployment/gui/dp_gui_updatedialog.hxx
index a9a8bcf716..d8fc455600 100644
--- a/desktop/source/deployment/gui/dp_gui_updatedialog.hxx
+++ b/desktop/source/deployment/gui/dp_gui_updatedialog.hxx
@@ -45,6 +45,7 @@
#include "vcl/dialog.hxx"
#include "vcl/fixed.hxx"
#include <svtools/fixedhyper.hxx>
+#include <vcl/throbber.hxx>
#include "descedit.hxx"
#include "dp_gui_updatedata.hxx"
@@ -58,7 +59,6 @@ class ResId;
class Window;
namespace com { namespace sun { namespace star {
- namespace awt { class XThrobber; }
namespace deployment { class XExtensionManager;
class XPackage; }
namespace uno { class XComponentContext; }
@@ -97,7 +97,7 @@ public:
~UpdateDialog();
- virtual BOOL Close();
+ virtual sal_Bool Close();
virtual short Execute();
@@ -111,8 +111,7 @@ private:
struct DisabledUpdate;
struct SpecificError;
- union IndexUnion;
- friend union IndexUnion;
+ struct IgnoredUpdate;
struct Index;
friend struct Index;
class Thread;
@@ -122,49 +121,47 @@ private:
public:
CheckListBox(
UpdateDialog & dialog, ResId const & resource,
- Image const & normalStaticImage,
- Image const & highContrastStaticImage);
+ Image const & normalStaticImage);
virtual ~CheckListBox();
- USHORT getItemCount() const;
+ sal_uInt16 getItemCount() const;
private:
CheckListBox(UpdateDialog::CheckListBox &); // not defined
void operator =(UpdateDialog::CheckListBox &); // not defined
virtual void MouseButtonDown(MouseEvent const & event);
-
virtual void MouseButtonUp(MouseEvent const & event);
-
virtual void KeyInput(KeyEvent const & event);
+ void handlePopupMenu( const Point &rPos );
+
+ rtl::OUString m_ignoreUpdate;
+ rtl::OUString m_ignoreAllUpdates;
+ rtl::OUString m_enableUpdate;
UpdateDialog & m_dialog;
};
friend class CheckListBox;
- void insertItem(
- rtl::OUString const & name, USHORT position,
- std::auto_ptr< UpdateDialog::Index const > index,
- SvLBoxButtonKind kind);
+ sal_uInt16 insertItem( UpdateDialog::Index *pIndex, SvLBoxButtonKind kind );
+ void addAdditional( UpdateDialog::Index *pIndex, SvLBoxButtonKind kind );
+ bool isIgnoredUpdate( UpdateDialog::Index *pIndex );
+ void setIgnoredUpdate( UpdateDialog::Index *pIndex, bool bIgnore, bool bIgnoreAll );
- void addAdditional(
- rtl::OUString const & name, USHORT position,
- std::auto_ptr< UpdateDialog::Index const > index,
- SvLBoxButtonKind kind);
-
- void addEnabledUpdate(
- rtl::OUString const & name, dp_gui::UpdateData const & data);
-
- void addDisabledUpdate(UpdateDialog::DisabledUpdate const & data);
- void addSpecificError(UpdateDialog::SpecificError const & data);
+ void addEnabledUpdate( rtl::OUString const & name, dp_gui::UpdateData & data );
+ void addDisabledUpdate( UpdateDialog::DisabledUpdate & data );
+ void addSpecificError( UpdateDialog::SpecificError & data );
void checkingDone();
void enableOk();
+ void getIgnoredUpdates();
+ void storeIgnoredUpdates();
+
void initDescription();
void clearDescription();
bool showDescription(::com::sun::star::uno::Reference<
@@ -179,13 +176,13 @@ private:
DECL_LINK(selectionHandler, void *);
DECL_LINK(allHandler, void *);
DECL_LINK(okHandler, void *);
- DECL_LINK(cancelHandler, void *);
+ DECL_LINK(closeHandler, void *);
DECL_LINK(hyperlink_clicked, svt::FixedHyperlink *);
com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
m_context;
FixedText m_checking;
- com::sun::star::uno::Reference< com::sun::star::awt::XThrobber > m_throbber;
+ Throbber m_throbber;
FixedText m_update;
UpdateDialog::CheckListBox m_updates;
CheckBox m_all;
@@ -198,7 +195,7 @@ private:
FixedLine m_line;
HelpButton m_help;
PushButton m_ok;
- CancelButton m_cancel;
+ PushButton m_close;
rtl::OUString m_error;
rtl::OUString m_none;
rtl::OUString m_noInstallable;
@@ -210,18 +207,22 @@ private:
rtl::OUString m_noDependencyCurVer;
rtl::OUString m_browserbased;
rtl::OUString m_version;
+ rtl::OUString m_ignoredUpdate;
std::vector< dp_gui::UpdateData > m_enabledUpdates;
std::vector< UpdateDialog::DisabledUpdate > m_disabledUpdates;
- std::vector< rtl::OUString > m_generalErrors;
std::vector< UpdateDialog::SpecificError > m_specificErrors;
+ std::vector< UpdateDialog::IgnoredUpdate* > m_ignoredUpdates;
+ std::vector< Index* > m_ListboxEntries;
std::vector< dp_gui::UpdateData > & m_updateData;
rtl::Reference< UpdateDialog::Thread > m_thread;
::com::sun::star::uno::Reference< ::com::sun::star::deployment::XExtensionManager > m_xExtensionManager;
- Point m_aFirstLinePos;
- Size m_aFirstLineSize;
- long m_nFirstLineDelta;
- long m_nOneLineMissing;
+ Point m_aFirstLinePos;
+ Size m_aFirstLineSize;
+ long m_nFirstLineDelta;
+ long m_nOneLineMissing;
+ sal_uInt16 m_nLastID;
+ bool m_bModified;
};
}
diff --git a/desktop/source/deployment/gui/dp_gui_updatedialog.src b/desktop/source/deployment/gui/dp_gui_updatedialog.src
index 59539d55c1..c8f7a26c1e 100644
--- a/desktop/source/deployment/gui/dp_gui_updatedialog.src
+++ b/desktop/source/deployment/gui/dp_gui_updatedialog.src
@@ -60,11 +60,11 @@ ModalDialog RID_DLG_UPDATE {
Right = TRUE;
NoLabel = TRUE;
};
- Control RID_DLG_UPDATE_THROBBER {
+ FixedImage RID_DLG_UPDATE_THROBBER {
Pos = MAP_APPFONT(
RSC_SP_DLG_INNERBORDER_LEFT + LOCAL_WIDTH - RSC_CD_FIXEDTEXT_HEIGHT,
RSC_SP_DLG_INNERBORDER_TOP);
- Size = MAP_APPFONT(RSC_CD_FIXEDTEXT_HEIGHT, RSC_CD_FIXEDTEXT_HEIGHT);
+ Size = MAP_APPFONT(RSC_CD_FIXEDTEXT_HEIGHT, RSC_CD_FIXEDTEXT_HEIGHT + 1);
};
FixedText RID_DLG_UPDATE_UPDATE {
Disable = TRUE;
@@ -86,6 +86,7 @@ ModalDialog RID_DLG_UPDATE {
TabStop = TRUE;
};
CheckBox RID_DLG_UPDATE_ALL {
+ HelpID = "desktop:CheckBox:RID_DLG_UPDATE:RID_DLG_UPDATE_ALL";
Disable = TRUE;
Pos = MAP_APPFONT(
RSC_SP_DLG_INNERBORDER_LEFT,
@@ -150,6 +151,7 @@ ModalDialog RID_DLG_UPDATE {
Text[en-US] = "Release Notes";
};
MultiLineEdit RID_DLG_UPDATE_DESCRIPTIONS {
+ HelpID = "desktop:MultiLineEdit:RID_DLG_UPDATE:RID_DLG_UPDATE_DESCRIPTIONS";
Disable = TRUE;
Border = TRUE;
Pos = MAP_APPFONT(
@@ -183,6 +185,7 @@ ModalDialog RID_DLG_UPDATE {
Size = MAP_APPFONT(RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT);
};
PushButton RID_DLG_UPDATE_OK {
+ HelpID = "desktop:PushButton:RID_DLG_UPDATE:RID_DLG_UPDATE_OK";
Disable = TRUE;
Pos = MAP_APPFONT(
(RSC_SP_DLG_INNERBORDER_LEFT + LOCAL_WIDTH - RSC_CD_PUSHBUTTON_WIDTH -
@@ -196,7 +199,7 @@ ModalDialog RID_DLG_UPDATE {
Text[en-US] = "~Install";
DefButton = TRUE;
};
- CancelButton RID_DLG_UPDATE_CANCEL {
+ PushButton RID_DLG_UPDATE_CLOSE {
Pos = MAP_APPFONT(
RSC_SP_DLG_INNERBORDER_LEFT + LOCAL_WIDTH - RSC_CD_PUSHBUTTON_WIDTH,
(RSC_SP_DLG_INNERBORDER_TOP + RSC_CD_FIXEDTEXT_HEIGHT +
@@ -205,6 +208,7 @@ ModalDialog RID_DLG_UPDATE {
RSC_SP_CTRL_DESC_Y + LOCAL_LIST_HEIGHT2 + RSC_SP_FLGR_SPACE_Y +
RSC_CD_FIXEDLINE_HEIGHT + RSC_SP_FLGR_SPACE_Y));
Size = MAP_APPFONT(RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT);
+ Text[en-US] = "Close";
};
Image RID_DLG_UPDATE_NORMALALERT {
@@ -212,11 +216,6 @@ ModalDialog RID_DLG_UPDATE {
File = "caution_12.png";
};
};
- Image RID_DLG_UPDATE_HIGHCONTRASTALERT {
- ImageBitmap = Bitmap {
- File = "caution_12_h.png";
- };
- };
String RID_DLG_UPDATE_ERROR {
Text[en-US] = "Error";
};
@@ -224,7 +223,7 @@ ModalDialog RID_DLG_UPDATE {
Text[en-US] = "No new updates are available.";
};
String RID_DLG_UPDATE_NOINSTALLABLE {
- Text[en-US] = "No installable updates are available. To see all updates, mark the check box 'Show all updates'.";
+ Text[en-US] = "No installable updates are available. To see ignored or disabled updates, mark the check box 'Show all updates'.";
};
String RID_DLG_UPDATE_FAILURE {
Text[en-US] = "An error occurred:";
@@ -233,24 +232,35 @@ ModalDialog RID_DLG_UPDATE {
Text[en-US] = "Unknown error.";
};
String RID_DLG_UPDATE_NODESCRIPTION {
- Text[en-US] = "No descriptions available for this extension.";
+ Text[en-US] = "No more details are available for this update.";
};
String RID_DLG_UPDATE_NOINSTALL {
Text[en-US] = "The extension cannot be updated because:";
};
String RID_DLG_UPDATE_NODEPENDENCY {
- Text[en-US] = "Required OpenOffice.org version doesn't match:";
+ Text[en-US] = "Required %PRODUCTNAME version doesn't match:";
};
String RID_DLG_UPDATE_NODEPENDENCY_CUR_VER {
- Text[en-US] = "You have OpenOffice.org %VERSION";
+ Text[en-US] = "You have %PRODUCTNAME %VERSION";
};
String RID_DLG_UPDATE_BROWSERBASED {
Text[en-US] = "browser based update";
};
-
String RID_DLG_UPDATE_VERSION {
Text[en-US] = "Version";
};
+ String RID_DLG_UPDATE_IGNORE {
+ Text[en-US] = "Ignore this Update";
+ };
+ String RID_DLG_UPDATE_IGNORE_ALL {
+ Text[en-US] = "Ignore all Updates";
+ };
+ String RID_DLG_UPDATE_ENABLE {
+ Text[en-US] = "Enable Updates";
+ };
+ String RID_DLG_UPDATE_IGNORED_UPDATE {
+ Text[en-US] = "This update will be ignored.\n";
+ };
};
WarningBox RID_WARNINGBOX_UPDATE_SHARED_EXTENSION
diff --git a/desktop/source/deployment/gui/dp_gui_updateinstalldialog.cxx b/desktop/source/deployment/gui/dp_gui_updateinstalldialog.cxx
index cfc42aa8d8..ad2baa5d6a 100644
--- a/desktop/source/deployment/gui/dp_gui_updateinstalldialog.cxx
+++ b/desktop/source/deployment/gui/dp_gui_updateinstalldialog.cxx
@@ -262,14 +262,14 @@ UpdateInstallDialog::UpdateInstallDialog(
m_xExtensionManager = css::deployment::ExtensionManager::get( xCtx );
m_cancel.SetClickHdl(LINK(this, UpdateInstallDialog, cancelHandler));
- m_mle_info.EnableCursor(FALSE);
+ m_mle_info.EnableCursor(sal_False);
if ( ! dp_misc::office_is_running())
m_help.Disable();
}
UpdateInstallDialog::~UpdateInstallDialog() {}
-BOOL UpdateInstallDialog::Close()
+sal_Bool UpdateInstallDialog::Close()
{
m_thread->stop();
return ModalDialog::Close();
@@ -377,7 +377,7 @@ void UpdateInstallDialog::Thread::downloadExtensions()
sal_uInt16 count = 0;
typedef std::vector<UpdateData>::iterator It;
- for (It i = m_aVecUpdateData.begin(); i != m_aVecUpdateData.end(); i++)
+ for (It i = m_aVecUpdateData.begin(); i != m_aVecUpdateData.end(); ++i)
{
UpdateData & curData = *i;
@@ -471,7 +471,7 @@ void UpdateInstallDialog::Thread::installExtensions()
sal_uInt16 count = 0;
typedef std::vector<UpdateData>::iterator It;
- for (It i = m_aVecUpdateData.begin(); i != m_aVecUpdateData.end(); i++, count++)
+ for (It i = m_aVecUpdateData.begin(); i != m_aVecUpdateData.end(); ++i, ++count)
{
//update the name of the extension which is to be installed
{
@@ -487,8 +487,6 @@ void UpdateInstallDialog::Thread::installExtensions()
}
m_dialog.m_ft_extension_name.SetText(i->aInstalledPackage->getDisplayName());
}
-// TimeValue v = {1, 0};
-// osl::Thread::wait(v);
bool bError = false;
bool bLicenseDeclined = false;
cssu::Reference<css::deployment::XPackage> xExtension;
diff --git a/desktop/source/deployment/gui/dp_gui_updateinstalldialog.hxx b/desktop/source/deployment/gui/dp_gui_updateinstalldialog.hxx
index a23488bfbf..390e55f9d0 100644
--- a/desktop/source/deployment/gui/dp_gui_updateinstalldialog.hxx
+++ b/desktop/source/deployment/gui/dp_gui_updateinstalldialog.hxx
@@ -80,7 +80,7 @@ public:
~UpdateInstallDialog();
- BOOL Close();
+ sal_Bool Close();
virtual short Execute();
private:
diff --git a/desktop/source/deployment/gui/dp_gui_updateinstalldialog.src b/desktop/source/deployment/gui/dp_gui_updateinstalldialog.src
index 7c43817754..a3ded83be1 100644
--- a/desktop/source/deployment/gui/dp_gui_updateinstalldialog.src
+++ b/desktop/source/deployment/gui/dp_gui_updateinstalldialog.src
@@ -90,6 +90,7 @@ ModalDialog RID_DLG_UPDATEINSTALL {
};
MultiLineEdit RID_DLG_UPDATE_INSTALL_INFO {
+ HelpID = "desktop:MultiLineEdit:RID_DLG_UPDATEINSTALL:RID_DLG_UPDATE_INSTALL_INFO";
Pos = MAP_APPFONT(
RSC_SP_DLG_INNERBORDER_LEFT,
RSC_SP_DLG_INNERBORDER_TOP + RSC_CD_FIXEDTEXT_HEIGHT +
diff --git a/desktop/source/deployment/gui/license_dialog.cxx b/desktop/source/deployment/gui/license_dialog.cxx
index 9fd55d2938..907fb66890 100644
--- a/desktop/source/deployment/gui/license_dialog.cxx
+++ b/desktop/source/deployment/gui/license_dialog.cxx
@@ -2,7 +2,7 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
+ *
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
@@ -63,7 +63,7 @@ namespace dp_gui {
class LicenseView : public MultiLineEdit, public SfxListener
{
- BOOL mbEndReached;
+ sal_Bool mbEndReached;
Link maEndReachedHdl;
Link maScrolledHdl;
@@ -73,9 +73,9 @@ public:
void ScrollDown( ScrollType eScroll );
- BOOL IsEndReached() const;
- BOOL EndReached() const { return mbEndReached; }
- void SetEndReached( BOOL bEnd ) { mbEndReached = bEnd; }
+ sal_Bool IsEndReached() const;
+ sal_Bool EndReached() const { return mbEndReached; }
+ void SetEndReached( sal_Bool bEnd ) { mbEndReached = bEnd; }
void SetEndReachedHdl( const Link& rHdl ) { maEndReachedHdl = rHdl; }
const Link& GetAutocompleteHdl() const { return maEndReachedHdl; }
@@ -90,7 +90,7 @@ protected:
};
struct LicenseDialogImpl : public ModalDialog
-{
+{
cssu::Reference<cssu::XComponentContext> m_xComponentContext;
FixedText m_ftHead;
FixedText m_ftBody1;
@@ -146,20 +146,20 @@ void LicenseView::ScrollDown( ScrollType eScroll )
pScroll->DoScrollAction( eScroll );
}
-BOOL LicenseView::IsEndReached() const
+sal_Bool LicenseView::IsEndReached() const
{
- BOOL bEndReached;
+ sal_Bool bEndReached;
ExtTextView* pView = GetTextView();
ExtTextEngine* pEdit = GetTextEngine();
- ULONG nHeight = pEdit->GetTextHeight();
+ sal_uLong nHeight = pEdit->GetTextHeight();
Size aOutSize = pView->GetWindow()->GetOutputSizePixel();
Point aBottom( 0, aOutSize.Height() );
- if ( (ULONG) pView->GetDocPos( aBottom ).Y() >= nHeight - 1 )
- bEndReached = TRUE;
+ if ( (sal_uLong) pView->GetDocPos( aBottom ).Y() >= nHeight - 1 )
+ bEndReached = sal_True;
else
- bEndReached = FALSE;
+ bEndReached = sal_False;
return bEndReached;
}
@@ -168,8 +168,8 @@ void LicenseView::Notify( SfxBroadcaster&, const SfxHint& rHint )
{
if ( rHint.IsA( TYPE(TextHint) ) )
{
- BOOL bLastVal = EndReached();
- ULONG nId = ((const TextHint&)rHint).GetId();
+ sal_Bool bLastVal = EndReached();
+ sal_uLong nId = ((const TextHint&)rHint).GetId();
if ( nId == TEXT_HINT_PARAINSERTED )
{
@@ -215,13 +215,6 @@ LicenseDialogImpl::LicenseDialogImpl(
{
- if (GetSettings().GetStyleSettings().GetHighContrastMode())
- {
- // high contrast mode needs other images
- m_fiArrow1.SetImage(Image(DpGuiResId(IMG_LICENCE_ARROW_HC)));
- m_fiArrow2.SetImage(Image(DpGuiResId(IMG_LICENCE_ARROW_HC)));
- }
-
FreeResource();
m_acceptButton.SetUniqueId(UID_BTN_LICENSE_ACCEPT);
diff --git a/desktop/source/deployment/gui/license_dialog.hxx b/desktop/source/deployment/gui/license_dialog.hxx
index 7e7a8592e6..ec63ffbfbb 100644
--- a/desktop/source/deployment/gui/license_dialog.hxx
+++ b/desktop/source/deployment/gui/license_dialog.hxx
@@ -45,7 +45,6 @@ namespace dp_gui {
class LicenseDialog
: public ::cppu::WeakImplHelper1<ui::dialogs::XExecutableDialog>
-// task::XJobExecutor>
{
Reference<XComponentContext> const m_xComponentContext;
Reference<awt::XWindow> /* const */ m_parent;
@@ -63,10 +62,6 @@ public:
virtual void SAL_CALL setTitle( OUString const & title )
throw (RuntimeException);
virtual sal_Int16 SAL_CALL execute() throw (RuntimeException);
-
- //// XJobExecutor
- //virtual void SAL_CALL trigger( OUString const & event )
- // throw (RuntimeException);
};
}
#endif
diff --git a/desktop/source/deployment/gui/makefile.mk b/desktop/source/deployment/gui/makefile.mk
index 52092a077a..73ca837925 100644..100755
--- a/desktop/source/deployment/gui/makefile.mk
+++ b/desktop/source/deployment/gui/makefile.mk
@@ -30,7 +30,6 @@ PRJ = ..$/..$/..
PRJNAME = desktop
TARGET = deploymentgui
ENABLE_EXCEPTIONS = TRUE
-#USE_DEFFILE = TRUE
NO_BSYMBOLIC = TRUE
USE_PCH :=
ENABLE_PCH :=
@@ -55,7 +54,6 @@ SLOFILES = \
$(SLO)$/dp_gui_updatedialog.obj \
$(SLO)$/dp_gui_updateinstalldialog.obj \
$(SLO)$/dp_gui_autoscrolledit.obj \
- $(SLO)$/dp_gui_system.obj \
$(SLO)$/dp_gui_extensioncmdqueue.obj \
$(SLO)$/descedit.obj
@@ -88,8 +86,6 @@ SHL1LIBS = $(SLB)$/$(TARGET).lib
SHL1DEF = $(MISC)$/$(SHL1TARGET).def
DEF1NAME = $(SHL1TARGET)
-#DEFLIB1NAME = $(TARGET)
-#DEF1DEPN =
SRS1NAME = $(TARGET)
SRC1FILES = \
@@ -107,3 +103,11 @@ RESLIB1IMAGES= $(PRJ)$/res
.INCLUDE : target.mk
+
+ALLTAR : $(MISC)/deploymentgui.component
+
+$(MISC)/deploymentgui.component .ERRREMOVE : \
+ $(SOLARENV)/bin/createcomponent.xslt deploymentgui.component
+ $(XSLTPROC) --nonet --stringparam uri \
+ '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
+ $(SOLARENV)/bin/createcomponent.xslt deploymentgui.component
diff --git a/desktop/source/deployment/inc/db.hxx b/desktop/source/deployment/inc/db.hxx
index 4f144667a9..3fa3d22679 100644
--- a/desktop/source/deployment/inc/db.hxx
+++ b/desktop/source/deployment/inc/db.hxx
@@ -28,6 +28,8 @@
#ifndef BERKELEYDBPROXY_DB_HXX_
#define BERKELEYDBPROXY_DB_HXX_
+#include <boost/noncopyable.hpp>
+
#ifdef SYSTEM_DB
#include <db.h>
#else
@@ -43,26 +45,12 @@ extern "C" {
typedef void (*db_free_fcn_type)(void *);
}
-
namespace berkeleydbproxy {
class DbEnv;
class Dbc;
class Dbt;
- namespace db_internal
- {
- class Noncopyable
- {
- // not implemented
- Noncopyable(const Noncopyable&);
- void operator=(const Noncopyable&);
- protected:
- Noncopyable() {}
- ~Noncopyable() {}
- };
- }
-
class DESKTOP_DEPLOYMENTMISC_DLLPUBLIC DbException
{
rtl::OString what_;
@@ -78,7 +66,7 @@ namespace berkeleydbproxy {
};
- class DESKTOP_DEPLOYMENTMISC_DLLPUBLIC DbEnv : db_internal::Noncopyable
+ class DESKTOP_DEPLOYMENTMISC_DLLPUBLIC DbEnv : boost::noncopyable
{
friend class Db;
@@ -89,7 +77,7 @@ namespace berkeleydbproxy {
static char *strerror(int);
};
- class DESKTOP_DEPLOYMENTMISC_DLLPUBLIC Db : db_internal::Noncopyable
+ class DESKTOP_DEPLOYMENTMISC_DLLPUBLIC Db : boost::noncopyable
{
private:
DB* m_pDBP;
@@ -116,7 +104,7 @@ namespace berkeleydbproxy {
int cursor(DB_TXN *txnid, Dbc **cursorp, u_int32_t flags);
};
- class DESKTOP_DEPLOYMENTMISC_DLLPUBLIC Dbc : db_internal::Noncopyable
+ class DESKTOP_DEPLOYMENTMISC_DLLPUBLIC Dbc : boost::noncopyable
{
friend class Db;
friend class Dbt;
@@ -156,20 +144,4 @@ namespace berkeleydbproxy {
}
#endif
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/source/deployment/inc/dp_dependencies.hxx b/desktop/source/deployment/inc/dp_dependencies.hxx
index 2e57c06275..f31d5f3084 100644
--- a/desktop/source/deployment/inc/dp_dependencies.hxx
+++ b/desktop/source/deployment/inc/dp_dependencies.hxx
@@ -29,6 +29,7 @@
#ifndef INCLUDED_DESKTOP_SOURCE_DEPLOYMENT_INC_DP_DEPENDENCIES_HXX
#define INCLUDED_DESKTOP_SOURCE_DEPLOYMENT_INC_DP_DEPENDENCIES_HXX
+#include "unotools/configmgr.hxx"
#include "sal/config.h"
#include "com/sun/star/uno/Reference.hxx"
#include "com/sun/star/uno/Sequence.hxx"
@@ -44,6 +45,14 @@ namespace rtl { class OUString; }
namespace dp_misc {
+struct BrandName : public ::rtl::StaticWithInit<const ::rtl::OUString, BrandName> {
+ const ::rtl::OUString operator () () {
+ return ::utl::ConfigManager::GetDirectConfigProperty(
+ ::utl::ConfigManager::PRODUCTNAME ).get< ::rtl::OUString >();
+ }
+};
+
+
/**
Dependency handling.
*/
diff --git a/desktop/source/deployment/inc/dp_interact.h b/desktop/source/deployment/inc/dp_interact.h
index 3aca761c2d..3aca761c2d 100644..100755
--- a/desktop/source/deployment/inc/dp_interact.h
+++ b/desktop/source/deployment/inc/dp_interact.h
diff --git a/desktop/source/deployment/inc/dp_misc.h b/desktop/source/deployment/inc/dp_misc.h
index bbf6d5274b..bbf6d5274b 100644..100755
--- a/desktop/source/deployment/inc/dp_misc.h
+++ b/desktop/source/deployment/inc/dp_misc.h
diff --git a/desktop/source/deployment/inc/dp_misc.mk b/desktop/source/deployment/inc/dp_misc.mk
index 829a6bb96b..829a6bb96b 100644..100755
--- a/desktop/source/deployment/inc/dp_misc.mk
+++ b/desktop/source/deployment/inc/dp_misc.mk
diff --git a/desktop/source/deployment/inc/dp_persmap.h b/desktop/source/deployment/inc/dp_persmap.h
index b1597f3bb5..8af038413a 100644..100755
--- a/desktop/source/deployment/inc/dp_persmap.h
+++ b/desktop/source/deployment/inc/dp_persmap.h
@@ -31,14 +31,14 @@
#include "rtl/ustring.hxx"
#include "db.hxx"
-#include <hash_map>
+#include <boost/unordered_map.hpp>
using namespace berkeleydbproxy;
namespace dp_misc
{
-typedef ::std::hash_map<
+typedef ::boost::unordered_map<
::rtl::OString, ::rtl::OString, ::rtl::OStringHash > t_string2string_map;
//==============================================================================
diff --git a/desktop/source/deployment/inc/dp_resource.h b/desktop/source/deployment/inc/dp_resource.h
index 96fd049207..bd3a4fac82 100644..100755
--- a/desktop/source/deployment/inc/dp_resource.h
+++ b/desktop/source/deployment/inc/dp_resource.h
@@ -40,12 +40,12 @@
namespace dp_misc {
//==============================================================================
-ResId getResId( USHORT id );
+ResId getResId( sal_uInt16 id );
//==============================================================================
-DESKTOP_DEPLOYMENTMISC_DLLPUBLIC String getResourceString( USHORT id );
+DESKTOP_DEPLOYMENTMISC_DLLPUBLIC String getResourceString( sal_uInt16 id );
-template <typename Unique, USHORT id>
+template <typename Unique, sal_uInt16 id>
struct StaticResourceString :
public ::rtl::StaticWithInit<const ::rtl::OUString, Unique> {
const ::rtl::OUString operator () () { return getResourceString(id); }
diff --git a/desktop/source/deployment/inc/dp_ucb.h b/desktop/source/deployment/inc/dp_ucb.h
index c2fcdcd7e0..c2fcdcd7e0 100644..100755
--- a/desktop/source/deployment/inc/dp_ucb.h
+++ b/desktop/source/deployment/inc/dp_ucb.h
diff --git a/desktop/source/deployment/inc/dp_xml.h b/desktop/source/deployment/inc/dp_xml.h
index 376df332fb..376df332fb 100644..100755
--- a/desktop/source/deployment/inc/dp_xml.h
+++ b/desktop/source/deployment/inc/dp_xml.h
diff --git a/desktop/source/deployment/makefile.mk b/desktop/source/deployment/makefile.mk
index 6d83a5c100..877379ad73 100644..100755
--- a/desktop/source/deployment/makefile.mk
+++ b/desktop/source/deployment/makefile.mk
@@ -30,7 +30,6 @@ PRJ = ..$/..
PRJNAME = desktop
TARGET = deployment
ENABLE_EXCEPTIONS = TRUE
-#USE_DEFFILE = TRUE
NO_BSYMBOLIC = TRUE
.IF "$(GUI)"=="OS2"
@@ -110,3 +109,11 @@ RESLIB1SRSFILES += $(SRS)$/deployment_misc.srs
.INCLUDE : target.mk
+
+ALLTAR : $(MISC)/deployment.component
+
+$(MISC)/deployment.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
+ deployment.component
+ $(XSLTPROC) --nonet --stringparam uri \
+ '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
+ $(SOLARENV)/bin/createcomponent.xslt deployment.component
diff --git a/desktop/source/deployment/manager/dp_activepackages.cxx b/desktop/source/deployment/manager/dp_activepackages.cxx
index 950e46174d..94a16f6230 100644
--- a/desktop/source/deployment/manager/dp_activepackages.cxx
+++ b/desktop/source/deployment/manager/dp_activepackages.cxx
@@ -41,7 +41,7 @@
#include "rtl/uri.h"
#include "rtl/uri.hxx"
#include "rtl/ustring.hxx"
-#include <hash_map>
+#include <boost/unordered_map.hpp>
#include "dp_identifier.hxx"
#include "dp_persmap.h"
diff --git a/desktop/source/deployment/manager/dp_commandenvironments.cxx b/desktop/source/deployment/manager/dp_commandenvironments.cxx
index ba32b30898..f8237f3549 100644
--- a/desktop/source/deployment/manager/dp_commandenvironments.cxx
+++ b/desktop/source/deployment/manager/dp_commandenvironments.cxx
@@ -223,7 +223,6 @@ void LicenseCommandEnv::handle(
}
//================================================================================
-//================================================================================
NoLicenseCommandEnv::NoLicenseCommandEnv(
css::uno::Reference< css::task::XInteractionHandler> const & handler):
@@ -250,11 +249,6 @@ void NoLicenseCommandEnv::handle(
handle_(approve, abort, xRequest);
}
-// SilentCheckPrerequisitesCommandEnv::SilentCheckPrerequisitesCommandEnv(
-// css::uno::Reference< css::task::XInteractionHandler> const & handler):
-// BaseCommandEnv(handler)
-// {
-// }
SilentCheckPrerequisitesCommandEnv::SilentCheckPrerequisitesCommandEnv()
{
}
@@ -287,33 +281,7 @@ void SilentCheckPrerequisitesCommandEnv::handle(
m_UnknownException = request;
}
}
-// NoExceptionCommandEnv::NoExceptionCommandEnv(
-// css::uno::Reference< css::task::XInteractionHandler> const & handler,
-// css::uno::Type const & type):
-// BaseCommandEnv(handler),
-// m_type(type)
-// {
-// }
-// // XInteractionHandler
-// void NoExceptionCommandEnv::handle(
-// Reference< task::XInteractionRequest> const & xRequest )
-// throw (uno::RuntimeException)
-// {
-// uno::Any request( xRequest->getRequest() );
-// OSL_ASSERT( request.getValueTypeClass() == uno::TypeClass_EXCEPTION );
-
-// deployment::LicenseException licExc;
-
-// bool approve = false;
-// bool abort = false;
-
-// if (request.getValueType() == m_type)
-// {
-// approve = true;
-// }
-// handle_(approve, abort, xRequest);
-// }
-
-} // namespace dp_manager
+
+}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/source/deployment/manager/dp_commandenvironments.hxx b/desktop/source/deployment/manager/dp_commandenvironments.hxx
index da64628792..59349c469a 100644
--- a/desktop/source/deployment/manager/dp_commandenvironments.hxx
+++ b/desktop/source/deployment/manager/dp_commandenvironments.hxx
@@ -100,7 +100,7 @@ private:
::rtl::OUString m_repository;
bool m_bSuppressLicense;
public:
- LicenseCommandEnv(){};
+ LicenseCommandEnv() : m_bSuppressLicense(false) {};
LicenseCommandEnv(
css::uno::Reference< css::task::XInteractionHandler> const & handler,
bool bSuppressLicense,
@@ -154,22 +154,6 @@ public:
css::uno::Any m_UnknownException;
};
-// class NoExceptionCommandEnv : public BaseCommandEnv
-// {
-// css::uno::Type m_type;
-// public:
-// NoExceptionCommandEnv::NoExceptionCommandEnv(){};
-// NoExceptionCommandEnv::NoExceptionCommandEnv(
-// css::uno::Reference< css::task::XInteractionHandler> const & handler,
-// css::uno::Type const & type);
-
-// // XInteractionHandler
-// virtual void SAL_CALL handle(
-// css::uno::Reference<css::task::XInteractionRequest > const & xRequest )
-// throw (css::uno::RuntimeException);
-
-// };
-
}
#endif
diff --git a/desktop/source/deployment/manager/dp_extensionmanager.cxx b/desktop/source/deployment/manager/dp_extensionmanager.cxx
index 11b38cdc88..e2fe27e12d 100644
--- a/desktop/source/deployment/manager/dp_extensionmanager.cxx
+++ b/desktop/source/deployment/manager/dp_extensionmanager.cxx
@@ -65,7 +65,7 @@
#include "boost/bind.hpp"
#include <list>
-#include <hash_map>
+#include <boost/unordered_map.hpp>
#include <algorithm>
namespace deploy = com::sun::star::deployment;
@@ -78,8 +78,6 @@ namespace beans = com::sun::star::beans;
namespace util = com::sun::star::util;
namespace css = com::sun::star;
-//#define OUSTR(s) rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(s))
-
using ::com::sun::star::uno::Reference;
using ::rtl::OUString;
@@ -90,7 +88,6 @@ struct CompIdentifiers
bool operator() (::std::vector<Reference<deploy::XPackage> > const & a,
::std::vector<Reference<deploy::XPackage> > const & b)
{
-
if (getName(a).compareTo(getName(b)) < 0)
return true;
return false;
@@ -170,7 +167,7 @@ ExtensionRemoveGuard::~ExtensionRemoveGuard()
}
}
-} //end namespace
+}
namespace dp_manager {
@@ -181,13 +178,9 @@ ExtensionManager::ExtensionManager( Reference< uno::XComponentContext > const& x
::cppu::WeakComponentImplHelper1< css::deployment::XExtensionManager >(getMutex()),
m_xContext( xContext )
{
- Reference<deploy::XPackageManagerFactory> xPackageManagerFactory(
- deploy::thePackageManagerFactory::get(m_xContext));
- m_userRepository = xPackageManagerFactory->getPackageManager(OUSTR("user"));
- m_sharedRepository = xPackageManagerFactory->getPackageManager(OUSTR("shared"));
- m_bundledRepository = xPackageManagerFactory->getPackageManager(OUSTR("bundled"));
- m_tmpRepository = xPackageManagerFactory->getPackageManager(OUSTR("tmp"));
-
+ m_xPackageManagerFactory = deploy::thePackageManagerFactory::get(m_xContext);
+ OSL_ASSERT(m_xPackageManagerFactory.is());
+
m_repositoryNames.push_back(OUSTR("user"));
m_repositoryNames.push_back(OUSTR("shared"));
m_repositoryNames.push_back(OUSTR("bundled"));
@@ -199,6 +192,23 @@ ExtensionManager::~ExtensionManager()
{
}
+Reference<deploy::XPackageManager> ExtensionManager::getUserRepository()
+{
+ return m_xPackageManagerFactory->getPackageManager(OUSTR("user"));
+}
+Reference<deploy::XPackageManager> ExtensionManager::getSharedRepository()
+{
+ return m_xPackageManagerFactory->getPackageManager(OUSTR("shared"));
+}
+Reference<deploy::XPackageManager> ExtensionManager::getBundledRepository()
+{
+ return m_xPackageManagerFactory->getPackageManager(OUSTR("bundled"));
+}
+Reference<deploy::XPackageManager> ExtensionManager::getTmpRepository()
+{
+ return m_xPackageManagerFactory->getPackageManager(OUSTR("tmp"));
+}
+
Reference<task::XAbortChannel> ExtensionManager::createAbortChannel()
throw (uno::RuntimeException)
{
@@ -211,11 +221,11 @@ ExtensionManager::getPackageManager(::rtl::OUString const & repository)
{
Reference<deploy::XPackageManager> xPackageManager;
if (repository.equals(OUSTR("user")))
- xPackageManager = m_userRepository;
+ xPackageManager = getUserRepository();
else if (repository.equals(OUSTR("shared")))
- xPackageManager = m_sharedRepository;
+ xPackageManager = getSharedRepository();
else if (repository.equals(OUSTR("bundled")))
- xPackageManager = m_bundledRepository;
+ xPackageManager = getBundledRepository();
else
throw lang::IllegalArgumentException(
OUSTR("No valid repository name provided."),
@@ -227,7 +237,7 @@ ExtensionManager::getPackageManager(::rtl::OUString const & repository)
Enters the XPackage objects into a map. They must be all from the
same repository. The value type of the map is a vector, where each vector
represents an extension with a particular identifier. The first member
- is represents the user extension, the second the shared extension and the
+ represents the user extension, the second the shared extension and the
third the bundled extension.
*/
void ExtensionManager::addExtensionsToMap(
@@ -266,8 +276,8 @@ void ExtensionManager::addExtensionsToMap(
/*
returns a list containing extensions with the same identifier from
- all repositories (user, shared, bundled) If one repository does not
- have this extension, then the list contains an empty Referenc. The list
+ all repositories (user, shared, bundled). If one repository does not
+ have this extension, then the list contains an empty Reference. The list
is ordered according to the priority of the repostories:
1. user
2. shared
@@ -283,29 +293,21 @@ void ExtensionManager::addExtensionsToMap(
{
::std::list<Reference<deploy::XPackage> > extensionList;
- try
- { //will throw an exception if the extension does not exist
- extensionList.push_back(m_userRepository->getDeployedPackage(
- identifier, fileName, Reference<ucb::XCommandEnvironment>()));
- } catch(lang::IllegalArgumentException &)
+ Reference<deploy::XPackageManager> lRepos[] = {
+ getUserRepository(), getSharedRepository(), getBundledRepository() };
+ for (int i(0); i != SAL_N_ELEMENTS(lRepos); ++i)
{
- extensionList.push_back(Reference<deploy::XPackage>());
- }
- try
- {
- extensionList.push_back(m_sharedRepository->getDeployedPackage(
- identifier, fileName, Reference<ucb::XCommandEnvironment>()));
- } catch (lang::IllegalArgumentException &)
- {
- extensionList.push_back(Reference<deploy::XPackage>());
- }
- try
- {
- extensionList.push_back(m_bundledRepository->getDeployedPackage(
- identifier, fileName, Reference<ucb::XCommandEnvironment>()));
- } catch (lang::IllegalArgumentException &)
- {
- extensionList.push_back(Reference<deploy::XPackage>());
+ Reference<deploy::XPackage> xPackage;
+ try
+ {
+ xPackage = lRepos[i]->getDeployedPackage(
+ identifier, fileName, Reference<ucb::XCommandEnvironment>());
+ }
+ catch(lang::IllegalArgumentException &)
+ {
+ // thrown if the extension does not exist in this repository
+ }
+ extensionList.push_back(xPackage);
}
OSL_ASSERT(extensionList.size() == 3);
return extensionList;
@@ -503,7 +505,7 @@ Reference<deploy::XPackage> ExtensionManager::backupExtension(
if (xOldExtension.is())
{
- xBackup = m_tmpRepository->addPackage(
+ xBackup = getTmpRepository()->addPackage(
xOldExtension->getURL(), uno::Sequence<beans::NamedValue>(),
OUString(), Reference<task::XAbortChannel>(), tmpCmdEnv);
@@ -524,7 +526,7 @@ uno::Sequence< Reference<deploy::XPackageTypeInfo> >
ExtensionManager::getSupportedPackageTypes()
throw (uno::RuntimeException)
{
- return m_userRepository->getSupportedPackageTypes();
+ return getUserRepository()->getSupportedPackageTypes();
}
//Do some necessary checks and user interaction. This function does not
//aquire the extension manager mutex and that mutex must not be aquired
@@ -644,9 +646,9 @@ Reference<deploy::XPackage> ExtensionManager::addExtension(
//Determine the repository to use
Reference<deploy::XPackageManager> xPackageManager;
if (repository.equals(OUSTR("user")))
- xPackageManager = m_userRepository;
+ xPackageManager = getUserRepository();
else if (repository.equals(OUSTR("shared")))
- xPackageManager = m_sharedRepository;
+ xPackageManager = getSharedRepository();
else
throw lang::IllegalArgumentException(
OUSTR("No valid repository name provided."),
@@ -659,7 +661,7 @@ Reference<deploy::XPackage> ExtensionManager::addExtension(
getTempExtension(url, xAbortChannel, xCmdEnv);
//Make sure the extension is removed from the tmp repository in case
//of an exception
- ExtensionRemoveGuard tmpExtensionRemoveGuard(xTmpExtension, m_tmpRepository);
+ ExtensionRemoveGuard tmpExtensionRemoveGuard(xTmpExtension, getTmpRepository());
const OUString sIdentifier = dp_misc::getIdentifier(xTmpExtension);
const OUString sFileName = xTmpExtension->getName();
Reference<deploy::XPackage> xOldExtension;
@@ -703,8 +705,8 @@ Reference<deploy::XPackage> ExtensionManager::addExtension(
//the xTmpExtension
//no command environment supplied, only this class shall interact
//with the user!
- xExtensionBackup = m_tmpRepository->importExtension(
- xOldExtension, Reference<task::XAbortChannel>(),
+ xExtensionBackup = getTmpRepository()->importExtension(
+ xOldExtension, Reference<task::XAbortChannel>(),
Reference<ucb::XCommandEnvironment>());
tmpExtensionRemoveGuard.reset(xExtensionBackup);
//xTmpExtension will later be used to check the dependencies
@@ -720,7 +722,7 @@ Reference<deploy::XPackage> ExtensionManager::addExtension(
}
//check again dependencies but prevent user interaction,
//We can disregard the license, because the user must have already
- //accepted it, whe we called checkPrerequisites the first time
+ //accepted it, when we called checkPrerequisites the first time
SilentCheckPrerequisitesCommandEnv * pSilentCommandEnv =
new SilentCheckPrerequisitesCommandEnv();
Reference<ucb::XCommandEnvironment> silentCommandEnv(pSilentCommandEnv);
@@ -856,9 +858,9 @@ void ExtensionManager::removeExtension(
{
//Determine the repository to use
if (repository.equals(OUSTR("user")))
- xPackageManager = m_userRepository;
+ xPackageManager = getUserRepository();
else if (repository.equals(OUSTR("shared")))
- xPackageManager = m_sharedRepository;
+ xPackageManager = getSharedRepository();
else
throw lang::IllegalArgumentException(
OUSTR("No valid repository name provided."),
@@ -917,8 +919,8 @@ void ExtensionManager::removeExtension(
identifier, fileName, bUserDisabled, false,
Reference<task::XAbortChannel>(),
tmpCmdEnv);
-
- m_tmpRepository->removePackage(
+
+ getTmpRepository()->removePackage(
dp_misc::getIdentifier(xExtensionBackup),
xExtensionBackup->getName(), xAbortChannel, xCmdEnv);
fireModified();
@@ -931,7 +933,7 @@ void ExtensionManager::removeExtension(
}
if (xExtensionBackup.is())
- m_tmpRepository->removePackage(
+ getTmpRepository()->removePackage(
dp_misc::getIdentifier(xExtensionBackup),
xExtensionBackup->getName(), xAbortChannel, xCmdEnv);
}
@@ -1158,20 +1160,20 @@ uno::Sequence< uno::Sequence<Reference<deploy::XPackage> > >
id2extensions mapExt;
uno::Sequence<Reference<deploy::XPackage> > userExt =
- m_userRepository->getDeployedPackages(xAbort, xCmdEnv);
+ getUserRepository()->getDeployedPackages(xAbort, xCmdEnv);
addExtensionsToMap(mapExt, userExt, OUSTR("user"));
uno::Sequence<Reference<deploy::XPackage> > sharedExt =
- m_sharedRepository->getDeployedPackages(xAbort, xCmdEnv);
+ getSharedRepository()->getDeployedPackages(xAbort, xCmdEnv);
addExtensionsToMap(mapExt, sharedExt, OUSTR("shared"));
uno::Sequence<Reference<deploy::XPackage> > bundledExt =
- m_bundledRepository->getDeployedPackages(xAbort, xCmdEnv);
+ getBundledRepository()->getDeployedPackages(xAbort, xCmdEnv);
addExtensionsToMap(mapExt, bundledExt, OUSTR("bundled"));
//copy the values of the map to a vector for sorting
::std::vector< ::std::vector<Reference<deploy::XPackage> > >
vecExtensions;
id2extensions::const_iterator mapIt = mapExt.begin();
- for (;mapIt != mapExt.end(); mapIt++)
+ for (;mapIt != mapExt.end(); ++mapIt)
vecExtensions.push_back(mapIt->second);
//sort the element according to the identifier
@@ -1234,7 +1236,7 @@ void ExtensionManager::reinstallDeployedExtensions(
const OUString id = dp_misc::getIdentifier(extensions[ pos ]);
const OUString fileName = extensions[ pos ]->getName();
OSL_ASSERT(id.getLength());
- activateExtension(id, fileName, false, false, xAbortChannel, xCmdEnv );
+ activateExtension(id, fileName, false, true, xAbortChannel, xCmdEnv );
}
catch (lang::DisposedException &)
{
@@ -1258,6 +1260,64 @@ void ExtensionManager::reinstallDeployedExtensions(
}
}
+/** Works on the bundled repository. That is using the variables
+ BUNDLED_EXTENSIONS and BUNDLED_EXTENSIONS_USER.
+ */
+void ExtensionManager::synchronizeBundledPrereg(
+ Reference<task::XAbortChannel> const & xAbortChannel,
+ Reference<ucb::XCommandEnvironment> const & xCmdEnv )
+ throw (deploy::DeploymentException,
+ uno::RuntimeException)
+{
+ try
+ {
+ String sSynchronizingBundled(StrSyncRepository::get());
+ sSynchronizingBundled.SearchAndReplaceAllAscii( "%NAME", OUSTR("bundled"));
+ dp_misc::ProgressLevel progressBundled(xCmdEnv, sSynchronizingBundled);
+
+ Reference<deploy::XPackageManagerFactory> xPackageManagerFactory(
+ deploy::thePackageManagerFactory::get(m_xContext));
+
+ Reference<deploy::XPackageManager> xMgr =
+ xPackageManagerFactory->getPackageManager(OUSTR("bundled_prereg"));
+ xMgr->synchronize(xAbortChannel, xCmdEnv);
+ progressBundled.update(OUSTR("\n\n"));
+
+ uno::Sequence<Reference<deploy::XPackage> > extensions = xMgr->getDeployedPackages(
+ xAbortChannel, xCmdEnv);
+ try
+ {
+ for (sal_Int32 i = 0; i < extensions.getLength(); i++)
+ {
+ extensions[i]->registerPackage(true, xAbortChannel, xCmdEnv);
+ }
+ }
+ catch (...)
+ {
+ OSL_ASSERT(0);
+ }
+ OUString lastSyncBundled(RTL_CONSTASCII_USTRINGPARAM(
+ "$BUNDLED_EXTENSIONS_PREREG/lastsynchronized"));
+ writeLastModified(lastSyncBundled, xCmdEnv);
+
+ } catch (deploy::DeploymentException& ) {
+ throw;
+ } catch (ucb::CommandFailedException & ) {
+ throw;
+ } catch (ucb::CommandAbortedException & ) {
+ throw;
+ } catch (lang::IllegalArgumentException &) {
+ throw;
+ } catch (uno::RuntimeException &) {
+ throw;
+ } catch (...) {
+ uno::Any exc = ::cppu::getCaughtException();
+ throw deploy::DeploymentException(
+ OUSTR("Extension Manager: exception in synchronize"),
+ static_cast<OWeakObject*>(this), exc);
+ }
+}
+
sal_Bool ExtensionManager::synchronize(
Reference<task::XAbortChannel> const & xAbortChannel,
Reference<ucb::XCommandEnvironment> const & xCmdEnv )
@@ -1275,13 +1335,13 @@ sal_Bool ExtensionManager::synchronize(
String sSynchronizingShared(StrSyncRepository::get());
sSynchronizingShared.SearchAndReplaceAllAscii( "%NAME", OUSTR("shared"));
dp_misc::ProgressLevel progressShared(xCmdEnv, sSynchronizingShared);
- bModified = m_sharedRepository->synchronize(xAbortChannel, xCmdEnv);
+ bModified = getSharedRepository()->synchronize(xAbortChannel, xCmdEnv);
progressShared.update(OUSTR("\n\n"));
String sSynchronizingBundled(StrSyncRepository::get());
sSynchronizingBundled.SearchAndReplaceAllAscii( "%NAME", OUSTR("bundled"));
dp_misc::ProgressLevel progressBundled(xCmdEnv, sSynchronizingBundled);
- bModified |= m_bundledRepository->synchronize(xAbortChannel, xCmdEnv);
+ bModified |= getBundledRepository()->synchronize(xAbortChannel, xCmdEnv);
progressBundled.update(OUSTR("\n\n"));
//Always determine the active extension. This is necessary for the
@@ -1308,7 +1368,7 @@ sal_Bool ExtensionManager::synchronize(
{
//We catch the exception, so we can write the lastmodified file
//so we will no repeat this everytime OOo starts.
- OSL_ENSURE(0, "Extensions Manager: synchronize");
+ OSL_FAIL("Extensions Manager: synchronize");
}
OUString lastSyncBundled(RTL_CONSTASCII_USTRINGPARAM(
"$BUNDLED_EXTENSIONS_USER/lastsynchronized"));
@@ -1408,7 +1468,7 @@ Reference<deploy::XPackage> ExtensionManager::getTempExtension(
{
Reference<ucb::XCommandEnvironment> tmpCmdEnvA(new TmpRepositoryCommandEnv());
- Reference<deploy::XPackage> xTmpPackage = m_tmpRepository->addPackage(
+ Reference<deploy::XPackage> xTmpPackage = getTmpRepository()->addPackage(
url, uno::Sequence<beans::NamedValue>(),OUString(), xAbortChannel, tmpCmdEnvA);
if (!xTmpPackage.is())
{
@@ -1439,8 +1499,6 @@ sal_Bool ExtensionManager::isReadOnlyRepository(::rtl::OUString const & reposito
return getPackageManager(repository)->isReadOnly();
}
//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
namespace sdecl = comphelper::service_decl;
sdecl::class_<ExtensionManager> servicePIP;
@@ -1466,7 +1524,7 @@ bool singleton_entries(
}
catch (registry::InvalidRegistryException & exc) {
(void) exc; // avoid warnings
- OSL_ENSURE( 0, ::rtl::OUStringToOString(
+ OSL_FAIL( ::rtl::OUStringToOString(
exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
return false;
}
diff --git a/desktop/source/deployment/manager/dp_extensionmanager.hxx b/desktop/source/deployment/manager/dp_extensionmanager.hxx
index 8677f960ef..7adcf0a201 100644
--- a/desktop/source/deployment/manager/dp_extensionmanager.hxx
+++ b/desktop/source/deployment/manager/dp_extensionmanager.hxx
@@ -45,7 +45,7 @@ namespace css = ::com::sun::star;
namespace dp_manager {
-typedef ::std::hash_map<
+typedef ::boost::unordered_map<
::rtl::OUString,
::std::vector<css::uno::Reference<css::deployment::XPackage> >,
::rtl::OUStringHash > id2extensions;
@@ -200,6 +200,12 @@ public:
css::lang::IllegalArgumentException,
css::uno::RuntimeException);
+ virtual void SAL_CALL synchronizeBundledPrereg(
+ css::uno::Reference<css::task::XAbortChannel> const & xAbortChannel,
+ css::uno::Reference<css::ucb::XCommandEnvironment> const & xCmdEnv )
+ throw (css::deployment::DeploymentException,
+ css::uno::RuntimeException);
+
virtual css::uno::Sequence<css::uno::Reference<css::deployment::XPackage> > SAL_CALL
getExtensionsWithUnacceptedLicenses(
::rtl::OUString const & repository,
@@ -224,12 +230,8 @@ private:
};
css::uno::Reference< css::uno::XComponentContext> m_xContext;
-
- css::uno::Reference<css::deployment::XPackageManager> m_userRepository;
- css::uno::Reference<css::deployment::XPackageManager> m_sharedRepository;
- css::uno::Reference<css::deployment::XPackageManager> m_bundledRepository;
- css::uno::Reference<css::deployment::XPackageManager> m_tmpRepository;
-
+ css::uno::Reference<css::deployment::XPackageManagerFactory> m_xPackageManagerFactory;
+
//only to be used within addExtension
::osl::Mutex m_addMutex;
/* contains the names of all repositories (except tmp) in order of there
@@ -238,6 +240,11 @@ private:
*/
::std::list< ::rtl::OUString > m_repositoryNames;
+ css::uno::Reference<css::deployment::XPackageManager> getUserRepository();
+ css::uno::Reference<css::deployment::XPackageManager> getSharedRepository();
+ css::uno::Reference<css::deployment::XPackageManager> getBundledRepository();
+ css::uno::Reference<css::deployment::XPackageManager> getTmpRepository();
+
bool isUserDisabled(::rtl::OUString const & identifier,
::rtl::OUString const & filename);
diff --git a/desktop/source/deployment/manager/dp_informationprovider.cxx b/desktop/source/deployment/manager/dp_informationprovider.cxx
index 6aaf3739e2..c3e915b108 100644
--- a/desktop/source/deployment/manager/dp_informationprovider.cxx
+++ b/desktop/source/deployment/manager/dp_informationprovider.cxx
@@ -41,9 +41,8 @@
#include "com/sun/star/lang/XServiceInfo.hpp"
#include "com/sun/star/registry/XRegistryKey.hpp"
#include "com/sun/star/task/XAbortChannel.hpp"
-#include "com/sun/star/ucb/CommandFailedException.hpp"
-#include "com/sun/star/ucb/XCommandEnvironment.hpp"
#include "com/sun/star/uno/XComponentContext.hpp"
+#include "com/sun/star/ucb/XCommandEnvironment.hpp"
#include "com/sun/star/xml/dom/XElement.hpp"
#include "com/sun/star/xml/dom/XNode.hpp"
@@ -72,9 +71,8 @@ namespace xml = com::sun::star::xml ;
namespace dp_info {
class PackageInformationProvider :
- public ::cppu::WeakImplHelper3< deployment::XPackageInformationProvider,
- css_ucb::XCommandEnvironment,
- task::XInteractionHandler >
+ public ::cppu::WeakImplHelper1< deployment::XPackageInformationProvider >
+
{
public:
PackageInformationProvider( uno::Reference< uno::XComponentContext >const& xContext);
@@ -83,16 +81,6 @@ class PackageInformationProvider :
static uno::Sequence< rtl::OUString > getServiceNames();
static rtl::OUString getImplName();
- // XInteractionHandler
- virtual void SAL_CALL handle( const uno::Reference< task::XInteractionRequest >& Request )
- throw( uno::RuntimeException );
- // XCommandEnvironment
- virtual uno::Reference< task::XInteractionHandler > SAL_CALL getInteractionHandler()
- throw ( uno::RuntimeException ) { return static_cast<task::XInteractionHandler*>(this); };
-
- virtual uno::Reference< css_ucb::XProgressHandler > SAL_CALL getProgressHandler()
- throw ( uno::RuntimeException ) { return uno::Reference< css_ucb::XProgressHandler >(); };
-
// XPackageInformationProvider
virtual rtl::OUString SAL_CALL getPackageLocation( const rtl::OUString& extensionId )
throw ( uno::RuntimeException );
@@ -126,17 +114,6 @@ PackageInformationProvider::~PackageInformationProvider()
}
//------------------------------------------------------------------------------
-void SAL_CALL PackageInformationProvider::handle( uno::Reference< task::XInteractionRequest > const & rRequest)
- throw (uno::RuntimeException)
-{
- uno::Sequence< uno::Reference< task::XInteractionContinuation > > xContinuations = rRequest->getContinuations();
- if ( xContinuations.getLength() == 1 )
- {
- xContinuations[0]->select();
- }
-}
-
-//------------------------------------------------------------------------------
rtl::OUString PackageInformationProvider::getPackageLocation(
const rtl::OUString & repository,
const rtl::OUString& _rExtensionId )
@@ -151,7 +128,7 @@ rtl::OUString PackageInformationProvider::getPackageLocation(
xManager->getDeployedExtensions(
repository,
uno::Reference< task::XAbortChannel >(),
- static_cast < XCommandEnvironment *> (this) ) );
+ uno::Reference< css_ucb::XCommandEnvironment > () ) );
for ( int pos = packages.getLength(); pos--; )
{
@@ -173,8 +150,6 @@ rtl::OUString PackageInformationProvider::getPackageLocation(
}
//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
rtl::OUString SAL_CALL
PackageInformationProvider::getPackageLocation( const rtl::OUString& _sExtensionId )
@@ -241,7 +216,7 @@ PackageInformationProvider::isUpdateAvailable( const rtl::OUString& _sExtensionI
}
int nCount = 0;
- for (dp_misc::UpdateInfoMap::iterator i(updateInfoMap.begin()); i != updateInfoMap.end(); i++)
+ for (dp_misc::UpdateInfoMap::iterator i(updateInfoMap.begin()); i != updateInfoMap.end(); ++i)
{
dp_misc::UpdateInfo const & info = i->second;
@@ -321,7 +296,7 @@ uno::Sequence< uno::Sequence< rtl::OUString > > SAL_CALL PackageInformationProvi
const uno::Sequence< uno::Sequence< uno::Reference<deployment::XPackage > > >
allExt = mgr->getAllExtensions(
uno::Reference< task::XAbortChannel >(),
- static_cast < XCommandEnvironment *> (this) );
+ uno::Reference< css_ucb::XCommandEnvironment > () );
uno::Sequence< uno::Sequence< rtl::OUString > > retList;
@@ -356,8 +331,6 @@ uno::Sequence< uno::Sequence< rtl::OUString > > SAL_CALL PackageInformationProvi
//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
namespace sdecl = comphelper::service_decl;
sdecl::class_<PackageInformationProvider> servicePIP;
@@ -383,7 +356,7 @@ bool singleton_entries(
}
catch (registry::InvalidRegistryException & exc) {
(void) exc; // avoid warnings
- OSL_ENSURE( 0, ::rtl::OUStringToOString(
+ OSL_FAIL( ::rtl::OUStringToOString(
exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
return false;
}
diff --git a/desktop/source/deployment/manager/dp_manager.cxx b/desktop/source/deployment/manager/dp_manager.cxx
index 3b7432ae80..17b65f1ded 100644
--- a/desktop/source/deployment/manager/dp_manager.cxx
+++ b/desktop/source/deployment/manager/dp_manager.cxx
@@ -64,6 +64,7 @@
#include "com/sun/star/ucb/UnsupportedCommandException.hpp"
#include "boost/bind.hpp"
#include "tools/urlobj.hxx"
+#include "unotools/tempfile.hxx"
#include "osl/file.hxx"
#include <vector>
@@ -371,6 +372,24 @@ Reference<deployment::XPackageManager> PackageManagerImpl::create(
//No stamp file. We assume that bundled is always readonly. It must not be
//modified from ExtensionManager but only by the installer
}
+ else if (context.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("bundled_prereg") )) {
+ //This is a bundled repository but the registration data
+ //is in the brand layer: share/prereg
+ //It is special because the registration data are copied at the first startup
+ //into the user installation. The processed help and xcu files are not
+ //copied. Instead the backenddb.xml for the help backend references the help
+ //by using $BUNDLED_EXTENSION_PREREG instead $BUNDLED_EXTENSIONS_USER. The
+ //configmgr.ini also used $BUNDLED_EXTENSIONS_PREREG to refer to the xcu file
+ //which contain the replacement for %origin%.
+ that->m_activePackages = OUSTR(
+ "vnd.sun.star.expand:$BUNDLED_EXTENSIONS");
+ that->m_registrationData = OUSTR(
+ "vnd.sun.star.expand:$BUNDLED_EXTENSIONS_PREREG");
+ that->m_registryCache = OUSTR(
+ "vnd.sun.star.expand:$BUNDLED_EXTENSIONS_PREREG/registry");
+ logFile = OUSTR(
+ "vnd.sun.star.expand:$BUNDLED_EXTENSIONS_PREREG/log.txt");
+ }
else if (context.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("tmp") )) {
that->m_activePackages = OUSTR(
"vnd.sun.star.expand:$TMP_EXTENSIONS/extensions");
@@ -603,7 +622,7 @@ OUString PackageManagerImpl::detectMediaType(
if (throw_exc)
throw;
(void) exc;
- OSL_ENSURE( 0, ::rtl::OUStringToOString(
+ OSL_FAIL( ::rtl::OUStringToOString(
exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
}
}
@@ -619,21 +638,12 @@ OUString PackageManagerImpl::insertToActivationLayer(
::ucbhelper::Content sourceContent(sourceContent_);
Reference<XCommandEnvironment> xCmdEnv(
sourceContent.getCommandEnvironment() );
- OUString destFolder, tempEntry;
- if (::osl::File::createTempFile(
- m_activePackages_expanded.getLength() == 0
- ? 0 : &m_activePackages_expanded,
- 0, &tempEntry ) != ::osl::File::E_None)
- throw RuntimeException(
- OUSTR("::osl::File::createTempFile() failed!"), 0 );
- if (m_activePackages_expanded.getLength() == 0) {
- destFolder = tempEntry;
- }
- else {
- tempEntry = tempEntry.copy( tempEntry.lastIndexOf( '/' ) + 1 );
- // tweak user|share to macrofied url:
- destFolder = makeURL( m_activePackages, tempEntry );
- }
+
+ String baseDir(m_activePackages_expanded);
+ ::utl::TempFile aTemp(&baseDir, sal_False);
+ OUString tempEntry = aTemp.GetURL();
+ tempEntry = tempEntry.copy(tempEntry.lastIndexOf('/') + 1);
+ OUString destFolder = makeURL( m_activePackages, tempEntry);
destFolder += OUSTR("_");
// prepare activation folder:
@@ -950,6 +960,8 @@ void PackageManagerImpl::removePackage(
contentRemoved.writeStream( xData, true /* replace existing */ );
}
m_activePackagesDB->erase( id, fileName ); // to be removed upon next start
+ //remove any cached data hold by the backend
+ m_xRegistry->packageRemoved(xPackage->getURL(), xPackage->getPackageType()->getMediaType());
}
try_dispose( xPackage );
@@ -990,7 +1002,8 @@ OUString PackageManagerImpl::getDeployPath( ActivePackages::Data const & data )
//The bundled extensions are not contained in an additional folder
//with a unique name. data.temporaryName contains already the
//UTF8 encoded folder name. See PackageManagerImpl::synchronize
- if (!m_context.equals(OUSTR("bundled")))
+ if (!m_context.equals(OUSTR("bundled"))
+ && !m_context.equals(OUSTR("bundled_prereg")))
{
buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("_/") );
buf.append( ::rtl::Uri::encode( data.fileName, rtl_UriCharClassPchar,
@@ -1076,13 +1089,13 @@ PackageManagerImpl::getDeployedPackages_(
catch (lang::IllegalArgumentException & exc) {
// ignore
(void) exc; // avoid warnings
- OSL_ENSURE( 0, ::rtl::OUStringToOString(
+ OSL_FAIL( ::rtl::OUStringToOString(
exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
}
catch (deployment::DeploymentException& exc) {
// ignore
(void) exc; // avoid warnings
- OSL_ENSURE( 0, ::rtl::OUStringToOString(
+ OSL_FAIL( ::rtl::OUStringToOString(
exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
}
}
@@ -1261,7 +1274,7 @@ bool PackageManagerImpl::synchronizeRemovedExtensions(
typedef ActivePackages::Entries::const_iterator ITActive;
bool bShared = m_context.equals(OUSTR("shared"));
- for (ITActive i = id2temp.begin(); i != id2temp.end(); i++)
+ for (ITActive i = id2temp.begin(); i != id2temp.end(); ++i)
{
try
{
@@ -1305,7 +1318,7 @@ bool PackageManagerImpl::synchronizeRemovedExtensions(
//There may be another extensions at the same place
dp_misc::DescriptionInfoset infoset =
dp_misc::getDescriptionInfoset(url);
- OSL_ENSURE(infoset.hasDescription(),
+ OSL_ENSURE(infoset.hasDescription() && infoset.getIdentifier(),
"Extension Manager: bundled and shared extensions "
"must have an identifer and a version");
if (infoset.hasDescription() &&
@@ -1342,6 +1355,8 @@ bool PackageManagerImpl::synchronizeAddedExtensions(
Reference<css::ucb::XCommandEnvironment> const & xCmdEnv)
{
bool bModified = false;
+ OSL_ASSERT(!m_context.equals(OUSTR("user")));
+
ActivePackages::Entries id2temp( m_activePackagesDB->getEntries() );
//check if the folder exist at all. The shared extension folder
//may not exist for a normal user.
@@ -1367,8 +1382,8 @@ bool PackageManagerImpl::synchronizeAddedExtensions(
//The temporary folders of user and shared have an '_' at then end.
//But the name in ActivePackages.temporaryName is saved without.
OUString title2 = title;
- bool bNotBundled = !m_context.equals(OUSTR("bundled"));
- if (bNotBundled)
+ bool bShared = m_context.equals(OUSTR("shared"));
+ if (bShared)
{
OSL_ASSERT(title2[title2.getLength() -1] == '_');
title2 = title2.copy(0, title2.getLength() -1);
@@ -1390,7 +1405,7 @@ bool PackageManagerImpl::synchronizeAddedExtensions(
// an added extension
OUString url(m_activePackages_expanded + OUSTR("/") + titleEncoded);
OUString sExtFolder;
- if (bNotBundled) //that is, shared
+ if (bShared) //that is, shared
{
//Check if the extension was not "deleted" already which is indicated
//by a xxx.tmpremoved file
@@ -1412,7 +1427,7 @@ bool PackageManagerImpl::synchronizeAddedExtensions(
ActivePackages::Data dbData;
dbData.temporaryName = titleEncoded;
- if (bNotBundled)
+ if (bShared)
dbData.fileName = sExtFolder;
else
dbData.fileName = title;
@@ -1497,7 +1512,7 @@ Sequence< Reference<deployment::XPackage> > PackageManagerImpl::getExtensionsWit
ActivePackages::Entries::const_iterator i = id2temp.begin();
bool bShared = m_context.equals(OUSTR("shared"));
- for (; i != id2temp.end(); i++ )
+ for (; i != id2temp.end(); ++i )
{
//Get the database entry
ActivePackages::Data const & dbData = i->second;
@@ -1604,7 +1619,6 @@ sal_Int32 PackageManagerImpl::checkPrerequisites(
}
}
-//##############################################################################
//______________________________________________________________________________
PackageManagerImpl::CmdEnvWrapperImpl::~CmdEnvWrapperImpl()
diff --git a/desktop/source/deployment/manager/dp_manager.h b/desktop/source/deployment/manager/dp_manager.h
index fa4a9078ac..fa4a9078ac 100644..100755
--- a/desktop/source/deployment/manager/dp_manager.h
+++ b/desktop/source/deployment/manager/dp_manager.h
diff --git a/desktop/source/deployment/manager/dp_manager.hrc b/desktop/source/deployment/manager/dp_manager.hrc
index 3dd89f57cf..3dd89f57cf 100644..100755
--- a/desktop/source/deployment/manager/dp_manager.hrc
+++ b/desktop/source/deployment/manager/dp_manager.hrc
diff --git a/desktop/source/deployment/manager/dp_managerfac.cxx b/desktop/source/deployment/manager/dp_managerfac.cxx
index ccbaadcb8a..b2e51599d9 100644
--- a/desktop/source/deployment/manager/dp_managerfac.cxx
+++ b/desktop/source/deployment/manager/dp_managerfac.cxx
@@ -55,7 +55,7 @@ class PackageManagerFactoryImpl : private MutexHolder, public t_pmfac_helper
Reference<deployment::XPackageManager> m_xUserMgr;
Reference<deployment::XPackageManager> m_xSharedMgr;
Reference<deployment::XPackageManager> m_xBundledMgr;
- typedef ::std::hash_map<
+ typedef ::boost::unordered_map<
OUString, WeakReference<deployment::XPackageManager>,
::rtl::OUStringHash > t_string2weakref;
t_string2weakref m_managers;
@@ -99,7 +99,7 @@ bool singleton_entries(
}
catch (registry::InvalidRegistryException & exc) {
(void) exc; // avoid warnings
- OSL_ENSURE( 0, ::rtl::OUStringToOString(
+ OSL_FAIL( ::rtl::OUStringToOString(
exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
return false;
}
diff --git a/desktop/source/deployment/manager/makefile.mk b/desktop/source/deployment/manager/makefile.mk
index 4dc6405e34..4dc6405e34 100644..100755
--- a/desktop/source/deployment/manager/makefile.mk
+++ b/desktop/source/deployment/manager/makefile.mk
diff --git a/desktop/source/deployment/misc/db.cxx b/desktop/source/deployment/misc/db.cxx
index ce403181ab..e3f64063e8 100644
--- a/desktop/source/deployment/misc/db.cxx
+++ b/desktop/source/deployment/misc/db.cxx
@@ -152,7 +152,6 @@ int Db::del(Dbt *key, u_int32_t flags)
if ((err = db->del(db, 0, key, flags)) != 0) {
// DB_NOTFOUND is a "normal" return, so should not be
// thrown as an error
- //
if (err != DB_NOTFOUND) {
db_internal::check_error(err, "Db::del");
return (err);
diff --git a/desktop/source/deployment/misc/dp_dependencies.cxx b/desktop/source/deployment/misc/dp_dependencies.cxx
index 345e4c248b..5c945df6b2 100644
--- a/desktop/source/deployment/misc/dp_dependencies.cxx
+++ b/desktop/source/deployment/misc/dp_dependencies.cxx
@@ -57,13 +57,25 @@ namespace css = ::com::sun::star;
static char const xmlNamespace[] =
"http://openoffice.org/extensions/description/2006";
-bool satisfiesMinimalVersion(::rtl::OUString const & version) {
- ::rtl::OUString v(
+bool
+lcl_versionIsNot(dp_misc::Order i_eOrder, ::rtl::OUString const& i_rVersion)
+{
+ ::rtl::OUString aVersion(
RTL_CONSTASCII_USTRINGPARAM(
"${$OOO_BASE_DIR/program/" SAL_CONFIGFILE("version")
":Version:OOOPackageVersion}"));
- ::rtl::Bootstrap::expandMacros(v);
- return ::dp_misc::compareVersions(v, version) != ::dp_misc::LESS;
+ ::rtl::Bootstrap::expandMacros(aVersion);
+ return ::dp_misc::compareVersions(aVersion, i_rVersion) != i_eOrder;
+}
+
+bool satisfiesMinimalVersion(::rtl::OUString const& i_rVersion)
+{
+ return lcl_versionIsNot(dp_misc::LESS, i_rVersion);
+}
+
+bool satisfiesMaximalVersion(::rtl::OUString const& i_rVersion)
+{
+ return lcl_versionIsNot(dp_misc::GREATER, i_rVersion);
}
}
@@ -81,14 +93,14 @@ check(::dp_misc::DescriptionInfoset const & infoset) {
unsatisfied(n);
::sal_Int32 unsat = 0;
for (::sal_Int32 i = 0; i < n; ++i) {
- static char const minimalVersion[] = "OpenOffice.org-minimal-version";
+ static rtl::OUString const minimalVersion(
+ RTL_CONSTASCII_USTRINGPARAM("OpenOffice.org-minimal-version"));
css::uno::Reference< css::xml::dom::XElement > e(
deps->item(i), css::uno::UNO_QUERY_THROW);
bool sat = false;
if (e->getNamespaceURI().equalsAsciiL(
RTL_CONSTASCII_STRINGPARAM(xmlNamespace))
- && e->getTagName().equalsAsciiL(
- RTL_CONSTASCII_STRINGPARAM(minimalVersion)))
+ && (e->getTagName() == minimalVersion))
{
sat = satisfiesMinimalVersion(
e->getAttribute(
@@ -99,28 +111,18 @@ check(::dp_misc::DescriptionInfoset const & infoset) {
RTL_CONSTASCII_STRINGPARAM(
"OpenOffice.org-maximal-version")))
{
- ::rtl::OUString v(
- RTL_CONSTASCII_USTRINGPARAM(
- "${$OOO_BASE_DIR/program/" SAL_CONFIGFILE("version")
- ":Version:OOOBaseVersion}"));
- ::rtl::Bootstrap::expandMacros(v);
- sat =
- ::dp_misc::compareVersions(
- v,
+ sat = satisfiesMaximalVersion(
e->getAttribute(
- ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("value"))))
- != ::dp_misc::GREATER;
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("value"))));
} else if (e->hasAttributeNS(
::rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM(xmlNamespace)),
- ::rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(minimalVersion))))
+ minimalVersion))
{
sat = satisfiesMinimalVersion(
e->getAttributeNS(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(xmlNamespace)),
- ::rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(minimalVersion))));
+ minimalVersion));
}
if (!sat) {
unsatisfied[unsat++] = e;
@@ -135,6 +137,7 @@ check(::dp_misc::DescriptionInfoset const & infoset) {
::rtl::OUString sReason;
::rtl::OUString sValue;
::rtl::OUString sVersion(RTL_CONSTASCII_USTRINGPARAM("%VERSION"));
+ ::rtl::OUString sProductName(RTL_CONSTASCII_USTRINGPARAM("%PRODUCTNAME"));
if ( dependency->getNamespaceURI().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( xmlNamespace ) )
&& dependency->getTagName().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "OpenOffice.org-minimal-version" ) ) )
@@ -164,6 +167,9 @@ check(::dp_misc::DescriptionInfoset const & infoset) {
sal_Int32 nPos = sReason.indexOf( sVersion );
if ( nPos >= 0 )
sReason = sReason.replaceAt( nPos, sVersion.getLength(), sValue );
+ nPos = sReason.indexOf( sProductName );
+ if ( nPos >= 0 )
+ sReason = sReason.replaceAt( nPos, sProductName.getLength(), BrandName::get() );
return sReason;
}
diff --git a/desktop/source/deployment/misc/dp_descriptioninfoset.cxx b/desktop/source/deployment/misc/dp_descriptioninfoset.cxx
index 0efc0ae091..f42f2365a1 100644
--- a/desktop/source/deployment/misc/dp_descriptioninfoset.cxx
+++ b/desktop/source/deployment/misc/dp_descriptioninfoset.cxx
@@ -128,7 +128,7 @@ class ExtensionDescription
public:
/**throws an exception if the description.xml is not
available, cannot be read, does not contain the expected data,
- or any other error occured. Therefore it shoult only be used with
+ or any other error occurred. Therefore it shoult only be used with
new extensions.
Throws com::sun::star::uno::RuntimeException,
@@ -167,7 +167,6 @@ class FileDoesNotExistFilter
css::task::XInteractionHandler >
{
- //css::uno::Reference<css::task::XInteractionHandler> m_xHandler;
bool m_bExist;
css::uno::Reference< css::ucb::XCommandEnvironment > m_xCommandEnv;
diff --git a/desktop/source/deployment/misc/dp_misc.cxx b/desktop/source/deployment/misc/dp_misc.cxx
index f0ac23d2fb..fd607888e1 100644
--- a/desktop/source/deployment/misc/dp_misc.cxx
+++ b/desktop/source/deployment/misc/dp_misc.cxx
@@ -160,7 +160,7 @@ bool compareExtensionFolderWithLastSynchronizedFile(
}
else if (err1 != ::osl::File::E_None)
{
- OSL_ENSURE(0, "Cannot access extension folder");
+ OSL_FAIL("Cannot access extension folder");
return true; //sync just in case
}
@@ -174,7 +174,7 @@ bool compareExtensionFolderWithLastSynchronizedFile(
}
else if (err2 != ::osl::File::E_None)
{
- OSL_ENSURE(0, "Cannot access file lastsynchronized");
+ OSL_FAIL("Cannot access file lastsynchronized");
return true; //sync just in case
}
@@ -389,7 +389,7 @@ bool office_is_running()
}
else
{
- OSL_ENSURE(0, "NOT osl_Process_E_None ");
+ OSL_FAIL("NOT osl_Process_E_None ");
//if osl_getExecutable file than we take the risk of creating a pipe
ret = existsOfficePipe();
}
@@ -419,7 +419,7 @@ oslProcess raiseProcess(
case osl_Process_E_NotFound:
throw RuntimeException( OUSTR("image not found!"), 0 );
case osl_Process_E_TimedOut:
- throw RuntimeException( OUSTR("timout occured!"), 0 );
+ throw RuntimeException( OUSTR("timout occurred!"), 0 );
case osl_Process_E_NoPermission:
throw RuntimeException( OUSTR("permission denied!"), 0 );
case osl_Process_E_Unknown:
diff --git a/desktop/source/deployment/misc/dp_misc.hrc b/desktop/source/deployment/misc/dp_misc.hrc
index e5d749fc62..e5d749fc62 100644..100755
--- a/desktop/source/deployment/misc/dp_misc.hrc
+++ b/desktop/source/deployment/misc/dp_misc.hrc
diff --git a/desktop/source/deployment/misc/dp_misc.src b/desktop/source/deployment/misc/dp_misc.src
index 78e87c2078..a6d1441d2a 100644
--- a/desktop/source/deployment/misc/dp_misc.src
+++ b/desktop/source/deployment/misc/dp_misc.src
@@ -32,9 +32,9 @@ String RID_DEPLYOMENT_DEPENDENCIES_UNKNOWN {
};
String RID_DEPLYOMENT_DEPENDENCIES_MIN {
- Text[en-US] = "Extensions requires at least OpenOffice.org %VERSION";
+ Text[en-US] = "Extension requires at least %PRODUCTNAME %VERSION";
};
String RID_DEPLYOMENT_DEPENDENCIES_MAX {
- Text[en-US] = "Extension doesn't support versions greater than: OpenOffice.org %VERSION";
+ Text[en-US] = "Extension doesn't support versions greater than: %PRODUCTNAME %VERSION";
};
diff --git a/desktop/source/deployment/misc/dp_platform.cxx b/desktop/source/deployment/misc/dp_platform.cxx
index 0e67097df5..8bf9d179d4 100644
--- a/desktop/source/deployment/misc/dp_platform.cxx
+++ b/desktop/source/deployment/misc/dp_platform.cxx
@@ -38,6 +38,7 @@
#define PLATFORM_ALL "all"
#define PLATFORM_WIN_X86 "windows_x86"
+#define PLATFORM_WIN_X86_64 "windows_x86_64"
#define PLATFORM_LINUX_X86 "linux_x86"
#define PLATFORM_LINUX_X86_64 "linux_x86_64"
#define PLATFORM_KFREEBSD_X86 "kfreebsd_x86"
@@ -70,6 +71,8 @@
#define PLATFORM_OS2_X86 "os2_x86"
#define PLATFORM_OPENBSD_X86 "openbsd_x86"
#define PLATFORM_OPENBSD_X86_64 "openbsd_x86_64"
+#define PLATFORM_DRAGONFLY_X86 "dragonfly_x86"
+#define PLATFORM_DRAGONFLY_X86_64 "dragonfly_x86_64"
#define PLATFORM_AIX_POWERPC "aix_powerpc"
@@ -113,9 +116,7 @@ namespace
::rtl::OUStringBuffer buf;
buf.append( StrOperatingSystem::get() );
buf.append( static_cast<sal_Unicode>('_') );
- OUString arch( RTL_CONSTASCII_USTRINGPARAM("$_ARCH") );
- ::rtl::Bootstrap::expandMacros( arch );
- buf.append( arch );
+ buf.append( StrCPU::get() );
return buf.makeStringAndClear();
}
};
@@ -133,6 +134,8 @@ namespace
ret = true;
else if (token.equals(OUSTR(PLATFORM_WIN_X86)))
ret = checkOSandCPU(OUSTR("Windows"), OUSTR("x86"));
+ else if (token.equals(OUSTR(PLATFORM_WIN_X86_64)))
+ ret = checkOSandCPU(OUSTR("Windows"), OUSTR("x86_64"));
else if (token.equals(OUSTR(PLATFORM_LINUX_X86)))
ret = checkOSandCPU(OUSTR("Linux"), OUSTR("x86"));
else if (token.equals(OUSTR(PLATFORM_LINUX_X86_64)))
@@ -193,9 +196,13 @@ namespace
ret = checkOSandCPU(OUSTR("OpenBSD"), OUSTR("x86"));
else if (token.equals(OUSTR(PLATFORM_OPENBSD_X86_64)))
ret = checkOSandCPU(OUSTR("OpenBSD"), OUSTR("X86_64"));
+ else if (token.equals(OUSTR(PLATFORM_DRAGONFLY_X86)))
+ ret = checkOSandCPU(OUSTR("DragonFly"), OUSTR("x86"));
+ else if (token.equals(OUSTR(PLATFORM_DRAGONFLY_X86_64)))
+ ret = checkOSandCPU(OUSTR("DragonFly"), OUSTR("X86_64"));
else
{
- OSL_ENSURE(0, "Extension Manager: The extension supports an unknown platform. "
+ OSL_FAIL("Extension Manager: The extension supports an unknown platform. "
"Check the platform element in the description.xml");
ret = false;
}
diff --git a/desktop/source/deployment/misc/dp_resource.cxx b/desktop/source/deployment/misc/dp_resource.cxx
index eb92eabba3..c8c57ac01d 100644
--- a/desktop/source/deployment/misc/dp_resource.cxx
+++ b/desktop/source/deployment/misc/dp_resource.cxx
@@ -72,14 +72,14 @@ osl::Mutex s_mutex;
} // anon namespace
//==============================================================================
-ResId getResId( USHORT id )
+ResId getResId( sal_uInt16 id )
{
const osl::MutexGuard guard( s_mutex );
return ResId( id, *DeploymentResMgr::get() );
}
//==============================================================================
-String getResourceString( USHORT id )
+String getResourceString( sal_uInt16 id )
{
const osl::MutexGuard guard( s_mutex );
String ret( ResId( id, *DeploymentResMgr::get() ) );
diff --git a/desktop/source/deployment/misc/dp_ucb.cxx b/desktop/source/deployment/misc/dp_ucb.cxx
index 170a403ddc..cbfde03cc8 100644
--- a/desktop/source/deployment/misc/dp_ucb.cxx
+++ b/desktop/source/deployment/misc/dp_ucb.cxx
@@ -161,7 +161,7 @@ bool create_folder(
}
catch (CommandFailedException &) {
// Interaction Handler already handled the error
- // that has occured...
+ // that has occurred...
}
catch (Exception &) {
if (throw_exc)
diff --git a/desktop/source/deployment/misc/dp_update.cxx b/desktop/source/deployment/misc/dp_update.cxx
index 531409f063..b22c4c5a60 100644
--- a/desktop/source/deployment/misc/dp_update.cxx
+++ b/desktop/source/deployment/misc/dp_update.cxx
@@ -98,7 +98,7 @@ void getOwnUpdateInfos(
bool & out_allFound)
{
bool allHaveOwnUpdateInformation = true;
- for (UpdateInfoMap::iterator i = inout_map.begin(); i != inout_map.end(); i++)
+ for (UpdateInfoMap::iterator i = inout_map.begin(); i != inout_map.end(); ++i)
{
OSL_ASSERT(i->second.extension.is());
Sequence<OUString> urls(i->second.extension->getUpdateInformationURLs());
@@ -187,11 +187,9 @@ void getDefaultUpdateInfos(
bool containsBundledOnly(Sequence<Reference<deployment::XPackage> > const & sameIdExtensions)
{
OSL_ASSERT(sameIdExtensions.getLength() == 3);
- if (!sameIdExtensions[0].is() && !sameIdExtensions[1].is() && sameIdExtensions[2].is())
- return true;
- else
- return false;
+ return !sameIdExtensions[0].is() && !sameIdExtensions[1].is() && sameIdExtensions[2].is();
}
+
/** Returns true if the list of extensions are bundled extensions and there are no
other extensions with the same identifier in the shared or user repository.
If extensionList is NULL, then it is checked if there are only bundled extensions.
@@ -205,17 +203,12 @@ bool onlyBundledExtensions(
if (extensionList)
{
typedef std::vector<Reference<deployment::XPackage > >::const_iterator CIT;
- for (CIT i = extensionList->begin(); i != extensionList->end(); i++)
+ for (CIT i(extensionList->begin()), aEnd(extensionList->end()); onlyBundled && i != aEnd; ++i)
{
Sequence<Reference<deployment::XPackage> > seqExt = xExtMgr->getExtensionsWithSameIdentifier(
dp_misc::getIdentifier(*i), (*i)->getName(), Reference<ucb::XCommandEnvironment>());
- if (!containsBundledOnly(seqExt))
- {
- onlyBundled = false;
- break;
- }
-
+ onlyBundled = containsBundledOnly(seqExt);
}
}
else
@@ -223,13 +216,9 @@ bool onlyBundledExtensions(
const uno::Sequence< uno::Sequence< Reference<deployment::XPackage > > > seqAllExt =
xExtMgr->getAllExtensions(Reference<task::XAbortChannel>(), Reference<ucb::XCommandEnvironment>());
- for (int pos = seqAllExt.getLength(); pos --; )
+ for (int pos(0), nLen(seqAllExt.getLength()); onlyBundled && pos != nLen; ++pos)
{
- if (!containsBundledOnly(seqAllExt[pos]))
- {
- onlyBundled = false;
- break;
- }
+ onlyBundled = containsBundledOnly(seqAllExt[pos]);
}
}
return onlyBundled;
@@ -282,14 +271,6 @@ UPDATE_SOURCE isUpdateUserExtension(
retVal = UPDATE_SOURCE_ONLINE;
}
- //No update for bundled extensions, they are updated only by the setup
- //else if (bundledVersion.getLength())
- //{
- // int index = determineHighestVersion(
- // OUString(), OUString(), bundledVersion, onlineVersion);
- // if (index == 3)
- // retVal = UPDATE_SOURCE_ONLINE;
- //}
}
else
{
@@ -328,14 +309,6 @@ UPDATE_SOURCE isUpdateSharedExtension(
else if (index == 3)
retVal = UPDATE_SOURCE_ONLINE;
}
- //No update for bundled extensions, they are updated only by the setup
- //else if (bundledVersion.getLength())
- //{
- // int index = determineHighestVersion(
- // OUString(), OUString(), bundledVersion, onlineVersion);
- // if (index == 3)
- // retVal = UPDATE_SOURCE_ONLINE;
- //}
return retVal;
}
@@ -403,18 +376,20 @@ UpdateInfoMap getOnlineUpdateInfos(
UpdateInfoMap::value_type(
dp_misc::getIdentifier(extension), UpdateInfo(extension)));
OSL_ASSERT(insertRet.second == true);
+ (void)insertRet;
}
}
else
{
typedef std::vector<Reference<deployment::XPackage > >::const_iterator CIT;
- for (CIT i = extensionList->begin(); i != extensionList->end(); i++)
+ for (CIT i = extensionList->begin(); i != extensionList->end(); ++i)
{
OSL_ASSERT(i->is());
std::pair<UpdateInfoMap::iterator, bool> insertRet = infoMap.insert(
UpdateInfoMap::value_type(
dp_misc::getIdentifier(*i), UpdateInfo(*i)));
OSL_ASSERT(insertRet.second == true);
+ (void)insertRet;
}
}
diff --git a/desktop/source/deployment/misc/makefile.mk b/desktop/source/deployment/misc/makefile.mk
index 3e4bd68cb4..3e4bd68cb4 100644..100755
--- a/desktop/source/deployment/misc/makefile.mk
+++ b/desktop/source/deployment/misc/makefile.mk
diff --git a/desktop/source/deployment/registry/component/dp_compbackenddb.cxx b/desktop/source/deployment/registry/component/dp_compbackenddb.cxx
index 09f06638ec..b103fe46ef 100644
--- a/desktop/source/deployment/registry/component/dp_compbackenddb.cxx
+++ b/desktop/source/deployment/registry/component/dp_compbackenddb.cxx
@@ -83,26 +83,29 @@ OUString ComponentBackendDb::getKeyElementName()
void ComponentBackendDb::addEntry(::rtl::OUString const & url, Data const & data)
{
try{
- Reference<css::xml::dom::XNode> componentNode = writeKeyElement(url);
- writeSimpleElement(OUSTR("java-type-library"),
- OUString::valueOf((sal_Bool) data.javaTypeLibrary),
- componentNode);
-
- writeSimpleList(
- data.implementationNames,
- OUSTR("implementation-names"),
- OUSTR("name"),
- componentNode);
-
- writeVectorOfPair(
- data.singletons,
- OUSTR("singletons"),
- OUSTR("item"),
- OUSTR("key"),
- OUSTR("value"),
- componentNode);
-
- save();
+ if (!activateEntry(url))
+ {
+ Reference<css::xml::dom::XNode> componentNode = writeKeyElement(url);
+ writeSimpleElement(OUSTR("java-type-library"),
+ OUString::valueOf((sal_Bool) data.javaTypeLibrary),
+ componentNode);
+
+ writeSimpleList(
+ data.implementationNames,
+ OUSTR("implementation-names"),
+ OUSTR("name"),
+ componentNode);
+
+ writeVectorOfPair(
+ data.singletons,
+ OUSTR("singletons"),
+ OUSTR("item"),
+ OUSTR("key"),
+ OUSTR("value"),
+ componentNode);
+
+ save();
+ }
}
catch(css::uno::Exception &)
{
diff --git a/desktop/source/deployment/registry/component/dp_component.cxx b/desktop/source/deployment/registry/component/dp_component.cxx
index b1e22d35c0..096d84f502 100644
--- a/desktop/source/deployment/registry/component/dp_component.cxx
+++ b/desktop/source/deployment/registry/component/dp_component.cxx
@@ -55,7 +55,7 @@
#include "com/sun/star/ucb/NameClash.hpp"
#include "com/sun/star/util/XMacroExpander.hpp"
#include <list>
-#include <hash_map>
+#include <boost/unordered_map.hpp>
#include <vector>
#include <memory>
#include <algorithm>
@@ -66,6 +66,7 @@ using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::ucb;
using ::rtl::OUString;
+namespace css = com::sun::star;
namespace dp_registry {
namespace backend {
@@ -122,14 +123,15 @@ class BackendImpl : public ::dp_registry::backend::PackageRegistryBackend
BackendImpl * getMyBackend() const;
const OUString m_loader;
- ComponentBackendDb::Data m_registeredComponentsDb;
-
+
enum reg {
REG_UNINIT, REG_VOID, REG_REGISTERED, REG_NOT_REGISTERED, REG_MAYBE_REGISTERED
} m_registered;
- Reference<loader::XImplementationLoader> getComponentInfo(
- t_stringlist * pImplNames, t_stringpairvec * pSingletons,
+ void getComponentInfo(
+ ComponentBackendDb::Data * data,
+ std::vector< css::uno::Reference< css::uno::XInterface > > *
+ factories,
Reference<XComponentContext> const & xContext );
virtual void SAL_CALL disposing();
@@ -161,7 +163,31 @@ class BackendImpl : public ::dp_registry::backend::PackageRegistryBackend
OUString const & identifier);
};
friend class ComponentPackageImpl;
-
+
+ class ComponentsPackageImpl : public ::dp_registry::backend::Package
+ {
+ BackendImpl * getMyBackend() const;
+
+ // Package
+ virtual beans::Optional< beans::Ambiguous<sal_Bool> > isRegistered_(
+ ::osl::ResettableMutexGuard & guard,
+ ::rtl::Reference<AbortChannel> const & abortChannel,
+ Reference<XCommandEnvironment> const & xCmdEnv );
+ virtual void processPackage_(
+ ::osl::ResettableMutexGuard & guard,
+ bool registerPackage,
+ bool startup,
+ ::rtl::Reference<AbortChannel> const & abortChannel,
+ Reference<XCommandEnvironment> const & xCmdEnv );
+ public:
+ ComponentsPackageImpl(
+ ::rtl::Reference<PackageRegistryBackend> const & myBackend,
+ OUString const & url, OUString const & name,
+ Reference<deployment::XPackageTypeInfo> const & xPackageType,
+ bool bRemoved, OUString const & identifier);
+ };
+ friend class ComponentsPackageImpl;
+
class TypelibraryPackageImpl : public ::dp_registry::backend::Package
{
BackendImpl * getMyBackend() const;
@@ -192,18 +218,66 @@ class BackendImpl : public ::dp_registry::backend::PackageRegistryBackend
OUString const & identifier);
};
friend class TypelibraryPackageImpl;
+
+ /** Serves for unregistering packages that were registered on a
+ different platform. This can happen if one has remotely mounted
+ /home, for example.
+ */
+ class OtherPlatformPackageImpl : public ::dp_registry::backend::Package
+ {
+ public:
+ OtherPlatformPackageImpl(
+ ::rtl::Reference<PackageRegistryBackend> const & myBackend,
+ OUString const & url, OUString const & name,
+ Reference<deployment::XPackageTypeInfo> const & xPackageType,
+ bool bRemoved, OUString const & identifier, OUString const& rPlatform);
+
+ private:
+ BackendImpl * getMyBackend() const;
+
+ const Reference<registry::XSimpleRegistry> impl_openRDB() const;
+ const Reference<XInterface> impl_createInstance(OUString const& rService) const;
+
+ // Package
+ virtual beans::Optional< beans::Ambiguous<sal_Bool> > isRegistered_(
+ ::osl::ResettableMutexGuard & guard,
+ ::rtl::Reference<AbortChannel> const & abortChannel,
+ Reference<XCommandEnvironment> const & xCmdEnv );
+ virtual void processPackage_(
+ ::osl::ResettableMutexGuard & guard,
+ bool registerPackage,
+ bool startup,
+ ::rtl::Reference<AbortChannel> const & abortChannel,
+ Reference<XCommandEnvironment> const & xCmdEnv );
+
+ private:
+ OUString const m_aPlatform;
+ };
+ friend class OtherPlatformPackageImpl;
t_stringlist m_jar_typelibs;
t_stringlist m_rdb_typelibs;
- t_stringlist & getTypelibs( bool jar ) {
- return jar ? m_jar_typelibs : m_rdb_typelibs;
+ t_stringlist m_components;
+
+ enum RcItem { RCITEM_JAR_TYPELIB, RCITEM_RDB_TYPELIB, RCITEM_COMPONENTS };
+
+ t_stringlist & getRcItemList( RcItem kind ) {
+ switch (kind)
+ {
+ case RCITEM_JAR_TYPELIB:
+ return m_jar_typelibs;
+ case RCITEM_RDB_TYPELIB:
+ return m_rdb_typelibs;
+ default: // case RCITEM_COMPONENTS
+ return m_components;
+ }
}
bool m_unorc_inited;
bool m_unorc_modified;
bool bSwitchedRdbFiles;
- typedef ::std::hash_map< OUString, Reference<XInterface>,
+ typedef ::boost::unordered_map< OUString, Reference<XInterface>,
::rtl::OUStringHash > t_string2object;
t_string2object m_backendObjects;
@@ -218,6 +292,7 @@ class BackendImpl : public ::dp_registry::backend::PackageRegistryBackend
const Reference<deployment::XPackageTypeInfo> m_xDynComponentTypeInfo;
const Reference<deployment::XPackageTypeInfo> m_xJavaComponentTypeInfo;
const Reference<deployment::XPackageTypeInfo> m_xPythonComponentTypeInfo;
+ const Reference<deployment::XPackageTypeInfo> m_xComponentsTypeInfo;
const Reference<deployment::XPackageTypeInfo> m_xRDBTypelibTypeInfo;
const Reference<deployment::XPackageTypeInfo> m_xJavaTypelibTypeInfo;
Sequence< Reference<deployment::XPackageTypeInfo> > m_typeInfos;
@@ -232,8 +307,8 @@ class BackendImpl : public ::dp_registry::backend::PackageRegistryBackend
std::auto_ptr<ComponentBackendDb> m_backendDb;
void addDataToDb(OUString const & url, ComponentBackendDb::Data const & data);
- void deleteDataFromDb(OUString const & url);
ComponentBackendDb::Data readDataFromDb(OUString const & url);
+ void revokeEntryFromDb(OUString const & url);
//These rdbs are for writing new service entries. The rdb files are copies
@@ -255,14 +330,32 @@ class BackendImpl : public ::dp_registry::backend::PackageRegistryBackend
OUString const & id, Reference<XInterface> const & xObject );
void releaseObject( OUString const & id );
- bool addToUnoRc( bool jarFile, OUString const & url,
+ bool addToUnoRc( RcItem kind, OUString const & url,
Reference<XCommandEnvironment> const & xCmdEnv );
- bool removeFromUnoRc( bool jarFile, OUString const & url,
+ bool removeFromUnoRc( RcItem kind, OUString const & url,
Reference<XCommandEnvironment> const & xCmdEnv );
- bool hasInUnoRc( bool jarFile, OUString const & url );
+ bool hasInUnoRc( RcItem kind, OUString const & url );
+
+ css::uno::Reference< css::registry::XRegistryKey > openRegistryKey(
+ css::uno::Reference< css::registry::XRegistryKey > const & base,
+ rtl::OUString const & path);
+
+ void extractComponentData(
+ css::uno::Reference< css::uno::XComponentContext > const & context,
+ css::uno::Reference< css::registry::XRegistryKey > const & registry,
+ ComponentBackendDb::Data * data,
+ std::vector< css::uno::Reference< css::uno::XInterface > > * factories,
+ css::uno::Reference< css::loader::XImplementationLoader > const *
+ componentLoader,
+ rtl::OUString const * componentUrl);
+
+ void componentLiveInsertion(
+ ComponentBackendDb::Data const & data,
+ std::vector< css::uno::Reference< css::uno::XInterface > > const &
+ factories);
+
+ void componentLiveRemoval(ComponentBackendDb::Data const & data);
-
-
public:
BackendImpl( Sequence<Any> const & args,
Reference<XComponentContext> const & xComponentContext );
@@ -271,6 +364,10 @@ public:
virtual Sequence< Reference<deployment::XPackageTypeInfo> > SAL_CALL
getSupportedPackageTypes() throw (RuntimeException);
+ virtual void SAL_CALL packageRemoved(OUString const & url, OUString const & mediaType)
+ throw (deployment::DeploymentException,
+ uno::RuntimeException);
+
using PackageRegistryBackend::disposing;
//Will be called from ComponentPackageImpl
@@ -292,13 +389,7 @@ BackendImpl::ComponentPackageImpl::ComponentPackageImpl(
xPackageType, bRemoved, identifier),
m_loader( loader ),
m_registered( REG_UNINIT )
-{
- if (bRemoved)
- {
- m_registeredComponentsDb = getMyBackend()->readDataFromDb(url);
- }
-}
-
+{}
const Reference<registry::XSimpleRegistry>
BackendImpl::ComponentPackageImpl::getRDB() const
@@ -357,7 +448,6 @@ BackendImpl * BackendImpl::ComponentPackageImpl::getMyBackend() const
//______________________________________________________________________________
void BackendImpl::ComponentPackageImpl::disposing()
{
-// m_xRemoteContext.clear();
Package::disposing();
}
@@ -458,7 +548,6 @@ void BackendImpl::initServiceRdbFiles()
m_xComponentContext ), UNO_QUERY_THROW );
m_xCommonRDB->open(
makeURL( expandUnoRcUrl(getCachePath()), m_commonRDB ),
-// m_readOnly, !m_readOnly );
false, true);
}
if (m_nativeRDB.getLength() > 0) {
@@ -469,7 +558,6 @@ void BackendImpl::initServiceRdbFiles()
m_xComponentContext ), UNO_QUERY_THROW );
m_xNativeRDB->open(
makeURL( expandUnoRcUrl(getCachePath()), m_nativeRDB ),
-// m_readOnly, !m_readOnly );
false, true);
}
}
@@ -520,16 +608,14 @@ BackendImpl::BackendImpl(
getPlatformString(),
OUSTR("*" SAL_DLLEXTENSION),
getResourceString(RID_STR_DYN_COMPONENT),
- RID_IMG_COMPONENT,
- RID_IMG_COMPONENT_HC ) ),
+ RID_IMG_COMPONENT) ),
m_xJavaComponentTypeInfo( new Package::TypeInfo(
OUSTR("application/"
"vnd.sun.star.uno-component;"
"type=Java"),
OUSTR("*.jar"),
getResourceString(RID_STR_JAVA_COMPONENT),
- RID_IMG_JAVA_COMPONENT,
- RID_IMG_JAVA_COMPONENT_HC ) ),
+ RID_IMG_JAVA_COMPONENT) ),
m_xPythonComponentTypeInfo( new Package::TypeInfo(
OUSTR("application/"
"vnd.sun.star.uno-component;"
@@ -537,30 +623,35 @@ BackendImpl::BackendImpl(
OUSTR("*.py"),
getResourceString(
RID_STR_PYTHON_COMPONENT),
- RID_IMG_COMPONENT,
- RID_IMG_COMPONENT_HC ) ),
+ RID_IMG_COMPONENT ) ),
+ m_xComponentsTypeInfo( new Package::TypeInfo(
+ OUSTR("application/"
+ "vnd.sun.star.uno-components"),
+ OUSTR("*.components"),
+ getResourceString(RID_STR_COMPONENTS),
+ RID_IMG_COMPONENT ) ),
m_xRDBTypelibTypeInfo( new Package::TypeInfo(
OUSTR("application/"
"vnd.sun.star.uno-typelibrary;"
"type=RDB"),
OUSTR("*.rdb"),
getResourceString(RID_STR_RDB_TYPELIB),
- RID_IMG_TYPELIB, RID_IMG_TYPELIB_HC ) ),
+ RID_IMG_TYPELIB ) ),
m_xJavaTypelibTypeInfo( new Package::TypeInfo(
OUSTR("application/"
"vnd.sun.star.uno-typelibrary;"
"type=Java"),
OUSTR("*.jar"),
getResourceString(RID_STR_JAVA_TYPELIB),
- RID_IMG_JAVA_TYPELIB,
- RID_IMG_JAVA_TYPELIB_HC ) ),
- m_typeInfos( 5 )
+ RID_IMG_JAVA_TYPELIB ) ),
+ m_typeInfos( 6 )
{
m_typeInfos[ 0 ] = m_xDynComponentTypeInfo;
m_typeInfos[ 1 ] = m_xJavaComponentTypeInfo;
m_typeInfos[ 2 ] = m_xPythonComponentTypeInfo;
- m_typeInfos[ 3 ] = m_xRDBTypelibTypeInfo;
- m_typeInfos[ 4 ] = m_xJavaTypelibTypeInfo;
+ m_typeInfos[ 3 ] = m_xComponentsTypeInfo;
+ m_typeInfos[ 4 ] = m_xRDBTypelibTypeInfo;
+ m_typeInfos[ 5 ] = m_xJavaTypelibTypeInfo;
const Reference<XCommandEnvironment> xCmdEnv;
@@ -602,12 +693,6 @@ void BackendImpl::addDataToDb(
m_backendDb->addEntry(url, data);
}
-void BackendImpl::deleteDataFromDb(OUString const & url)
-{
- if (m_backendDb.get())
- m_backendDb->removeEntry(url);
-}
-
ComponentBackendDb::Data BackendImpl::readDataFromDb(OUString const & url)
{
ComponentBackendDb::Data data;
@@ -616,6 +701,12 @@ ComponentBackendDb::Data BackendImpl::readDataFromDb(OUString const & url)
return data;
}
+void BackendImpl::revokeEntryFromDb(OUString const & url)
+{
+ if (m_backendDb.get())
+ m_backendDb->revokeEntry(url);
+}
+
// XPackageRegistry
//______________________________________________________________________________
Sequence< Reference<deployment::XPackageTypeInfo> >
@@ -624,6 +715,14 @@ BackendImpl::getSupportedPackageTypes() throw (RuntimeException)
return m_typeInfos;
}
+void BackendImpl::packageRemoved(OUString const & url, OUString const & /*mediaType*/)
+ throw (deployment::DeploymentException,
+ uno::RuntimeException)
+{
+ if (m_backendDb.get())
+ m_backendDb->removeEntry(url);
+}
+
// PackageRegistryBackend
//______________________________________________________________________________
Reference<deployment::XPackage> BackendImpl::bindPackage_(
@@ -698,16 +797,30 @@ Reference<deployment::XPackage> BackendImpl::bindPackage_(
INetContentTypeParameter const * param = params.find(
ByteString("platform") );
- if (param == 0 || platform_fits( param->m_sValue )) {
+ bool bPlatformFits(param == 0);
+ String aPlatform;
+ if (!bPlatformFits) // platform is specified, we have to check
+ {
+ aPlatform = param->m_sValue;
+ bPlatformFits = platform_fits(aPlatform);
+ }
+ // If the package is being removed, do not care whether
+ // platform fits. We won't be using it anyway.
+ if (bPlatformFits || bRemoved) {
param = params.find( ByteString("type") );
if (param != 0)
{
String const & value = param->m_sValue;
if (value.EqualsIgnoreCaseAscii("native")) {
- return new BackendImpl::ComponentPackageImpl(
- this, url, name, m_xDynComponentTypeInfo,
- OUSTR("com.sun.star.loader.SharedLibrary"),
- bRemoved, identifier);
+ if (bPlatformFits)
+ return new BackendImpl::ComponentPackageImpl(
+ this, url, name, m_xDynComponentTypeInfo,
+ OUSTR("com.sun.star.loader.SharedLibrary"),
+ bRemoved, identifier);
+ else
+ return new BackendImpl::OtherPlatformPackageImpl(
+ this, url, name, m_xDynComponentTypeInfo,
+ bRemoved, identifier, aPlatform);
}
if (value.EqualsIgnoreCaseAscii("Java")) {
return new BackendImpl::ComponentPackageImpl(
@@ -725,6 +838,17 @@ Reference<deployment::XPackage> BackendImpl::bindPackage_(
}
}
else if (subType.EqualsIgnoreCaseAscii(
+ "vnd.sun.star.uno-components"))
+ {
+ INetContentTypeParameter const * param = params.find(
+ ByteString("platform") );
+ if (param == 0 || platform_fits( param->m_sValue )) {
+ return new BackendImpl::ComponentsPackageImpl(
+ this, url, name, m_xComponentsTypeInfo, bRemoved,
+ identifier);
+ }
+ }
+ else if (subType.EqualsIgnoreCaseAscii(
"vnd.sun.star.uno-typelibrary"))
{
INetContentTypeParameter const * param = params.find(
@@ -752,7 +876,6 @@ Reference<deployment::XPackage> BackendImpl::bindPackage_(
static_cast<sal_Int16>(-1) );
}
-//##############################################################################
//______________________________________________________________________________
void BackendImpl::unorc_verify_init(
@@ -817,11 +940,50 @@ void BackendImpl::unorc_verify_init(
while (index >= 0);
}
if (readLine( &line, OUSTR("UNO_SERVICES="), ucb_content,
- RTL_TEXTENCODING_UTF8 )) {
- sal_Int32 start = sizeof ("UNO_SERVICES=?$ORIGIN/") - 1;
- sal_Int32 sep = line.indexOf( ' ', start );
- OSL_ASSERT( sep > 0 );
- m_commonRDB_RO = line.copy( start, sep - start );
+ RTL_TEXTENCODING_UTF8 ))
+ {
+ // The UNO_SERVICES line always has the BNF form
+ // "UNO_SERVICES="
+ // ("?$ORIGIN/" <common-rdb>)? -- first
+ // "${$ORIGIN/${_OS}_${_ARCH}rc:UNO_SERVICES}"? -- second
+ // ("?" ("BUNDLED_EXTENSIONS" | -- third
+ // "UNO_SHARED_PACKAGES_CACHE" | "UNO_USER_PACKAGES_CACHE")
+ // ...)*
+ // so can unambiguously be split into its thre parts:
+ int state = 1;
+ for (sal_Int32 i = RTL_CONSTASCII_LENGTH("UNO_SERVICES=");
+ i >= 0;)
+ {
+ rtl::OUString token(line.getToken(0, ' ', i));
+ if (token.getLength() != 0)
+ {
+ if (state == 1 &&
+ token.matchAsciiL(
+ RTL_CONSTASCII_STRINGPARAM("?$ORIGIN/")))
+ {
+ m_commonRDB_RO = token.copy(
+ RTL_CONSTASCII_LENGTH("?$ORIGIN/"));
+ state = 2;
+ }
+ else if (state <= 2 &&
+ token.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM(
+ "${$ORIGIN/${_OS}_${_ARCH}rc:"
+ "UNO_SERVICES}")))
+ {
+ state = 3;
+ }
+ else
+ {
+ if (token[0] == '?')
+ {
+ token = token.copy(1);
+ }
+ m_components.push_back(token);
+ state = 3;
+ }
+ }
+ }
}
// native rc:
@@ -897,16 +1059,27 @@ void BackendImpl::unorc_flush( Reference<XCommandEnvironment> const & xCmdEnv )
OUString sCommonRDB(m_commonRDB.getLength() > 0 ? m_commonRDB : m_commonRDB_RO);
OUString sNativeRDB(m_nativeRDB.getLength() > 0 ? m_nativeRDB : m_nativeRDB_RO);
- if (sCommonRDB.getLength() > 0 || sNativeRDB.getLength() > 0)
+ if (sCommonRDB.getLength() > 0 || sNativeRDB.getLength() > 0 ||
+ !m_components.empty())
{
- buf.append( RTL_CONSTASCII_STRINGPARAM("UNO_SERVICES=?$ORIGIN/") );
- buf.append( ::rtl::OUStringToOString(
- sCommonRDB, RTL_TEXTENCODING_ASCII_US ) );
+ buf.append( RTL_CONSTASCII_STRINGPARAM("UNO_SERVICES=") );
+ bool space = false;
+ if (sCommonRDB.getLength() > 0)
+ {
+ buf.append( RTL_CONSTASCII_STRINGPARAM("?$ORIGIN/") );
+ buf.append( ::rtl::OUStringToOString(
+ sCommonRDB, RTL_TEXTENCODING_ASCII_US ) );
+ space = true;
+ }
if (sNativeRDB.getLength() > 0)
{
+ if (space)
+ {
+ buf.append(' ');
+ }
buf.append( RTL_CONSTASCII_STRINGPARAM(
- " ${$ORIGIN/${_OS}_${_ARCH}rc:UNO_SERVICES}") );
- buf.append(LF);
+ "${$ORIGIN/${_OS}_${_ARCH}rc:UNO_SERVICES}") );
+ space = true;
// write native rc:
::rtl::OStringBuffer buf2;
@@ -928,6 +1101,18 @@ void BackendImpl::unorc_flush( Reference<XCommandEnvironment> const & xCmdEnv )
xCmdEnv );
ucb_content.writeStream( xData, true /* replace existing */ );
}
+ for (t_stringlist::iterator i(m_components.begin());
+ i != m_components.end(); ++i)
+ {
+ if (space)
+ {
+ buf.append(' ');
+ }
+ buf.append('?');
+ buf.append(rtl::OUStringToOString(*i, RTL_TEXTENCODING_UTF8));
+ space = true;
+ }
+ buf.append(LF);
}
// write unorc:
@@ -944,13 +1129,13 @@ void BackendImpl::unorc_flush( Reference<XCommandEnvironment> const & xCmdEnv )
}
//______________________________________________________________________________
-bool BackendImpl::addToUnoRc( bool jarFile, OUString const & url_,
+bool BackendImpl::addToUnoRc( RcItem kind, OUString const & url_,
Reference<XCommandEnvironment> const & xCmdEnv )
{
const OUString rcterm( dp_misc::makeRcTerm(url_) );
const ::osl::MutexGuard guard( getMutex() );
unorc_verify_init( xCmdEnv );
- t_stringlist & rSet = getTypelibs(jarFile);
+ t_stringlist & rSet = getRcItemList(kind);
if (::std::find( rSet.begin(), rSet.end(), rcterm ) == rSet.end()) {
rSet.push_front( rcterm ); // prepend to list, thus overriding
// write immediately:
@@ -964,13 +1149,13 @@ bool BackendImpl::addToUnoRc( bool jarFile, OUString const & url_,
//______________________________________________________________________________
bool BackendImpl::removeFromUnoRc(
- bool jarFile, OUString const & url_,
+ RcItem kind, OUString const & url_,
Reference<XCommandEnvironment> const & xCmdEnv )
{
const OUString rcterm( dp_misc::makeRcTerm(url_) );
const ::osl::MutexGuard guard( getMutex() );
unorc_verify_init( xCmdEnv );
- getTypelibs(jarFile).remove( rcterm );
+ getRcItemList(kind).remove( rcterm );
// write immediately:
m_unorc_modified = true;
unorc_flush( xCmdEnv );
@@ -979,22 +1164,215 @@ bool BackendImpl::removeFromUnoRc(
//______________________________________________________________________________
bool BackendImpl::hasInUnoRc(
- bool jarFile, OUString const & url_ )
+ RcItem kind, OUString const & url_ )
{
const OUString rcterm( dp_misc::makeRcTerm(url_) );
const ::osl::MutexGuard guard( getMutex() );
- t_stringlist const & rSet = getTypelibs(jarFile);
+ t_stringlist const & rSet = getRcItemList(kind);
return ::std::find( rSet.begin(), rSet.end(), rcterm ) != rSet.end();
}
+css::uno::Reference< css::registry::XRegistryKey > BackendImpl::openRegistryKey(
+ css::uno::Reference< css::registry::XRegistryKey > const & base,
+ rtl::OUString const & path)
+{
+ OSL_ASSERT(base.is());
+ css::uno::Reference< css::registry::XRegistryKey > key(base->openKey(path));
+ if (!key.is()) {
+ throw css::deployment::DeploymentException(
+ (rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM("missing registry entry ")) +
+ path + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" under ")) +
+ base->getKeyName()),
+ static_cast< OWeakObject * >(this), Any());
+ }
+ return key;
+}
+
+void BackendImpl::extractComponentData(
+ css::uno::Reference< css::uno::XComponentContext > const & context,
+ css::uno::Reference< css::registry::XRegistryKey > const & registry,
+ ComponentBackendDb::Data * data,
+ std::vector< css::uno::Reference< css::uno::XInterface > > * factories,
+ css::uno::Reference< css::loader::XImplementationLoader > const *
+ componentLoader,
+ rtl::OUString const * componentUrl)
+{
+ OSL_ASSERT(context.is() && registry.is() && data != 0 && factories != 0);
+ rtl::OUString registryName(registry->getKeyName());
+ sal_Int32 prefix = registryName.getLength();
+ if (!registryName.endsWithAsciiL(RTL_CONSTASCII_STRINGPARAM("/"))) {
+ prefix += RTL_CONSTASCII_LENGTH("/");
+ }
+ css::uno::Sequence< css::uno::Reference< css::registry::XRegistryKey > >
+ keys(registry->openKeys());
+ css::uno::Reference< css::lang::XMultiComponentFactory > smgr(
+ context->getServiceManager(), css::uno::UNO_QUERY_THROW);
+ for (sal_Int32 i = 0; i < keys.getLength(); ++i) {
+ rtl::OUString name(keys[i]->getKeyName().copy(prefix));
+ data->implementationNames.push_back(name);
+ css::uno::Reference< css::registry::XRegistryKey > singletons(
+ keys[i]->openKey(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("UNO/SINGLETONS"))));
+ if (singletons.is()) {
+ sal_Int32 prefix2 = keys[i]->getKeyName().getLength() +
+ RTL_CONSTASCII_LENGTH("/UNO/SINGLETONS/");
+ css::uno::Sequence<
+ css::uno::Reference< css::registry::XRegistryKey > >
+ singletonKeys(singletons->openKeys());
+ for (sal_Int32 j = 0; j < singletonKeys.getLength(); ++j) {
+ data->singletons.push_back(
+ std::pair< rtl::OUString, rtl::OUString >(
+ singletonKeys[j]->getKeyName().copy(prefix2), name));
+ }
+ }
+ css::uno::Reference< css::loader::XImplementationLoader > loader;
+ if (componentLoader == 0) {
+ rtl::OUString activator(
+ openRegistryKey(
+ keys[i],
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM("UNO/ACTIVATOR")))->
+ getAsciiValue());
+ loader.set(
+ smgr->createInstanceWithContext(activator, context),
+ css::uno::UNO_QUERY);
+ if (!loader.is()) {
+ throw css::deployment::DeploymentException(
+ (rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "cannot instantiate loader ")) +
+ activator),
+ static_cast< OWeakObject * >(this), Any());
+ }
+ } else {
+ OSL_ASSERT(componentLoader->is());
+ loader = *componentLoader;
+ }
+ factories->push_back(
+ loader->activate(
+ name, rtl::OUString(),
+ (componentUrl == 0
+ ? (openRegistryKey(
+ keys[i],
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM("UNO/LOCATION")))->
+ getAsciiValue())
+ : *componentUrl),
+ keys[i]));
+ }
+}
+
+void BackendImpl::componentLiveInsertion(
+ ComponentBackendDb::Data const & data,
+ std::vector< css::uno::Reference< css::uno::XInterface > > const &
+ factories)
+{
+ css::uno::Reference< css::container::XSet > set(
+ getComponentContext()->getServiceManager(), css::uno::UNO_QUERY_THROW);
+ std::vector< css::uno::Reference< css::uno::XInterface > >::const_iterator
+ factory(factories.begin());
+ for (t_stringlist::const_iterator i(data.implementationNames.begin());
+ i != data.implementationNames.end(); ++i)
+ {
+ try {
+ set->insert(css::uno::Any(*factory++));
+ } catch (container::ElementExistException &) {
+ OSL_TRACE(
+ "implementation %s already registered",
+ rtl::OUStringToOString(*i, RTL_TEXTENCODING_UTF8).getStr());
+ }
+ }
+ if (!data.singletons.empty()) {
+ css::uno::Reference< css::container::XNameContainer >
+ rootContext(
+ getComponentContext()->getValueByName(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_root"))),
+ css::uno::UNO_QUERY);
+ if (rootContext.is()) {
+ for (t_stringpairvec::const_iterator i(data.singletons.begin());
+ i != data.singletons.end(); ++i)
+ {
+ rtl::OUString name(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/singletons/")) +
+ i->first);
+ try {
+ rootContext->removeByName(
+ name +
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM("/arguments")));
+ } catch (container::NoSuchElementException &) {}
+ try {
+ rootContext->insertByName(
+ (name +
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM("/service"))),
+ css::uno::Any(i->second));
+ } catch (container::ElementExistException &) {
+ rootContext->replaceByName(
+ (name +
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM("/service"))),
+ css::uno::Any(i->second));
+ }
+ try {
+ rootContext->insertByName(name, css::uno::Any());
+ } catch (container::ElementExistException &) {
+ OSL_TRACE(
+ "singleton %s already registered",
+ rtl::OUStringToOString(
+ i->first, RTL_TEXTENCODING_UTF8).getStr());
+ rootContext->replaceByName(name, css::uno::Any());
+ }
+ }
+ }
+ }
+}
+
+void BackendImpl::componentLiveRemoval(ComponentBackendDb::Data const & data) {
+ css::uno::Reference< css::container::XSet > set(
+ getComponentContext()->getServiceManager(), css::uno::UNO_QUERY_THROW);
+ for (t_stringlist::const_iterator i(data.implementationNames.begin());
+ i != data.implementationNames.end(); ++i)
+ {
+ try {
+ set->remove(css::uno::Any(*i));
+ } catch (css::container::NoSuchElementException &) {
+ // ignore if factory has not been live deployed
+ }
+ }
+ if (!data.singletons.empty()) {
+ css::uno::Reference< css::container::XNameContainer > rootContext(
+ getComponentContext()->getValueByName(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_root"))),
+ css::uno::UNO_QUERY);
+ if (rootContext.is()) {
+ for (t_stringpairvec::const_iterator i(data.singletons.begin());
+ i != data.singletons.end(); ++i)
+ {
+ rtl::OUString name(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/singletons/")) +
+ i->first);
+ try {
+ rootContext->removeByName(
+ name +
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM("/arguments")));
+ rootContext->removeByName(
+ name +
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/service")));
+ rootContext->removeByName(name);
+ } catch (container::NoSuchElementException &) {}
+ }
+ }
+ }
+}
+
//______________________________________________________________________________
void BackendImpl::releaseObject( OUString const & id )
{
const ::osl::MutexGuard guard( getMutex() );
- if ( m_backendObjects.erase( id ) != 1 )
- {
- OSL_ASSERT( false );
- }
+ m_backendObjects.erase( id );
}
//______________________________________________________________________________
@@ -1077,66 +1455,45 @@ Reference<XComponentContext> raise_uno_process(
}
//------------------------------------------------------------------------------
-Reference<loader::XImplementationLoader>
-BackendImpl::ComponentPackageImpl::getComponentInfo(
- t_stringlist * pImplNames, t_stringpairvec * pSingletons,
+void BackendImpl::ComponentPackageImpl::getComponentInfo(
+ ComponentBackendDb::Data * data,
+ std::vector< css::uno::Reference< css::uno::XInterface > > * factories,
Reference<XComponentContext> const & xContext )
{
const Reference<loader::XImplementationLoader> xLoader(
xContext->getServiceManager()->createInstanceWithContext(
m_loader, xContext ), UNO_QUERY );
if (! xLoader.is())
- return Reference<loader::XImplementationLoader>();
+ {
+ throw css::deployment::DeploymentException(
+ (rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM("cannot instantiate loader ")) +
+ m_loader),
+ static_cast< OWeakObject * >(this), Any());
+ }
// HACK: highly dependent on stoc/source/servicemanager
// and stoc/source/implreg implementation which rely on the same
// services.rdb format!
-
+ // .../UNO/LOCATION and .../UNO/ACTIVATOR appear not to be written by
+ // writeRegistryInfo, however, but are knwon, fixed values here, so
+ // can be passed into extractComponentData
+ rtl::OUString url(getURL());
const Reference<registry::XSimpleRegistry> xMemReg(
xContext->getServiceManager()->createInstanceWithContext(
OUSTR("com.sun.star.registry.SimpleRegistry"), xContext ),
UNO_QUERY_THROW );
xMemReg->open( OUString() /* in mem */, false, true );
- xLoader->writeRegistryInfo( xMemReg->getRootKey(), OUString(), getURL() );
-
- const Sequence< Reference<registry::XRegistryKey> > keys(
- xMemReg->getRootKey()->openKeys() );
- for ( sal_Int32 pos = keys.getLength(); pos--; )
- {
- Reference<registry::XRegistryKey> const & xImplKey = keys[ pos ];
- const OUString implName(
- xImplKey->getKeyName().copy( 1 /*leading slash*/ ) );
-
- // check for singletons:
- const Reference<registry::XRegistryKey> xSingletonKey(
- xImplKey->openKey( OUSTR("UNO/SINGLETONS") ) );
- if (xSingletonKey.is() && xSingletonKey->isValid())
- {
- const Sequence< Reference<registry::XRegistryKey> > singletonKeys(
- xSingletonKey->openKeys() );
- for ( sal_Int32 i = singletonKeys.getLength(); i--; )
- {
- Reference<registry::XRegistryKey> const & xSingleton =
- singletonKeys[ i ];
- pSingletons->push_back(
- ::std::pair<OUString, OUString>(
- xSingleton->getKeyName().copy(
- implName.getLength() +
- sizeof ("//UNO/SINGLETONS/") - 1 ),
- xSingleton->getStringValue() ) );
- }
- }
- else
- {
- pImplNames->push_back( implName );
- }
- }
-
- return xLoader;
+ xLoader->writeRegistryInfo( xMemReg->getRootKey(), OUString(), url );
+ getMyBackend()->extractComponentData(
+ xContext, xMemReg->getRootKey(), data, factories, &xLoader, &url);
}
// Package
//______________________________________________________________________________
+//We could use here BackendImpl::hasActiveEntry. However, this check is just as well.
+//And it also shows the problem if another extension has overwritten an implementation
+//entry, because it contains the same service implementation
beans::Optional< beans::Ambiguous<sal_Bool> >
BackendImpl::ComponentPackageImpl::isRegistered_(
::osl::ResettableMutexGuard &,
@@ -1222,228 +1579,78 @@ void BackendImpl::ComponentPackageImpl::processPackage_(
::rtl::Reference<AbortChannel> const & abortChannel,
Reference<XCommandEnvironment> const & xCmdEnv )
{
- BackendImpl * that = getMyBackend();
-
-
- const bool java = m_loader.equalsAsciiL(
- RTL_CONSTASCII_STRINGPARAM("com.sun.star.loader.Java2") );
- const OUString url( getURL() );
- bool isJavaTypelib;
- if (m_bRemoved)
- isJavaTypelib = m_registeredComponentsDb.javaTypeLibrary;
- else
- isJavaTypelib = java &&
- !jarManifestHeaderPresent( url, OUSTR("UNO-Type-Path"), xCmdEnv );
-
- ComponentBackendDb::Data data;
- data.javaTypeLibrary = isJavaTypelib;
- if (doRegisterPackage)
- {
- Reference <uno::XComponentContext> context(that->getComponentContext());
- if (! startup)
- {
- context.set(
- that->getObject( url ), UNO_QUERY );
-
- if (! context.is()) {
+ BackendImpl * that = getMyBackend();
+ rtl::OUString url(getURL());
+ if (doRegisterPackage) {
+ ComponentBackendDb::Data data;
+ css::uno::Reference< css::uno::XComponentContext > context;
+ if (startup) {
+ context = that->getComponentContext();
+ } else {
+ context.set(that->getObject(url), css::uno::UNO_QUERY);
+ if (!context.is()) {
context.set(
- that->insertObject( url, raise_uno_process(
- that->getComponentContext(),
- abortChannel ) ),
- UNO_QUERY_THROW );
+ that->insertObject(
+ url,
+ raise_uno_process(
+ that->getComponentContext(), abortChannel)),
+ css::uno::UNO_QUERY_THROW);
}
}
-
- const Reference<registry::XSimpleRegistry> xServicesRDB( getRDB() );
- const Reference<registry::XImplementationRegistration> xImplReg(
+ css::uno::Reference< css::registry::XImplementationRegistration>(
context->getServiceManager()->createInstanceWithContext(
- OUSTR("com.sun.star.registry.ImplementationRegistration"),
- context ), UNO_QUERY_THROW );
-
- xImplReg->registerImplementation( m_loader, url, xServicesRDB );
- //only write to unorc if registration was successful.
- //It may fail if there is no suitable java.
- if (isJavaTypelib)
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.registry.ImplementationRegistration")),
+ context),
+ css::uno::UNO_QUERY_THROW)->registerImplementation(
+ m_loader, url, getRDB());
+ // Only write to unorc after successful registration; it may fail if
+ // there is no suitable java
+ if (m_loader.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM("com.sun.star.loader.Java2")) &&
+ !jarManifestHeaderPresent(url, OUSTR("UNO-Type-Path"), xCmdEnv))
{
- that->addToUnoRc( java, url, xCmdEnv );
+ that->addToUnoRc(RCITEM_JAR_TYPELIB, url, xCmdEnv);
data.javaTypeLibrary = true;
}
-
- t_stringlist implNames;
- t_stringpairvec singletons;
- const Reference<loader::XImplementationLoader> xLoader(
- getComponentInfo( &implNames, &singletons, context ) );
- data.implementationNames = implNames;
- data.singletons = singletons;
-
- if (!startup)
- {
- // factories live insertion:
- const Reference<container::XSet> xSet(
- that->getComponentContext()->getServiceManager(), UNO_QUERY_THROW );
- for ( t_stringlist::const_iterator iPos( implNames.begin() );
- iPos != implNames.end(); ++iPos )
- {
- checkAborted( abortChannel );
- OUString const & implName = *iPos;
- // activate factory:
- const Reference<XInterface> xFactory(
- xLoader->activate(
- implName, OUString(), url,
- xServicesRDB->getRootKey()->openKey(
- OUSTR("/IMPLEMENTATIONS/") + implName ) ) );
- try {
- xSet->insert( Any(xFactory) );
- } // ignore if factory has already been inserted:
- catch (container::ElementExistException &) {
- OSL_ENSURE( 0, "### factory already registered?" );
- }
- }
-
- if (! singletons.empty())
- {
- // singletons live insertion:
- const Reference<container::XNameContainer> xRootContext(
- that->getComponentContext()->getValueByName(
- OUSTR("_root") ), UNO_QUERY );
- if (xRootContext.is())
- {
- for ( t_stringpairvec::const_iterator iPos(
- singletons.begin() );
- iPos != singletons.end(); ++iPos )
- {
- ::std::pair<OUString, OUString> const & sp = *iPos;
- const OUString name( OUSTR("/singletons/") + sp.first );
- // assure no arguments:
- try {
- xRootContext->removeByName( name + OUSTR("/arguments"));
- } catch (container::NoSuchElementException &) {}
- // used service:
- try {
- xRootContext->insertByName(
- name + OUSTR("/service"), Any(sp.second) );
- } catch (container::ElementExistException &) {
- xRootContext->replaceByName(
- name + OUSTR("/service"), Any(sp.second) );
- }
- // singleton entry:
- try {
- xRootContext->insertByName( name, Any() );
- } catch (container::ElementExistException & exc) {
- (void) exc; // avoid warnings
- OSL_ENSURE(
- 0, OUStringToOString(
- exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
- xRootContext->replaceByName( name, Any() );
- }
- }
- }
- }
+ std::vector< css::uno::Reference< css::uno::XInterface > > factories;
+ getComponentInfo(&data, &factories, context);
+ if (!startup) {
+ that->componentLiveInsertion(data, factories);
}
-
m_registered = REG_REGISTERED;
- getMyBackend()->addDataToDb(url, data);
- }
- else // revokePackage()
- {
- // set to VOID during revocation process:
+ that->addDataToDb(url, data);
+ } else { // revoke
m_registered = REG_VOID;
-
- //get the remote context. If it does not exist then use the local one
- Reference<XComponentContext> xContext(
- that->getObject( url ), UNO_QUERY );
- bool bRemoteContext = false;
- if (!xContext.is())
- xContext = that->getComponentContext();
- else
- bRemoteContext = true;
-
- t_stringlist implNames;
- t_stringpairvec singletons;
- if (m_bRemoved)
- {
- implNames = m_registeredComponentsDb.implementationNames;
- singletons = m_registeredComponentsDb.singletons;
+ ComponentBackendDb::Data data(that->readDataFromDb(url));
+ css::uno::Reference< css::uno::XComponentContext > context(
+ that->getObject(url), css::uno::UNO_QUERY);
+ bool remoteContext = context.is();
+ if (!remoteContext) {
+ context = that->getComponentContext();
}
- else
- {
- getComponentInfo( &implNames, &singletons, xContext );
+ if (!startup) {
+ that->componentLiveRemoval(data);
}
-
- if (!startup)
- {
- // factories live removal:
- const Reference<container::XSet> xSet(
- that->getComponentContext()->getServiceManager(), UNO_QUERY_THROW );
- for ( t_stringlist::const_iterator iPos( implNames.begin() );
- iPos != implNames.end(); ++iPos )
- {
- OUString const & implName = *iPos;
- try {
- xSet->remove( Any(implName) );
- } // ignore if factory has not been live deployed:
- catch (container::NoSuchElementException &) {
- }
- }
-
- if (! singletons.empty())
- {
- // singletons live removal:
- const Reference<container::XNameContainer> xRootContext(
- that->getComponentContext()->getValueByName(
- OUSTR("_root") ), UNO_QUERY );
- if (xRootContext.is())
- {
- for ( t_stringpairvec::const_iterator iPos(
- singletons.begin() );
- iPos != singletons.end(); ++iPos )
- {
- ::std::pair<OUString, OUString> const & sp = *iPos;
- const OUString name( OUSTR("/singletons/") + sp.first );
- // arguments:
- try {
- xRootContext->removeByName( name + OUSTR("/arguments"));
- }
- catch (container::NoSuchElementException &) {}
- // used service:
- try {
- xRootContext->removeByName( name + OUSTR("/service") );
- }
- catch (container::NoSuchElementException &) {}
- // singleton entry:
- try {
- xRootContext->removeByName( name );
- }
- catch (container::NoSuchElementException & exc) {
- (void) exc; // avoid warnings
- OSL_ENSURE(
- 0, OUStringToOString(
- exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
- }
- }
- }
- }
+ css::uno::Reference< css::registry::XImplementationRegistration >(
+ context->getServiceManager()->createInstanceWithContext(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.registry.ImplementationRegistration")),
+ context),
+ css::uno::UNO_QUERY_THROW)->revokeImplementation(url, getRDB());
+ if (data.javaTypeLibrary) {
+ that->removeFromUnoRc(RCITEM_JAR_TYPELIB, url, xCmdEnv);
+ }
+ if (remoteContext) {
+ that->releaseObject(url);
}
-
- const Reference<registry::XSimpleRegistry> xServicesRDB( getRDB() );
- const Reference<registry::XImplementationRegistration> xImplReg(
- xContext->getServiceManager()->createInstanceWithContext(
- OUSTR("com.sun.star.registry.ImplementationRegistration"),
- xContext ), UNO_QUERY_THROW );
- xImplReg->revokeImplementation( url, xServicesRDB );
-
- if (isJavaTypelib)
- that->removeFromUnoRc( java, url, xCmdEnv );
-
- if (bRemoteContext)
- that->releaseObject( url );
-
m_registered = REG_NOT_REGISTERED;
- getMyBackend()->deleteDataFromDb(url);
+ getMyBackend()->revokeEntryFromDb(url);
}
}
-//##############################################################################
BackendImpl::TypelibraryPackageImpl::TypelibraryPackageImpl(
::rtl::Reference<PackageRegistryBackend> const & myBackend,
OUString const & url, OUString const & name,
@@ -1481,7 +1688,8 @@ BackendImpl::TypelibraryPackageImpl::isRegistered_(
return beans::Optional< beans::Ambiguous<sal_Bool> >(
true /* IsPresent */,
beans::Ambiguous<sal_Bool>(
- that->hasInUnoRc( m_jarFile, getURL() ),
+ that->hasInUnoRc(
+ m_jarFile ? RCITEM_JAR_TYPELIB : RCITEM_RDB_TYPELIB, getURL() ),
false /* IsAmbiguous */ ) );
}
@@ -1547,11 +1755,13 @@ void BackendImpl::TypelibraryPackageImpl::processPackage_(
}
}
- that->addToUnoRc( m_jarFile, url, xCmdEnv );
+ that->addToUnoRc( m_jarFile ? RCITEM_JAR_TYPELIB : RCITEM_RDB_TYPELIB,
+ url, xCmdEnv );
}
else // revokePackage()
{
- that->removeFromUnoRc( m_jarFile, url, xCmdEnv );
+ that->removeFromUnoRc(
+ m_jarFile ? RCITEM_JAR_TYPELIB : RCITEM_RDB_TYPELIB, url, xCmdEnv );
// revoking types at runtime, possible, sensible?
if (!m_xTDprov.is())
@@ -1571,6 +1781,201 @@ void BackendImpl::TypelibraryPackageImpl::processPackage_(
}
}
+BackendImpl::OtherPlatformPackageImpl::OtherPlatformPackageImpl(
+ ::rtl::Reference<PackageRegistryBackend> const & myBackend,
+ OUString const & url, OUString const & name,
+ Reference<deployment::XPackageTypeInfo> const & xPackageType,
+ bool bRemoved, OUString const & identifier, OUString const& rPlatform)
+ : Package(myBackend, url, name, name, xPackageType, bRemoved, identifier)
+ , m_aPlatform(rPlatform)
+{
+ OSL_PRECOND(bRemoved, "this class can only be used for removing packages!");
+}
+
+BackendImpl *
+BackendImpl::OtherPlatformPackageImpl::getMyBackend() const
+{
+ BackendImpl * pBackend = static_cast<BackendImpl *>(m_myBackend.get());
+ if (NULL == pBackend)
+ {
+ //Throws a DisposedException
+ check();
+ //We should never get here...
+ throw RuntimeException(
+ OUSTR("Failed to get the BackendImpl"),
+ static_cast<OWeakObject*>(const_cast<OtherPlatformPackageImpl*>(this)));
+ }
+ return pBackend;
+}
+
+Reference<registry::XSimpleRegistry> const
+BackendImpl::OtherPlatformPackageImpl::impl_openRDB() const
+{
+ OUString const aRDB(m_aPlatform + OUString(RTL_CONSTASCII_USTRINGPARAM(".rdb")));
+ OUString const aRDBPath(makeURL(getMyBackend()->getCachePath(), aRDB));
+
+ Reference<registry::XSimpleRegistry> xRegistry;
+
+ try
+ {
+ xRegistry.set(
+ impl_createInstance(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.registry.SimpleRegistry"))),
+ UNO_QUERY)
+ ;
+ if (xRegistry.is())
+ xRegistry->open(expandUnoRcUrl(aRDBPath), false, false);
+ }
+ catch (registry::InvalidRegistryException const&)
+ {
+ // If the registry does not exist, we do not need to bother at all
+ xRegistry.set(0);
+ }
+
+ OSL_POSTCOND(xRegistry.is(), "could not create registry for the package's platform");
+ return xRegistry;
+}
+
+Reference<XInterface> const
+BackendImpl::OtherPlatformPackageImpl::impl_createInstance(OUString const& rService)
+const
+{
+ Reference<XComponentContext> const xContext(getMyBackend()->getComponentContext());
+ OSL_ASSERT(xContext.is());
+ Reference<XInterface> xService;
+ if (xContext.is())
+ xService.set(xContext->getServiceManager()->createInstanceWithContext(rService, xContext));
+ return xService;
+}
+
+beans::Optional<beans::Ambiguous<sal_Bool> >
+BackendImpl::OtherPlatformPackageImpl::isRegistered_(
+ ::osl::ResettableMutexGuard& /* guard */,
+ ::rtl::Reference<AbortChannel> const& /* abortChannel */,
+ Reference<XCommandEnvironment> const& /* xCmdEnv */ )
+{
+ return beans::Optional<beans::Ambiguous<sal_Bool> >(sal_True,
+ beans::Ambiguous<sal_Bool>(sal_True, sal_False));
+}
+
+void
+BackendImpl::OtherPlatformPackageImpl::processPackage_(
+ ::osl::ResettableMutexGuard& /* guard */,
+ bool bRegisterPackage,
+ bool /* bStartup */,
+ ::rtl::Reference<AbortChannel> const& /* abortChannel */,
+ Reference<XCommandEnvironment> const& /* xCmdEnv */)
+{
+ OSL_PRECOND(!bRegisterPackage, "this class can only be used for removing packages!");
+ (void) bRegisterPackage;
+
+ OUString const aURL(getURL());
+
+ Reference<registry::XSimpleRegistry> const xServicesRDB(impl_openRDB());
+ Reference<registry::XImplementationRegistration> const xImplReg(
+ impl_createInstance(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.registry.ImplementationRegistration"))),
+ UNO_QUERY)
+ ;
+ if (xImplReg.is() && xServicesRDB.is())
+ xImplReg->revokeImplementation(aURL, xServicesRDB);
+ if (xServicesRDB.is())
+ xServicesRDB->close();
+
+ getMyBackend()->revokeEntryFromDb(aURL);
+}
+
+BackendImpl * BackendImpl::ComponentsPackageImpl::getMyBackend() const
+{
+ BackendImpl * pBackend = static_cast<BackendImpl *>(m_myBackend.get());
+ if (NULL == pBackend)
+ {
+ //Throws a DisposedException
+ check();
+ //We should never get here...
+ throw RuntimeException(
+ OUSTR("Failed to get the BackendImpl"),
+ static_cast<OWeakObject*>(const_cast<ComponentsPackageImpl *>(this)));
+ }
+ return pBackend;
+}
+
+beans::Optional< beans::Ambiguous<sal_Bool> >
+BackendImpl::ComponentsPackageImpl::isRegistered_(
+ ::osl::ResettableMutexGuard &,
+ ::rtl::Reference<AbortChannel> const &,
+ Reference<XCommandEnvironment> const & )
+{
+ return beans::Optional< beans::Ambiguous<sal_Bool> >(
+ true,
+ beans::Ambiguous<sal_Bool>(
+ getMyBackend()->hasInUnoRc(RCITEM_COMPONENTS, getURL()), false));
+}
+
+void BackendImpl::ComponentsPackageImpl::processPackage_(
+ ::osl::ResettableMutexGuard &,
+ bool doRegisterPackage,
+ bool startup,
+ ::rtl::Reference<AbortChannel> const & abortChannel,
+ Reference<XCommandEnvironment> const & xCmdEnv )
+{
+ BackendImpl * that = getMyBackend();
+ rtl::OUString url(getURL());
+ if (doRegisterPackage) {
+ ComponentBackendDb::Data data;
+ data.javaTypeLibrary = false;
+ std::vector< css::uno::Reference< css::uno::XInterface > > factories;
+ css::uno::Reference< css::uno::XComponentContext > context(
+ that->getObject(url), css::uno::UNO_QUERY);
+ if (!context.is()) {
+ context.set(
+ that->insertObject(
+ url,
+ raise_uno_process(
+ that->getComponentContext(), abortChannel)),
+ css::uno::UNO_QUERY_THROW);
+ }
+ css::uno::Reference< css::registry::XSimpleRegistry > registry(
+ css::uno::Reference< css::lang::XMultiComponentFactory >(
+ that->getComponentContext()->getServiceManager(),
+ css::uno::UNO_SET_THROW)->createInstanceWithContext(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.registry.SimpleRegistry")),
+ that->getComponentContext()),
+ css::uno::UNO_QUERY_THROW);
+ registry->open(expandUnoRcUrl(url), true, false);
+ getMyBackend()->extractComponentData(
+ context,
+ that->openRegistryKey(
+ registry->getRootKey(),
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("IMPLEMENTATIONS"))),
+ &data, &factories, 0, 0);
+ registry->close();
+ if (!startup) {
+ that->componentLiveInsertion(data, factories);
+ }
+ that->addDataToDb(url, data);
+ that->addToUnoRc(RCITEM_COMPONENTS, url, xCmdEnv);
+ } else { // revoke
+ that->removeFromUnoRc(RCITEM_COMPONENTS, url, xCmdEnv);
+ if (!startup) {
+ that->componentLiveRemoval(that->readDataFromDb(url));
+ }
+ that->releaseObject(url);
+ that->revokeEntryFromDb(url);
+ }
+}
+
+BackendImpl::ComponentsPackageImpl::ComponentsPackageImpl(
+ ::rtl::Reference<PackageRegistryBackend> const & myBackend,
+ OUString const & url, OUString const & name,
+ Reference<deployment::XPackageTypeInfo> const & xPackageType,
+ bool bRemoved, OUString const & identifier)
+ : Package( myBackend, url, name, name /* display-name */,
+ xPackageType, bRemoved, identifier)
+{}
+
} // anon namespace
namespace sdecl = comphelper::service_decl;
diff --git a/desktop/source/deployment/registry/component/dp_component.hrc b/desktop/source/deployment/registry/component/dp_component.hrc
index 5e9993ab12..82bb55068d 100644..100755
--- a/desktop/source/deployment/registry/component/dp_component.hrc
+++ b/desktop/source/deployment/registry/component/dp_component.hrc
@@ -33,6 +33,7 @@
#define RID_STR_DYN_COMPONENT (RID_DEPLOYMENT_COMPONENT_START+10)
#define RID_STR_JAVA_COMPONENT (RID_DEPLOYMENT_COMPONENT_START+11)
#define RID_STR_PYTHON_COMPONENT (RID_DEPLOYMENT_COMPONENT_START+12)
+#define RID_STR_COMPONENTS (RID_DEPLOYMENT_COMPONENT_START+13)
#define RID_STR_RDB_TYPELIB (RID_DEPLOYMENT_COMPONENT_START+20)
#define RID_STR_JAVA_TYPELIB (RID_DEPLOYMENT_COMPONENT_START+21)
diff --git a/desktop/source/deployment/registry/component/dp_component.src b/desktop/source/deployment/registry/component/dp_component.src
index 52dfa568eb..1b2a7c3641 100644
--- a/desktop/source/deployment/registry/component/dp_component.src
+++ b/desktop/source/deployment/registry/component/dp_component.src
@@ -42,6 +42,11 @@ String RID_STR_PYTHON_COMPONENT
Text [ en-US ] = "UNO Python Component";
};
+String RID_STR_COMPONENTS
+{
+ Text [ en-US ] = "UNO Components";
+};
+
String RID_STR_RDB_TYPELIB
{
Text [ en-US ] = "UNO RDB Type Library";
diff --git a/desktop/source/deployment/registry/component/makefile.mk b/desktop/source/deployment/registry/component/makefile.mk
index b7ee5c203c..b7ee5c203c 100644..100755
--- a/desktop/source/deployment/registry/component/makefile.mk
+++ b/desktop/source/deployment/registry/component/makefile.mk
diff --git a/desktop/source/deployment/registry/configuration/dp_configuration.cxx b/desktop/source/deployment/registry/configuration/dp_configuration.cxx
index 2688a277f9..d3e8f349fd 100644
--- a/desktop/source/deployment/registry/configuration/dp_configuration.cxx
+++ b/desktop/source/deployment/registry/configuration/dp_configuration.cxx
@@ -132,16 +132,21 @@ class BackendImpl : public ::dp_registry::backend::PackageRegistryBackend
void configmgrini_verify_init(
Reference<XCommandEnvironment> const & xCmdEnv );
void configmgrini_flush( Reference<XCommandEnvironment> const & xCmdEnv );
-
- bool addToConfigmgrIni( bool isSchema, OUString const & url,
+
+ /* The paramter isURL is false in the case of adding the conf:ini-entry
+ value from the backend db. This entry already contains the path as it
+ is used in the configmgr.ini.
+ */
+ bool addToConfigmgrIni( bool isSchema, bool isURL, OUString const & url,
Reference<XCommandEnvironment> const & xCmdEnv );
bool removeFromConfigmgrIni( bool isSchema, OUString const & url,
Reference<XCommandEnvironment> const & xCmdEnv );
void addDataToDb(OUString const & url, ConfigurationBackendDb::Data const & data);
::boost::optional<ConfigurationBackendDb::Data> readDataFromDb(OUString const & url);
- OUString deleteDataFromDb(OUString const & url);
- ::std::list<OUString> getAllIniEntries();
+ void revokeEntryFromDb(OUString const & url);
+ bool hasActiveEntry(OUString const & url);
+ bool activateEntry(OUString const & url);
public:
BackendImpl( Sequence<Any> const & args,
@@ -150,6 +155,9 @@ public:
// XPackageRegistry
virtual Sequence< Reference<deployment::XPackageTypeInfo> > SAL_CALL
getSupportedPackageTypes() throw (RuntimeException);
+ virtual void SAL_CALL packageRemoved(OUString const & url, OUString const & mediaType)
+ throw (deployment::DeploymentException,
+ uno::RuntimeException);
using PackageRegistryBackend::disposing;
};
@@ -185,13 +193,13 @@ BackendImpl::BackendImpl(
"vnd.sun.star.configuration-data"),
OUSTR("*.xcu"),
getResourceString(RID_STR_CONF_DATA),
- RID_IMG_CONF_XML, RID_IMG_CONF_XML_HC ) ),
+ RID_IMG_CONF_XML ) ),
m_xConfSchemaTypeInfo( new Package::TypeInfo(
OUSTR("application/"
"vnd.sun.star.configuration-schema"),
OUSTR("*.xcs"),
getResourceString(RID_STR_CONF_SCHEMA),
- RID_IMG_CONF_XML, RID_IMG_CONF_XML_HC ) ),
+ RID_IMG_CONF_XML ) ),
m_typeInfos( 2 )
{
m_typeInfos[ 0 ] = m_xConfDataTypeInfo;
@@ -241,26 +249,24 @@ void BackendImpl::addDataToDb(
return data;
}
-OUString BackendImpl::deleteDataFromDb(OUString const & url)
+void BackendImpl::revokeEntryFromDb(OUString const & url)
{
- OUString url2(url);
- if (m_backendDb.get()) {
- boost::optional< ConfigurationBackendDb::Data > data(
- m_backendDb->getEntry(url));
- if (data) {
- url2 = expandUnoRcTerm(data->iniEntry);
- }
- m_backendDb->removeEntry(url);
- }
- return url2;
+ if (m_backendDb.get())
+ m_backendDb->revokeEntry(url);
}
-::std::list<OUString> BackendImpl::getAllIniEntries()
+bool BackendImpl::hasActiveEntry(OUString const & url)
{
if (m_backendDb.get())
- return m_backendDb->getAllIniEntries();
- else
- return ::std::list<OUString>();
+ return m_backendDb->hasActiveEntry(url);
+ return false;
+}
+
+bool BackendImpl::activateEntry(OUString const & url)
+{
+ if (m_backendDb.get())
+ return m_backendDb->activateEntry(url);
+ return false;
}
@@ -272,6 +278,13 @@ BackendImpl::getSupportedPackageTypes() throw (RuntimeException)
{
return m_typeInfos;
}
+void BackendImpl::packageRemoved(OUString const & url, OUString const & /*mediaType*/)
+ throw (deployment::DeploymentException,
+ uno::RuntimeException)
+{
+ if (m_backendDb.get())
+ m_backendDb->removeEntry(url);
+}
// PackageRegistryBackend
//______________________________________________________________________________
@@ -342,7 +355,6 @@ Reference<deployment::XPackage> BackendImpl::bindPackage_(
static_cast<sal_Int16>(-1) );
}
-//##############################################################################
//______________________________________________________________________________
void BackendImpl::configmgrini_verify_init(
@@ -458,10 +470,10 @@ void BackendImpl::configmgrini_flush(
}
//______________________________________________________________________________
-bool BackendImpl::addToConfigmgrIni( bool isSchema, OUString const & url_,
+bool BackendImpl::addToConfigmgrIni( bool isSchema, bool isURL, OUString const & url_,
Reference<XCommandEnvironment> const & xCmdEnv )
{
- const OUString rcterm( dp_misc::makeRcTerm(url_) );
+ const OUString rcterm( isURL ? dp_misc::makeRcTerm(url_) : url_ );
const ::osl::MutexGuard guard( getMutex() );
configmgrini_verify_init( xCmdEnv );
t_stringlist & rSet = getFiles(isSchema);
@@ -506,10 +518,10 @@ bool BackendImpl::removeFromConfigmgrIni(
return true;
}
-//##############################################################################
// Package
//______________________________________________________________________________
+
BackendImpl * BackendImpl::PackageImpl::getMyBackend() const
{
BackendImpl * pBackend = static_cast<BackendImpl *>(m_myBackend.get());
@@ -535,7 +547,7 @@ BackendImpl::PackageImpl::isRegistered_(
const rtl::OUString url(getURL());
bool bReg = false;
- if (that->readDataFromDb(getURL()))
+ if (that->hasActiveEntry(getURL()))
bReg = true;
if (!bReg)
//fallback for user extension registered in berkeley DB
@@ -678,38 +690,48 @@ void BackendImpl::PackageImpl::processPackage_(
if (doRegisterPackage)
{
- ConfigurationBackendDb::Data data;
- if (!m_isSchema)
+ if (getMyBackend()->activateEntry(getURL()))
{
- const OUString sModFolder = that->createFolder(OUString(), xCmdEnv);
- bool out_replaced = false;
- url = replaceOrigin(url, sModFolder, xCmdEnv, out_replaced);
- if (out_replaced)
- data.dataUrl = sModFolder;
- else
- deleteTempFolder(sModFolder);
+ ::boost::optional<ConfigurationBackendDb::Data> data = that->readDataFromDb(url);
+ OSL_ASSERT(data);
+ that->addToConfigmgrIni( m_isSchema, false, data->iniEntry, xCmdEnv );
}
- //No need for live-deployment for bundled extension, because OOo
- //restarts after installation
- if (that->m_eContext != CONTEXT_BUNDLED
- && !startup)
+ else
{
- if (m_isSchema)
+ ConfigurationBackendDb::Data data;
+ if (!m_isSchema)
{
- com::sun::star::configuration::Update::get(
- that->m_xComponentContext)->insertExtensionXcsFile(
- that->m_eContext == CONTEXT_SHARED, expandUnoRcUrl(url));
+ const OUString sModFolder = that->createFolder(OUString(), xCmdEnv);
+ bool out_replaced = false;
+ url = replaceOrigin(url, sModFolder, xCmdEnv, out_replaced);
+ if (out_replaced)
+ data.dataUrl = sModFolder;
+ else
+ deleteTempFolder(sModFolder);
}
- else
+ //No need for live-deployment for bundled extension, because OOo
+ //restarts after installation
+ if (that->m_eContext != CONTEXT_BUNDLED
+ && that->m_eContext != CONTEXT_BUNDLED_PREREG
+ && !startup)
{
- com::sun::star::configuration::Update::get(
- that->m_xComponentContext)->insertExtensionXcuFile(
- that->m_eContext == CONTEXT_SHARED, expandUnoRcUrl(url));
+ if (m_isSchema)
+ {
+ com::sun::star::configuration::Update::get(
+ that->m_xComponentContext)->insertExtensionXcsFile(
+ that->m_eContext == CONTEXT_SHARED, expandUnoRcUrl(url));
+ }
+ else
+ {
+ com::sun::star::configuration::Update::get(
+ that->m_xComponentContext)->insertExtensionXcuFile(
+ that->m_eContext == CONTEXT_SHARED, expandUnoRcUrl(url));
+ }
}
+ that->addToConfigmgrIni( m_isSchema, true, url, xCmdEnv );
+ data.iniEntry = dp_misc::makeRcTerm(url);
+ that->addDataToDb(getURL(), data);
}
- that->addToConfigmgrIni( m_isSchema, url, xCmdEnv );
- data.iniEntry = dp_misc::makeRcTerm(url);
- that->addDataToDb(getURL(), data);
}
else // revoke
{
@@ -742,7 +764,7 @@ void BackendImpl::PackageImpl::processPackage_(
else
deleteTempFolder(sModFolder);
}
- that->addToConfigmgrIni(schema, url_replaced, xCmdEnv);
+ that->addToConfigmgrIni(schema, true, url_replaced, xCmdEnv);
data.iniEntry = dp_misc::makeRcTerm(url_replaced);
that->addDataToDb(url2, data);
}
@@ -760,12 +782,17 @@ void BackendImpl::PackageImpl::processPackage_(
OSL_ASSERT(0);
}
}
- url = that->deleteDataFromDb(url);
- if (!m_isSchema) {
+
+ ::boost::optional<ConfigurationBackendDb::Data> data = that->readDataFromDb(url);
+ //If an xcu file was life deployed then always a data entry is written.
+ //If the xcu file was already in the configmr.ini then there is also
+ //a data entry
+ if (!m_isSchema && data)
+ {
com::sun::star::configuration::Update::get(
- that->m_xComponentContext)->removeExtensionXcuFile(
- expandUnoRcUrl(url));
+ that->m_xComponentContext)->removeExtensionXcuFile(expandUnoRcTerm(data->iniEntry));
}
+ that->revokeEntryFromDb(url);
}
}
diff --git a/desktop/source/deployment/registry/configuration/dp_configuration.hrc b/desktop/source/deployment/registry/configuration/dp_configuration.hrc
index 479f50e20b..479f50e20b 100644..100755
--- a/desktop/source/deployment/registry/configuration/dp_configuration.hrc
+++ b/desktop/source/deployment/registry/configuration/dp_configuration.hrc
diff --git a/desktop/source/deployment/registry/configuration/dp_configurationbackenddb.cxx b/desktop/source/deployment/registry/configuration/dp_configurationbackenddb.cxx
index a0cafe0331..ecc09cb669 100644
--- a/desktop/source/deployment/registry/configuration/dp_configurationbackenddb.cxx
+++ b/desktop/source/deployment/registry/configuration/dp_configurationbackenddb.cxx
@@ -84,12 +84,15 @@ OUString ConfigurationBackendDb::getKeyElementName()
void ConfigurationBackendDb::addEntry(::rtl::OUString const & url, Data const & data)
{
try{
- Reference<css::xml::dom::XNode> helpNode
- = writeKeyElement(url);
-
- writeSimpleElement(OUSTR("data-url"), data.dataUrl, helpNode);
- writeSimpleElement(OUSTR("ini-entry"), data.iniEntry, helpNode);
- save();
+ if (!activateEntry(url))
+ {
+ Reference<css::xml::dom::XNode> helpNode
+ = writeKeyElement(url);
+
+ writeSimpleElement(OUSTR("data-url"), data.dataUrl, helpNode);
+ writeSimpleElement(OUSTR("ini-entry"), data.iniEntry, helpNode);
+ save();
+ }
}
catch (css::deployment::DeploymentException& )
{
@@ -171,13 +174,6 @@ ConfigurationBackendDb::getEntry(::rtl::OUString const & url)
}
}
-::std::list<OUString> ConfigurationBackendDb::getAllIniEntries()
-{
- return getOneChildFromAllEntries(OUSTR("ini-entry"));
-}
-
-
-
} // namespace configuration
} // namespace backend
} // namespace dp_registry
diff --git a/desktop/source/deployment/registry/configuration/dp_configurationbackenddb.hxx b/desktop/source/deployment/registry/configuration/dp_configurationbackenddb.hxx
index 7cb02edf55..a652184aec 100644
--- a/desktop/source/deployment/registry/configuration/dp_configurationbackenddb.hxx
+++ b/desktop/source/deployment/registry/configuration/dp_configurationbackenddb.hxx
@@ -82,7 +82,6 @@ public:
::boost::optional<Data> getEntry(::rtl::OUString const & url);
::std::list< ::rtl::OUString> getAllDataUrls();
- ::std::list< ::rtl::OUString> getAllIniEntries();
};
diff --git a/desktop/source/deployment/registry/configuration/makefile.mk b/desktop/source/deployment/registry/configuration/makefile.mk
index 9bcbd50d42..9bcbd50d42 100644..100755
--- a/desktop/source/deployment/registry/configuration/makefile.mk
+++ b/desktop/source/deployment/registry/configuration/makefile.mk
diff --git a/desktop/source/deployment/registry/dp_backend.cxx b/desktop/source/deployment/registry/dp_backend.cxx
index 957c55ef93..67141e7755 100644
--- a/desktop/source/deployment/registry/dp_backend.cxx
+++ b/desktop/source/deployment/registry/dp_backend.cxx
@@ -40,11 +40,13 @@
#include "ucbhelper/content.hxx"
#include "com/sun/star/lang/WrappedTargetRuntimeException.hpp"
#include "com/sun/star/deployment/InvalidRemovedParameterException.hpp"
+#include "com/sun/star/deployment/thePackageManagerFactory.hpp"
#include "com/sun/star/ucb/InteractiveAugmentedIOException.hpp"
#include "com/sun/star/ucb/IOErrorCode.hpp"
#include "com/sun/star/beans/StringPair.hpp"
#include "com/sun/star/sdbc/XResultSet.hpp"
#include "com/sun/star/sdbc/XRow.hpp"
+#include "unotools/tempfile.hxx"
using namespace ::dp_misc;
@@ -100,6 +102,8 @@ PackageRegistryBackend::PackageRegistryBackend(
m_eContext = CONTEXT_BUNDLED;
else if (m_context.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("tmp") ))
m_eContext = CONTEXT_TMP;
+ else if (m_context.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("bundled_prereg") ))
+ m_eContext = CONTEXT_BUNDLED_PREREG;
else if (m_context.matchIgnoreAsciiCaseAsciiL(
RTL_CONSTASCII_STRINGPARAM("vnd.sun.star.tdoc:/") ))
m_eContext = CONTEXT_DOCUMENT;
@@ -122,7 +126,7 @@ void PackageRegistryBackend::check()
void PackageRegistryBackend::disposing()
{
try {
- for ( t_string2ref::const_iterator i = m_bound.begin(); i != m_bound.end(); i++)
+ for ( t_string2ref::const_iterator i = m_bound.begin(); i != m_bound.end(); ++i)
i->second->removeEventListener(this);
m_bound.clear();
m_xComponentContext.clear();
@@ -223,42 +227,43 @@ OUString PackageRegistryBackend::createFolder(
OUString const & relUrl,
Reference<ucb::XCommandEnvironment> const & xCmdEnv)
{
- OUString sDataFolder = makeURL(getCachePath(), relUrl);
+ const OUString sDataFolder = makeURL(getCachePath(), relUrl);
//make sure the folder exist
ucbhelper::Content dataContent;
::dp_misc::create_folder(&dataContent, sDataFolder, xCmdEnv);
- OUString sDataFolderURL = dp_misc::expandUnoRcUrl(sDataFolder);
-
- OUString tempEntry;
- if (::osl::File::createTempFile(
- &sDataFolderURL, 0, &tempEntry ) != ::osl::File::E_None)
- throw RuntimeException(
- OUSTR("::osl::File::createTempFile() failed!"), 0 );
- tempEntry = tempEntry.copy( tempEntry.lastIndexOf( '/' ) + 1 );
- OUString destFolder= makeURL(sDataFolder, tempEntry) + OUSTR("_");
- ::ucbhelper::Content destFolderContent;
- dp_misc::create_folder( &destFolderContent, destFolder, xCmdEnv );
-
- return destFolder;
+ const OUString sDataFolderURL = dp_misc::expandUnoRcUrl(sDataFolder);
+ const String baseDir(sDataFolder);
+ const ::utl::TempFile aTemp(&baseDir, sal_True);
+ const OUString url = aTemp.GetURL();
+ return sDataFolder + url.copy(url.lastIndexOf('/'));
}
+//folderURL can have the extension .tmp or .tmp_
+//Before OOo 3.4 the created a tmp file with osl_createTempFile and
+//then created a Folder with a same name and a trailing '_'
+//If the folderURL has no '_' then there is no corresponding tmp file.
void PackageRegistryBackend::deleteTempFolder(
OUString const & folderUrl)
{
- OSL_ASSERT(folderUrl.getLength()
- && folderUrl[folderUrl.getLength() - 1] == '_');
- if (folderUrl.getLength()
- && folderUrl[folderUrl.getLength() - 1] == '_')
+ if (folderUrl.getLength())
{
- const OUString tempFile = folderUrl.copy(0, folderUrl.getLength() - 1);
erase_path( folderUrl, Reference<XCommandEnvironment>(),
false /* no throw: ignore errors */ );
- erase_path( tempFile, Reference<XCommandEnvironment>(),
- false /* no throw: ignore errors */ );
+
+ if (folderUrl[folderUrl.getLength() - 1] == '_')
+ {
+ const OUString tempFile = folderUrl.copy(0, folderUrl.getLength() - 1);
+ erase_path( tempFile, Reference<XCommandEnvironment>(),
+ false /* no throw: ignore errors */ );
+ }
}
}
+//usedFolders can contain folder names which have the extension .tmp or .tmp_
+//Before OOo 3.4 we created a tmp file with osl_createTempFile and
+//then created a Folder with a same name and a trailing '_'
+//If the folderURL has no '_' then there is no corresponding tmp file.
void PackageRegistryBackend::deleteUnusedFolders(
OUString const & relUrl,
::std::list< OUString> const & usedFolders)
@@ -271,11 +276,11 @@ void PackageRegistryBackend::deleteUnusedFolders(
Reference<sdbc::XResultSet> xResultSet(
tempFolder.createCursor(
Sequence<OUString>( &StrTitle::get(), 1 ),
- ::ucbhelper::INCLUDE_DOCUMENTS_ONLY ) );
+ ::ucbhelper::INCLUDE_FOLDERS_ONLY ) );
// get all temp directories:
::std::vector<OUString> tempEntries;
- char tmp[] = ".tmp";
+ const char tmp[] = ".tmp";
while (xResultSet->next())
{
@@ -284,21 +289,17 @@ void PackageRegistryBackend::deleteUnusedFolders(
xResultSet, UNO_QUERY_THROW )->getString(
1 /* Title */ ) );
- if (title.endsWithAsciiL(tmp, sizeof(tmp) - 1))
+ if (title.endsWithAsciiL(RTL_CONSTASCII_STRINGPARAM(tmp)))
tempEntries.push_back(
makeURLAppendSysPathSegment(sDataFolder, title));
}
for ( ::std::size_t pos = 0; pos < tempEntries.size(); ++pos )
{
- //usedFolders contains the urls to the folders which have
- //a trailing underscore
- const OUString tempFolderName = tempEntries[ pos ] + OUSTR("_");
-
- if (::std::find( usedFolders.begin(), usedFolders.end(), tempFolderName ) ==
+ if (::std::find( usedFolders.begin(), usedFolders.end(), tempEntries[pos] ) ==
usedFolders.end())
{
- deleteTempFolder(tempFolderName);
+ deleteTempFolder(tempEntries[pos]);
}
}
}
@@ -312,7 +313,6 @@ void PackageRegistryBackend::deleteUnusedFolders(
}
-//##############################################################################
//______________________________________________________________________________
Package::~Package()
@@ -524,6 +524,15 @@ OUString Package::getDescription() throw (
}
//______________________________________________________________________________
+OUString Package::getLicenseText() throw (
+ deployment::ExtensionRemovedException,RuntimeException)
+{
+ if (m_bRemoved)
+ throw deployment::ExtensionRemovedException();
+ return OUString();
+}
+
+//______________________________________________________________________________
Sequence<OUString> Package::getUpdateInformationURLs() throw (
deployment::ExtensionRemovedException, RuntimeException)
{
@@ -627,7 +636,7 @@ beans::Optional< beans::Ambiguous<sal_Bool> > Package::isRegistered(
catch (Exception &) {
Any exc( ::cppu::getCaughtException() );
throw deployment::DeploymentException(
- OUSTR("unexpected exception occured!"),
+ OUSTR("unexpected exception occurred!"),
static_cast<OWeakObject *>(this), exc );
}
}
@@ -669,7 +678,7 @@ void Package::processPackage_impl(
}
}
catch (RuntimeException &) {
- OSL_ENSURE( 0, "### unexpected RuntimeException!" );
+ OSL_FAIL( "### unexpected RuntimeException!" );
throw;
}
catch (CommandFailedException &) {
@@ -762,7 +771,6 @@ sal_Bool Package::isRemoved()
return m_bRemoved;
}
-//##############################################################################
//______________________________________________________________________________
Package::TypeInfo::~TypeInfo()
@@ -797,12 +805,19 @@ OUString Package::TypeInfo::getFileFilter() throw (RuntimeException)
}
//______________________________________________________________________________
-Any Package::TypeInfo::getIcon( sal_Bool highContrast, sal_Bool smallIcon )
+/**************************
+ * Get Icon
+ *
+ * @param highContrast NOTE: disabled the returning of high contrast icons.
+ * This bool is a noop now.
+ * @param smallIcon Return the small version of the icon
+ */
+Any Package::TypeInfo::getIcon( sal_Bool /*highContrast*/, sal_Bool smallIcon )
throw (RuntimeException)
{
if (! smallIcon)
return Any();
- const sal_uInt16 nIconId = (highContrast ? m_smallIcon_HC : m_smallIcon);
+ const sal_uInt16 nIconId = m_smallIcon;
return Any( &nIconId, getCppuType( static_cast<sal_uInt16 const *>(0) ) );
}
diff --git a/desktop/source/deployment/registry/dp_backenddb.cxx b/desktop/source/deployment/registry/dp_backenddb.cxx
index 730e848c50..4a84ee97c6 100644
--- a/desktop/source/deployment/registry/dp_backenddb.cxx
+++ b/desktop/source/deployment/registry/dp_backenddb.cxx
@@ -191,6 +191,74 @@ void BackendDb::removeEntry(::rtl::OUString const & url)
removeElement(sExpression.makeStringAndClear());
}
+void BackendDb::revokeEntry(::rtl::OUString const & url)
+{
+ try
+ {
+ Reference<css::xml::dom::XElement> entry = Reference<css::xml::dom::XElement>(getKeyElement(url), UNO_QUERY);
+ if (entry.is())
+ {
+ entry->setAttribute(OUSTR("revoked"), OUSTR("true"));
+ save();
+ }
+ }
+ catch(css::uno::Exception &)
+ {
+ Any exc( ::cppu::getCaughtException() );
+ throw css::deployment::DeploymentException(
+ OUSTR("Extension Manager: failed to revoke data entry in backend db: ") +
+ m_urlDb, 0, exc);
+ }
+}
+
+bool BackendDb::activateEntry(::rtl::OUString const & url)
+{
+ try
+ {
+ bool ret = false;
+ Reference<css::xml::dom::XElement> entry = Reference<css::xml::dom::XElement>(getKeyElement(url), UNO_QUERY);
+ if (entry.is())
+ {
+ //no attribute "active" means it is active, that is, registered.
+ entry->removeAttribute(OUSTR("revoked"));
+ save();
+ ret = true;
+ }
+ return ret;
+ }
+ catch(css::uno::Exception &)
+ {
+ Any exc( ::cppu::getCaughtException() );
+ throw css::deployment::DeploymentException(
+ OUSTR("Extension Manager: failed to revoke data entry in backend db: ") +
+ m_urlDb, 0, exc);
+ }
+}
+
+bool BackendDb::hasActiveEntry(::rtl::OUString const & url)
+{
+ try
+ {
+ bool ret = false;
+ Reference<css::xml::dom::XElement> entry = Reference<css::xml::dom::XElement>(getKeyElement(url), UNO_QUERY);
+ if (entry.is())
+ {
+ OUString sActive = entry->getAttribute(OUSTR("revoked"));
+ if (!sActive.equals(OUSTR("true")))
+ ret = true;
+ }
+ return ret;
+
+ }
+ catch(css::uno::Exception &)
+ {
+ Any exc( ::cppu::getCaughtException() );
+ throw css::deployment::DeploymentException(
+ OUSTR("Extension Manager: failed to determine an active entry in backend db: ") +
+ m_urlDb, 0, exc);
+ }
+}
+
Reference<css::xml::dom::XNode> BackendDb::getKeyElement(
::rtl::OUString const & url)
{
@@ -569,44 +637,43 @@ OUString BackendDb::readSimpleElement(
}
-
-//================================================================================
RegisteredDb::RegisteredDb(
Reference<XComponentContext> const & xContext,
::rtl::OUString const & url):BackendDb(xContext, url)
{
-
}
void RegisteredDb::addEntry(::rtl::OUString const & url)
{
try{
-
- const OUString sNameSpace = getDbNSName();
- const OUString sPrefix = getNSPrefix();
- const OUString sEntry = getKeyElementName();
-
- Reference<css::xml::dom::XDocument> doc = getDocument();
- Reference<css::xml::dom::XNode> root = doc->getFirstChild();
-
+ if (!activateEntry(url))
+ {
+ const OUString sNameSpace = getDbNSName();
+ const OUString sPrefix = getNSPrefix();
+ const OUString sEntry = getKeyElementName();
+
+ Reference<css::xml::dom::XDocument> doc = getDocument();
+ Reference<css::xml::dom::XNode> root = doc->getFirstChild();
+
#if OSL_DEBUG_LEVEL > 0
- //There must not be yet an entry with the same url
- OUString sExpression(
- sPrefix + OUSTR(":") + sEntry + OUSTR("[@url = \"") + url + OUSTR("\"]"));
- Reference<css::xml::dom::XNode> _extensionNode =
- getXPathAPI()->selectSingleNode(root, sExpression);
- OSL_ASSERT(! _extensionNode.is());
+ //There must not be yet an entry with the same url
+ OUString sExpression(
+ sPrefix + OUSTR(":") + sEntry + OUSTR("[@url = \"") + url + OUSTR("\"]"));
+ Reference<css::xml::dom::XNode> _extensionNode =
+ getXPathAPI()->selectSingleNode(root, sExpression);
+ OSL_ASSERT(! _extensionNode.is());
#endif
- Reference<css::xml::dom::XElement> helpElement(
- doc->createElementNS(sNameSpace, sPrefix + OUSTR(":") + sEntry));
-
- helpElement->setAttribute(OUSTR("url"), url);
-
- Reference<css::xml::dom::XNode> helpNode(
- helpElement, UNO_QUERY_THROW);
- root->appendChild(helpNode);
-
- save();
+ Reference<css::xml::dom::XElement> helpElement(
+ doc->createElementNS(sNameSpace, sPrefix + OUSTR(":") + sEntry));
+
+ helpElement->setAttribute(OUSTR("url"), url);
+
+ Reference<css::xml::dom::XNode> helpNode(
+ helpElement, UNO_QUERY_THROW);
+ root->appendChild(helpNode);
+
+ save();
+ }
}
catch(css::uno::Exception &)
{
@@ -629,14 +696,10 @@ bool RegisteredDb::getEntry(::rtl::OUString const & url)
Reference<css::xml::dom::XNode> root = doc->getFirstChild();
Reference<css::xml::xpath::XXPathAPI> xpathApi = getXPathAPI();
- //find the extension element that is to be removed
Reference<css::xml::dom::XNode> aNode =
xpathApi->selectSingleNode(root, sExpression);
- if (!aNode.is())
- {
- return false;
- }
- return true;
+
+ return aNode.is();
}
catch(css::uno::Exception &)
{
@@ -647,7 +710,6 @@ bool RegisteredDb::getEntry(::rtl::OUString const & url)
}
}
-
} // namespace backend
} // namespace dp_registry
diff --git a/desktop/source/deployment/registry/dp_registry.cxx b/desktop/source/deployment/registry/dp_registry.cxx
index a90f64b9cb..0b0f91a27f 100644
--- a/desktop/source/deployment/registry/dp_registry.cxx
+++ b/desktop/source/deployment/registry/dp_registry.cxx
@@ -50,9 +50,9 @@
#include "com/sun/star/util/XUpdatable.hpp"
#include "com/sun/star/container/XContentEnumerationAccess.hpp"
#include "com/sun/star/deployment/PackageRegistryBackend.hpp"
-#include <hash_map>
+#include <boost/unordered_map.hpp>
#include <set>
-#include <hash_set>
+#include <boost/unordered_set.hpp>
#include <memory>
using namespace ::dp_misc;
@@ -91,10 +91,10 @@ class PackageRegistryImpl : private MutexHolder, public t_helper
return str1.equalsIgnoreAsciiCase( str2 );
}
};
- typedef ::std::hash_map<
+ typedef ::boost::unordered_map<
OUString, Reference<deployment::XPackageRegistry>,
ci_string_hash, ci_string_equals > t_string2registry;
- typedef ::std::hash_map<
+ typedef ::boost::unordered_map<
OUString, OUString,
ci_string_hash, ci_string_equals > t_string2string;
typedef ::std::set<
@@ -136,6 +136,10 @@ public:
lang::IllegalArgumentException, RuntimeException);
virtual Sequence< Reference<deployment::XPackageTypeInfo> > SAL_CALL
getSupportedPackageTypes() throw (RuntimeException);
+ virtual void SAL_CALL packageRemoved(OUString const & url, OUString const & mediaType)
+ throw (deployment::DeploymentException,
+ RuntimeException);
+
};
//______________________________________________________________________________
@@ -186,11 +190,25 @@ OUString normalizeMediaType( OUString const & mediaType )
//______________________________________________________________________________
+void PackageRegistryImpl::packageRemoved(
+ ::rtl::OUString const & url, ::rtl::OUString const & mediaType)
+ throw (css::deployment::DeploymentException,
+ css::uno::RuntimeException)
+{
+ const t_string2registry::const_iterator i =
+ m_mediaType2backend.find(mediaType);
+
+ if (i != m_mediaType2backend.end())
+ {
+ i->second->packageRemoved(url, mediaType);
+ }
+}
+
void PackageRegistryImpl::insertBackend(
Reference<deployment::XPackageRegistry> const & xBackend )
{
m_allBackends.insert( xBackend );
- typedef ::std::hash_set<OUString, ::rtl::OUStringHash> t_stringset;
+ typedef ::boost::unordered_set<OUString, ::rtl::OUStringHash> t_stringset;
t_stringset ambiguousFilters;
const Sequence< Reference<deployment::XPackageTypeInfo> > packageTypes(
@@ -279,7 +297,7 @@ void PackageRegistryImpl::insertBackend(
xBackend, UNO_QUERY_THROW )->
getImplementationName() );
buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("\"!") );
- OSL_ENSURE( 0, ::rtl::OUStringToOString(
+ OSL_FAIL( ::rtl::OUStringToOString(
buf.makeStringAndClear(),
RTL_TEXTENCODING_UTF8 ) );
}
diff --git a/desktop/source/deployment/registry/executable/dp_executable.cxx b/desktop/source/deployment/registry/executable/dp_executable.cxx
index eb03c22464..035e21e236 100644
--- a/desktop/source/deployment/registry/executable/dp_executable.cxx
+++ b/desktop/source/deployment/registry/executable/dp_executable.cxx
@@ -72,6 +72,7 @@ class BackendImpl : public ::dp_registry::backend::PackageRegistryBackend
bool getFileAttributes(sal_uInt64& out_Attributes);
bool isUrlTargetInExtension();
+
public:
inline ExecutablePackageImpl(
::rtl::Reference<PackageRegistryBackend> const & myBackend,
@@ -84,7 +85,7 @@ class BackendImpl : public ::dp_registry::backend::PackageRegistryBackend
};
friend class ExecutablePackageImpl;
- typedef ::std::hash_map< OUString, Reference<XInterface>,
+ typedef ::boost::unordered_map< OUString, Reference<XInterface>,
::rtl::OUStringHash > t_string2object;
// PackageRegistryBackend
@@ -93,8 +94,8 @@ class BackendImpl : public ::dp_registry::backend::PackageRegistryBackend
OUString const & identifier, Reference<XCommandEnvironment> const & xCmdEnv );
void addDataToDb(OUString const & url);
- bool isRegisteredInDb(OUString const & url);
- void deleteDataFromDb(OUString const & url);
+ bool hasActiveEntry(OUString const & url);
+ void revokeEntryFromDb(OUString const & url);
Reference<deployment::XPackageTypeInfo> m_xExecutableTypeInfo;
std::auto_ptr<ExecutableBackendDb> m_backendDb;
@@ -105,6 +106,9 @@ public:
// XPackageRegistry
virtual Sequence< Reference<deployment::XPackageTypeInfo> > SAL_CALL
getSupportedPackageTypes() throw (RuntimeException);
+ virtual void SAL_CALL packageRemoved(OUString const & url, OUString const & mediaType)
+ throw (deployment::DeploymentException,
+ uno::RuntimeException);
using PackageRegistryBackend::disposing;
};
@@ -118,8 +122,7 @@ BackendImpl::BackendImpl(
OUSTR("application/vnd.sun.star.executable"),
OUSTR(""),
OUSTR("Executable"),
- RID_IMG_COMPONENT,
- RID_IMG_COMPONENT_HC ) )
+ RID_IMG_COMPONENT ) )
{
if (!transientMode())
{
@@ -135,20 +138,20 @@ void BackendImpl::addDataToDb(OUString const & url)
m_backendDb->addEntry(url);
}
-bool BackendImpl::isRegisteredInDb(OUString const & url)
+void BackendImpl::revokeEntryFromDb(OUString const & url)
{
- bool ret = false;
if (m_backendDb.get())
- ret = m_backendDb->getEntry(url);
- return ret;
+ m_backendDb->revokeEntry(url);
}
-void BackendImpl::deleteDataFromDb(OUString const & url)
+bool BackendImpl::hasActiveEntry(OUString const & url)
{
if (m_backendDb.get())
- m_backendDb->removeEntry(url);
+ return m_backendDb->hasActiveEntry(url);
+ return false;
}
+
// XPackageRegistry
Sequence< Reference<deployment::XPackageTypeInfo> >
BackendImpl::getSupportedPackageTypes() throw (RuntimeException)
@@ -157,6 +160,14 @@ BackendImpl::getSupportedPackageTypes() throw (RuntimeException)
& m_xExecutableTypeInfo, 1);
}
+void BackendImpl::packageRemoved(OUString const & url, OUString const & /*mediaType*/)
+ throw (deployment::DeploymentException,
+ uno::RuntimeException)
+{
+ if (m_backendDb.get())
+ m_backendDb->removeEntry(url);
+}
+
// PackageRegistryBackend
Reference<deployment::XPackage> BackendImpl::bindPackage_(
OUString const & url, OUString const & mediaType, sal_Bool bRemoved,
@@ -193,7 +204,6 @@ Reference<deployment::XPackage> BackendImpl::bindPackage_(
return Reference<deployment::XPackage>();
}
-//##############################################################################
// Package
@@ -218,7 +228,7 @@ BackendImpl::ExecutablePackageImpl::isRegistered_(
::rtl::Reference<dp_misc::AbortChannel> const &,
Reference<XCommandEnvironment> const & )
{
- bool registered = getMyBackend()->isRegisteredInDb(getURL());
+ bool registered = getMyBackend()->hasActiveEntry(getURL());
return beans::Optional< beans::Ambiguous<sal_Bool> >(
sal_True /* IsPresent */,
beans::Ambiguous<sal_Bool>(
@@ -249,7 +259,8 @@ void BackendImpl::ExecutablePackageImpl::processPackage_(
else if (getMyBackend()->m_context.equals(OUSTR("shared")))
attributes |= (osl_File_Attribute_OwnExe | osl_File_Attribute_GrpExe
| osl_File_Attribute_OthExe);
- else if (!getMyBackend()->m_context.equals(OUSTR("bundled")))
+ else if (!getMyBackend()->m_context.equals(OUSTR("bundled"))
+ && !getMyBackend()->m_context.equals(OUSTR("bundled_prereg")))
//Bundled extension are required to be in the properly
//installed. That is an executable must have the right flags
OSL_ASSERT(0);
@@ -262,7 +273,7 @@ void BackendImpl::ExecutablePackageImpl::processPackage_(
}
else
{
- getMyBackend()->deleteDataFromDb(getURL());
+ getMyBackend()->revokeEntryFromDb(getURL());
}
}
@@ -278,7 +289,8 @@ bool BackendImpl::ExecutablePackageImpl::isUrlTargetInExtension()
sExtensionDir = dp_misc::expandUnoRcTerm(OUSTR("$UNO_USER_PACKAGES_CACHE"));
else if (getMyBackend()->m_context.equals(OUSTR("shared")))
sExtensionDir = dp_misc::expandUnoRcTerm(OUSTR("$UNO_SHARED_PACKAGES_CACHE"));
- else if (getMyBackend()->m_context.equals(OUSTR("bundled")))
+ else if (getMyBackend()->m_context.equals(OUSTR("bundled"))
+ || getMyBackend()->m_context.equals(OUSTR("bundled_prereg")))
sExtensionDir = dp_misc::expandUnoRcTerm(OUSTR("$BUNDLED_EXTENSIONS"));
else
OSL_ASSERT(0);
@@ -313,7 +325,6 @@ bool BackendImpl::ExecutablePackageImpl::getFileAttributes(sal_uInt64& out_Attri
return bSuccess;
}
-//##############################################################################
} // anon namespace
diff --git a/desktop/source/deployment/registry/executable/makefile.mk b/desktop/source/deployment/registry/executable/makefile.mk
index 81b2baa44e..81b2baa44e 100644..100755
--- a/desktop/source/deployment/registry/executable/makefile.mk
+++ b/desktop/source/deployment/registry/executable/makefile.mk
diff --git a/desktop/source/deployment/registry/help/dp_help.cxx b/desktop/source/deployment/registry/help/dp_help.cxx
index 053929c4b1..6fdc9adaad 100644
--- a/desktop/source/deployment/registry/help/dp_help.cxx
+++ b/desktop/source/deployment/registry/help/dp_help.cxx
@@ -2,7 +2,7 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
+ *
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
@@ -41,7 +41,7 @@
#include "svl/inettype.hxx"
#include "unotools/pathoptions.hxx"
-#include <l10ntools/compilehelp.hxx>
+#include <l10ntools/compilehelp.hxx>
#include <com/sun/star/ucb/XSimpleFileAccess.hpp>
#include <com/sun/star/util/XMacroExpander.hpp>
#include <com/sun/star/uri/XUriReferenceFactory.hpp>
@@ -67,8 +67,6 @@ class BackendImpl : public ::dp_registry::backend::PackageRegistryBackend
{
BackendImpl * getMyBackend() const;
-// HelpBackendDb::Data m_dbData;
-
// Package
virtual beans::Optional< beans::Ambiguous<sal_Bool> > isRegistered_(
::osl::ResettableMutexGuard & guard,
@@ -81,7 +79,7 @@ class BackendImpl : public ::dp_registry::backend::PackageRegistryBackend
::rtl::Reference<AbortChannel> const & abortChannel,
Reference<XCommandEnvironment> const & xCmdEnv );
- bool extensionContainsCompiledHelp();
+
public:
PackageImpl(
::rtl::Reference<PackageRegistryBackend> const & myBackend,
@@ -89,6 +87,8 @@ class BackendImpl : public ::dp_registry::backend::PackageRegistryBackend
Reference<deployment::XPackageTypeInfo> const & xPackageType,
bool bRemoved, OUString const & identifier);
+ bool extensionContainsCompiledHelp();
+
//XPackage
virtual css::beans::Optional< ::rtl::OUString > SAL_CALL getRegistrationDataURL()
throw (deployment::ExtensionRemovedException, css::uno::RuntimeException);
@@ -101,14 +101,16 @@ class BackendImpl : public ::dp_registry::backend::PackageRegistryBackend
sal_Bool bRemoved, OUString const & identifier,
Reference<XCommandEnvironment> const & xCmdEnv );
- void implProcessHelp( Reference< deployment::XPackage > xPackage, bool doRegisterPackage,
- bool compiledHelp, Reference<ucb::XCommandEnvironment> const & xCmdEnv);
+ void implProcessHelp( PackageImpl * package, bool doRegisterPackage,
+ Reference<ucb::XCommandEnvironment> const & xCmdEnv);
void implCollectXhpFiles( const rtl::OUString& aDir,
std::vector< rtl::OUString >& o_rXhpFileVector );
void addDataToDb(OUString const & url, HelpBackendDb::Data const & data);
::boost::optional<HelpBackendDb::Data> readDataFromDb(OUString const & url);
- void deleteDataFromDb(OUString const & url);
+ bool hasActiveEntry(OUString const & url);
+ void revokeEntryFromDb(OUString const & url);
+ bool activateEntry(OUString const & url);
Reference< ucb::XSimpleFileAccess > getFileAccess( void );
Reference< ucb::XSimpleFileAccess > m_xSFA;
@@ -124,6 +126,10 @@ public:
// XPackageRegistry
virtual Sequence< Reference<deployment::XPackageTypeInfo> > SAL_CALL
getSupportedPackageTypes() throw (RuntimeException);
+ virtual void SAL_CALL packageRemoved(OUString const & url, OUString const & mediaType)
+ throw (deployment::DeploymentException,
+ uno::RuntimeException);
+
};
//______________________________________________________________________________
@@ -135,7 +141,7 @@ BackendImpl::BackendImpl(
OUSTR("application/vnd.sun.star.help"),
rtl::OUString(),
getResourceString(RID_STR_HELP),
- RID_IMG_HELP, RID_IMG_HELP_HC ) ),
+ RID_IMG_HELP ) ),
m_typeInfos( 1 )
{
m_typeInfos[ 0 ] = m_xHelpTypeInfo;
@@ -163,6 +169,14 @@ BackendImpl::getSupportedPackageTypes() throw (RuntimeException)
return m_typeInfos;
}
+void BackendImpl::packageRemoved(OUString const & url, OUString const & /*mediaType*/)
+ throw (deployment::DeploymentException,
+ uno::RuntimeException)
+{
+ if (m_backendDb.get())
+ m_backendDb->removeEntry(url);
+}
+
// PackageRegistryBackend
//______________________________________________________________________________
Reference<deployment::XPackage> BackendImpl::bindPackage_(
@@ -194,7 +208,7 @@ Reference<deployment::XPackage> BackendImpl::bindPackage_(
"vnd.sun.star.help"))
{
return new PackageImpl(
- this, url, name, m_xHelpTypeInfo, bRemoved,
+ this, url, name, m_xHelpTypeInfo, bRemoved,
identifier);
}
}
@@ -221,13 +235,27 @@ void BackendImpl::addDataToDb(
return data;
}
-void BackendImpl::deleteDataFromDb(OUString const & url)
+bool BackendImpl::hasActiveEntry(OUString const & url)
{
if (m_backendDb.get())
- m_backendDb->removeEntry(url);
+ return m_backendDb->hasActiveEntry(url);
+ return false;
}
-//##############################################################################
+void BackendImpl::revokeEntryFromDb(OUString const & url)
+{
+ if (m_backendDb.get())
+ m_backendDb->revokeEntry(url);
+}
+
+bool BackendImpl::activateEntry(OUString const & url)
+{
+ if (m_backendDb.get())
+ return m_backendDb->activateEntry(url);
+ return false;
+}
+
+
BackendImpl::PackageImpl::PackageImpl(
::rtl::Reference<PackageRegistryBackend> const & myBackend,
OUString const & url, OUString const & name,
@@ -236,13 +264,6 @@ BackendImpl::PackageImpl::PackageImpl(
: Package( myBackend, url, name, name, xPackageType, bRemoved,
identifier)
{
-// if (bRemoved)
-// {
-// ::boost::optional<HelpBackendDb::Data> opt =
-// getMyBackend()->readDataFromDb(url);
-// if (opt)
-// m_dbData = *opt;
-// }
}
// Package
@@ -250,23 +271,22 @@ BackendImpl * BackendImpl::PackageImpl::getMyBackend() const
{
BackendImpl * pBackend = static_cast<BackendImpl *>(m_myBackend.get());
if (NULL == pBackend)
- {
+ {
//May throw a DisposedException
check();
//We should never get here...
throw RuntimeException(
- OUSTR("Failed to get the BackendImpl"),
+ OUSTR("Failed to get the BackendImpl"),
static_cast<OWeakObject*>(const_cast<PackageImpl *>(this)));
}
return pBackend;
}
-
bool BackendImpl::PackageImpl::extensionContainsCompiledHelp()
{
bool bCompiled = true;
rtl::OUString aExpandedHelpURL = dp_misc::expandUnoRcUrl(getURL());
-
+
::osl::Directory helpFolder(aExpandedHelpURL);
if ( helpFolder.open() == ::osl::File::E_None)
{
@@ -307,11 +327,12 @@ bool BackendImpl::PackageImpl::extensionContainsCompiledHelp()
{
//Error
OSL_ASSERT(0);
- bCompiled = false;
+ bCompiled = false;
}
}
return bCompiled;
}
+
//______________________________________________________________________________
beans::Optional< beans::Ambiguous<sal_Bool> >
BackendImpl::PackageImpl::isRegistered_(
@@ -322,7 +343,7 @@ BackendImpl::PackageImpl::isRegistered_(
BackendImpl * that = getMyBackend();
bool bReg = false;
- if (that->readDataFromDb(getURL()))
+ if (that->hasActiveEntry(getURL()))
bReg = true;
return beans::Optional< beans::Ambiguous<sal_Bool> >( true, beans::Ambiguous<sal_Bool>( bReg, false ) );
@@ -341,9 +362,7 @@ void BackendImpl::PackageImpl::processPackage_(
(void)xCmdEnv;
BackendImpl* that = getMyBackend();
- Reference< deployment::XPackage > xThisPackage( this );
- that->implProcessHelp( xThisPackage, doRegisterPackage,
- extensionContainsCompiledHelp(), xCmdEnv);
+ that->implProcessHelp( this, doRegisterPackage, xCmdEnv);
}
beans::Optional< OUString > BackendImpl::PackageImpl::getRegistrationDataURL()
@@ -356,241 +375,238 @@ beans::Optional< OUString > BackendImpl::PackageImpl::getRegistrationDataURL()
::boost::optional<HelpBackendDb::Data> data =
getMyBackend()->readDataFromDb(getURL());
- if (data)
+ if (data && getMyBackend()->hasActiveEntry(getURL()))
return beans::Optional<OUString>(true, data->dataUrl);
- return beans::Optional<OUString>(true, OUString());
+ return beans::Optional<OUString>(true, OUString());
}
+static rtl::OUString aSlash(RTL_CONSTASCII_USTRINGPARAM("/"));
+static rtl::OUString aHelpStr(RTL_CONSTASCII_USTRINGPARAM("help"));
-//##############################################################################
-
-static rtl::OUString aSlash( rtl::OUString::createFromAscii( "/" ) );
-static rtl::OUString aHelpStr( rtl::OUString::createFromAscii( "help" ) );
-
-
-void BackendImpl::implProcessHelp
-( Reference< deployment::XPackage > xPackage, bool doRegisterPackage, bool compiledHelp,
- Reference<ucb::XCommandEnvironment> const & xCmdEnv)
+void BackendImpl::implProcessHelp(
+ PackageImpl * package, bool doRegisterPackage,
+ Reference<ucb::XCommandEnvironment> const & xCmdEnv)
{
+ Reference< deployment::XPackage > xPackage(package);
OSL_ASSERT(xPackage.is());
if (doRegisterPackage)
{
- HelpBackendDb::Data data;
-
- if (compiledHelp)
+ //revive already processed help if possible
+ if ( !activateEntry(xPackage->getURL()))
{
+ HelpBackendDb::Data data;
data.dataUrl = xPackage->getURL();
- }
- else
- {
- const OUString sHelpFolder = createFolder(OUString(), xCmdEnv);
- data.dataUrl = sHelpFolder;
-
- Reference< ucb::XSimpleFileAccess > xSFA = getFileAccess();
- rtl::OUString aHelpURL = xPackage->getURL();
- rtl::OUString aExpandedHelpURL = dp_misc::expandUnoRcUrl( aHelpURL );
- rtl::OUString aName = xPackage->getName();
- if( !xSFA->isFolder( aExpandedHelpURL ) )
+ if (!package->extensionContainsCompiledHelp())
{
- rtl::OUString aErrStr = getResourceString( RID_STR_HELPPROCESSING_GENERAL_ERROR );
- aErrStr += rtl::OUString::createFromAscii( "No help folder" );
- OWeakObject* oWeakThis = static_cast<OWeakObject *>(this);
- throw deployment::DeploymentException( rtl::OUString(), oWeakThis,
- makeAny( uno::Exception( aErrStr, oWeakThis ) ) );
- }
-
- Reference<XComponentContext> const & xContext = getComponentContext();
- Reference< script::XInvocation > xInvocation;
- if( xContext.is() )
- {
- try
- {
- xInvocation = Reference< script::XInvocation >(
- xContext->getServiceManager()->createInstanceWithContext( rtl::OUString::createFromAscii(
- "com.sun.star.help.HelpIndexer" ), xContext ) , UNO_QUERY );
- }
- catch (Exception &)
+ const OUString sHelpFolder = createFolder(OUString(), xCmdEnv);
+ data.dataUrl = sHelpFolder;
+
+ Reference< ucb::XSimpleFileAccess > xSFA = getFileAccess();
+ rtl::OUString aHelpURL = xPackage->getURL();
+ rtl::OUString aExpandedHelpURL = dp_misc::expandUnoRcUrl( aHelpURL );
+ rtl::OUString aName = xPackage->getName();
+ if( !xSFA->isFolder( aExpandedHelpURL ) )
{
- // i98680: Survive missing lucene
+ rtl::OUString aErrStr = getResourceString( RID_STR_HELPPROCESSING_GENERAL_ERROR );
+ aErrStr += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "No help folder" ));
+ OWeakObject* oWeakThis = static_cast<OWeakObject *>(this);
+ throw deployment::DeploymentException( rtl::OUString(), oWeakThis,
+ makeAny( uno::Exception( aErrStr, oWeakThis ) ) );
}
- }
-
- // Scan languages
- Sequence< rtl::OUString > aLanguageFolderSeq = xSFA->getFolderContents( aExpandedHelpURL, true );
- sal_Int32 nLangCount = aLanguageFolderSeq.getLength();
- const rtl::OUString* pSeq = aLanguageFolderSeq.getConstArray();
- for( sal_Int32 iLang = 0 ; iLang < nLangCount ; ++iLang )
- {
- rtl::OUString aLangURL = pSeq[iLang];
- if( xSFA->isFolder( aLangURL ) )
- {
- std::vector< rtl::OUString > aXhpFileVector;
-
- // calculate jar file URL
- sal_Int32 indexStartSegment = aLangURL.lastIndexOf('/');
- // for example "/en"
- OUString langFolderURLSegment(
- aLangURL.copy(
- indexStartSegment + 1, aLangURL.getLength() - indexStartSegment - 1));
-
- //create the folder in the "temporary folder"
- ::ucbhelper::Content langFolderContent;
- const OUString langFolderDest = makeURL(sHelpFolder, langFolderURLSegment);
- const OUString langFolderDestExpanded = ::dp_misc::expandUnoRcUrl(langFolderDest);
- ::dp_misc::create_folder(
- &langFolderContent,
- langFolderDest, xCmdEnv);
- rtl::OUString aJarFile(
- makeURL(sHelpFolder, langFolderURLSegment + aSlash + aHelpStr +
- OUSTR(".jar")));
- aJarFile = ::dp_misc::expandUnoRcUrl(aJarFile);
-
- rtl::OUString aEncodedJarFilePath = rtl::Uri::encode(
- aJarFile, rtl_UriCharClassPchar,
- rtl_UriEncodeIgnoreEscapes,
- RTL_TEXTENCODING_UTF8 );
- rtl::OUString aDestBasePath = rtl::OUString::createFromAscii( "vnd.sun.star.pkg://" );
- aDestBasePath += aEncodedJarFilePath;
- aDestBasePath += rtl::OUString::createFromAscii( "/" );
-
- sal_Int32 nLenLangFolderURL = aLangURL.getLength() + 1;
-
- Sequence< rtl::OUString > aSubLangSeq = xSFA->getFolderContents( aLangURL, true );
- sal_Int32 nSubLangCount = aSubLangSeq.getLength();
- const rtl::OUString* pSubLangSeq = aSubLangSeq.getConstArray();
- for( sal_Int32 iSubLang = 0 ; iSubLang < nSubLangCount ; ++iSubLang )
- {
- rtl::OUString aSubFolderURL = pSubLangSeq[iSubLang];
- if( !xSFA->isFolder( aSubFolderURL ) )
- continue;
-
- implCollectXhpFiles( aSubFolderURL, aXhpFileVector );
-
- // Copy to package (later: move?)
- rtl::OUString aDestPath = aDestBasePath;
- rtl::OUString aPureFolderName = aSubFolderURL.copy( nLenLangFolderURL );
- aDestPath += aPureFolderName;
- xSFA->copy( aSubFolderURL, aDestPath );
- }
-
- // Call compiler
- sal_Int32 nXhpFileCount = aXhpFileVector.size();
- rtl::OUString* pXhpFiles = new rtl::OUString[nXhpFileCount];
- for( sal_Int32 iXhp = 0 ; iXhp < nXhpFileCount ; ++iXhp )
+ Reference<XComponentContext> const & xContext = getComponentContext();
+ Reference< script::XInvocation > xInvocation;
+ if( xContext.is() )
+ {
+ try
{
- rtl::OUString aXhpFile = aXhpFileVector[iXhp];
- rtl::OUString aXhpRelFile = aXhpFile.copy( nLenLangFolderURL );
- pXhpFiles[iXhp] = aXhpRelFile;
+ xInvocation = Reference< script::XInvocation >(
+ xContext->getServiceManager()->createInstanceWithContext(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM("com.sun.star.help.HelpIndexer" )), xContext ) , UNO_QUERY );
}
-
- rtl::OUString aOfficeHelpPath( SvtPathOptions().GetHelpPath() );
- rtl::OUString aOfficeHelpPathFileURL;
- ::osl::File::getFileURLFromSystemPath( aOfficeHelpPath, aOfficeHelpPathFileURL );
-
- HelpProcessingErrorInfo aErrorInfo;
- bool bSuccess = compileExtensionHelp(
- aOfficeHelpPathFileURL, aHelpStr, aLangURL,
- nXhpFileCount, pXhpFiles,
- langFolderDestExpanded, aErrorInfo );
-
- if( bSuccess && xInvocation.is() )
+ catch (Exception &)
{
- Sequence<uno::Any> aParamsSeq( 6 );
-
- aParamsSeq[0] = uno::makeAny( rtl::OUString::createFromAscii( "-lang" ) );
-
- rtl::OUString aLang;
- sal_Int32 nLastSlash = aLangURL.lastIndexOf( '/' );
- if( nLastSlash != -1 )
- aLang = aLangURL.copy( nLastSlash + 1 );
- else
- aLang = rtl::OUString::createFromAscii( "en" );
- aParamsSeq[1] = uno::makeAny( aLang );
-
- aParamsSeq[2] = uno::makeAny( rtl::OUString::createFromAscii( "-mod" ) );
- aParamsSeq[3] = uno::makeAny( rtl::OUString::createFromAscii( "help" ) );
-
- aParamsSeq[4] = uno::makeAny( rtl::OUString::createFromAscii( "-zipdir" ) );
- rtl::OUString aSystemPath;
- osl::FileBase::getSystemPathFromFileURL(
- langFolderDestExpanded, aSystemPath );
- aParamsSeq[5] = uno::makeAny( aSystemPath );
-
- Sequence< sal_Int16 > aOutParamIndex;
- Sequence< uno::Any > aOutParam;
- uno::Any aRet = xInvocation->invoke( rtl::OUString::createFromAscii( "createIndex" ),
- aParamsSeq, aOutParamIndex, aOutParam );
+ // i98680: Survive missing lucene
}
-
- if( !bSuccess )
+ }
+
+ // Scan languages
+ Sequence< rtl::OUString > aLanguageFolderSeq = xSFA->getFolderContents( aExpandedHelpURL, true );
+ sal_Int32 nLangCount = aLanguageFolderSeq.getLength();
+ const rtl::OUString* pSeq = aLanguageFolderSeq.getConstArray();
+ for( sal_Int32 iLang = 0 ; iLang < nLangCount ; ++iLang )
+ {
+ rtl::OUString aLangURL = pSeq[iLang];
+ if( xSFA->isFolder( aLangURL ) )
{
- USHORT nErrStrId = 0;
- switch( aErrorInfo.m_eErrorClass )
+ std::vector< rtl::OUString > aXhpFileVector;
+
+ // calculate jar file URL
+ sal_Int32 indexStartSegment = aLangURL.lastIndexOf('/');
+ // for example "/en"
+ OUString langFolderURLSegment(
+ aLangURL.copy(
+ indexStartSegment + 1, aLangURL.getLength() - indexStartSegment - 1));
+
+ //create the folder in the "temporary folder"
+ ::ucbhelper::Content langFolderContent;
+ const OUString langFolderDest = makeURL(sHelpFolder, langFolderURLSegment);
+ const OUString langFolderDestExpanded = ::dp_misc::expandUnoRcUrl(langFolderDest);
+ ::dp_misc::create_folder(
+ &langFolderContent,
+ langFolderDest, xCmdEnv);
+
+ rtl::OUString aJarFile(
+ makeURL(sHelpFolder, langFolderURLSegment + aSlash + aHelpStr +
+ OUSTR(".jar")));
+ aJarFile = ::dp_misc::expandUnoRcUrl(aJarFile);
+
+ rtl::OUString aEncodedJarFilePath = rtl::Uri::encode(
+ aJarFile, rtl_UriCharClassPchar,
+ rtl_UriEncodeIgnoreEscapes,
+ RTL_TEXTENCODING_UTF8 );
+ rtl::OUString aDestBasePath = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "vnd.sun.star.zip://" ));
+ aDestBasePath += aEncodedJarFilePath;
+ aDestBasePath += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "/" ));
+
+ sal_Int32 nLenLangFolderURL = aLangURL.getLength() + 1;
+
+ Sequence< rtl::OUString > aSubLangSeq = xSFA->getFolderContents( aLangURL, true );
+ sal_Int32 nSubLangCount = aSubLangSeq.getLength();
+ const rtl::OUString* pSubLangSeq = aSubLangSeq.getConstArray();
+ for( sal_Int32 iSubLang = 0 ; iSubLang < nSubLangCount ; ++iSubLang )
+ {
+ rtl::OUString aSubFolderURL = pSubLangSeq[iSubLang];
+ if( !xSFA->isFolder( aSubFolderURL ) )
+ continue;
+
+ implCollectXhpFiles( aSubFolderURL, aXhpFileVector );
+
+ // Copy to package (later: move?)
+ rtl::OUString aDestPath = aDestBasePath;
+ rtl::OUString aPureFolderName = aSubFolderURL.copy( nLenLangFolderURL );
+ aDestPath += aPureFolderName;
+ xSFA->copy( aSubFolderURL, aDestPath );
+ }
+
+ // Call compiler
+ sal_Int32 nXhpFileCount = aXhpFileVector.size();
+ rtl::OUString* pXhpFiles = new rtl::OUString[nXhpFileCount];
+ for( sal_Int32 iXhp = 0 ; iXhp < nXhpFileCount ; ++iXhp )
{
- case HELPPROCESSING_GENERAL_ERROR:
- case HELPPROCESSING_INTERNAL_ERROR: nErrStrId = RID_STR_HELPPROCESSING_GENERAL_ERROR; break;
- case HELPPROCESSING_XMLPARSING_ERROR: nErrStrId = RID_STR_HELPPROCESSING_XMLPARSING_ERROR; break;
- default: ;
- };
-
- rtl::OUString aErrStr;
- if( nErrStrId != 0 )
+ rtl::OUString aXhpFile = aXhpFileVector[iXhp];
+ rtl::OUString aXhpRelFile = aXhpFile.copy( nLenLangFolderURL );
+ pXhpFiles[iXhp] = aXhpRelFile;
+ }
+
+ rtl::OUString aOfficeHelpPath( SvtPathOptions().GetHelpPath() );
+ rtl::OUString aOfficeHelpPathFileURL;
+ ::osl::File::getFileURLFromSystemPath( aOfficeHelpPath, aOfficeHelpPathFileURL );
+
+ HelpProcessingErrorInfo aErrorInfo;
+ bool bSuccess = compileExtensionHelp(
+ aOfficeHelpPathFileURL, aHelpStr, aLangURL,
+ nXhpFileCount, pXhpFiles,
+ langFolderDestExpanded, aErrorInfo );
+
+ if( bSuccess && xInvocation.is() )
{
- aErrStr = getResourceString( nErrStrId );
-
- // Remoce CR/LF
- rtl::OUString aErrMsg( aErrorInfo.m_aErrorMsg );
- sal_Unicode nCR = 13, nLF = 10;
- sal_Int32 nSearchCR = aErrMsg.indexOf( nCR );
- sal_Int32 nSearchLF = aErrMsg.indexOf( nLF );
- sal_Int32 nCopy;
- if( nSearchCR != -1 || nSearchLF != -1 )
+ Sequence<uno::Any> aParamsSeq( 6 );
+
+ aParamsSeq[0] = uno::makeAny( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "-lang" ) ));
+
+ rtl::OUString aLang;
+ sal_Int32 nLastSlash = aLangURL.lastIndexOf( '/' );
+ if( nLastSlash != -1 )
+ aLang = aLangURL.copy( nLastSlash + 1 );
+ else
+ aLang = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "en" ));
+ aParamsSeq[1] = uno::makeAny( aLang );
+
+ aParamsSeq[2] = uno::makeAny( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "-mod" ) ));
+ aParamsSeq[3] = uno::makeAny( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "help" ) ));
+
+ aParamsSeq[4] = uno::makeAny( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "-zipdir" ) ));
+ rtl::OUString aSystemPath;
+ osl::FileBase::getSystemPathFromFileURL(
+ langFolderDestExpanded, aSystemPath );
+ aParamsSeq[5] = uno::makeAny( aSystemPath );
+
+ Sequence< sal_Int16 > aOutParamIndex;
+ Sequence< uno::Any > aOutParam;
+ uno::Any aRet = xInvocation->invoke( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "createIndex" )),
+ aParamsSeq, aOutParamIndex, aOutParam );
+ }
+
+ if( !bSuccess )
+ {
+ sal_uInt16 nErrStrId = 0;
+ switch( aErrorInfo.m_eErrorClass )
{
- if( nSearchCR == -1 )
- nCopy = nSearchLF;
- else if( nSearchLF == -1 )
- nCopy = nSearchCR;
- else
- nCopy = ( nSearchCR < nSearchLF ) ? nSearchCR : nSearchLF;
-
- aErrMsg = aErrMsg.copy( 0, nCopy );
- }
- aErrStr += aErrMsg;
- if( nErrStrId == RID_STR_HELPPROCESSING_XMLPARSING_ERROR && aErrorInfo.m_aXMLParsingFile.getLength() )
+ case HELPPROCESSING_GENERAL_ERROR:
+ case HELPPROCESSING_INTERNAL_ERROR: nErrStrId = RID_STR_HELPPROCESSING_GENERAL_ERROR; break;
+ case HELPPROCESSING_XMLPARSING_ERROR: nErrStrId = RID_STR_HELPPROCESSING_XMLPARSING_ERROR; break;
+ default: ;
+ };
+
+ rtl::OUString aErrStr;
+ if( nErrStrId != 0 )
{
- aErrStr += rtl::OUString::createFromAscii( " in " );
-
- rtl::OUString aDecodedFile = rtl::Uri::decode( aErrorInfo.m_aXMLParsingFile,
- rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8 );
- aErrStr += aDecodedFile;
- if( aErrorInfo.m_nXMLParsingLine != -1 )
+ aErrStr = getResourceString( nErrStrId );
+
+ // Remoce CR/LF
+ rtl::OUString aErrMsg( aErrorInfo.m_aErrorMsg );
+ sal_Unicode nCR = 13, nLF = 10;
+ sal_Int32 nSearchCR = aErrMsg.indexOf( nCR );
+ sal_Int32 nSearchLF = aErrMsg.indexOf( nLF );
+ sal_Int32 nCopy;
+ if( nSearchCR != -1 || nSearchLF != -1 )
{
- aErrStr += rtl::OUString::createFromAscii( ", line " );
- aErrStr += ::rtl::OUString::valueOf( aErrorInfo.m_nXMLParsingLine );
+ if( nSearchCR == -1 )
+ nCopy = nSearchLF;
+ else if( nSearchLF == -1 )
+ nCopy = nSearchCR;
+ else
+ nCopy = ( nSearchCR < nSearchLF ) ? nSearchCR : nSearchLF;
+
+ aErrMsg = aErrMsg.copy( 0, nCopy );
+ }
+ aErrStr += aErrMsg;
+ if( nErrStrId == RID_STR_HELPPROCESSING_XMLPARSING_ERROR && aErrorInfo.m_aXMLParsingFile.getLength() )
+ {
+ aErrStr += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( " in " ));
+
+ rtl::OUString aDecodedFile = rtl::Uri::decode( aErrorInfo.m_aXMLParsingFile,
+ rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8 );
+ aErrStr += aDecodedFile;
+ if( aErrorInfo.m_nXMLParsingLine != -1 )
+ {
+ aErrStr += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ", line " ));
+ aErrStr += ::rtl::OUString::valueOf( aErrorInfo.m_nXMLParsingLine );
+ }
}
}
+
+ OWeakObject* oWeakThis = static_cast<OWeakObject *>(this);
+ throw deployment::DeploymentException( rtl::OUString(), oWeakThis,
+ makeAny( uno::Exception( aErrStr, oWeakThis ) ) );
}
-
- OWeakObject* oWeakThis = static_cast<OWeakObject *>(this);
- throw deployment::DeploymentException( rtl::OUString(), oWeakThis,
- makeAny( uno::Exception( aErrStr, oWeakThis ) ) );
}
}
}
+ //Writing the data entry replaces writing the flag file. If we got to this
+ //point the registration was successful.
+ addDataToDb(xPackage->getURL(), data);
}
- //Writing the data entry replaces writing the flag file. If we got to this
- //point the registration was successful.
- addDataToDb(xPackage->getURL(), data);
} //if (doRegisterPackage)
else
{
- deleteDataFromDb(xPackage->getURL());
+ revokeEntryFromDb(xPackage->getURL());
}
}
-
void BackendImpl::implCollectXhpFiles( const rtl::OUString& aDir,
std::vector< rtl::OUString >& o_rXhpFileVector )
{
@@ -613,7 +629,7 @@ void BackendImpl::implCollectXhpFiles( const rtl::OUString& aDir,
if( nLastDot != -1 )
{
rtl::OUString aExt = aURL.copy( nLastDot + 1 );
- if( aExt.equalsIgnoreAsciiCase( rtl::OUString::createFromAscii( "xhp" ) ) )
+ if( aExt.equalsIgnoreAsciiCase( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "xhp" )) ) )
o_rXhpFileVector.push_back( aURL );
}
}
@@ -627,17 +643,17 @@ Reference< ucb::XSimpleFileAccess > BackendImpl::getFileAccess( void )
Reference<XComponentContext> const & xContext = getComponentContext();
if( xContext.is() )
{
- m_xSFA = Reference< ucb::XSimpleFileAccess >(
+ m_xSFA = Reference< ucb::XSimpleFileAccess >(
xContext->getServiceManager()->createInstanceWithContext(
- rtl::OUString::createFromAscii( "com.sun.star.ucb.SimpleFileAccess" ),
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ucb.SimpleFileAccess" )),
xContext ), UNO_QUERY );
}
if( !m_xSFA.is() )
{
throw RuntimeException(
- ::rtl::OUString::createFromAscii(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
"dp_registry::backend::help::BackendImpl::getFileAccess(), "
- "could not instatiate SimpleFileAccess." ),
+ "could not instatiate SimpleFileAccess." )),
Reference< XInterface >() );
}
}
diff --git a/desktop/source/deployment/registry/help/dp_help.hrc b/desktop/source/deployment/registry/help/dp_help.hrc
index 451144813f..451144813f 100644..100755
--- a/desktop/source/deployment/registry/help/dp_help.hrc
+++ b/desktop/source/deployment/registry/help/dp_help.hrc
diff --git a/desktop/source/deployment/registry/help/dp_helpbackenddb.cxx b/desktop/source/deployment/registry/help/dp_helpbackenddb.cxx
index 92ce961de6..45aa70934c 100644
--- a/desktop/source/deployment/registry/help/dp_helpbackenddb.cxx
+++ b/desktop/source/deployment/registry/help/dp_helpbackenddb.cxx
@@ -84,11 +84,14 @@ OUString HelpBackendDb::getKeyElementName()
void HelpBackendDb::addEntry(::rtl::OUString const & url, Data const & data)
{
try{
- Reference<css::xml::dom::XNode> helpNode
- = writeKeyElement(url);
-
- writeSimpleElement(OUSTR("data-url"), data.dataUrl, helpNode);
- save();
+ if (!activateEntry(url))
+ {
+ Reference<css::xml::dom::XNode> helpNode
+ = writeKeyElement(url);
+
+ writeSimpleElement(OUSTR("data-url"), data.dataUrl, helpNode);
+ save();
+ }
}
catch (css::deployment::DeploymentException& )
{
@@ -136,40 +139,9 @@ HelpBackendDb::getEntry(::rtl::OUString const & url)
::std::list<OUString> HelpBackendDb::getAllDataUrls()
{
- try
- {
- ::std::list<OUString> listRet;
- Reference<css::xml::dom::XDocument> doc = getDocument();
- Reference<css::xml::dom::XNode> root = doc->getFirstChild();
-
- Reference<css::xml::xpath::XXPathAPI> xpathApi = getXPathAPI();
- const OUString sPrefix = getNSPrefix();
- OUString sExpression(
- sPrefix + OUSTR(":help/") + sPrefix + OUSTR(":data-url/text()"));
- Reference<css::xml::dom::XNodeList> nodes =
- xpathApi->selectNodeList(root, sExpression);
- if (nodes.is())
- {
- sal_Int32 length = nodes->getLength();
- for (sal_Int32 i = 0; i < length; i++)
- listRet.push_back(nodes->item(i)->getNodeValue());
- }
- return listRet;
- }
- catch (css::deployment::DeploymentException& )
- {
- throw;
- }
- catch(css::uno::Exception &)
- {
- Any exc( ::cppu::getCaughtException() );
- throw css::deployment::DeploymentException(
- OUSTR("Extension Manager: failed to read data entry in help backend db: ") +
- m_urlDb, 0, exc);
- }
+ return getOneChildFromAllEntries(OUString(RTL_CONSTASCII_USTRINGPARAM("data-url")));
}
-
} // namespace help
} // namespace backend
} // namespace dp_registry
diff --git a/desktop/source/deployment/registry/help/dp_helpbackenddb.hxx b/desktop/source/deployment/registry/help/dp_helpbackenddb.hxx
index 4a2eb8ec59..4bfa93204c 100644
--- a/desktop/source/deployment/registry/help/dp_helpbackenddb.hxx
+++ b/desktop/source/deployment/registry/help/dp_helpbackenddb.hxx
@@ -77,6 +77,8 @@ public:
void addEntry(::rtl::OUString const & url, Data const & data);
::boost::optional<Data> getEntry(::rtl::OUString const & url);
+ //must also return the data urls for entries with @activ="false". That is,
+ //those are currently revoked.
::std::list< ::rtl::OUString> getAllDataUrls();
};
diff --git a/desktop/source/deployment/registry/help/makefile.mk b/desktop/source/deployment/registry/help/makefile.mk
index d4934f71a4..d4934f71a4 100644..100755
--- a/desktop/source/deployment/registry/help/makefile.mk
+++ b/desktop/source/deployment/registry/help/makefile.mk
diff --git a/desktop/source/deployment/registry/inc/dp_backend.h b/desktop/source/deployment/registry/inc/dp_backend.h
index 53de2ef1da..656f81ff6d 100644..100755
--- a/desktop/source/deployment/registry/inc/dp_backend.h
+++ b/desktop/source/deployment/registry/inc/dp_backend.h
@@ -43,7 +43,7 @@
#include "com/sun/star/deployment/XPackageManager.hpp"
#include "com/sun/star/deployment/InvalidRemovedParameterException.hpp"
#include <memory>
-#include <hash_map>
+#include <boost/unordered_map.hpp>
#include <list>
#include "dp_registry.hrc"
@@ -56,8 +56,7 @@ namespace css = ::com::sun::star;
class PackageRegistryBackend;
-char const* const BACKEND_SERVICE_NAME =
-"com.sun.star.deployment.PackageRegistryBackend";
+#define BACKEND_SERVICE_NAME "com.sun.star.deployment.PackageRegistryBackend"
typedef ::cppu::WeakComponentImplHelper1<
css::deployment::XPackage > t_PackageBase;
@@ -122,16 +121,16 @@ public:
const ::rtl::OUString m_mediaType;
const ::rtl::OUString m_fileFilter;
const ::rtl::OUString m_shortDescr;
- const sal_uInt16 m_smallIcon, m_smallIcon_HC;
+ const sal_uInt16 m_smallIcon;
public:
virtual ~TypeInfo();
TypeInfo( ::rtl::OUString const & mediaType,
::rtl::OUString const & fileFilter,
::rtl::OUString const & shortDescr,
- sal_uInt16 smallIcon, sal_uInt16 smallIcon_HC )
+ sal_uInt16 smallIcon)
: m_mediaType(mediaType), m_fileFilter(fileFilter),
m_shortDescr(shortDescr),
- m_smallIcon(smallIcon), m_smallIcon_HC(smallIcon_HC)
+ m_smallIcon(smallIcon)
{}
// XPackageTypeInfo
virtual ::rtl::OUString SAL_CALL getMediaType()
@@ -238,6 +237,9 @@ public:
virtual ::rtl::OUString SAL_CALL getDescription()
throw (css::deployment::ExtensionRemovedException,
css::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getLicenseText()
+ throw (css::deployment::ExtensionRemovedException,
+ css::uno::RuntimeException);
virtual css::uno::Sequence< ::rtl::OUString > SAL_CALL
getUpdateInformationURLs()
throw (css::deployment::ExtensionRemovedException,
@@ -284,7 +286,7 @@ class PackageRegistryBackend
// XPackageManager::getDeployedPackages is called often. This results in a lot
//of bindPackage calls which are costly. Therefore we keep hard references in
//the map now.
- typedef ::std::hash_map<
+ typedef ::boost::unordered_map<
::rtl::OUString, css::uno::Reference<css::deployment::XPackage>,
::rtl::OUStringHash > t_string2ref;
t_string2ref m_bound;
@@ -295,9 +297,9 @@ protected:
::rtl::OUString m_context;
// currently only for library containers:
- enum context {
+ enum {
CONTEXT_UNKNOWN,
- CONTEXT_USER, CONTEXT_SHARED,CONTEXT_BUNDLED, CONTEXT_TMP,
+ CONTEXT_USER, CONTEXT_SHARED,CONTEXT_BUNDLED, CONTEXT_TMP, CONTEXT_BUNDLED_PREREG,
CONTEXT_DOCUMENT
} m_eContext;
bool m_readOnly;
@@ -342,6 +344,18 @@ protected:
*/
static void deleteTempFolder(
::rtl::OUString const & folderUrl);
+
+ ::rtl::OUString getSharedRegistrationDataURL(
+ css::uno::Reference<css::deployment::XPackage> const & extension,
+ css::uno::Reference<css::deployment::XPackage> const & item);
+
+ /* The backends must implement this function, which is called
+ from XPackageRegistry::packageRemoved (also implemented here).
+ This ensure that the backends clean up their registration data
+ when an extension was removed.
+ */
+// virtual void deleteDbEntry( ::rtl::OUString const & url) = 0;
+
public:
@@ -371,6 +385,12 @@ public:
css::deployment::InvalidRemovedParameterException,
css::ucb::CommandFailedException,
css::lang::IllegalArgumentException, css::uno::RuntimeException);
+
+// virtual void SAL_CALL packageRemoved(
+// ::rtl::OUString const & url, ::rtl::OUString const & mediaType)
+// throw (css::deployment::DeploymentException,
+// css::uno::RuntimeException);
+
};
}
diff --git a/desktop/source/deployment/registry/inc/dp_backenddb.hxx b/desktop/source/deployment/registry/inc/dp_backenddb.hxx
index 11dff5a510..2deb1c6e56 100644
--- a/desktop/source/deployment/registry/inc/dp_backenddb.hxx
+++ b/desktop/source/deployment/registry/inc/dp_backenddb.hxx
@@ -140,14 +140,24 @@ protected:
*/
virtual ::rtl::OUString getKeyElementName()=0;
-
-
public:
BackendDb(css::uno::Reference<css::uno::XComponentContext> const & xContext,
::rtl::OUString const & url);
virtual ~BackendDb() {};
void removeEntry(::rtl::OUString const & url);
+
+ /* This is called to write the "revoked" attribute to the entry.
+ This is done when XPackage::revokePackage is called.
+ */
+ void revokeEntry(::rtl::OUString const & url);
+
+ /* returns false if the entry does not exist yet.
+ */
+ bool activateEntry(::rtl::OUString const & url);
+
+ bool hasActiveEntry(::rtl::OUString const & url);
+
};
class RegisteredDb: public BackendDb
@@ -164,7 +174,6 @@ public:
};
-
}
}
#endif
diff --git a/desktop/source/deployment/registry/inc/dp_registry.hrc b/desktop/source/deployment/registry/inc/dp_registry.hrc
index 7f8124b78d..7f8124b78d 100644..100755
--- a/desktop/source/deployment/registry/inc/dp_registry.hrc
+++ b/desktop/source/deployment/registry/inc/dp_registry.hrc
diff --git a/desktop/source/deployment/registry/makefile.mk b/desktop/source/deployment/registry/makefile.mk
index e45cec272c..e45cec272c 100644..100755
--- a/desktop/source/deployment/registry/makefile.mk
+++ b/desktop/source/deployment/registry/makefile.mk
diff --git a/desktop/source/deployment/registry/package/dp_extbackenddb.cxx b/desktop/source/deployment/registry/package/dp_extbackenddb.cxx
index c3b0c092c0..5f20628dc9 100644
--- a/desktop/source/deployment/registry/package/dp_extbackenddb.cxx
+++ b/desktop/source/deployment/registry/package/dp_extbackenddb.cxx
@@ -29,7 +29,6 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_desktop.hxx"
-#include "rtl/string.h"
#include "rtl/bootstrap.hxx"
#include "cppuhelper/exc_hlp.hxx"
#include "com/sun/star/uno/XComponentContext.hpp"
@@ -83,15 +82,19 @@ OUString ExtensionBackendDb::getKeyElementName()
void ExtensionBackendDb::addEntry(::rtl::OUString const & url, Data const & data)
{
try{
- Reference<css::xml::dom::XNode> extensionNodeNode = writeKeyElement(url);
- writeVectorOfPair(
- data.items,
- OUSTR("extension-items"),
- OUSTR("item"),
- OUSTR("url"),
- OUSTR("media-type"),
- extensionNodeNode);
- save();
+ //reactive revoked entry if possible.
+ if (!activateEntry(url))
+ {
+ Reference<css::xml::dom::XNode> extensionNodeNode = writeKeyElement(url);
+ writeVectorOfPair(
+ data.items,
+ OUSTR("extension-items"),
+ OUSTR("item"),
+ OUSTR("url"),
+ OUSTR("media-type"),
+ extensionNodeNode);
+ save();
+ }
}
catch(css::uno::Exception &)
{
diff --git a/desktop/source/deployment/registry/package/dp_extbackenddb.hxx b/desktop/source/deployment/registry/package/dp_extbackenddb.hxx
index ac57bd794e..f25203193a 100644
--- a/desktop/source/deployment/registry/package/dp_extbackenddb.hxx
+++ b/desktop/source/deployment/registry/package/dp_extbackenddb.hxx
@@ -26,13 +26,14 @@
*
************************************************************************/
-
#if ! defined INCLUDED_DP_EXTBACKENDDB_HXX
#define INCLUDED_DP_EXTBACKENDDB_HXX
-#include "rtl/ustring.hxx"
-#include "rtl/string.hxx"
+#include <utility>
#include <vector>
+
+#include "rtl/ustring.hxx"
+
#include "dp_backenddb.hxx"
namespace css = ::com::sun::star;
@@ -74,11 +75,9 @@ public:
::std::vector< ::std::pair< ::rtl::OUString, ::rtl::OUString> > items;
typedef ::std::vector<
::std::pair< ::rtl::OUString, ::rtl::OUString> >::const_iterator ITC_ITEMS;
-
};
public:
-
ExtensionBackendDb( css::uno::Reference<css::uno::XComponentContext> const & xContext,
::rtl::OUString const & url);
@@ -88,8 +87,6 @@ public:
};
-
-
}
}
}
diff --git a/desktop/source/deployment/registry/package/dp_package.cxx b/desktop/source/deployment/registry/package/dp_package.cxx
index b084d87898..1291b8dadb 100755..100644
--- a/desktop/source/deployment/registry/package/dp_package.cxx
+++ b/desktop/source/deployment/registry/package/dp_package.cxx
@@ -191,6 +191,9 @@ class BackendImpl : public ImplBaseT
virtual OUString SAL_CALL getDescription()
throw (deployment::ExtensionRemovedException, RuntimeException);
+ virtual OUString SAL_CALL getLicenseText()
+ throw (deployment::ExtensionRemovedException, RuntimeException);
+
virtual void SAL_CALL exportTo(
OUString const & destFolderURL, OUString const & newTitle,
sal_Int32 nameClashAction,
@@ -248,7 +251,7 @@ class BackendImpl : public ImplBaseT
void addDataToDb(OUString const & url, ExtensionBackendDb::Data const & data);
ExtensionBackendDb::Data readDataFromDb(OUString const & url);
- void deleteDataFromDb(OUString const & url);
+ void revokeEntryFromDb(OUString const & url);
// PackageRegistryBackend
virtual Reference<deployment::XPackage> bindPackage_(
@@ -274,7 +277,10 @@ public:
// XPackageRegistry
virtual Sequence< Reference<deployment::XPackageTypeInfo> > SAL_CALL
getSupportedPackageTypes() throw (RuntimeException);
-
+ virtual void SAL_CALL packageRemoved(OUString const & url, OUString const & mediaType)
+ throw (deployment::DeploymentException,
+ uno::RuntimeException);
+
using ImplBaseT::disposing;
};
@@ -301,15 +307,13 @@ BackendImpl::BackendImpl(
OUSTR("application/vnd.sun.star.package-bundle"),
OUSTR("*.oxt;*.uno.pkg"),
getResourceString(RID_STR_PACKAGE_BUNDLE),
- RID_IMG_DEF_PACKAGE_BUNDLE,
- RID_IMG_DEF_PACKAGE_BUNDLE_HC ) ),
+ RID_IMG_DEF_PACKAGE_BUNDLE ) ),
m_xLegacyBundleTypeInfo( new Package::TypeInfo(
OUSTR("application/"
"vnd.sun.star.legacy-package-bundle"),
OUSTR("*.zip"),
m_xBundleTypeInfo->getShortDescription(),
- RID_IMG_DEF_PACKAGE_BUNDLE,
- RID_IMG_DEF_PACKAGE_BUNDLE_HC ) ),
+ RID_IMG_DEF_PACKAGE_BUNDLE ) ),
m_typeInfos(2)
{
m_typeInfos[ 0 ] = m_xBundleTypeInfo;
@@ -347,7 +351,7 @@ Sequence<OUString> BackendImpl::getSupportedServiceNames()
throw (RuntimeException)
{
return comphelper::makeSequence(
- OUString::createFromAscii(BACKEND_SERVICE_NAME) );
+ OUString(RTL_CONSTASCII_USTRINGPARAM(BACKEND_SERVICE_NAME)) );
}
// XPackageRegistry
@@ -358,6 +362,21 @@ BackendImpl::getSupportedPackageTypes() throw (RuntimeException)
return m_typeInfos;
}
+void BackendImpl::packageRemoved(OUString const & url, OUString const & /*mediaType*/)
+ throw (deployment::DeploymentException,
+ uno::RuntimeException)
+{
+ //Notify the backend responsible for processing the different media
+ //types that this extension was removed.
+ ExtensionBackendDb::Data data = readDataFromDb(url);
+ for (ExtensionBackendDb::Data::ITC_ITEMS i = data.items.begin(); i != data.items.end(); i++)
+ {
+ m_xRootRegistry->packageRemoved(i->first, i->second);
+ }
+
+ if (m_backendDb.get())
+ m_backendDb->removeEntry(url);
+}
// PackageRegistryBackend
@@ -458,14 +477,13 @@ ExtensionBackendDb::Data BackendImpl::readDataFromDb(
return data;
}
-void BackendImpl::deleteDataFromDb(OUString const & url)
+void BackendImpl::revokeEntryFromDb(OUString const & url)
{
if (m_backendDb.get())
- m_backendDb->removeEntry(url);
+ m_backendDb->revokeEntry(url);
}
-//##############################################################################
BackendImpl::PackageImpl::PackageImpl(
::rtl::Reference<PackageRegistryBackend> const & myBackend,
@@ -703,10 +721,6 @@ bool BackendImpl::PackageImpl::checkDependencies(
return true;
else
return false;
- //throw css::deployment::DeploymentException(
- // OUSTR("Extension Manager: User declined the license."),
- // static_cast<OWeakObject*>(this),
- // Any( css::deployment::LicenseException(OUSTR("User declined the license."), 0, m_name, sLicense)));
}
return true;
} catch (css::ucb::CommandFailedException&) {
@@ -903,7 +917,7 @@ void BackendImpl::PackageImpl::processPackage_(
}
catch (Exception &)
{
- OSL_ENSURE( 0, ::rtl::OUStringToOString(
+ OSL_FAIL( ::rtl::OUStringToOString(
::comphelper::anyToString(
::cppu::getCaughtException() ),
RTL_TEXTENCODING_UTF8 ).getStr() );
@@ -971,7 +985,7 @@ void BackendImpl::PackageImpl::processPackage_(
// selected
}
}
- getMyBackend()->deleteDataFromDb(getURL());
+ getMyBackend()->revokeEntryFromDb(getURL());
}
}
@@ -994,7 +1008,7 @@ OUString BackendImpl::PackageImpl::getDescription()
}
catch ( css::deployment::DeploymentException& )
{
- OSL_ENSURE( 0, ::rtl::OUStringToOString( ::comphelper::anyToString( ::cppu::getCaughtException() ), RTL_TEXTENCODING_UTF8 ).getStr() );
+ OSL_FAIL( ::rtl::OUStringToOString( ::comphelper::anyToString( ::cppu::getCaughtException() ), RTL_TEXTENCODING_UTF8 ).getStr() );
}
}
@@ -1004,6 +1018,31 @@ OUString BackendImpl::PackageImpl::getDescription()
}
//______________________________________________________________________________
+OUString BackendImpl::PackageImpl::getLicenseText()
+ throw (deployment::ExtensionRemovedException, RuntimeException)
+{
+ if (m_bRemoved)
+ throw deployment::ExtensionRemovedException();
+
+ OUString sLicense;
+ DescriptionInfoset aInfo = getDescriptionInfoset();
+
+ ::boost::optional< SimpleLicenseAttributes > aSimplLicAttr = aInfo.getSimpleLicenseAttributes();
+ if ( aSimplLicAttr )
+ {
+ OUString aLicenseURL = aInfo.getLocalizedLicenseURL();
+
+ if ( aLicenseURL.getLength() )
+ {
+ OUString aFullURL = m_url_expanded + OUSTR("/") + aLicenseURL;
+ sLicense = getTextFromURL( Reference< ucb::XCommandEnvironment >(), aFullURL);
+ }
+ }
+
+ return sLicense;
+}
+
+//______________________________________________________________________________
void BackendImpl::PackageImpl::exportTo(
OUString const & destFolderURL, OUString const & newTitle,
sal_Int32 nameClashAction, Reference<ucb::XCommandEnvironment> const & xCmdEnv )
@@ -1097,14 +1136,14 @@ void BackendImpl::PackageImpl::exportTo(
}
// xxx todo: think about exception specs:
catch (deployment::DeploymentException &) {
- OSL_ENSURE( 0, ::rtl::OUStringToOString(
+ OSL_FAIL( ::rtl::OUStringToOString(
::comphelper::anyToString(
::cppu::getCaughtException() ),
RTL_TEXTENCODING_UTF8 ).getStr() );
}
catch (lang::IllegalArgumentException & exc) {
(void) exc;
- OSL_ENSURE( 0, ::rtl::OUStringToOString(
+ OSL_FAIL( ::rtl::OUStringToOString(
exc.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
}
@@ -1173,7 +1212,7 @@ void BackendImpl::PackageImpl::exportTo(
makeURL( m_url_expanded, OUSTR("META-INF/manifest.xml") ),
xCmdEnv, false ) )
{
- OSL_ENSURE( 0, "### missing META-INF/manifest.xml file!" );
+ OSL_FAIL( "### missing META-INF/manifest.xml file!" );
return;
}
@@ -1397,7 +1436,7 @@ void BackendImpl::PackageImpl::scanBundle(
makeURL( m_url_expanded, OUSTR("META-INF/manifest.xml") ),
xCmdEnv, false /* no throw */ ))
{
- OSL_ENSURE( 0, "### missing META-INF/manifest.xml file!" );
+ OSL_FAIL( "### missing META-INF/manifest.xml file!" );
return;
}
diff --git a/desktop/source/deployment/registry/package/dp_package.hrc b/desktop/source/deployment/registry/package/dp_package.hrc
index 0b258a58cd..0b258a58cd 100644..100755
--- a/desktop/source/deployment/registry/package/dp_package.hrc
+++ b/desktop/source/deployment/registry/package/dp_package.hrc
diff --git a/desktop/source/deployment/registry/package/makefile.mk b/desktop/source/deployment/registry/package/makefile.mk
index 203ce176d2..203ce176d2 100644..100755
--- a/desktop/source/deployment/registry/package/makefile.mk
+++ b/desktop/source/deployment/registry/package/makefile.mk
diff --git a/desktop/source/deployment/registry/script/dp_lib_container.cxx b/desktop/source/deployment/registry/script/dp_lib_container.cxx
index 4dc71b7fd9..ccc2b29874 100644
--- a/desktop/source/deployment/registry/script/dp_lib_container.cxx
+++ b/desktop/source/deployment/registry/script/dp_lib_container.cxx
@@ -29,11 +29,17 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_desktop.hxx"
+#include "com/sun/star/uno/XComponentContext.hpp"
+#include "com/sun/star/ucb/XCommandEnvironment.hpp"
+
#include "dp_script.hrc"
#include "dp_resource.h"
#include "dp_xml.h"
#include "dp_lib_container.h"
+
+#include "rtl/ustring.hxx"
#include "ucbhelper/content.hxx"
+#include "xmlscript/xmllib_imexp.hxx"
using namespace ::dp_misc;
diff --git a/desktop/source/deployment/registry/script/dp_lib_container.h b/desktop/source/deployment/registry/script/dp_lib_container.h
index b0f29c1e80..009846a3c0 100644..100755
--- a/desktop/source/deployment/registry/script/dp_lib_container.h
+++ b/desktop/source/deployment/registry/script/dp_lib_container.h
@@ -29,11 +29,20 @@
#if ! defined INCLUDED_DP_LIB_CONTAINER_H
#define INCLUDED_DP_LIB_CONTAINER_H
-#include "rtl/ustring.hxx"
-#include "xmlscript/xmllib_imexp.hxx"
-#include "com/sun/star/uno/XComponentContext.hpp"
-#include "com/sun/star/ucb/XCommandEnvironment.hpp"
+#include <com/sun/star/uno/Reference.hxx>
+namespace com { namespace sun { namespace star {
+ namespace uno {
+ class XComponentContext;
+ }
+ namespace ucb {
+ class XCommandEnvironment;
+ }
+}}}
+
+namespace rtl {
+ class OUString;
+}
namespace css = ::com::sun::star;
diff --git a/desktop/source/deployment/registry/script/dp_script.cxx b/desktop/source/deployment/registry/script/dp_script.cxx
index 45fb378f1c..437674a420 100644
--- a/desktop/source/deployment/registry/script/dp_script.cxx
+++ b/desktop/source/deployment/registry/script/dp_script.cxx
@@ -41,7 +41,6 @@
#include "svl/inettype.hxx"
#include "com/sun/star/util/XUpdatable.hpp"
#include "com/sun/star/script/XLibraryContainer3.hpp"
-#include <com/sun/star/ucb/XSimpleFileAccess.hpp>
#include <com/sun/star/util/XMacroExpander.hpp>
#include <com/sun/star/uri/XUriReferenceFactory.hpp>
#include <memory>
@@ -62,7 +61,6 @@ namespace {
typedef ::cppu::ImplInheritanceHelper1<
::dp_registry::backend::PackageRegistryBackend, util::XUpdatable > t_helper;
-//==============================================================================
class BackendImpl : public t_helper
{
class PackageImpl : public ::dp_registry::backend::Package
@@ -102,13 +100,8 @@ class BackendImpl : public t_helper
Reference<XCommandEnvironment> const & xCmdEnv );
void addDataToDb(OUString const & url);
- void deleteDataFromDb(OUString const & url);
- bool isRegisteredInDb(OUString const & url);
-
-
-
-// Reference< ucb::XSimpleFileAccess > getFileAccess( void );
-// Reference< ucb::XSimpleFileAccess > m_xSFA;
+ bool hasActiveEntry(OUString const & url);
+ void revokeEntryFromDb(OUString const & url);
const Reference<deployment::XPackageTypeInfo> m_xBasicLibTypeInfo;
const Reference<deployment::XPackageTypeInfo> m_xDialogLibTypeInfo;
@@ -124,6 +117,10 @@ public:
// XPackageRegistry
virtual Sequence< Reference<deployment::XPackageTypeInfo> > SAL_CALL
getSupportedPackageTypes() throw (RuntimeException);
+ virtual void SAL_CALL packageRemoved(OUString const & url, OUString const & mediaType)
+ throw (deployment::DeploymentException,
+ uno::RuntimeException);
+
};
//______________________________________________________________________________
@@ -164,13 +161,13 @@ BackendImpl::BackendImpl(
"vnd.sun.star.basic-library"),
OUString() /* no file filter */,
getResourceString(RID_STR_BASIC_LIB),
- RID_IMG_SCRIPTLIB, RID_IMG_SCRIPTLIB_HC ) ),
+ RID_IMG_SCRIPTLIB) ),
m_xDialogLibTypeInfo( new Package::TypeInfo(
OUSTR("application/"
"vnd.sun.star.dialog-library"),
OUString() /* no file filter */,
getResourceString(RID_STR_DIALOG_LIB),
- RID_IMG_DIALOGLIB, RID_IMG_DIALOGLIB_HC ) ),
+ RID_IMG_DIALOGLIB) ),
m_typeInfos( 2 )
{
m_typeInfos[ 0 ] = m_xBasicLibTypeInfo;
@@ -192,18 +189,11 @@ void BackendImpl::addDataToDb(OUString const & url)
m_backendDb->addEntry(url);
}
-bool BackendImpl::isRegisteredInDb(OUString const & url)
+bool BackendImpl::hasActiveEntry(OUString const & url)
{
- bool registered = false;
if (m_backendDb.get())
- registered = m_backendDb->getEntry(url);
- return registered;
-}
-
-void BackendImpl::deleteDataFromDb(OUString const & url)
-{
- if (m_backendDb.get())
- m_backendDb->removeEntry(url);
+ return m_backendDb->hasActiveEntry(url);
+ return false;
}
// XUpdatable
@@ -220,6 +210,19 @@ BackendImpl::getSupportedPackageTypes() throw (RuntimeException)
{
return m_typeInfos;
}
+void BackendImpl::revokeEntryFromDb(OUString const & url)
+{
+ if (m_backendDb.get())
+ m_backendDb->revokeEntry(url);
+}
+
+void BackendImpl::packageRemoved(OUString const & url, OUString const & /*mediaType*/)
+ throw (deployment::DeploymentException,
+ uno::RuntimeException)
+{
+ if (m_backendDb.get())
+ m_backendDb->removeEntry(url);
+}
// PackageRegistryBackend
//______________________________________________________________________________
@@ -293,7 +296,6 @@ Reference<deployment::XPackage> BackendImpl::bindPackage_(
static_cast<sal_Int16>(-1) );
}
-//##############################################################################
// Package
BackendImpl * BackendImpl::PackageImpl::getMyBackend() const
@@ -310,34 +312,83 @@ BackendImpl * BackendImpl::PackageImpl::getMyBackend() const
}
return pBackend;
}
-//______________________________________________________________________________
+
beans::Optional< beans::Ambiguous<sal_Bool> >
BackendImpl::PackageImpl::isRegistered_(
- ::osl::ResettableMutexGuard &,
- ::rtl::Reference<AbortChannel> const &,
- Reference<XCommandEnvironment> const & xCmdEnv )
+ ::osl::ResettableMutexGuard & /* guard */,
+ ::rtl::Reference<AbortChannel> const & /* abortChannel */,
+ Reference<XCommandEnvironment> const & /* xCmdEnv */ )
{
- (void)xCmdEnv;
-
BackendImpl * that = getMyBackend();
Reference< deployment::XPackage > xThisPackage( this );
- bool registered = that->isRegisteredInDb(getURL());
+ bool registered = that->hasActiveEntry(getURL());
return beans::Optional< beans::Ambiguous<sal_Bool> >(
true /* IsPresent */,
beans::Ambiguous<sal_Bool>( registered, false /* IsAmbiguous */ ) );
}
-//______________________________________________________________________________
+void
+lcl_maybeRemoveScript(
+ bool const bExists,
+ OUString const& rName,
+ OUString const& rScriptURL,
+ Reference<css::script::XLibraryContainer3> const& xScriptLibs)
+{
+ if (bExists && xScriptLibs.is() && xScriptLibs->hasByName(rName))
+ {
+ const OUString sScriptUrl = xScriptLibs->getOriginalLibraryLinkURL(rName);
+ if (sScriptUrl.equals(rScriptURL))
+ xScriptLibs->removeLibrary(rName);
+ }
+}
+
+bool
+lcl_maybeAddScript(
+ bool const bExists,
+ OUString const& rName,
+ OUString const& rScriptURL,
+ Reference<css::script::XLibraryContainer3> const& xScriptLibs)
+{
+ if (bExists && xScriptLibs.is())
+ {
+ bool bCanAdd = true;
+ if (xScriptLibs->hasByName(rName))
+ {
+ const OUString sOriginalUrl = xScriptLibs->getOriginalLibraryLinkURL(rName);
+ //We assume here that library names in extensions are unique, which may not be the case
+ //ToDo: If the script exist in another extension, then both extensions must have the
+ //same id
+ if (sOriginalUrl.match(OUSTR("vnd.sun.star.expand:$UNO_USER_PACKAGES_CACHE"))
+ || sOriginalUrl.match(OUSTR("vnd.sun.star.expand:$UNO_SHARED_PACKAGES_CACHE"))
+ || sOriginalUrl.match(OUSTR("vnd.sun.star.expand:$BUNDLED_EXTENSIONS")))
+ {
+ xScriptLibs->removeLibrary(rName);
+ bCanAdd = true;
+ }
+ else
+ {
+ bCanAdd = false;
+ }
+ }
+
+ if (bCanAdd)
+ {
+ xScriptLibs->createLibraryLink(rName, rScriptURL, false);
+ return xScriptLibs->hasByName(rName);
+ }
+ }
+
+ return false;
+}
+
void BackendImpl::PackageImpl::processPackage_(
- ::osl::ResettableMutexGuard &,
+ ::osl::ResettableMutexGuard & /* guard */,
bool doRegisterPackage,
bool startup,
- ::rtl::Reference<AbortChannel> const &,
- Reference<XCommandEnvironment> const & xCmdEnv )
+ ::rtl::Reference<AbortChannel> const & /* abortChannel */,
+ Reference<XCommandEnvironment> const & /* xCmdEnv */ )
{
- (void)xCmdEnv;
-
BackendImpl * that = getMyBackend();
Reference< deployment::XPackage > xThisPackage( this );
@@ -368,7 +419,7 @@ void BackendImpl::PackageImpl::processPackage_(
xComponentContext ), UNO_QUERY_THROW );
}
}
- bool bRegistered = getMyBackend()->isRegisteredInDb(getURL());
+ bool bRegistered = getMyBackend()->hasActiveEntry(getURL());
if( !doRegisterPackage )
{
//We cannot just call removeLibrary(name) because this could remove a
@@ -386,21 +437,10 @@ void BackendImpl::PackageImpl::processPackage_(
//we also prevent and live deployment at startup
if (!isRemoved() && !startup)
{
- if (bScript && xScriptLibs.is() && xScriptLibs->hasByName(m_name))
- {
- const OUString sScriptUrl = xScriptLibs->getOriginalLibraryLinkURL(m_name);
- if (sScriptUrl.equals(m_scriptURL))
- xScriptLibs->removeLibrary(m_name);
- }
-
- if (bDialog && xDialogLibs.is() && xDialogLibs->hasByName(m_dialogName))
- {
- const OUString sDialogUrl = xDialogLibs->getOriginalLibraryLinkURL(m_dialogName);
- if (sDialogUrl.equals(m_dialogURL))
- xDialogLibs->removeLibrary(m_dialogName);
- }
+ lcl_maybeRemoveScript(bScript, m_name, m_scriptURL, xScriptLibs);
+ lcl_maybeRemoveScript(bDialog, m_dialogName, m_dialogURL, xDialogLibs);
}
- getMyBackend()->deleteDataFromDb(getURL());
+ getMyBackend()->revokeEntryFromDb(getURL());
return;
}
}
@@ -409,72 +449,14 @@ void BackendImpl::PackageImpl::processPackage_(
// Update LibraryContainer
bool bScriptSuccess = false;
- const bool bReadOnly = false;
-
bool bDialogSuccess = false;
if (!startup)
{
//If there is a bundled extension, and the user installes the same extension
//then the script from the bundled extension must be removed. If this does not work
//then live deployment does not work for scripts.
- if (bScript && xScriptLibs.is())
- {
- bool bCanAdd = true;
- if (xScriptLibs->hasByName(m_name))
- {
- const OUString sOriginalUrl = xScriptLibs->getOriginalLibraryLinkURL(m_name);
- //We assume here that library names in extensions are unique, which may not be the case
- //ToDo: If the script exist in another extension, then both extensions must have the
- //same id
- if (sOriginalUrl.match(OUSTR("vnd.sun.star.expand:$UNO_USER_PACKAGES_CACHE"))
- || sOriginalUrl.match(OUSTR("vnd.sun.star.expand:$UNO_SHARED_PACKAGES_CACHE"))
- || sOriginalUrl.match(OUSTR("vnd.sun.star.expand:$BUNDLED_EXTENSIONS")))
- {
- xScriptLibs->removeLibrary(m_name);
- bCanAdd = true;
- }
- else
- {
- bCanAdd = false;
- }
- }
-
- if (bCanAdd)
- {
- xScriptLibs->createLibraryLink( m_name, m_scriptURL, bReadOnly );
- bScriptSuccess = xScriptLibs->hasByName( m_name );
- }
- }
-
-
- if (bDialog && xDialogLibs.is())
- {
- bool bCanAdd = true;
- if (xDialogLibs->hasByName(m_dialogName))
- {
- const OUString sOriginalUrl = xDialogLibs->getOriginalLibraryLinkURL(m_dialogName);
- //We assume here that library names in extensions are unique, which may not be the case
- //ToDo: If the script exist in another extension, then both extensions must have the
- //same id
- if (sOriginalUrl.match(OUSTR("vnd.sun.star.expand:$UNO_USER_PACKAGES_CACHE"))
- || sOriginalUrl.match(OUSTR("vnd.sun.star.expand:$UNO_SHARED_PACKAGES_CACHE"))
- || sOriginalUrl.match(OUSTR("vnd.sun.star.expand:$BUNDLED_EXTENSIONS")))
- {
- xDialogLibs->removeLibrary(m_dialogName);
- bCanAdd = true;
- }
- else
- {
- bCanAdd = false;
- }
- }
-
- if (bCanAdd)
- {
- xDialogLibs->createLibraryLink( m_dialogName, m_dialogURL, bReadOnly );
- bDialogSuccess = xDialogLibs->hasByName(m_dialogName);
- }
- }
+ bScriptSuccess = lcl_maybeAddScript(bScript, m_name, m_scriptURL, xScriptLibs);
+ bDialogSuccess = lcl_maybeAddScript(bDialog, m_dialogName, m_dialogURL, xDialogLibs);
}
bool bSuccess = bScript || bDialog; // Something must have happened
if( bRunning && !startup)
diff --git a/desktop/source/deployment/registry/script/dp_script.hrc b/desktop/source/deployment/registry/script/dp_script.hrc
index f5b52f1b1f..f5b52f1b1f 100644..100755
--- a/desktop/source/deployment/registry/script/dp_script.hrc
+++ b/desktop/source/deployment/registry/script/dp_script.hrc
diff --git a/desktop/source/deployment/registry/script/makefile.mk b/desktop/source/deployment/registry/script/makefile.mk
index 708def3580..708def3580 100644..100755
--- a/desktop/source/deployment/registry/script/makefile.mk
+++ b/desktop/source/deployment/registry/script/makefile.mk
diff --git a/desktop/source/deployment/registry/sfwk/dp_parceldesc.cxx b/desktop/source/deployment/registry/sfwk/dp_parceldesc.cxx
index 9d66e80f71..4ac316e785 100644
--- a/desktop/source/deployment/registry/sfwk/dp_parceldesc.cxx
+++ b/desktop/source/deployment/registry/sfwk/dp_parceldesc.cxx
@@ -99,9 +99,9 @@ ParcelDescDocHandler::startElement( const OUString& aName,
aName + OUSTR("\n"));
if ( !skipIndex )
{
- if ( aName.equals( OUString::createFromAscii( "parcel" ) ) )
+ if ( aName.equals( OUString(RTL_CONSTASCII_USTRINGPARAM( "parcel" )) ) )
{
- m_sLang = xAttribs->getValueByName( OUString::createFromAscii( "language" ) );
+ m_sLang = xAttribs->getValueByName( OUString(RTL_CONSTASCII_USTRINGPARAM( "language" )) );
}
++skipIndex;
}
diff --git a/desktop/source/deployment/registry/sfwk/dp_sfwk.cxx b/desktop/source/deployment/registry/sfwk/dp_sfwk.cxx
index 0e8dc29d53..63b1fb8189 100644
--- a/desktop/source/deployment/registry/sfwk/dp_sfwk.cxx
+++ b/desktop/source/deployment/registry/sfwk/dp_sfwk.cxx
@@ -89,6 +89,7 @@ class BackendImpl : public ::dp_registry::backend::PackageRegistryBackend
OUString const & identifier);
// XPackage
virtual OUString SAL_CALL getDescription() throw (RuntimeException);
+ virtual OUString SAL_CALL getLicenseText() throw (RuntimeException);
};
friend class PackageImpl;
@@ -99,6 +100,7 @@ class BackendImpl : public ::dp_registry::backend::PackageRegistryBackend
Reference<XCommandEnvironment> const & xCmdEnv );
const Reference<deployment::XPackageTypeInfo> m_xTypeInfo;
+
public:
BackendImpl(
@@ -108,6 +110,9 @@ public:
// XPackageRegistry
virtual Sequence< Reference<deployment::XPackageTypeInfo> > SAL_CALL
getSupportedPackageTypes() throw (RuntimeException);
+ virtual void SAL_CALL packageRemoved(OUString const & url, OUString const & mediaType)
+ throw (deployment::DeploymentException,
+ uno::RuntimeException);
};
BackendImpl * BackendImpl::PackageImpl::getMyBackend() const
@@ -134,6 +139,12 @@ OUString BackendImpl::PackageImpl::getDescription() throw (RuntimeException)
}
//______________________________________________________________________________
+OUString BackendImpl::PackageImpl::getLicenseText() throw (RuntimeException)
+{
+ return Package::getDescription();
+}
+
+//______________________________________________________________________________
BackendImpl::PackageImpl::PackageImpl(
::rtl::Reference<BackendImpl> const & myBackend,
OUString const & url, OUString const & libType, bool bRemoved,
@@ -168,50 +179,15 @@ BackendImpl::BackendImpl(
OUSTR("application/vnd.sun.star.framework-script"),
OUString() /* no file filter */,
OUSTR("Scripting Framework Script Library"),
- RID_IMG_SCRIPTLIB, RID_IMG_SCRIPTLIB_HC ) )
+ RID_IMG_SCRIPTLIB ) )
{
if (! transientMode())
{
-/*
- if (office_is_running())
- {
- Reference<XComponentContext> xContext( getComponentContext() );
- m_xScriptLibs.set(
- xContext->getServiceManager()->createInstanceWithContext(
- OUSTR("com.sun.star."
- "script.ApplicationScriptLibraryContainer"),
- xContext ), UNO_QUERY_THROW );
- m_xDialogLibs.set(
- xContext->getServiceManager()->createInstanceWithContext(
- OUSTR("com.sun.star."
- "script.ApplicationDialogLibraryContainer"),
- xContext ), UNO_QUERY_THROW );
- }
- else
- {
- OUString basic_path(
- m_eContext == CONTEXT_USER
- ? OUSTR("vnd.sun.star.expand:${$BRAND_BASE_DIR/program/"
- SAL_CONFIGFILE("bootstrap")
- ":UserInstallation}/user/basic")
- : OUSTR("vnd.sun.star.expand:${$BRAND_BASE_DIR/program/"
- SAL_CONFIGFILE("bootstrap")
- ":BaseInstallation}/share/basic") );
- m_basic_script_libs.reset(
- new LibraryContainer(
- makeURL( basic_path, OUSTR("script.xlc") ),
- getMutex(),
- getComponentContext() ) );
- m_dialog_libs.reset(
- new LibraryContainer(
- makeURL( basic_path, OUSTR("dialog.xlc") ),
- getMutex(),
- getComponentContext() ) );
- }
-*/
}
}
+
+
// XPackageRegistry
//______________________________________________________________________________
Sequence< Reference<deployment::XPackageTypeInfo> >
@@ -220,6 +196,12 @@ BackendImpl::getSupportedPackageTypes() throw (RuntimeException)
return Sequence< Reference<deployment::XPackageTypeInfo> >(&m_xTypeInfo, 1);
}
+void BackendImpl::packageRemoved(OUString const & /*url*/, OUString const & /*mediaType*/)
+ throw (deployment::DeploymentException,
+ uno::RuntimeException)
+{
+}
+
// PackageRegistryBackend
//______________________________________________________________________________
Reference<deployment::XPackage> BackendImpl::bindPackage_(
@@ -256,7 +238,7 @@ Reference<deployment::XPackage> BackendImpl::bindPackage_(
{
if (subType.EqualsIgnoreCaseAscii("vnd.sun.star.framework-script"))
{
- OUString lang = OUString::createFromAscii("Script");
+ OUString lang = OUString(RTL_CONSTASCII_USTRINGPARAM("Script"));
OUString sParcelDescURL = makeURL(
url, OUSTR("parcel-descriptor.xml") );
@@ -310,7 +292,6 @@ Reference<deployment::XPackage> BackendImpl::bindPackage_(
static_cast<sal_Int16>(-1) );
}
-//##############################################################################
void BackendImpl::PackageImpl:: initPackageHandler()
{
@@ -332,6 +313,11 @@ void BackendImpl::PackageImpl:: initPackageHandler()
{
aContext <<= OUSTR("bundled");
}
+ else if ( that->m_eContext == CONTEXT_BUNDLED_PREREG )
+ {
+ aContext <<= OUSTR("bundled_prereg");
+ }
+
else
{
OSL_ASSERT( 0 );
diff --git a/desktop/source/deployment/registry/sfwk/dp_sfwk.hrc b/desktop/source/deployment/registry/sfwk/dp_sfwk.hrc
index ed164251cc..ed164251cc 100644..100755
--- a/desktop/source/deployment/registry/sfwk/dp_sfwk.hrc
+++ b/desktop/source/deployment/registry/sfwk/dp_sfwk.hrc
diff --git a/desktop/source/deployment/registry/sfwk/makefile.mk b/desktop/source/deployment/registry/sfwk/makefile.mk
index a052296d5c..a052296d5c 100644..100755
--- a/desktop/source/deployment/registry/sfwk/makefile.mk
+++ b/desktop/source/deployment/registry/sfwk/makefile.mk
diff --git a/desktop/source/deployment/target.pmk b/desktop/source/deployment/target.pmk
index 82b41766b2..82b41766b2 100644..100755
--- a/desktop/source/deployment/target.pmk
+++ b/desktop/source/deployment/target.pmk
diff --git a/desktop/source/deployment/unopkg/makefile.mk b/desktop/source/deployment/unopkg/makefile.mk
index 06b39cd2d0..06b39cd2d0 100644..100755
--- a/desktop/source/deployment/unopkg/makefile.mk
+++ b/desktop/source/deployment/unopkg/makefile.mk
diff --git a/desktop/source/inc/helpid.hrc b/desktop/source/inc/helpid.hrc
index 2435467f76..facdc1f410 100644..100755
--- a/desktop/source/inc/helpid.hrc
+++ b/desktop/source/inc/helpid.hrc
@@ -28,51 +28,40 @@
#if ! defined INCLUDED_DESKTOP_HELPID_HRC
#define INCLUDED_DESKTOP_HELPID_HRC
-#include "svl/solar.hrc"
+#define HID_PACKAGE_MANAGER "DESKTOP_HID_PACKAGE_MANAGER"
+#define HID_PACKAGE_MANAGER_TREELISTBOX "DESKTOP_HID_PACKAGE_MANAGER_TREELISTBOX"
+#define HID_PACKAGE_MANAGER_PROGRESS "DESKTOP_HID_PACKAGE_MANAGER_PROGRESS"
+#define HID_PACKAGE_MANAGER_PROGRESS_CANCEL "DESKTOP_HID_PACKAGE_MANAGER_PROGRESS_CANCEL"
+#define HID_PACKAGE_MANAGER_MENU_ITEM "DESKTOP_HID_PACKAGE_MANAGER_MENU_ITEM"
-#define HID_GLOBAL_FALLBACK 0xFFFFFFFF
+#define HID_FIRSTSTART_DIALOG "DESKTOP_HID_FIRSTSTART_DIALOG"
+#define HID_FIRSTSTART_WELCOME "DESKTOP_HID_FIRSTSTART_WELCOME"
+#define HID_FIRSTSTART_LICENSE "DESKTOP_HID_FIRSTSTART_LICENSE"
+#define HID_FIRSTSTART_MIGRATION "DESKTOP_HID_FIRSTSTART_MIGRATION"
+#define HID_FIRSTSTART_REGISTRATION "DESKTOP_HID_FIRSTSTART_REGISTRATION"
+#define HID_FIRSTSTART_USER "DESKTOP_HID_FIRSTSTART_USER"
+#define HID_FIRSTSTART_PREV "DESKTOP_HID_FIRSTSTART_PREV"
+#define HID_FIRSTSTART_NEXT "DESKTOP_HID_FIRSTSTART_NEXT"
+#define HID_FIRSTSTART_CANCEL "DESKTOP_HID_FIRSTSTART_CANCEL"
+#define HID_FIRSTSTART_FINISH "DESKTOP_HID_FIRSTSTART_FINISH"
+#define UID_FIRSTSTART_HELP "DESKTOP_UID_FIRSTSTART_HELP"
+#define UID_BTN_LICENSE_ACCEPT "DESKTOP_UID_BTN_LICENSE_ACCEPT"
+#define HID_FIRSTSTART_UPDATE_CHECK "DESKTOP_HID_FIRSTSTART_UPDATE_CHECK"
+#define HID_DEPLOYMENT_GUI_UPDATE "DESKTOP_HID_DEPLOYMENT_GUI_UPDATE"
+#define HID_DEPLOYMENT_GUI_UPDATEINSTALL "DESKTOP_HID_DEPLOYMENT_GUI_UPDATEINSTALL"
+#define HID_DEPLOYMENT_GUI_UPDATE_PUBLISHER "DESKTOP_HID_DEPLOYMENT_GUI_UPDATE_PUBLISHER"
+#define HID_DEPLOYMENT_GUI_UPDATE_RELEASENOTES "DESKTOP_HID_DEPLOYMENT_GUI_UPDATE_RELEASENOTES"
+#define HID_DEPLOYMENT_GUI_UPDATE_AVAILABLE_UPDATES "DESKTOP_HID_DEPLOYMENT_GUI_UPDATE_AVAILABLE_UPDATES"
-#define HID_PACKAGE_MANAGER (HID_DESKTOP_START + 0)
-#define HID_PACKAGE_MANAGER_TREELISTBOX (HID_DESKTOP_START + 1)
-#define HID_PACKAGE_MANAGER_PROGRESS (HID_DESKTOP_START + 2)
-#define HID_PACKAGE_MANAGER_PROGRESS_CANCEL (HID_DESKTOP_START + 3)
-#define HID_PACKAGE_MANAGER_MENU_ITEM (HID_DESKTOP_START + 4)
+#define HID_EXTENSION_MANAGER_LISTBOX "DESKTOP_HID_EXTENSION_MANAGER_LISTBOX"
+#define HID_EXTENSION_MANAGER_LISTBOX_OPTIONS "DESKTOP_HID_EXTENSION_MANAGER_LISTBOX_OPTIONS"
+#define HID_EXTENSION_MANAGER_LISTBOX_ENABLE "DESKTOP_HID_EXTENSION_MANAGER_LISTBOX_ENABLE"
+#define HID_EXTENSION_MANAGER_LISTBOX_DISABLE "DESKTOP_HID_EXTENSION_MANAGER_LISTBOX_DISABLE"
+#define HID_EXTENSION_MANAGER_LISTBOX_REMOVE "DESKTOP_HID_EXTENSION_MANAGER_LISTBOX_REMOVE"
-#define HID_FIRSTSTART_DIALOG (HID_DESKTOP_START + 5)
-#define HID_FIRSTSTART_WELCOME (HID_DESKTOP_START + 6)
-#define HID_FIRSTSTART_LICENSE (HID_DESKTOP_START + 7)
-#define HID_FIRSTSTART_MIGRATION (HID_DESKTOP_START + 8)
-#define HID_FIRSTSTART_REGISTRATION (HID_DESKTOP_START + 9)
-#define HID_FIRSTSTART_USER (HID_DESKTOP_START + 10)
-#define HID_FIRSTSTART_PREV (HID_DESKTOP_START + 11)
-#define HID_FIRSTSTART_NEXT (HID_DESKTOP_START + 12)
-#define HID_FIRSTSTART_CANCEL (HID_DESKTOP_START + 13)
-#define HID_FIRSTSTART_FINISH (HID_DESKTOP_START + 14)
-#define UID_FIRSTSTART_HELP (HID_DESKTOP_START + 15)
-#define UID_BTN_LICENSE_ACCEPT (HID_DESKTOP_START + 16)
-#define HID_FIRSTSTART_UPDATE_CHECK (HID_DESKTOP_START + 17)
-#define HID_DEPLOYMENT_GUI_UPDATE (HID_DESKTOP_START + 18)
-#define HID_DEPLOYMENT_GUI_UPDATEINSTALL (HID_DESKTOP_START + 19)
-#define HID_DEPLOYMENT_GUI_UPDATE_PUBLISHER (HID_DESKTOP_START + 20)
-#define HID_DEPLOYMENT_GUI_UPDATE_RELEASENOTES (HID_DESKTOP_START + 21)
-#define HID_DEPLOYMENT_GUI_UPDATE_AVAILABLE_UPDATES (HID_DESKTOP_START + 22)
+#define HID_EXTENSION_DEPENDENCIES "DESKTOP_HID_EXTENSION_DEPENDENCIES"
-#define HID_EXTENSION_MANAGER_LISTBOX (HID_DESKTOP_START + 23)
-#define HID_EXTENSION_MANAGER_LISTBOX_OPTIONS (HID_DESKTOP_START + 24)
-#define HID_EXTENSION_MANAGER_LISTBOX_ENABLE (HID_DESKTOP_START + 25)
-#define HID_EXTENSION_MANAGER_LISTBOX_DISABLE (HID_DESKTOP_START + 26)
-#define HID_EXTENSION_MANAGER_LISTBOX_REMOVE (HID_DESKTOP_START + 27)
-
-#define HID_EXTENSION_DEPENDENCIES (HID_DESKTOP_START + 28)
-
-#define HID_PACKAGE_MANAGER_UPD_REQ (HID_DESKTOP_START + 29)
-
-#define ACT_DESKTOP_HID_END HID_PACKAGE_MANAGER_UPD_REQ
-
-// check bounds:
-#if ACT_DESKTOP_HID_END > HID_DESKTOP_END
-#error Resource overflow in #line, #file
-#endif
+#define HID_PACKAGE_MANAGER_UPD_REQ "DESKTOP_HID_PACKAGE_MANAGER_UPD_REQ"
#endif
diff --git a/desktop/source/migration/cfgfilter.cxx b/desktop/source/migration/cfgfilter.cxx
deleted file mode 100644
index 2e5a20e708..0000000000
--- a/desktop/source/migration/cfgfilter.cxx
+++ /dev/null
@@ -1,336 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_desktop.hxx"
-#include "cfgfilter.hxx"
-
-#include <com/sun/star/beans/NamedValue.hpp>
-#include <unotools/textsearch.hxx>
-
-using namespace rtl;
-using namespace com::sun::star;
-using namespace com::sun::star::uno;
-using namespace com::sun::star::lang;
-using namespace com::sun::star::beans;
-using namespace com::sun::star::configuration::backend;
-
-namespace desktop {
-
-CConfigFilter::CConfigFilter(const strings_v* include, const strings_v* exclude)
- : m_pvInclude(include)
- , m_pvExclude(exclude)
-{
-}
-
-void SAL_CALL CConfigFilter::initialize(const Sequence< Any >& seqArgs)
- throw (Exception)
-{
- NamedValue nv;
- for (sal_Int32 i=0; i < seqArgs.getLength(); i++)
- {
- if (seqArgs[i] >>= nv)
- {
- if (nv.Name.equalsAscii("Source"))
- nv.Value >>= m_xSourceLayer;
- if (nv.Name.equalsAscii("ComponentName"))
- nv.Value >>= m_aCurrentComponent;
- }
- }
- if (m_aCurrentComponent.getLength() == 0)
- m_aCurrentComponent = OUString::createFromAscii("unknown.component");
-
- if (!m_xSourceLayer.is()) {
- throw Exception();
- }
-
-}
-
-
-void CConfigFilter::pushElement(rtl::OUString aName, sal_Bool bUse)
-{
- OUString aPath;
- if (!m_elementStack.empty()) {
- aPath = m_elementStack.top().path; // or use base path
- aPath += OUString::createFromAscii("/");
- }
- aPath += aName;
-
- // create element
- element elem;
- elem.name = aName;
- elem.path = aPath;
- elem.use = bUse;
- m_elementStack.push(elem);
-}
-
-sal_Bool CConfigFilter::checkCurrentElement()
-{
- return m_elementStack.top().use;
-}
-
-sal_Bool CConfigFilter::checkElement(rtl::OUString aName)
-{
-
- sal_Bool bResult = sal_False;
-
- // get full pathname for element
- OUString aFullPath;
- if (!m_elementStack.empty())
- aFullPath = m_elementStack.top().path + OUString::createFromAscii("/");
-
- aFullPath += aName;
-
- // check whether any include patterns patch this path
- for (strings_v::const_iterator i_in = m_pvInclude->begin();
- i_in != m_pvInclude->end(); i_in++)
- {
- // pattern is beginning of path
- // or path is a begiing for pattern
- if (i_in->match(aFullPath.copy(0, i_in->getLength()>aFullPath.getLength()
- ? aFullPath.getLength() : i_in->getLength()), 0))
- {
- bResult = sal_True;
- break; // one match is enough
- }
- }
- // if match is found, check for exclusion
- if (bResult)
- {
- for (strings_v::const_iterator i_ex = m_pvExclude->begin();
- i_ex != m_pvExclude->end(); i_ex++)
- {
- if (aFullPath.match(*i_ex, 0)) // pattern is beginning of path
- {
- bResult = sal_False;
- break; // one is enough...
- }
- }
- }
- return bResult;
-}
-
-void CConfigFilter::popElement()
-{
- m_elementStack.pop();
-}
-
-
-void SAL_CALL CConfigFilter::readData(
- const Reference< configuration::backend::XLayerHandler >& layerHandler)
- throw (
- com::sun::star::lang::NullPointerException, lang::WrappedTargetException,
- com::sun::star::configuration::backend::MalformedDataException)
-{
- // when readData is called, the submitted handler will be stored
- // in m_xLayerHandler. we will then submit ourself as a handler to
- // the SourceLayer in m_xSourceLayer.
- // when the source calls our handler functions we will use the patterns that
- // where given in the ctor to decide whther they should be relaied to the caller
-
- if (m_xSourceLayer.is() && layerHandler.is())
- {
- m_xLayerHandler = layerHandler;
- m_xSourceLayer->readData(Reference<XLayerHandler>(static_cast< XLayerHandler* >(this)));
- } else
- {
- throw NullPointerException();
- }
-}
-
-// XLayerHandler
-void SAL_CALL CConfigFilter::startLayer()
- throw(::com::sun::star::lang::WrappedTargetException)
-{
- m_xLayerHandler->startLayer();
-}
-
-void SAL_CALL CConfigFilter::endLayer()
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException )
-{
- m_xLayerHandler->endLayer();
-}
-
-void SAL_CALL CConfigFilter::overrideNode(
- const OUString& aName,
- sal_Int16 aAttributes,
- sal_Bool bClear)
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException )
-{
- if (checkElement(aName))
- {
- m_xLayerHandler->overrideNode(aName, aAttributes, bClear);
- pushElement(aName);
- }
- else
- pushElement(aName, sal_False);
-}
-
-void SAL_CALL CConfigFilter::addOrReplaceNode(
- const OUString& aName,
- sal_Int16 aAttributes)
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException )
-{
- if (checkElement(aName))
- {
- m_xLayerHandler->addOrReplaceNode(aName, aAttributes);
- pushElement(aName);
- }
- else
- pushElement(aName, sal_False);
-}
-
-void SAL_CALL CConfigFilter::addOrReplaceNodeFromTemplate(
- const OUString& aName,
- const com::sun::star::configuration::backend::TemplateIdentifier& aTemplate,
- sal_Int16 aAttributes )
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException )
-{
- if (checkElement(aName))
- {
- m_xLayerHandler->addOrReplaceNodeFromTemplate(aName, aTemplate, aAttributes);
- pushElement(aName);
- }
- else
- pushElement(aName, sal_False);
-}
-
-void SAL_CALL CConfigFilter::endNode()
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException )
-{
- if (checkCurrentElement())
- {
- m_xLayerHandler->endNode();
- }
- popElement();
-}
-
-void SAL_CALL CConfigFilter::dropNode(
- const OUString& aName )
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException )
-{
- // does not get pushed
- if (checkElement(aName))
- {
- m_xLayerHandler->dropNode(aName);
- }
-}
-
-void SAL_CALL CConfigFilter::overrideProperty(
- const OUString& aName,
- sal_Int16 aAttributes,
- const Type& aType,
- sal_Bool bClear )
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException )
-{
- if (checkElement(aName)){
- m_xLayerHandler->overrideProperty(aName, aAttributes, aType, bClear);
- pushElement(aName);
- }
- else
- pushElement(aName, sal_False);
-}
-
-void SAL_CALL CConfigFilter::setPropertyValue(
- const Any& aValue )
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException )
-{
- if (checkCurrentElement())
- m_xLayerHandler->setPropertyValue(aValue);
-}
-
-void SAL_CALL CConfigFilter::setPropertyValueForLocale(
- const Any& aValue,
- const OUString& aLocale )
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException )
-{
- if (checkCurrentElement())
- m_xLayerHandler->setPropertyValueForLocale(aValue, aLocale);
-}
-
-void SAL_CALL CConfigFilter::endProperty()
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException )
-{
- if (checkCurrentElement())
- {
- m_xLayerHandler->endProperty();
- }
- popElement();
-
-}
-
-void SAL_CALL CConfigFilter::addProperty(
- const rtl::OUString& aName,
- sal_Int16 aAttributes,
- const Type& aType )
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException )
-{
- if (checkElement(aName))
- m_xLayerHandler->addProperty(aName, aAttributes, aType);
-}
-
-void SAL_CALL CConfigFilter::addPropertyWithValue(
- const rtl::OUString& aName,
- sal_Int16 aAttributes,
- const Any& aValue )
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException )
-{
- // add property with value doesn't push the property
- if (checkElement(aName))
- m_xLayerHandler->addPropertyWithValue(aName, aAttributes, aValue);
-
-}
-
-} // namespace desktop
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/source/migration/cfgfilter.hxx b/desktop/source/migration/cfgfilter.hxx
deleted file mode 100644
index cec890354e..0000000000
--- a/desktop/source/migration/cfgfilter.hxx
+++ /dev/null
@@ -1,175 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-#ifndef _DESKTOP_CFGFILTER_HXX_
-#define _DESKTOP_CFGFILTER_HXX_
-
-#include <stack>
-
-#include <sal/types.h>
-#include <rtl/ustring.hxx>
-
-#include <cppuhelper/implbase2.hxx>
-#include <cppuhelper/implbase3.hxx>
-
-#include <com/sun/star/uno/Reference.hxx>
-#include <com/sun/star/uno/Any.hxx>
-#include <com/sun/star/uno/Type.hxx>
-
-#include <com/sun/star/lang/XInitialization.hpp>
-#include <com/sun/star/configuration/backend/XLayer.hpp>
-#include <com/sun/star/configuration/backend/XLayerHandler.hpp>
-#include <com/sun/star/configuration/backend/TemplateIdentifier.hpp>
-
-
-#include "migration_impl.hxx"
-
-#define NS_CSS com::sun::star
-#define NS_UNO com::sun::star::uno
-
-
-namespace desktop {
-
-struct element
-{
- rtl::OUString name;
- rtl::OUString path;
- sal_Bool use;
-
-};
-
-typedef std::stack< element > element_stack;
-
-// XInitialization:
-// -> Source : XLayer
-// XLayer
-// XLayerHandler
-class CConfigFilter : public cppu::WeakImplHelper3<
- NS_CSS::configuration::backend::XLayer,
- NS_CSS::configuration::backend::XLayerHandler,
- NS_CSS::lang::XInitialization>
-{
-
-private:
- NS_UNO::Reference< NS_CSS::configuration::backend::XLayerHandler > m_xLayerHandler;
- NS_UNO::Reference< NS_CSS::configuration::backend::XLayer > m_xSourceLayer;
-
- rtl::OUString m_aCurrentComponent;
-
- const strings_v *m_pvInclude;
- const strings_v *m_pvExclude;
-
- element_stack m_elementStack;
-
- void pushElement(rtl::OUString aName, sal_Bool bUse = sal_True);
- void popElement();
- sal_Bool checkElement(rtl::OUString aName);
- sal_Bool checkCurrentElement();
-
-public:
- CConfigFilter(const strings_v* include, const strings_v* exclude);
-
- // XInitialization
- virtual void SAL_CALL initialize(const NS_UNO::Sequence< NS_UNO::Any >& seqArgs)
- throw (NS_UNO::Exception);
-
- // XLayer
- virtual void SAL_CALL readData(
- const NS_UNO::Reference< NS_CSS::configuration::backend::XLayerHandler >& layerHandler)
- throw (NS_CSS::lang::NullPointerException, NS_CSS::lang::WrappedTargetException,
- NS_CSS::configuration::backend::MalformedDataException);
-
- // XLayerHandler
- virtual void SAL_CALL startLayer()
- throw(::com::sun::star::lang::WrappedTargetException);
-
- virtual void SAL_CALL endLayer()
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException );
-
- virtual void SAL_CALL overrideNode(
- const rtl::OUString& aName,
- sal_Int16 aAttributes,
- sal_Bool bClear)
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException );
-
- virtual void SAL_CALL addOrReplaceNode(
- const rtl::OUString& aName,
- sal_Int16 aAttributes)
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException );
-
- virtual void SAL_CALL addOrReplaceNodeFromTemplate(
- const rtl::OUString& aName,
- const NS_CSS::configuration::backend::TemplateIdentifier& aTemplate,
- sal_Int16 aAttributes )
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException );
-
- virtual void SAL_CALL endNode()
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException );
-
- virtual void SAL_CALL dropNode(
- const rtl::OUString& aName )
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException );
-
- virtual void SAL_CALL overrideProperty(
- const rtl::OUString& aName,
- sal_Int16 aAttributes,
- const NS_UNO::Type& aType,
- sal_Bool bClear )
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException );
-
- virtual void SAL_CALL setPropertyValue(
- const NS_UNO::Any& aValue )
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException );
-
- virtual void SAL_CALL setPropertyValueForLocale(
- const NS_UNO::Any& aValue,
- const rtl::OUString& aLocale )
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException );
-
- virtual void SAL_CALL endProperty()
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException );
-
- virtual void SAL_CALL addProperty(
- const rtl::OUString& aName,
- sal_Int16 aAttributes,
- const NS_UNO::Type& aType )
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException );
-
- virtual void SAL_CALL addPropertyWithValue(
- const rtl::OUString& aName,
- sal_Int16 aAttributes,
- const NS_UNO::Any& aValue )
- throw(
- ::com::sun::star::configuration::backend::MalformedDataException,
- ::com::sun::star::lang::WrappedTargetException );
-
-};
-
-} // namespace desktop
-#undef NS_CSS
-#undef NS_UNO
-
-#endif
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/source/migration/makefile.mk b/desktop/source/migration/makefile.mk
index 2624fcda5a..b20b4c5797 100644..100755
--- a/desktop/source/migration/makefile.mk
+++ b/desktop/source/migration/makefile.mk
@@ -45,8 +45,7 @@ CDEFS+=-I..$/app
CDEFS+=-I$(PRJ)/inc
SLOFILES = \
- $(SLO)$/migration.obj \
- $(SLO)$/cfgfilter.obj
+ $(SLO)$/migration.obj
# --- Targets ------------------------------------------------------
diff --git a/desktop/source/migration/migration.cxx b/desktop/source/migration/migration.cxx
index e66d1269ea..7834b44624 100644
--- a/desktop/source/migration/migration.cxx
+++ b/desktop/source/migration/migration.cxx
@@ -35,7 +35,6 @@
#include "migration.hxx"
#include "migration_impl.hxx"
-#include "cfgfilter.hxx"
#include <unotools/textsearch.hxx>
#include <comphelper/processfactory.hxx>
@@ -66,7 +65,6 @@
#include <com/sun/star/ui/XUIConfigurationStorage.hpp>
#include <com/sun/star/ui/XUIConfigurationPersistence.hpp>
-using namespace rtl;
using namespace osl;
using namespace std;
using namespace com::sun::star::task;
@@ -77,6 +75,9 @@ using namespace com::sun::star::container;
using com::sun::star::uno::Exception;
using namespace com::sun::star;
+using ::rtl::OUString;
+using ::rtl::OString;
+
namespace desktop {
static const ::rtl::OUString ITEM_DESCRIPTOR_COMMANDURL(RTL_CONSTASCII_USTRINGPARAM("CommandURL"));
@@ -111,7 +112,7 @@ static const ::rtl::OUString MIGRATION_STAMP_NAME(RTL_CONSTASCII_USTRINGPARAM("/
{
for ( sal_Int32 i = 0; i < aPropSeq.getLength(); i++ )
{
- if ( aPropSeq[i].Name.equalsAscii( "Label" ))
+ if ( aPropSeq[i].Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Label" ) ))
{
aPropSeq[i].Value >>= aStr;
break;
@@ -136,19 +137,6 @@ static const ::rtl::OUString MIGRATION_STAMP_NAME(RTL_CONSTASCII_USTRINGPARAM("/
return sLabel;
}
-::rtl::OUString stripHotKey( const ::rtl::OUString& str )
-{
- sal_Int32 index = str.indexOf( '~' );
- if ( index == -1 )
- {
- return str;
- }
- else
- {
- return str.replaceAt( index, 1, ::rtl::OUString() );
- }
-}
-
::rtl::OUString mapModuleShortNameToIdentifier(const ::rtl::OUString& sShortName)
{
::rtl::OUString sIdentifier;
@@ -243,9 +231,10 @@ void Migration::migrateSettingsIfNecessary()
{
OString aMsg("doMigration() exception: ");
aMsg += OUStringToOString(e.Message, RTL_TEXTENCODING_ASCII_US);
- OSL_ENSURE(sal_False, aMsg.getStr());
+ OSL_FAIL(aMsg.getStr());
}
OSL_ENSURE(bResult, "Migration has not been successfull");
+ (void)bResult;
}
MigrationImpl::MigrationImpl(const uno::Reference< XMultiServiceFactory >& xFactory)
@@ -345,7 +334,7 @@ sal_Bool MigrationImpl::doMigration()
OString aMsg("An unexpected exception was thrown during migration");
aMsg += "\nOldVersion: " + OUStringToOString(m_aInfo.productname, RTL_TEXTENCODING_ASCII_US);
aMsg += "\nDataPath : " + OUStringToOString(m_aInfo.userdata, RTL_TEXTENCODING_ASCII_US);
- OSL_ENSURE(sal_False, aMsg.getStr());
+ OSL_FAIL(aMsg.getStr());
}
// prevent running the migration multiple times
@@ -360,7 +349,7 @@ void MigrationImpl::refresh()
if (xRefresh.is())
xRefresh->refresh();
else
- OSL_ENSURE(sal_False, "could not get XRefresh interface from default config provider. No refresh done.");
+ OSL_FAIL("could not get XRefresh interface from default config provider. No refresh done.");
}
@@ -421,7 +410,7 @@ bool MigrationImpl::readAvailableMigrations(migrations_available& rAvailableMigr
// get supported version names
uno::Reference< XNameAccess > aMigrationAccess(getConfigAccess("org.openoffice.Setup/Migration/SupportedVersions"), uno::UNO_QUERY_THROW);
uno::Sequence< OUString > seqSupportedVersions = aMigrationAccess->getElementNames();
-
+
const OUString aVersionIdentifiers( RTL_CONSTASCII_USTRINGPARAM( "VersionIdentifiers" ));
const OUString aPriorityIdentifier( RTL_CONSTASCII_USTRINGPARAM( "Priority" ));
@@ -465,7 +454,6 @@ migrations_vr MigrationImpl::readMigrationSteps(const ::rtl::OUString& rMigratio
{
// get current migration step
theNameAccess->getByName(seqMigrations[i]) >>= tmpAccess;
- // tmpStepPtr = new migration_step();
migration_step tmpStep;
tmpStep.name = seqMigrations[i];
@@ -592,7 +580,7 @@ sal_Int32 MigrationImpl::findPreferedMigrationProcess(const migrations_available
{
sal_Int32 nIndex( -1 );
sal_Int32 i( 0 );
-
+
migrations_available::const_iterator rIter = rAvailableMigrations.begin();
while ( rIter != rAvailableMigrations.end() )
{
@@ -635,9 +623,9 @@ strings_vr MigrationImpl::applyPatterns(const strings_v& vSet, const strings_v&
end = (xub_StrLen)(i_set->getLength());
if (ts.SearchFrwrd(*i_set, &start, &end))
vrResult->push_back(*i_set);
- i_set++;
+ ++i_set;
}
- i_pat++;
+ ++i_pat;
}
return vrResult;
}
@@ -674,7 +662,7 @@ strings_vr MigrationImpl::getAllFiles(const OUString& baseURL) const
{
vrSubResult = getAllFiles(*i);
vrResult->insert(vrResult->end(), vrSubResult->begin(), vrSubResult->end());
- i++;
+ ++i;
}
}
return vrResult;
@@ -704,7 +692,7 @@ strings_vr MigrationImpl::compileFileList()
vrExclude = applyPatterns(*vrFiles, i_migr->excludeFiles);
subtract(*vrInclude, *vrExclude);
vrResult->insert(vrResult->end(), vrInclude->begin(), vrInclude->end());
- i_migr++;
+ ++i_migr;
}
return vrResult;
}
@@ -838,9 +826,9 @@ void MigrationImpl::subtract(strings_v& va, const strings_v& vb_c) const
break;
}
else
- i_in++;
+ ++i_in;
}
- i_ex++;
+ ++i_ex;
}
}
@@ -871,7 +859,7 @@ uno::Reference< XNameAccess > MigrationImpl::getConfigAccess(const sal_Char* pPa
} catch (com::sun::star::uno::Exception& e)
{
OString aMsg = OUStringToOString(e.Message, RTL_TEXTENCODING_ASCII_US);
- OSL_ENSURE(sal_False, aMsg.getStr());
+ OSL_FAIL(aMsg.getStr());
}
return xNameAccess;
}
@@ -901,14 +889,14 @@ void MigrationImpl::copyFiles()
OString msg("Cannot copy ");
msg += OUStringToOString(*i_file, RTL_TEXTENCODING_UTF8) + " to "
+ OUStringToOString(destName, RTL_TEXTENCODING_UTF8);
- OSL_ENSURE(sal_False, msg.getStr());
+ OSL_FAIL(msg.getStr());
}
- i_file++;
+ ++i_file;
}
}
else
{
- OSL_ENSURE(sal_False, "copyFiles: UserInstall does not exist");
+ OSL_FAIL("copyFiles: UserInstall does not exist");
}
}
@@ -957,17 +945,17 @@ void MigrationImpl::runServices()
OString aMsg("Execution of migration service failed (Exception caught).\nService: ");
aMsg += OUStringToOString(i_mig->service, RTL_TEXTENCODING_ASCII_US) + "\nMessage: ";
aMsg += OUStringToOString(e.Message, RTL_TEXTENCODING_ASCII_US);
- OSL_ENSURE(sal_False, aMsg.getStr());
+ OSL_FAIL(aMsg.getStr());
} catch (...)
{
OString aMsg("Execution of migration service failed (Exception caught).\nService: ");
aMsg += OUStringToOString(i_mig->service, RTL_TEXTENCODING_ASCII_US) +
"\nNo message available";
- OSL_ENSURE(sal_False, aMsg.getStr());
+ OSL_FAIL(aMsg.getStr());
}
}
- i_mig++;
+ ++i_mig;
}
}
diff --git a/desktop/source/migration/migration_impl.hxx b/desktop/source/migration/migration_impl.hxx
index d66cabad94..a4619b4c8d 100644
--- a/desktop/source/migration/migration_impl.hxx
+++ b/desktop/source/migration/migration_impl.hxx
@@ -31,7 +31,7 @@
#include <vector>
#include <algorithm>
#include <memory>
-#include <hash_map>
+#include <boost/unordered_map.hpp>
#include "migration.hxx"
@@ -138,7 +138,7 @@ struct MigrationItem
::rtl::OUString GetPrevSibling() const { return m_sPrevSibling; }
};
-typedef ::std::hash_map< ::rtl::OUString,
+typedef ::boost::unordered_map< ::rtl::OUString,
::std::vector< MigrationItem >,
::rtl::OUStringHash,
::std::equal_to< ::rtl::OUString > > MigrationHashMap;
@@ -196,7 +196,7 @@ class MigrationImpl
private:
strings_vr m_vrVersions;
NS_UNO::Reference< NS_CSS::lang::XMultiServiceFactory > m_xFactory;
-
+
migrations_available m_vMigrationsAvailable; // list of all available migrations
migrations_vr m_vrMigrations; // list of all migration specs from config
install_info m_aInfo; // info about the version being migrated
diff --git a/desktop/source/migration/pages.cxx b/desktop/source/migration/pages.cxx
new file mode 100644
index 0000000000..291ec4d8b8
--- /dev/null
+++ b/desktop/source/migration/pages.cxx
@@ -0,0 +1,671 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_desktop.hxx"
+
+#include "pages.hxx"
+#include "wizard.hrc"
+#include "wizard.hxx"
+#include "migration.hxx"
+#include <vcl/msgbox.hxx>
+#include <vcl/mnemonic.hxx>
+#include <vos/security.hxx>
+#include <app.hxx>
+#include <rtl/ustring.hxx>
+#include <osl/file.hxx>
+#include <unotools/bootstrap.hxx>
+#include <unotools/configmgr.hxx>
+#include <unotools/regoptions.hxx>
+#include <unotools/useroptions.hxx>
+#include <sfx2/basedlgs.hxx>
+#include <comphelper/processfactory.hxx>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/frame/XDesktop.hpp>
+#include <com/sun/star/beans/XMaterialHolder.hpp>
+#include <com/sun/star/beans/NamedValue.hpp>
+#include <com/sun/star/container/XNameReplace.hpp>
+#include <com/sun/star/task/XJobExecutor.hpp>
+#include <comphelper/configurationhelper.hxx>
+#include <rtl/bootstrap.hxx>
+#include <rtl/ustrbuf.hxx>
+#include <osl/file.hxx>
+#include <osl/thread.hxx>
+#include <unotools/bootstrap.hxx>
+#include <tools/config.hxx>
+
+using namespace rtl;
+using namespace osl;
+using namespace utl;
+using namespace svt;
+using namespace com::sun::star;
+using namespace com::sun::star::frame;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::util;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::container;
+
+#define UNISTRING(s) rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(s))
+
+namespace desktop {
+
+static void _setBold(FixedText& ft)
+{
+ Font f = ft.GetControlFont();
+ f.SetWeight(WEIGHT_BOLD);
+ ft.SetControlFont(f);
+}
+
+WelcomePage::WelcomePage( svt::OWizardMachine* parent, const ResId& resid, sal_Bool bLicenseNeedsAcceptance )
+ : OWizardPage(parent, resid)
+ , m_ftHead(this, WizardResId(FT_WELCOME_HEADER))
+ , m_ftBody(this, WizardResId(FT_WELCOME_BODY))
+ , m_pParent(parent)
+ , m_bLicenseNeedsAcceptance( bLicenseNeedsAcceptance )
+ , bIsEvalVersion(false)
+ , bNoEvalText(false)
+{
+ FreeResource();
+
+ _setBold(m_ftHead);
+
+ checkEval();
+
+ // check for migration
+ if (Migration::checkMigration())
+ {
+ String aText(WizardResId(STR_WELCOME_MIGRATION));
+ // replace %OLDPRODUCT with found version name
+ aText.SearchAndReplaceAll( UniString::CreateFromAscii("%OLD_VERSION"), Migration::getOldVersionName());
+ m_ftBody.SetText( aText );
+ }
+ else if ( ! m_bLicenseNeedsAcceptance )
+ {
+ String aText(WizardResId(STR_WELCOME_WITHOUT_LICENSE));
+ m_ftBody.SetText( aText );
+ }
+}
+
+
+void WelcomePage::checkEval()
+{
+ Reference< XMultiServiceFactory > xFactory = ::comphelper::getProcessServiceFactory();
+ Reference< XMaterialHolder > xHolder(xFactory->createInstance(
+ OUString::createFromAscii("com.sun.star.tab.tabreg")), UNO_QUERY);
+ if (xHolder.is()) {
+ Any aData = xHolder->getMaterial();
+ Sequence < NamedValue > aSeq;
+ if (aData >>= aSeq) {
+ bIsEvalVersion = true;
+ for (int i=0; i< aSeq.getLength(); i++) {
+ if (aSeq[i].Name.equalsAscii("NoEvalText")) {
+ aSeq[i].Value >>= bNoEvalText;
+ }
+ }
+ }
+ }
+}
+
+
+void WelcomePage::ActivatePage()
+{
+ OWizardPage::ActivatePage();
+ // this page has no controls, so forwarding to default
+ // button (next) won't work if we grap focus
+ // GrabFocus();
+}
+
+LicensePage::LicensePage( svt::OWizardMachine* parent, const ResId& resid, const rtl::OUString &rLicensePath )
+ : OWizardPage(parent, resid)
+ , m_pParent(parent)
+ , m_ftHead(this, WizardResId(FT_LICENSE_HEADER))
+ , m_ftBody1(this, WizardResId(FT_LICENSE_BODY_1))
+ , m_ftBody1Txt(this, WizardResId(FT_LICENSE_BODY_1_TXT))
+ , m_ftBody2(this, WizardResId(FT_LICENSE_BODY_2))
+ , m_ftBody2Txt(this, WizardResId(FT_LICENSE_BODY_2_TXT))
+ , m_mlLicense(this, WizardResId(ML_LICENSE))
+ , m_pbDown(this, WizardResId(PB_LICENSE_DOWN))
+ , m_bLicenseRead(sal_False)
+{
+ FreeResource();
+
+ _setBold(m_ftHead);
+
+ m_mlLicense.SetEndReachedHdl( LINK(this, LicensePage, EndReachedHdl) );
+ m_mlLicense.SetScrolledHdl( LINK(this, LicensePage, ScrolledHdl) );
+ m_pbDown.SetClickHdl( LINK(this, LicensePage, PageDownHdl) );
+
+ // We want a automatic repeating page down button
+ WinBits aStyle = m_pbDown.GetStyle();
+ aStyle |= WB_REPEAT;
+ m_pbDown.SetStyle( aStyle );
+
+ // replace %PAGEDOWN in text2 with button text
+ String aText = m_ftBody1Txt.GetText();
+ aText.SearchAndReplaceAll( UniString::CreateFromAscii("%PAGEDOWN"),
+ MnemonicGenerator::EraseAllMnemonicChars(m_pbDown.GetText()));
+
+ m_ftBody1Txt.SetText( aText );
+
+ // load license text
+ File aLicenseFile(rLicensePath);
+ if ( aLicenseFile.open(OpenFlag_Read) == FileBase::E_None)
+ {
+ DirectoryItem d;
+ DirectoryItem::get(rLicensePath, d);
+ FileStatus fs(FileStatusMask_FileSize);
+ d.getFileStatus(fs);
+ sal_uInt64 nBytesRead = 0;
+ sal_uInt64 nPosition = 0;
+ sal_uInt32 nBytes = (sal_uInt32)fs.getFileSize();
+ sal_Char *pBuffer = new sal_Char[nBytes];
+ // FileBase RC r = FileBase::E_None;
+ while (aLicenseFile.read(pBuffer+nPosition, nBytes-nPosition, nBytesRead) == FileBase::E_None
+ && nPosition + nBytesRead < nBytes)
+ {
+ nPosition += nBytesRead;
+ }
+ OUString aLicenseString(pBuffer, nBytes, RTL_TEXTENCODING_UTF8,
+ OSTRING_TO_OUSTRING_CVTFLAGS | RTL_TEXTTOUNICODE_FLAGS_GLOBAL_SIGNATURE);
+ delete[] pBuffer;
+ m_mlLicense.SetText(aLicenseString);
+
+ }
+}
+
+void LicensePage::ActivatePage()
+{
+ OWizardPage::ActivatePage();
+ m_bLicenseRead = m_mlLicense.IsEndReached();
+ m_pbDown.GrabFocus();
+ updateDialogTravelUI();
+}
+
+bool LicensePage::canAdvance() const
+{
+ if (m_mlLicense.IsEndReached())
+ const_cast< LicensePage* >( this )->m_pbDown.Disable();
+ else
+ const_cast< LicensePage* >( this )->m_pbDown.Enable();
+
+ return m_bLicenseRead;
+}
+
+IMPL_LINK( LicensePage, PageDownHdl, PushButton *, EMPTYARG )
+{
+ m_mlLicense.ScrollDown( SCROLL_PAGEDOWN );
+ return 0;
+}
+
+IMPL_LINK( LicensePage, EndReachedHdl, LicenseView *, EMPTYARG )
+{
+ m_bLicenseRead = sal_True;
+ updateDialogTravelUI();
+ return 0;
+}
+
+IMPL_LINK( LicensePage, ScrolledHdl, LicenseView *, EMPTYARG )
+{
+ updateDialogTravelUI();
+ return 0;
+}
+
+
+LicenseView::LicenseView( Window* pParent, const ResId& rResId )
+ : MultiLineEdit( pParent, rResId )
+{
+ SetLeftMargin( 5 );
+ mbEndReached = IsEndReached();
+ StartListening( *GetTextEngine() );
+}
+
+LicenseView::~LicenseView()
+{
+ maEndReachedHdl = Link();
+ maScrolledHdl = Link();
+ EndListeningAll();
+}
+
+void LicenseView::ScrollDown( ScrollType eScroll )
+{
+ ScrollBar* pScroll = GetVScrollBar();
+ if ( pScroll )
+ pScroll->DoScrollAction( eScroll );
+}
+
+sal_Bool LicenseView::IsEndReached() const
+{
+ sal_Bool bEndReached;
+
+ ExtTextView* pView = GetTextView();
+ ExtTextEngine* pEdit = GetTextEngine();
+ sal_uLong nHeight = pEdit->GetTextHeight();
+ Size aOutSize = pView->GetWindow()->GetOutputSizePixel();
+ Point aBottom( 0, aOutSize.Height() );
+
+ if ( (sal_uLong) pView->GetDocPos( aBottom ).Y() >= nHeight - 1 )
+ bEndReached = sal_True;
+ else
+ bEndReached = sal_False;
+
+ return bEndReached;
+}
+
+void LicenseView::Notify( SfxBroadcaster&, const SfxHint& rHint )
+{
+ if ( rHint.IsA( TYPE(TextHint) ) )
+ {
+ sal_Bool bLastVal = EndReached();
+ sal_uLong nId = ((const TextHint&)rHint).GetId();
+
+ if ( nId == TEXT_HINT_PARAINSERTED )
+ {
+ if ( bLastVal )
+ mbEndReached = IsEndReached();
+ }
+ else if ( nId == TEXT_HINT_VIEWSCROLLED )
+ {
+ if ( ! mbEndReached )
+ mbEndReached = IsEndReached();
+ maScrolledHdl.Call( this );
+ }
+
+ if ( EndReached() && !bLastVal )
+ {
+ maEndReachedHdl.Call( this );
+ }
+ }
+}
+
+
+
+// -------------------------------------------------------------------
+
+class MigrationThread : public ::osl::Thread
+{
+ public:
+ MigrationThread();
+
+ virtual void SAL_CALL run();
+ virtual void SAL_CALL onTerminated();
+};
+
+MigrationThread::MigrationThread()
+{
+}
+
+void MigrationThread::run()
+{
+ try
+ {
+ Migration::doMigration();
+ }
+ catch ( uno::Exception& )
+ {
+ }
+}
+
+void MigrationThread::onTerminated()
+{
+}
+
+// -------------------------------------------------------------------
+
+MigrationPage::MigrationPage(
+ svt::OWizardMachine* parent,
+ const ResId& resid, Throbber& i_throbber )
+ : OWizardPage(parent, resid)
+ , m_ftHead(this, WizardResId(FT_MIGRATION_HEADER))
+ , m_ftBody(this, WizardResId(FT_MIGRATION_BODY))
+ , m_cbMigration(this, WizardResId(CB_MIGRATION))
+ , m_rThrobber(i_throbber)
+ , m_bMigrationDone(sal_False)
+{
+ FreeResource();
+ _setBold(m_ftHead);
+
+ // replace %OLDPRODUCT with found version name
+ String aText = m_ftBody.GetText();
+ aText.SearchAndReplaceAll( UniString::CreateFromAscii("%OLDPRODUCT"), Migration::getOldVersionName());
+ m_ftBody.SetText( aText );
+}
+
+sal_Bool MigrationPage::commitPage( svt::WizardTypes::CommitPageReason _eReason )
+{
+ if (_eReason == svt::WizardTypes::eTravelForward && m_cbMigration.IsChecked() && !m_bMigrationDone)
+ {
+ GetParent()->EnterWait();
+ FirstStartWizard* pWizard = dynamic_cast< FirstStartWizard* >( GetParent() );
+ if ( pWizard )
+ pWizard->DisableButtonsWhileMigration();
+
+ m_rThrobber.Show();
+ m_rThrobber.start();
+ MigrationThread* pMigThread = new MigrationThread();
+ pMigThread->create();
+
+ while ( pMigThread->isRunning() )
+ {
+ Application::Reschedule();
+ }
+
+ m_rThrobber.stop();
+ GetParent()->LeaveWait();
+ // Next state will enable buttons - so no EnableButtons necessary!
+ m_rThrobber.Hide();
+ pMigThread->join();
+ delete pMigThread;
+ m_bMigrationDone = sal_True;
+ }
+ else
+ Migration::cancelMigration();
+ return sal_True;
+}
+
+void MigrationPage::ActivatePage()
+{
+ OWizardPage::ActivatePage();
+ GrabFocus();
+}
+
+UserPage::UserPage( svt::OWizardMachine* parent, const ResId& resid)
+ : OWizardPage(parent, resid)
+ , m_ftHead(this, WizardResId(FT_USER_HEADER))
+ , m_ftBody(this, WizardResId(FT_USER_BODY))
+ , m_ftFirst(this, WizardResId(FT_USER_FIRST))
+ , m_edFirst(this, WizardResId(ED_USER_FIRST))
+ , m_ftLast(this, WizardResId(FT_USER_LAST))
+ , m_edLast(this, WizardResId(ED_USER_LAST))
+ , m_ftInitials(this, WizardResId(FT_USER_INITIALS))
+ , m_edInitials(this, WizardResId(ED_USER_INITIALS))
+ , m_ftFather(this, WizardResId(FT_USER_FATHER))
+ , m_edFather(this, WizardResId(ED_USER_FATHER))
+ , m_lang(Application::GetSettings().GetUILanguage())
+{
+ FreeResource();
+ _setBold(m_ftHead);
+
+ // check whether this is a russian version. otherwise
+ // we'll hide the 'Fathers name' field
+ SvtUserOptions aUserOpt;
+ m_edFirst.SetText(aUserOpt.GetFirstName());
+ m_edLast.SetText(aUserOpt.GetLastName());
+#if 0
+ rtl::OUString aUserName;
+ vos::OSecurity().getUserName( aUserName );
+ aUserOpt.SetID( aUserName );
+#endif
+
+ m_edInitials.SetText(aUserOpt.GetID());
+ if (m_lang == LANGUAGE_RUSSIAN)
+ {
+ m_ftFather.Show();
+ m_edFather.Show();
+ m_edFather.SetText(aUserOpt.GetFathersName());
+ }
+}
+
+sal_Bool UserPage::commitPage( svt::WizardTypes::CommitPageReason )
+{
+ SvtUserOptions aUserOpt;
+ aUserOpt.SetFirstName(m_edFirst.GetText());
+ aUserOpt.SetLastName(m_edLast.GetText());
+ aUserOpt.SetID( m_edInitials.GetText());
+
+ if (m_lang == LANGUAGE_RUSSIAN)
+ aUserOpt.SetFathersName(m_edFather.GetText());
+
+ return sal_True;
+}
+
+void UserPage::ActivatePage()
+{
+ OWizardPage::ActivatePage();
+ GrabFocus();
+}
+
+// -------------------------------------------------------------------
+UpdateCheckPage::UpdateCheckPage( svt::OWizardMachine* parent, const ResId& resid)
+ : OWizardPage(parent, resid)
+ , m_ftHead(this, WizardResId(FT_UPDATE_CHECK_HEADER))
+ , m_ftBody(this, WizardResId(FT_UPDATE_CHECK_BODY))
+ , m_cbUpdateCheck(this, WizardResId(CB_UPDATE_CHECK))
+{
+ FreeResource();
+ _setBold(m_ftHead);
+}
+
+sal_Bool UpdateCheckPage::commitPage( svt::WizardTypes::CommitPageReason _eReason )
+{
+ if ( _eReason == svt::WizardTypes::eTravelForward )
+ {
+ try {
+ Reference < XNameReplace > xUpdateAccess;
+ Reference < XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
+
+ xUpdateAccess = Reference < XNameReplace >(
+ xFactory->createInstance( UNISTRING( "com.sun.star.setup.UpdateCheckConfig" ) ), UNO_QUERY_THROW );
+
+ if ( !xUpdateAccess.is() )
+ return sal_False;
+
+ sal_Bool bAutoUpdChk = m_cbUpdateCheck.IsChecked();
+ xUpdateAccess->replaceByName( UNISTRING("AutoCheckEnabled"), makeAny( bAutoUpdChk ) );
+
+ Reference< XChangesBatch > xChangesBatch( xUpdateAccess, UNO_QUERY);
+ if( xChangesBatch.is() && xChangesBatch->hasPendingChanges() )
+ xChangesBatch->commitChanges();
+ } catch (RuntimeException)
+ {
+ }
+ }
+
+ return sal_True;
+}
+
+void UpdateCheckPage::ActivatePage()
+{
+ OWizardPage::ActivatePage();
+ GrabFocus();
+}
+
+// -------------------------------------------------------------------
+RegistrationPage::RegistrationPage( Window* pParent, const ResId& rResid )
+ : OWizardPage( pParent, rResid )
+ , m_ftHeader(this, WizardResId(FT_REGISTRATION_HEADER))
+ , m_ftBody(this, WizardResId(FT_REGISTRATION_BODY))
+ , m_rbNow(this, WizardResId(RB_REGISTRATION_NOW))
+ , m_rbLater(this, WizardResId(RB_REGISTRATION_LATER))
+ , m_rbNever(this, WizardResId(RB_REGISTRATION_NEVER))
+ , m_flSeparator(this, WizardResId(FL_REGISTRATION))
+ , m_ftEnd(this, WizardResId(FT_REGISTRATION_END))
+ , m_bNeverVisible( sal_True )
+{
+ FreeResource();
+
+ // another text for OOo
+ sal_Int32 nOpenSourceContext = 0;
+ try
+ {
+ ::utl::ConfigManager::GetDirectConfigProperty(
+ ::utl::ConfigManager::OPENSOURCECONTEXT ) >>= nOpenSourceContext;
+ }
+ catch( Exception& )
+ {
+ DBG_ERRORFILE( "RegistrationPage::RegistrationPage(): error while getting open source context" );
+ }
+
+ if ( nOpenSourceContext > 0 )
+ {
+ String sBodyText( WizardResId( STR_REGISTRATION_OOO ) );
+ m_ftBody.SetText( sBodyText );
+ }
+
+ // calculate height of body text and rearrange the buttons
+ Size aSize = m_ftBody.GetSizePixel();
+ Size aMinSize = m_ftBody.CalcMinimumSize( aSize.Width() );
+ long nTxtH = aMinSize.Height();
+ long nCtrlH = aSize.Height();
+ long nDelta = ( nCtrlH - nTxtH );
+ aSize.Height() -= nDelta;
+ m_ftBody.SetSizePixel( aSize );
+ Window* pWins[] = { &m_rbNow, &m_rbLater, &m_rbNever };
+ Window** pCurrent = pWins;
+ for ( sal_uInt32 i = 0; i < sizeof( pWins ) / sizeof( pWins[ 0 ] ); ++i, ++pCurrent )
+ {
+ Point aNewPos = (*pCurrent)->GetPosPixel();
+ aNewPos.Y() -= nDelta;
+ (*pCurrent)->SetPosPixel( aNewPos );
+ }
+
+ _setBold(m_ftHeader);
+ impl_retrieveConfigurationData();
+ updateButtonStates();
+}
+
+bool RegistrationPage::canAdvance() const
+{
+ return false;
+}
+
+void RegistrationPage::ActivatePage()
+{
+ OWizardPage::ActivatePage();
+ GrabFocus();
+}
+
+void RegistrationPage::impl_retrieveConfigurationData()
+{
+ static ::rtl::OUString PACKAGE = ::rtl::OUString::createFromAscii("org.openoffice.FirstStartWizard");
+ static ::rtl::OUString PATH = ::rtl::OUString::createFromAscii("TabPages/Registration/RegistrationOptions/NeverButton");
+ static ::rtl::OUString KEY = ::rtl::OUString::createFromAscii("Visible");
+
+ ::com::sun::star::uno::Any aValue;
+ try
+ {
+ aValue = ::comphelper::ConfigurationHelper::readDirectKey(
+ ::comphelper::getProcessServiceFactory(),
+ PACKAGE,
+ PATH,
+ KEY,
+ ::comphelper::ConfigurationHelper::E_READONLY);
+ }
+ catch(const ::com::sun::star::uno::Exception&)
+ { aValue.clear(); }
+
+ aValue >>= m_bNeverVisible;
+}
+
+void RegistrationPage::updateButtonStates()
+{
+ m_rbNever.Show( m_bNeverVisible );
+}
+
+sal_Bool RegistrationPage::commitPage( svt::WizardTypes::CommitPageReason _eReason )
+{
+ if ( _eReason == svt::WizardTypes::eFinish )
+ {
+ ::utl::RegOptions aOptions;
+ rtl::OUString aEvent;
+
+ if ( m_rbNow.IsChecked())
+ {
+ aEvent = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "RegistrationRequired" ) );
+ }
+ else if (m_rbLater.IsChecked())
+ {
+ aOptions.activateReminder(7);
+ // avtivate a reminder job...
+ }
+ // aOptions.markSessionDone();
+
+ try
+ {
+ // create the Desktop component which can load components
+ Reference < XMultiServiceFactory > xFactory = ::comphelper::getProcessServiceFactory();
+ if( xFactory.is() )
+ {
+ Reference< com::sun::star::task::XJobExecutor > xProductRegistration(
+ xFactory->createInstance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.setup.ProductRegistration" ) ) ),
+ UNO_QUERY_THROW );
+
+ // tell it that the user wants to register
+ xProductRegistration->trigger( aEvent );
+ }
+ }
+ catch( const Exception& )
+ {
+ }
+ }
+ return sal_True;
+}
+
+RegistrationPage::RegistrationMode RegistrationPage::getRegistrationMode() const
+{
+ RegistrationPage::RegistrationMode eMode = rmNow;
+ if ( m_rbLater.IsChecked() )
+ eMode = rmLater;
+ else if ( m_rbNever.IsChecked() )
+ eMode = rmNever;
+ return eMode;
+}
+
+void RegistrationPage::prepareSingleMode()
+{
+ // remove wizard text (hide and cut)
+ m_flSeparator.Hide();
+ m_ftEnd.Hide();
+ Size aNewSize = GetSizePixel();
+ aNewSize.Height() -= ( aNewSize.Height() - m_flSeparator.GetPosPixel().Y() );
+ SetSizePixel( aNewSize );
+}
+
+bool RegistrationPage::hasReminderDateCome()
+{
+ return ::utl::RegOptions().hasReminderDateCome();
+}
+
+void RegistrationPage::executeSingleMode()
+{
+ // opens the page in a single tabdialog
+ SfxSingleTabDialog aSingleDlg( NULL, TP_REGISTRATION );
+ RegistrationPage* pPage = new RegistrationPage( &aSingleDlg, WizardResId( TP_REGISTRATION ) );
+ pPage->prepareSingleMode();
+ aSingleDlg.SetPage( pPage );
+ aSingleDlg.SetText( pPage->getSingleModeTitle() );
+ aSingleDlg.Execute();
+ // the registration modes "Now" and "Later" are handled by the page
+ RegistrationPage::RegistrationMode eMode = pPage->getRegistrationMode();
+ if ( eMode == RegistrationPage::rmNow || eMode == RegistrationPage::rmLater )
+ pPage->commitPage( WizardTypes::eFinish );
+ if ( eMode != RegistrationPage::rmLater )
+ ::utl::RegOptions().removeReminder();
+}
+
+} // namespace desktop
diff --git a/desktop/source/migration/pages.hxx b/desktop/source/migration/pages.hxx
new file mode 100644
index 0000000000..2f6c2d31a5
--- /dev/null
+++ b/desktop/source/migration/pages.hxx
@@ -0,0 +1,212 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _PAGES_HXX_
+#define _PAGES_HXX_
+
+#include <vcl/tabpage.hxx>
+#include <vcl/button.hxx>
+#include <vcl/dialog.hxx>
+#include <vcl/scrbar.hxx>
+#include <vcl/throbber.hxx>
+#include <svtools/wizardmachine.hxx>
+#include <svtools/svmedit.hxx>
+#include <svl/lstner.hxx>
+#include <svtools/xtextedt.hxx>
+
+namespace desktop
+{
+class WelcomePage : public svt::OWizardPage
+{
+private:
+ FixedText m_ftHead;
+ FixedText m_ftBody;
+ svt::OWizardMachine *m_pParent;
+ sal_Bool m_bLicenseNeedsAcceptance;
+ enum OEMType
+ {
+ OEM_NONE, OEM_NORMAL, OEM_EXTENDED
+ };
+ bool bIsEvalVersion;
+ bool bNoEvalText;
+ void checkEval();
+
+
+public:
+ WelcomePage( svt::OWizardMachine* parent, const ResId& resid, sal_Bool bLicenseNeedsAcceptance );
+protected:
+ virtual void ActivatePage();
+};
+
+class LicenseView : public MultiLineEdit, public SfxListener
+{
+ sal_Bool mbEndReached;
+ Link maEndReachedHdl;
+ Link maScrolledHdl;
+
+public:
+ LicenseView( Window* pParent, const ResId& rResId );
+ ~LicenseView();
+
+ void ScrollDown( ScrollType eScroll );
+
+ sal_Bool IsEndReached() const;
+ sal_Bool EndReached() const { return mbEndReached; }
+ void SetEndReached( sal_Bool bEnd ) { mbEndReached = bEnd; }
+
+ void SetEndReachedHdl( const Link& rHdl ) { maEndReachedHdl = rHdl; }
+ const Link& GetAutocompleteHdl() const { return maEndReachedHdl; }
+
+ void SetScrolledHdl( const Link& rHdl ) { maScrolledHdl = rHdl; }
+ const Link& GetScrolledHdl() const { return maScrolledHdl; }
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+protected:
+ using MultiLineEdit::Notify;
+};
+
+class LicensePage : public svt::OWizardPage
+{
+private:
+ svt::OWizardMachine *m_pParent;
+ FixedText m_ftHead;
+ FixedText m_ftBody1;
+ FixedText m_ftBody1Txt;
+ FixedText m_ftBody2;
+ FixedText m_ftBody2Txt;
+ LicenseView m_mlLicense;
+ PushButton m_pbDown;
+ sal_Bool m_bLicenseRead;
+public:
+ LicensePage( svt::OWizardMachine* parent, const ResId& resid, const rtl::OUString &rLicensePath );
+private:
+ DECL_LINK(PageDownHdl, PushButton*);
+ DECL_LINK(EndReachedHdl, LicenseView*);
+ DECL_LINK(ScrolledHdl, LicenseView*);
+protected:
+ virtual bool canAdvance() const;
+ virtual void ActivatePage();
+};
+
+class MigrationPage : public svt::OWizardPage
+{
+private:
+ FixedText m_ftHead;
+ FixedText m_ftBody;
+ CheckBox m_cbMigration;
+ Throbber& m_rThrobber;
+ sal_Bool m_bMigrationDone;
+public:
+ MigrationPage( svt::OWizardMachine* parent, const ResId& resid, Throbber& i_throbber );
+ virtual sal_Bool commitPage( svt::WizardTypes::CommitPageReason _eReason );
+
+protected:
+ virtual void ActivatePage();
+};
+
+class UserPage : public svt::OWizardPage
+{
+private:
+ FixedText m_ftHead;
+ FixedText m_ftBody;
+ FixedText m_ftFirst;
+ Edit m_edFirst;
+ FixedText m_ftLast;
+ Edit m_edLast;
+ FixedText m_ftInitials;
+ Edit m_edInitials;
+ FixedText m_ftFather;
+ Edit m_edFather;
+ LanguageType m_lang;
+
+public:
+ UserPage( svt::OWizardMachine* parent, const ResId& resid);
+ virtual sal_Bool commitPage( svt::WizardTypes::CommitPageReason _eReason );
+protected:
+ virtual void ActivatePage();
+};
+
+class UpdateCheckPage : public svt::OWizardPage
+{
+private:
+ FixedText m_ftHead;
+ FixedText m_ftBody;
+ CheckBox m_cbUpdateCheck;
+public:
+ UpdateCheckPage( svt::OWizardMachine* parent, const ResId& resid);
+ virtual sal_Bool commitPage( svt::WizardTypes::CommitPageReason _eReason );
+
+protected:
+ virtual void ActivatePage();
+};
+
+
+class RegistrationPage : public svt::OWizardPage
+{
+private:
+ FixedText m_ftHeader;
+ FixedText m_ftBody;
+ RadioButton m_rbNow;
+ RadioButton m_rbLater;
+ RadioButton m_rbNever;
+ FixedLine m_flSeparator;
+ FixedText m_ftEnd;
+
+ sal_Bool m_bNeverVisible;
+
+ void updateButtonStates();
+ void impl_retrieveConfigurationData();
+
+protected:
+ virtual bool canAdvance() const;
+ virtual void ActivatePage();
+
+ virtual sal_Bool commitPage( svt::WizardTypes::CommitPageReason _eReason );
+
+public:
+ RegistrationPage( Window* parent, const ResId& resid);
+
+ enum RegistrationMode
+ {
+ rmNow, // register now
+ rmLater, // register later
+ rmNever // register never
+ };
+
+ RegistrationMode getRegistrationMode() const;
+ void prepareSingleMode();
+ inline String getSingleModeTitle() const { return m_ftHeader.GetText(); }
+
+ static bool hasReminderDateCome();
+ static void executeSingleMode();
+};
+
+} // namespace desktop
+
+#endif // #ifndef _PAGES_HXX_
+
diff --git a/desktop/source/migration/services/autocorrmigration.cxx b/desktop/source/migration/services/autocorrmigration.cxx
index 1f5290f383..ebf5f256fb 100644
--- a/desktop/source/migration/services/autocorrmigration.cxx
+++ b/desktop/source/migration/services/autocorrmigration.cxx
@@ -175,7 +175,7 @@ namespace migration
::rtl::OUString sLanguageType = sSourceLocalName.copy( nStart, nEnd - nStart );
::rtl::OUString sIsoName = MsLangId::convertLanguageToIsoString( (LanguageType) sLanguageType.toInt32() );
::rtl::OUString sTargetLocalName = sBaseName;
- sTargetLocalName += ::rtl::OUString::createFromAscii( "_" );
+ sTargetLocalName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "_" ));
sTargetLocalName += sIsoName;
sTargetLocalName += sSuffix;
::rtl::OUString sTargetName = sTargetDir + sTargetLocalName;
@@ -188,14 +188,14 @@ namespace migration
::rtl::OString aMsg( "AutocorrectionMigration::copyFiles: cannot copy " );
aMsg += ::rtl::OUStringToOString( *aI, RTL_TEXTENCODING_UTF8 ) + " to "
+ ::rtl::OUStringToOString( sTargetName, RTL_TEXTENCODING_UTF8 );
- OSL_ENSURE( sal_False, aMsg.getStr() );
+ OSL_FAIL( aMsg.getStr() );
}
++aI;
}
}
else
{
- OSL_ENSURE( sal_False, "AutocorrectionMigration::copyFiles: no user installation!" );
+ OSL_FAIL( "AutocorrectionMigration::copyFiles: no user installation!" );
}
}
@@ -242,11 +242,11 @@ namespace migration
{
beans::NamedValue aValue;
*pIter >>= aValue;
- if ( aValue.Name.equalsAscii( "UserData" ) )
+ if ( aValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "UserData" ) ) )
{
if ( !(aValue.Value >>= m_sSourceDir) )
{
- OSL_ENSURE( false, "AutocorrectionMigration::initialize: argument UserData has wrong type!" );
+ OSL_FAIL( "AutocorrectionMigration::initialize: argument UserData has wrong type!" );
}
m_sSourceDir += sSourceSubDir;
break;
diff --git a/desktop/source/migration/services/basicmigration.cxx b/desktop/source/migration/services/basicmigration.cxx
index 4ed093cfe4..b3b68e9833 100644
--- a/desktop/source/migration/services/basicmigration.cxx
+++ b/desktop/source/migration/services/basicmigration.cxx
@@ -177,14 +177,14 @@ namespace migration
::rtl::OString aMsg( "BasicMigration::copyFiles: cannot copy " );
aMsg += ::rtl::OUStringToOString( *aI, RTL_TEXTENCODING_UTF8 ) + " to "
+ ::rtl::OUStringToOString( sTargetName, RTL_TEXTENCODING_UTF8 );
- OSL_ENSURE( sal_False, aMsg.getStr() );
+ OSL_FAIL( aMsg.getStr() );
}
++aI;
}
}
else
{
- OSL_ENSURE( sal_False, "BasicMigration::copyFiles: no user installation!" );
+ OSL_FAIL( "BasicMigration::copyFiles: no user installation!" );
}
}
@@ -231,11 +231,11 @@ namespace migration
{
beans::NamedValue aValue;
*pIter >>= aValue;
- if ( aValue.Name.equalsAscii( "UserData" ) )
+ if ( aValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "UserData" ) ) )
{
if ( !(aValue.Value >>= m_sSourceDir) )
{
- OSL_ENSURE( false, "BasicMigration::initialize: argument UserData has wrong type!" );
+ OSL_FAIL( "BasicMigration::initialize: argument UserData has wrong type!" );
}
m_sSourceDir += sSourceUserBasic;
break;
diff --git a/desktop/source/migration/services/cexports.cxx b/desktop/source/migration/services/cexports.cxx
index 261cf26665..02ff514a0b 100644
--- a/desktop/source/migration/services/cexports.cxx
+++ b/desktop/source/migration/services/cexports.cxx
@@ -67,13 +67,6 @@ void SAL_CALL component_getImplementationEnvironment(
*ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
}
-sal_Bool SAL_CALL component_writeInfo(
- void * pServiceManager, void * pRegistryKey )
-{
- return ::cppu::component_writeInfoHelper(
- pServiceManager, pRegistryKey, entries );
-}
-
void * SAL_CALL component_getFactory(
const sal_Char * pImplName, void * pServiceManager, void * pRegistryKey )
{
diff --git a/desktop/source/migration/services/cexportsoo3.cxx b/desktop/source/migration/services/cexportsoo3.cxx
index 771c161879..9ffc255de5 100644
--- a/desktop/source/migration/services/cexportsoo3.cxx
+++ b/desktop/source/migration/services/cexportsoo3.cxx
@@ -52,13 +52,6 @@ void SAL_CALL component_getImplementationEnvironment(
*ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
}
-sal_Bool SAL_CALL component_writeInfo(
- void * pServiceManager, void * pRegistryKey )
-{
- return ::cppu::component_writeInfoHelper(
- pServiceManager, pRegistryKey, entries );
-}
-
void * SAL_CALL component_getFactory(
const sal_Char * pImplName, void * pServiceManager, void * pRegistryKey )
{
diff --git a/desktop/source/migration/services/cppumaker.mk b/desktop/source/migration/services/cppumaker.mk
index 5ab16ed1e3..5ab16ed1e3 100644..100755
--- a/desktop/source/migration/services/cppumaker.mk
+++ b/desktop/source/migration/services/cppumaker.mk
diff --git a/desktop/source/migration/services/jvmfwk.cxx b/desktop/source/migration/services/jvmfwk.cxx
index f6ad3f54bc..c2a3b14edc 100644
--- a/desktop/source/migration/services/jvmfwk.cxx
+++ b/desktop/source/migration/services/jvmfwk.cxx
@@ -52,6 +52,8 @@
#include <stdio.h>
#include "osl/thread.hxx"
+using ::rtl::OUString;
+
#define OUSTR(x) rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( x ))
#define SERVICE_NAME "com.sun.star.migration.Java"
@@ -61,7 +63,6 @@
#define USER_CLASS_PATH 2
namespace css = com::sun::star;
-using namespace rtl;
using namespace com::sun::star::uno;
using namespace com::sun::star::beans;
using namespace com::sun::star::lang;
@@ -78,7 +79,7 @@ public:
JavaInfo* pData;
CJavaInfo();
~CJavaInfo();
- operator JavaInfo* ();
+ operator JavaInfo* () const;
};
CJavaInfo::CJavaInfo(): pData(NULL)
@@ -90,7 +91,7 @@ CJavaInfo::~CJavaInfo()
jfw_freeJavaInfo(pData);
}
-CJavaInfo::operator JavaInfo*()
+CJavaInfo::operator JavaInfo*() const
{
return pData;
}
@@ -277,7 +278,7 @@ void SAL_CALL JavaMigration::initialize( const css::uno::Sequence< css::uno::Any
for(;pIter != pEnd;++pIter)
{
*pIter >>= aValue;
- if (aValue.Name.equalsAscii("OldConfiguration"))
+ if (aValue.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("OldConfiguration")))
{
sal_Bool bSuccess = aValue.Value >>= aOldConfigValues;
OSL_ENSURE(bSuccess == sal_True, "[Service implementation " IMPL_NAME
@@ -288,7 +289,7 @@ void SAL_CALL JavaMigration::initialize( const css::uno::Sequence< css::uno::Any
const css::beans::NamedValue* pEnd2 = pIter2 + aOldConfigValues.getLength();
for(;pIter2 != pEnd2;++pIter2)
{
- if ( pIter2->Name.equalsAscii("org.openoffice.Office.Java") )
+ if ( pIter2->Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("org.openoffice.Office.Java")) )
{
pIter2->Value >>= m_xLayer;
break;
@@ -296,12 +297,11 @@ void SAL_CALL JavaMigration::initialize( const css::uno::Sequence< css::uno::Any
}
}
}
- else if (aValue.Name.equalsAscii("UserData"))
+ else if (aValue.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("UserData")))
{
if ( !(aValue.Value >>= m_sUserDir) )
{
- OSL_ENSURE(
- false,
+ OSL_FAIL(
"[Service implementation " IMPL_NAME
"] XInitialization::initialize: Argument UserData has wrong type.");
}
@@ -343,9 +343,9 @@ void JavaMigration::migrateJavarc()
{
if (jfw_setSelectedJRE(aInfo) != JFW_E_NONE)
{
- OSL_ENSURE(0, "[Service implementation " IMPL_NAME
+ OSL_FAIL("[Service implementation " IMPL_NAME
"] XJob::execute: jfw_setSelectedJRE failed.");
- fprintf(stderr, "\nCannot migrate Java. An error occured.\n");
+ fprintf(stderr, "\nCannot migrate Java. An error occurred.\n");
}
}
else if (err == JFW_E_FAILED_VERSION)
@@ -420,9 +420,9 @@ void SAL_CALL JavaMigration::overrideProperty(
MalformedDataException,
WrappedTargetException )
{
- if (aName.equalsAscii("Enable"))
+ if (aName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Enable")))
m_aStack.push(TElementStack::value_type(aName,ENABLE_JAVA));
- else if (aName.equalsAscii("UserClassPath"))
+ else if (aName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("UserClassPath")))
m_aStack.push(TElementStack::value_type(aName, USER_CLASS_PATH));
}
// -----------------------------------------------------------------------------
diff --git a/desktop/source/migration/services/makefile.mk b/desktop/source/migration/services/makefile.mk
index 2f3eb9308e..718ac0387c 100644..100755
--- a/desktop/source/migration/services/makefile.mk
+++ b/desktop/source/migration/services/makefile.mk
@@ -34,6 +34,7 @@ COMP1TYPELIST = migrationoo2
LIBTARGET=NO
# --- Settings -----------------------------------------------------
+
.INCLUDE : ..$/..$/deployment/inc/dp_misc.mk
.INCLUDE : settings.mk
DLLPRE =
@@ -80,14 +81,13 @@ SHL1STDLIBS= \
SHL1DEPN=
SHL1IMPLIB=imigrationoo2
-#SHL1LIBS=$(SLB)$/$(TARGET).lib
SHL1DEF=$(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
COMP2TYPELIST = migrationoo3
SHL2TARGET=migrationoo3.uno
-SHL2VERSIONMAP = migrationoo3.map
+SHL2VERSIONMAP = $(SOLARENV)/src/component.map
SHL2OBJS= \
$(SLO)$/cexportsoo3.obj \
@@ -108,7 +108,6 @@ SHL2STDLIBS= \
SHL2DEPN=
SHL2IMPLIB=imigrationoo3
-#SHL2LIBS=$(SLB)$/$(SHL2TARGET).lib
SHL2DEF=$(MISC)$/$(SHL2TARGET).def
DEF2NAME=$(SHL2TARGET)
@@ -117,3 +116,18 @@ DEF2NAME=$(SHL2TARGET)
.INCLUDE : target.mk
+ALLTAR : $(MISC)/migrationoo3.component
+
+$(MISC)/migrationoo3.component .ERRREMOVE : \
+ $(SOLARENV)/bin/createcomponent.xslt migrationoo3.component
+ $(XSLTPROC) --nonet --stringparam uri \
+ '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL2TARGETN:f)' -o $@ \
+ $(SOLARENV)/bin/createcomponent.xslt migrationoo3.component
+
+ALLTAR : $(MISC)/migrationoo2.component
+
+$(MISC)/migrationoo2.component .ERRREMOVE : \
+ $(SOLARENV)/bin/createcomponent.xslt migrationoo2.component
+ $(XSLTPROC) --nonet --stringparam uri \
+ '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
+ $(SOLARENV)/bin/createcomponent.xslt migrationoo2.component
diff --git a/desktop/source/migration/services/migrationoo2.component b/desktop/source/migration/services/migrationoo2.component
new file mode 100755
index 0000000000..2b21ab123b
--- /dev/null
+++ b/desktop/source/migration/services/migrationoo2.component
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<component loader="com.sun.star.loader.SharedLibrary"
+ xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.comp.desktop.migration.Basic">
+ <service name="com.sun.star.migration.Basic"/>
+ </implementation>
+ <implementation name="com.sun.star.comp.desktop.migration.Wordbooks">
+ <service name="com.sun.star.migration.Wordbooks"/>
+ </implementation>
+</component>
diff --git a/desktop/source/migration/services/migrationoo2.xml b/desktop/source/migration/services/migrationoo2.xml
index 0c77badebc..0c77badebc 100644..100755
--- a/desktop/source/migration/services/migrationoo2.xml
+++ b/desktop/source/migration/services/migrationoo2.xml
diff --git a/desktop/source/migration/services/migrationoo3.component b/desktop/source/migration/services/migrationoo3.component
new file mode 100755
index 0000000000..380c389ab7
--- /dev/null
+++ b/desktop/source/migration/services/migrationoo3.component
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<component loader="com.sun.star.loader.SharedLibrary"
+ xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.comp.desktop.migration.OOo3Extensions">
+ <service name="com.sun.star.migration.Extensions"/>
+ </implementation>
+</component>
diff --git a/desktop/source/migration/services/migrationoo3.map b/desktop/source/migration/services/migrationoo3.map
deleted file mode 100644
index ac2c3750bf..0000000000
--- a/desktop/source/migration/services/migrationoo3.map
+++ /dev/null
@@ -1,8 +0,0 @@
-UDK_3_0_0 {
- global:
- component_getImplementationEnvironment;
- component_writeInfo;
- component_getFactory;
- local:
- *;
-};
diff --git a/desktop/source/migration/services/oo3extensionmigration.cxx b/desktop/source/migration/services/oo3extensionmigration.cxx
index e62cd1e2e2..b904179536 100644
--- a/desktop/source/migration/services/oo3extensionmigration.cxx
+++ b/desktop/source/migration/services/oo3extensionmigration.cxx
@@ -293,7 +293,7 @@ bool OO3ExtensionMigration::scanDescriptionXml( const ::rtl::OUString& sDescript
utl::TextSearch ts(param, LANGUAGE_DONTKNOW);
xub_StrLen start = 0;
- xub_StrLen end = static_cast<USHORT>(aExtIdentifier.getLength());
+ xub_StrLen end = static_cast<sal_uInt16>(aExtIdentifier.getLength());
if (ts.SearchFrwrd(aExtIdentifier, &start, &end))
return false;
}
@@ -318,7 +318,7 @@ bool OO3ExtensionMigration::scanDescriptionXml( const ::rtl::OUString& sDescript
utl::TextSearch ts(param, LANGUAGE_DONTKNOW);
xub_StrLen start = 0;
- xub_StrLen end = static_cast<USHORT>(sDescriptionXmlURL.getLength());
+ xub_StrLen end = static_cast<sal_uInt16>(sDescriptionXmlURL.getLength());
if (ts.SearchFrwrd(sDescriptionXmlURL, &start, &end))
return false;
}
@@ -415,14 +415,14 @@ void OO3ExtensionMigration::initialize( const Sequence< Any >& aArguments ) thro
{
beans::NamedValue aValue;
*pIter >>= aValue;
- if ( aValue.Name.equalsAscii( "UserData" ) )
+ if ( aValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "UserData" ) ) )
{
if ( !(aValue.Value >>= m_sSourceDir) )
{
- OSL_ENSURE( false, "ExtensionMigration::initialize: argument UserData has wrong type!" );
+ OSL_FAIL( "ExtensionMigration::initialize: argument UserData has wrong type!" );
}
}
- else if ( aValue.Name.equalsAscii( "ExtensionBlackList" ) )
+ else if ( aValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "ExtensionBlackList" ) ) )
{
Sequence< ::rtl::OUString > aBlackList;
if ( (aValue.Value >>= aBlackList ) && ( aBlackList.getLength() > 0 ))
@@ -434,28 +434,6 @@ void OO3ExtensionMigration::initialize( const Sequence< Any >& aArguments ) thro
}
}
-// -----------------------------------------------------------------------------
-
-TStringVectorPtr getContent( const ::rtl::OUString& rBaseURL )
-{
- TStringVectorPtr aResult( new TStringVector );
- ::osl::Directory aDir( rBaseURL);
- if ( aDir.open() == ::osl::FileBase::E_None )
- {
- // iterate over directory content
- TStringVector aSubDirs;
- ::osl::DirectoryItem aItem;
- while ( aDir.getNextItem( aItem ) == ::osl::FileBase::E_None )
- {
- ::osl::FileStatus aFileStatus( FileStatusMask_Type | FileStatusMask_FileURL );
- if ( aItem.getFileStatus( aFileStatus ) == ::osl::FileBase::E_None )
- aResult->push_back( aFileStatus.getFileURL() );
- }
- }
-
- return aResult;
-}
-
Any OO3ExtensionMigration::execute( const Sequence< beans::NamedValue >& )
throw (lang::IllegalArgumentException, Exception, RuntimeException)
{
diff --git a/desktop/source/migration/services/wordbookmigration.cxx b/desktop/source/migration/services/wordbookmigration.cxx
index 152cded83c..4e93a59936 100644
--- a/desktop/source/migration/services/wordbookmigration.cxx
+++ b/desktop/source/migration/services/wordbookmigration.cxx
@@ -177,7 +177,7 @@ bool IsUserWordbook( const ::rtl::OUString& rFile )
bRet = true;
else
{
- USHORT nLen;
+ sal_uInt16 nLen;
pStream->Seek (nSniffPos);
*pStream >> nLen;
if ( nLen < MAX_HEADER_LENGTH )
@@ -224,7 +224,7 @@ bool IsUserWordbook( const ::rtl::OUString& rFile )
::rtl::OString aMsg( "WordbookMigration::copyFiles: cannot copy " );
aMsg += ::rtl::OUStringToOString( *aI, RTL_TEXTENCODING_UTF8 ) + " to "
+ ::rtl::OUStringToOString( sTargetName, RTL_TEXTENCODING_UTF8 );
- OSL_ENSURE( sal_False, aMsg.getStr() );
+ OSL_FAIL( aMsg.getStr() );
}
}
++aI;
@@ -232,7 +232,7 @@ bool IsUserWordbook( const ::rtl::OUString& rFile )
}
else
{
- OSL_ENSURE( sal_False, "WordbookMigration::copyFiles: no user installation!" );
+ OSL_FAIL( "WordbookMigration::copyFiles: no user installation!" );
}
}
@@ -279,11 +279,11 @@ bool IsUserWordbook( const ::rtl::OUString& rFile )
{
beans::NamedValue aValue;
*pIter >>= aValue;
- if ( aValue.Name.equalsAscii( "UserData" ) )
+ if ( aValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "UserData" ) ) )
{
if ( !(aValue.Value >>= m_sSourceDir) )
{
- OSL_ENSURE( false, "WordbookMigration::initialize: argument UserData has wrong type!" );
+ OSL_FAIL( "WordbookMigration::initialize: argument UserData has wrong type!" );
}
m_sSourceDir += sSourceSubDir;
break;
diff --git a/desktop/source/migration/wizard.cxx b/desktop/source/migration/wizard.cxx
new file mode 100644
index 0000000000..47f3fcda50
--- /dev/null
+++ b/desktop/source/migration/wizard.cxx
@@ -0,0 +1,603 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_desktop.hxx"
+
+#include <migration.hxx>
+#include "wizard.hxx"
+#include "wizard.hrc"
+#include "pages.hxx"
+#include "app.hxx"
+
+#include <rtl/ustring.hxx>
+#include <rtl/ustrbuf.hxx>
+#include <rtl/string.hxx>
+#include <rtl/strbuf.hxx>
+#include <rtl/bootstrap.hxx>
+
+#include <comphelper/processfactory.hxx>
+#include <tools/date.hxx>
+#include <tools/time.hxx>
+#include <tools/datetime.hxx>
+#include <osl/file.hxx>
+#include <osl/time.h>
+#include <osl/module.hxx>
+#include <unotools/bootstrap.hxx>
+#include <vcl/msgbox.hxx>
+
+#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/uno/Sequence.hxx>
+#include <com/sun/star/beans/NamedValue.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/XPropertyState.hpp>
+#include <com/sun/star/frame/XDesktop.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/util/XChangesBatch.hpp>
+#include <com/sun/star/container/XNameReplace.hpp>
+#include <com/sun/star/awt/WindowDescriptor.hpp>
+#include <com/sun/star/awt/WindowAttribute.hpp>
+
+using namespace svt;
+using namespace rtl;
+using namespace osl;
+using namespace utl;
+using namespace com::sun::star;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::util;
+using namespace com::sun::star::container;
+
+#define UNISTRING(s) rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(s))
+
+namespace desktop
+{
+
+const FirstStartWizard::WizardState FirstStartWizard::STATE_WELCOME = 0;
+const FirstStartWizard::WizardState FirstStartWizard::STATE_LICENSE = 1;
+const FirstStartWizard::WizardState FirstStartWizard::STATE_MIGRATION = 2;
+const FirstStartWizard::WizardState FirstStartWizard::STATE_USER = 3;
+const FirstStartWizard::WizardState FirstStartWizard::STATE_UPDATE_CHECK = 4;
+const FirstStartWizard::WizardState FirstStartWizard::STATE_REGISTRATION = 5;
+
+static sal_Int32 getBuildId()
+{
+ ::rtl::OUString aDefault;
+ ::rtl::OUString aBuildIdData = utl::Bootstrap::getBuildIdData( aDefault );
+ sal_Int32 nBuildId( 0 );
+ sal_Int32 nIndex1 = aBuildIdData.indexOf(':');
+ sal_Int32 nIndex2 = aBuildIdData.indexOf(')');
+ if (( nIndex1 > 0 ) && ( nIndex2 > 0 ) && ( nIndex2-1 > nIndex1+1 ))
+ {
+ ::rtl::OUString aBuildId = aBuildIdData.copy( nIndex1+1, nIndex2-nIndex1-1 );
+ nBuildId = aBuildId.toInt32();
+ }
+ return nBuildId;
+}
+
+WizardResId::WizardResId( sal_uInt16 nId ) :
+ ResId( nId, *FirstStartWizard::GetResManager() )
+{
+}
+
+ResMgr *FirstStartWizard::pResMgr = 0;
+
+ResMgr *FirstStartWizard::GetResManager()
+{
+ if ( !FirstStartWizard::pResMgr )
+ {
+ String aMgrName = String::CreateFromAscii( "dkt" );
+ FirstStartWizard::pResMgr = ResMgr::CreateResMgr( OUStringToOString( aMgrName, RTL_TEXTENCODING_UTF8 ));
+ }
+ return FirstStartWizard::pResMgr;
+}
+
+FirstStartWizard::FirstStartWizard( Window* pParent, sal_Bool bLicenseNeedsAcceptance, const rtl::OUString &rLicensePath )
+ :RoadmapWizard( pParent, WizardResId(DLG_FIRSTSTART_WIZARD),
+ WZB_NEXT|WZB_PREVIOUS|WZB_FINISH|WZB_CANCEL|WZB_HELP)
+ ,m_bOverride(sal_False)
+ ,m_aDefaultPath(0)
+ ,m_aMigrationPath(0)
+ ,m_bDone(sal_False)
+ ,m_bLicenseNeedsAcceptance( bLicenseNeedsAcceptance )
+ ,m_bLicenseWasAccepted(sal_False)
+ ,m_bAutomaticUpdChk(sal_True)
+ ,m_aThrobber(this, WizardResId(CTRL_THROBBER))
+ ,m_aLicensePath( rLicensePath )
+{
+ FreeResource();
+ // ---
+// enableState(STATE_USER, sal_False);
+// enableState(STATE_REGISTRATION, sal_False);
+
+ Size aTPSize(TP_WIDTH, TP_HEIGHT);
+ SetPageSizePixel(LogicToPixel(aTPSize, MAP_APPFONT));
+
+ //set help id
+ m_pPrevPage->SetHelpId(HID_FIRSTSTART_PREV);
+ m_pNextPage->SetHelpId(HID_FIRSTSTART_NEXT);
+ m_pCancel->SetHelpId(HID_FIRSTSTART_CANCEL);
+ m_pFinish->SetHelpId(HID_FIRSTSTART_FINISH);
+ // m_pHelp->SetUniqueId(UID_FIRSTSTART_HELP);
+ m_pHelp->Hide();
+ m_pHelp->Disable();
+
+ // save button lables
+ m_sNext = m_pNextPage->GetText();
+ m_sCancel = m_pCancel->GetText();
+
+ // save cancel click handler
+ m_lnkCancel = m_pCancel->GetClickHdl();
+
+ m_aDefaultPath = defineWizardPagesDependingFromContext();
+ activatePath(m_aDefaultPath, sal_True);
+
+ ActivatePage();
+
+ // set text of finish putton:
+ m_pFinish->SetText(String(WizardResId(STR_FINISH)));
+ // disable "finish button"
+ enableButtons(WZB_FINISH, sal_False);
+ defaultButton(WZB_NEXT);
+}
+
+void FirstStartWizard::DisableButtonsWhileMigration()
+{
+ enableButtons(0xff, sal_False);
+}
+
+::svt::RoadmapWizardTypes::PathId FirstStartWizard::defineWizardPagesDependingFromContext()
+{
+ ::svt::RoadmapWizardTypes::PathId aDefaultPath = 0;
+
+ sal_Bool bPage_Welcome = sal_True;
+ sal_Bool bPage_License = sal_True;
+ sal_Bool bPage_Migration = sal_True;
+ sal_Bool bPage_User = sal_True;
+ sal_Bool bPage_UpdateCheck = sal_True;
+ sal_Bool bPage_Registration = sal_True;
+
+ bPage_License = m_bLicenseNeedsAcceptance;
+ bPage_Migration = Migration::checkMigration();
+ bPage_UpdateCheck = showOnlineUpdatePage();
+
+ WizardPath aPath;
+ if (bPage_Welcome)
+ aPath.push_back(STATE_WELCOME);
+ if (bPage_License)
+ aPath.push_back(STATE_LICENSE);
+ if (bPage_Migration)
+ aPath.push_back(STATE_MIGRATION);
+ if (bPage_User)
+ aPath.push_back(STATE_USER);
+ if (bPage_UpdateCheck)
+ aPath.push_back(STATE_UPDATE_CHECK);
+ if (bPage_Registration)
+ aPath.push_back(STATE_REGISTRATION);
+
+ declarePath(aDefaultPath, aPath);
+
+ // a) If license must be accepted by the user, all direct links
+ // to wizard tab pages must be disabled. Because such pages
+ // should be accessible only in case license was accepted !
+ // b) But if no license should be shown at all ...
+ // such direct links can be enabled by default.
+ sal_Bool bAllowDirectLink = ( ! bPage_License);
+
+ if (bPage_User)
+ enableState(STATE_USER, bAllowDirectLink);
+ if (bPage_UpdateCheck)
+ enableState(STATE_UPDATE_CHECK, bAllowDirectLink);
+ if (bPage_Migration)
+ enableState(STATE_MIGRATION, bAllowDirectLink);
+ if (bPage_Registration)
+ enableState(STATE_REGISTRATION, bAllowDirectLink);
+
+ return aDefaultPath;
+}
+
+// catch F1 and disable help
+long FirstStartWizard::PreNotify( NotifyEvent& rNEvt )
+{
+ if( rNEvt.GetType() == EVENT_KEYINPUT )
+ {
+ const KeyCode& rKey = rNEvt.GetKeyEvent()->GetKeyCode();
+ if( rKey.GetCode() == KEY_F1 && ! rKey.GetModifier() )
+ return sal_True;
+ }
+ return RoadmapWizard::PreNotify(rNEvt);
+}
+
+
+void FirstStartWizard::enterState(WizardState _nState)
+{
+ RoadmapWizard::enterState(_nState);
+ // default state
+ // all on
+ enableButtons(0xff, sal_True);
+ // finish off
+ enableButtons(WZB_FINISH, sal_False);
+ // default text
+ m_pCancel->SetText(m_sCancel);
+ m_pCancel->SetClickHdl(m_lnkCancel);
+ m_pNextPage->SetText(m_sNext);
+
+ // default
+ defaultButton(WZB_NEXT);
+
+ // specialized state
+ switch (_nState)
+ {
+ case STATE_WELCOME:
+ enableButtons(WZB_PREVIOUS, sal_False);
+ break;
+ case STATE_LICENSE:
+ m_pCancel->SetText(String(WizardResId(STR_LICENSE_DECLINE)));
+ m_pNextPage->SetText(String(WizardResId(STR_LICENSE_ACCEPT)));
+ enableButtons(WZB_NEXT, sal_False);
+ // attach warning dialog to cancel/decline button
+ m_pCancel->SetClickHdl( LINK(this, FirstStartWizard, DeclineHdl) );
+ break;
+ case STATE_REGISTRATION:
+ enableButtons(WZB_NEXT, sal_False);
+ enableButtons(WZB_FINISH, sal_True);
+ defaultButton(WZB_FINISH);
+ break;
+ }
+
+ // focus
+
+}
+
+IMPL_LINK( FirstStartWizard, DeclineHdl, PushButton *, EMPTYARG )
+{
+ QueryBox aBox(this, WizardResId(QB_ASK_DECLINE));
+ sal_Int32 ret = aBox.Execute();
+ if ( ret == BUTTON_OK || ret == BUTTON_YES)
+ {
+ Close();
+ return sal_False;
+ }
+ else
+ return sal_True;
+}
+
+
+TabPage* FirstStartWizard::createPage(WizardState _nState)
+{
+ TabPage *pTabPage = 0;
+ switch (_nState)
+ {
+ case STATE_WELCOME:
+ pTabPage = new WelcomePage(this, WizardResId(TP_WELCOME), m_bLicenseNeedsAcceptance);
+ break;
+ case STATE_LICENSE:
+ pTabPage = new LicensePage(this, WizardResId(TP_LICENSE), m_aLicensePath);
+ break;
+ case STATE_MIGRATION:
+ pTabPage = new MigrationPage(this, WizardResId(TP_MIGRATION), m_aThrobber);
+ break;
+ case STATE_USER:
+ pTabPage = new UserPage(this, WizardResId(TP_USER));
+ break;
+ case STATE_UPDATE_CHECK:
+ pTabPage = new UpdateCheckPage(this, WizardResId(TP_UPDATE_CHECK));
+ break;
+ case STATE_REGISTRATION:
+ pTabPage = new RegistrationPage(this, WizardResId(TP_REGISTRATION));
+ break;
+ }
+ pTabPage->Show();
+
+ return pTabPage;
+}
+
+String FirstStartWizard::getStateDisplayName( WizardState _nState ) const
+{
+ String sName;
+ switch(_nState)
+ {
+ case STATE_WELCOME:
+ sName = String(WizardResId(STR_STATE_WELCOME));
+ break;
+ case STATE_LICENSE:
+ sName = String(WizardResId(STR_STATE_LICENSE));
+ break;
+ case STATE_MIGRATION:
+ sName = String(WizardResId(STR_STATE_MIGRATION));
+ break;
+ case STATE_USER:
+ sName = String(WizardResId(STR_STATE_USER));
+ break;
+ case STATE_UPDATE_CHECK:
+ sName = String(WizardResId(STR_STATE_UPDATE_CHECK));
+ break;
+ case STATE_REGISTRATION:
+ sName = String(WizardResId(STR_STATE_REGISTRATION));
+ break;
+ }
+ return sName;
+}
+
+sal_Bool FirstStartWizard::prepareLeaveCurrentState( CommitPageReason _eReason )
+{
+ // the license acceptance is handled here, because it needs to change the state
+ // of the roadmap wizard which the page implementation does not know.
+ if (
+ (_eReason == eTravelForward) &&
+ (getCurrentState() == STATE_LICENSE ) &&
+ (m_bLicenseWasAccepted == sal_False )
+ )
+ {
+ if (Migration::checkMigration())
+ enableState(FirstStartWizard::STATE_MIGRATION, sal_True);
+ if ( showOnlineUpdatePage() )
+ enableState(FirstStartWizard::STATE_UPDATE_CHECK, sal_True);
+ enableState(FirstStartWizard::STATE_USER, sal_True);
+ enableState(FirstStartWizard::STATE_REGISTRATION, sal_True);
+
+ storeAcceptDate();
+ m_bLicenseWasAccepted = sal_True;
+ }
+
+ return svt::RoadmapWizard::prepareLeaveCurrentState(_eReason);
+}
+
+sal_Bool FirstStartWizard::leaveState(WizardState)
+{
+ if (( getCurrentState() == STATE_MIGRATION ) && m_bLicenseWasAccepted )
+ {
+ // Store accept date and patch level now as it has been
+ // overwritten by the migration process!
+ storeAcceptDate();
+ setPatchLevel();
+ }
+
+ return sal_True;
+}
+
+sal_Bool FirstStartWizard::onFinish()
+{
+ // return sal_True;
+ if ( svt::RoadmapWizard::onFinish() )
+ {
+#ifndef OS2 // cannot enable quickstart on first startup, see shutdownicon.cxx comments.
+ enableQuickstart();
+#endif
+ disableWizard();
+ return sal_True;
+ }
+ else
+ return sal_False;
+}
+
+short FirstStartWizard::Execute()
+{
+ return svt::RoadmapWizard::Execute();
+}
+
+static OUString _makeDateTimeString (const DateTime& aDateTime, sal_Bool bUTC = sal_False)
+{
+ OStringBuffer aDateTimeString;
+ aDateTimeString.append((sal_Int32)aDateTime.GetYear());
+ aDateTimeString.append("-");
+ if (aDateTime.GetMonth()<10) aDateTimeString.append("0");
+ aDateTimeString.append((sal_Int32)aDateTime.GetMonth());
+ aDateTimeString.append("-");
+ if (aDateTime.GetDay()<10) aDateTimeString.append("0");
+ aDateTimeString.append((sal_Int32)aDateTime.GetDay());
+ aDateTimeString.append("T");
+ if (aDateTime.GetHour()<10) aDateTimeString.append("0");
+ aDateTimeString.append((sal_Int32)aDateTime.GetHour());
+ aDateTimeString.append(":");
+ if (aDateTime.GetMin()<10) aDateTimeString.append("0");
+ aDateTimeString.append((sal_Int32)aDateTime.GetMin());
+ aDateTimeString.append(":");
+ if (aDateTime.GetSec()<10) aDateTimeString.append("0");
+ aDateTimeString.append((sal_Int32)aDateTime.GetSec());
+ if (bUTC) aDateTimeString.append("Z");
+
+ return OStringToOUString(aDateTimeString.makeStringAndClear(), RTL_TEXTENCODING_ASCII_US);
+}
+
+static OUString _getCurrentDateString()
+{
+ OUString aString;
+ return _makeDateTimeString(DateTime());
+}
+
+
+static const OUString sConfigSrvc( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationProvider" ) );
+static const OUString sAccessSrvc( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationUpdateAccess" ) );
+static const OUString sReadSrvc ( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationAccess" ) );
+
+void FirstStartWizard::storeAcceptDate()
+{
+
+ try {
+ Reference < XMultiServiceFactory > xFactory = ::comphelper::getProcessServiceFactory();
+ // get configuration provider
+ Reference< XMultiServiceFactory > theConfigProvider = Reference< XMultiServiceFactory >(
+ xFactory->createInstance(sConfigSrvc), UNO_QUERY_THROW);
+ Sequence< Any > theArgs(1);
+ NamedValue v(OUString::createFromAscii("NodePath"),
+ makeAny(OUString::createFromAscii("org.openoffice.Setup/Office")));
+ theArgs[0] <<= v;
+ Reference< XPropertySet > pset = Reference< XPropertySet >(
+ theConfigProvider->createInstanceWithArguments(sAccessSrvc, theArgs), UNO_QUERY_THROW);
+ Any result = pset->getPropertyValue(OUString::createFromAscii("LicenseAcceptDate"));
+
+ OUString aAcceptDate = _getCurrentDateString();
+ pset->setPropertyValue(OUString::createFromAscii("LicenseAcceptDate"), makeAny(aAcceptDate));
+ Reference< XChangesBatch >(pset, UNO_QUERY_THROW)->commitChanges();
+
+ // since the license is accepted the local user registry can be cleaned if required
+ cleanOldOfficeRegKeys();
+ } catch (const Exception&)
+ {
+ }
+
+}
+
+void FirstStartWizard::setPatchLevel()
+{
+ try {
+ Reference < XMultiServiceFactory > xFactory = ::comphelper::getProcessServiceFactory();
+ // get configuration provider
+ Reference< XMultiServiceFactory > theConfigProvider = Reference< XMultiServiceFactory >(
+ xFactory->createInstance(sConfigSrvc), UNO_QUERY_THROW);
+ Sequence< Any > theArgs(1);
+ NamedValue v(OUString::createFromAscii("NodePath"),
+ makeAny(OUString::createFromAscii("org.openoffice.Office.Common/Help/Registration")));
+ theArgs[0] <<= v;
+ Reference< XPropertySet > pset = Reference< XPropertySet >(
+ theConfigProvider->createInstanceWithArguments(sAccessSrvc, theArgs), UNO_QUERY_THROW);
+ Any result = pset->getPropertyValue(OUString::createFromAscii("ReminderDate"));
+
+ OUString aPatchLevel( RTL_CONSTASCII_USTRINGPARAM( "Patch" ));
+ aPatchLevel += OUString::valueOf( getBuildId(), 10 );
+ pset->setPropertyValue(OUString::createFromAscii("ReminderDate"), makeAny(aPatchLevel));
+ Reference< XChangesBatch >(pset, UNO_QUERY_THROW)->commitChanges();
+ } catch (const Exception&)
+ {
+ }
+}
+
+#ifdef WNT
+typedef int ( __stdcall * CleanCurUserRegProc ) ( wchar_t* );
+#endif
+
+void FirstStartWizard::cleanOldOfficeRegKeys()
+{
+#ifdef WNT
+ // after the wizard is completed clean OOo1.1.x entries in the current user registry if required
+ // issue i47658
+
+ OUString aBaseLocationPath;
+ OUString aSharedLocationPath;
+ OUString aInstallMode;
+
+ ::utl::Bootstrap::PathStatus aBaseLocateResult =
+ ::utl::Bootstrap::locateBaseInstallation( aBaseLocationPath );
+ ::utl::Bootstrap::PathStatus aSharedLocateResult =
+ ::utl::Bootstrap::locateSharedData( aSharedLocationPath );
+ aInstallMode = ::utl::Bootstrap::getAllUsersValue( ::rtl::OUString() );
+
+ // TODO: replace the checking for install mode
+ if ( aBaseLocateResult == ::utl::Bootstrap::PATH_EXISTS && aSharedLocateResult == ::utl::Bootstrap::PATH_EXISTS
+ && aInstallMode.equals( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "1" ) ) ) )
+ {
+ ::rtl::OUString aDeregCompletePath =
+ aBaseLocationPath + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/program/regcleanold.dll" ) );
+ ::rtl::OUString aExecCompletePath =
+ aSharedLocationPath + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/regdeinstall/userdeinst.exe" ) );
+
+ osl::Module aCleanModule( aDeregCompletePath );
+ CleanCurUserRegProc pNativeProc = ( CleanCurUserRegProc )(
+ aCleanModule.getFunctionSymbol(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CleanCurUserOldSystemRegistry" ) ) ) );
+
+ if( pNativeProc!=NULL )
+ {
+ ::rtl::OUString aExecCompleteSysPath;
+ if ( osl::File::getSystemPathFromFileURL( aExecCompletePath, aExecCompleteSysPath ) == FileBase::E_None
+ && aExecCompleteSysPath.getLength() )
+ {
+ ( *pNativeProc )( (wchar_t*)( aExecCompleteSysPath.getStr() ) );
+ }
+ }
+ }
+#endif
+}
+
+void FirstStartWizard::disableWizard()
+{
+
+ try {
+ Reference < XMultiServiceFactory > xFactory = ::comphelper::getProcessServiceFactory();
+ // get configuration provider
+ Reference< XMultiServiceFactory > theConfigProvider = Reference< XMultiServiceFactory >(
+ xFactory->createInstance(sConfigSrvc), UNO_QUERY_THROW);
+ Sequence< Any > theArgs(1);
+ NamedValue v(OUString::createFromAscii("NodePath"),
+ makeAny(OUString::createFromAscii("org.openoffice.Setup/Office")));
+ theArgs[0] <<= v;
+ Reference< XPropertySet > pset = Reference< XPropertySet >(
+ theConfigProvider->createInstanceWithArguments(sAccessSrvc, theArgs), UNO_QUERY_THROW);
+ pset->setPropertyValue(OUString::createFromAscii("FirstStartWizardCompleted"), makeAny(sal_True));
+ Reference< XChangesBatch >(pset, UNO_QUERY_THROW)->commitChanges();
+ } catch (const Exception&)
+ {
+ }
+
+}
+
+
+void FirstStartWizard::enableQuickstart()
+{
+ sal_Bool bQuickstart( sal_True );
+ sal_Bool bAutostart( sal_True );
+ Sequence< Any > aSeq( 2 );
+ aSeq[0] <<= bQuickstart;
+ aSeq[1] <<= bAutostart;
+
+ Reference < XInitialization > xQuickstart( ::comphelper::getProcessServiceFactory()->createInstance(
+ OUString::createFromAscii( "com.sun.star.office.Quickstart" )),UNO_QUERY );
+ if ( xQuickstart.is() )
+ xQuickstart->initialize( aSeq );
+
+}
+
+sal_Bool FirstStartWizard::showOnlineUpdatePage()
+{
+ try {
+ Reference < XNameReplace > xUpdateAccess;
+ Reference < XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
+
+ xUpdateAccess = Reference < XNameReplace >(
+ xFactory->createInstance( UNISTRING( "com.sun.star.setup.UpdateCheckConfig" ) ), UNO_QUERY_THROW );
+
+ if ( xUpdateAccess.is() )
+ {
+ sal_Bool bAutoUpdChk = sal_False;
+ Any result = xUpdateAccess->getByName( UNISTRING( "AutoCheckEnabled" ) );
+ result >>= bAutoUpdChk;
+ if ( bAutoUpdChk == sal_False )
+ return sal_True;
+ else
+ return sal_False;
+ }
+ } catch (const Exception&)
+ {
+ }
+ return sal_False;
+}
+
+}
diff --git a/desktop/source/migration/wizard.hrc b/desktop/source/migration/wizard.hrc
new file mode 100755
index 0000000000..8ba9c89d7e
--- /dev/null
+++ b/desktop/source/migration/wizard.hrc
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "desktop.hrc"
+#include "helpid.hrc"
+
+#define TP_WIDTH 220
+#define TP_HEIGHT 205
+
+#define DLG_FIRSTSTART_WIZARD RID_FIRSTSTSTART_START+1
+ // FREE
+#define TP_WELCOME RID_FIRSTSTSTART_START+3
+#define TP_REGISTRATION RID_FIRSTSTSTART_START+4
+#define TP_MIGRATION RID_FIRSTSTSTART_START+5
+#define TP_USER RID_FIRSTSTSTART_START+6
+#define TP_LICENSE RID_FIRSTSTSTART_START+7
+#define TP_UPDATE_CHECK RID_FIRSTSTSTART_START+8
+#define ERRBOX_REG_NOSYSBROWSER RID_FIRSTSTSTART_START+29
+#define QB_ASK_DECLINE RID_FIRSTSTSTART_START+30
+
+// local resIDs
+
+#define FT_WELCOME_HEADER 1
+#define FT_WELCOME_BODY 2
+#define FT_LICENSE_HEADER 1
+#define FT_LICENSE_BODY_1 2
+#define FT_LICENSE_BODY_1_TXT 3
+#define FT_LICENSE_BODY_2 4
+#define FT_LICENSE_BODY_2_TXT 5
+#define ML_LICENSE 6
+#define PB_LICENSE_DOWN 7
+#define FT_MIGRATION_HEADER 1
+#define FT_MIGRATION_BODY 2
+#define CB_MIGRATION 3
+#define FT_UPDATE_CHECK_HEADER 1
+#define FT_UPDATE_CHECK_BODY 2
+#define CB_UPDATE_CHECK 3
+#define FT_REGISTRATION_HEADER 1
+#define FT_REGISTRATION_BODY 2
+#define FL_REGISTRATION 3
+#define FT_REGISTRATION_END 4
+#define RB_REGISTRATION_NOW 5
+#define RB_REGISTRATION_LATER 6
+#define RB_REGISTRATION_NEVER 7
+#define RB_REGISTRATION_REG 8
+#define IMG_REGISTRATION 9
+#define FT_USER_HEADER 10
+#define FT_USER_BODY 11
+#define FT_USER_FIRST 12
+#define FT_USER_LAST 13
+#define FT_USER_FATHER 14
+#define FT_USER_INITIALS 15
+#define ED_USER_FIRST 16
+#define ED_USER_LAST 17
+#define ED_USER_FATHER 18
+#define ED_USER_INITIALS 19
+#define TR_WAITING 20
+#define CTRL_THROBBER 21
+
+// global strings
+#define STR_STATE_WELCOME RID_FIRSTSTSTART_START+100
+#define STR_STATE_LICENSE RID_FIRSTSTSTART_START+101
+#define STR_STATE_MIGRATION RID_FIRSTSTSTART_START+102
+#define STR_STATE_REGISTRATION RID_FIRSTSTSTART_START+103
+#define STR_WELCOME_MIGRATION RID_FIRSTSTSTART_START+104
+// FREE RID_FIRSTSTSTART_START+105
+// FREE RID_FIRSTSTSTART_START+106
+#define STR_LICENSE_ACCEPT RID_FIRSTSTSTART_START+107
+#define STR_LICENSE_DECLINE RID_FIRSTSTSTART_START+108
+#define STR_FINISH RID_FIRSTSTSTART_START+109
+#define STR_STATE_USER RID_FIRSTSTSTART_START+110
+// FREE RID_FIRSTSTSTART_START+111
+#define STR_STATE_UPDATE_CHECK RID_FIRSTSTSTART_START+112
+#define STR_WELCOME_WITHOUT_LICENSE RID_FIRSTSTSTART_START+113
+#define STR_REGISTRATION_OOO RID_FIRSTSTSTART_START+114
+
diff --git a/desktop/source/migration/wizard.hxx b/desktop/source/migration/wizard.hxx
new file mode 100644
index 0000000000..7a9681a30f
--- /dev/null
+++ b/desktop/source/migration/wizard.hxx
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _WIZARD_HXX_
+#define _WIZARD_HXX_
+
+#include <rtl/ustring.hxx>
+#include <svtools/roadmapwizard.hxx>
+#include <vcl/throbber.hxx>
+#include <tools/resid.hxx>
+
+namespace desktop
+{
+
+class WizardResId : public ResId
+{
+public:
+ WizardResId( sal_uInt16 nId );
+};
+
+class FirstStartWizard : public svt::RoadmapWizard
+{
+
+public:
+ static const WizardState STATE_WELCOME;
+ static const WizardState STATE_LICENSE;
+ static const WizardState STATE_MIGRATION;
+ static const WizardState STATE_USER;
+ static const WizardState STATE_UPDATE_CHECK;
+ static const WizardState STATE_REGISTRATION;
+
+ static ResMgr* pResMgr;
+ static ResMgr* GetResManager();
+
+ FirstStartWizard( Window* pParent, sal_Bool bLicenseNeedsAcceptance, const rtl::OUString &rLicensePath );
+
+ virtual short Execute();
+ virtual long PreNotify( NotifyEvent& rNEvt );
+
+ void DisableButtonsWhileMigration();
+
+private:
+ sal_Bool m_bOverride;
+ WizardState _currentState;
+ ::svt::RoadmapWizardTypes::PathId m_aDefaultPath;
+ ::svt::RoadmapWizardTypes::PathId m_aMigrationPath;
+ String m_sNext;
+ String m_sCancel;
+ sal_Bool m_bDone;
+ sal_Bool m_bLicenseNeedsAcceptance;
+ sal_Bool m_bLicenseWasAccepted;
+ sal_Bool m_bAutomaticUpdChk;
+ Link m_lnkCancel;
+ Throbber m_aThrobber;
+
+ rtl::OUString m_aLicensePath;
+
+ void storeAcceptDate();
+ void setPatchLevel();
+ void disableWizard();
+ void enableQuickstart();
+
+ DECL_LINK(DeclineHdl, PushButton*);
+
+ void cleanOldOfficeRegKeys();
+ sal_Bool showOnlineUpdatePage();
+ ::svt::RoadmapWizardTypes::PathId defineWizardPagesDependingFromContext();
+
+protected:
+ // from svt::WizardMachine
+ virtual TabPage* createPage(WizardState _nState);
+ virtual sal_Bool prepareLeaveCurrentState( CommitPageReason _eReason );
+ virtual sal_Bool leaveState(WizardState _nState );
+ virtual sal_Bool onFinish();
+ virtual void enterState(WizardState _nState);
+
+ // from svt::RoadmapWizard
+ virtual String getStateDisplayName( WizardState _nState ) const;
+};
+}
+#endif
diff --git a/desktop/source/migration/wizard.src b/desktop/source/migration/wizard.src
new file mode 100644
index 0000000000..4f98ce91bb
--- /dev/null
+++ b/desktop/source/migration/wizard.src
@@ -0,0 +1,442 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+ /*
+ * encoding for resources: windows-1252
+ */
+
+#include "wizard.hrc"
+#include <svtools/controldims.hrc>
+
+ModalDialog DLG_FIRSTSTART_WIZARD
+{
+ Text [ en-US ] = "Welcome to %PRODUCTNAME %PRODUCTVERSION";
+
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Hide = TRUE;
+ HelpID = HID_FIRSTSTART_DIALOG;
+
+ FixedImage CTRL_THROBBER
+ {
+ Pos = MAP_APPFONT( 5, 210 );
+ Size = MAP_APPFONT( 11, 11 );
+ Hide = TRUE;
+ };
+};
+
+String STR_STATE_WELCOME
+{
+ Text [ en-US ] = "Welcome";
+};
+String STR_STATE_LICENSE
+{
+ Text [ en-US ] = "License Agreement";
+};
+String STR_STATE_MIGRATION
+{
+ Text [ en-US ] = "Personal Data";
+};
+String STR_STATE_USER
+{
+ Text [ en-US ] = "User name";
+};
+
+String STR_STATE_UPDATE_CHECK
+{
+ Text [ en-US ] = "Online Update";
+};
+
+String STR_STATE_REGISTRATION
+{
+ Text [ en-US ] = "Registration";
+};
+
+String STR_WELCOME_MIGRATION
+{
+ Text [ en-US ] = "This wizard will guide you through the license agreement, the transfer of user data from %OLD_VERSION and the registration of %PRODUCTNAME.\n\nClick 'Next' to continue.";
+
+};
+
+String STR_WELCOME_WITHOUT_LICENSE
+{
+ Text [ en-US ] = "This wizard will guide you through the registration of %PRODUCTNAME.\n\nClick 'Next' to continue.";
+};
+
+String STR_FINISH
+{
+ Text [ en-US ] = "~Finish";
+};
+
+String STR_REGISTRATION_OOO
+{
+ Text [ en-US ] = "You now have the opportunity to support and contribute to the fastest growing open source community in the world.\n\nHelp us prove that %PRODUCTNAME has already gained significant market share by registering.\n\nRegistering is voluntary and without obligation.";
+};
+
+ErrorBox ERRBOX_REG_NOSYSBROWSER
+{
+ BUTTONS = WB_OK ;
+ DEFBUTTON = WB_DEF_OK ;
+
+ Message [ en-US ] = "An error occurred in starting the web browser.\nPlease check the %PRODUCTNAME and web browser settings.";
+};
+
+QueryBox QB_ASK_DECLINE
+{
+ Buttons = WB_YES_NO;
+ DefButton = WB_DEF_NO;
+
+ Message [ en-US ] = "Do you really want to decline?";
+};
+
+
+#define ROWHEIGHT 8
+#define MARGINLEFT 10
+#define MARGINRIGHT 10
+#define BODYWIDTH TP_WIDTH-MARGINLEFT-MARGINRIGHT
+#define MARGINTOP 10
+#define MARGINBOTTOM 2
+#define BODYHEIGHT TP_HEIGHT-MARGINTOP-MARGINBOTTOM
+#define INDENT 10
+#define INDENT2 12
+
+TabPage TP_WELCOME
+{
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Size = MAP_APPFONT(TP_WIDTH, TP_HEIGHT);
+ HelpID = HID_FIRSTSTART_WELCOME;
+ // bold fixedtext for header
+ FixedText FT_WELCOME_HEADER
+ {
+ NoLabel = TRUE;
+ Pos = MAP_APPFONT(MARGINRIGHT, MARGINTOP);
+ Size = MAP_APPFONT( BODYWIDTH, ROWHEIGHT );
+ Text [ en-US ] = "Welcome to %PRODUCTNAME %PRODUCTVERSION";
+ };
+ FixedText FT_WELCOME_BODY
+ {
+ NoLabel = TRUE;
+ Pos = MAP_APPFONT(MARGINLEFT, MARGINTOP + 2*ROWHEIGHT);
+ Size = MAP_APPFONT( BODYWIDTH, BODYHEIGHT-MARGINTOP - 2*ROWHEIGHT );
+ WordBreak = TRUE;
+ Text [ en-US ] = "This wizard will guide you through the license agreement and the registration of %PRODUCTNAME.\n\nClick 'Next' to continue.";
+ };
+};
+
+TabPage TP_LICENSE
+{
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Size = MAP_APPFONT(TP_WIDTH, TP_HEIGHT);
+ HelpID = HID_FIRSTSTART_LICENSE;
+ FixedText FT_LICENSE_HEADER
+ {
+ Pos = MAP_APPFONT(MARGINLEFT, MARGINTOP);
+ Size = MAP_APPFONT( BODYWIDTH, ROWHEIGHT );
+ NoLabel = TRUE;
+ Text [ en-US ] = "Please follow these steps to accept the license";
+ };
+ FixedText FT_LICENSE_BODY_1
+ {
+ Pos = MAP_APPFONT(MARGINLEFT, MARGINTOP + 2*ROWHEIGHT);
+ Size = MAP_APPFONT( INDENT, ROWHEIGHT );
+ NoLabel = TRUE;
+ Text [ en-US ] = "1.";
+ };
+ FixedText FT_LICENSE_BODY_1_TXT
+ {
+ Pos = MAP_APPFONT(MARGINLEFT+INDENT, MARGINTOP +2*ROWHEIGHT);
+ Size = MAP_APPFONT( BODYWIDTH-INDENT, 3*ROWHEIGHT);
+ WordBreak = TRUE;
+ NoLabel = TRUE;
+ Text [ en-US ] = "View the complete License Agreement. Please use the scrollbar or the '%PAGEDOWN' button in this dialog to view the entire license text.";
+ };
+ FixedText FT_LICENSE_BODY_2
+ {
+ Pos = MAP_APPFONT(MARGINLEFT, MARGINTOP + 5*ROWHEIGHT);
+ Size = MAP_APPFONT(INDENT, ROWHEIGHT );
+ NoLabel = TRUE;
+ Text [ en-US ] = "2.";
+ };
+ FixedText FT_LICENSE_BODY_2_TXT
+ {
+ Pos = MAP_APPFONT(MARGINLEFT+INDENT, MARGINTOP + 5*ROWHEIGHT);
+ Size = MAP_APPFONT( BODYWIDTH-INDENT, 2*ROWHEIGHT);
+ WordBreak = TRUE;
+ NoLabel = TRUE;
+ Text [ en-US ] = "Click 'Accept' to accept the terms of the Agreement.";
+ };
+ MultiLineEdit ML_LICENSE
+ {
+ HelpID = "desktop:MultiLineEdit:TP_LICENSE:ML_LICENSE";
+ PosSize = MAP_APPFONT (MARGINLEFT+INDENT, MARGINTOP + 8*ROWHEIGHT, BODYWIDTH-INDENT , BODYHEIGHT - 8*ROWHEIGHT - 20-2*MARGINBOTTOM) ;
+ Border = TRUE;
+ VScroll = TRUE;
+ ReadOnly = TRUE;
+ };
+ PushButton PB_LICENSE_DOWN
+ {
+ HelpID = "desktop:PushButton:TP_LICENSE:PB_LICENSE_DOWN";
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( TP_WIDTH-MARGINRIGHT-50 , TP_HEIGHT-MARGINBOTTOM-18 ) ;
+ Size = MAP_APPFONT ( 50, 15 ) ;
+ Text [ en-US ] = "Scroll Do~wn";
+ };
+};
+
+String STR_LICENSE_ACCEPT
+{
+ Text [ en-US ] = "~Accept";
+};
+String STR_LICENSE_DECLINE
+{
+ Text [ en-US ] = "~Decline";
+};
+
+
+TabPage TP_MIGRATION
+{
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Size = MAP_APPFONT(TP_WIDTH, TP_HEIGHT);
+ HelpID = HID_FIRSTSTART_MIGRATION;
+
+ FixedText FT_MIGRATION_HEADER
+ {
+ NoLabel = TRUE;
+ Pos = MAP_APPFONT(MARGINLEFT, MARGINTOP);
+ Size = MAP_APPFONT( BODYWIDTH, ROWHEIGHT );
+ Text [ en-US ] = "Transfer personal data";
+
+ };
+
+ FixedText FT_MIGRATION_BODY
+ {
+ NoLabel = TRUE;
+ Pos = MAP_APPFONT(MARGINLEFT, MARGINTOP+ROWHEIGHT*2);
+ Size = MAP_APPFONT(BODYWIDTH, ROWHEIGHT*8);
+ WordBreak = TRUE;
+ Text [ en-US ] = "Most personal data from %OLDPRODUCT installation can be reused in %PRODUCTNAME %PRODUCTVERSION.\n\nIf you do not want to reuse any settings in %PRODUCTNAME %PRODUCTVERSION, unmark the check box.";
+
+ };
+
+ CheckBox CB_MIGRATION
+ {
+ HelpID = "desktop:CheckBox:TP_MIGRATION:CB_MIGRATION";
+ Pos = MAP_APPFONT(MARGINLEFT, MARGINTOP+ROWHEIGHT*10);
+ Size = MAP_APPFONT(BODYWIDTH, ROWHEIGHT*2);
+ Check = TRUE;
+ Text [ en-US ] = "Transfer personal data";
+ };
+};
+
+TabPage TP_UPDATE_CHECK
+{
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Size = MAP_APPFONT(TP_WIDTH, TP_HEIGHT);
+ HelpID = HID_FIRSTSTART_UPDATE_CHECK;
+
+ FixedText FT_UPDATE_CHECK_HEADER
+ {
+ NoLabel = TRUE;
+ Pos = MAP_APPFONT(MARGINLEFT, MARGINTOP);
+ Size = MAP_APPFONT( BODYWIDTH, ROWHEIGHT );
+ Text [ en-US ] = "Online Update";
+
+ };
+
+ FixedText FT_UPDATE_CHECK_BODY
+ {
+ NoLabel = TRUE;
+ Pos = MAP_APPFONT(MARGINLEFT, MARGINTOP+ROWHEIGHT*2);
+ Size = MAP_APPFONT(BODYWIDTH, ROWHEIGHT*8);
+ WordBreak = TRUE;
+ Text [ en-US ] = "%PRODUCTNAME searches automatically at regular intervals for new versions.\nIn doing so online update does not transfer personal data.\nAs soon as a new version is available, you will be notified.\n\nYou can configure this feature at Tools / Options... / %PRODUCTNAME / Online Update.";
+
+ };
+
+ CheckBox CB_UPDATE_CHECK
+ {
+ HelpID = "desktop:CheckBox:TP_UPDATE_CHECK:CB_UPDATE_CHECK";
+ Pos = MAP_APPFONT(MARGINLEFT, MARGINTOP+ROWHEIGHT*10);
+ Size = MAP_APPFONT(BODYWIDTH, ROWHEIGHT*2);
+ Check = TRUE;
+ Text [ en-US ] = "~Check for updates automatically";
+ };
+};
+
+#define USERINDENT 40
+#define EDHEIGHT 12
+#define INITIALSWIDTH 50
+#define FTADD 2
+
+TabPage TP_USER
+{
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Size = MAP_APPFONT(TP_WIDTH, TP_HEIGHT);
+ HelpID = HID_FIRSTSTART_USER;
+
+ FixedText FT_USER_HEADER
+ {
+ NoLabel = TRUE;
+ Pos = MAP_APPFONT(MARGINLEFT, MARGINTOP);
+ Size = MAP_APPFONT( BODYWIDTH, ROWHEIGHT );
+ Text [ en-US ] = "Provide your full name and initials below";
+
+ };
+
+ FixedText FT_USER_BODY
+ {
+ NoLabel = TRUE;
+ Pos = MAP_APPFONT(MARGINLEFT, MARGINTOP+ROWHEIGHT*2);
+ Size = MAP_APPFONT(BODYWIDTH, ROWHEIGHT*3);
+ WordBreak = TRUE;
+ Text [ en-US ] = "The user name will be used in the document properties, templates and when you record changes made to documents.";
+ };
+
+
+ FixedText FT_USER_FIRST
+ {
+ Pos = MAP_APPFONT(MARGINLEFT, MARGINTOP+ROWHEIGHT*7+FTADD);
+ Size = MAP_APPFONT(USERINDENT, ROWHEIGHT);
+ Text [ en-US ] = "~First name";
+ };
+ Edit ED_USER_FIRST
+ {
+ HelpID = "desktop:Edit:TP_USER:ED_USER_FIRST";
+ Border = TRUE;
+ Pos = MAP_APPFONT(MARGINLEFT+USERINDENT, MARGINTOP+ROWHEIGHT*7);
+ Size = MAP_APPFONT(BODYWIDTH-USERINDENT, EDHEIGHT);
+ };
+ FixedText FT_USER_LAST
+ {
+ Pos = MAP_APPFONT(MARGINLEFT, MARGINTOP+ROWHEIGHT*9+FTADD);
+ Size = MAP_APPFONT(USERINDENT, ROWHEIGHT);
+ Text [ en-US ] = "~Last name";
+ };
+ Edit ED_USER_LAST
+ {
+ HelpID = "desktop:Edit:TP_USER:ED_USER_LAST";
+ Border = TRUE;
+ Pos = MAP_APPFONT(MARGINLEFT+USERINDENT, MARGINTOP+ROWHEIGHT*9);
+ Size = MAP_APPFONT(BODYWIDTH-USERINDENT, EDHEIGHT);
+ };
+ FixedText FT_USER_INITIALS
+ {
+ Pos = MAP_APPFONT(MARGINLEFT, MARGINTOP+ROWHEIGHT*11+FTADD);
+ Size = MAP_APPFONT(USERINDENT, ROWHEIGHT);
+ Text [ en-US ] = "~Initials";
+ };
+ Edit ED_USER_INITIALS
+ {
+ HelpID = "desktop:Edit:TP_USER:ED_USER_INITIALS";
+ Border = TRUE;
+ Pos = MAP_APPFONT(MARGINLEFT+USERINDENT, MARGINTOP+ROWHEIGHT*11);
+ Size = MAP_APPFONT(INITIALSWIDTH, EDHEIGHT);
+ };
+
+ FixedText FT_USER_FATHER
+ {
+ Hide = TRUE;
+ Pos = MAP_APPFONT(MARGINLEFT+USERINDENT+INITIALSWIDTH+10, MARGINTOP+ROWHEIGHT*11+FTADD);
+ Size = MAP_APPFONT(USERINDENT, ROWHEIGHT);
+ Text [ en-US ] = "~Father's name";
+ };
+ Edit ED_USER_FATHER
+ {
+ HelpID = "desktop:Edit:TP_USER:ED_USER_FATHER";
+ Border = TRUE;
+ Hide = TRUE;
+ Pos = MAP_APPFONT(MARGINLEFT+USERINDENT*2+INITIALSWIDTH+10, MARGINTOP+ROWHEIGHT*11);
+ Size = MAP_APPFONT(BODYWIDTH-10-USERINDENT*2-INITIALSWIDTH, EDHEIGHT);
+ };
+};
+
+#define RB_HEIGHT (RSC_CD_CHECKBOX_HEIGHT+RSC_SP_GRP_SPACE_Y)
+
+TabPage TP_REGISTRATION
+{
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Size = MAP_APPFONT(TP_WIDTH, TP_HEIGHT);
+ HelpID = HID_FIRSTSTART_REGISTRATION;
+ FixedText FT_REGISTRATION_HEADER
+ {
+ NoLabel = TRUE;
+ Text [ en-US ] = "%PRODUCTNAME Registration";
+ Pos = MAP_APPFONT(MARGINLEFT, MARGINRIGHT);
+ Size = MAP_APPFONT(BODYWIDTH, MARGINRIGHT);
+ };
+ FixedText FT_REGISTRATION_BODY
+ {
+ NoLabel = TRUE;
+ Text [ en-US ] = "You now have the opportunity to register as a %PRODUCTNAME user. Registration is voluntary and is without obligation.\n\nIf you register, we can inform you about new developments concerning this product.";
+ WordBreak = TRUE;
+ Pos = MAP_APPFONT(MARGINLEFT, MARGINTOP+ROWHEIGHT*2);
+ Size = MAP_APPFONT(BODYWIDTH, ROWHEIGHT*8);
+ };
+ RadioButton RB_REGISTRATION_NOW
+ {
+ HelpID = "desktop:RadioButton:TP_REGISTRATION:RB_REGISTRATION_NOW";
+ Text [ en-US ] = "I want to register ~now";
+ Pos = MAP_APPFONT(MARGINLEFT+INDENT2, ROWHEIGHT*12+2);
+ Size = MAP_APPFONT(BODYWIDTH-INDENT2, RSC_CD_CHECKBOX_HEIGHT);
+ Check = TRUE;
+ };
+ RadioButton RB_REGISTRATION_LATER
+ {
+ HelpID = "desktop:RadioButton:TP_REGISTRATION:RB_REGISTRATION_LATER";
+ Text [ en-US ] = "I want to register ~later";
+ Pos = MAP_APPFONT(MARGINLEFT+INDENT2, ROWHEIGHT*12+2+RB_HEIGHT);
+ Size = MAP_APPFONT(BODYWIDTH-INDENT2, RSC_CD_CHECKBOX_HEIGHT);
+ };
+ RadioButton RB_REGISTRATION_NEVER
+ {
+ HelpID = "desktop:RadioButton:TP_REGISTRATION:RB_REGISTRATION_NEVER";
+ Text [ en-US ] = "I do not want to ~register";
+ Pos = MAP_APPFONT(MARGINLEFT+INDENT2, ROWHEIGHT*12+2+RB_HEIGHT*2);
+ Size = MAP_APPFONT(BODYWIDTH-INDENT2, RSC_CD_CHECKBOX_HEIGHT);
+ };
+ FixedLine FL_REGISTRATION
+ {
+ Pos = MAP_APPFONT(MARGINLEFT, TP_HEIGHT-MARGINBOTTOM-ROWHEIGHT*6);
+ Size = MAP_APPFONT(BODYWIDTH, ROWHEIGHT);
+ };
+ FixedText FT_REGISTRATION_END
+ {
+ NoLabel = TRUE;
+ Text [ en-US ] = "We hope you enjoy working with %PRODUCTNAME.\n\nTo exit the wizard, click 'Finish'.";
+ Pos = MAP_APPFONT(MARGINLEFT, TP_HEIGHT-MARGINBOTTOM-ROWHEIGHT*4);
+ Size = MAP_APPFONT(BODYWIDTH, ROWHEIGHT*4);
+ };
+};
+
diff --git a/desktop/source/offacc/acceptor.cxx b/desktop/source/offacc/acceptor.cxx
index 1989937597..0b9f33ada3 100644
--- a/desktop/source/offacc/acceptor.cxx
+++ b/desktop/source/offacc/acceptor.cxx
@@ -69,10 +69,10 @@ Acceptor::Acceptor( const Reference< XMultiServiceFactory >& rFactory )
{
m_rSMgr = rFactory;
m_rAcceptor = Reference< XAcceptor > (m_rSMgr->createInstance(
- rtl::OUString::createFromAscii( "com.sun.star.connection.Acceptor" )),
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.connection.Acceptor" ))),
UNO_QUERY );
m_rBridgeFactory = Reference < XBridgeFactory > (m_rSMgr->createInstance(
- rtl::OUString::createFromAscii( "com.sun.star.bridge.BridgeFactory" )),
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.bridge.BridgeFactory" ))),
UNO_QUERY );
// get component context
m_rContext = getComponentContext(m_rSMgr);
@@ -174,7 +174,7 @@ void SAL_CALL Acceptor::initialize( const Sequence<Any>& aArguments )
// "<connectString>;<protocol>"
sal_Int32 nIndex1 = m_aAcceptString.indexOf( (sal_Unicode) ';' );
if (nIndex1 < 0) throw IllegalArgumentException(
- OUString::createFromAscii("Invalid accept-string format"), m_rContext, 1);
+ OUString(RTL_CONSTASCII_USTRINGPARAM("Invalid accept-string format")), m_rContext, 1);
m_aConnectString = m_aAcceptString.copy( 0 , nIndex1 ).trim();
nIndex1++;
sal_Int32 nIndex2 = m_aAcceptString.indexOf( (sal_Unicode) ';' , nIndex1 );
@@ -200,7 +200,7 @@ void SAL_CALL Acceptor::initialize( const Sequence<Any>& aArguments )
if (!bOk)
{
throw IllegalArgumentException(
- OUString::createFromAscii("invalid initialization"), m_rContext, 1);
+ OUString(RTL_CONSTASCII_USTRINGPARAM("invalid initialization")), m_rContext, 1);
}
}
@@ -275,29 +275,17 @@ Reference<XInterface> SAL_CALL AccInstanceProvider::getInstance (const OUString&
else if ( aName.compareToAscii("StarOffice.NamingService" ) == 0 )
{
Reference< XNamingService > rNamingService(
- m_rSMgr->createInstance( OUString::createFromAscii( "com.sun.star.uno.NamingService" )),
+ m_rSMgr->createInstance( OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.uno.NamingService" ))),
UNO_QUERY );
if ( rNamingService.is() )
{
rNamingService->registerObject(
- OUString::createFromAscii( "StarOffice.ServiceManager" ), m_rSMgr );
+ OUString(RTL_CONSTASCII_USTRINGPARAM( "StarOffice.ServiceManager" )), m_rSMgr );
rNamingService->registerObject(
- OUString::createFromAscii( "StarOffice.ComponentContext" ), getComponentContext( m_rSMgr ));
+ OUString(RTL_CONSTASCII_USTRINGPARAM( "StarOffice.ComponentContext" )), getComponentContext( m_rSMgr ));
rInstance = rNamingService;
}
}
- /*
- else if ( aName.compareToAscii("com.sun.star.ucb.RemoteContentProviderAcceptor" ))
- {
- Reference< XMultiServiceFactory > rSMgr = ::comphelper::getProcessServiceFactory();
- if ( rSMgr.is() ) {
- try {
- rInstance = rSMgr->createInstance( sObjectName );
- }
- catch (Exception const &) {}
- }
- }
- */
return rInstance;
}
@@ -315,23 +303,6 @@ component_getImplementationEnvironment(const sal_Char **ppEnvironmentTypeName, u
*ppEnvironmentTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME ;
}
-sal_Bool SAL_CALL
-component_writeInfo(void *pServiceManager, void *pRegistryKey)
-{
- Reference< XMultiServiceFactory > xMan(reinterpret_cast< XMultiServiceFactory* >(pServiceManager));
- Reference< XRegistryKey > xKey(reinterpret_cast< XRegistryKey* >(pRegistryKey));
-
- // register service
- ::rtl::OUString aTempStr;
- ::rtl::OUString aImpl(RTL_CONSTASCII_USTRINGPARAM("/"));
- aImpl += Acceptor::impl_getImplementationName();
- aImpl += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/UNO/SERVICES"));
- Reference< XRegistryKey > xNewKey = xKey->createKey(aImpl);
- xNewKey->createKey(Acceptor::impl_getSupportedServiceNames()[0]);
-
- return sal_True;
-}
-
void * SAL_CALL
component_getFactory(const sal_Char *pImplementationName, void *pServiceManager, void *)
{
diff --git a/desktop/source/offacc/makefile.mk b/desktop/source/offacc/makefile.mk
index c2d53930b5..809c28414b 100644..100755
--- a/desktop/source/offacc/makefile.mk
+++ b/desktop/source/offacc/makefile.mk
@@ -60,3 +60,11 @@ SHL1STDLIBS= \
.INCLUDE : target.mk
+
+ALLTAR : $(MISC)/offacc.component
+
+$(MISC)/offacc.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
+ offacc.component
+ $(XSLTPROC) --nonet --stringparam uri \
+ '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
+ $(SOLARENV)/bin/createcomponent.xslt offacc.component
diff --git a/desktop/source/offacc/offacc.component b/desktop/source/offacc/offacc.component
new file mode 100755
index 0000000000..6f0d4a97a2
--- /dev/null
+++ b/desktop/source/offacc/offacc.component
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<component loader="com.sun.star.loader.SharedLibrary"
+ xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.office.comp.Acceptor">
+ <service name="com.sun.star.office.Acceptor"/>
+ </implementation>
+</component>
diff --git a/desktop/source/pagein/file_image.h b/desktop/source/pagein/file_image.h
index 4234140027..4234140027 100644..100755
--- a/desktop/source/pagein/file_image.h
+++ b/desktop/source/pagein/file_image.h
diff --git a/desktop/source/pagein/file_image_unx.c b/desktop/source/pagein/file_image_unx.c
index 41d60e8035..41d60e8035 100644..100755
--- a/desktop/source/pagein/file_image_unx.c
+++ b/desktop/source/pagein/file_image_unx.c
diff --git a/desktop/source/pagein/makefile.mk b/desktop/source/pagein/makefile.mk
index 01452a858e..2b02a4d5a4 100644..100755
--- a/desktop/source/pagein/makefile.mk
+++ b/desktop/source/pagein/makefile.mk
@@ -41,10 +41,18 @@ LIBSALCPPRT=$(0)
.INCLUDE .IGNORE : icuversion.mk
+.IF "$(OS)"=="MACOSX"
+
+dummy:
+ @echo "Pagein disabled for mac"
+
+.ELSE
+
# --- Files --------------------------------------------------------
OBJFILES= \
$(OBJ)$/pagein.obj \
+ $(OBJ)$/pagein-main.obj \
$(OBJ)$/file_image_unx.obj
APP1TARGET=$(TARGET)
@@ -72,28 +80,33 @@ UNODLLPOST=.uno$(DLLPOST)
DFTDLLPOST=$(DLLPOSTFIX)$(DLLPOST) # Default
URELIBPATH=..$/ure-link$/lib
+UREMISCPATH=..$/ure-link$/share$/misc
$(MISC)$/$(TARGET)-calc : makefile.mk
@echo Making: $@
@-echo $(DLLPRE)sc$(DFTDLLPOST) > $@
+ @-echo $(DLLPRE)scui$(DFTDLLPOST) >> $@
@-echo $(DLLPRE)svx$(DFTDLLPOST) >> $@
@-echo $(DLLPRE)svxcore$(DFTDLLPOST) >> $@
$(MISC)$/$(TARGET)-draw : makefile.mk
@echo Making: $@
@-echo $(DLLPRE)sd$(DFTDLLPOST) > $@
+ @-echo $(DLLPRE)sdui$(DFTDLLPOST) >> $@
@-echo $(DLLPRE)svx$(DFTDLLPOST) >> $@
@-echo $(DLLPRE)svxcore$(DFTDLLPOST) >> $@
$(MISC)$/$(TARGET)-impress : makefile.mk
@echo Making: $@
@-echo $(DLLPRE)sd$(DFTDLLPOST) > $@
+ @-echo $(DLLPRE)sdui$(DFTDLLPOST) >> $@
@-echo $(DLLPRE)svx$(DFTDLLPOST) >> $@
@-echo $(DLLPRE)svxcore$(DFTDLLPOST) >> $@
$(MISC)$/$(TARGET)-writer : makefile.mk
@echo Making: $@
@-echo $(DLLPRE)sw$(DFTDLLPOST) > $@
+ @-echo $(DLLPRE)swui$(DFTDLLPOST) >> $@
@-echo $(DLLPRE)svx$(DFTDLLPOST) >> $@
@-echo $(DLLPRE)svxcore$(DFTDLLPOST) >> $@
@@ -105,7 +118,7 @@ $(MISC)$/$(TARGET)-common : makefile.mk
@-echo $(DLLPRE)icui18n$(ICUDLLPOST) >> $@
@-echo $(DLLPRE)icule$(ICUDLLPOST) >> $@
@-echo $(DLLPRE)icuuc$(ICUDLLPOST) >> $@
- @-echo $(DLLPRE)icudata$(ICUDLLPOST) >> $@
+# @-echo $(DLLPRE)icudata$(ICUDLLPOST) >> $@ - a huge dll, almost none of it used
.ENDIF # SYSTEM_ICU
#
@-echo $(DLLPRE)lng$(DFTDLLPOST) >> $@
@@ -119,9 +132,8 @@ $(MISC)$/$(TARGET)-common : makefile.mk
@-echo $(DLLPRE)package2$(DLLPOST) >> $@
@-echo $(DLLPRE)ucpfile1$(DLLPOST) >> $@
@-echo $(DLLPRE)ucb1$(DLLPOST) >> $@
- @-echo $(DLLPRE)configmgr$(DLLPOST) >> $@
+ @-echo configmgr$(UNODLLPOST) >> $@
#
- @-echo $(DLLPRE)dtrans$(DLLPOST) >> $@
@-echo $(DLLPRE)vclplug_gen$(DFTDLLPOST) >> $@
.IF "$(ENABLE_GTK)" != ""
@-echo $(DLLPRE)vclplug_gtk$(DFTDLLPOST) >> $@
@@ -141,14 +153,7 @@ $(MISC)$/$(TARGET)-common : makefile.mk
@-echo $(URELIBPATH)$/bootstrap$(UNODLLPOST) >> $@
@-echo $(URELIBPATH)$/$(DLLPRE)reg$(UDKDLLPOST) >> $@
@-echo $(URELIBPATH)$/$(DLLPRE)store$(UDKDLLPOST) >> $@
-.IF "$(USE_SYSTEM_STL)"!="YES"
-.IF "$(COMNAME)" == "gcc2" || "$(COMNAME)" == "gcc3"
- @-echo $(URELIBPATH)$/$(DLLPRE)stlport_gcc$(DLLPOST) >> $@
-.ENDIF # gcc
-.IF "$(COMNAME)" == "sunpro5"
- @-echo $(URELIBPATH)$/$(DLLPRE)stlport_sunpro$(DLLPOST) >> $@
-.ENDIF # sunpro5
-.ENDIF # SYSTEM_STL
+ @-echo $(URELIBPATH)$/reflection$(UNODLLPOST) >> $@
@-echo $(URELIBPATH)$/$(DLLPRE)uno_cppuhelper$(COMID)$(UDKDLLPOST) >> $@
@-echo $(URELIBPATH)$/$(DLLPRE)uno_cppu$(UDKDLLPOST) >> $@
@-echo $(URELIBPATH)$/$(DLLPRE)uno_sal$(UDKDLLPOST) >> $@
@@ -160,6 +165,32 @@ $(MISC)$/$(TARGET)-common : makefile.mk
@-echo $(DLLPRE)svl$(DFTDLLPOST) >> $@
@-echo $(DLLPRE)vcl$(DFTDLLPOST) >> $@
@-echo $(DLLPRE)tk$(DFTDLLPOST) >> $@
- @-echo $(DLLPRE)svt$(DFTDLLPOST) >> $@
- @-echo $(DLLPRE)sfx$(DFTDLLPOST) >> $@
- @-echo $(DLLPRE)sofficeapp$(DLLPOST) >> $@
+ @-echo $(UREMISCPATH)$/types.rdb >> $@
+ @-echo services.rdb >> $@
+ @-echo oovbaapi.rdb >> $@
+ @-echo deployment$(DLLPOSTFIX)$(UNODLLPOST) >> $@
+ @-echo $(DLLPRE)deploymentmisc$(DFTDLLPOST) >> $@
+ @-echo $(DLLPRE)ucb1$(DLLPOST) >> $@
+ @-echo $(DLLPRE)xstor$(DLLPOST) >> $@
+ @-echo $(DLLPRE)package2$(DLLPOST) >> $@
+ @-echo $(DLLPRE)filterconfig1$(DLLPOST) >> $@
+ @-echo $(DLLPRE)uui$(DFTDLLPOST) >> $@
+ @-echo $(DLLPRE)lng$(DFTDLLPOST) >> $@
+ @-echo $(DLLPRE)svt$(DFTDLLPOST) >> $@
+ @-echo $(DLLPRE)spl$(DFTDLLPOST) >> $@
+ @-echo $(DLLPRE)basegfx$(DFTDLLPOST) >> $@
+ @-echo $(DLLPRE)avmedia$(DFTDLLPOST) >> $@
+ @-echo $(DLLPRE)helplinker$(DFTDLLPOST) >> $@
+ @-echo $(DLLPRE)vclplug_gen$(DFTDLLPOST) >> $@
+ @-echo $(DLLPRE)icule$(ICUDLLPOST) >> $@
+ @-echo sax$(UNODLLPOST) >> $@
+ @-echo gconfbe1$(UNODLLPOST) >> $@
+ @-echo fsstorage$(UNODLLPOST) >> $@
+ @-echo desktopbe1$(UNODLLPOST) >> $@
+ @-echo localebe1$(UNODLLPOST) >> $@
+ @-echo ucpexpand1$(UNODLLPOST) >> $@
+# stoc bits
+ @-echo $(DLLPRE)sfx$(DFTDLLPOST) >> $@
+ @-echo $(DLLPRE)sofficeapp$(DLLPOST) >> $@
+
+.ENDIF \ No newline at end of file
diff --git a/desktop/source/pagein/pagein-main.c b/desktop/source/pagein/pagein-main.c
new file mode 100644
index 0000000000..f8fe82ab0a
--- /dev/null
+++ b/desktop/source/pagein/pagein-main.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+/*
+ * De-coupled to allow pagein to be re-used in the unx
+ * splash / quick-starter
+ */
+extern int pagein_execute (int argc, char **argv);
+
+int main (int argc, char **argv)
+{
+ return pagein_execute (argc, argv);
+}
+
diff --git a/desktop/source/pagein/pagein.c b/desktop/source/pagein/pagein.c
index 15623bfd8d..097b093fe3 100644..100755
--- a/desktop/source/pagein/pagein.c
+++ b/desktop/source/pagein/pagein.c
@@ -44,7 +44,7 @@ static int do_pagein (const char * filename, size_t * size)
if ((result = file_image_pagein (&image)) != 0)
{
- fprintf (stderr, "file_image_pagein: %s\n", strerror(result));
+ fprintf (stderr, "file_image_pagein %s: %s\n", filename, strerror(result));
goto cleanup_and_leave;
}
@@ -58,8 +58,10 @@ cleanup_and_leave:
return (result);
}
+extern int pagein_execute (int argc, char **argv);
+
/* main */
-int main (int argc, char **argv)
+int pagein_execute (int argc, char **argv)
{
int i, v = 0;
size_t nfiles = 0, nbytes = 0;
@@ -92,7 +94,7 @@ int main (int argc, char **argv)
case 'L':
/* search path */
if (chdir (&(argv[i][2])) == -1)
- fprintf (stderr, "chdir: %s\n", strerror(errno));
+ fprintf (stderr, "chdir %s: %s\n", &(argv[i][2]), strerror(errno));
break;
default:
/* ignored */
@@ -102,14 +104,13 @@ int main (int argc, char **argv)
/* next argv */
continue;
}
-
if ((argv[i][0] == '@') && ((fp = fopen (argv[i], "r")) == 0))
{
char path[1024];
if ((fp = fopen (&(argv[i][1]), "r")) == 0)
{
- fprintf (stderr, "fopen: %s\n", strerror(errno));
+ fprintf (stderr, "fopen %s: %s\n", &(argv[i][1]), strerror(errno));
continue;
}
while (fgets (path, sizeof(path), fp) != 0)
diff --git a/desktop/source/pkgchk/unopkg/makefile.mk b/desktop/source/pkgchk/unopkg/makefile.mk
index 8384f1b243..8384f1b243 100644..100755
--- a/desktop/source/pkgchk/unopkg/makefile.mk
+++ b/desktop/source/pkgchk/unopkg/makefile.mk
diff --git a/desktop/source/pkgchk/unopkg/unopkg_app.cxx b/desktop/source/pkgchk/unopkg/unopkg_app.cxx
index de8c13bcf7..2356165235 100644
--- a/desktop/source/pkgchk/unopkg/unopkg_app.cxx
+++ b/desktop/source/pkgchk/unopkg/unopkg_app.cxx
@@ -222,7 +222,6 @@ void disposeBridges(Reference<css::uno::XComponentContext> ctx)
}
}
-//##############################################################################
extern "C" int unopkg_main()
{
tools::extendApplicationEnvironment();
@@ -380,7 +379,12 @@ extern "C" int unopkg_main()
}
else if (subCommand.equals(OUSTR("sync")))
{
- //sync is private!!!! Only for bundled extensions!!!
+ //sync is private!!!! Only to be called from setup!!!
+ //The UserInstallation is diverted to the prereg folder. But only
+ //the lock file is written! This requires that
+ //-env:UNO_JAVA_JFW_INSTALL_DATA is passed to javaldx and unopkg otherwise the
+ //javasettings file is written to the prereg folder.
+ //
//For performance reasons unopkg sync is called during the setup and
//creates the registration data for the repository of the bundled
//extensions. It is then copied to the user installation during
@@ -395,11 +399,22 @@ extern "C" int unopkg_main()
//$BUNDLED_EXTENSIONS_USER
if (hasNoFolder(OUSTR("$BRAND_BASE_DIR/share/extensions")))
{
- removeFolder(OUSTR("$BUNDLED_EXTENSIONS_USER"));
+ removeFolder(OUSTR("$BUNDLED_EXTENSIONS_PREREG"));
//return otherwise we create the registration data again
return 0;
}
-
+ //redirect the UserInstallation, so we do not create a
+ //user installation for the admin and we also do not need
+ //to call unopkg with -env:UserInstallation
+ ::rtl::Bootstrap::set(OUSTR("UserInstallation"),
+ OUSTR("$BUNDLED_EXTENSIONS_PREREG/.."));
+ //Setting UNO_JAVA_JFW_INSTALL_DATA causes the javasettings to be written
+ //in the office installation. We do not want to create the user data folder
+ //for the admin. The value must also be set in the unopkg script (Linux, etc.)
+ //when calling javaldx
+ ::rtl::Bootstrap::set(OUSTR("UNO_JAVA_JFW_INSTALL_DATA"),
+ OUSTR("$OOO_BASE_DIR/share/config/javasettingsunopkginstall.xml"));
+
}
xComponentContext = getUNO(
@@ -418,6 +433,7 @@ extern "C" int unopkg_main()
//prevent the deletion of the registry data folder
//synching is done in XExtensionManager.reinstall
if (!subcmd_gui && ! subCommand.equals(OUSTR("reinstall"))
+ && ! subCommand.equals(OUSTR("sync"))
&& ! dp_misc::office_is_running())
dp_misc::syncRepositories(xCmdEnv);
@@ -500,10 +516,9 @@ extern "C" int unopkg_main()
//Now prepare the vector which tells what extension has an
//unaccepted license
vecUnaccepted.resize(vecExtUnaccepted.size() + vec_packages.size());
- ::std::vector<bool>::iterator i_unaccepted =
- ::std::fill_n(vecUnaccepted.begin(),
- vecExtUnaccepted.size(), true);
- ::std::fill_n(i_unaccepted, vec_packages.size(), false);
+ ::std::fill_n(vecUnaccepted.begin(), vecExtUnaccepted.size(), true);
+ ::std::fill_n(vecUnaccepted.begin() + vecExtUnaccepted.size(),
+ vec_packages.size(), false);
dp_misc::writeConsole(
OUSTR("All deployed ") + repository + OUSTR(" extensions:\n\n"));
@@ -613,12 +628,15 @@ extern "C" int unopkg_main()
}
else if (subCommand.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("sync")))
{
- //This sub command may be removed later and is only there to have a
- //possibility to start extension synching without any output.
- //This is just here so we do not get an error, because of an unknown
- //sub-command. We do synching before
- //the sub-commands are processed.
-
+ if (! dp_misc::office_is_running())
+ {
+ xExtensionManager->synchronizeBundledPrereg(
+ Reference<task::XAbortChannel>(), xCmdEnv);
+ }
+ else
+ {
+ dp_misc::writeConsoleError(OUSTR("\nError: office is running"));
+ }
}
else
{
diff --git a/desktop/source/pkgchk/unopkg/unopkg_cmdenv.cxx b/desktop/source/pkgchk/unopkg/unopkg_cmdenv.cxx
index c6d26b1df1..f3d68a0079 100644
--- a/desktop/source/pkgchk/unopkg/unopkg_cmdenv.cxx
+++ b/desktop/source/pkgchk/unopkg/unopkg_cmdenv.cxx
@@ -155,7 +155,7 @@ CommandEnvironmentImpl::~CommandEnvironmentImpl()
}
catch (RuntimeException & exc) {
(void) exc;
- OSL_ENSURE( 0, ::rtl::OUStringToOString(
+ OSL_FAIL( ::rtl::OUStringToOString(
exc.Message, osl_getThreadTextEncoding() ).getStr() );
}
}
diff --git a/desktop/source/pkgchk/unopkg/unopkg_main.c b/desktop/source/pkgchk/unopkg/unopkg_main.c
index 1d5b31d03f..1d5b31d03f 100644..100755
--- a/desktop/source/pkgchk/unopkg/unopkg_main.c
+++ b/desktop/source/pkgchk/unopkg/unopkg_main.c
diff --git a/desktop/source/pkgchk/unopkg/unopkg_main.h b/desktop/source/pkgchk/unopkg/unopkg_main.h
index 694cc41558..694cc41558 100644..100755
--- a/desktop/source/pkgchk/unopkg/unopkg_main.h
+++ b/desktop/source/pkgchk/unopkg/unopkg_main.h
diff --git a/desktop/source/pkgchk/unopkg/unopkg_misc.cxx b/desktop/source/pkgchk/unopkg/unopkg_misc.cxx
index 9b20f57287..1aad5b14c3 100644
--- a/desktop/source/pkgchk/unopkg/unopkg_misc.cxx
+++ b/desktop/source/pkgchk/unopkg/unopkg_misc.cxx
@@ -105,7 +105,7 @@ OptionInfo const * getOptionInfo(
}
}
}
- OSL_ENSURE( 0, ::rtl::OUStringToOString(
+ OSL_FAIL( ::rtl::OUStringToOString(
opt, osl_getThreadTextEncoding() ).getStr() );
return 0;
}
@@ -177,7 +177,6 @@ bool readArgument(
return false;
}
-//##############################################################################
namespace {
struct ExecutableDir : public rtl::StaticWithInit<
@@ -195,7 +194,7 @@ struct ProcessWorkingDir : public rtl::StaticWithInit<
const OUString, ProcessWorkingDir> {
const OUString operator () () {
OUString workingDir;
- tools::getProcessWorkingDir(&workingDir);
+ tools::getProcessWorkingDir(workingDir);
return workingDir;
}
};
@@ -256,7 +255,6 @@ OUString makeAbsoluteFileUrl(
? abs.copy( 0, abs.getLength() -1 ) : abs;
}
-//##############################################################################
namespace {
@@ -369,7 +367,6 @@ void printf_packages(
}
-//##############################################################################
namespace {
@@ -629,7 +626,7 @@ void removeFolder(OUString const & folderUrl)
dir.close();
::osl::Directory::remove(url);
}
- else
+ else if (rc != osl::File::E_NOENT)
{
dp_misc::writeConsole(
OUSTR("unopkg: Error while removing ") + url + OUSTR("\n"));
diff --git a/desktop/source/pkgchk/unopkg/unopkg_shared.h b/desktop/source/pkgchk/unopkg/unopkg_shared.h
index 232fbf8f52..cc25e934d6 100644..100755
--- a/desktop/source/pkgchk/unopkg/unopkg_shared.h
+++ b/desktop/source/pkgchk/unopkg/unopkg_shared.h
@@ -161,7 +161,7 @@ public:
{
m_bDeinitUCB = true;
}
-
+
};
//==============================================================================
diff --git a/desktop/source/pkgchk/unopkg/version.map b/desktop/source/pkgchk/unopkg/version.map
index 8591bb3b58..8591bb3b58 100644..100755
--- a/desktop/source/pkgchk/unopkg/version.map
+++ b/desktop/source/pkgchk/unopkg/version.map
diff --git a/desktop/source/registration/com/sun/star/registration/Registration.java b/desktop/source/registration/com/sun/star/registration/Registration.java
index 6ac22c7c39..d00ed1dde3 100644..100755
--- a/desktop/source/registration/com/sun/star/registration/Registration.java
+++ b/desktop/source/registration/com/sun/star/registration/Registration.java
@@ -63,10 +63,6 @@ public class Registration {
return xSingleServiceFactory;
}
- public static boolean __writeRegistryServiceInfo(XRegistryKey regKey) {
- return FactoryHelper.writeRegistryServiceInfo(Registration.class.getName(), _serviceName, regKey);
- }
-
static final String _serviceName = "com.sun.star.comp.framework.DoRegistrationJob";
static public class _Registration implements XJob {
@@ -315,7 +311,6 @@ public class Registration {
out.close();
int returnCode = con.getResponseCode();
-// if (returnCode == HttpURLConnection.HTTP_OK);
} catch(java.lang.Exception e) {
// IOException and UnknownHostException
}
diff --git a/desktop/source/registration/com/sun/star/registration/makefile.mk b/desktop/source/registration/com/sun/star/registration/makefile.mk
index 9784166eb9..8598022562 100644..100755
--- a/desktop/source/registration/com/sun/star/registration/makefile.mk
+++ b/desktop/source/registration/com/sun/star/registration/makefile.mk
@@ -53,3 +53,10 @@ CUSTOMMANIFESTFILE = manifest
.INCLUDE : target.mk
+ALLTAR : $(MISC)/productregistration.jar.component
+
+$(MISC)/productregistration.jar.component .ERRREMOVE : \
+ $(SOLARENV)/bin/createcomponent.xslt productregistration.jar.component
+ $(XSLTPROC) --nonet --stringparam uri \
+ '$(COMPONENTPREFIX_BASIS_JAVA)productregistration.jar' -o $@ \
+ $(SOLARENV)/bin/createcomponent.xslt productregistration.jar.component
diff --git a/desktop/source/registration/com/sun/star/registration/manifest b/desktop/source/registration/com/sun/star/registration/manifest
index 952aaa804e..952aaa804e 100644..100755
--- a/desktop/source/registration/com/sun/star/registration/manifest
+++ b/desktop/source/registration/com/sun/star/registration/manifest
diff --git a/desktop/source/registration/com/sun/star/registration/productregistration.jar.component b/desktop/source/registration/com/sun/star/registration/productregistration.jar.component
new file mode 100755
index 0000000000..c022a98ae0
--- /dev/null
+++ b/desktop/source/registration/com/sun/star/registration/productregistration.jar.component
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<component loader="com.sun.star.loader.Java2"
+ xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.registration.Registration">
+ <service name="com.sun.star.comp.framework.DoRegistrationJob"/>
+ </implementation>
+</component>
diff --git a/desktop/source/registration/com/sun/star/servicetag/BrowserSupport.java b/desktop/source/registration/com/sun/star/servicetag/BrowserSupport.java
index c475b75dd3..c475b75dd3 100644..100755
--- a/desktop/source/registration/com/sun/star/servicetag/BrowserSupport.java
+++ b/desktop/source/registration/com/sun/star/servicetag/BrowserSupport.java
diff --git a/desktop/source/registration/com/sun/star/servicetag/Installer.java b/desktop/source/registration/com/sun/star/servicetag/Installer.java
index 41d328ca08..41d328ca08 100644..100755
--- a/desktop/source/registration/com/sun/star/servicetag/Installer.java
+++ b/desktop/source/registration/com/sun/star/servicetag/Installer.java
diff --git a/desktop/source/registration/com/sun/star/servicetag/LinuxSystemEnvironment.java b/desktop/source/registration/com/sun/star/servicetag/LinuxSystemEnvironment.java
index f81d935891..786fe3a9fd 100644..100755
--- a/desktop/source/registration/com/sun/star/servicetag/LinuxSystemEnvironment.java
+++ b/desktop/source/registration/com/sun/star/servicetag/LinuxSystemEnvironment.java
@@ -156,7 +156,6 @@ class LinuxSystemEnvironment extends SystemEnvironment {
// reads from dmidecode with the given type and target
// returns an empty string if nothing was found or an error occurred
- //
// Sample output segment:
// Handle 0x0001
// DMI type 1, 25 bytes.
diff --git a/desktop/source/registration/com/sun/star/servicetag/RegistrationData.java b/desktop/source/registration/com/sun/star/servicetag/RegistrationData.java
index 9323e5de7e..9323e5de7e 100644..100755
--- a/desktop/source/registration/com/sun/star/servicetag/RegistrationData.java
+++ b/desktop/source/registration/com/sun/star/servicetag/RegistrationData.java
diff --git a/desktop/source/registration/com/sun/star/servicetag/RegistrationDocument.java b/desktop/source/registration/com/sun/star/servicetag/RegistrationDocument.java
index 4bfa1aa16a..4bfa1aa16a 100644..100755
--- a/desktop/source/registration/com/sun/star/servicetag/RegistrationDocument.java
+++ b/desktop/source/registration/com/sun/star/servicetag/RegistrationDocument.java
diff --git a/desktop/source/registration/com/sun/star/servicetag/Registry.java b/desktop/source/registration/com/sun/star/servicetag/Registry.java
index d1b7607197..57a945285f 100644..100755
--- a/desktop/source/registration/com/sun/star/servicetag/Registry.java
+++ b/desktop/source/registration/com/sun/star/servicetag/Registry.java
@@ -157,7 +157,6 @@ public class Registry {
// $JAVA_HOME/bin/java -cp $TEST_DIR \
// -Dstclient.registry.path=$TEST_DIR/registry.xml \
// SvcTagClient
- //
// On Windows, the JAVA_HOME and TEST_DIR path could contain
// space e.g. c:\Program Files\Java\jdk1.6.0_05\bin\java.
// The SVCTAG_STCLIENT_CMD must be set with a list of
diff --git a/desktop/source/registration/com/sun/star/servicetag/ServiceTag.java b/desktop/source/registration/com/sun/star/servicetag/ServiceTag.java
index cbaf44e1d0..cbaf44e1d0 100644..100755
--- a/desktop/source/registration/com/sun/star/servicetag/ServiceTag.java
+++ b/desktop/source/registration/com/sun/star/servicetag/ServiceTag.java
diff --git a/desktop/source/registration/com/sun/star/servicetag/SolarisServiceTag.java b/desktop/source/registration/com/sun/star/servicetag/SolarisServiceTag.java
index 8378c78e76..8378c78e76 100644..100755
--- a/desktop/source/registration/com/sun/star/servicetag/SolarisServiceTag.java
+++ b/desktop/source/registration/com/sun/star/servicetag/SolarisServiceTag.java
diff --git a/desktop/source/registration/com/sun/star/servicetag/SolarisSystemEnvironment.java b/desktop/source/registration/com/sun/star/servicetag/SolarisSystemEnvironment.java
index a9c094d1af..40d6fa9028 100644..100755
--- a/desktop/source/registration/com/sun/star/servicetag/SolarisSystemEnvironment.java
+++ b/desktop/source/registration/com/sun/star/servicetag/SolarisSystemEnvironment.java
@@ -309,7 +309,6 @@ class SolarisSystemEnvironment extends SystemEnvironment {
// Sample smbios output segment:
// ID SIZE TYPE
// 1 150 SMB_TYPE_SYSTEM (system information)
- //
// Manufacturer: Sun Microsystems
// Product: Sun Fire X4600
// Version: To Be Filled By O.E.M.
diff --git a/desktop/source/registration/com/sun/star/servicetag/SunConnection.java b/desktop/source/registration/com/sun/star/servicetag/SunConnection.java
index 9b9c7595ac..9b9c7595ac 100644..100755
--- a/desktop/source/registration/com/sun/star/servicetag/SunConnection.java
+++ b/desktop/source/registration/com/sun/star/servicetag/SunConnection.java
diff --git a/desktop/source/registration/com/sun/star/servicetag/SysnetRegistryHelper.java b/desktop/source/registration/com/sun/star/servicetag/SysnetRegistryHelper.java
index 0f03d0d621..8338b29fa8 100644..100755
--- a/desktop/source/registration/com/sun/star/servicetag/SysnetRegistryHelper.java
+++ b/desktop/source/registration/com/sun/star/servicetag/SysnetRegistryHelper.java
@@ -113,7 +113,6 @@ public class SysnetRegistryHelper {
// $JAVA_HOME/bin/java -cp $TEST_DIR \
// -Dstclient.registry.path=$TEST_DIR/registry.xml \
// SvcTagClient
- //
// On Windows, the JAVA_HOME and TEST_DIR path could contain
// space e.g. c:\Program Files\Java\jdk1.6.0_05\bin\java.
// The SVCTAG_STCLIENT_CMD must be set with a list of
diff --git a/desktop/source/registration/com/sun/star/servicetag/SystemEnvironment.java b/desktop/source/registration/com/sun/star/servicetag/SystemEnvironment.java
index 013c1251bc..013c1251bc 100644..100755
--- a/desktop/source/registration/com/sun/star/servicetag/SystemEnvironment.java
+++ b/desktop/source/registration/com/sun/star/servicetag/SystemEnvironment.java
diff --git a/desktop/source/registration/com/sun/star/servicetag/UnauthorizedAccessException.java b/desktop/source/registration/com/sun/star/servicetag/UnauthorizedAccessException.java
index a6d41e07b3..a6d41e07b3 100644..100755
--- a/desktop/source/registration/com/sun/star/servicetag/UnauthorizedAccessException.java
+++ b/desktop/source/registration/com/sun/star/servicetag/UnauthorizedAccessException.java
diff --git a/desktop/source/registration/com/sun/star/servicetag/Util.java b/desktop/source/registration/com/sun/star/servicetag/Util.java
index c1cb14f7c2..c1cb14f7c2 100644..100755
--- a/desktop/source/registration/com/sun/star/servicetag/Util.java
+++ b/desktop/source/registration/com/sun/star/servicetag/Util.java
diff --git a/desktop/source/registration/com/sun/star/servicetag/WindowsSystemEnvironment.java b/desktop/source/registration/com/sun/star/servicetag/WindowsSystemEnvironment.java
index fd500a8ac8..fd500a8ac8 100644..100755
--- a/desktop/source/registration/com/sun/star/servicetag/WindowsSystemEnvironment.java
+++ b/desktop/source/registration/com/sun/star/servicetag/WindowsSystemEnvironment.java
diff --git a/desktop/source/registration/com/sun/star/servicetag/makefile.mk b/desktop/source/registration/com/sun/star/servicetag/makefile.mk
index 7849646529..7849646529 100644..100755
--- a/desktop/source/registration/com/sun/star/servicetag/makefile.mk
+++ b/desktop/source/registration/com/sun/star/servicetag/makefile.mk
diff --git a/desktop/source/registration/com/sun/star/servicetag/resources/product_registration.xsd b/desktop/source/registration/com/sun/star/servicetag/resources/product_registration.xsd
index 6681a563a0..6681a563a0 100644..100755
--- a/desktop/source/registration/com/sun/star/servicetag/resources/product_registration.xsd
+++ b/desktop/source/registration/com/sun/star/servicetag/resources/product_registration.xsd
diff --git a/desktop/source/so_comp/evaluation.cxx b/desktop/source/so_comp/evaluation.cxx
index 664c0dadb2..aa113b4caf 100644
--- a/desktop/source/so_comp/evaluation.cxx
+++ b/desktop/source/so_comp/evaluation.cxx
@@ -43,12 +43,13 @@
#include "../app/desktop.hrc"
-using namespace rtl;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::registry;
+using ::rtl::OUString;
+
namespace desktop {
static SOEvaluation* pSOEval=0;
@@ -145,13 +146,13 @@ rtl::OUString SAL_CALL SOEvaluation::getExactName( const rtl::OUString& rApproxi
for (int i=0; i<aSeq.getLength(); i++ )
{
NamedValue& rValue = aSeq[i];
- if ( rValue.Name.equalsAscii("expired") )
+ if ( rValue.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("expired")) )
rValue.Value >>= bExpired;
- else if (rValue.Name.equalsAscii("title") )
+ else if (rValue.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("title")) )
rValue.Value >>= aEval;
}
// append eval string to title
- aTitle += OUString::createFromAscii(" ") + aEval;
+ aTitle += OUString(RTL_CONSTASCII_USTRINGPARAM(" ")) + aEval;
if ( bExpired )
throw RuntimeException();
}
diff --git a/desktop/source/so_comp/makefile.mk b/desktop/source/so_comp/makefile.mk
index 590f99518c..4d8d479b96 100644..100755
--- a/desktop/source/so_comp/makefile.mk
+++ b/desktop/source/so_comp/makefile.mk
@@ -37,11 +37,6 @@ ENABLE_EXCEPTIONS=TRUE
.INCLUDE : settings.mk
-# --- Define time bomb date. Not active for OOo --------------------
-# --- Change something in evaluation.cxx!!! (e.g. line 313)
-# --- You must use the yyyymmdd format!!! --------------------------
-#CDEFS+=-DTIMEBOMB=20050930
-
# --- Files --------------------------------------------------------
SLOFILES = $(SLO)$/evaluation.obj \
@@ -75,3 +70,10 @@ SHL1STDLIBS= \
.INCLUDE : target.mk
+ALLTAR : $(MISC)/socomp.component
+
+$(MISC)/socomp.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
+ socomp.component
+ $(XSLTPROC) --nonet --stringparam uri \
+ '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
+ $(SOLARENV)/bin/createcomponent.xslt socomp.component
diff --git a/desktop/source/so_comp/oemjob.cxx b/desktop/source/so_comp/oemjob.cxx
index 22bad75af4..d50bab209c 100644
--- a/desktop/source/so_comp/oemjob.cxx
+++ b/desktop/source/so_comp/oemjob.cxx
@@ -2,7 +2,7 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
+ *
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
@@ -43,7 +43,6 @@
#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
#include <com/sun/star/beans/NamedValue.hpp>
-using namespace rtl;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::beans;
@@ -51,6 +50,10 @@ using namespace ::com::sun::star::ui::dialogs;
using namespace ::com::sun::star::frame;
using namespace ::com::sun::star::util;
+using ::rtl::OUString;
+using ::rtl::OUStringBuffer;
+using ::rtl::Bootstrap;
+
namespace desktop{
char const OEM_PRELOAD_SECTION[] = "Bootstrap";
@@ -89,7 +92,7 @@ Reference< XInterface > SAL_CALL OEMPreloadJob::CreateInstance(
return (XComponent*) ( new OEMPreloadJob( rSMgr ) );
}
-OEMPreloadJob::OEMPreloadJob( const Reference< XMultiServiceFactory >& xFactory ) :
+OEMPreloadJob::OEMPreloadJob( const Reference< XMultiServiceFactory >& xFactory ) :
m_aListeners( m_aMutex ),
m_xServiceManager( xFactory )
{
@@ -118,24 +121,24 @@ void SAL_CALL OEMPreloadJob::removeEventListener( const Reference< XEventListene
}
// XServiceInfo
-::rtl::OUString SAL_CALL OEMPreloadJob::getImplementationName()
+::rtl::OUString SAL_CALL OEMPreloadJob::getImplementationName()
throw ( RuntimeException )
{
return OEMPreloadJob::GetImplementationName();
}
-sal_Bool SAL_CALL OEMPreloadJob::supportsService( const ::rtl::OUString& rServiceName )
+sal_Bool SAL_CALL OEMPreloadJob::supportsService( const ::rtl::OUString& rServiceName )
throw ( RuntimeException )
{
sal_Int32 nSize = sizeof( interfaces ) / sizeof( const char *);
-
+
for( sal_Int32 i = 0; i < nSize; i++ )
if ( rServiceName.equalsAscii( interfaces[i] ))
return sal_True;
return sal_False;
}
-Sequence< ::rtl::OUString > SAL_CALL OEMPreloadJob::getSupportedServiceNames()
+Sequence< ::rtl::OUString > SAL_CALL OEMPreloadJob::getSupportedServiceNames()
throw ( RuntimeException )
{
return OEMPreloadJob::GetSupportedServiceNames();
@@ -151,7 +154,7 @@ throw ( RuntimeException )
{
// create OEM preload service dialog
Reference <XExecutableDialog> xDialog( m_xServiceManager->createInstance(
- OUString::createFromAscii("org.openoffice.comp.preload.OEMPreloadWizard")),
+ OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.preload.OEMPreloadWizard"))),
UNO_QUERY );
if ( xDialog.is() ){
// execute OEM preload dialog and check return value
@@ -161,80 +164,44 @@ throw ( RuntimeException )
bCont = sal_True;
disableOEMPreloadFlag();
} else {
- // user declined...
+ // user declined...
// terminate.
- /*
- Reference< XDesktop > xDesktop( m_xServiceManager->createInstance(
- OUString::createFromAscii("com.sun.star.frame.Desktop")),
- UNO_QUERY );
- xDesktop->terminate();
- */
- /*
- OUString aName;
- OUString aEnvType;
- Reference<XFrame> rFrame;
- Reference<XModel> rModel;
- Reference<XCloseable> rClose;
- for (int i=0; i<args.getLength(); i++)
- {
- if (args[i].Name.equalsAscii("EnvType"))
- args[i].Value >>= aEnvType;
- else if (args[i].Name.equalsAscii("Frame")) {
- args[i].Value >>= rFrame;
- rClose = Reference<XCloseable>(rFrame, UNO_QUERY);
- }
- else if (args[i].Name.equalsAscii("Model")) {
- args[i].Value >>= rModel;
- rClose = Reference<XCloseable>(rModel, UNO_QUERY);
- }
- }
- if (rClose.is()) rClose->close(sal_True);
- */
bCont = sal_False;
}
}
} else {
// don't try again
bCont = sal_True;
- }
- /*
- NamedValue nv;
- nv.Name = OUString::createFromAscii("Deactivate");
- nv.Value <<= bDeactivate;
- Sequence<NamedValue> s(1);
- s[0] = nv;
- */
+ }
Any r;
r <<= bCont;
return r;
}
-
static sal_Bool existsURL( OUString const& _sURL )
{
using namespace osl;
DirectoryItem aDirItem;
-
+
if (_sURL.getLength() != 0)
return ( DirectoryItem::get( _sURL, aDirItem ) == DirectoryItem::E_None );
-
+
return sal_False;
}
-
// locate soffice.ini/.rc file
static OUString locateIniFile()
{
OUString aUserDataPath;
OUString aSofficeIniFileURL;
-
+
// Retrieve the default file URL for the soffice.ini/rc
Bootstrap().getIniName( aSofficeIniFileURL );
if ( utl::Bootstrap::locateUserData( aUserDataPath ) == utl::Bootstrap::PATH_EXISTS )
{
const char CONFIG_DIR[] = "/config";
-
+
sal_Int32 nIndex = aSofficeIniFileURL.lastIndexOf( '/');
if ( nIndex > 0 )
{
@@ -243,11 +210,11 @@ static OUString locateIniFile()
aBuffer.appendAscii( CONFIG_DIR );
aBuffer.append( aSofficeIniFileURL.copy( nIndex ));
aUserSofficeIniFileURL = aBuffer.makeStringAndClear();
-
+
if ( existsURL( aUserSofficeIniFileURL ))
return aUserSofficeIniFileURL;
}
- }
+ }
// Fallback try to use the soffice.ini/rc from program folder
return aSofficeIniFileURL;
}
@@ -270,7 +237,7 @@ void OEMPreloadJob::disableOEMPreloadFlag()
{
OUString aSofficeIniFileURL = locateIniFile();
if ( aSofficeIniFileURL.getLength() > 0 )
- {
+ {
Config aConfig(aSofficeIniFileURL);
aConfig.SetGroup( OEM_PRELOAD_SECTION );
aConfig.WriteKey( OEM_PRELOAD, STR_FALSE );
diff --git a/desktop/source/so_comp/services.cxx b/desktop/source/so_comp/services.cxx
index c79f36820c..439b73364d 100644
--- a/desktop/source/so_comp/services.cxx
+++ b/desktop/source/so_comp/services.cxx
@@ -2,7 +2,7 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
+ *
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
@@ -42,13 +42,14 @@
#include <string.h>
-using namespace rtl;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::registry;
using namespace ::desktop;
+using ::rtl::OUString;
+
static const char* pServices[] =
{
SOEvaluation::serviceName,
@@ -59,7 +60,7 @@ static const char* pServices[] =
static const char* pImplementations[] =
{
SOEvaluation::implementationName,
- OEMPreloadJob::implementationName,
+ OEMPreloadJob::implementationName,
NULL
};
@@ -72,13 +73,12 @@ static const fProvider pInstanceProviders[] =
NULL
};
-
static const char** pSupportedServices[] =
{
SOEvaluation::interfaces,
OEMPreloadJob::interfaces,
NULL
-};
+};
static Sequence<OUString>
getSupportedServiceNames(int p) {
@@ -89,44 +89,18 @@ getSupportedServiceNames(int p) {
aSeq[i] = OUString::createFromAscii(names[i]);
}
return aSeq;
-}
+}
extern "C"
{
-void SAL_CALL
+void SAL_CALL
component_getImplementationEnvironment(
- const sal_Char** ppEnvironmentTypeName,
+ const sal_Char** ppEnvironmentTypeName,
uno_Environment**)
{
*ppEnvironmentTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME ;
}
-sal_Bool SAL_CALL
-component_writeInfo(
- void* pServiceManager,
- void* pRegistryKey)
-{
- Reference<XMultiServiceFactory> xMan(
- reinterpret_cast< XMultiServiceFactory* >( pServiceManager ) ) ;
- Reference<XRegistryKey> xKey(
- reinterpret_cast< XRegistryKey* >( pRegistryKey ) ) ;
-
- // iterate over service names and register them...
- OUString aImpl;
- const char* pServiceName = NULL;
- const char* pImplName = NULL;
- for (int i = 0; (pServices[i]!=NULL)&&(pImplementations[i]!=NULL); i++) {
- pServiceName= pServices[i];
- pImplName = pImplementations[i];
- aImpl = OUString::createFromAscii("/")
- + OUString::createFromAscii(pImplName)
- + OUString::createFromAscii("/UNO/SERVICES");
- Reference<XRegistryKey> xNewKey = xKey->createKey(aImpl);
- xNewKey->createKey(OUString::createFromAscii(pServiceName));
- }
- return sal_True;
-}
-
void* SAL_CALL
component_getFactory(
const sal_Char* pImplementationName,
@@ -137,11 +111,11 @@ component_getFactory(
if ( pImplementationName && pServiceManager )
{
Reference< XSingleServiceFactory > xFactory;
- Reference< XMultiServiceFactory > xServiceManager(
+ Reference< XMultiServiceFactory > xServiceManager(
reinterpret_cast< XMultiServiceFactory* >( pServiceManager ) ) ;
-
+
// search implementation
- for (int i = 0; (pImplementations[i]!=NULL); i++) {
+ for (int i = 0; (pImplementations[i]!=NULL); i++) {
if ( strcmp(pImplementations[i], pImplementationName ) == 0 ) {
// found implementation
xFactory = Reference<XSingleServiceFactory>(cppu::createSingleFactory(
diff --git a/desktop/source/so_comp/socomp.component b/desktop/source/so_comp/socomp.component
new file mode 100755
index 0000000000..a53035223c
--- /dev/null
+++ b/desktop/source/so_comp/socomp.component
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<component loader="com.sun.star.loader.SharedLibrary"
+ xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.comp.desktop.Evaluation">
+ <service name="com.sun.star.office.Evaluation"/>
+ </implementation>
+ <implementation name="com.sun.star.comp.desktop.OEMPreloadJob">
+ <service name="com.sun.star.office.OEMPreloadJob"/>
+ </implementation>
+</component>
diff --git a/desktop/source/splash/makefile.mk b/desktop/source/splash/makefile.mk
index 01f1287bc7..8db499d7c9 100644..100755
--- a/desktop/source/splash/makefile.mk
+++ b/desktop/source/splash/makefile.mk
@@ -44,8 +44,7 @@ SLOFILES = $(SLO)$/splash.obj \
SHL1DEPN= makefile.mk
SHL1OBJS= $(SLOFILES) \
- $(SLO)$/migration.obj \
- $(SLO)$/cfgfilter.obj
+ $(SLO)$/migration.obj
SHL1TARGET=$(TARGET)$(DLLPOSTFIX)
@@ -71,3 +70,11 @@ SHL1STDLIBS= \
# --- Targets ------------------------------------------------------
.INCLUDE : target.mk
+
+ALLTAR : $(MISC)/spl.component
+
+$(MISC)/spl.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
+ spl.component
+ $(XSLTPROC) --nonet --stringparam uri \
+ '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
+ $(SOLARENV)/bin/createcomponent.xslt spl.component
diff --git a/desktop/source/splash/services_spl.cxx b/desktop/source/splash/services_spl.cxx
index adcf9c1a5f..39fd09774e 100644
--- a/desktop/source/splash/services_spl.cxx
+++ b/desktop/source/splash/services_spl.cxx
@@ -2,7 +2,7 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
+ *
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
@@ -37,14 +37,14 @@
#include "splash.hxx"
-
-using namespace rtl;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::registry;
using namespace ::desktop;
+using ::rtl::OUString;
+
static const char* pServices[] =
{
SplashScreen::serviceName,
@@ -65,12 +65,11 @@ static const fProvider pInstanceProviders[] =
NULL
};
-
static const char** pSupportedServices[] =
{
SplashScreen::interfaces,
NULL
-};
+};
static Sequence<OUString>
getSupportedServiceNames(int p) {
@@ -81,44 +80,18 @@ getSupportedServiceNames(int p) {
aSeq[i] = OUString::createFromAscii(names[i]);
}
return aSeq;
-}
+}
extern "C"
{
-void SAL_CALL
+void SAL_CALL
component_getImplementationEnvironment(
- const sal_Char** ppEnvironmentTypeName,
+ const sal_Char** ppEnvironmentTypeName,
uno_Environment**)
{
*ppEnvironmentTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME ;
}
-sal_Bool SAL_CALL
-component_writeInfo(
- void* pServiceManager,
- void* pRegistryKey)
-{
- Reference<XMultiServiceFactory> xMan(
- reinterpret_cast< XMultiServiceFactory* >( pServiceManager ) ) ;
- Reference<XRegistryKey> xKey(
- reinterpret_cast< XRegistryKey* >( pRegistryKey ) ) ;
-
- // iterate over service names and register them...
- OUString aImpl;
- const char* pServiceName = NULL;
- const char* pImplName = NULL;
- for (int i = 0; (pServices[i]!=NULL)&&(pImplementations[i]!=NULL); i++) {
- pServiceName= pServices[i];
- pImplName = pImplementations[i];
- aImpl = OUString::createFromAscii("/")
- + OUString::createFromAscii(pImplName)
- + OUString::createFromAscii("/UNO/SERVICES");
- Reference<XRegistryKey> xNewKey = xKey->createKey(aImpl);
- xNewKey->createKey(OUString::createFromAscii(pServiceName));
- }
- return sal_True;
-}
-
void* SAL_CALL
component_getFactory(
const sal_Char* pImplementationName,
@@ -129,11 +102,11 @@ component_getFactory(
if ( pImplementationName && pServiceManager )
{
Reference< XSingleServiceFactory > xFactory;
- Reference< XMultiServiceFactory > xServiceManager(
+ Reference< XMultiServiceFactory > xServiceManager(
reinterpret_cast< XMultiServiceFactory* >( pServiceManager ) ) ;
-
+
// search implementation
- for (int i = 0; (pImplementations[i]!=NULL); i++) {
+ for (int i = 0; (pImplementations[i]!=NULL); i++) {
if ( strcmp(pImplementations[i], pImplementationName ) == 0 ) {
// found implementation
xFactory = Reference<XSingleServiceFactory>(cppu::createSingleFactory(
diff --git a/desktop/source/splash/spl.component b/desktop/source/splash/spl.component
new file mode 100755
index 0000000000..2caecf5c0e
--- /dev/null
+++ b/desktop/source/splash/spl.component
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<component loader="com.sun.star.loader.SharedLibrary"
+ xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.comp.desktop.FirstStart">
+ <service name="com.sun.star.task.Job"/>
+ </implementation>
+ <implementation name="com.sun.star.office.comp.SplashScreen">
+ <service name="com.sun.star.office.SplashScreen"/>
+ </implementation>
+</component>
diff --git a/desktop/source/splash/splash.cxx b/desktop/source/splash/splash.cxx
index 57e96829e1..2934ae400c 100644
--- a/desktop/source/splash/splash.cxx
+++ b/desktop/source/splash/splash.cxx
@@ -102,7 +102,7 @@ void SAL_CALL SplashScreen::start(const OUString&, sal_Int32 nRange)
_bProgressEnd = sal_False;
SolarMutexGuard aSolarGuard;
if ( _eBitmapMode == BM_FULLSCREEN )
- ShowFullScreenMode( TRUE );
+ ShowFullScreenMode( sal_True );
Show();
Paint(Rectangle());
Flush();
@@ -129,7 +129,7 @@ void SAL_CALL SplashScreen::reset()
if (_bVisible && !_bProgressEnd )
{
if ( _eBitmapMode == BM_FULLSCREEN )
- ShowFullScreenMode( TRUE );
+ ShowFullScreenMode( sal_True );
Show();
updateStatus();
}
@@ -146,7 +146,7 @@ void SAL_CALL SplashScreen::setText(const OUString& rText)
if (_bVisible && !_bProgressEnd)
{
if ( _eBitmapMode == BM_FULLSCREEN )
- ShowFullScreenMode( TRUE );
+ ShowFullScreenMode( sal_True );
Show();
updateStatus();
}
@@ -162,7 +162,7 @@ void SAL_CALL SplashScreen::setValue(sal_Int32 nValue)
SolarMutexGuard aSolarGuard;
if (_bVisible && !_bProgressEnd) {
if ( _eBitmapMode == BM_FULLSCREEN )
- ShowFullScreenMode( TRUE );
+ ShowFullScreenMode( sal_True );
Show();
if (nValue >= _iMax) _iProgress = _iMax;
else _iProgress = nValue;
@@ -254,9 +254,7 @@ void SplashScreen::updateStatus()
{
if (!_bVisible || _bProgressEnd) return;
if (!_bPaintProgress) _bPaintProgress = sal_True;
- //_bPaintBitmap=sal_False;
Paint(Rectangle());
- //_bPaintBitmap=sal_True;
Flush();
}
@@ -265,7 +263,6 @@ IMPL_LINK( SplashScreen, AppEventListenerHdl, VclWindowEvent *, inEvent )
{
if ( inEvent != 0 )
{
- // Paint( Rectangle() );
switch ( inEvent->GetId() )
{
case VCLEVENT_WINDOW_SHOW:
@@ -321,40 +318,36 @@ void SplashScreen::loadConfig()
if ( sProgressFrameColor.getLength() )
{
- UINT8 nRed = 0;
- UINT8 nGreen = 0;
- UINT8 nBlue = 0;
+ sal_uInt8 nRed = 0;
sal_Int32 idx = 0;
sal_Int32 temp = sProgressFrameColor.getToken( 0, ',', idx ).toInt32();
if ( idx != -1 )
{
- nRed = static_cast< UINT8 >( temp );
+ nRed = static_cast< sal_uInt8 >( temp );
temp = sProgressFrameColor.getToken( 0, ',', idx ).toInt32();
}
if ( idx != -1 )
{
- nGreen = static_cast< UINT8 >( temp );
- nBlue = static_cast< UINT8 >( sProgressFrameColor.getToken( 0, ',', idx ).toInt32() );
+ sal_uInt8 nGreen = static_cast< sal_uInt8 >( temp );
+ sal_uInt8 nBlue = static_cast< sal_uInt8 >( sProgressFrameColor.getToken( 0, ',', idx ).toInt32() );
_cProgressFrameColor = Color( nRed, nGreen, nBlue );
}
}
if ( sProgressBarColor.getLength() )
{
- UINT8 nRed = 0;
- UINT8 nGreen = 0;
- UINT8 nBlue = 0;
+ sal_uInt8 nRed = 0;
sal_Int32 idx = 0;
sal_Int32 temp = sProgressBarColor.getToken( 0, ',', idx ).toInt32();
if ( idx != -1 )
{
- nRed = static_cast< UINT8 >( temp );
+ nRed = static_cast< sal_uInt8 >( temp );
temp = sProgressBarColor.getToken( 0, ',', idx ).toInt32();
}
if ( idx != -1 )
{
- nGreen = static_cast< UINT8 >( temp );
- nBlue = static_cast< UINT8 >( sProgressBarColor.getToken( 0, ',', idx ).toInt32() );
+ sal_uInt8 nGreen = static_cast< sal_uInt8 >( temp );
+ sal_uInt8 nBlue = static_cast< sal_uInt8 >( sProgressBarColor.getToken( 0, ',', idx ).toInt32() );
_cProgressBarColor = Color( nRed, nGreen, nBlue );
}
}
@@ -411,8 +404,7 @@ void SplashScreen::SetScreenBitmap(BitmapEx &rBitmap)
aStrBuf.append( "intro_" );
if ( _sAppName.getLength() > 0 )
{
- aStrBuf.append( OString( _sAppName, _sAppName.getLength(),
- RTL_TEXTENCODING_UTF8 ) );
+ aStrBuf.append( OUStringToOString(_sAppName, RTL_TEXTENCODING_UTF8) );
aStrBuf.append( "_" );
}
aResBuf.append( OString::valueOf( nWidth ));
@@ -420,12 +412,12 @@ void SplashScreen::SetScreenBitmap(BitmapEx &rBitmap)
aResBuf.append( OString::valueOf( nHeight ));
aStrBuf.append( aResBuf.getStr() );
- if (Application::LoadBrandBitmap (aStrBuf.makeStringAndClear(), rBitmap))
+ if (Application::LoadBrandBitmap (aStrBuf.makeStringAndClear().getStr(), rBitmap))
return;
aStrBuf.append( "intro_" );
aStrBuf.append( aResBuf.getStr() );
- if (Application::LoadBrandBitmap (aResBuf.makeStringAndClear(), rBitmap))
+ if (Application::LoadBrandBitmap (aResBuf.makeStringAndClear().getStr(), rBitmap))
return;
Application::LoadBrandBitmap ("intro", rBitmap);
@@ -507,7 +499,7 @@ void SplashScreen::Paint( const Rectangle&)
if(!_bVisible) return;
//native drawing
- BOOL bNativeOK = FALSE;
+ sal_Bool bNativeOK = sal_False;
// in case of native controls we need to draw directly to the window
if( _bNativeProgress && IsNativeControlSupported( CTRL_INTROPROGRESS, PART_ENTIRE_CONTROL ) )
@@ -528,7 +520,7 @@ void SplashScreen::Paint( const Rectangle&)
}
if( (bNativeOK = DrawNativeControl( CTRL_INTROPROGRESS, PART_ENTIRE_CONTROL, aDrawRect,
- CTRL_STATE_ENABLED, aValue, _sProgressText )) != FALSE )
+ CTRL_STATE_ENABLED, aValue, _sProgressText )) != sal_False )
{
return;
}
@@ -552,12 +544,7 @@ void SplashScreen::Paint( const Rectangle&)
_vdev.DrawRect(Rectangle(_tlx+_barspace, _tly+_barspace, _tlx+_barspace+length, _tly+_barheight-_barspace));
_vdev.DrawText( Rectangle(_tlx, _tly+_barheight+5, _tlx+_barwidth, _tly+_barheight+5+20), _sProgressText, TEXT_DRAW_CENTER );
}
- Size aSize = GetOutputSizePixel();
- Size bSize = _vdev.GetOutputSizePixel();
- //_vdev.Flush();
- //_vdev.DrawOutDev(Point(), GetOutputSize(), Point(), GetOutputSize(), *((IntroWindow*)this) );
DrawOutDev(Point(), GetOutputSizePixel(), Point(), _vdev.GetOutputSizePixel(), _vdev );
- //Flush();
}
diff --git a/desktop/test/deployment/active/Addons.xcu b/desktop/test/deployment/active/Addons.xcu
new file mode 100644
index 0000000000..cc75f2ab8f
--- /dev/null
+++ b/desktop/test/deployment/active/Addons.xcu
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<o:component-data xmlns:o="http://openoffice.org/2001/registry"
+ o:package="org.openoffice.Office" o:name="Addons">
+ <node o:name="AddonUI">
+ <node o:name="OfficeMenuBar">
+ <node o:name="org.openoffice.test.desktop.deployment.active"
+ o:op="replace">
+ <prop o:name="Title" xml:lang="en-US">
+ <value>active</value>
+ </prop>
+ <node o:name="Submenu">
+ <node o:name="1" o:op="replace">
+ <prop o:name="URL">
+ <value>vnd.org.openoffice.test.desktop.deployment.active_native:</value>
+ </prop>
+ <prop o:name="Title" xml:lang="en-US">
+ <value>native</value>
+ </prop>
+ </node>
+ <node o:name="2" o:op="replace">
+ <prop o:name="URL">
+ <value>vnd.org.openoffice.test.desktop.deployment.active_java:</value>
+ </prop>
+ <prop o:name="Title" xml:lang="en-US">
+ <value>java</value>
+ </prop>
+ </node>
+ <node o:name="3" o:op="replace">
+ <prop o:name="URL">
+ <value>vnd.org.openoffice.test.desktop.deployment.active_python:</value>
+ </prop>
+ <prop o:name="Title" xml:lang="en-US">
+ <value>python</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+ </node>
+ </node>
+</o:component-data>
diff --git a/desktop/test/deployment/active/Dispatch.java b/desktop/test/deployment/active/Dispatch.java
new file mode 100755
index 0000000000..25443f96e0
--- /dev/null
+++ b/desktop/test/deployment/active/Dispatch.java
@@ -0,0 +1,101 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+package com.sun.star.comp.test.deployment.active_java;
+
+import com.sun.star.awt.MessageBoxButtons;
+import com.sun.star.awt.Rectangle;
+import com.sun.star.awt.XMessageBox;
+import com.sun.star.awt.XMessageBoxFactory;
+import com.sun.star.awt.XWindowPeer;
+import com.sun.star.beans.PropertyValue;
+import com.sun.star.frame.DispatchDescriptor;
+import com.sun.star.frame.XDesktop;
+import com.sun.star.frame.XDispatch;
+import com.sun.star.frame.XStatusListener;
+import com.sun.star.lang.WrappedTargetRuntimeException;
+import com.sun.star.lang.XComponent;
+import com.sun.star.lang.XMultiComponentFactory;
+import com.sun.star.lang.XServiceInfo;
+import com.sun.star.lib.uno.helper.WeakBase;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XComponentContext;
+import com.sun.star.util.URL;
+
+public final class Dispatch extends WeakBase implements XServiceInfo, XDispatch
+{
+ public Dispatch(XComponentContext context) {
+ this.context = context;
+ }
+
+ public String getImplementationName() { return implementationName; }
+
+ public boolean supportsService(String ServiceName) {
+ return false; //TODO
+ }
+
+ public String[] getSupportedServiceNames() {
+ return serviceNames;
+ }
+
+ public void dispatch(URL URL, PropertyValue[] Arguments) {
+ try {
+ XMultiComponentFactory smgr = UnoRuntime.queryInterface(
+ XMultiComponentFactory.class, context.getServiceManager());
+ XMessageBox box = UnoRuntime.queryInterface(
+ XMessageBoxFactory.class,
+ smgr.createInstanceWithContext(
+ "com.sun.star.awt.Toolkit", context)).
+ createMessageBox(
+ UnoRuntime.queryInterface(
+ XWindowPeer.class,
+ (UnoRuntime.queryInterface(
+ XDesktop.class,
+ smgr.createInstanceWithContext(
+ "com.sun.star.frame.Desktop", context)).
+ getCurrentFrame().getComponentWindow())),
+ new Rectangle(), "infobox", MessageBoxButtons.BUTTONS_OK,
+ "active", "java");
+ box.execute();
+ UnoRuntime.queryInterface(XComponent.class, box).dispose();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ throw e;
+ } catch (com.sun.star.uno.Exception e) {
+ throw new WrappedTargetRuntimeException(
+ "wrapped: " + e.getMessage(), this, e);
+ }
+ }
+
+ public void addStatusListener(XStatusListener Control, URL URL) {}
+
+ public void removeStatusListener(XStatusListener Control, URL URL) {}
+
+ private final XComponentContext context;
+
+ static final String implementationName =
+ "com.sun.star.comp.test.deployment.active_java_singleton";
+
+ static final String[] serviceNames = new String[0];
+}
diff --git a/desktop/test/deployment/active/MANIFEST.MF b/desktop/test/deployment/active/MANIFEST.MF
new file mode 100755
index 0000000000..63480874dd
--- /dev/null
+++ b/desktop/test/deployment/active/MANIFEST.MF
@@ -0,0 +1,3 @@
+Sealed: true
+RegistrationClassName: com.sun.star.comp.test.deployment.active_java.Services
+UNO-Type-Path:
diff --git a/desktop/test/deployment/active/ProtocolHandler.xcu b/desktop/test/deployment/active/ProtocolHandler.xcu
new file mode 100644
index 0000000000..017bdea72b
--- /dev/null
+++ b/desktop/test/deployment/active/ProtocolHandler.xcu
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<o:component-data xmlns:o="http://openoffice.org/2001/registry"
+ o:package="org.openoffice.Office" o:name="ProtocolHandler">
+ <node o:name="HandlerSet">
+ <node o:name="com.sun.star.test.deployment.active_native" o:op="replace">
+ <prop o:name="Protocols">
+ <value>vnd.org.openoffice.test.desktop.deployment.active_native:*</value>
+ </prop>
+ </node>
+ <node o:name="com.sun.star.test.deployment.active_java" o:op="replace">
+ <prop o:name="Protocols">
+ <value>vnd.org.openoffice.test.desktop.deployment.active_java:*</value>
+ </prop>
+ </node>
+ <node o:name="com.sun.star.test.deployment.active_python" o:op="replace">
+ <prop o:name="Protocols">
+ <value>vnd.org.openoffice.test.desktop.deployment.active_python:*</value>
+ </prop>
+ </node>
+ </node>
+</o:component-data>
diff --git a/desktop/test/deployment/active/Provider.java b/desktop/test/deployment/active/Provider.java
new file mode 100755
index 0000000000..df31979f4b
--- /dev/null
+++ b/desktop/test/deployment/active/Provider.java
@@ -0,0 +1,81 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+package com.sun.star.comp.test.deployment.active_java;
+
+import com.sun.star.frame.DispatchDescriptor;
+import com.sun.star.frame.XDispatch;
+import com.sun.star.frame.XDispatchProvider;
+import com.sun.star.lang.XServiceInfo;
+import com.sun.star.lib.uno.helper.WeakBase;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XComponentContext;
+import com.sun.star.util.URL;
+
+public final class Provider extends WeakBase
+ implements XServiceInfo, XDispatchProvider
+{
+ public Provider(XComponentContext context) {
+ this.context = context;
+ }
+
+ public String getImplementationName() { return implementationName; }
+
+ public boolean supportsService(String ServiceName) {
+ return ServiceName.equals(getSupportedServiceNames()[0]); //TODO
+ }
+
+ public String[] getSupportedServiceNames() {
+ return serviceNames;
+ }
+
+ public XDispatch queryDispatch(
+ URL URL, String TargetFrameName, int SearchFlags)
+ {
+ return UnoRuntime.queryInterface(
+ XDispatch.class,
+ context.getValueByName(
+ "/singletons/" +
+ "com.sun.star.test.deployment.active_java_singleton"));
+ }
+
+ public XDispatch[] queryDispatches(DispatchDescriptor[] Requests) {
+ XDispatch[] s = new XDispatch[Requests.length];
+ for (int i = 0; i < s.length; ++i) {
+ s[i] = queryDispatch(
+ Requests[i].FeatureURL, Requests[i].FrameName,
+ Requests[i].SearchFlags);
+ }
+ return s;
+ }
+
+ private final XComponentContext context;
+
+ static final String implementationName =
+ "com.sun.star.comp.test.deployment.active_java";
+
+ static final String[] serviceNames = new String[] {
+ "com.sun.star.test.deployment.active_java" };
+}
diff --git a/desktop/test/deployment/active/Services.java b/desktop/test/deployment/active/Services.java
new file mode 100755
index 0000000000..4ea19f4b7a
--- /dev/null
+++ b/desktop/test/deployment/active/Services.java
@@ -0,0 +1,72 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+package com.sun.star.comp.test.deployment.active_java;
+
+import com.sun.star.lang.XSingleComponentFactory;
+import com.sun.star.lib.uno.helper.Factory;
+import com.sun.star.registry.InvalidRegistryException;
+import com.sun.star.registry.XRegistryKey;
+
+public final class Services {
+ private Services() {}
+
+ public static XSingleComponentFactory __getComponentFactory(
+ String implementation)
+ {
+ if (implementation.equals(Dispatch.implementationName)) {
+ return Factory.createComponentFactory(
+ Dispatch.class, Dispatch.implementationName,
+ Dispatch.serviceNames);
+ } else if (implementation.equals(Provider.implementationName)) {
+ return Factory.createComponentFactory(
+ Provider.class, Provider.implementationName,
+ Provider.serviceNames);
+ } else {
+ return null;
+ }
+ }
+
+ public static boolean __writeRegistryServiceInfo(XRegistryKey key) {
+ if (!(Factory.writeRegistryServiceInfo(
+ Dispatch.implementationName, Dispatch.serviceNames, key) &&
+ Factory.writeRegistryServiceInfo(
+ Provider.implementationName, Provider.serviceNames, key)))
+ {
+ return false;
+ }
+ try {
+ key.
+ createKey(
+ "/" + Dispatch.implementationName +
+ "/UNO/SINGLETONS/" +
+ "com.sun.star.test.deployment.active_java_singleton").
+ setStringValue(Dispatch.implementationName);
+ } catch (InvalidRegistryException e) {
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/desktop/test/deployment/active/active_native.cxx b/desktop/test/deployment/active/active_native.cxx
new file mode 100644
index 0000000000..a34d8de88a
--- /dev/null
+++ b/desktop/test/deployment/active/active_native.cxx
@@ -0,0 +1,320 @@
+/*************************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+************************************************************************/
+
+#include "precompiled_desktop.hxx"
+#include "sal/config.h"
+
+#include "boost/noncopyable.hpp"
+#include "com/sun/star/awt/MessageBoxButtons.hpp"
+#include "com/sun/star/awt/Rectangle.hpp"
+#include "com/sun/star/awt/XMessageBox.hpp"
+#include "com/sun/star/awt/XMessageBoxFactory.hpp"
+#include "com/sun/star/awt/XWindowPeer.hpp"
+#include "com/sun/star/beans/PropertyValue.hpp"
+#include "com/sun/star/frame/DispatchDescriptor.hpp"
+#include "com/sun/star/frame/XDesktop.hpp"
+#include "com/sun/star/frame/XDispatch.hpp"
+#include "com/sun/star/frame/XDispatchProvider.hpp"
+#include "com/sun/star/frame/XFrame.hpp"
+#include "com/sun/star/frame/XStatusListener.hpp"
+#include "com/sun/star/lang/XComponent.hpp"
+#include "com/sun/star/lang/XMultiComponentFactory.hpp"
+#include "com/sun/star/lang/XServiceInfo.hpp"
+#include "com/sun/star/registry/XRegistryKey.hpp"
+#include "com/sun/star/uno/DeploymentException.hpp"
+#include "com/sun/star/uno/Exception.hpp"
+#include "com/sun/star/uno/Reference.hxx"
+#include "com/sun/star/uno/RuntimeException.hpp"
+#include "com/sun/star/uno/Sequence.hxx"
+#include "com/sun/star/uno/XComponentContext.hpp"
+#include "com/sun/star/uno/XInterface.hpp"
+#include "com/sun/star/util/URL.hpp"
+#include "cppuhelper/factory.hxx"
+#include "cppuhelper/implbase2.hxx"
+#include "cppuhelper/implementationentry.hxx"
+#include "cppuhelper/weak.hxx"
+#include "osl/diagnose.h"
+#include "rtl/textenc.h"
+#include "rtl/ustring.h"
+#include "rtl/ustring.hxx"
+#include "sal/types.h"
+#include "uno/lbnames.h"
+
+namespace {
+
+namespace css = com::sun::star;
+
+class Provider:
+ public cppu::WeakImplHelper2<
+ css::lang::XServiceInfo, css::frame::XDispatchProvider >,
+ private boost::noncopyable
+{
+public:
+ static css::uno::Reference< css::uno::XInterface > SAL_CALL static_create(
+ css::uno::Reference< css::uno::XComponentContext > const & xContext)
+ SAL_THROW((css::uno::Exception))
+ { return static_cast< cppu::OWeakObject * >(new Provider(xContext)); }
+
+ static rtl::OUString SAL_CALL static_getImplementationName();
+
+ static css::uno::Sequence< rtl::OUString > SAL_CALL
+ static_getSupportedServiceNames();
+
+private:
+ Provider(
+ css::uno::Reference< css::uno::XComponentContext > const & context):
+ context_(context) { OSL_ASSERT(context.is()); }
+
+ virtual ~Provider() {}
+
+ virtual rtl::OUString SAL_CALL getImplementationName()
+ throw (css::uno::RuntimeException)
+ { return static_getImplementationName(); }
+
+ virtual sal_Bool SAL_CALL supportsService(rtl::OUString const & ServiceName)
+ throw (css::uno::RuntimeException)
+ { return ServiceName == getSupportedServiceNames()[0]; } //TODO
+
+ virtual css::uno::Sequence< rtl::OUString > SAL_CALL
+ getSupportedServiceNames() throw (css::uno::RuntimeException)
+ { return static_getSupportedServiceNames(); }
+
+ virtual css::uno::Reference< css::frame::XDispatch > SAL_CALL queryDispatch(
+ css::util::URL const &, rtl::OUString const &, sal_Int32)
+ throw (css::uno::RuntimeException);
+
+ virtual css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > >
+ SAL_CALL queryDispatches(
+ css::uno::Sequence< css::frame::DispatchDescriptor > const & Requests)
+ throw (css::uno::RuntimeException);
+
+ css::uno::Reference< css::uno::XComponentContext > context_;
+};
+
+rtl::OUString Provider::static_getImplementationName() {
+ return rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.comp.test.deployment.active_native"));
+}
+
+css::uno::Sequence< rtl::OUString > Provider::static_getSupportedServiceNames()
+{
+ rtl::OUString name(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.test.deployment.active_native"));
+ return css::uno::Sequence< rtl::OUString >(&name, 1);
+}
+
+css::uno::Reference< css::frame::XDispatch > Provider::queryDispatch(
+ css::util::URL const &, rtl::OUString const &, sal_Int32)
+ throw (css::uno::RuntimeException)
+{
+ css::uno::Reference< css::frame::XDispatch > dispatch;
+ if (!(context_->getValueByName(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "/singletons/com.sun.star.test.deployment."
+ "active_native_singleton"))) >>=
+ dispatch) ||
+ !dispatch.is())
+ {
+ throw css::uno::DeploymentException(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "component context fails to supply singleton"
+ " com.sun.star.test.deployment.active_native_singleton of"
+ " type com.sun.star.frame.XDispatch")),
+ context_);
+ }
+ return dispatch;
+}
+
+css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > >
+Provider::queryDispatches(
+ css::uno::Sequence< css::frame::DispatchDescriptor > const & Requests)
+ throw (css::uno::RuntimeException)
+{
+ css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > > s(
+ Requests.getLength());
+ for (sal_Int32 i = 0; i < s.getLength(); ++i) {
+ s[i] = queryDispatch(
+ Requests[i].FeatureURL, Requests[i].FrameName,
+ Requests[i].SearchFlags);
+ }
+ return s;
+}
+
+class Dispatch:
+ public cppu::WeakImplHelper2<
+ css::lang::XServiceInfo, css::frame::XDispatch >,
+ private boost::noncopyable
+{
+public:
+ static css::uno::Reference< css::uno::XInterface > SAL_CALL static_create(
+ css::uno::Reference< css::uno::XComponentContext > const & xContext)
+ SAL_THROW((css::uno::Exception))
+ { return static_cast< cppu::OWeakObject * >(new Dispatch(xContext)); }
+
+ static rtl::OUString SAL_CALL static_getImplementationName();
+
+ static css::uno::Sequence< rtl::OUString > SAL_CALL
+ static_getSupportedServiceNames()
+ { return css::uno::Sequence< rtl::OUString >(); }
+
+private:
+ Dispatch(
+ css::uno::Reference< css::uno::XComponentContext > const & context):
+ context_(context) { OSL_ASSERT(context.is()); }
+
+ virtual ~Dispatch() {}
+
+ virtual rtl::OUString SAL_CALL getImplementationName()
+ throw (css::uno::RuntimeException)
+ { return static_getImplementationName(); }
+
+ virtual sal_Bool SAL_CALL supportsService(rtl::OUString const &)
+ throw (css::uno::RuntimeException)
+ { return false; } //TODO
+
+ virtual css::uno::Sequence< rtl::OUString > SAL_CALL
+ getSupportedServiceNames() throw (css::uno::RuntimeException)
+ { return static_getSupportedServiceNames(); }
+
+ virtual void SAL_CALL dispatch(
+ css::util::URL const &,
+ css::uno::Sequence< css::beans::PropertyValue > const &)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL addStatusListener(
+ css::uno::Reference< css::frame::XStatusListener > const &,
+ css::util::URL const &)
+ throw (css::uno::RuntimeException)
+ {}
+
+ virtual void SAL_CALL removeStatusListener(
+ css::uno::Reference< css::frame::XStatusListener > const &,
+ css::util::URL const &)
+ throw (css::uno::RuntimeException)
+ {}
+
+ css::uno::Reference< css::uno::XComponentContext > context_;
+};
+
+rtl::OUString Dispatch::static_getImplementationName() {
+ return rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.comp.test.deployment.active_native_singleton"));
+}
+
+void Dispatch::dispatch(
+ css::util::URL const &,
+ css::uno::Sequence< css::beans::PropertyValue > const &)
+ throw (css::uno::RuntimeException)
+{
+ css::uno::Reference< css::lang::XMultiComponentFactory > smgr(
+ context_->getServiceManager(), css::uno::UNO_SET_THROW);
+ css::uno::Reference< css::awt::XMessageBox > box(
+ css::uno::Reference< css::awt::XMessageBoxFactory >(
+ smgr->createInstanceWithContext(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.awt.Toolkit")), context_),
+ css::uno::UNO_QUERY_THROW)->createMessageBox(
+ css::uno::Reference< css::awt::XWindowPeer >(
+ css::uno::Reference< css::frame::XFrame >(
+ css::uno::Reference< css::frame::XDesktop >(
+ smgr->createInstanceWithContext(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.frame.Desktop")),
+ context_),
+ css::uno::UNO_QUERY_THROW)->getCurrentFrame(),
+ css::uno::UNO_SET_THROW)->getComponentWindow(),
+ css::uno::UNO_QUERY_THROW),
+ css::awt::Rectangle(),
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("infobox")),
+ css::awt::MessageBoxButtons::BUTTONS_OK,
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("active")),
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("native"))),
+ css::uno::UNO_SET_THROW);
+ box->execute();
+ css::uno::Reference< css::lang::XComponent >(
+ box, css::uno::UNO_QUERY_THROW)->dispose();
+}
+
+static cppu::ImplementationEntry const services[] = {
+ { &Provider::static_create, &Provider::static_getImplementationName,
+ &Provider::static_getSupportedServiceNames,
+ &cppu::createSingleComponentFactory, 0, 0 },
+ { &Dispatch::static_create, &Dispatch::static_getImplementationName,
+ &Dispatch::static_getSupportedServiceNames,
+ &cppu::createSingleComponentFactory, 0, 0 },
+ { 0, 0, 0, 0, 0, 0 }
+};
+
+}
+
+extern "C" void * SAL_CALL component_getFactory(
+ char const * pImplName, void * pServiceManager, void * pRegistryKey)
+{
+ return cppu::component_getFactoryHelper(
+ pImplName, pServiceManager, pRegistryKey, services);
+}
+
+extern "C" void SAL_CALL component_getImplementationEnvironment(
+ char const ** ppEnvTypeName, uno_Environment **)
+{
+ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
+}
+
+extern "C" sal_Bool SAL_CALL component_writeInfo(
+ void * pServiceManager, void * pRegistryKey)
+{
+ if (!component_writeInfoHelper(pServiceManager, pRegistryKey, services)) {
+ return false;
+ }
+ try {
+ css::uno::Reference< css::registry::XRegistryKey >(
+ (css::uno::Reference< css::registry::XRegistryKey >(
+ static_cast< css::registry::XRegistryKey * >(pRegistryKey))->
+ createKey(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/")) +
+ Dispatch::static_getImplementationName() +
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "/UNO/SINGLETONS/com.sun.star.test.deployment."
+ "active_native_singleton")))),
+ css::uno::UNO_SET_THROW)->
+ setStringValue(Dispatch::static_getImplementationName());
+ } catch (css::uno::Exception & e) {
+ (void) e;
+ OSL_TRACE(
+ "active_native component_writeInfo exception: %s",
+ rtl::OUStringToOString(e.Message, RTL_TEXTENCODING_UTF8).getStr());
+ return false;
+ }
+ return true;
+}
diff --git a/desktop/test/deployment/active/active_python.py b/desktop/test/deployment/active/active_python.py
new file mode 100755
index 0000000000..8ba0947b6b
--- /dev/null
+++ b/desktop/test/deployment/active/active_python.py
@@ -0,0 +1,120 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org 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 Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#***********************************************************************/
+
+import uno
+import unohelper
+
+from com.sun.star.awt import Rectangle
+from com.sun.star.awt.MessageBoxButtons import BUTTONS_OK
+from com.sun.star.frame import XDispatch, XDispatchProvider
+from com.sun.star.lang import XServiceInfo
+from com.sun.star.registry import InvalidRegistryException
+
+class Provider(unohelper.Base, XServiceInfo, XDispatchProvider):
+ implementationName = "com.sun.star.comp.test.deployment.active_python"
+
+ serviceNames = ("com.sun.star.test.deployment.active_python",)
+
+ def __init__(self, context):
+ self.context = context
+
+ def getImplementationName(self):
+ return self.implementationName
+
+ def supportsService(self, ServiceName):
+ return ServiceName in self.serviceNames
+
+ def getSupportedServiceNames(self):
+ return self.serviceNames
+
+ def queryDispatch(self, URL, TargetFrame, SearchFlags):
+ return self.context.getValueByName( \
+ "/singletons/com.sun.star.test.deployment.active_python_singleton")
+
+ def queryDispatches(self, Requests):
+ tuple( \
+ self.queryDispatch(i.FeatureURL, i.FrameName, i.SearchFlags) \
+ for i in Requests)
+
+class Dispatch(unohelper.Base, XServiceInfo, XDispatch):
+ implementationName = \
+ "com.sun.star.comp.test.deployment.active_python_singleton"
+
+ serviceNames = ()
+
+ def __init__(self, context):
+ self.context = context
+
+ def getImplementationName(self):
+ return self.implementationName
+
+ def supportsService(self, ServiceName):
+ return ServiceName in self.serviceNames
+
+ def getSupportedServiceNames(self):
+ return self.serviceNames
+
+ def dispatch(self, URL, Arguments):
+ smgr = self.context.getServiceManager()
+ box = smgr.createInstanceWithContext( \
+ "com.sun.star.awt.Toolkit", self.context).createMessageBox( \
+ smgr.createInstanceWithContext( \
+ "com.sun.star.frame.Desktop", self.context). \
+ getCurrentFrame().getComponentWindow(), \
+ Rectangle(), "infobox", BUTTONS_OK, "active", "python")
+ box.execute();
+ box.dispose();
+
+ def addStatusListener(self, Control, URL):
+ pass
+
+ def removeStatusListener(self, Control, URL):
+ pass
+
+def getComponentFactory(implementationName, smgr, regKey):
+ if implementationName == Provider.implementationName:
+ return unohelper.createSingleServiceFactory( \
+ Provider, Provider.implementationName, Provider.serviceNames)
+ elif implementationName == Dispatch.implementationName:
+ return unohelper.createSingleServiceFactory( \
+ Dispatch, Dispatch.implementationName, Dispatch.serviceNames)
+ else:
+ return None
+
+def writeRegistryInfo(smgr, regKey):
+ try:
+ for i in (Provider, Dispatch):
+ key = regKey.createKey("/" + i.implementationName + "/UNO")
+ for j in i.serviceNames:
+ key.createKey("/SERVICES/" + j);
+ regKey.createKey( \
+ "/" + Dispatch.implementationName + "/UNO/SINGLETONS/" \
+ "com.sun.star.test.deployment.active_python_singleton"). \
+ setStringValue(Dispatch.implementationName)
+ except InvalidRegistryException:
+ return False
+ return True
diff --git a/desktop/test/deployment/active/description.xml b/desktop/test/deployment/active/description.xml
new file mode 100755
index 0000000000..fd7049e0cc
--- /dev/null
+++ b/desktop/test/deployment/active/description.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<d:description xmlns:d="http://openoffice.org/extensions/description/2006">
+ <d:identifier
+ value="org.openoffice/framework/desktop/test/deployment/active"/>
+ <d:version value="1"/>
+ <d:dependencies>
+ <d:OpenOffice.org-minimal-version d:name="OpenOffice.org 3.4" value="3.4"/>
+ </d:dependencies>
+</d:description>
diff --git a/desktop/test/deployment/active/makefile.mk b/desktop/test/deployment/active/makefile.mk
new file mode 100755
index 0000000000..05c19eb236
--- /dev/null
+++ b/desktop/test/deployment/active/makefile.mk
@@ -0,0 +1,87 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org 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 Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#***********************************************************************/
+
+PRJ = ../../..
+PRJNAME = desktop
+TARGET = test_deployment_active
+
+ENABLE_EXCEPTIONS = TRUE
+
+PACKAGE = com/sun/star/comp/test/deployment/active_java
+JAVAFILES = Dispatch.java Provider.java Services.java
+JARFILES = juh.jar ridl.jar unoil.jar
+
+.INCLUDE: settings.mk
+
+DLLPRE =
+
+SLOFILES = $(SHL1OBJS)
+
+SHL1TARGET = active_native.uno
+SHL1OBJS = $(SLO)/active_native.obj
+SHL1RPATH = OXT
+SHL1STDLIBS = $(CPPUHELPERLIB) $(CPPULIB) $(SALLIB)
+SHL1VERSIONMAP = $(SOLARENV)/src/reg-component.map
+DEF1NAME = $(SHL1TARGET)
+
+.INCLUDE: target.mk
+
+.IF "$(SOLAR_JAVA)" != ""
+
+ALLTAR : $(MISC)/active.oxt
+
+$(MISC)/active.oxt : manifest.xml description.xml Addons.xcu \
+ ProtocolHandler.xcu $(SHL1TARGETN) $(MISC)/$(TARGET)/active_java.jar \
+ active_python.py
+ $(RM) $@
+ $(RM) -r $(MISC)/$(TARGET)/active.oxt-zip
+ $(MKDIR) $(MISC)/$(TARGET)/active.oxt-zip
+ $(MKDIRHIER) $(MISC)/$(TARGET)/active.oxt-zip/META-INF
+ $(SED) -e 's|@PATH@|$(SHL1TARGETN:f)|g' \
+ -e 's|@PLATFORM@|$(RTL_OS:l)_$(RTL_ARCH:l)|g' < manifest.xml \
+ > $(MISC)/$(TARGET)/active.oxt-zip/META-INF/manifest.xml
+ $(COPY) description.xml Addons.xcu ProtocolHandler.xcu $(SHL1TARGETN) \
+ $(MISC)/$(TARGET)/active_java.jar active_python.py \
+ $(MISC)/$(TARGET)/active.oxt-zip/
+ cd $(MISC)/$(TARGET)/active.oxt-zip && zip ../../active.oxt \
+ META-INF/manifest.xml description.xml Addons.xcu ProtocolHandler.xcu \
+ $(SHL1TARGETN:f) active_java.jar active_python.py
+
+$(MISC)/$(TARGET)/active_java.jar : MANIFEST.MF $(JAVATARGET)
+ $(MKDIRHIER) $(@:d)
+ $(RM) $@
+ $(RM) -r $(MISC)/$(TARGET)/active_java.jar-zip
+ $(MKDIR) $(MISC)/$(TARGET)/active_java.jar-zip
+ $(MKDIRHIER) $(MISC)/$(TARGET)/active_java.jar-zip/META-INF \
+ $(MISC)/$(TARGET)/active_java.jar-zip/$(PACKAGE)
+ $(COPY) MANIFEST.MF $(MISC)/$(TARGET)/active_java.jar-zip/META-INF/
+ $(COPY) $(foreach,i,$(JAVAFILES:b) $(CLASSDIR)/$(PACKAGE)/$i.class) \
+ $(MISC)/$(TARGET)/active_java.jar-zip/$(PACKAGE)/
+ cd $(MISC)/$(TARGET)/active_java.jar-zip && zip ../active_java.jar \
+ META-INF/MANIFEST.MF $(foreach,i,$(JAVAFILES:b) $(PACKAGE)/$i.class)
+
+.ENDIF
diff --git a/desktop/test/deployment/active/manifest.xml b/desktop/test/deployment/active/manifest.xml
new file mode 100755
index 0000000000..4f07669666
--- /dev/null
+++ b/desktop/test/deployment/active/manifest.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<m:manifest xmlns:m="http://openoffice.org/2001/manifest">
+ <m:file-entry m:media-type="application/vnd.sun.star.configuration-data"
+ m:full-path="Addons.xcu"/>
+ <m:file-entry m:media-type="application/vnd.sun.star.configuration-data"
+ m:full-path="ProtocolHandler.xcu"/>
+ <m:file-entry
+ m:media-type="application/vnd.sun.star.uno-component;type=native;platform=@PLATFORM@"
+ m:full-path="@PATH@"/>
+ <m:file-entry
+ m:media-type="application/vnd.sun.star.uno-component;type=Java"
+ m:full-path="active_java.jar"/>
+ <m:file-entry
+ m:media-type="application/vnd.sun.star.uno-component;type=Python"
+ m:full-path="active_python.py"/>
+</m:manifest>
diff --git a/desktop/test/deployment/boxt/boxt.cxx b/desktop/test/deployment/boxt/boxt.cxx
index a2fb2c43cb..f0b706bc64 100644
--- a/desktop/test/deployment/boxt/boxt.cxx
+++ b/desktop/test/deployment/boxt/boxt.cxx
@@ -36,8 +36,6 @@
#include "com/sun/star/frame/XDispatchProvider.hpp"
#include "com/sun/star/frame/XStatusListener.hpp"
#include "com/sun/star/lang/XServiceInfo.hpp"
-#include "com/sun/star/lang/XSingleComponentFactory.hpp"
-#include "com/sun/star/uno/Any.hxx"
#include "com/sun/star/uno/Exception.hpp"
#include "com/sun/star/uno/Reference.hxx"
#include "com/sun/star/uno/RuntimeException.hpp"
@@ -46,7 +44,6 @@
#include "com/sun/star/uno/XInterface.hpp"
#include "com/sun/star/util/URL.hpp"
#include "cppuhelper/factory.hxx"
-#include "cppuhelper/implbase1.hxx"
#include "cppuhelper/implbase3.hxx"
#include "cppuhelper/implementationentry.hxx"
#include "cppuhelper/weak.hxx"
@@ -62,21 +59,6 @@ namespace {
namespace css = com::sun::star;
-namespace service {
-
-rtl::OUString getImplementationName() {
- return rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.test.deployment.boxt"));
-}
-
-css::uno::Sequence< rtl::OUString > getSupportedServiceNames() {
- rtl::OUString name(
- RTL_CONSTASCII_USTRINGPARAM("com.sun.star.test.deployment.boxt"));
- return css::uno::Sequence< rtl::OUString >(&name, 1);
-}
-
-}
-
class Service:
public cppu::WeakImplHelper3<
css::lang::XServiceInfo, css::frame::XDispatchProvider,
@@ -84,14 +66,24 @@ class Service:
private boost::noncopyable
{
public:
- Service() {}
+ static css::uno::Reference< css::uno::XInterface > SAL_CALL static_create(
+ css::uno::Reference< css::uno::XComponentContext > const &)
+ SAL_THROW((css::uno::Exception))
+ { return static_cast< cppu::OWeakObject * >(new Service); }
+
+ static rtl::OUString SAL_CALL static_getImplementationName();
+
+ static css::uno::Sequence< rtl::OUString > SAL_CALL
+ static_getSupportedServiceNames();
private:
+ Service() {}
+
virtual ~Service() {}
virtual rtl::OUString SAL_CALL getImplementationName()
throw (css::uno::RuntimeException)
- { return service::getImplementationName(); }
+ { return static_getImplementationName(); }
virtual sal_Bool SAL_CALL supportsService(rtl::OUString const & ServiceName)
throw (css::uno::RuntimeException)
@@ -99,7 +91,7 @@ private:
virtual css::uno::Sequence< rtl::OUString > SAL_CALL
getSupportedServiceNames() throw (css::uno::RuntimeException)
- { return service::getSupportedServiceNames(); }
+ { return static_getSupportedServiceNames(); }
virtual css::uno::Reference< css::frame::XDispatch > SAL_CALL queryDispatch(
css::util::URL const &, rtl::OUString const &, sal_Int32)
@@ -129,6 +121,17 @@ private:
{}
};
+rtl::OUString Service::static_getImplementationName() {
+ return rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.test.deployment.boxt"));
+}
+
+css::uno::Sequence< rtl::OUString > Service::static_getSupportedServiceNames() {
+ rtl::OUString name(
+ RTL_CONSTASCII_USTRINGPARAM("com.sun.star.test.deployment.boxt"));
+ return css::uno::Sequence< rtl::OUString >(&name, 1);
+}
+
css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > >
Service::queryDispatches(
css::uno::Sequence< css::frame::DispatchDescriptor > const & Requests)
@@ -156,61 +159,10 @@ void Service::dispatch(
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("test")));
}
-class Factory:
- public cppu::WeakImplHelper1< css::lang::XSingleComponentFactory >,
- private boost::noncopyable
-{
-public:
- Factory() {}
-
-private:
- virtual ~Factory() {}
-
- virtual css::uno::Reference< css::uno::XInterface > SAL_CALL
- createInstanceWithContext(
- css::uno::Reference< css::uno::XComponentContext > const &)
- throw (css::uno::Exception, css::uno::RuntimeException)
- { return static_cast< cppu::OWeakObject * >(new Service); }
-
- virtual css::uno::Reference< css::uno::XInterface > SAL_CALL
- createInstanceWithArgumentsAndContext(
- css::uno::Sequence< css::uno::Any > const &,
- css::uno::Reference< css::uno::XComponentContext > const & Context)
- throw (css::uno::Exception, css::uno::RuntimeException)
- { return createInstanceWithContext(Context); }
-};
-
-css::uno::Reference< css::uno::XInterface > SAL_CALL dummy(
- css::uno::Reference< css::uno::XComponentContext > const &)
- SAL_THROW((css::uno::Exception))
-{
- OSL_ASSERT(false);
- return css::uno::Reference< css::uno::XInterface >();
-}
-
-rtl::OUString SAL_CALL getImplementationName() {
- return rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.test.deployment.boxt"));
-}
-
-css::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames() {
- rtl::OUString name(
- RTL_CONSTASCII_USTRINGPARAM("com.sun.star.test.deployment.boxt"));
- return css::uno::Sequence< rtl::OUString >(&name, 1);
-}
-
-css::uno::Reference< css::lang::XSingleComponentFactory > SAL_CALL
-createFactory(
- cppu::ComponentFactoryFunc, rtl::OUString const &,
- css::uno::Sequence< rtl::OUString > const &, rtl_ModuleCount *)
- SAL_THROW(())
-{
- return new Factory;
-}
-
static cppu::ImplementationEntry const services[] = {
- { &dummy, &service::getImplementationName,
- &service::getSupportedServiceNames, &createFactory, 0, 0 },
+ { &Service::static_create, &Service::static_getImplementationName,
+ &Service::static_getSupportedServiceNames,
+ &cppu::createSingleComponentFactory, 0, 0 },
{ 0, 0, 0, 0, 0, 0 }
};
diff --git a/desktop/test/deployment/boxt/description.xml b/desktop/test/deployment/boxt/description.xml
index 5a67bf3e94..5a67bf3e94 100644..100755
--- a/desktop/test/deployment/boxt/description.xml
+++ b/desktop/test/deployment/boxt/description.xml
diff --git a/desktop/test/deployment/boxt/makefile.mk b/desktop/test/deployment/boxt/makefile.mk
index 11d736448d..88e72aef4a 100644..100755
--- a/desktop/test/deployment/boxt/makefile.mk
+++ b/desktop/test/deployment/boxt/makefile.mk
@@ -46,7 +46,7 @@ SHL1OBJS = $(SLO)/boxt.obj
SHL1RPATH = BOXT
SHL1STDLIBS = \
$(CPPUHELPERLIB) $(CPPULIB) $(MSFILTERLIB) $(SALLIB) $(TOOLSLIB) $(VCLLIB)
-SHL1VERSIONMAP = $(SOLARENV)/src/component.map
+SHL1VERSIONMAP = $(SOLARENV)/src/reg-component.map
DEF1NAME = $(SHL1TARGET)
.INCLUDE: target.mk
diff --git a/desktop/test/deployment/boxt/manifest.xml b/desktop/test/deployment/boxt/manifest.xml
index 73ebfc306e..73ebfc306e 100644..100755
--- a/desktop/test/deployment/boxt/manifest.xml
+++ b/desktop/test/deployment/boxt/manifest.xml
diff --git a/desktop/test/deployment/dependencies/readme.txt b/desktop/test/deployment/dependencies/readme.txt
index a99fade002..a99fade002 100644..100755
--- a/desktop/test/deployment/dependencies/readme.txt
+++ b/desktop/test/deployment/dependencies/readme.txt
diff --git a/desktop/test/deployment/display_name/readme.txt b/desktop/test/deployment/display_name/readme.txt
index 23173bde63..23173bde63 100644..100755
--- a/desktop/test/deployment/display_name/readme.txt
+++ b/desktop/test/deployment/display_name/readme.txt
diff --git a/desktop/test/deployment/executable_content/build/hello.c b/desktop/test/deployment/executable_content/build/hello.c
index 4e86d9d0e8..e5f41dc651 100644..100755
--- a/desktop/test/deployment/executable_content/build/hello.c
+++ b/desktop/test/deployment/executable_content/build/hello.c
@@ -35,9 +35,9 @@ int main(int argc , char** argv, char** envp)
{
//prevent warning about unused parameters
//we need to provide parameter names in C
- argc = argc;
- argv = argv;
- envp = envp;
+ (void)argc;
+ (void)argv;
+ (void)envp;
fprintf(stdout,"Hello world!\n");
return 0;
diff --git a/desktop/test/deployment/executable_content/build/makefile.mk b/desktop/test/deployment/executable_content/build/makefile.mk
index 038051c974..038051c974 100644..100755
--- a/desktop/test/deployment/executable_content/build/makefile.mk
+++ b/desktop/test/deployment/executable_content/build/makefile.mk
diff --git a/desktop/test/deployment/executable_content/build/readme.txt b/desktop/test/deployment/executable_content/build/readme.txt
index 4f956e573e..4f956e573e 100644..100755
--- a/desktop/test/deployment/executable_content/build/readme.txt
+++ b/desktop/test/deployment/executable_content/build/readme.txt
diff --git a/desktop/test/deployment/executable_content/readme.txt b/desktop/test/deployment/executable_content/readme.txt
index ad3c01097e..ad3c01097e 100644..100755
--- a/desktop/test/deployment/executable_content/readme.txt
+++ b/desktop/test/deployment/executable_content/readme.txt
diff --git a/desktop/test/deployment/identifier/readme.txt b/desktop/test/deployment/identifier/readme.txt
index 8a791c586a..8a791c586a 100644..100755
--- a/desktop/test/deployment/identifier/readme.txt
+++ b/desktop/test/deployment/identifier/readme.txt
diff --git a/desktop/test/deployment/locationtest/LocationTest.java b/desktop/test/deployment/locationtest/LocationTest.java
index b16d494551..b16d494551 100644..100755
--- a/desktop/test/deployment/locationtest/LocationTest.java
+++ b/desktop/test/deployment/locationtest/LocationTest.java
diff --git a/desktop/test/deployment/locationtest/MANIFEST.MF b/desktop/test/deployment/locationtest/MANIFEST.MF
index a2fa8c34b7..a2fa8c34b7 100644..100755
--- a/desktop/test/deployment/locationtest/MANIFEST.MF
+++ b/desktop/test/deployment/locationtest/MANIFEST.MF
diff --git a/desktop/test/deployment/locationtest/delzip b/desktop/test/deployment/locationtest/delzip
index 636fda90bf..636fda90bf 100644..100755
--- a/desktop/test/deployment/locationtest/delzip
+++ b/desktop/test/deployment/locationtest/delzip
diff --git a/desktop/test/deployment/locationtest/description.xml b/desktop/test/deployment/locationtest/description.xml
index 54e45537b0..54e45537b0 100644..100755
--- a/desktop/test/deployment/locationtest/description.xml
+++ b/desktop/test/deployment/locationtest/description.xml
diff --git a/desktop/test/deployment/locationtest/makefile.mk b/desktop/test/deployment/locationtest/makefile.mk
index 8fe1897919..24be56c28d 100644..100755
--- a/desktop/test/deployment/locationtest/makefile.mk
+++ b/desktop/test/deployment/locationtest/makefile.mk
@@ -80,5 +80,8 @@ $(MISC)$/$(TARGET)_resort : manifest.xml $(JARTARGETN) $(MISC)$/$(ZIP1TARGET).cr
$(COPY) description.xml $(MISC)$/$(TARGET)$/description.xml
$(TOUCH) $@
+.IF "$(ZIP1TARGETN)"!=""
$(ZIP1TARGETN) : $(MISC)$/$(TARGET)_resort $(MISC)$/$(ZIP1TARGET).createdir
+.ENDIF # "$(ZIP1TARGETN)"!=""
+
diff --git a/desktop/test/deployment/locationtest/manifest.xml b/desktop/test/deployment/locationtest/manifest.xml
index 8791582798..3dd6460faf 100644..100755
--- a/desktop/test/deployment/locationtest/manifest.xml
+++ b/desktop/test/deployment/locationtest/manifest.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<manifest:manifest>
+<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
<manifest:file-entry manifest:full-path="LocationTest.jar" manifest:media-type="application/vnd.sun.star.uno-component;type=Java"/>
<manifest:file-entry manifest:full-path="LocationTest.rdb" manifest:media-type="application/vnd.sun.star.uno-typelibrary;type=RDB"/>
-</manifest:manifest> \ No newline at end of file
+</manifest:manifest>
diff --git a/desktop/test/deployment/options/handler/com/sun/star/comp/extensionoptions/MANIFEST.MF b/desktop/test/deployment/options/handler/com/sun/star/comp/extensionoptions/MANIFEST.MF
index fba55a6e0d..fba55a6e0d 100644..100755
--- a/desktop/test/deployment/options/handler/com/sun/star/comp/extensionoptions/MANIFEST.MF
+++ b/desktop/test/deployment/options/handler/com/sun/star/comp/extensionoptions/MANIFEST.MF
diff --git a/desktop/test/deployment/options/handler/com/sun/star/comp/extensionoptions/OptionsEventHandler.java b/desktop/test/deployment/options/handler/com/sun/star/comp/extensionoptions/OptionsEventHandler.java
index bd8e40826c..bd8e40826c 100644..100755
--- a/desktop/test/deployment/options/handler/com/sun/star/comp/extensionoptions/OptionsEventHandler.java
+++ b/desktop/test/deployment/options/handler/com/sun/star/comp/extensionoptions/OptionsEventHandler.java
diff --git a/desktop/test/deployment/options/handler/com/sun/star/comp/extensionoptions/makefile.mk b/desktop/test/deployment/options/handler/com/sun/star/comp/extensionoptions/makefile.mk
index 662fffce40..662fffce40 100644..100755
--- a/desktop/test/deployment/options/handler/com/sun/star/comp/extensionoptions/makefile.mk
+++ b/desktop/test/deployment/options/handler/com/sun/star/comp/extensionoptions/makefile.mk
diff --git a/desktop/test/deployment/options/readme.txt b/desktop/test/deployment/options/readme.txt
index 9879a72cef..9879a72cef 100644..100755
--- a/desktop/test/deployment/options/readme.txt
+++ b/desktop/test/deployment/options/readme.txt
diff --git a/desktop/test/deployment/passive/Addons.xcu b/desktop/test/deployment/passive/Addons.xcu
new file mode 100644
index 0000000000..61578d7426
--- /dev/null
+++ b/desktop/test/deployment/passive/Addons.xcu
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<o:component-data xmlns:o="http://openoffice.org/2001/registry"
+ o:package="org.openoffice.Office" o:name="Addons">
+ <node o:name="AddonUI">
+ <node o:name="OfficeMenuBar">
+ <node o:name="org.openoffice.test.desktop.deployment.passive"
+ o:op="replace">
+ <prop o:name="Title" xml:lang="en-US">
+ <value>passive</value>
+ </prop>
+ <node o:name="Submenu">
+ <node o:name="1" o:op="replace">
+ <prop o:name="URL">
+ <value>vnd.org.openoffice.test.desktop.deployment.passive_native:</value>
+ </prop>
+ <prop o:name="Title" xml:lang="en-US">
+ <value>native</value>
+ </prop>
+ </node>
+ <node o:name="2" o:op="replace">
+ <prop o:name="URL">
+ <value>vnd.org.openoffice.test.desktop.deployment.passive_java:</value>
+ </prop>
+ <prop o:name="Title" xml:lang="en-US">
+ <value>java</value>
+ </prop>
+ </node>
+ <node o:name="3" o:op="replace">
+ <prop o:name="URL">
+ <value>vnd.org.openoffice.test.desktop.deployment.passive_python:</value>
+ </prop>
+ <prop o:name="Title" xml:lang="en-US">
+ <value>python</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+ </node>
+ </node>
+</o:component-data>
diff --git a/desktop/test/deployment/passive/Dispatch.java b/desktop/test/deployment/passive/Dispatch.java
new file mode 100755
index 0000000000..295f34d599
--- /dev/null
+++ b/desktop/test/deployment/passive/Dispatch.java
@@ -0,0 +1,101 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+package com.sun.star.comp.test.deployment.passive_java;
+
+import com.sun.star.awt.MessageBoxButtons;
+import com.sun.star.awt.Rectangle;
+import com.sun.star.awt.XMessageBox;
+import com.sun.star.awt.XMessageBoxFactory;
+import com.sun.star.awt.XWindowPeer;
+import com.sun.star.beans.PropertyValue;
+import com.sun.star.frame.DispatchDescriptor;
+import com.sun.star.frame.XDesktop;
+import com.sun.star.frame.XDispatch;
+import com.sun.star.frame.XStatusListener;
+import com.sun.star.lang.WrappedTargetRuntimeException;
+import com.sun.star.lang.XComponent;
+import com.sun.star.lang.XMultiComponentFactory;
+import com.sun.star.lang.XServiceInfo;
+import com.sun.star.lib.uno.helper.WeakBase;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XComponentContext;
+import com.sun.star.util.URL;
+
+public final class Dispatch extends WeakBase implements XServiceInfo, XDispatch
+{
+ public Dispatch(XComponentContext context) {
+ this.context = context;
+ }
+
+ public String getImplementationName() { return implementationName; }
+
+ public boolean supportsService(String ServiceName) {
+ return false; //TODO
+ }
+
+ public String[] getSupportedServiceNames() {
+ return serviceNames;
+ }
+
+ public void dispatch(URL URL, PropertyValue[] Arguments) {
+ try {
+ XMultiComponentFactory smgr = UnoRuntime.queryInterface(
+ XMultiComponentFactory.class, context.getServiceManager());
+ XMessageBox box = UnoRuntime.queryInterface(
+ XMessageBoxFactory.class,
+ smgr.createInstanceWithContext(
+ "com.sun.star.awt.Toolkit", context)).
+ createMessageBox(
+ UnoRuntime.queryInterface(
+ XWindowPeer.class,
+ (UnoRuntime.queryInterface(
+ XDesktop.class,
+ smgr.createInstanceWithContext(
+ "com.sun.star.frame.Desktop", context)).
+ getCurrentFrame().getComponentWindow())),
+ new Rectangle(), "infobox", MessageBoxButtons.BUTTONS_OK,
+ "passive", "java");
+ box.execute();
+ UnoRuntime.queryInterface(XComponent.class, box).dispose();
+ } catch (com.sun.star.uno.RuntimeException e) {
+ throw e;
+ } catch (com.sun.star.uno.Exception e) {
+ throw new WrappedTargetRuntimeException(
+ "wrapped: " + e.getMessage(), this, e);
+ }
+ }
+
+ public void addStatusListener(XStatusListener Control, URL URL) {}
+
+ public void removeStatusListener(XStatusListener Control, URL URL) {}
+
+ private final XComponentContext context;
+
+ static final String implementationName =
+ "com.sun.star.comp.test.deployment.passive_java_singleton";
+
+ static final String[] serviceNames = new String[0];
+}
diff --git a/desktop/test/deployment/passive/MANIFEST.MF b/desktop/test/deployment/passive/MANIFEST.MF
new file mode 100755
index 0000000000..45a04bf263
--- /dev/null
+++ b/desktop/test/deployment/passive/MANIFEST.MF
@@ -0,0 +1,3 @@
+Sealed: true
+RegistrationClassName: com.sun.star.comp.test.deployment.passive_java.Services
+UNO-Type-Path:
diff --git a/desktop/test/deployment/passive/ProtocolHandler.xcu b/desktop/test/deployment/passive/ProtocolHandler.xcu
new file mode 100644
index 0000000000..bc0355be41
--- /dev/null
+++ b/desktop/test/deployment/passive/ProtocolHandler.xcu
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<o:component-data xmlns:o="http://openoffice.org/2001/registry"
+ o:package="org.openoffice.Office" o:name="ProtocolHandler">
+ <node o:name="HandlerSet">
+ <node o:name="com.sun.star.test.deployment.passive_native" o:op="replace">
+ <prop o:name="Protocols">
+ <value>vnd.org.openoffice.test.desktop.deployment.passive_native:*</value>
+ </prop>
+ </node>
+ <node o:name="com.sun.star.test.deployment.passive_java" o:op="replace">
+ <prop o:name="Protocols">
+ <value>vnd.org.openoffice.test.desktop.deployment.passive_java:*</value>
+ </prop>
+ </node>
+ <node o:name="com.sun.star.test.deployment.passive_python" o:op="replace">
+ <prop o:name="Protocols">
+ <value>vnd.org.openoffice.test.desktop.deployment.passive_python:*</value>
+ </prop>
+ </node>
+ </node>
+</o:component-data>
diff --git a/desktop/test/deployment/passive/Provider.java b/desktop/test/deployment/passive/Provider.java
new file mode 100755
index 0000000000..6f74ed9eb8
--- /dev/null
+++ b/desktop/test/deployment/passive/Provider.java
@@ -0,0 +1,81 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+package com.sun.star.comp.test.deployment.passive_java;
+
+import com.sun.star.frame.DispatchDescriptor;
+import com.sun.star.frame.XDispatch;
+import com.sun.star.frame.XDispatchProvider;
+import com.sun.star.lang.XServiceInfo;
+import com.sun.star.lib.uno.helper.WeakBase;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XComponentContext;
+import com.sun.star.util.URL;
+
+public final class Provider extends WeakBase
+ implements XServiceInfo, XDispatchProvider
+{
+ public Provider(XComponentContext context) {
+ this.context = context;
+ }
+
+ public String getImplementationName() { return implementationName; }
+
+ public boolean supportsService(String ServiceName) {
+ return ServiceName.equals(getSupportedServiceNames()[0]); //TODO
+ }
+
+ public String[] getSupportedServiceNames() {
+ return serviceNames;
+ }
+
+ public XDispatch queryDispatch(
+ URL URL, String TargetFrameName, int SearchFlags)
+ {
+ return UnoRuntime.queryInterface(
+ XDispatch.class,
+ context.getValueByName(
+ "/singletons/" +
+ "com.sun.star.test.deployment.passive_java_singleton"));
+ }
+
+ public XDispatch[] queryDispatches(DispatchDescriptor[] Requests) {
+ XDispatch[] s = new XDispatch[Requests.length];
+ for (int i = 0; i < s.length; ++i) {
+ s[i] = queryDispatch(
+ Requests[i].FeatureURL, Requests[i].FrameName,
+ Requests[i].SearchFlags);
+ }
+ return s;
+ }
+
+ private final XComponentContext context;
+
+ static final String implementationName =
+ "com.sun.star.comp.test.deployment.passive_java";
+
+ static final String[] serviceNames = new String[] {
+ "com.sun.star.test.deployment.passive_java" };
+}
diff --git a/desktop/test/deployment/passive/Services.java b/desktop/test/deployment/passive/Services.java
new file mode 100755
index 0000000000..799df3e702
--- /dev/null
+++ b/desktop/test/deployment/passive/Services.java
@@ -0,0 +1,49 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+package com.sun.star.comp.test.deployment.passive_java;
+
+import com.sun.star.lang.XSingleComponentFactory;
+import com.sun.star.lib.uno.helper.Factory;
+
+public final class Services {
+ private Services() {}
+
+ public static XSingleComponentFactory __getComponentFactory(
+ String implementation)
+ {
+ if (implementation.equals(Dispatch.implementationName)) {
+ return Factory.createComponentFactory(
+ Dispatch.class, Dispatch.implementationName,
+ Dispatch.serviceNames);
+ } else if (implementation.equals(Provider.implementationName)) {
+ return Factory.createComponentFactory(
+ Provider.class, Provider.implementationName,
+ Provider.serviceNames);
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/desktop/test/deployment/passive/description.xml b/desktop/test/deployment/passive/description.xml
new file mode 100755
index 0000000000..468dfa065f
--- /dev/null
+++ b/desktop/test/deployment/passive/description.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<d:description xmlns:d="http://openoffice.org/extensions/description/2006">
+ <d:identifier
+ value="org.openoffice/framework/desktop/test/deployment/passive"/>
+ <d:version value="1"/>
+ <d:dependencies>
+ <d:OpenOffice.org-minimal-version d:name="OpenOffice.org 3.4" value="3.4"/>
+ </d:dependencies>
+</d:description>
diff --git a/desktop/test/deployment/passive/makefile.mk b/desktop/test/deployment/passive/makefile.mk
new file mode 100755
index 0000000000..05defbe6d1
--- /dev/null
+++ b/desktop/test/deployment/passive/makefile.mk
@@ -0,0 +1,141 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org 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 Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#***********************************************************************/
+
+PRJ = ../../..
+PRJNAME = desktop
+TARGET = test_deployment_passive
+
+ENABLE_EXCEPTIONS = TRUE
+
+PACKAGE = com/sun/star/comp/test/deployment/passive_java
+JAVAFILES = Dispatch.java Provider.java Services.java
+JARFILES = juh.jar ridl.jar unoil.jar
+
+my_platform_components = passive_native
+my_generic_components = passive_java passive_python
+
+.INCLUDE: settings.mk
+
+
+DLLPRE =
+
+SLOFILES = $(SHL1OBJS)
+
+SHL1TARGET = passive_native.uno
+SHL1OBJS = $(SLO)/passive_native.obj
+SHL1RPATH = OXT
+SHL1STDLIBS = $(CPPUHELPERLIB) $(CPPULIB) $(SALLIB)
+SHL1VERSIONMAP = $(SOLARENV)/src/component.map
+DEF1NAME = $(SHL1TARGET)
+
+.INCLUDE: target.mk
+
+.IF "$(SOLAR_JAVA)" != ""
+
+ALLTAR : $(MISC)/passive.oxt
+
+$(MISC)/passive.oxt : manifest.xml description.xml Addons.xcu \
+ ProtocolHandler.xcu $(MISC)/$(TARGET)/platform.components \
+ $(MISC)/$(TARGET)/generic.components $(SHL1TARGETN) \
+ $(MISC)/$(TARGET)/passive_java.jar passive_python.py
+ $(RM) $@
+ $(RM) -r $(MISC)/$(TARGET)/passive.oxt-zip
+ $(MKDIR) $(MISC)/$(TARGET)/passive.oxt-zip
+ $(MKDIRHIER) $(MISC)/$(TARGET)/passive.oxt-zip/META-INF
+ $(SED) -e 's|@PLATFORM@|$(RTL_OS:l)_$(RTL_ARCH:l)|g' < manifest.xml \
+ > $(MISC)/$(TARGET)/passive.oxt-zip/META-INF/manifest.xml
+ $(COPY) description.xml Addons.xcu ProtocolHandler.xcu \
+ $(MISC)/$(TARGET)/platform.components \
+ $(MISC)/$(TARGET)/generic.components $(SHL1TARGETN) \
+ $(MISC)/$(TARGET)/passive_java.jar passive_python.py \
+ $(MISC)/$(TARGET)/passive.oxt-zip/
+ cd $(MISC)/$(TARGET)/passive.oxt-zip && zip ../../passive.oxt \
+ META-INF/manifest.xml description.xml Addons.xcu ProtocolHandler.xcu \
+ platform.components generic.components $(SHL1TARGETN:f) \
+ passive_java.jar passive_python.py
+
+$(MISC)/$(TARGET)/platform.components : $(SOLARENV)/bin/packcomponents.xslt \
+ $(MISC)/$(TARGET)/platform.components.input \
+ $(my_platform_components:^"$(MISC)/$(TARGET)/":+".component")
+ $(XSLTPROC) --nonet --stringparam prefix $(PWD)/$(MISC)/$(TARGET)/ -o $@ \
+ $(SOLARENV)/bin/packcomponents.xslt \
+ $(MISC)/$(TARGET)/platform.components.input
+
+$(MISC)/$(TARGET)/platform.components.input :
+ $(MKDIRHIER) $(@:d)
+ echo '<list>' \
+ '$(my_platform_components:^"<filename>":+".component</filename>")' \
+ '</list>' > $@
+
+$(MISC)/$(TARGET)/generic.components : $(SOLARENV)/bin/packcomponents.xslt \
+ $(MISC)/$(TARGET)/generic.components.input \
+ $(my_generic_components:^"$(MISC)/$(TARGET)/":+".component")
+ $(XSLTPROC) --nonet --stringparam prefix $(PWD)/$(MISC)/$(TARGET)/ -o $@ \
+ $(SOLARENV)/bin/packcomponents.xslt \
+ $(MISC)/$(TARGET)/generic.components.input
+
+$(MISC)/$(TARGET)/generic.components.input :
+ $(MKDIRHIER) $(@:d)
+ echo '<list>' \
+ '$(my_generic_components:^"<filename>":+".component</filename>")' \
+ '</list>' > $@
+
+$(MISC)/$(TARGET)/passive_native.component : \
+ $(SOLARENV)/bin/createcomponent.xslt passive_native.component
+ $(MKDIRHIER) $(@:d)
+ $(XSLTPROC) --nonet --stringparam uri \
+ '$(COMPONENTPREFIX_EXTENSION)$(SHL1TARGETN:f)' -o $@ \
+ $(SOLARENV)/bin/createcomponent.xslt passive_native.component
+
+$(MISC)/$(TARGET)/passive_java.component : \
+ $(SOLARENV)/bin/createcomponent.xslt passive_java.component
+ $(MKDIRHIER) $(@:d)
+ $(XSLTPROC) --nonet --stringparam uri \
+ '$(COMPONENTPREFIX_EXTENSION)passive_java.jar' -o $@ \
+ $(SOLARENV)/bin/createcomponent.xslt passive_java.component
+
+$(MISC)/$(TARGET)/passive_python.component : \
+ $(SOLARENV)/bin/createcomponent.xslt passive_python.component
+ $(MKDIRHIER) $(@:d)
+ $(XSLTPROC) --nonet --stringparam uri \
+ '$(COMPONENTPREFIX_EXTENSION)passive_python.py' -o $@ \
+ $(SOLARENV)/bin/createcomponent.xslt passive_python.component
+
+$(MISC)/$(TARGET)/passive_java.jar : MANIFEST.MF $(JAVATARGET)
+ $(MKDIRHIER) $(@:d)
+ $(RM) $@
+ $(RM) -r $(MISC)/$(TARGET)/passive_java.jar-zip
+ $(MKDIR) $(MISC)/$(TARGET)/passive_java.jar-zip
+ $(MKDIRHIER) $(MISC)/$(TARGET)/passive_java.jar-zip/META-INF \
+ $(MISC)/$(TARGET)/passive_java.jar-zip/$(PACKAGE)
+ $(COPY) MANIFEST.MF $(MISC)/$(TARGET)/passive_java.jar-zip/META-INF/
+ $(COPY) $(foreach,i,$(JAVAFILES:b) $(CLASSDIR)/$(PACKAGE)/$i.class) \
+ $(MISC)/$(TARGET)/passive_java.jar-zip/$(PACKAGE)/
+ cd $(MISC)/$(TARGET)/passive_java.jar-zip && zip ../passive_java.jar \
+ META-INF/MANIFEST.MF $(foreach,i,$(JAVAFILES:b) $(PACKAGE)/$i.class)
+
+.ENDIF
diff --git a/desktop/test/deployment/passive/manifest.xml b/desktop/test/deployment/passive/manifest.xml
new file mode 100755
index 0000000000..5b8ac8419b
--- /dev/null
+++ b/desktop/test/deployment/passive/manifest.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<m:manifest xmlns:m="http://openoffice.org/2001/manifest">
+ <m:file-entry m:media-type="application/vnd.sun.star.configuration-data"
+ m:full-path="Addons.xcu"/>
+ <m:file-entry m:media-type="application/vnd.sun.star.configuration-data"
+ m:full-path="ProtocolHandler.xcu"/>
+ <m:file-entry
+ m:media-type="application/vnd.sun.star.uno-components;platform=@PLATFORM@"
+ m:full-path="platform.components"/>
+ <m:file-entry
+ m:media-type="application/vnd.sun.star.uno-components"
+ m:full-path="generic.components"/>
+</m:manifest>
diff --git a/desktop/test/deployment/passive/passive_java.component b/desktop/test/deployment/passive/passive_java.component
new file mode 100755
index 0000000000..74be57177d
--- /dev/null
+++ b/desktop/test/deployment/passive/passive_java.component
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<component loader="com.sun.star.loader.Java2"
+ xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.comp.test.deployment.passive_java">
+ <service name="com.sun.star.test.deployment.passive_java"/>
+ </implementation>
+ <implementation
+ name="com.sun.star.comp.test.deployment.passive_java_singleton">
+ <singleton name="com.sun.star.test.deployment.passive_java_singleton"/>
+ </implementation>
+</component>
diff --git a/desktop/test/deployment/passive/passive_native.component b/desktop/test/deployment/passive/passive_native.component
new file mode 100755
index 0000000000..c14fd7ff00
--- /dev/null
+++ b/desktop/test/deployment/passive/passive_native.component
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<component loader="com.sun.star.loader.SharedLibrary"
+ xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.comp.test.deployment.passive_native">
+ <service name="com.sun.star.test.deployment.passive_native"/>
+ </implementation>
+ <implementation
+ name="com.sun.star.comp.test.deployment.passive_native_singleton">
+ <singleton name="com.sun.star.test.deployment.passive_native_singleton"/>
+ </implementation>
+</component>
diff --git a/desktop/test/deployment/passive/passive_native.cxx b/desktop/test/deployment/passive/passive_native.cxx
new file mode 100644
index 0000000000..39101257ad
--- /dev/null
+++ b/desktop/test/deployment/passive/passive_native.cxx
@@ -0,0 +1,289 @@
+/*************************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+************************************************************************/
+
+#include "precompiled_desktop.hxx"
+#include "sal/config.h"
+
+#include "boost/noncopyable.hpp"
+#include "com/sun/star/awt/MessageBoxButtons.hpp"
+#include "com/sun/star/awt/Rectangle.hpp"
+#include "com/sun/star/awt/XMessageBox.hpp"
+#include "com/sun/star/awt/XMessageBoxFactory.hpp"
+#include "com/sun/star/awt/XWindowPeer.hpp"
+#include "com/sun/star/beans/PropertyValue.hpp"
+#include "com/sun/star/frame/DispatchDescriptor.hpp"
+#include "com/sun/star/frame/XDesktop.hpp"
+#include "com/sun/star/frame/XDispatch.hpp"
+#include "com/sun/star/frame/XDispatchProvider.hpp"
+#include "com/sun/star/frame/XFrame.hpp"
+#include "com/sun/star/frame/XStatusListener.hpp"
+#include "com/sun/star/lang/XComponent.hpp"
+#include "com/sun/star/lang/XMultiComponentFactory.hpp"
+#include "com/sun/star/lang/XServiceInfo.hpp"
+#include "com/sun/star/uno/DeploymentException.hpp"
+#include "com/sun/star/uno/Exception.hpp"
+#include "com/sun/star/uno/Reference.hxx"
+#include "com/sun/star/uno/RuntimeException.hpp"
+#include "com/sun/star/uno/Sequence.hxx"
+#include "com/sun/star/uno/XComponentContext.hpp"
+#include "com/sun/star/uno/XInterface.hpp"
+#include "com/sun/star/util/URL.hpp"
+#include "cppuhelper/factory.hxx"
+#include "cppuhelper/implbase2.hxx"
+#include "cppuhelper/implementationentry.hxx"
+#include "cppuhelper/weak.hxx"
+#include "osl/diagnose.h"
+#include "rtl/ustring.h"
+#include "rtl/ustring.hxx"
+#include "sal/types.h"
+#include "uno/lbnames.h"
+
+namespace {
+
+namespace css = com::sun::star;
+
+class Provider:
+ public cppu::WeakImplHelper2<
+ css::lang::XServiceInfo, css::frame::XDispatchProvider >,
+ private boost::noncopyable
+{
+public:
+ static css::uno::Reference< css::uno::XInterface > SAL_CALL static_create(
+ css::uno::Reference< css::uno::XComponentContext > const & xContext)
+ SAL_THROW((css::uno::Exception))
+ { return static_cast< cppu::OWeakObject * >(new Provider(xContext)); }
+
+ static rtl::OUString SAL_CALL static_getImplementationName();
+
+ static css::uno::Sequence< rtl::OUString > SAL_CALL
+ static_getSupportedServiceNames();
+
+private:
+ Provider(
+ css::uno::Reference< css::uno::XComponentContext > const & context):
+ context_(context) { OSL_ASSERT(context.is()); }
+
+ virtual ~Provider() {}
+
+ virtual rtl::OUString SAL_CALL getImplementationName()
+ throw (css::uno::RuntimeException)
+ { return static_getImplementationName(); }
+
+ virtual sal_Bool SAL_CALL supportsService(rtl::OUString const & ServiceName)
+ throw (css::uno::RuntimeException)
+ { return ServiceName == getSupportedServiceNames()[0]; } //TODO
+
+ virtual css::uno::Sequence< rtl::OUString > SAL_CALL
+ getSupportedServiceNames() throw (css::uno::RuntimeException)
+ { return static_getSupportedServiceNames(); }
+
+ virtual css::uno::Reference< css::frame::XDispatch > SAL_CALL queryDispatch(
+ css::util::URL const &, rtl::OUString const &, sal_Int32)
+ throw (css::uno::RuntimeException);
+
+ virtual css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > >
+ SAL_CALL queryDispatches(
+ css::uno::Sequence< css::frame::DispatchDescriptor > const & Requests)
+ throw (css::uno::RuntimeException);
+
+ css::uno::Reference< css::uno::XComponentContext > context_;
+};
+
+rtl::OUString Provider::static_getImplementationName() {
+ return rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.comp.test.deployment.passive_native"));
+}
+
+css::uno::Sequence< rtl::OUString > Provider::static_getSupportedServiceNames()
+{
+ rtl::OUString name(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.test.deployment.passive_native"));
+ return css::uno::Sequence< rtl::OUString >(&name, 1);
+}
+
+css::uno::Reference< css::frame::XDispatch > Provider::queryDispatch(
+ css::util::URL const &, rtl::OUString const &, sal_Int32)
+ throw (css::uno::RuntimeException)
+{
+ css::uno::Reference< css::frame::XDispatch > dispatch;
+ if (!(context_->getValueByName(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "/singletons/com.sun.star.test.deployment."
+ "passive_native_singleton"))) >>=
+ dispatch) ||
+ !dispatch.is())
+ {
+ throw css::uno::DeploymentException(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "component context fails to supply singleton"
+ " com.sun.star.test.deployment.passive_native_singleton of"
+ " type com.sun.star.frame.XDispatch")),
+ context_);
+ }
+ return dispatch;
+}
+
+css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > >
+Provider::queryDispatches(
+ css::uno::Sequence< css::frame::DispatchDescriptor > const & Requests)
+ throw (css::uno::RuntimeException)
+{
+ css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > > s(
+ Requests.getLength());
+ for (sal_Int32 i = 0; i < s.getLength(); ++i) {
+ s[i] = queryDispatch(
+ Requests[i].FeatureURL, Requests[i].FrameName,
+ Requests[i].SearchFlags);
+ }
+ return s;
+}
+
+class Dispatch:
+ public cppu::WeakImplHelper2<
+ css::lang::XServiceInfo, css::frame::XDispatch >,
+ private boost::noncopyable
+{
+public:
+ static css::uno::Reference< css::uno::XInterface > SAL_CALL static_create(
+ css::uno::Reference< css::uno::XComponentContext > const & xContext)
+ SAL_THROW((css::uno::Exception))
+ { return static_cast< cppu::OWeakObject * >(new Dispatch(xContext)); }
+
+ static rtl::OUString SAL_CALL static_getImplementationName();
+
+ static css::uno::Sequence< rtl::OUString > SAL_CALL
+ static_getSupportedServiceNames()
+ { return css::uno::Sequence< rtl::OUString >(); }
+
+private:
+ Dispatch(
+ css::uno::Reference< css::uno::XComponentContext > const & context):
+ context_(context) { OSL_ASSERT(context.is()); }
+
+ virtual ~Dispatch() {}
+
+ virtual rtl::OUString SAL_CALL getImplementationName()
+ throw (css::uno::RuntimeException)
+ { return static_getImplementationName(); }
+
+ virtual sal_Bool SAL_CALL supportsService(rtl::OUString const &)
+ throw (css::uno::RuntimeException)
+ { return false; } //TODO
+
+ virtual css::uno::Sequence< rtl::OUString > SAL_CALL
+ getSupportedServiceNames() throw (css::uno::RuntimeException)
+ { return static_getSupportedServiceNames(); }
+
+ virtual void SAL_CALL dispatch(
+ css::util::URL const &,
+ css::uno::Sequence< css::beans::PropertyValue > const &)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL addStatusListener(
+ css::uno::Reference< css::frame::XStatusListener > const &,
+ css::util::URL const &)
+ throw (css::uno::RuntimeException)
+ {}
+
+ virtual void SAL_CALL removeStatusListener(
+ css::uno::Reference< css::frame::XStatusListener > const &,
+ css::util::URL const &)
+ throw (css::uno::RuntimeException)
+ {}
+
+ css::uno::Reference< css::uno::XComponentContext > context_;
+};
+
+rtl::OUString Dispatch::static_getImplementationName() {
+ return rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.comp.test.deployment.passive_native_singleton"));
+}
+
+void Dispatch::dispatch(
+ css::util::URL const &,
+ css::uno::Sequence< css::beans::PropertyValue > const &)
+ throw (css::uno::RuntimeException)
+{
+ css::uno::Reference< css::lang::XMultiComponentFactory > smgr(
+ context_->getServiceManager(), css::uno::UNO_SET_THROW);
+ css::uno::Reference< css::awt::XMessageBox > box(
+ css::uno::Reference< css::awt::XMessageBoxFactory >(
+ smgr->createInstanceWithContext(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.awt.Toolkit")), context_),
+ css::uno::UNO_QUERY_THROW)->createMessageBox(
+ css::uno::Reference< css::awt::XWindowPeer >(
+ css::uno::Reference< css::frame::XFrame >(
+ css::uno::Reference< css::frame::XDesktop >(
+ smgr->createInstanceWithContext(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.frame.Desktop")),
+ context_),
+ css::uno::UNO_QUERY_THROW)->getCurrentFrame(),
+ css::uno::UNO_SET_THROW)->getComponentWindow(),
+ css::uno::UNO_QUERY_THROW),
+ css::awt::Rectangle(),
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("infobox")),
+ css::awt::MessageBoxButtons::BUTTONS_OK,
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("passive")),
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("native"))),
+ css::uno::UNO_SET_THROW);
+ box->execute();
+ css::uno::Reference< css::lang::XComponent >(
+ box, css::uno::UNO_QUERY_THROW)->dispose();
+}
+
+static cppu::ImplementationEntry const services[] = {
+ { &Provider::static_create, &Provider::static_getImplementationName,
+ &Provider::static_getSupportedServiceNames,
+ &cppu::createSingleComponentFactory, 0, 0 },
+ { &Dispatch::static_create, &Dispatch::static_getImplementationName,
+ &Dispatch::static_getSupportedServiceNames,
+ &cppu::createSingleComponentFactory, 0, 0 },
+ { 0, 0, 0, 0, 0, 0 }
+};
+
+}
+
+extern "C" void * SAL_CALL component_getFactory(
+ char const * pImplName, void * pServiceManager, void * pRegistryKey)
+{
+ return cppu::component_getFactoryHelper(
+ pImplName, pServiceManager, pRegistryKey, services);
+}
+
+extern "C" void SAL_CALL component_getImplementationEnvironment(
+ char const ** ppEnvTypeName, uno_Environment **)
+{
+ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
+}
diff --git a/desktop/test/deployment/passive/passive_python.component b/desktop/test/deployment/passive/passive_python.component
new file mode 100755
index 0000000000..ea7a1992b5
--- /dev/null
+++ b/desktop/test/deployment/passive/passive_python.component
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<component loader="com.sun.star.loader.Python"
+ xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.comp.test.deployment.passive_python">
+ <service name="com.sun.star.test.deployment.passive_python"/>
+ </implementation>
+ <implementation
+ name="com.sun.star.comp.test.deployment.passive_python_singleton">
+ <singleton name="com.sun.star.test.deployment.passive_python_singleton"/>
+ </implementation>
+</component>
diff --git a/desktop/test/deployment/passive/passive_python.py b/desktop/test/deployment/passive/passive_python.py
new file mode 100755
index 0000000000..dda68cccdb
--- /dev/null
+++ b/desktop/test/deployment/passive/passive_python.py
@@ -0,0 +1,101 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org 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 Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#***********************************************************************/
+
+import uno
+import unohelper
+
+from com.sun.star.awt import Rectangle
+from com.sun.star.awt.MessageBoxButtons import BUTTONS_OK
+from com.sun.star.frame import XDispatch, XDispatchProvider
+from com.sun.star.lang import XServiceInfo
+
+class Provider(unohelper.Base, XServiceInfo, XDispatchProvider):
+ implementationName = "com.sun.star.comp.test.deployment.passive_python"
+
+ serviceNames = ("com.sun.star.test.deployment.passive_python",)
+
+ def __init__(self, context):
+ self.context = context
+
+ def getImplementationName(self):
+ return self.implementationName
+
+ def supportsService(self, ServiceName):
+ return ServiceName in self.serviceNames
+
+ def getSupportedServiceNames(self):
+ return self.serviceNames
+
+ def queryDispatch(self, URL, TargetFrame, SearchFlags):
+ return self.context.getValueByName( \
+ "/singletons/com.sun.star.test.deployment.passive_python_singleton")
+
+ def queryDispatches(self, Requests):
+ tuple( \
+ self.queryDispatch(i.FeatureURL, i.FrameName, i.SearchFlags) \
+ for i in Requests)
+
+class Dispatch(unohelper.Base, XServiceInfo, XDispatch):
+ implementationName = \
+ "com.sun.star.comp.test.deployment.passive_python_singleton"
+
+ serviceNames = ()
+
+ def __init__(self, context):
+ self.context = context
+
+ def getImplementationName(self):
+ return self.implementationName
+
+ def supportsService(self, ServiceName):
+ return ServiceName in self.serviceNames
+
+ def getSupportedServiceNames(self):
+ return self.serviceNames
+
+ def dispatch(self, URL, Arguments):
+ smgr = self.context.getServiceManager()
+ box = smgr.createInstanceWithContext( \
+ "com.sun.star.awt.Toolkit", self.context).createMessageBox( \
+ smgr.createInstanceWithContext( \
+ "com.sun.star.frame.Desktop", self.context). \
+ getCurrentFrame().getComponentWindow(), \
+ Rectangle(), "infobox", BUTTONS_OK, "passive", "python")
+ box.execute();
+ box.dispose();
+
+ def addStatusListener(self, Control, URL):
+ pass
+
+ def removeStatusListener(self, Control, URL):
+ pass
+
+g_ImplementationHelper = unohelper.ImplementationHelper()
+g_ImplementationHelper.addImplementation( \
+ Provider, Provider.implementationName, Provider.serviceNames)
+g_ImplementationHelper.addImplementation( \
+ Dispatch, Dispatch.implementationName, Dispatch.serviceNames)
diff --git a/desktop/test/deployment/simple_license/suppress_license.oxt b/desktop/test/deployment/simple_license/suppress_license.oxt
index 2bacd6aa37..2bacd6aa37 100755..100644
--- a/desktop/test/deployment/simple_license/suppress_license.oxt
+++ b/desktop/test/deployment/simple_license/suppress_license.oxt
Binary files differ
diff --git a/desktop/test/deployment/update/changing_display_name/readme.txt b/desktop/test/deployment/update/changing_display_name/readme.txt
index 905f0be9a9..905f0be9a9 100644..100755
--- a/desktop/test/deployment/update/changing_display_name/readme.txt
+++ b/desktop/test/deployment/update/changing_display_name/readme.txt
diff --git a/desktop/test/deployment/update/changing_display_name/update1/change1.update.xml b/desktop/test/deployment/update/changing_display_name/update1/change1.update.xml
index 29aee72fa1..29aee72fa1 100644..100755
--- a/desktop/test/deployment/update/changing_display_name/update1/change1.update.xml
+++ b/desktop/test/deployment/update/changing_display_name/update1/change1.update.xml
diff --git a/desktop/test/deployment/update/changing_display_name/update2/change1.update.xml b/desktop/test/deployment/update/changing_display_name/update2/change1.update.xml
index 1e2ee11e9f..1e2ee11e9f 100644..100755
--- a/desktop/test/deployment/update/changing_display_name/update2/change1.update.xml
+++ b/desktop/test/deployment/update/changing_display_name/update2/change1.update.xml
diff --git a/desktop/test/deployment/update/default_url/readme.txt b/desktop/test/deployment/update/default_url/readme.txt
index 4ae7936bfc..4ae7936bfc 100644..100755
--- a/desktop/test/deployment/update/default_url/readme.txt
+++ b/desktop/test/deployment/update/default_url/readme.txt
diff --git a/desktop/test/deployment/update/default_url/update/default1.update.xml b/desktop/test/deployment/update/default_url/update/default1.update.xml
index 0351d23e68..0351d23e68 100644..100755
--- a/desktop/test/deployment/update/default_url/update/default1.update.xml
+++ b/desktop/test/deployment/update/default_url/update/default1.update.xml
diff --git a/desktop/test/deployment/update/default_url/update/default2.update.xml b/desktop/test/deployment/update/default_url/update/default2.update.xml
index 8bf00b2e22..8bf00b2e22 100644..100755
--- a/desktop/test/deployment/update/default_url/update/default2.update.xml
+++ b/desktop/test/deployment/update/default_url/update/default2.update.xml
diff --git a/desktop/test/deployment/update/default_url/update/feed1.xml b/desktop/test/deployment/update/default_url/update/feed1.xml
index b504b7b4b0..b504b7b4b0 100644..100755
--- a/desktop/test/deployment/update/default_url/update/feed1.xml
+++ b/desktop/test/deployment/update/default_url/update/feed1.xml
diff --git a/desktop/test/deployment/update/defect/readme.txt b/desktop/test/deployment/update/defect/readme.txt
index 5e8322f5cf..5e8322f5cf 100644..100755
--- a/desktop/test/deployment/update/defect/readme.txt
+++ b/desktop/test/deployment/update/defect/readme.txt
diff --git a/desktop/test/deployment/update/defect/update/fail1.update.xml b/desktop/test/deployment/update/defect/update/fail1.update.xml
index 69cb73c4f1..69cb73c4f1 100644..100755
--- a/desktop/test/deployment/update/defect/update/fail1.update.xml
+++ b/desktop/test/deployment/update/defect/update/fail1.update.xml
diff --git a/desktop/test/deployment/update/defect/update/fail2.update.xml b/desktop/test/deployment/update/defect/update/fail2.update.xml
index 8b235acd9b..8b235acd9b 100644..100755
--- a/desktop/test/deployment/update/defect/update/fail2.update.xml
+++ b/desktop/test/deployment/update/defect/update/fail2.update.xml
diff --git a/desktop/test/deployment/update/defect/update/fail3.update.xml b/desktop/test/deployment/update/defect/update/fail3.update.xml
index 60a2999210..60a2999210 100644..100755
--- a/desktop/test/deployment/update/defect/update/fail3.update.xml
+++ b/desktop/test/deployment/update/defect/update/fail3.update.xml
diff --git a/desktop/test/deployment/update/defect/update/fail4.update.xml b/desktop/test/deployment/update/defect/update/fail4.update.xml
index 81775a7257..81775a7257 100644..100755
--- a/desktop/test/deployment/update/defect/update/fail4.update.xml
+++ b/desktop/test/deployment/update/defect/update/fail4.update.xml
diff --git a/desktop/test/deployment/update/defect/update/info1.update.xml b/desktop/test/deployment/update/defect/update/info1.update.xml
index e69de29bb2..e69de29bb2 100644..100755
--- a/desktop/test/deployment/update/defect/update/info1.update.xml
+++ b/desktop/test/deployment/update/defect/update/info1.update.xml
diff --git a/desktop/test/deployment/update/defect/update/info2.update.xml b/desktop/test/deployment/update/defect/update/info2.update.xml
index 1446608022..1446608022 100644..100755
--- a/desktop/test/deployment/update/defect/update/info2.update.xml
+++ b/desktop/test/deployment/update/defect/update/info2.update.xml
diff --git a/desktop/test/deployment/update/defect/update/info3.update.xml b/desktop/test/deployment/update/defect/update/info3.update.xml
index 35106ea29a..35106ea29a 100644..100755
--- a/desktop/test/deployment/update/defect/update/info3.update.xml
+++ b/desktop/test/deployment/update/defect/update/info3.update.xml
diff --git a/desktop/test/deployment/update/dependencies/publisher_en.html b/desktop/test/deployment/update/dependencies/publisher_en.html
index 37dbc2b9d6..37dbc2b9d6 100644..100755
--- a/desktop/test/deployment/update/dependencies/publisher_en.html
+++ b/desktop/test/deployment/update/dependencies/publisher_en.html
diff --git a/desktop/test/deployment/update/dependencies/readme.txt b/desktop/test/deployment/update/dependencies/readme.txt
index 3c71da2488..3c71da2488 100644..100755
--- a/desktop/test/deployment/update/dependencies/readme.txt
+++ b/desktop/test/deployment/update/dependencies/readme.txt
diff --git a/desktop/test/deployment/update/dependencies/release-notes_en.html b/desktop/test/deployment/update/dependencies/release-notes_en.html
index 0971f78d14..0971f78d14 100644..100755
--- a/desktop/test/deployment/update/dependencies/release-notes_en.html
+++ b/desktop/test/deployment/update/dependencies/release-notes_en.html
diff --git a/desktop/test/deployment/update/dependencies/update/update-dependencies.update.xml b/desktop/test/deployment/update/dependencies/update/update-dependencies.update.xml
index 51a631a8eb..51a631a8eb 100644..100755
--- a/desktop/test/deployment/update/dependencies/update/update-dependencies.update.xml
+++ b/desktop/test/deployment/update/dependencies/update/update-dependencies.update.xml
diff --git a/desktop/test/deployment/update/license/readme.txt b/desktop/test/deployment/update/license/readme.txt
index 03123d2c58..03123d2c58 100644..100755
--- a/desktop/test/deployment/update/license/readme.txt
+++ b/desktop/test/deployment/update/license/readme.txt
diff --git a/desktop/test/deployment/update/license/update/lic1.update.xml b/desktop/test/deployment/update/license/update/lic1.update.xml
index 6c60375905..6c60375905 100644..100755
--- a/desktop/test/deployment/update/license/update/lic1.update.xml
+++ b/desktop/test/deployment/update/license/update/lic1.update.xml
diff --git a/desktop/test/deployment/update/license/update/lic2.update.xml b/desktop/test/deployment/update/license/update/lic2.update.xml
index 6e284e9def..6e284e9def 100644..100755
--- a/desktop/test/deployment/update/license/update/lic2.update.xml
+++ b/desktop/test/deployment/update/license/update/lic2.update.xml
diff --git a/desktop/test/deployment/update/license/update/lic3.update.xml b/desktop/test/deployment/update/license/update/lic3.update.xml
index b6f55bca20..b6f55bca20 100644..100755
--- a/desktop/test/deployment/update/license/update/lic3.update.xml
+++ b/desktop/test/deployment/update/license/update/lic3.update.xml
diff --git a/desktop/test/deployment/update/platform/readme.txt b/desktop/test/deployment/update/platform/readme.txt
index 2ab102a27d..2ab102a27d 100644..100755
--- a/desktop/test/deployment/update/platform/readme.txt
+++ b/desktop/test/deployment/update/platform/readme.txt
diff --git a/desktop/test/deployment/update/publisher/publisher_de-DE-altmark.html b/desktop/test/deployment/update/publisher/publisher_de-DE-altmark.html
index c770b914ad..c770b914ad 100644..100755
--- a/desktop/test/deployment/update/publisher/publisher_de-DE-altmark.html
+++ b/desktop/test/deployment/update/publisher/publisher_de-DE-altmark.html
diff --git a/desktop/test/deployment/update/publisher/publisher_de-DE.html b/desktop/test/deployment/update/publisher/publisher_de-DE.html
index b06ed7088f..b06ed7088f 100644..100755
--- a/desktop/test/deployment/update/publisher/publisher_de-DE.html
+++ b/desktop/test/deployment/update/publisher/publisher_de-DE.html
diff --git a/desktop/test/deployment/update/publisher/publisher_de.html b/desktop/test/deployment/update/publisher/publisher_de.html
index 4cba9f423d..4cba9f423d 100644..100755
--- a/desktop/test/deployment/update/publisher/publisher_de.html
+++ b/desktop/test/deployment/update/publisher/publisher_de.html
diff --git a/desktop/test/deployment/update/publisher/publisher_en-GB.html b/desktop/test/deployment/update/publisher/publisher_en-GB.html
index c73cf6219b..c73cf6219b 100644..100755
--- a/desktop/test/deployment/update/publisher/publisher_en-GB.html
+++ b/desktop/test/deployment/update/publisher/publisher_en-GB.html
diff --git a/desktop/test/deployment/update/publisher/publisher_en-US-region1.html b/desktop/test/deployment/update/publisher/publisher_en-US-region1.html
index 68beac7248..68beac7248 100644..100755
--- a/desktop/test/deployment/update/publisher/publisher_en-US-region1.html
+++ b/desktop/test/deployment/update/publisher/publisher_en-US-region1.html
diff --git a/desktop/test/deployment/update/publisher/publisher_en-US-region2.html b/desktop/test/deployment/update/publisher/publisher_en-US-region2.html
index 501adb6596..501adb6596 100644..100755
--- a/desktop/test/deployment/update/publisher/publisher_en-US-region2.html
+++ b/desktop/test/deployment/update/publisher/publisher_en-US-region2.html
diff --git a/desktop/test/deployment/update/publisher/publisher_en-US.html b/desktop/test/deployment/update/publisher/publisher_en-US.html
index fd25751503..fd25751503 100644..100755
--- a/desktop/test/deployment/update/publisher/publisher_en-US.html
+++ b/desktop/test/deployment/update/publisher/publisher_en-US.html
diff --git a/desktop/test/deployment/update/publisher/publisher_en-region3.html b/desktop/test/deployment/update/publisher/publisher_en-region3.html
index b9fdc9d657..b9fdc9d657 100644..100755
--- a/desktop/test/deployment/update/publisher/publisher_en-region3.html
+++ b/desktop/test/deployment/update/publisher/publisher_en-region3.html
diff --git a/desktop/test/deployment/update/publisher/publisher_en.html b/desktop/test/deployment/update/publisher/publisher_en.html
index 416ab81243..416ab81243 100644..100755
--- a/desktop/test/deployment/update/publisher/publisher_en.html
+++ b/desktop/test/deployment/update/publisher/publisher_en.html
diff --git a/desktop/test/deployment/update/publisher/readme.txt b/desktop/test/deployment/update/publisher/readme.txt
index 1a659d8e87..1a659d8e87 100644..100755
--- a/desktop/test/deployment/update/publisher/readme.txt
+++ b/desktop/test/deployment/update/publisher/readme.txt
diff --git a/desktop/test/deployment/update/publisher/release-notes_de-DE-altmark.html b/desktop/test/deployment/update/publisher/release-notes_de-DE-altmark.html
index 81b38a9f5b..81b38a9f5b 100644..100755
--- a/desktop/test/deployment/update/publisher/release-notes_de-DE-altmark.html
+++ b/desktop/test/deployment/update/publisher/release-notes_de-DE-altmark.html
diff --git a/desktop/test/deployment/update/publisher/release-notes_de-DE.html b/desktop/test/deployment/update/publisher/release-notes_de-DE.html
index f8f0121f02..f8f0121f02 100644..100755
--- a/desktop/test/deployment/update/publisher/release-notes_de-DE.html
+++ b/desktop/test/deployment/update/publisher/release-notes_de-DE.html
diff --git a/desktop/test/deployment/update/publisher/release-notes_de.html b/desktop/test/deployment/update/publisher/release-notes_de.html
index a9e1dc3647..a9e1dc3647 100644..100755
--- a/desktop/test/deployment/update/publisher/release-notes_de.html
+++ b/desktop/test/deployment/update/publisher/release-notes_de.html
diff --git a/desktop/test/deployment/update/publisher/release-notes_en-GB.html b/desktop/test/deployment/update/publisher/release-notes_en-GB.html
index ca72ec1b9c..ca72ec1b9c 100644..100755
--- a/desktop/test/deployment/update/publisher/release-notes_en-GB.html
+++ b/desktop/test/deployment/update/publisher/release-notes_en-GB.html
diff --git a/desktop/test/deployment/update/publisher/release-notes_en-US-region1.html b/desktop/test/deployment/update/publisher/release-notes_en-US-region1.html
index 0e6f99ce4c..0e6f99ce4c 100644..100755
--- a/desktop/test/deployment/update/publisher/release-notes_en-US-region1.html
+++ b/desktop/test/deployment/update/publisher/release-notes_en-US-region1.html
diff --git a/desktop/test/deployment/update/publisher/release-notes_en-US-region2.html b/desktop/test/deployment/update/publisher/release-notes_en-US-region2.html
index 597bca0ebe..597bca0ebe 100644..100755
--- a/desktop/test/deployment/update/publisher/release-notes_en-US-region2.html
+++ b/desktop/test/deployment/update/publisher/release-notes_en-US-region2.html
diff --git a/desktop/test/deployment/update/publisher/release-notes_en-US.html b/desktop/test/deployment/update/publisher/release-notes_en-US.html
index 7f9d73e338..7f9d73e338 100644..100755
--- a/desktop/test/deployment/update/publisher/release-notes_en-US.html
+++ b/desktop/test/deployment/update/publisher/release-notes_en-US.html
diff --git a/desktop/test/deployment/update/publisher/release-notes_en-region3.html b/desktop/test/deployment/update/publisher/release-notes_en-region3.html
index 5d62c7bcb4..5d62c7bcb4 100644..100755
--- a/desktop/test/deployment/update/publisher/release-notes_en-region3.html
+++ b/desktop/test/deployment/update/publisher/release-notes_en-region3.html
diff --git a/desktop/test/deployment/update/publisher/release-notes_en.html b/desktop/test/deployment/update/publisher/release-notes_en.html
index d02e4f3330..d02e4f3330 100644..100755
--- a/desktop/test/deployment/update/publisher/release-notes_en.html
+++ b/desktop/test/deployment/update/publisher/release-notes_en.html
diff --git a/desktop/test/deployment/update/publisher/update/pub1.update.xml b/desktop/test/deployment/update/publisher/update/pub1.update.xml
index 65ca88e5b7..65ca88e5b7 100644..100755
--- a/desktop/test/deployment/update/publisher/update/pub1.update.xml
+++ b/desktop/test/deployment/update/publisher/update/pub1.update.xml
diff --git a/desktop/test/deployment/update/publisher/update/pub2.update.xml b/desktop/test/deployment/update/publisher/update/pub2.update.xml
index 35415fc87d..35415fc87d 100644..100755
--- a/desktop/test/deployment/update/publisher/update/pub2.update.xml
+++ b/desktop/test/deployment/update/publisher/update/pub2.update.xml
diff --git a/desktop/test/deployment/update/publisher/update/pub3.update.xml b/desktop/test/deployment/update/publisher/update/pub3.update.xml
index f15a4c525a..f15a4c525a 100644..100755
--- a/desktop/test/deployment/update/publisher/update/pub3.update.xml
+++ b/desktop/test/deployment/update/publisher/update/pub3.update.xml
diff --git a/desktop/test/deployment/update/publisher/update/pub4.update.xml b/desktop/test/deployment/update/publisher/update/pub4.update.xml
index 9c46b6eb3d..9c46b6eb3d 100644..100755
--- a/desktop/test/deployment/update/publisher/update/pub4.update.xml
+++ b/desktop/test/deployment/update/publisher/update/pub4.update.xml
diff --git a/desktop/test/deployment/update/publisher/update/pub5.update.xml b/desktop/test/deployment/update/publisher/update/pub5.update.xml
index dd47e95403..dd47e95403 100644..100755
--- a/desktop/test/deployment/update/publisher/update/pub5.update.xml
+++ b/desktop/test/deployment/update/publisher/update/pub5.update.xml
diff --git a/desktop/test/deployment/update/publisher/update/pub6.update.xml b/desktop/test/deployment/update/publisher/update/pub6.update.xml
index 5d4adc7a16..5d4adc7a16 100644..100755
--- a/desktop/test/deployment/update/publisher/update/pub6.update.xml
+++ b/desktop/test/deployment/update/publisher/update/pub6.update.xml
diff --git a/desktop/test/deployment/update/publisher/update/pub7.update.xml b/desktop/test/deployment/update/publisher/update/pub7.update.xml
index cf61bc092d..cf61bc092d 100644..100755
--- a/desktop/test/deployment/update/publisher/update/pub7.update.xml
+++ b/desktop/test/deployment/update/publisher/update/pub7.update.xml
diff --git a/desktop/test/deployment/update/readme.txt b/desktop/test/deployment/update/readme.txt
index b3fd9126ca..b3fd9126ca 100644..100755
--- a/desktop/test/deployment/update/readme.txt
+++ b/desktop/test/deployment/update/readme.txt
diff --git a/desktop/test/deployment/update/simple/readme.txt b/desktop/test/deployment/update/simple/readme.txt
index 34ad6bedab..34ad6bedab 100644..100755
--- a/desktop/test/deployment/update/simple/readme.txt
+++ b/desktop/test/deployment/update/simple/readme.txt
diff --git a/desktop/test/deployment/update/simple/update/plain1.update.xml b/desktop/test/deployment/update/simple/update/plain1.update.xml
index 5ee57aacb8..5ee57aacb8 100644..100755
--- a/desktop/test/deployment/update/simple/update/plain1.update.xml
+++ b/desktop/test/deployment/update/simple/update/plain1.update.xml
diff --git a/desktop/test/deployment/update/simple/update/plain2.update.xml b/desktop/test/deployment/update/simple/update/plain2.update.xml
index e572908df6..e572908df6 100644..100755
--- a/desktop/test/deployment/update/simple/update/plain2.update.xml
+++ b/desktop/test/deployment/update/simple/update/plain2.update.xml
diff --git a/desktop/test/deployment/update/simple/update/plain3.update.xml b/desktop/test/deployment/update/simple/update/plain3.update.xml
index 038bebef02..038bebef02 100644..100755
--- a/desktop/test/deployment/update/simple/update/plain3.update.xml
+++ b/desktop/test/deployment/update/simple/update/plain3.update.xml
diff --git a/desktop/test/deployment/update/updatefeed/update/feed1.update.xml b/desktop/test/deployment/update/updatefeed/update/feed1.update.xml
index ebf421dbfd..ebf421dbfd 100644..100755
--- a/desktop/test/deployment/update/updatefeed/update/feed1.update.xml
+++ b/desktop/test/deployment/update/updatefeed/update/feed1.update.xml
diff --git a/desktop/test/deployment/update/updatefeed/update/feed1.xml b/desktop/test/deployment/update/updatefeed/update/feed1.xml
index 1c31851d8c..1c31851d8c 100644..100755
--- a/desktop/test/deployment/update/updatefeed/update/feed1.xml
+++ b/desktop/test/deployment/update/updatefeed/update/feed1.xml
diff --git a/desktop/test/deployment/update/updatefeed/update/feed2.update.xml b/desktop/test/deployment/update/updatefeed/update/feed2.update.xml
index 7a554b30c4..7a554b30c4 100644..100755
--- a/desktop/test/deployment/update/updatefeed/update/feed2.update.xml
+++ b/desktop/test/deployment/update/updatefeed/update/feed2.update.xml
diff --git a/desktop/test/deployment/update/updateinfocreation/build/TestExtension.idl b/desktop/test/deployment/update/updateinfocreation/build/TestExtension.idl
index af7b3c507e..af7b3c507e 100755..100644
--- a/desktop/test/deployment/update/updateinfocreation/build/TestExtension.idl
+++ b/desktop/test/deployment/update/updateinfocreation/build/TestExtension.idl
diff --git a/desktop/test/deployment/update/updateinfocreation/build/description.xml b/desktop/test/deployment/update/updateinfocreation/build/description.xml
index a175c3232a..a175c3232a 100644..100755
--- a/desktop/test/deployment/update/updateinfocreation/build/description.xml
+++ b/desktop/test/deployment/update/updateinfocreation/build/description.xml
diff --git a/desktop/test/deployment/update/updateinfocreation/build/makefile.mk b/desktop/test/deployment/update/updateinfocreation/build/makefile.mk
index 6af3928279..b0479c942b 100755
--- a/desktop/test/deployment/update/updateinfocreation/build/makefile.mk
+++ b/desktop/test/deployment/update/updateinfocreation/build/makefile.mk
@@ -84,5 +84,8 @@ $(MISC)$/$(TARGET)_resort : manifest.xml $(JARTARGETN) $(MISC)$/$(ZIP1TARGET).cr
$(GNUCOPY) -u description.xml $(MISC)$/$(TARGET)$/description.xml
$(TOUCH) $@
+.IF "$(ZIP1TARGETN)"!=""
$(ZIP1TARGETN) : $(MISC)$/$(TARGET)_resort $(MISC)$/$(ZIP1TARGET).createdir
+.ENDIF # "$(ZIP1TARGETN)"!=""
+
diff --git a/desktop/test/deployment/update/updateinfocreation/build/manifest.xml b/desktop/test/deployment/update/updateinfocreation/build/manifest.xml
index 7e3e7947aa..fcedabf96b 100755
--- a/desktop/test/deployment/update/updateinfocreation/build/manifest.xml
+++ b/desktop/test/deployment/update/updateinfocreation/build/manifest.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<manifest:manifest>
+<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
<manifest:file-entry manifest:full-path="TestExtension.jar" manifest:media-type="application/vnd.sun.star.uno-component;type=Java"/>
<manifest:file-entry manifest:full-path="TestExtension.rdb" manifest:media-type="application/vnd.sun.star.uno-typelibrary;type=RDB"/>
-</manifest:manifest> \ No newline at end of file
+</manifest:manifest>
diff --git a/desktop/test/deployment/update/updateinfocreation/readme.txt b/desktop/test/deployment/update/updateinfocreation/readme.txt
index c4fc059053..c4fc059053 100644..100755
--- a/desktop/test/deployment/update/updateinfocreation/readme.txt
+++ b/desktop/test/deployment/update/updateinfocreation/readme.txt
diff --git a/desktop/test/deployment/update/website_update/readme.txt b/desktop/test/deployment/update/website_update/readme.txt
index 4ae5ddd918..4ae5ddd918 100644..100755
--- a/desktop/test/deployment/update/website_update/readme.txt
+++ b/desktop/test/deployment/update/website_update/readme.txt
diff --git a/desktop/test/deployment/update/website_update/update/web1.update.xml b/desktop/test/deployment/update/website_update/update/web1.update.xml
index 1355851073..1355851073 100644..100755
--- a/desktop/test/deployment/update/website_update/update/web1.update.xml
+++ b/desktop/test/deployment/update/website_update/update/web1.update.xml
diff --git a/desktop/test/deployment/update/website_update/update/web1_de-DE-altmark.html b/desktop/test/deployment/update/website_update/update/web1_de-DE-altmark.html
index ffed5a52e8..ffed5a52e8 100644..100755
--- a/desktop/test/deployment/update/website_update/update/web1_de-DE-altmark.html
+++ b/desktop/test/deployment/update/website_update/update/web1_de-DE-altmark.html
diff --git a/desktop/test/deployment/update/website_update/update/web1_de-DE.html b/desktop/test/deployment/update/website_update/update/web1_de-DE.html
index 33fb7f2ec8..33fb7f2ec8 100644..100755
--- a/desktop/test/deployment/update/website_update/update/web1_de-DE.html
+++ b/desktop/test/deployment/update/website_update/update/web1_de-DE.html
diff --git a/desktop/test/deployment/update/website_update/update/web1_de.html b/desktop/test/deployment/update/website_update/update/web1_de.html
index 31a53b91db..31a53b91db 100644..100755
--- a/desktop/test/deployment/update/website_update/update/web1_de.html
+++ b/desktop/test/deployment/update/website_update/update/web1_de.html
diff --git a/desktop/test/deployment/update/website_update/update/web1_en-GB.html b/desktop/test/deployment/update/website_update/update/web1_en-GB.html
index c46328a821..c46328a821 100644..100755
--- a/desktop/test/deployment/update/website_update/update/web1_en-GB.html
+++ b/desktop/test/deployment/update/website_update/update/web1_en-GB.html
diff --git a/desktop/test/deployment/update/website_update/update/web1_en-US-region1.html b/desktop/test/deployment/update/website_update/update/web1_en-US-region1.html
index 80b41823b7..80b41823b7 100644..100755
--- a/desktop/test/deployment/update/website_update/update/web1_en-US-region1.html
+++ b/desktop/test/deployment/update/website_update/update/web1_en-US-region1.html
diff --git a/desktop/test/deployment/update/website_update/update/web1_en-US-region2.html b/desktop/test/deployment/update/website_update/update/web1_en-US-region2.html
index 1a501f520d..1a501f520d 100644..100755
--- a/desktop/test/deployment/update/website_update/update/web1_en-US-region2.html
+++ b/desktop/test/deployment/update/website_update/update/web1_en-US-region2.html
diff --git a/desktop/test/deployment/update/website_update/update/web1_en-US.html b/desktop/test/deployment/update/website_update/update/web1_en-US.html
index f861b09c01..f861b09c01 100644..100755
--- a/desktop/test/deployment/update/website_update/update/web1_en-US.html
+++ b/desktop/test/deployment/update/website_update/update/web1_en-US.html
diff --git a/desktop/test/deployment/update/website_update/update/web1_en-region3.html b/desktop/test/deployment/update/website_update/update/web1_en-region3.html
index f55bcbe381..f55bcbe381 100644..100755
--- a/desktop/test/deployment/update/website_update/update/web1_en-region3.html
+++ b/desktop/test/deployment/update/website_update/update/web1_en-region3.html
diff --git a/desktop/test/deployment/update/website_update/update/web1_en.html b/desktop/test/deployment/update/website_update/update/web1_en.html
index a0b422ebf2..a0b422ebf2 100644..100755
--- a/desktop/test/deployment/update/website_update/update/web1_en.html
+++ b/desktop/test/deployment/update/website_update/update/web1_en.html
diff --git a/desktop/test/deployment/update/website_update/update/web2.update.xml b/desktop/test/deployment/update/website_update/update/web2.update.xml
index 23343ecede..23343ecede 100644..100755
--- a/desktop/test/deployment/update/website_update/update/web2.update.xml
+++ b/desktop/test/deployment/update/website_update/update/web2.update.xml
diff --git a/desktop/test/deployment/update/website_update/update/web3.update.xml b/desktop/test/deployment/update/website_update/update/web3.update.xml
index 0958b497f8..0958b497f8 100644..100755
--- a/desktop/test/deployment/update/website_update/update/web3.update.xml
+++ b/desktop/test/deployment/update/website_update/update/web3.update.xml
diff --git a/desktop/test/deployment/update/website_update/update/web4.update.xml b/desktop/test/deployment/update/website_update/update/web4.update.xml
index ddff6eb0a9..ddff6eb0a9 100644..100755
--- a/desktop/test/deployment/update/website_update/update/web4.update.xml
+++ b/desktop/test/deployment/update/website_update/update/web4.update.xml
diff --git a/desktop/test/deployment/update/website_update/update/web5.update.xml b/desktop/test/deployment/update/website_update/update/web5.update.xml
index 28a61e14de..28a61e14de 100644..100755
--- a/desktop/test/deployment/update/website_update/update/web5.update.xml
+++ b/desktop/test/deployment/update/website_update/update/web5.update.xml
diff --git a/desktop/test/deployment/update/website_update/update/web6/description.xml b/desktop/test/deployment/update/website_update/update/web6/description.xml
index 294661b6fc..294661b6fc 100644..100755
--- a/desktop/test/deployment/update/website_update/update/web6/description.xml
+++ b/desktop/test/deployment/update/website_update/update/web6/description.xml
diff --git a/desktop/test/deployment/update/website_update/update/web6/readme.txt b/desktop/test/deployment/update/website_update/update/web6/readme.txt
index 7a1ba06efa..7a1ba06efa 100644..100755
--- a/desktop/test/deployment/update/website_update/update/web6/readme.txt
+++ b/desktop/test/deployment/update/website_update/update/web6/readme.txt
diff --git a/desktop/test/deployment/update/website_update/update/web7/description.xml b/desktop/test/deployment/update/website_update/update/web7/description.xml
index 8fcaf9278c..8fcaf9278c 100644..100755
--- a/desktop/test/deployment/update/website_update/update/web7/description.xml
+++ b/desktop/test/deployment/update/website_update/update/web7/description.xml
diff --git a/desktop/test/deployment/update/website_update/update/web7/readme.txt b/desktop/test/deployment/update/website_update/update/web7/readme.txt
index 8a6721b8e8..8a6721b8e8 100644..100755
--- a/desktop/test/deployment/update/website_update/update/web7/readme.txt
+++ b/desktop/test/deployment/update/website_update/update/web7/readme.txt
diff --git a/desktop/test/deployment/update/wrong_url/readme.txt b/desktop/test/deployment/update/wrong_url/readme.txt
index cc2459763c..cc2459763c 100644..100755
--- a/desktop/test/deployment/update/wrong_url/readme.txt
+++ b/desktop/test/deployment/update/wrong_url/readme.txt
diff --git a/desktop/test/deployment/update/wrong_url/update/url1.update.xml b/desktop/test/deployment/update/wrong_url/update/url1.update.xml
index a50dec4cd5..a50dec4cd5 100644..100755
--- a/desktop/test/deployment/update/wrong_url/update/url1.update.xml
+++ b/desktop/test/deployment/update/wrong_url/update/url1.update.xml
diff --git a/desktop/test/deployment/update/wrong_url/update/url2.update.xml b/desktop/test/deployment/update/wrong_url/update/url2.update.xml
index 13757c8257..13757c8257 100644..100755
--- a/desktop/test/deployment/update/wrong_url/update/url2.update.xml
+++ b/desktop/test/deployment/update/wrong_url/update/url2.update.xml
diff --git a/desktop/test/deployment/update/wrong_url/update/wrongdownload1.update.xml b/desktop/test/deployment/update/wrong_url/update/wrongdownload1.update.xml
index b2b62a3be3..b2b62a3be3 100644..100755
--- a/desktop/test/deployment/update/wrong_url/update/wrongdownload1.update.xml
+++ b/desktop/test/deployment/update/wrong_url/update/wrongdownload1.update.xml
diff --git a/desktop/test/deployment/update/wrong_url/update/wrongdownload2.update.xml b/desktop/test/deployment/update/wrong_url/update/wrongdownload2.update.xml
index cb01718765..cb01718765 100644..100755
--- a/desktop/test/deployment/update/wrong_url/update/wrongdownload2.update.xml
+++ b/desktop/test/deployment/update/wrong_url/update/wrongdownload2.update.xml
diff --git a/desktop/test/deployment/update/wrong_url/update/wrongdownload3.update.xml b/desktop/test/deployment/update/wrong_url/update/wrongdownload3.update.xml
index 6ce027763d..6ce027763d 100644..100755
--- a/desktop/test/deployment/update/wrong_url/update/wrongdownload3.update.xml
+++ b/desktop/test/deployment/update/wrong_url/update/wrongdownload3.update.xml
diff --git a/desktop/test/deployment/version/readme.txt b/desktop/test/deployment/version/readme.txt
index c2ba28afd9..c2ba28afd9 100644..100755
--- a/desktop/test/deployment/version/readme.txt
+++ b/desktop/test/deployment/version/readme.txt
diff --git a/desktop/unx/source/args.c b/desktop/unx/source/args.c
new file mode 100644
index 0000000000..0f47f791d5
--- /dev/null
+++ b/desktop/unx/source/args.c
@@ -0,0 +1,152 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ * Novell, Inc.
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Major Contributor(s):
+ * Michael Meeks <michael.meeks@novell.com>
+ * Portions created by the Ted are Copyright (C) 2010 Ted. All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+#include <stdlib.h>
+#include <string.h>
+#include <osl/process.h>
+
+#include "args.h"
+
+/* do we start -env: */
+static int
+is_env_arg (rtl_uString *str)
+{
+ return !rtl_ustr_ascii_compare_WithLength (str->buffer, 5, "-env:");
+}
+
+static struct {
+ const char *name;
+ unsigned int bTwoArgs : 1;
+ unsigned int bInhibitSplash : 1;
+ unsigned int bInhibitPagein : 1;
+ unsigned int bInhibitJavaLdx : 1;
+ const char *pPageinType;
+} pArgDescr[] = {
+ /* have a trailing argument */
+ { "pt", 1, 0, 0, 0, NULL },
+ { "display", 1, 0, 0, 0, NULL },
+
+ /* no splash */
+ { "nologo", 0, 1, 0, 0, NULL },
+ { "headless", 0, 1, 0, 0, NULL },
+ { "invisible", 0, 1, 0, 0, NULL },
+ { "minimized", 0, 1, 0, 0, NULL },
+
+ /* pagein bits */
+ { "writer", 0, 0, 0, 0, "@pagein-writer" },
+ { "calc", 0, 0, 0, 0, "@pagein-calc" },
+ { "draw", 0, 0, 0, 0, "@pagein-draw" },
+ { "impress", 0, 0, 0, 0, "@pagein-impress" },
+
+ /* nothing much */
+ { "version", 0, 1, 1, 1, NULL },
+ { "help", 0, 1, 1, 1, NULL },
+ { "h", 0, 1, 1, 1, NULL },
+ { "?", 0, 1, 1, 1, NULL },
+};
+
+Args *args_parse (void)
+{
+ Args *args;
+ sal_uInt32 nArgs, i, j;
+
+ nArgs = osl_getCommandArgCount();
+ i = sizeof (Args) + sizeof (rtl_uString *) * nArgs;
+ args = malloc (i);
+ memset (args, 0, i);
+ args->nArgsTotal = nArgs;
+
+ j = 0;
+
+ /* sort the -env: args to the front */
+ for ( i = 0; i < nArgs; ++i )
+ {
+ rtl_uString *pTmp = NULL;
+ osl_getCommandArg( i, &pTmp );
+ if (is_env_arg (pTmp))
+ args->ppArgs[j++] = pTmp;
+ else
+ rtl_uString_release (pTmp);
+ }
+ args->nArgsEnv = j;
+
+ /* Then the other args */
+ for ( i = 0; i < nArgs; ++i )
+ {
+ rtl_uString *pTmp = NULL;
+
+ osl_getCommandArg( i, &pTmp );
+ if (!is_env_arg (pTmp))
+ args->ppArgs[j++] = pTmp;
+ else
+ rtl_uString_release (pTmp);
+ }
+
+ for ( i = args->nArgsEnv; i < args->nArgsTotal; i++ )
+ {
+ sal_uInt32 j;
+ const sal_Unicode *arg = args->ppArgs[i]->buffer;
+ sal_Int32 length = args->ppArgs[i]->length;
+
+ /* grok only parameters */
+ if (arg[0] != '-')
+ continue;
+
+ while (length > 2 && arg[0] == '-') {
+ arg++;
+ length--;
+ }
+
+ for ( j = 0; j < SAL_N_ELEMENTS (pArgDescr); ++j ) {
+ if (!rtl_ustr_indexOfAscii_WithLength
+ (arg, length, pArgDescr[j].name, strlen (pArgDescr[j].name))) {
+
+ args->bInhibitSplash |= pArgDescr[j].bInhibitSplash;
+ args->bInhibitPagein |= pArgDescr[j].bInhibitPagein;
+ args->bInhibitJavaLdx |= pArgDescr[j].bInhibitJavaLdx;
+ if (pArgDescr[j].pPageinType)
+ args->pPageinType = pArgDescr[j].pPageinType;
+ }
+ }
+ }
+
+ return args;
+}
+
+void
+args_free (Args *args)
+{
+ /* FIXME: free ppArgs */
+ rtl_uString_release( args->pAppPath );
+ free (args);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/unx/source/args.h b/desktop/unx/source/args.h
new file mode 100644
index 0000000000..9816c8a8a6
--- /dev/null
+++ b/desktop/unx/source/args.h
@@ -0,0 +1,50 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ * Novell, Inc.
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Major Contributor(s):
+ * Michael Meeks <michael.meeks@novell.com>
+ * Portions created by the Ted are Copyright (C) 2010 Ted. All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+#include <sal/types.h>
+#include <rtl/ustring.h>
+
+typedef struct {
+ rtl_uString *pAppPath;
+ const char *pPageinType; // @pagein-writer for - writer etc. else NULL
+ sal_Bool bInhibitSplash; // should we show a splash screen
+ sal_Bool bInhibitPagein; // should we run pagein ?
+ sal_Bool bInhibitJavaLdx; // should we run javaldx ?
+
+ sal_uInt32 nArgsEnv; // number of -env: style args
+ sal_uInt32 nArgsTotal; // number of -env: as well as -writer style args
+ rtl_uString *ppArgs[1]; // sorted argument array
+} Args;
+
+Args *args_parse (void);
+void args_free (Args *args);
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/unx/source/makefile.mk b/desktop/unx/source/makefile.mk
index 494477a0c4..5c5c8f3e9e 100644..100755
--- a/desktop/unx/source/makefile.mk
+++ b/desktop/unx/source/makefile.mk
@@ -32,33 +32,34 @@ NO_DEFAULT_STL=TRUE
.INCLUDE : settings.mk
-.IF "$(ENABLE_UNIX_QUICKSTARTER)"!="TRUE"
-
-dummy:
- @echo "Unix quickstarter disabled"
-
-.ELSE
+.IF "$(ENABLE_QUICKSTART_LIBPNG)"=="TRUE"
+CFLAGS+=-DENABLE_QUICKSTART_LIBPNG
+.ENDIF
STDLIB=
-
CFLAGS+=$(LIBPNG_CFLAGS)
OBJFILES= \
$(OBJ)$/splashx.obj \
- $(OBJ)$/start.obj
+ $(OBJ)$/start.obj \
+ $(OBJ)$/args.obj
+
+.IF "$(OS)"!="MACOSX"
+PAGEIN_OBJS= \
+ $(OBJ)$/pagein.obj \
+ $(OBJ)$/file_image_unx.obj
+.ENDIF
APP1TARGET = $(TARGET)
APP1RPATH = BRAND
-APP1OBJS = $(OBJFILES)
+APP1OBJS = $(OBJFILES) $(PAGEIN_OBJS)
APP1LIBSALCPPRT=
APP1CODETYPE = C
-APP1STDLIBS = $(SALLIB) -lX11 $(LIBPNG_LIBS)
+APP1STDLIBS = $(PTHREAD_LIBS) $(X11LINK_DYNAMIC) $(SALLIB) $(LIBPNG_LIBS)
.IF "$(OS)"=="SOLARIS"
APP1STDLIBS+= -lsocket
.ENDIF
-.ENDIF # ENABLE_UNIX_QUICKSTARTER
-
# --- Targets ------------------------------------------------------
.INCLUDE : target.mk
diff --git a/desktop/unx/source/officeloader/makefile.mk b/desktop/unx/source/officeloader/makefile.mk
index 050da981e8..050da981e8 100644..100755
--- a/desktop/unx/source/officeloader/makefile.mk
+++ b/desktop/unx/source/officeloader/makefile.mk
diff --git a/desktop/unx/source/officeloader/officeloader.cxx b/desktop/unx/source/officeloader/officeloader.cxx
index 89147d76f0..39f0014f76 100644
--- a/desktop/unx/source/officeloader/officeloader.cxx
+++ b/desktop/unx/source/officeloader/officeloader.cxx
@@ -35,8 +35,8 @@
#include "../../../source/inc/exithelper.hxx"
-using namespace rtl;
using namespace desktop;
+using ::rtl::OUString;
SAL_IMPLEMENT_MAIN()
{
diff --git a/desktop/unx/source/splashx.c b/desktop/unx/source/splashx.c
index 1c6ab45225..711671fe28 100644..100755
--- a/desktop/unx/source/splashx.c
+++ b/desktop/unx/source/splashx.c
@@ -25,6 +25,9 @@
* in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
* instead of those above.
*/
+
+#ifdef ENABLE_QUICKSTART_LIBPNG
+
#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <X11/Xutil.h>
@@ -112,11 +115,12 @@ static unsigned char **bitmap_rows = NULL;
# define PNG_TRANSFORM_GRAY_TO_RGB 0x2000
#endif
+png_structp png_ptr = NULL;
+png_infop info_ptr = NULL;
+
int splash_load_bmp( const char *filename )
{
FILE *file;
- png_structp png_ptr;
- png_infop info_ptr;
if ( !(file = fopen( filename, "r" ) ) )
return 0;
@@ -137,8 +141,8 @@ int splash_load_bmp( const char *filename )
PNG_TRANSFORM_GRAY_TO_RGB | PNG_TRANSFORM_BGR, NULL);
bitmap_rows = png_get_rows( png_ptr, info_ptr );
- width = info_ptr->width;
- height = info_ptr->height;
+ width = png_get_image_width( png_ptr, info_ptr );
+ height = png_get_image_height( png_ptr, info_ptr );
#if 0
{
@@ -308,11 +312,10 @@ static void create_pixmap()
int bytes_per_line = image->bytes_per_line;
int bpp = image->bits_per_pixel;
int byte_order = image->byte_order;
- int machine_byte_order;
#if defined( _LITTLE_ENDIAN )
- machine_byte_order = LSBFirst;
+ int machine_byte_order = LSBFirst;
#elif defined( _BIG_ENDIAN )
- machine_byte_order = MSBFirst;
+ int machine_byte_order = MSBFirst;
#else
{
fprintf( stderr, "Unsupported machine endianity.\n" );
@@ -461,7 +464,6 @@ static void suppress_decorations_motif()
struct {
unsigned long flags, functions, decorations;
long input_mode;
- unsigned long status;
} mwmhints;
Atom a = XInternAtom( display, "_MOTIF_WM_HINTS", False );
@@ -618,9 +620,40 @@ void splash_draw_progress( int progress )
void splash_close_window()
{
XCloseDisplay( display );
-
- // leak it is faster
+#ifdef USE_LIBPNG
+ png_destroy_read_struct( &png_ptr, &info_ptr, NULL );
+#else
+ free( bitmap_rows );
+#endif
bitmap_rows = NULL;
}
+#else /* not ENABLE_QUICKSTART_LIBPNG */
+
+/* Stubs that will never be called in this case */
+
+int splash_load_bmp( const char *filename )
+{
+ (void)filename;
+ return 1;
+}
+void splash_setup( int barc[3], int framec[3], int posx, int posy, int w, int h )
+{
+ (void)barc; (void)framec; (void)posx; (void)posy; (void)w; (void)h;
+}
+int splash_create_window( int argc, char** argv )
+{
+ (void)argc; (void)argv;
+ return 1;
+}
+void splash_close_window()
+{
+}
+void splash_draw_progress( int progress )
+{
+ (void)progress;
+}
+
+#endif // ENABLE_QUICKSTART_LIBPNG
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/unx/source/splashx.h b/desktop/unx/source/splashx.h
index 537034c6ef..537034c6ef 100644..100755
--- a/desktop/unx/source/splashx.h
+++ b/desktop/unx/source/splashx.h
diff --git a/desktop/unx/source/start.c b/desktop/unx/source/start.c
index 8685880b77..19420a9adf 100644..100755
--- a/desktop/unx/source/start.c
+++ b/desktop/unx/source/start.c
@@ -38,6 +38,7 @@
#include <fcntl.h>
#include <stdio.h>
#include <libgen.h>
+#include <string.h>
#include <osl/nlsupport.h>
#include <osl/process.h>
@@ -47,21 +48,13 @@
#include <rtl/ustrbuf.h>
#include <sal/main.h>
+#include "args.h"
#include "splashx.h"
-/*
- * magic argument - if passed, not passed onto soffice.bin but we exit
- * immediately if we fail to control the process. Used to avoid doing
- * an un-conditional pagein
- */
-#define QSEND_AND_REPORT "-qsend-and-report"
-
-#define IMG_SUFFIX ".png"
+#define IMG_SUFFIX ".png"
#define PIPEDEFAULTPATH "/tmp"
#define PIPEALTERNATEPATH "/var/tmp"
-typedef enum { ProgressContinue, ProgressRestart, ProgressExit } ProgressStatus;
-
/* Easier conversions: rtl_uString to rtl_String */
static rtl_String *
ustr_to_str( rtl_uString *pStr )
@@ -101,6 +94,121 @@ ustr_debug( const char *pMessage, rtl_uString *pStr )
#define ustr_debug( a, b ) {}
#endif
+typedef struct {
+ int status_fd;
+ oslProcess child;
+} ChildInfo;
+
+static int
+child_info_get_status_fd (ChildInfo *info)
+{
+ return info->status_fd;
+}
+
+static void
+child_info_destroy (ChildInfo *info)
+{
+ close (info->status_fd);
+ osl_freeProcessHandle (info->child);
+ free (info);
+}
+
+static ChildInfo *
+child_spawn ( Args *args, sal_Bool bAllArgs, sal_Bool bWithStatus )
+{
+ rtl_uString *pApp = NULL, *pTmp = NULL;
+ rtl_uString **ppArgs;
+ sal_uInt32 nArgs, i;
+ char buffer[64];
+ ChildInfo *info;
+ int status_pipe[2];
+ oslProcessError nError;
+
+ info = calloc (1, sizeof (ChildInfo));
+
+ /* create pipe */
+ if ( pipe( status_pipe ) < 0 )
+ {
+ fprintf( stderr, "ERROR: no file handles\n");
+ exit( 1 );
+ }
+ info->status_fd = status_pipe[0];
+
+ /* application name */
+ rtl_uString_newFromAscii( &pApp, "file://" );
+ rtl_uString_newConcat( &pApp, pApp, args->pAppPath );
+ rtl_uString_newFromAscii( &pTmp, "/soffice.bin" );
+ rtl_uString_newConcat( &pApp, pApp, pTmp );
+ rtl_uString_release( pTmp );
+ pTmp = NULL;
+
+ /* copy args */
+ nArgs = bAllArgs ? args->nArgsTotal : args->nArgsEnv;
+ ppArgs = (rtl_uString **)calloc( nArgs + 1, sizeof( rtl_uString* ) );
+ for ( i = 0; i < nArgs; ++i )
+ ppArgs[i] = args->ppArgs[i];
+
+ if( bWithStatus )
+ {
+ /* add the pipe arg */
+ snprintf (buffer, 63, "--splash-pipe=%d", status_pipe[1]);
+ rtl_uString_newFromAscii( &pTmp, buffer );
+ ppArgs[nArgs] = pTmp;
+ ++nArgs;
+ }
+
+ /* start the main process */
+ nError = osl_executeProcess( pApp, ppArgs, nArgs,
+ osl_Process_NORMAL,
+ NULL,
+ NULL,
+ NULL, 0,
+ &info->child );
+
+ if (pTmp)
+ rtl_uString_release( pTmp );
+ free (ppArgs);
+
+ if ( nError != osl_Process_E_None )
+ {
+ fprintf( stderr, "ERROR %d forking process", nError );
+ ustr_debug( "", pApp );
+ rtl_uString_release( pApp );
+ _exit (1);
+ }
+
+ rtl_uString_release( pApp );
+ close( status_pipe[1] );
+
+ return info;
+}
+
+static sal_Bool
+child_exited_wait (ChildInfo *info, sal_Bool bShortWait)
+{
+ TimeValue t = { 0, 250 /* ms */ * 1000 * 1000 };
+ if (!bShortWait)
+ t.Seconds = 1024;
+ return osl_joinProcessWithTimeout (info->child, &t) != osl_Process_E_TimedOut;
+}
+
+static int
+child_get_exit_code (ChildInfo *info)
+{
+ oslProcessInfo inf;
+
+ inf.Code = -1;
+ inf.Size = sizeof (inf);
+ if (osl_getProcessInfo (info->child, osl_Process_EXITCODE, &inf) != osl_Process_E_None)
+ {
+ fprintf (stderr, "Warning: failed to fetch libreoffice exit status\n");
+ return -1;
+ }
+ return inf.Code;
+}
+
+typedef enum { ProgressContinue, ProgressRestart, ProgressExit } ProgressStatus;
+
/* Path of the application. */
static rtl_uString *
get_app_path( const char *pAppExec )
@@ -225,6 +333,7 @@ get_pipe_path( rtl_uString *pAppPath )
ustr_debug( "result", pResult );
/* cleanup */
+ rtl_uString_release( pMd5hash );
rtl_uString_release( pPath );
rtl_uString_release( pTmp );
rtl_uString_release( pBasePath );
@@ -353,10 +462,6 @@ send_args( int fd, rtl_uString *pCwdPath )
osl_getCommandArg( nArg, &pTmp );
- if ( rtl_uString_getLength( pTmp ) == 0 ||
- !rtl_ustr_ascii_compare( pTmp->buffer, QSEND_AND_REPORT ) )
- continue;
-
// this is not a param, we have to prepend filenames with file://
// FIXME: improve the check
if ( ( pTmp->buffer[0] != (sal_Unicode)'-' ) )
@@ -440,10 +545,14 @@ load_splash_image( rtl_uString *pUAppPath )
strcat (pLocale, "_");
strcat (pLocale, pCountry->buffer);
+ rtl_string_release( pCountry );
+ rtl_string_release( pLang );
+
pAppPath = ustr_to_str (pUAppPath);
pBuffer = malloc (pAppPath->length + nLocSize + 256);
strcpy (pBuffer, pAppPath->buffer);
pSuffix = pBuffer + pAppPath->length;
+ rtl_string_release( pAppPath );
strcpy (pSuffix, "/edition/intro");
strcat (pSuffix, pLocale);
@@ -478,8 +587,6 @@ static void
get_bootstrap_value( int *array, int size, rtlBootstrapHandle handle, const char *name )
{
rtl_uString *pKey = NULL, *pValue = NULL;
- sal_Int32 nIndex = 0;
- int i = 0;
/* get the value from the ini file */
rtl_uString_newFromAscii( &pKey, name );
@@ -489,7 +596,8 @@ get_bootstrap_value( int *array, int size, rtlBootstrapHandle handle, const char
if ( rtl_uString_getLength( pValue ) > 0 )
{
rtl_uString *pToken = NULL;
-
+ int i = 0;
+ sal_Int32 nIndex = 0;
for ( ; ( nIndex >= 0 ) && ( i < size ); ++i )
{
nIndex = rtl_uString_getToken( &pToken, pValue, 0, ',', nIndex );
@@ -506,7 +614,7 @@ get_bootstrap_value( int *array, int size, rtlBootstrapHandle handle, const char
/* Load the colors and size of the splash. */
static void
-load_splash_defaults( rtl_uString *pAppPath, sal_Bool *pInhibitSplash )
+load_splash_defaults( rtl_uString *pAppPath, sal_Bool *bNoDefaults )
{
rtl_uString *pSettings = NULL, *pTmp = NULL;
rtlBootstrapHandle handle;
@@ -536,7 +644,7 @@ load_splash_defaults( rtl_uString *pAppPath, sal_Bool *pInhibitSplash )
get_bootstrap_value( size, 2, handle, "ProgressSize" );
if ( logo[0] == 0 )
- *pInhibitSplash = sal_True;
+ *bNoDefaults = sal_True;
splash_setup( bar, frame, pos[0], pos[1], size[0], size[1] );
@@ -550,7 +658,7 @@ load_splash_defaults( rtl_uString *pAppPath, sal_Bool *pInhibitSplash )
/* Read the percent to show in splash. */
static ProgressStatus
-read_percent( int status_fd, int *pPercent )
+read_percent( ChildInfo *info, int *pPercent )
{
static char pBuffer[BUFFER_LEN + 1];
static char *pNext = pBuffer;
@@ -567,7 +675,8 @@ read_percent( int status_fd, int *pPercent )
memmove( pBuffer, pNext, nNotProcessed );
/* read data */
- nRead = read( status_fd, pBuffer + nNotProcessed, BUFFER_LEN - nNotProcessed );
+ nRead = read( child_info_get_status_fd (info),
+ pBuffer + nNotProcessed, BUFFER_LEN - nNotProcessed );
if ( nRead < 0 )
return sal_False;
@@ -578,11 +687,13 @@ read_percent( int status_fd, int *pPercent )
pBegin = pBuffer;
pNext = pBuffer;
for ( pIter = pBuffer; *pIter; ++pIter )
+ {
if ( *pIter == '\n' )
{
pBegin = pNext;
pNext = pIter + 1;
}
+ }
#if OSL_DEBUG_LEVEL > 0
fprintf( stderr, "Got status: %s\n", pBegin );
@@ -598,50 +709,6 @@ read_percent( int status_fd, int *pPercent )
return ProgressExit;
}
-/* Periodically update the splash & the percent acconding to what
- status_fd says */
-static ProgressStatus
-show_splash( int status_fd )
-{
- int nRetval;
- struct pollfd aPfd;
-
- int nPercent = 0;
- sal_Bool bFinish = sal_False;
- ProgressStatus eResult;
-
- /* we want to watch status_fd */
- aPfd.fd = status_fd;
- aPfd.events = POLLIN;
-
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "Starting main loop, status fd: %d\n", status_fd );
-#endif
-
- /* main loop */
- do {
- splash_draw_progress( nPercent );
-
- /* read from pipe if data available */
- nRetval = poll( &aPfd, 1, 50 );
- if ( aPfd.revents & ( POLLERR | POLLHUP | POLLNVAL ) )
- bFinish = sal_True;
- else if ( nRetval > 0 )
- {
- eResult = read_percent( status_fd, &nPercent );
- bFinish = ( eResult != ProgressContinue );
- }
- else if ( nRetval < 0 )
- bFinish = sal_True;
- } while ( !bFinish );
-
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "Finishing, result is %s\n",
- ( eResult == ProgressContinue )? "continue" : ( ( eResult == ProgressRestart )? "restart" : "exit" ) );
-#endif
- return eResult;
-}
-
/* Simple system check. */
static void
system_checks( void )
@@ -652,182 +719,191 @@ system_checks( void )
/* check proc is mounted - lots of things fail otherwise */
if ( stat( "/proc/version", &buf ) != 0 )
{
- fprintf( stderr, "ERROR: /proc not mounted - OO.o is unlikely to work well if at all" );
+ fprintf( stderr, "ERROR: /proc not mounted - LibreOffice is unlikely to work well if at all" );
exit( 1 );
}
#endif
}
-/* Start the OOo application */
-static sal_Bool
-fork_app( rtl_uString *pAppPath, int *status_fd )
-{
- rtl_uString *pApp = NULL, *pTmp = NULL, *pArg = NULL;
- rtl_uString **ppArgs;
- sal_uInt32 nArgs, i;
-
- oslProcess aProcess;
- oslProcessError nError;
- int status_pipe[2];
+/* re-use the pagein code */
+extern int pagein_execute (int argc, char **argv);
- system_checks();
-
- /* application name */
- rtl_uString_newFromAscii( &pApp, "file://" );
- rtl_uString_newConcat( &pApp, pApp, pAppPath );
- rtl_uString_newFromAscii( &pTmp, "/soffice.bin" );
- rtl_uString_newConcat( &pApp, pApp, pTmp );
-
- rtl_uString_new( &pTmp );
+void
+exec_pagein (Args *args)
+{
+// no pagein for the while on OSX
+#ifdef MACOSX
+ (void)args;
+#else
+ char *argv[5];
+ rtl_String *app_path;
- /* copy args */
- nArgs = osl_getCommandArgCount();
- ppArgs = (rtl_uString **)calloc( nArgs + 1, sizeof( rtl_uString* ) );
- for ( i = 0; i < nArgs; ++i )
- {
- ppArgs[i] = NULL;
- osl_getCommandArg( i, &pTmp );
- rtl_uString_newFromString( &(ppArgs[i]), pTmp );
- }
+ app_path = ustr_to_str (args->pAppPath);
- /* create pipe */
- if ( pipe( status_pipe ) < 0 )
- {
- fprintf( stderr, "ERROR: no file handles\n");
- exit( 1 );
- }
+ argv[0] = "dummy-pagein";
+ argv[1] = malloc (app_path->length + sizeof ("-L/../basis-link/program") + 2);
+ strcpy (argv[1], "-L");
+ strcat (argv[1], app_path->buffer);
+ strcat (argv[1], "/../basis-link/program");
+ argv[2] = "@pagein-common";
+ argv[3] = (char *)args->pPageinType;
+ argv[4] = NULL;
- /* add the pipe arg */
- sal_Unicode pUnicode[RTL_USTR_MAX_VALUEOFINT32];
- rtl_ustr_valueOfInt32( pUnicode, status_pipe[1], 10 );
+ rtl_string_release( app_path );
- rtl_uString_newFromAscii( &pArg, "-splash-pipe=" );
- rtl_uString_newFromStr( &pTmp, pUnicode );
- rtl_uString_newConcat( &pArg, pArg, pTmp );
+ pagein_execute (args->pPageinType ? 4 : 3, argv);
- ppArgs[nArgs] = NULL;
- rtl_uString_newFromString( &(ppArgs[nArgs]), pArg );
- ++nArgs;
+ free (argv[1]);
+#endif
+}
- /* start the OOo process */
- nError = osl_executeProcess( pApp, ppArgs, nArgs,
- osl_Process_DETACHED | osl_Process_NORMAL,
- NULL,
- NULL,
- NULL, 0,
- &aProcess );
+static void extend_library_path (const char *new_element)
+{
+ rtl_uString *pEnvName=NULL, *pOrigEnvVar=NULL, *pNewEnvVar=NULL;
+ const char *pathname;
+#ifdef AIX
+ pathname = "LIBPATH";
+#else
+ pathname = "LD_LIBRARY_PATH";
+#endif
- *status_fd = status_pipe[0];
- close( status_pipe[1] );
+ rtl_uString_newFromAscii( &pEnvName, pathname );
+ rtl_uString_newFromAscii( &pNewEnvVar, new_element );
- if ( nError != osl_Process_E_None )
+ osl_getEnvironment( pEnvName, &pOrigEnvVar );
+ if (pOrigEnvVar && pOrigEnvVar->length)
{
- fprintf( stderr, "ERROR %d forking process", nError );
- ustr_debug( "", pApp );
- return sal_False;
+ rtl_uString *pDelim = NULL;
+ rtl_uString_newFromAscii( &pDelim, ":" );
+ rtl_uString_newConcat( &pNewEnvVar, pNewEnvVar, pDelim );
+ rtl_uString_newConcat( &pNewEnvVar, pNewEnvVar, pOrigEnvVar );
+ rtl_uString_release( pDelim );
}
- return sal_True;
-}
-
-/* Check if 'pArg' is -pCmpWith or --pCmpWith */
-static sal_Bool
-arg_check( rtl_uString *pArg, const char *pCmpWith )
-{
- sal_Unicode *pUnicode = rtl_uString_getStr( pArg );
-
- if ( pUnicode[0] == (sal_Unicode)'-' )
- pUnicode++;
- else
- return sal_False;
-
- /* tolerate -- prefixes etc. */
- if ( pUnicode[0] == (sal_Unicode)'-' )
- pUnicode++;
+ osl_setEnvironment( pEnvName, pNewEnvVar );
- return !rtl_ustr_ascii_compare( pUnicode, pCmpWith );
+ if (pOrigEnvVar)
+ rtl_uString_release( pOrigEnvVar );
+ rtl_uString_release( pNewEnvVar );
+ rtl_uString_release( pEnvName );
}
-static const char *ppInhibit[] = {
- "nologo", "headless", "invisible", "help", "h", "?", "minimized",
- NULL };
-static const char *ppTwoArgs[] = {
- "pt", "display",
- NULL };
-
-/* Read command line parameters and return whether we display the splash. */
-static sal_Bool
-get_inhibit_splash()
+static void
+exec_javaldx (Args *args)
{
- rtl_uString *pTmp = NULL;
- sal_Bool bSkipNextArg = sal_False;
- const char **ppIter;
-
- rtl_uString_new( &pTmp );
+ char newpath[4096];
+ sal_uInt32 nArgs;
+ rtl_uString *pApp;
+ rtl_uString **ppArgs;
+ rtl_uString *pTmp, *pTmp2;
+ rtl_uString *pEnvironment[1] = { NULL };
+
+ ppArgs = (rtl_uString **)calloc( args->nArgsEnv + 2, sizeof( rtl_uString* ) );
+
+ for ( nArgs = 0; nArgs < args->nArgsEnv; ++nArgs )
+ ppArgs[nArgs] = args->ppArgs[nArgs];
+
+ /* Use absolute path to redirectrc */
+ pTmp = NULL;
+ rtl_uString_newFromAscii( &pTmp, "-env:INIFILENAME=vnd.sun.star.pathname:" );
+ rtl_uString_newConcat( &pTmp, pTmp, args->pAppPath );
+ pTmp2 = NULL;
+ rtl_uString_newFromAscii( &pTmp2, "/redirectrc" );
+ rtl_uString_newConcat( &pTmp, pTmp, pTmp2 );
+ ppArgs[nArgs] = pTmp;
+ rtl_uString_release (pTmp2);
+ nArgs++;
+
+ oslProcess javaldx = NULL;
+ oslFileHandle fileOut= 0;
+ oslProcessError err;
+
+ /* And also to javaldx */
+ pApp = NULL;
+ rtl_uString_newFromAscii( &pApp, "file://" );
+ rtl_uString_newConcat( &pApp, pApp, args->pAppPath );
+ pTmp = NULL;
+ rtl_uString_newFromAscii( &pTmp, "/../ure/bin/javaldx" );
+ rtl_uString_newConcat( &pApp, pApp, pTmp );
+ rtl_uString_release( pTmp );
- sal_uInt32 nArg;
- sal_uInt32 nArgCount = osl_getCommandArgCount();
- for ( nArg = 0; nArg < nArgCount; ++nArg )
+ /* unset to avoid bogus console output */
+ rtl_uString_newFromAscii( &pEnvironment[0], "G_SLICE" );
+
+ err = osl_executeProcess_WithRedirectedIO( pApp, ppArgs, nArgs,
+ osl_Process_NORMAL,
+ NULL, // security
+ NULL, // work dir
+ pEnvironment, 1,
+ &javaldx, // process handle
+ NULL,
+ &fileOut,
+ NULL);
+
+ rtl_uString_release( pEnvironment[0] );
+ rtl_uString_release( ppArgs[nArgs-1] );
+ rtl_uString_release( pApp );
+ free( ppArgs );
+
+ if( err != osl_Process_E_None)
{
- if ( bSkipNextArg )
- {
- bSkipNextArg = sal_False;
- continue;
+ fprintf (stderr, "Warning: failed to launch javaldx - java may not fuction correctly\n");
+ return;
+ } else {
+ char *chomp;
+ sal_uInt64 bytes_read;
+
+ /* Magically osl_readLine doesn't work with pipes with E_SPIPE - so be this lame instead: */
+ while (osl_readFile (fileOut, newpath, SAL_N_ELEMENTS (newpath), &bytes_read) == osl_File_E_INTR);
+
+ if (bytes_read <= 0) {
+ fprintf (stderr, "Warning: failed to read path from javaldx\n");
+ return;
}
+ newpath[bytes_read] = '\0';
- osl_getCommandArg( nArg, &pTmp );
-
- /* check for inhibit splash params */
- for ( ppIter = ppInhibit; *ppIter; ++ppIter )
- {
- if ( arg_check( pTmp, *ppIter ) )
- {
- rtl_uString_release( pTmp );
- return sal_True;
- }
- }
- /* check for 2 arguments params */
- for ( ppIter = ppTwoArgs; *ppIter; ++ppIter )
- {
- if ( arg_check( pTmp, *ppIter ) )
- {
- bSkipNextArg = sal_True;
- break;
- }
- }
+ if ((chomp = strstr (newpath, "\n")))
+ *chomp = '\0';
}
- /* cleanup */
- rtl_uString_release( pTmp );
+#if OSL_DEBUG_LEVEL > 0
+ fprintf (stderr, "Adding javaldx path of '%s'\n", newpath);
+#endif
+ extend_library_path (newpath);
- return sal_False;
+ osl_freeProcessHandle(javaldx);
}
SAL_IMPLEMENT_MAIN_WITH_ARGS( argc, argv )
{
- int fd = 0, status_fd = 0;
- sal_Bool bInhibitSplash, bSendAndReport;
+ int fd = 0;
sal_Bool bSentArgs = sal_False;
- rtl_uString *pAppPath = NULL;
+ const char* pUsePlugin;
rtl_uString *pPipePath = NULL;
- ProgressStatus eResult = ProgressExit;
+ Args *args;
/* turn SIGPIPE into an error */
signal( SIGPIPE, SIG_IGN );
- bInhibitSplash = get_inhibit_splash();
-
- pAppPath = get_app_path( argv[0] );
- if ( !pAppPath )
+ args = args_parse ();
+ args->pAppPath = get_app_path( argv[0] );
+ if ( !args->pAppPath )
{
fprintf( stderr, "ERROR: Can't read app link\n" );
exit( 1 );
}
- ustr_debug( "App path", pAppPath );
+ ustr_debug( "App path", args->pAppPath );
+
+#ifndef ENABLE_QUICKSTART_LIBPNG
+ /* we can't load and render it anyway */
+ args->bInhibitSplash = sal_True;
+#endif
- bSendAndReport = argc > 1 && !strcmp (argv[1], QSEND_AND_REPORT);
+ pUsePlugin = getenv( "SAL_USE_VCLPLUGIN" );
+ if ( pUsePlugin && !strcmp(pUsePlugin, "svp") )
+ args->bInhibitSplash = sal_True;
- pPipePath = get_pipe_path( pAppPath );
+ pPipePath = get_pipe_path( args->pAppPath );
if ( ( fd = connect_pipe( pPipePath ) ) >= 0 )
{
@@ -835,43 +911,102 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS( argc, argv )
osl_getProcessWorkingDir( &pCwdPath );
bSentArgs = send_args( fd, pCwdPath );
+
+ close( fd );
}
#if OSL_DEBUG_LEVEL > 0
else
ustr_debug( "Failed to connect to pipe", pPipePath );
#endif
- if ( !bSendAndReport && !bSentArgs )
+ if ( !bSentArgs )
{
- /* we have to exec the binary */
+ /* we have to prepare for, and exec the binary */
+ int nPercent = 0;
+ ChildInfo *info;
+ sal_Bool bAllArgs = sal_True;
+ sal_Bool bHaveWindow = sal_False;
+ sal_Bool bShortWait, bRestart;
+
+ /* sanity check pieces */
+ system_checks();
+
+ /* load splash image and create window */
+ if ( !args->bInhibitSplash )
+ {
+ sal_Bool bNoDefaults = sal_False;
+ load_splash_image( args->pAppPath );
+ load_splash_defaults( args->pAppPath, &bNoDefaults );
+
+ if (!bNoDefaults &&
+ ( bHaveWindow = splash_create_window( argc, argv ) ) )
+ splash_draw_progress( 0 );
+ }
+
+ /* pagein */
+ if (!args->bInhibitJavaLdx)
+ exec_pagein (args);
+
+ /* javaldx */
+ if (!args->bInhibitJavaLdx)
+ exec_javaldx (args);
+
do {
- if ( !fork_app( pAppPath, &status_fd ) )
- return 1;
+ bRestart = sal_False;
+
+ /* fast updates if we have somewhere to update it to */
+ bShortWait = bHaveWindow;
- if ( !bInhibitSplash )
+ /* Periodically update the splash & the percent according
+ to what status_fd says, poll quickly only while starting */
+ info = child_spawn (args, bAllArgs, bShortWait);
+ while (!child_exited_wait (info, bShortWait))
{
- load_splash_image( pAppPath );
- load_splash_defaults( pAppPath, &bInhibitSplash );
+ ProgressStatus eResult;
+
+ splash_draw_progress( nPercent );
+ eResult = read_percent( info, &nPercent );
+ if (eResult != ProgressContinue)
+ {
+ splash_close_window ();
+ bShortWait = sal_False;
+ }
+
+#if OSL_DEBUG_LEVEL > 0
+ fprintf( stderr, "Polling, result is %s\n",
+ ( eResult == ProgressContinue )? "continue" :
+ ( ( eResult == ProgressRestart )? "restart" : "exit" ) );
+#endif
}
- if ( !bInhibitSplash && splash_create_window( argc, argv ) )
- {
- splash_draw_progress( 0 );
- eResult = show_splash( status_fd );
- splash_close_window();
+#if OSL_DEBUG_LEVEL > 0
+ fprintf (stderr, "Exited with code '%d'\n", child_get_exit_code (info));
+#endif
+
+ switch (child_get_exit_code (info)) {
+ case 79: // re-start with just -env: parameters
+ fprintf (stderr, "FIXME: re-start with just -env: params !\n");
+ bRestart = sal_True;
+ bAllArgs = sal_False;
+ break;
+ case 81: // re-start with all arguments
+ fprintf (stderr, "FIXME: re-start with all params !\n");
+ bRestart = sal_True;
+ bAllArgs = sal_True;
+ break;
+ default:
+ break;
}
- close( status_fd );
- } while ( eResult == ProgressRestart );
+ child_info_destroy (info);
+ } while (bRestart);
}
/* cleanup */
- rtl_uString_release( pAppPath );
rtl_uString_release( pPipePath );
+ args_free (args);
- close( fd );
-
- return bSendAndReport? !bSentArgs : 0;
+ return 0;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/unx/splash/exports.map b/desktop/unx/splash/exports.map
index ba501f9ae0..218f0536d7 100644..100755
--- a/desktop/unx/splash/exports.map
+++ b/desktop/unx/splash/exports.map
@@ -3,7 +3,6 @@ UDK_3_0_0 {
GetVersionInfo;
component_getImplementationEnvironment;
component_getFactory;
- component_writeInfo;
local:
*;
diff --git a/desktop/unx/splash/makefile.mk b/desktop/unx/splash/makefile.mk
index d182173de1..e338cfe36b 100644..100755
--- a/desktop/unx/splash/makefile.mk
+++ b/desktop/unx/splash/makefile.mk
@@ -36,17 +36,14 @@ ENABLE_EXCEPTIONS=TRUE
.INCLUDE : settings.mk
-.IF "$(ENABLE_UNIX_QUICKSTARTER)"!="TRUE"
-
+.IF "$(OS)"=="MACOSX"
dummy:
- @echo "Unix quickstarter disabled"
-
+ @echo "Unix quickstarter disabled for mac"
.ELSE
# --- Files --------------------------------------------------------
-SLOFILES = $(SLO)$/unxsplash.obj \
- $(SLO)$/services_unxsplash.obj
+SLOFILES = $(SLO)$/unxsplash.obj
SHL1DEPN= makefile.mk
SHL1OBJS= $(SLOFILES)
@@ -64,8 +61,16 @@ SHL1STDLIBS= \
$(CPPULIB) \
$(SALLIB)
-.ENDIF # ENABLE_UNIX_QUICKSTARTER
-
# --- Targets ------------------------------------------------------
.INCLUDE : target.mk
+
+ALLTAR : $(MISC)/splash.component
+
+$(MISC)/splash.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
+ splash.component
+ $(XSLTPROC) --nonet --stringparam uri \
+ '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
+ $(SOLARENV)/bin/createcomponent.xslt splash.component
+
+.ENDIF \ No newline at end of file
diff --git a/desktop/unx/splash/services_unxsplash.cxx b/desktop/unx/splash/services_unxsplash.cxx
deleted file mode 100644
index 6e8b63afa5..0000000000
--- a/desktop/unx/splash/services_unxsplash.cxx
+++ /dev/null
@@ -1,159 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * Copyright 2010, Novell Inc.
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- * Contributor(s): Jan Holesovsky <kendy@novell.com>
- *
- ************************************************************************/
-#include <com/sun/star/beans/NamedValue.hpp>
-#include <com/sun/star/registry/XRegistryKey.hpp>
-#include <com/sun/star/util/Date.hpp>
-#include <uno/environment.h>
-#include <cppuhelper/factory.hxx>
-#include <unotools/configmgr.hxx>
-
-#include <string.h>
-
-#include "unxsplash.hxx"
-
-using namespace rtl;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::registry;
-using namespace ::desktop;
-
-static const char* pServices[] =
-{
- UnxSplashScreen::serviceName,
- NULL
-};
-
-static const char* pImplementations[] =
-{
- UnxSplashScreen::implementationName,
- NULL
-};
-
-typedef Reference<XInterface>(* fProvider)( const Reference<XMultiServiceFactory>& );
-
-static const fProvider pInstanceProviders[] =
-{
- UnxSplashScreen::getInstance,
- NULL
-};
-
-
-static const char** pSupportedServices[] =
-{
- UnxSplashScreen::interfaces,
- NULL
-};
-
-static Sequence<OUString>
-getSupportedServiceNames( int p ) {
- const char **names = pSupportedServices[p];
- Sequence<OUString> aSeq;
- for ( int i = 0; names[i] != NULL; i++ )
- {
- aSeq.realloc( i+1 );
- aSeq[i] = OUString::createFromAscii( names[i] );
- }
- return aSeq;
-}
-
-extern "C"
-{
-void SAL_CALL
-component_getImplementationEnvironment(
- const sal_Char** ppEnvironmentTypeName,
- uno_Environment** ppEnvironment )
-{
- *ppEnvironmentTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME ;
-}
-
-sal_Bool SAL_CALL
-component_writeInfo(
- void* pServiceManager,
- void* pRegistryKey )
-{
- Reference<XMultiServiceFactory> xMan(
- reinterpret_cast< XMultiServiceFactory* >( pServiceManager ) ) ;
- Reference<XRegistryKey> xKey(
- reinterpret_cast< XRegistryKey* >( pRegistryKey ) ) ;
-
- // iterate over service names and register them...
- OUString aImpl;
- const char* pServiceName = NULL;
- const char* pImplName = NULL;
- for ( int i = 0; ( pServices[i] != NULL ) && ( pImplementations[i] != NULL ); i++ )
- {
- pServiceName= pServices[i];
- pImplName = pImplementations[i];
- aImpl = OUString::createFromAscii( "/" )
- + OUString::createFromAscii( pImplName )
- + OUString::createFromAscii( "/UNO/SERVICES" );
- Reference<XRegistryKey> xNewKey = xKey->createKey( aImpl );
- xNewKey->createKey( OUString::createFromAscii( pServiceName ) );
- }
- return sal_True;
-}
-
-void* SAL_CALL
-component_getFactory(
- const sal_Char* pImplementationName,
- void* pServiceManager,
- void* pRegistryKey )
-{
- // Set default return value for this operation - if it failed.
- if ( pImplementationName && pServiceManager )
- {
- Reference< XSingleServiceFactory > xFactory;
- Reference< XMultiServiceFactory > xServiceManager(
- reinterpret_cast< XMultiServiceFactory* >( pServiceManager ) ) ;
-
- // search implementation
- for ( int i = 0; ( pImplementations[i] != NULL ); i++ )
- {
- if ( strcmp( pImplementations[i], pImplementationName ) == 0 )
- {
- // found implementation
- xFactory = Reference<XSingleServiceFactory>( cppu::createSingleFactory(
- xServiceManager, OUString::createFromAscii( pImplementationName ),
- pInstanceProviders[i], getSupportedServiceNames( i ) ) );
- if ( xFactory.is() )
- {
- // Factory is valid - service was found.
- xFactory->acquire();
- return xFactory.get();
- }
- }
- }
- }
-
- return NULL;
-}
-} // extern "C"
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/unx/splash/splash.component b/desktop/unx/splash/splash.component
new file mode 100755
index 0000000000..cd7792744e
--- /dev/null
+++ b/desktop/unx/splash/splash.component
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<component loader="com.sun.star.loader.SharedLibrary"
+ xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.office.comp.PipeSplashScreen">
+ <service name="com.sun.star.office.PipeSplashScreen"/>
+ </implementation>
+</component>
diff --git a/desktop/unx/splash/unxsplash.cxx b/desktop/unx/splash/unxsplash.cxx
index 6c15014163..de703ba5c3 100644
--- a/desktop/unx/splash/unxsplash.cxx
+++ b/desktop/unx/splash/unxsplash.cxx
@@ -34,20 +34,21 @@
#include <tools/stream.hxx>
#include <sfx2/sfx.hrc>
#include <com/sun/star/registry/XRegistryKey.hpp>
+#include <cppuhelper/implementationentry.hxx>
#include <rtl/logfile.hxx>
#include <rtl/ustrbuf.hxx>
#include <rtl/math.hxx>
-#define PIPE_ARG "-splash-pipe="
+#define PIPE_ARG "--splash-pipe="
using namespace ::rtl;
+using namespace ::com::sun::star;
using namespace ::com::sun::star::registry;
namespace desktop
{
-
-UnxSplashScreen::UnxSplashScreen( const Reference< XMultiServiceFactory >& rSMgr )
- : m_rFactory( rSMgr ),
+ UnxSplashScreen::UnxSplashScreen( const Reference< uno::XComponentContext >& xCtx )
+ : m_xCtx( xCtx ),
m_pOutFd( NULL )
{
}
@@ -103,14 +104,14 @@ void SAL_CALL UnxSplashScreen::setValue( sal_Int32 nValue )
{
if ( m_pOutFd )
{
- fprintf( m_pOutFd, "%d%%\n", nValue );
+ fprintf( m_pOutFd, "%"SAL_PRIdINT32"%%\n", nValue );
fflush( m_pOutFd );
}
}
// XInitialize
void SAL_CALL
-UnxSplashScreen::initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any>& aArguments )
+UnxSplashScreen::initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any>& )
throw ( RuntimeException )
{
for ( sal_uInt32 i = 0; i < osl_getCommandArgCount(); i++ )
@@ -124,57 +125,72 @@ UnxSplashScreen::initialize( const ::com::sun::star::uno::Sequence< ::com::sun::
int fd = aNum.toInt32();
m_pOutFd = fdopen( fd, "w" );
#if OSL_DEBUG_LEVEL > 1
- fprintf( stderr, "Got argument '-splash-pipe=%d ('%s') (%p)\n",
+ fprintf( stderr, "Got argument '--splash-pipe=%d ('%s') (%p)\n",
fd, (const sal_Char *)rtl::OUStringToOString( aNum, RTL_TEXTENCODING_UTF8 ),
m_pOutFd );
#endif
}
}
}
+}
+
+using namespace desktop;
// get service instance...
-UnxSplashScreen *UnxSplashScreen::m_pINSTANCE = NULL;
-osl::Mutex UnxSplashScreen::m_aMutex;
+static uno::Reference< uno::XInterface > m_xINSTANCE;
-Reference< XInterface > UnxSplashScreen::getInstance( const Reference< XMultiServiceFactory >& rSMgr )
+uno::Reference< uno::XInterface > SAL_CALL UnxSplash_createInstance(const uno::Reference< uno::XComponentContext > & xCtx ) throw( uno::Exception )
{
- if ( m_pINSTANCE == NULL )
+ static osl::Mutex m_aMutex;
+ if ( !m_xINSTANCE.is() )
{
osl::MutexGuard guard( m_aMutex );
- if ( m_pINSTANCE == NULL )
- return (XComponent*) new UnxSplashScreen( rSMgr );
+ if ( !m_xINSTANCE.is() )
+ m_xINSTANCE = (cppu::OWeakObject*) new UnxSplashScreen( xCtx );
}
- return (XComponent*)NULL;
+ return m_xINSTANCE;
}
-// static service info...
-const char* UnxSplashScreen::interfaces[] =
+OUString UnxSplash_getImplementationName()
{
- "com.sun.star.task.XStartusIndicator",
- "com.sun.star.lang.XInitialization",
- NULL,
-};
-const sal_Char *UnxSplashScreen::serviceName = "com.sun.star.office.PipeSplashScreen";
-const sal_Char *UnxSplashScreen::implementationName = "com.sun.star.office.comp.PipeSplashScreen";
-const sal_Char *UnxSplashScreen::supportedServiceNames[] = { "com.sun.star.office.PipeSplashScreen", NULL };
+ return OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.office.comp.PipeSplashScreen" ) );
+}
-OUString UnxSplashScreen::impl_getImplementationName()
+uno::Sequence< OUString > SAL_CALL UnxSplash_getSupportedServiceNames() throw()
{
- return OUString::createFromAscii( implementationName );
+ const OUString aServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.office.PipeSplashScreen" ) );
+ const uno::Sequence< OUString > aSeq( &aServiceName, 1 );
+ return aSeq;
}
-Sequence<OUString> UnxSplashScreen::impl_getSupportedServiceNames()
+::cppu::ImplementationEntry aEntries[] =
{
- Sequence<OUString> aSequence;
- for ( int i = 0; supportedServiceNames[i] != NULL; i++ )
{
- aSequence.realloc( i+1 );
- aSequence[i] = OUString::createFromAscii( supportedServiceNames[i] );
- }
- return aSequence;
-}
+ UnxSplash_createInstance, UnxSplash_getImplementationName,
+ UnxSplash_getSupportedServiceNames,
+ ::cppu::createSingleComponentFactory,
+ 0, 0
+ },
+ { 0, 0, 0, 0, 0, 0 }
+};
+
+extern "C"
+{
+
+SAL_DLLPUBLIC_EXPORT void SAL_CALL
+component_getImplementationEnvironment( const sal_Char ** ppEnvTypeName,
+ uno_Environment ** )
+{ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME; }
+SAL_DLLPUBLIC_EXPORT void* SAL_CALL
+component_getFactory( const sal_Char* pImplName, void* pServiceManager, void* pRegistryKey )
+{
+ return ::cppu::component_getFactoryHelper( pImplName, pServiceManager,
+ pRegistryKey, aEntries );
}
+} // extern "C"
+
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/unx/splash/unxsplash.hxx b/desktop/unx/splash/unxsplash.hxx
index 31f57efbec..b25e858d9b 100644
--- a/desktop/unx/splash/unxsplash.hxx
+++ b/desktop/unx/splash/unxsplash.hxx
@@ -31,6 +31,7 @@
#include <com/sun/star/uno/Exception.hpp>
#include <com/sun/star/uno/Reference.h>
#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
#include <com/sun/star/task/XStatusIndicator.hpp>
#include <com/sun/star/lang/XInitialization.hpp>
#include <cppuhelper/implbase2.hxx>
@@ -54,28 +55,17 @@ private:
UnxSplashScreen( void );
UnxSplashScreen operator =( const UnxSplashScreen& );
- UnxSplashScreen( const Reference< XMultiServiceFactory >& xFactory );
-
virtual ~UnxSplashScreen();
static UnxSplashScreen *m_pINSTANCE;
static osl::Mutex m_aMutex;
- Reference< XMultiServiceFactory > m_rFactory;
+ Reference< XComponentContext > m_xCtx;
FILE *m_pOutFd;
public:
- static const char* interfaces[];
- static const sal_Char *serviceName;
- static const sal_Char *implementationName;
- static const sal_Char *supportedServiceNames[];
-
- static Reference< XInterface > getInstance( const Reference < XMultiServiceFactory >& xFactory );
-
- // static service info
- static OUString impl_getImplementationName();
- static Sequence<OUString> impl_getSupportedServiceNames();
+ UnxSplashScreen( const Reference< XComponentContext >& xCtx );
// XStatusIndicator
virtual void SAL_CALL start( const OUString& aText, sal_Int32 nRange ) throw ( RuntimeException );
diff --git a/desktop/util/makefile.mk b/desktop/util/makefile.mk
index 3d4950cb40..df2fe688b9 100644..100755
--- a/desktop/util/makefile.mk
+++ b/desktop/util/makefile.mk
@@ -78,11 +78,6 @@ APP1VERINFO=verinfo.rc
APP1LINKRES=$(MISC)$/$(TARGET)1.res
APP1STACK=10000000
-# create a manifest file with the same name as the
-#office executable file soffice.exe.manifest
-#$(BIN)$/$(TARGET).exe.manifest: template.manifest
-#$(COPY) $< $@
-
.ENDIF # WNT
.ENDIF # "$(GUI)" != "OS2"
@@ -96,7 +91,6 @@ APP5OBJS=$(OBJ)$/copyright_ascii_ooo.obj $(OBJ)$/main.obj
APP5STDLIBS = $(SALLIB) $(SOFFICELIB)
.IF "$(OS)" == "LINUX"
APP5STDLIBS+= -lXext -lX11
-#APP5STDLIBS+= -lXext -lSM -lICE
.ENDIF # LINUX
APP5DEPN= $(APP1TARGETN) $(APP5RES) ooverinfo.rc
@@ -206,7 +200,7 @@ ALLTAR : $(BIN)$/soffice_oo$(EXECPOST)
.IF "$(LINK_SO)"=="TRUE"
$(BIN)$/so$/soffice_mac$(EXECPOST) : $(APP1TARGETN)
$(COPY) $< $@
-
+
ALLTAR : $(BIN)$/so$/soffice_mac$(EXECPOST)
.ENDIF # "$(LINK_SO)"=="TRUE"
diff --git a/desktop/util/ooverinfo.rc b/desktop/util/ooverinfo.rc
index 5412f5fb2f..be74695639 100644..100755
--- a/desktop/util/ooverinfo.rc
+++ b/desktop/util/ooverinfo.rc
@@ -86,7 +86,7 @@ VS_VERSION_INFO versioninfo
15 ICON "icons\\oasis-formula.ico"
16 ICON "icons\\oasis-web-template.ico"
17 ICON "icons\\empty-document.ico"
-18 ICON "icons\\ooo-configuration.ico"
+18 ICON "icons\\empty-document.ico"
19 ICON "icons\\ooo3_open.ico"
20 ICON "icons\\empty-document.ico"
21 ICON "icons\\ooo3_writer_app.ico"
diff --git a/desktop/util/ooverinfo2.rc b/desktop/util/ooverinfo2.rc
index 8bc39767f0..caacb29412 100644..100755
--- a/desktop/util/ooverinfo2.rc
+++ b/desktop/util/ooverinfo2.rc
@@ -25,21 +25,7 @@
*
*************************************************************************/
-#define VERSION 3
-#define SUBVERSION 3
-//#define VERVARIANT 0
-// .0 + VER_CONCEPT
-// .100 + VER_ALPHA
-// .200 + VER_BETA
-// .300 + VER_GAMMA
-// .500 + VER_FINAL
-//#define VER_CONCEPT 0
-//#define VER_BETA 6
-#define VER_FINAL 0
-
-#define VER_DAY 1
-#define VER_MONTH 1
-#define VER_YEAR 2010
+#include "version.hrc"
// -----------------------------------------------------------------------
@@ -64,7 +50,7 @@ ICON 14 "icons/oasis-database.ico"
ICON 15 "icons/oasis-formula.ico"
ICON 16 "icons/oasis-web-template.ico"
ICON 17 "icons/empty-document.ico"
-ICON 18 "icons/ooo-configuration.ico"
+ICON 18 "icons/empty-document.ico"
ICON 19 "icons/ooo-open.ico"
ICON 20 "icons/empty-document.ico"
ICON 21 "icons/ooo-writer-app.ico"
diff --git a/desktop/util/template.manifest b/desktop/util/template.manifest
index d3bd0c101f..d3bd0c101f 100644..100755
--- a/desktop/util/template.manifest
+++ b/desktop/util/template.manifest
diff --git a/desktop/util/verinfo.rc b/desktop/util/verinfo.rc
index 7fce1e773a..f24dff5516 100755..100644
--- a/desktop/util/verinfo.rc
+++ b/desktop/util/verinfo.rc
@@ -91,8 +91,8 @@ VS_VERSION_INFO versioninfo
15 ICON "icons\\oasis-formula.ico"
16 ICON "icons\\oasis-web-template.ico"
17 ICON "icons\\empty-document.ico"
-18 ICON "icons\\so8-configuration.ico"
-19 ICON "icons\\so9_open.ico"
+18 ICON "icons\\empty-document.ico"
+19 ICON "icons\\so9_main_app.ico"
20 ICON "icons\\empty-document.ico"
21 ICON "icons\\so9_writer_app.ico"
22 ICON "icons\\so9_calc_app.ico"
diff --git a/desktop/util/writer.r b/desktop/util/writer.r
deleted file mode 100644
index 2a0ec27229..0000000000
--- a/desktop/util/writer.r
+++ /dev/null
@@ -1 +0,0 @@
-//************************************************************************* //* //* $Workfile: writer.r $ //* //* Ersterstellung KH //* //* Letzte Aenderung $Author: hr $ $Date: 2000-09-18 16:15:12 $ //* $Revision: 1.1.1.1 $ //* //* $Logfile: T:/desktop/util/writer.r_v $ //* //* Copyright (c) 1990 - 1995, STAR DIVISION //* //************************************************************************* #include "Types.r" //#ifndef MAINSHLBNAME // #define MAINSHLBNAME "Sw356MP Library" //#endif // //resource 'STR#' (2001, "MainShlbName", purgeable) { // { /* array StringArray: 2 elements */ // /* [1] */ // MAINSHLBNAME, // /* [2] */ // "Test" // } //}; resource 'SIZE' (-1) { reserved, acceptSuspendResumeEvents, reserved, canBackground, multiFinderAware, backgroundAndForeground, dontGetFrontClicks, ignoreChildDiedEvents, is32BitCompatible, isHighLevelEventAware, onlyLocalHLEvents, isStationeryAware, dontUseTextEditServices, true, reserved, reserved, 7096000, 3584000 }; resource 'SIZE' (0) { reserved, acceptSuspendResumeEvents, reserved, canBackground, multiFinderAware, backgroundAndForeground, dontGetFrontClicks, ignoreChildDiedEvents, is32BitCompatible, isHighLevelEventAware, onlyLocalHLEvents, isStationeryAware, dontUseTextEditServices, true, reserved, reserved, 7096000, 3584000 }; resource 'ics8' (128) { $"EFF0 EF00 0000 0000 F900 0000 0000 0000" $"F0EF F000 0000 00F9 D257 0000 0000 0000" $"EFF0 EF00 0000 7A00 00D2 F900 0000 0000" $"EFF0 F000 00FA 00F9 FA00 D256 0000 0000" $"F0EF F000 7B00 FA00 F9FF 00D2 F900 0000" $"EFEF EFFA 00F9 0000 00F9 FF00 D2F9 0000" $"F0F0 F900 FA00 0000 0000 FAF9 00D2 F900" $"EFF9 00FA 00FA F9FA F9FA F9FA FF00 D2F9" $"F0EF FAF9 FAE5 E6E6 05E5 D2D2 F9FA F900" $"EFF0 F900 00E6 E505 0505 E6E5 D2F9 0000" $"F0F9 0000 F7E5 E6E5 05E6 E5E6 E5D2 FF00" $"EF00 0000 E5E6 E5D2 D2E5 E6E5 E6D2 FF00" $"F900 FAE6 E5E6 D2E5 D2E5 E5E6 D2D2 F9FA" $"00FA 00E6 2BD2 E5E6 E5D2 E6E5 D2D2 C9F9" $"F9C9 2B2B F7D2 E6E5 E6D2 E5E6 F9D2 C2FA" $"FA00 C3D2 D2D2 E5E6 C2E5 C9F9 D2C3 FAF9" }; resource 'ics8' (129) { $"00FF FFFF FFFF FFFF FFFF FF00 0000 0000" $"00FF F5F5 F5F5 F5F5 F5F5 FFFF 0000 0000" $"00FF F5EC ECEC F5F5 F5F5 FFF8 FF00 0000" $"00FF F5EC ECEC FFFF 00FF FFFF FFFF 0000" $"00FF F5EC ECEC 0000 0000 00F5 F5FF 0000" $"00FF F5EC ECF5 FFFF FF00 FFF5 F5FF 0000" $"00FF F5EC F5F5 0000 0000 00F5 F5FF 0000" $"00FF F5EC F5F5 FF00 FFFF FFF5 F5FF 0000" $"00FF F5EC F5F5 0000 0000 00F5 F5FF 0000" $"00FF F5EC ECF5 FFFF FF00 FFF5 F5FF 0000" $"00FF F5EC ECEC 0000 0000 00F5 F5FF 0000" $"00FF F5EC ECEC FF00 FFFF FFF5 F5FF 0000" $"00FF F5EC ECEC 0000 0000 00F5 F5FF 0000" $"00FF F5EC ECEC FFFF FF00 FFF5 F5FF 0000" $"00FF F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000" $"00FF FFFF FFFF FFFF FFFF FFFF FFFF" }; resource 'ics8' (130) { $"00FF FFFF FFFF FFFF FFFF FFFF 0000 0000" $"00FF F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"00FF F5EC ECEC FFF5 FFFF F5FF FFFF 0000" $"00FF F5EC ECEC F5F5 F5F5 F5FF F5FF 0000" $"00FF F5EC ECEC FFFF F5FF F5FF F5FF 0000" $"00FF F5EC ECF5 F5F5 F5F5 F5FF F5FF 0000" $"00FF F5EC F5F5 FFF5 FFFF F5FF F5FF 0000" $"00FF F5EC F5F5 F5F5 F5F5 F5FF F5FF 0000" $"00FF F5EC ECF5 FFFF F5FF F5FF F5FF 0000" $"00FF F5EC ECEC F5F5 F5F5 F5FF F5FF 0000" $"00FF F5EC ECEC FFF5 FFFF FFFF F5FF 0000" $"00FF F5EC ECEC F5F5 FF2B FFF5 F5FF 0000" $"00FF F5F5 F5F5 F5F5 FFFF F5F5 F5FF 0000" $"00FF FFFF FFFF FFFF FFF5 F5FF F5FF 0000" $"0000 00FF F5F5 F5F5 F5F5 F5F5 F5FF 0000" $"0000 00FF FFFF FFFF FFFF FFFF FFFF" }; resource 'ics8' (131) { $"00FF FFFF FFFF FFFF FFFF FF00 0000 0000" $"00FF F5F5 F5F5 F5F5 F5F5 FFFF 0000 0000" $"00FF F5EC ECEC F5F5 F5F5 FF2B FF00 0000" $"00FF F5EC ECEC F5F5 F5F5 FFFF FFFF 0000" $"00FF F5EC ECEC F5F5 F5F5 F5F5 F5FF 0000" $"00FF F5EC ECF5 F5F5 F5F5 F5F5 F5FF 0000" $"00FF F5EC FFF5 FFFF F5FF FFF5 F5FF 0000" $"00FF F5EC F5F5 F5F5 F5F5 F5F5 F5FF 0000" $"00FF F5EC FFFF FFFF F5FF FFF5 F5FF 0000" $"00FF F5EC ECF5 F5F5 F5F5 F5F5 F5FF 0000" $"00FF F5EC FFFF F5FF FFF5 FFF5 F5FF 0000" $"00FF F5EC ECEC F5F5 F5F5 F5F5 F5FF 0000" $"00FF F5EC ECEC F5F5 F5F5 F5F5 F5FF 0000" $"00FF F5EC ECEC F5F5 F5F5 F5F5 F5FF 0000" $"00FF F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000" $"00FF FFFF FFFF FFFF FFFF FFFF FFFF" }; resource 'ics8' (132) { $"0000 FFFF FFFF FFFF FFFF FFFF 0000 0000" $"0000 FF00 0000 0000 0000 FF00 FF00 0000" $"0000 FF00 ECEC ECC0 4848 FF00 00FF 0000" $"0000 FF00 ECEC ECC0 0000 FFFF FFFF 0000" $"0000 FF00 ECEC ECFF 0000 0000 00FF 0000" $"0000 FF00 ECEC C000 FFFF 00FF FFFF 0000" $"0000 FF00 EC00 48FF 0000 FF00 00FF 0000" $"0000 FF00 EC00 C000 FFFF 00FF FFFF 0000" $"0000 FF00 EC00 48FF 0000 FF00 00FF 0000" $"0000 FF00 ECEC 48FF 0000 FF00 00FF 0000" $"0000 FF00 ECEC B000 FFFF 00FF FFFF 0000" $"0000 FF00 ECEC ECFF 0000 FF00 00FF 0000" $"0000 FF00 ECEC ECFF 0000 FF00 00FF 0000" $"0000 FF00 ECEC EC00 FFFF 00FF FFFF 0000" $"0000 FF00 0000 0000 0000 0000 00FF 0000" $"0000 FFFF FFFF FFFF FFFF FFFF FFFF" }; resource 'ics8' (133) { $"00FF FFFF FFFF FFFF FFFF FFFF 0000 0000" $"00FF F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"00FF F5EC ECEC C048 48C0 48FF FFFF 0000" $"00FF F5EC ECEC 00FF FF00 FFFF 00FF 0000" $"00FF F5EC ECEC FFF5 F5FF 00FF 00FF 0000" $"00FF F5EC EC48 FFF5 F5FF 00FF FFFF 0000" $"00FF F5EC F5C0 00FF FF00 FFFF 00FF 0000" $"00FF F5EC F548 FFF5 F5FF F5FF 00FF 0000" $"00FF F5EC EC48 FFF5 F5FF F5FF FFFF 0000" $"00FF F5EC ECEC 00FF FF00 FFFF 00FF 0000" $"00FF F5EC ECEC FFF5 FFFF FFFF 00FF 0000" $"00FF F5EC ECEC FFF5 FF2B FF00 FFFF 0000" $"00FF F5F5 F5F5 F5F5 FFFF 0000 00FF 0000" $"00FF FFFF FFFF FFFF FF00 FF00 00FF 0000" $"0000 00FF 0000 0000 0000 0000 00FF 0000" $"0000 00FF FFFF FFFF FFFF FFFF FFFF" }; resource 'ics8' (134) { $"00FF FFFF FFFF FFFF FFFF FF00 0000 0000" $"00FF F5F5 F5F5 F5F5 F5F5 FFFF 0000 0000" $"00FF F5EC ECEC FAFA FAFA FF00 FF00 0000" $"00FF F5EC ECEC FAFC FCFC FFFF FFFF 0000" $"00FF F5EC ECEC FAFC 05EC F5F5 F5FF 0000" $"00FF F5EC ECF5 FAFC D8E3 F5F5 FFFF 0000" $"00FF F5EC F5F5 FAFC F5F5 F5FF F5FF 0000" $"00FF F5EC F5F5 FAFC F5FF FFF5 F5FF 0000" $"00FF F5EC F5F5 FAFF FFF5 F5F5 F5FF 0000" $"00FF F5EC ECF5 FFF5 F5F5 2BF5 F5FF 0000" $"00FF F5EC ECEC F5FA FA2B 2B2B F5FF 0000" $"00FF F5EC ECEC F5FA FAF5 2BF5 F5FF 0000" $"00FF F5EC ECEC F5F5 F5F8 F5F5 F5FF 0000" $"00FF F5EC ECEC F5F5 F8F8 F8F5 F5FF 0000" $"00FF F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000" $"00FF FFFF FFFF FFFF FFFF FFFF FFFF" }; resource 'ics8' (135) { $"00FF FFFF FFFF FFFF FFFF FFFF FF00 0000" $"00FF F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"00FF F5EC ECEC FAFA FAFA FAFA FFFF FF00" $"00FF F5EC ECEC FAFC FCFC FCFC FFF5 FF00" $"00FF F5EC ECF5 FAFC 05EC F5F5 FFF5 FF00" $"00FF F5EC F5F5 FAFC D8E3 F5F5 FFF5 FF00" $"00FF F5EC F5F5 FAFC 0000 FFFF FFF5 FF00" $"00FF F5EC F5F5 FAFC FFFF F5F5 FFF5 FF00" $"00FF F5EC ECF5 FFFF F5F5 F5F5 FFF5 FF00" $"00FF F5EC ECEC F5F5 F5F5 F5F5 FFF5 FF00" $"00FF F5EC ECEC FAFA F5FF FFFF FFF5 FF00" $"00FF F5EC ECEC FAFA F5FF 2BFF F5F5 FF00" $"00FF F5F5 F5F5 F5F5 F5FF FFF5 F5F5 FF00" $"00FF FFFF FFFF FFFF FFFF F5F5 F5F5 FF00" $"0000 00FF F5F5 F5F5 F5F5 F5F5 F5F5 FF00" $"0000 00FF FFFF FFFF FFFF FFFF FFFF FF" }; resource 'ics8' (136) { $"00FF FFFF FFFF FFFF FFFF FF00 0000 0000" $"00FF F5F5 F5F5 F5F5 F5F5 FFFF 0000 0000" $"00FF F5EC ECEC FCF5 F5F5 FFF5 FF00 0000" $"00FF F5EC ECEC FAF5 F5F5 FFFF FFFF 0000" $"00FF F5EC ECEC FCF5 05EC ECF5 F5FF 0000" $"00FF F5EC ECF5 FA05 05EC ECEC F5FF 0000" $"00FF F5EC F5F5 FC05 0505 ECEC F5FF 0000" $"00FF F5EC F5F5 FA05 05D8 13D8 F5FF 0000" $"00FF F5EC F5F5 FCF5 D813 D8F5 F5FF 0000" $"00FF F5EC ECF5 FAF5 F5F5 F5F5 C0FF 0000" $"00FF F5EC ECEC FCF5 F5C0 F5C0 F5FF 0000" $"00FF F5EC ECEC FAF5 C0F5 C0F5 F5FF 0000" $"00FF F5EC ECEC FCF5 F5F5 F5F5 F5FF 0000" $"00FF F5EC ECEC FAFC FAFC FAFC F5FF 0000" $"00FF F5F5 F5F5 0000 0000 00F5 F5FF 0000" $"00FF FFFF FFFF FFFF FFFF FFFF FFFF" }; resource 'ics8' (137) { $"00FF FFFF FFFF FFFF FFFF FFFF FF00 0000" $"00FF F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"00FF F5EC ECEC F505 ECEC F5F5 FFFF FF00" $"00FF F5EC ECC0 0505 ECEC ECF5 FFF5 FF00" $"00FF F5EC ECFB 0505 05EC ECF5 FFF5 FF00" $"00FF F5EC F5F9 0505 D813 D8F5 FFF5 FF00" $"00FF F5EC F5FB F5D8 13D8 F5F5 FFF5 FF00" $"00FF F5EC F5F9 F5F5 F5F5 F5C0 FFF5 FF00" $"00FF F5EC ECFB F5F5 C0F5 C000 FFF5 FF00" $"00FF F5EC ECC0 F5C0 F5C0 0000 FFF5 FF00" $"00FF F5EC ECEC F5F5 F5FF FFFF FFF5 FF00" $"00FF F5EC ECC0 FBF9 FBFF 2BFF F5F5 FF00" $"00FF F5F5 F5F5 F5F5 F5FF FFF5 F5F5 FF00" $"00FF FFFF FFFF FFFF FFFF F5F5 F5F5 FF00" $"0000 00FF F5F5 F5F5 F5F5 F5F5 F5F5 FF00" $"0000 00FF FFFF FFFF FFFF FFFF FFFF FF" }; resource 'ics8' (138) { $"0000 FFFF FFFF FFFF FFFF FF00 0000 0000" $"0000 FFF5 F5F5 F5F5 F5F5 FFFF 0000 0000" $"0000 FFF5 ECEC ECFD D8F5 FF2B FF00 0000" $"0000 FFF5 ECEC ECFD D8D8 FFFF FFFF 0000" $"0000 FFF5 ECEC ECFD 0505 05FD F5FF 0000" $"0000 FFF5 ECEC F5FD 05E3 00FD F5FF 0000" $"0000 FFF5 ECF5 F5FD FDFD FDFD F5FF 0000" $"0000 FFF5 ECF5 F5FD E3E3 E3FD F5FF 0000" $"0000 FFF5 ECF5 F5FD E3E3 E3FD F5FF 0000" $"0000 FFF5 ECEC F5FD FDFD FDFD F5FF 0000" $"0000 FFF5 ECEC ECFD 2B2B 2BFD F5FF 0000" $"0000 FFF5 ECEC ECFD 2B00 00FD F5FF 0000" $"0000 FFF5 ECEC ECFD FDFD FDFD F5FF 0000" $"0000 FFF5 ECEC ECFD 05E3 E3FD F5FF 0000" $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5FF 0000" $"0000 FFFF FFFF FFFF FFFF FFFF FFFF" }; resource 'ics8' (139) { $"00FF FFFF FFFF FFFF FFFF FFFF FF00 0000" $"00FF F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"00FF F5EC ECEC F5FD ECEC FDF5 FFFF FF00" $"00FF F5EC ECEC F5FD FDFD FDF5 FFF5 FF00" $"00FF F5EC ECEC F5FD E3D8 FDF5 FFF5 FF00" $"00FF F5EC EC00 F5FD D8E3 FDF5 FFF5 FF00" $"00FF F5EC 0000 F5FD FDFD FDF5 FFF5 FF00" $"00FF F5EC 0000 F5FD E3E3 FDF5 FFF5 FF00" $"00FF F5EC EC00 F5FD E3E3 FDF5 FFF5 FF00" $"00FF F5EC ECEC F5FD FDFD FDF5 FFF5 FF00" $"00FF F5EC ECEC F5FD 05FF FFFF FFF5 FF00" $"00FF F5EC ECEC F5FD 05FF 2BFF F5F5 FF00" $"00FF F5F5 F5F5 F5F5 F5FF FFF5 FDF5 FF00" $"00FF FFFF FFFF FFFF FFFF F505 FDF5 FF00" $"0000 00FF F5F5 F5F5 F5F5 F5F5 F5F5 FF00" $"0000 00FF FFFF FFFF FFFF FFFF FFFF FF" }; resource 'ics8' (140) { $"00FF FFFF FFFF FFFF FFFF FF00 0000 0000" $"00FF F5F5 F5F5 F5F5 F5F5 FFFF 0000 0000" $"00FF F5EC ECEC F5F5 F5F5 FF2B FF00 0000" $"00FF F5EC ECEC F5F5 F5F5 FFFF FFFF 0000" $"00FF F5EC ECB0 FFFF FFFF FFF5 F5FF 0000" $"00FF F5EC ECFF FFF5 F5F5 FFF5 F5FF 0000" $"00FF F5EC F500 FFFF F5F5 F5F5 F5FF 0000" $"00FF F5EC F505 F7FF FFF5 F5F5 F5FF 0000" $"00FF F5EC F5F7 0500 FFFF F5F5 F5FF 0000" $"00FF F5EC EC00 0000 FFFF F5F5 F5FF 0000" $"00FF F5EC ECEC 00FF FFF5 F5F5 F5FF 0000" $"00FF F5EC ECEC FFFF F5F5 F5F5 F5FF 0000" $"00FF F5EC ECB0 FFF5 F5F5 FFF5 F5FF 0000" $"00FF F5EC ECB0 FFFF FFFF FFF5 F5FF 0000" $"00FF F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000" $"00FF FFFF FFFF FFFF FFFF FFFF FFFF" }; resource 'ics8' (141) { $"00FF FFFF FFFF FFFF FFFF FFFF FF00 0000" $"00FF F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"00FF F5EC ECEC FFFF FFFF FFF5 FFFF FF00" $"00FF F5EC ECEC FFF5 F5F5 FFF5 FFF5 FF00" $"00FF F5EC ECF5 FFFF F5F5 F5F5 FFF5 FF00" $"00FF F5EC F5F5 F5FF FFF5 F5F5 FFF5 FF00" $"00FF F5EC F505 2BF5 FFFF F5F5 FFF5 FF00" $"00FF F5EC F52B 05F5 FFFF F5F5 FFF5 FF00" $"00FF F5EC ECF5 F5FF FFF5 F5F5 FFF5 FF00" $"00FF F5EC ECEC FFFF F5F5 F5F5 FFF5 FF00" $"00FF F5EC ECEC FFF5 F5FF FFFF FFF5 FF00" $"00FF F5EC ECEC FFFF FFFF 2BFF F5F5 FF00" $"00FF F5F5 F5F5 F5F5 F5FF FFF5 F5F5 FF00" $"00FF FFFF FFFF FFFF FFFF F5F5 F5F5 FF00" $"0000 00FF F5F5 F5F5 F5F5 F5F5 F5F5 FF00" $"0000 00FF FFFF FFFF FFFF FFFF FFFF FF" }; resource 'ics8' (142) { $"EFF0 EF00 0000 0000 F900 0000 0000 0000" $"F0EF F000 0000 00F9 D257 0000 0000 0000" $"EFF0 EF00 0000 7A00 00D2 F900 0000 0000" $"EFF0 F000 00FA 00F9 FA00 D256 0000 0000" $"F0EF F000 7B00 FA00 F9FF 00D2 F900 0000" $"EFEF EFFA 00F9 0000 00F9 FF00 D2F9 0000" $"F0F0 F900 FA00 0000 0000 FAF9 00D2 F900" $"EFF9 00FA 00FA F9FA F9FA F9FA FF00 D2F9" $"F0EF FAF9 FAE5 E6E6 05E5 D2D2 F9FA F900" $"EFF0 F900 00E6 E505 0505 E6E5 D2F9 0000" $"F0F9 0000 F7E5 E6E5 05E6 E5E6 E5D2 FF00" $"EF00 0000 E5E6 E5D2 D2E5 E6E5 E6D2 FF00" $"F900 FAE6 E5E6 D2E5 D2E5 E5E6 D2D2 F9FA" $"00FA 00E6 2BD2 E5E6 E5D2 E6E5 D2D2 C9F9" $"F9C9 2B2B F7D2 E6E5 E6D2 E5E6 F9D2 C2FA" $"FA00 C3D2 D2D2 E5E6 C2E5 C9F9 D2C3 FAF9" }; resource 'ics4' (128) { $"6660 0000 D000 0000 6660 000D 6D00 0000" $"6660 00D0 06D0 0000 6660 0D0D D06D 0000" $"6660 D0D0 DF06 D000 666D 0D00 0DF0 6D00" $"66D0 D000 00DD 06D0 6D0D 0DDD DDDD F06D" $"66DD D999 1966 DDD0 66D0 0991 1199 6D00" $"6D00 C999 1999 96F0 6000 9996 6999 96F0" $"D0D9 9969 6999 66DD 0D09 C699 9699 669D" $"D9CC C699 9699 D67D D086 6699 799D 68DD" }; resource 'ics4' (129) { $"0FFF FFFF FFF0 0000 0F00 0000 00FF 0000" $"0F06 6600 00FC F000 0F06 66FF 0FFF FF00" $"0F06 6600 0000 0F00 0F06 60FF F0F0 0F00" $"0F06 0000 0000 0F00 0F06 00F0 FFF0 0F00" $"0F06 0000 0000 0F00 0F06 60FF F0F0 0F00" $"0F06 6600 0000 0F00 0F06 66F0 FFF0 0F00" $"0F06 6600 0000 0F00 0F06 66FF F0F0 0F00" $"0F00 0000 0000 0F00 0FFF FFFF FFFF FF" }; resource 'ics4' (130) { $"0FFF FFFF FFFF 0000 0F00 0000 000F 0000" $"0F06 66F0 FF0F FF00 0F06 6600 000F 0F00" $"0F06 66FF 0F0F 0F00 0F06 6000 000F 0F00" $"0F06 00F0 FF0F 0F00 0F06 0000 000F 0F00" $"0F06 60FF 0F0F 0F00 0F06 6600 000F 0F00" $"0F06 66F0 FFFF 0F00 0F06 6600 FCF0 0F00" $"0F00 0000 FF00 0F00 0FFF FFFF F00F 0F00" $"000F 0000 0000 0F00 000F FFFF FFFF FF" }; resource 'ics4' (131) { $"0FFF FFFF FFF0 0000 0F00 0000 00FF 0000" $"0F06 6600 00FC F000 0F06 6600 00FF FF00" $"0F06 6600 0000 0F00 0F06 6000 0000 0F00" $"0F06 F0FF 0FF0 0F00 0F06 0000 0000 0F00" $"0F06 FFFF 0FF0 0F00 0F06 6000 0000 0F00" $"0F06 FF0F F0F0 0F00 0F06 6600 0000 0F00" $"0F06 6600 0000 0F00 0F06 6600 0000 0F00" $"0F00 0000 0000 0F00 0FFF FFFF FFFF FF" }; resource 'ics4' (132) { $"00FF FFFF FFFF 0000 00F0 0000 00F0 F000" $"00F0 6667 CCF0 0F00 00F0 6667 00FF FF00" $"00F0 666F 0000 0F00 00F0 6670 FF0F FF00" $"00F0 60CF 00F0 0F00 00F0 6070 FF0F FF00" $"00F0 60CF 00F0 0F00 00F0 66CF 00F0 0F00" $"00F0 6650 FF0F FF00 00F0 666F 00F0 0F00" $"00F0 666F 00F0 0F00 00F0 6660 FF0F FF00" $"00F0 0000 0000 0F00 00FF FFFF FFFF FF" }; resource 'ics4' (133) { $"0FFF FFFF FFFF 0000 0F00 0000 000F 0000" $"0F06 6670 070F FF00 0F06 660F F0FF 0F00" $"0F06 66F0 0F0F 0F00 0F06 60F0 0F0F FF00" $"0F06 070F F0FF 0F00 0F06 00F0 0F0F 0F00" $"0F06 60F0 0F0F FF00 0F06 660F F0FF 0F00" $"0F06 66F0 FFFF 0F00 0F06 66F0 FCF0 FF00" $"0F00 0000 FF00 0F00 0FFF FFFF F0F0 0F00" $"000F 0000 0000 0F00 000F FFFF FFFF FF" }; resource 'ics4' (134) { $"0FFF FFFF FFF0 0000 0F00 0000 00FF 0000" $"0F06 66DD DDF0 F000 0F06 66DE EEFF FF00" $"0F06 66DE 1600 0F00 0F06 60DE 3800 FF00" $"0F06 00DE 000F 0F00 0F06 00DE 0FF0 0F00" $"0F06 00DF F000 0F00 0F06 60F0 00C0 0F00" $"0F06 660D DCCC 0F00 0F06 660D D0C0 0F00" $"0F06 6600 0C00 0F00 0F06 6600 CCC0 0F00" $"0F00 0000 0000 0F00 0FFF FFFF FFFF FF" }; resource 'ics4' (135) { $"0FFF FFFF FFFF F000 0F00 0000 0000 F000" $"0F06 66DD DDDD FFF0 0F06 66DE EEEE F0F0" $"0F06 60DE 1600 F0F0 0F06 00DE 3800 F0F0" $"0F06 00DE 00FF F0F0 0F06 00DE FF00 F0F0" $"0F06 60FF 0000 F0F0 0F06 6600 0000 F0F0" $"0F06 66FF 0FFF F0F0 0F06 66FF 0F0F 00F0" $"0F00 0000 0FF0 00F0 0FFF FFFF FF00 00F0" $"000F 0000 0000 00F0 000F FFFF FFFF FFF0" }; resource 'ics4' (136) { $"0FFF FFFF FFF0 0000 0F00 0000 00FF 0000" $"0F06 66E0 00F0 F000 0F06 66D0 00FF FF00" $"0F06 66E0 1660 0F00 0F06 60D1 1666 0F00" $"0F06 00E1 1166 0F00 0F06 00D1 1343 0F00" $"0F06 00E0 3430 0F00 0F06 60D0 0000 7F00" $"0F06 66E0 0707 0F00 0F06 66D0 7070 0F00" $"0F06 66E0 0000 0F00 0F06 66DE DEDE 0F00" $"0F00 0000 0000 0F00 0FFF FFFF FFFF FF" }; resource 'ics4' (137) { $"0FFF FFFF FFFF F000 0F00 0000 0000 F000" $"0F06 6601 6600 FFF0 0F06 6711 6660 F0F0" $"0F06 6E11 1660 F0F0 0F06 0D11 3C30 F0F0" $"0F06 0E03 C300 F0F0 0F06 0D00 0007 F0F0" $"0F06 6E00 7070 F0F0 0F06 6707 0700 F0F0" $"0F06 6600 0FFF F0F0 0F06 67ED EF0F 00F0" $"0F00 0000 0FF0 00F0 0FFF FFFF FF00 00F0" $"000F 0000 0000 00F0 000F FFFF FFFF FFF0" }; resource 'ics4' (138) { $"00FF FFFF FFF0 0000 00F0 0000 00FF 0000" $"00F0 666E 30FC F000 00F0 666F 33FF FF00" $"00F0 666E 111E 0F00 00F0 660F 180F 0F00" $"00F0 600E FEFE 0F00 00F0 600F 888F 0F00" $"00F0 600E 888E 0F00 00F0 660F EFEF 0F00" $"00F0 666E CCCE 0F00 00F0 666F C00F 0F00" $"00F0 666E FEFE 0F00 00F0 666F 188F 0F00" $"00F0 0000 0000 0F00 00FF FFFF FFFF FF" }; resource 'ics4' (139) { $"0FFF FFFF FFFF F000 0F00 0000 0000 F000" $"0F06 660A 66A0 FFF0 0F06 660A AAA0 F0F0" $"0F06 660A 83A0 F0F0 0F06 600A 38A0 F0F0" $"0F06 000A AAA0 F0F0 0F06 000A 88A0 F0F0" $"0F06 600A 88A0 F0F0 0F06 660A AAA0 F0F0" $"0F06 660A 1FFF F0F0 0F06 660A 1FCF 00F0" $"0F00 0000 0FF0 A0F0 0FFF FFFF FF01 A0F0" $"000F 0000 0000 00F0 000F FFFF FFFF FFF0" }; resource 'ics4' (140) { $"0FFF FFFF FFF0 0000 0F00 0000 00FF 0000" $"0F06 6600 00FC F000 0F06 6600 00FF FF00" $"0F06 6FFF FFF0 0F00 0F06 6FF0 00F0 0F00" $"0F06 00FF 0000 0F00 0F06 01CF F000 0F00" $"0F06 0C10 FF00 0F00 0F06 6000 FF00 0F00" $"0F06 660F F000 0F00 0F06 66FF 0000 0F00" $"0F06 65F0 00F0 0F00 0F06 65FF FFF0 0F00" $"0F00 0000 0000 0F00 0FFF FFFF FFFF FF" }; resource 'ics4' (141) { $"0FFF FFFF FFFF F000 0F00 0000 0000 F000" $"0F06 66FF FFF0 FFF0 0F06 66F0 00F0 F0F0" $"0F06 60FF 0000 F0F0 0F06 000F F000 F0F0" $"0F06 01C0 FF00 F0F0 0F06 0C10 FF00 F0F0" $"0F06 600F F000 F0F0 0F06 66FF 0000 F0F0" $"0F06 66F0 0FFF F0F0 0F06 66FF FFCF 00F0" $"0F00 0000 0FF0 00F0 0FFF FFFF FF00 00F0" $"000F 0000 0000 00F0 000F FFFF FFFF FFF0" }; resource 'ics4' (142) { $"6660 0000 D000 0000 6660 000D 6D00 0000" $"6660 00D0 06D0 0000 6660 0D0D D06D 0000" $"6660 D0D0 DF06 D000 666D 0D00 0DF0 6D00" $"66D0 D000 00DD 06D0 6D0D 0DDD DDDD F06D" $"66DD D999 1966 DDD0 66D0 0991 1199 6D00" $"6D00 C999 1999 96F0 6000 9996 6999 96F0" $"D0D9 9969 6999 66DD 0D09 C699 9699 669D" $"D9CC C699 9699 D67D D086 6699 799D 68DD" }; resource 'ics#' (128) { { /* array: 2 elements */ /* [1] */ $"E000 E080 E040 E4A0 E250 F028 C824 955A" $"EF74 C638 8FFE 9776 3DDD 5F76 4BDF BDEA", /* [2] */ $"E000 E180 E3C0 E7E0 EFF0 FFF8 FFFC FFFE" $"FFFE FFFF FFFF FFFF FFFF FFFF FFFF FFFF" } }; resource 'ics#' (129) { { /* array: 2 elements */ /* [1] */ $"7FE0 4430 4428 477C 4404 4BA4 5004 52E4" $"5004 4BA4 4404 46E4 4404 47A4 4404 7FFC", /* [2] */ $"7FE0 7FF0 7FF8 7FFC 7FFC 7FFC 7FFC 7FFC" $"7FFC 7FFC 7FFC 7FFC 7FFC 7FFC 7FFC 7FFC" } }; resource 'ics#' (130) { { /* array: 2 elements */ /* [1] */ $"7FF0 4410 46DC 4414 4754 4814 52D4 5014" $"4B54 4414 46F4 44A4 44C4 7F94 1004 1FFC", /* [2] */ $"7FF0 7FF0 7FFC 7FFC 7FFC 7FFC 7FFC 7FFC" $"7FFC 7FFC 7FFC 7FFC 7FFC 7FFC 1FFC 1FFC" } }; resource 'ics#' (131) { { /* array: 2 elements */ /* [1] */ $"7FE0 4830 4828 483C 4804 5004 6B64 6004" $"6F64 5004 4DA4 4804 4804 4804 4804 7FFC", /* [2] */ $"7FE0 7FF0 7FF8 7FFC 7FFC 7FFC 7FFC 7FFC" $"7FFC 7FFC 7FFC 7FFC 7FFC 7FFC 7FFC 7FFC" } }; resource 'ics#' (132) { { /* array: 2 elements */ /* [1] */ $"3FF0 2228 2324 233C 2304 26DC 2924 2EDC" $"2924 2524 22DC 2324 2324 22DC 2204 3FFC", /* [2] */ $"3FF0 3FF8 3FFC 3FFC 3FFC 3FFC 3FFC 3FFC" $"3FFC 3FFC 3FFC 3FFC 3FFC 3FFC 3FFC 3FFC" } }; resource 'ics#' (133) { { /* array: 2 elements */ /* [1] */ $"7FF0 4410 465C 45B4 4654 4A5C 55B4 5254" $"4A5C 45B4 46F4 46AC 44C4 7FA4 1004 1FFC", /* [2] */ $"7FF0 7FF0 7FFC 7FFC 7FFC 7FFC 7FFC 7FFC" $"7FFC 7FFC 7FFC 7FFC 7FFC 7FFC 1FFC 1FFC" } }; resource 'ics#' (134) { { /* array: 2 elements */ /* [1] */ $"7FE0 4830 4BE8 4A3C 4AC4 52CC 6214 6264" $"6184 5224 4DD4 49A4 4844 48E4 4804 7FFC", /* [2] */ $"7FE0 7FF0 7FF8 7FFC 7FFC 7FFC 7FFC 7FFC" $"7FFC 7FFC 7FFC 7FFC 7FFC 7FFC 7FFC 7FFC" } }; resource 'ics#' (135) { { /* array: 2 elements */ /* [1] */ $"7FF8 4808 4BFE 4A0A 4ACA 52CA 623A 60CA" $"530A 4C0A 4B7A 4B52 4862 7FC2 1002 1FFE", /* [2] */ $"7FF8 7FF8 7FFE 7FFE 7FFE 7FFE 7FFE 7FFE" $"7FFE 7FFE 7FFE 7FFE 7FFE 7FFE 1FFE 1FFE" } }; resource 'ics#' (136) { { /* array: 2 elements */ /* [1] */ $"7FE0 4830 4A28 483C 4AE4 5174 6334 6154" $"62A4 500C 4A54 48A4 4A04 4954 4804 7FFC", /* [2] */ $"7FE0 7FF0 7FF8 7FFC 7FFC 7FFC 7FFC 7FFC" $"7FFC 7FFC 7FFC 7FFC 7FFC 7FFC 7FFC 7FFC" } }; resource 'ics#' (137) { { /* array: 2 elements */ /* [1] */ $"7FF8 4808 4DCE 4AEA 4E6A 52AA 654A 601A" $"52AA 494A 4C7A 4A52 4862 7FC2 1002 1FFE", /* [2] */ $"7FF8 7FF8 7FFE 7FFE 7FFE 7FFE 7FFE 7FFE" $"7FFE 7FFE 7FFE 7FFE 7FFE 7FFE 1FFE 1FFE" } }; resource 'ics#' (138) { { /* array: 2 elements */ /* [1] */ $"3FE0 2230 22A8 22FC 2294 2494 28F4 2894" $"2894 24F4 2294 2294 22F4 2294 2204 3FFC", /* [2] */ $"3FE0 3FF0 3FF8 3FFC 3FFC 3FFC 3FFC 3FFC" $"3FFC 3FFC 3FFC 3FFC 3FFC 3FFC 3FFC 3FFC" } }; resource 'ics#' (139) { { /* array: 2 elements */ /* [1] */ $"7FF8 4408 452E 45EA 452A 492A 51EA 512A" $"492A 45EA 457A 4552 446A 7FCA 1002 1FFE", /* [2] */ $"7FF8 7FF8 7FFE 7FFE 7FFE 7FFE 7FFE 7FFE" $"7FFE 7FFE 7FFE 7FFE 7FFE 7FFE 1FFE 1FFE" } }; resource 'ics#' (140) { { /* array: 2 elements */ /* [1] */ $"7FE0 4830 4828 483C 4FE4 5624 6304 6184" $"60C4 50C4 4984 4B04 4E24 4FE4 4804 7FFC", /* [2] */ $"7FE0 7FF0 7FF8 7FFC 7FFC 7FFC 7FFC 7FFC" $"7FFC 7FFC 7FFC 7FFC 7FFC 7FFC 7FFC 7FFC" } }; resource 'ics#' (141) { { /* array: 2 elements */ /* [1] */ $"7FF8 4808 4FEE 4E2A 4B0A 518A 60CA 60CA" $"518A 4B0A 4E7A 4FD2 4862 7FC2 1002 1FFE", /* [2] */ $"7FF8 7FF8 7FFE 7FFE 7FFE 7FFE 7FFE 7FFE" $"7FFE 7FFE 7FFE 7FFE 7FFE 7FFE 1FFE 1FFE" } }; resource 'ics#' (142) { { /* array: 2 elements */ /* [1] */ $"E000 E080 E040 E4A0 E250 F028 C824 955A" $"EF74 C638 8FFE 9776 3DDD 5F76 4BDF BDEA", /* [2] */ $"E000 E180 E3C0 E7E0 EFF0 FFF8 FFFC FFFE" $"FFFE FFFF FFFF FFFF FFFF FFFF FFFF FFFF" } }; resource 'ICN#' (128) { { /* array: 2 elements */ /* [1] */ $"0000 0000 F800 8000 F801 C000 F802 6000" $"F804 7000 F80C 9800 F818 4C00 F824 9600" $"F820 1700 F888 2180 F810 01C0 F920 0A60" $"F800 0130 F401 2258 C108 995C D205 5704" $"8450 5D87 E843 7760 C1AC 1CC6 F040 0774" $"FA5C 1DD8 FC57 7770 FA1D 5DDC F977 7774" $"F55D DDDC FA77 7774 F5DD DDDC FB77 7774" $"F5DD DDDC FB77 7774 F1DD DDD8 FF77 7770", /* [2] */ $"0000 0000 F800 8000 F801 C000 F803 E000" $"F807 F000 F80F F800 F81F FC00 F83F FE00" $"F83F FF00 F8FF FF80 F9FF FFC0 FBFF FFE0" $"FFFF FFF0 FFFF FFF8 FFFF FFFC FFFF FFFE" $"FFFF FFFE FFFF FFFE FFFF FFFE FFFF FFFE" $"FFFF FFFC FFFF FFFC FFFF FFFC FFFF FFFC" $"FFFF FFFC FFFF FFFC FFFF FFFC FFFF FFFC" $"FFFF FFFC FFFF FFFC FFFF FFFC FFFF FFFC" } }; resource 'ICN#' (129) { { /* array: 2 elements */ /* [1] */ $"1FFF FE00 1040 0300 1040 0280 1040 0240" $"1040 0220 104D 7E10 1040 03F8 105E 7688" $"1040 0008 10AD 6B48 1100 0008 115D D748" $"1200 0008 12D7 6DC8 1200 0008 12BE F6C8" $"1200 0008 12DD BB08 1100 0008 1176 AAC8" $"1080 0008 105B BD48 1040 0008 1056 F6C8" $"1040 0008 105C EE48 1040 0008 105D 7348" $"1040 0008 1040 0008 1040 0008 1FFF FFF8", /* [2] */ $"1FFF FE00 1FFF FF00 1FFF FF80 1FFF FFC0" $"1FFF FFE0 1FFF FFF0 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" } }; resource 'ICN#' (130) { { /* array: 2 elements */ /* [1] */ $"3FFF FFF0 2080 0010 2080 0010 2080 001C" $"2080 0014 20DB DD14 2080 0014 209D 6D14" $"2100 0014 22B5 D694 2200 0014 25BD EE14" $"2400 0014 24B7 9B94 2400 0014 25DC DD94" $"2400 0014 22DF 3614 2200 0014 216E F594" $"2080 0014 20E7 7A94 2080 0014 20DE 6FE4" $"2080 0844 20CD A8A4 2080 0904 20B7 6AA4" $"2080 0C04 3FFF F804 0800 0004 0FFF FFFC", /* [2] */ $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 0FFF FFFC 0FFF FFFC" } }; resource 'ICN#' (131) { { /* array: 2 elements */ /* [1] */ $"3FFF FC00 2100 0600 2100 0500 2100 0480" $"2100 0440 2100 0420 2100 07F0 2100 0010" $"2100 0010 2200 0010 2400 0010 25DD DB10" $"2800 0010 2800 0010 29DE F710 2800 0010" $"2800 0010 29BF BB10 2400 0010 2400 0010" $"2200 0010 2100 0010 2100 0010 2100 0010" $"2100 0010 2100 0010 2100 0010 2100 0010" $"2100 0010 2100 0010 2100 0010 3FFF FFF0", /* [2] */ $"3FFF FC00 3FFF FE00 3FFF FF00 3FFF FF80" $"3FFF FFC0 3FFF FFE0 3FFF FFF0 3FFF FFF0" $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFF0" $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFF0" $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFF0" $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFF0" $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFF0" $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFF0" } }; resource 'ICN#' (132) { { /* array: 2 elements */ /* [1] */ $"1FFF FE00 1040 0300 1075 EA80 1044 0A40" $"107B F620 1044 0A10 1044 0BF8 1044 0808" $"107B F7F8 1084 0808 1134 0808 1104 0808" $"12FB F7F8 1204 0808 1274 0808 1204 0808" $"12FB F7F8 1104 0808 1134 0808 1104 0808" $"10FB F7F8 1044 0808 1054 0808 1044 0808" $"107B F7F8 1044 0808 1054 0808 1044 0808" $"107B F7F8 1044 0808 1040 0008 1FFF FFF8", /* [2] */ $"1FFF FE00 1FFF FF00 1FFF FF80 1FFF FFC0" $"1FFF FFE0 1FFF FFF0 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" } }; resource 'ICN#' (133) { { /* array: 2 elements */ /* [1] */ $"3FFF FFF0 2080 0010 2085 EBD0 2084 081C" $"20FB F7F4 2084 0814 2094 0814 2084 081C" $"21FB F7F4 2204 0814 2274 0814 2404 081C" $"25FB F7F4 2404 0814 24F4 0814 2404 081C" $"25FB F7F4 2204 0814 2274 0814 2104 081C" $"20FB F7F4 2084 0814 2094 0814 2084 0FEC" $"20FB F844 2084 0884 2094 0904 2084 0AFC" $"2080 0C04 3FFF FA04 0800 0004 0FFF FFFC", /* [2] */ $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 0FFF FFFC 0FFF FFFC" } }; resource 'ICN#' (134) { { /* array: 2 elements */ /* [1] */ $"3FFF FC00 2100 0600 217F FD00 2140 0480" $"2140 0440 214F FC20 2149 87F0 214A 4010" $"214C 2790 224C 2030 244A 4ED0 2449 8110" $"2848 0210 284B 6C10 284B 1010 284B 6010" $"2848 8790 284B 0850 2444 1030 244B F830" $"2233 F830 2143 F830 2103 F850 2103 FF90" $"2103 FC10 2103 F610 2100 6B10 2100 D590" $"2101 FFD0 2100 0010 2100 0010 3FFF FFF0", /* [2] */ $"3FFF FC00 3FFF FE00 3FFF FF00 3FFF FF80" $"3FFF FFC0 3FFF FFE0 3FFF FFF0 3FFF FFF0" $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFF0" $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFF0" $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFF0" $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFF0" $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFF0" $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFF0" } }; resource 'ICN#' (135) { { /* array: 2 elements */ /* [1] */ $"3FFF FFF0 2100 0010 217F FFD0 2140 001C" $"2140 0014 215F FFD4 2153 0014 2154 8014" $"2258 4F34 2458 4054 2454 9D94 2853 0214" $"2850 0414 2856 D814 2856 2014 2856 C014" $"2851 0F14 2456 1094 2448 2054 2217 F054" $"2167 F054 2187 F054 2107 F094 2107 FFF4" $"2107 E824 2107 D844 2100 A884 2101 F904" $"2100 0A04 3FFF FC04 0800 0004 0FFF FFFC", /* [2] */ $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 0FFF FFFC 0FFF FFFC" } }; resource 'ICN#' (136) { { /* array: 2 elements */ /* [1] */ $"1FFF FE00 1080 0300 1088 0280 1098 0240" $"1088 0220 1088 0210 109C 1FF8 1088 6788" $"1088 87C8 1118 87C8 1209 07E8 1209 07E8" $"141D 0FE8 1409 1AA8 1408 B548 1418 EAD8" $"1408 75A8 1408 1E28 121C 0048 1208 6048" $"1108 6088 1098 9088 1088 8908 1089 0708" $"109B 0308 108B 0008 1088 0408 108F FFE8" $"1081 2488 1080 0008 1080 0008 1FFF FFF8", /* [2] */ $"1FFF FE00 1FFF FF00 1FFF FF80 1FFF FFC0" $"1FFF FFE0 1FFF FFF0 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" } }; resource 'ICN#' (137) { { /* array: 2 elements */ /* [1] */ $"3FFF FFF0 2100 0010 2100 0010 2170 781C" $"2121 9E14 2122 1F14 2162 1F14 2124 1F94" $"2224 1F94 2474 3F94 2424 6A94 2822 D514" $"2863 AB54 2821 D694 2820 7894 2870 0114" $"2821 8114 2421 8214 2462 4214 2222 2414" $"2124 1C14 216C 0C14 212C 0014 2120 0FE4" $"213F F844 2104 9884 2100 0904 2100 0A04" $"2100 0C04 3FFF F804 0800 0004 0FFF FFFC", /* [2] */ $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 0FFF FFFC 0FFF FFFC" } }; resource 'ICN#' (138) { { /* array: 2 elements */ /* [1] */ $"1FFF FE00 1040 0300 105E AA80 105C 4240" $"1056 2A20 1055 0210 105F FFF8 105F FFE8" $"105E AAE8 109C 81E8 1116 14A8 1114 16A8" $"121E 82E8 121C 25E8 121E 80E8 121F FFE8" $"1217 FFA8 1214 00A8 111C AAE8 111D 54E8" $"109C 2AE8 105D 44E8 1054 0AA8 1055 14A8" $"105F FFE8 105F FFE8 105C 20E8 105D 52E8" $"1054 09A8 1055 40A8 1040 0008 1FFF FFF8", /* [2] */ $"1FFF FE00 1FFF FF00 1FFF FF80 1FFF FFC0" $"1FFF FFE0 1FFF FFF0 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" } }; resource 'ICN#' (139) { { /* array: 2 elements */ /* [1] */ $"3FFF FFF0 2080 0010 20AC 5550 20AA 2B5C" $"20BD 55D4 20BF FFD4 20BF FFD4 20BD 03D4" $"212C 2B54 222D 2D54 223D 05D4 243C 4BD4" $"243D ABD4 243F FFD4 242F FF54 2428 0154" $"2439 55D4 223A A9D4 2238 55D4 213A 89D4" $"20A8 1554 20AA 2954 20BF FFD4 20BF FFE4" $"20B8 4854 20BA A8B4 20A8 1974 20AA 8A74" $"2080 0DD4 3FFF F854 0800 0004 0FFF FFFC", /* [2] */ $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 0FFF FFFC 0FFF FFFC" } }; resource 'ICN#' (140) { { /* array: 2 elements */ /* [1] */ $"1FFF FE00 1080 0300 1080 0280 1080 0240" $"1080 0220 1080 6210 1080 0FF8 1080 0188" $"109F FE08 111F FF08 121E 0308 120E 0008" $"1407 0108 1403 8008 1411 C008 1448 E008" $"1440 F048 1400 70C8 1208 3048 1200 6008" $"1100 C008 1081 8008 1083 0088 1086 0088" $"108C 0188 109F FF08 109F FF08 1080 0008" $"1098 0008 1098 0008 1080 0008 1FFF FFF8", /* [2] */ $"1FFF FE00 1FFF FF00 1FFF FF80 1FFF FFC0" $"1FFF FFE0 1FFF FFF0 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8" } }; resource 'ICN#' (141) { { /* array: 2 elements */ /* [1] */ $"3FFF FFF0 2080 0010 2080 0010 2080 C01C" $"2080 1814 2080 0314 20BF FC14 20BF FE14" $"213C 0614 221C 0014 220E 0214 2407 0014" $"2407 8014 2421 C014 2481 E014 2480 E114" $"2400 6014 2210 C014 2201 8014 2103 0014" $"2086 0114 208C 0114 2098 0314 20BF FFE4" $"20BF F844 2080 0884 20B0 0904 20B0 0A04" $"2080 0C04 3FFF F804 0800 0004 0FFF FFFC", /* [2] */ $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC" $"3FFF FFFC 3FFF FFFC 0FFF FFFC 0FFF FFFC" } }; resource 'ICN#' (142) { { /* array: 2 elements */ /* [1] */ $"0000 0000 F800 8000 F801 C000 F802 6000" $"F804 7000 F80C 9800 F818 4C00 F824 9600" $"F820 1700 F888 2180 F810 01C0 F920 0A60" $"F800 0130 F401 2258 C108 995C D205 5704" $"8450 5D87 E843 7760 C1AC 1CC6 F040 0774" $"FA5C 1DD8 FC57 7770 FA1D 5DDC F977 7774" $"F55D DDDC FA77 7774 F5DD DDDC FB77 7774" $"F5DD DDDC FB77 7774 F1DD DDD8 FF77 7770", /* [2] */ $"0000 0000 F800 8000 F801 C000 F803 E000" $"F807 F000 F80F F800 F81F FC00 F83F FE00" $"F83F FF00 F8FF FF80 F9FF FFC0 FBFF FFE0" $"FFFF FFF0 FFFF FFF8 FFFF FFFC FFFF FFFE" $"FFFF FFFE FFFF FFFE FFFF FFFE FFFF FFFE" $"FFFF FFFC FFFF FFFC FFFF FFFC FFFF FFFC" $"FFFF FFFC FFFF FFFC FFFF FFFC FFFF FFFC" $"FFFF FFFC FFFF FFFC FFFF FFFC FFFF FFFC" } }; resource 'icl8' (128) { $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"F0EF F0EF F000 0000 0000 0000 0000 0000" $"FA00 0000 0000 0000 0000 0000 0000 0000" $"F0EF F0EF F000 0000 0000 0000 0000 00FA" $"D2FA 0000 0000 0000 0000 0000 0000 0000" $"EFF0 EFF0 EF00 0000 0000 0000 0000 FA00" $"F9D2 FA00 0000 0000 0000 0000 0000 0000" $"F0EF F0EF F000 0000 0000 0000 00FA 0000" $"00FA D2FA 0000 0000 0000 0000 0000 0000" $"EFF0 EFF0 EF00 0000 0000 0000 FAFF 0000" $"FA00 57D2 FA00 0000 0000 0000 0000 0000" $"EFF0 EFF0 EF00 0000 0000 00FA FF00 F7F9" $"00FF 00F9 D2FA 0000 0000 0000 0000 0000" $"F0EF F0EF F000 0000 0000 FA00 00FA F900" $"FA00 00FA F9D2 FA00 0000 0000 0000 0000" $"EFF0 EFF0 EF00 0000 007B FF00 00F9 0000" $"00F9 00FF 00FA D2FA 0000 0000 0000 0000" $"F0EF F0EF F000 0000 FA00 002B FA00 0000" $"0000 FA00 0000 F9D2 FA00 0000 0000 0000" $"EFF0 EFF0 EF00 00F9 0000 00FA 0000 0000" $"0000 00F9 0000 00FA D2FA 0000 0000 0000" $"F0EF F0EF F000 F9FF 0000 FA00 0000 0000" $"0000 0000 FA00 FFF9 F9D2 FA00 0000 0000" $"EFF0 EFF0 EFF9 0000 F7F9 0000 0000 0000" $"0000 0000 00F9 00FF 00F9 D2FA 0000 0000" $"F0EF EFF0 F9FF 0000 F900 0000 0000 F9FA" $"00F9 FAF9 FA00 FA00 00FA F9D2 FA00 0000" $"EFF0 F0F9 0000 00FA 0000 0000 FAF9 00F9" $"FA00 F9FA FFF9 F9FA 00FF 00FA D2FA 0000" $"EFF0 F9FF 0000 FA00 0000 00F9 00FA 00C9" $"00D2 00D2 C2EF F0F0 F900 0000 F9D2 7B00" $"F0F9 0000 00FA 0000 00FA 00D2 0000 C200" $"05E6 E5E6 D2E5 EFEF F0F9 0000 00FA D2FA" $"EFEF FA00 FA00 0000 F9D2 0000 D2F9 E6E6" $"05E5 E6E5 E5E6 E6E5 EFF0 FA00 0000 F900" $"F0EF EFF9 0000 00FA FA00 C300 FAE6 E505" $"0505 E5D2 D2E5 E5F9 E6E5 EFF9 00FA 8C00" $"F0EF F0F0 FA00 F900 00D2 00F9 E505 0505" $"0505 0505 E5D2 E6E6 E5EF F0FF F98C 0000" $"EFF0 EFEF F0F9 FA00 F9D2 FAD2 C8E5 E505" $"0505 E6E5 E6E5 E6EF E6E5 E6FF FF00 0000" $"EFF0 EFF0 EFFA 0000 D2FA 00C2 E5E5 E6E6" $"05E6 D2E6 E5E6 E5E5 E5E6 FFE5 F000 0000" $"F0EF F0EF F0F9 FAF9 0000 E6E6 E5E6 E5E5" $"05E5 E6D2 E6E5 E6EF E5EF E5FF F0FF 0000" $"EFF0 EFF0 F900 00FA D2C2 C9C2 E6E5 D2E5" $"E6D2 D2D2 E5E5 E6E5 E6E5 FFEF E5FF 0000" $"F0EF F0EF 00FA 00D2 F9EB D2C9 E5D2 D2E6" $"D2D2 D2E5 E6E6 E5E6 EFE6 E5E6 EFFF 0000" $"EFF0 EFEF FAF9 D200 D2D2 D2D2 D2D2 D2D2" $"E5E6 E5E6 E5E5 E6E5 E6E5 F0EF F0FF 0000" $"F0EF F0F0 00D2 00D2 D2D2 D2E5 E5E6 E5E6" $"D2E5 D2E5 E6E5 E5E6 EFE5 EFE5 EFFF 0000" $"EFF0 EFF0 F900 D2D2 D2D2 E5E5 E6E5 E6E5" $"E5D2 E5E6 E5E6 E5E6 E5EF E5FF EFFF 0000" $"EFEF F0EF 00D2 00D2 D2E5 E6E6 E5E6 E5E6" $"E6D2 D2E5 E6E5 E6E5 EFF0 FFE5 FFFF 0000" $"F0F0 EFF0 FAF9 D2D2 D2E6 E5E5 E6E5 E6E5" $"E5D2 D2E5 E6E5 E6E5 F0E6 E5EF FFFF 0000" $"EFEF F0EF F000 F0D2 D2D2 E6E5 E6E5 E6E5" $"E6D2 D2D2 E5E6 EFE6 EFF0 EFFF FF00 0000" $"F0F0 EFF0 EFFA C2F0 EFD2 D2D2 E5E6 E5E6" $"D2D2 F0D2 D2EF F0EF F0EF FFFF FF" }; resource 'icl8' (129) { $"0000 00FF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FF00 0000 0000 0000 0000" $"0000 00FF F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 FFFF 0000 0000 0000 0000" $"0000 00FF F5EC ECEC ECEC F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 FF2B FF00 0000 0000 0000" $"0000 00FF F5EC ECEC ECEC F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 FF2B 2BFF 0000 0000 0000" $"0000 00FF F5EC ECEC ECEC F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 FF2B 2B2B FF00 0000 0000" $"0000 00FF F5EC ECEC ECEC F5F5 FFFF F5FF" $"F5FF FFFF FFFF FF2B 2B2B 2BFF 0000 0000" $"0000 00FF F5EC ECEC ECEC F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 FFFF FFFF FFFF FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FF FFFF FFF5" $"F5FF FFFF F5FF FFF5 FFF5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECF5 FFF5 FFFF F5FF" $"F5FF FFF5 FFF5 FFFF F5FF F5F5 FF00 0000" $"0000 00FF F5EC ECEC F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC F5FF F5FF FFFF F5FF" $"FFFF F5FF F5FF FFFF F5FF F5F5 FF00 0000" $"0000 00FF F5EC ECF5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECF5 FFFF F5FF F5FF FFFF" $"F5FF FFF5 FFFF F5FF FFFF F5F5 FF00 0000" $"0000 00FF F5EC ECF5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECF5 FFF5 FFFF FFFF FFF5" $"FFFF FFFF F5FF FFF5 FFFF F5F5 FF00 0000" $"0000 00FF F5EC ECF5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECF5 FFFF F5FF FFFF F5FF" $"FFF5 FFFF FFF5 FFFF F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC F5FF FFFF F5FF FFF5" $"FFF5 FFF5 FFF5 FFF5 FFFF F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FF FFF5 FFFF" $"FFF5 FFFF FFFF F5FF F5FF F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FF F5FF FFF5" $"FFFF FFFF F5FF FFF5 FFFF F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FF FFFF F5F5" $"FFFF FFF5 FFFF FFF5 F5FF F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FF FFFF F5FF" $"F5FF FFFF F5F5 FFFF F5FF F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFFF FF" }; resource 'icl8' (130) { $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFFF 0000 0000" $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF FFFF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECFF F5FF FFF5 FFFF" $"FFFF F5FF FFFF F5FF F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5FF FFFF F5FF" $"F5FF FFF5 FFFF F5FF F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECF5 FFF5 FFFF F5FF F5FF" $"FFFF F5FF F5FF FFF5 FFF5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECF5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC F5FF FFF5 FFFF FFFF F5FF" $"FFFF FFF5 FFFF FFF5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC F5F5 FFF5 FFFF F5FF FFFF" $"FFF5 F5FF FFF5 FFFF FFF5 F5FF F5FF 0000" $"0000 FFF5 ECEC F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC F5FF FFFF F5FF FFFF F5F5" $"FFFF F5FF FFFF F5FF FFF5 F5FF F5FF 0000" $"0000 FFF5 ECEC F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECF5 FFFF F5FF FFFF FFFF" $"F5F5 FFFF F5FF FFF5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECF5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC F5FF FFF5 FFFF FFF5" $"FFFF FFFF F5FF F5FF FFF5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECFF FFF5 F5FF FFFF" $"F5FF FFFF FFF5 FFF5 FFF5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECFF F5FF FFFF FFF5" $"F5FF FFF5 FFFF FFFF FFFF FFF5 F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 FF2B 2B2B 2BFF F5F5 F5FF 0000" $"0000 FFF5 ECEC ECEC ECFF F5F5 FFFF F5FF" $"FFF5 FFF5 FF2B 2B2B FFF5 FFF5 F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 FF2B 2BFF F5F5 F5F5 F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FFFF F5FF FFFF" $"F5FF FFF5 FF2B FFF5 FFF5 FFF5 F5FF 0000" $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 FFFF F5F5 F5F5 F5F5 F5FF 0000" $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFF5 F5F5 F5F5 F5F5 F5FF 0000" $"0000 0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000" $"0000 0000 FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF" }; resource 'icl8' (131) { $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF 0000 0000 0000 0000 0000" $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5FF FF00 0000 0000 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5FF 2BFF 0000 0000 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5FF 2B2B FF00 0000 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5FF 2B2B 2BFF 0000 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5FF 2B2B 2B2B FF00 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5FF FFFF FFFF FFFF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECF5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECFF FFFF F5FF FFFF F5FF" $"FFFF F5FF FFF5 FFFF F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC F5FF FFFF F5FF FFFF FFF5" $"FFFF FFFF F5FF FFFF F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC F5FF FFF5 FFFF FFFF FFFF" $"FFF5 FFFF FFF5 FFFF F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECF5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECF5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFFF" }; resource 'icl8' (132) { $"0000 00FF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FF00 0000 0000 0000 0000" $"0000 00FF F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 FFFF 0000 0000 0000 0000" $"0000 00FF F5EC ECEC ECEC FFFF 48C0 48FF" $"FFFF FF48 C048 FF2B FF00 0000 0000 0000" $"0000 00FF F5EC ECEC ECEC 4848 48C0 4848" $"4848 4848 C048 FF2B 2BFF 0000 0000 0000" $"0000 00FF F5EC ECEC ECEC C0C0 C000 FFFF" $"FFFF FFFF 00FF FF2B 2B2B FF00 0000 0000" $"0000 00FF F5EC ECEC ECEC 4848 48FF F5F5" $"F5F5 F5F5 FFF5 FF2B 2B2B 2BFF 0000 0000" $"0000 00FF F5EC ECEC ECEC 4848 48FF F5F5" $"F5F5 F5F5 FFF5 FFFF FFFF FFFF FF00 0000" $"0000 00FF F5EC ECEC ECEC 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC C0C0 C000 FFFF" $"FFFF FFFF 00FF FFFF FFFF FFFF FF00 0000" $"0000 00FF F5EC ECEC EC48 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC 4848 FFFF 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC 4848 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECF5 C0C0 C0C0 C000 FFFF" $"FFFF FFFF 00FF FFFF FFFF FFFF FF00 0000" $"0000 00FF F5EC ECF5 4848 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECF5 48FF FFFF 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECF5 4848 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECF5 C0C0 C0C0 C000 FFFF" $"FFFF FFFF 00FF FFFF FFFF FFFF FF00 0000" $"0000 00FF F5EC ECF5 4848 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC 4848 FFFF 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC 4848 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECC0 C0C0 C000 FFFF" $"FFFF FFFF 00FF FFFF FFFF FFFF FF00 0000" $"0000 00FF F5EC ECEC ECEC 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC 48FF 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC C0C0 C000 FFFF" $"FFFF FFFF 00FF FFFF FFFF FFFF FF00 0000" $"0000 00FF F5EC ECEC ECEC 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC 48FF 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC C0C0 C000 FFFF" $"FFFF FFFF 00FF FFFF FFFF FFFF FF00 0000" $"0000 00FF F5EC ECEC ECEC 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFFF FF" }; resource 'icl8' (133) { $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFFF 0000 0000" $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC EC48 4848 48C0 48FF" $"FFFF FF48 C048 FFFF FFFF 48FF 0000 0000" $"0000 FFF5 ECEC ECEC EC48 4848 48C0 4848" $"4848 4848 C048 4848 4848 48FF FFFF 0000" $"0000 FFF5 ECEC ECEC ECC0 C0C0 C000 FFFF" $"FFFF FFFF 00FF FFFF FFFF FFFF 00FF 0000" $"0000 FFF5 ECEC ECEC EC48 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF 00FF 0000" $"0000 FFF5 ECEC ECEC EC48 48FF 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF 00FF 0000" $"0000 FFF5 ECEC ECEC EC48 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF FFFF 0000" $"0000 FFF5 ECEC ECEC C0C0 C0C0 C000 FFFF" $"FFFF FFFF 00FF FFFF FFFF FFFF 00FF 0000" $"0000 FFF5 ECEC EC48 4848 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF 00FF 0000" $"0000 FFF5 ECEC EC48 48FF FFFF 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF 00FF 0000" $"0000 FFF5 ECEC F548 4848 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF FFFF 0000" $"0000 FFF5 ECEC F5C0 C0C0 C0C0 C000 FFFF" $"FFFF FFFF 00FF FFFF FFFF FFFF 00FF 0000" $"0000 FFF5 ECEC F548 4848 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF 00FF 0000" $"0000 FFF5 ECEC F548 FFFF FFFF 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF 00FF 0000" $"0000 FFF5 ECEC F548 4848 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF FFFF 0000" $"0000 FFF5 ECEC F5C0 C0C0 C0C0 C000 FFFF" $"FFFF FFFF 00FF FFFF FFFF FFFF 00FF 0000" $"0000 FFF5 ECEC EC48 4848 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF 00FF 0000" $"0000 FFF5 ECEC EC48 48FF FFFF 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF 00FF 0000" $"0000 FFF5 ECEC ECEC 4848 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF FFFF 0000" $"0000 FFF5 ECEC ECEC ECC0 C0C0 C000 FFFF" $"FFFF FFFF 00FF FFFF FFFF FFFF 00FF 0000" $"0000 FFF5 ECEC ECEC EC48 4848 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF 00FF 0000" $"0000 FFF5 ECEC ECEC EC48 48FF 48FF F5F5" $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF 00FF 0000" $"0000 FFF5 ECEC ECEC EC48 4848 48FF F5F5" $"F5F5 F5F5 FFFF FFFF FFFF FF00 FFFF 0000" $"0000 FFF5 ECEC ECEC ECC0 C0C0 C000 FFFF" $"FFFF FFFF FF2B 2B2B 2BFF 0000 00FF 0000" $"0000 FFF5 ECEC ECEC EC48 4848 48FF F5F5" $"F5F5 F5F5 FF2B 2B2B FF00 0000 00FF 0000" $"0000 FFF5 ECEC ECEC EC48 48FF 48FF F5F5" $"F5F5 F5F5 FF2B 2BFF 0000 0000 00FF 0000" $"0000 FFF5 ECEC ECEC EC48 4848 48FF F5F5" $"F5F5 F5F5 FF2B FF00 FFFF FFFF FFFF 0000" $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 FFFF 0000 0000 0000 00FF 0000" $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FF00 FF00 0000 0000 00FF 0000" $"0000 0000 FF00 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 00FF 0000" $"0000 0000 FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF" }; resource 'icl8' (134) { $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF 0000 0000 0000 0000 0000" $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5FF FF00 0000 0000 0000 0000" $"0000 FFF5 ECEC ECEC ECFF FFFF FFFF FFFF" $"FFFF FFFF FFFF 2BFF 0000 0000 0000 0000" $"0000 FFF5 ECEC ECEC ECFF 2B2B 2B2B 2B2B" $"2B2B 2B2B 2BFF 2B2B FF00 0000 0000 0000" $"0000 FFF5 ECEC ECEC ECFF 2BF8 F8F8 F8F8" $"F8F8 F8F8 F8FF 2B2B 2BFF 0000 0000 0000" $"0000 FFF5 ECEC ECEC ECFF 2BF8 FFFF FFFF" $"FFFF FFFF FFFF 2B2B 2B2B FF00 0000 0000" $"0000 FFF5 ECEC ECEC ECFF 2BF8 FFF5 F505" $"ECF5 F5F5 F5FF FFFF FFFF FFFF 0000 0000" $"0000 FFF5 ECEC ECEC ECFF 2BF8 FFF5 0505" $"ECEC F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECFF 2BF8 FF05 0505" $"ECEC ECF5 F5FF FFFF FFF5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC F5FF 2BF8 FFD8 D8D8" $"E3E3 E3F5 F5F5 F5F5 F5F5 FFFF 0000 0000" $"0000 FFF5 ECEC ECF5 F5FF 2BF8 FFF5 D8D8" $"E3E3 F5F5 FFFF FFF5 FFFF F5FF 0000 0000" $"0000 FFF5 ECEC ECF5 F5FF 2BF8 FFF5 F5D8" $"E3F5 F5F5 F5F5 F5FF F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC F5F5 F5FF 2BF8 FFF5 F5F5" $"F5F5 F5F5 F5F5 FFF5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC F5F5 F5FF 2BF8 FFF5 FFFF" $"F5FF FFF5 FFFF F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC F5F5 F5FF 2BF8 FFF5 FFFF" $"F5F5 F5FF F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC F5F5 F5FF 2BF8 FFF5 FFFF" $"F5FF FFF5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC F5F5 F5FF 2BF8 FFF5 F5F5" $"FFF5 F5F5 F5FF FFFF FFF5 F5FF 0000 0000" $"0000 FFF5 ECEC F5F5 F5FF 2BF8 FFF5 FFFF" $"F5F5 F5F5 FFF6 F6F6 F6FF F5FF 0000 0000" $"0000 FFF5 ECEC ECF5 F5FF 2BF8 F5FF F5F5" $"F5F5 F5FF F6F6 F6F6 F6F6 FFFF 0000 0000" $"0000 FFF5 ECEC ECF5 F5FF F5F5 FFF5 FFFF" $"FFFF FFFF FFF6 F6F6 F6F6 FFFF 0000 0000" $"0000 FFF5 ECEC ECEC F5F5 FFFF F5F5 FFFA" $"FAFA FAFA FFF6 F6F6 F6F6 FFFF 0000 0000" $"0000 FFF5 ECEC ECEC ECFF F5F5 F5F5 FFFA" $"FAFA FAFA FFF6 F6F6 F6F6 FFFF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 FFFA" $"FAFA FAFA FFF6 F6F6 F6FF F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 FFFA" $"FAFA FAFA FFFF FFFF FFF5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 FFFA" $"FAFA FAFF F8FF F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 FFFF" $"FFFF FFF8 F8F8 FFF5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5FF F8F8 F8F8 F8FF F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"FFF8 F8F8 F8F8 F8F8 FFF5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5FF" $"FFFF FFFF FFFF FFFF FFFF F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFFF" }; resource 'icl8' (135) { $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFFF 0000 0000" $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECFF 2B2B 2B2B 2B2B" $"2B2B 2B2B 2B2B 2B2B 2B2B F5FF FFFF 0000" $"0000 FFF5 ECEC ECEC ECFF 2BF8 F8F8 F8F8" $"F8F8 F8F8 F8F8 F8F8 F8F8 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECFF 2BFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECFF 2BFF F5F5 05EC" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECFF 2BFF F505 05EC" $"ECF5 F5F5 F5F5 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC F5FF 2BFF 0505 05EC" $"ECEC F5F5 FFFF FFFF F5F5 FFFF F5FF 0000" $"0000 FFF5 ECEC ECF5 F5FF 2BFF D8D8 D8E3" $"E3E3 F5F5 F5F5 F5F5 F5FF F5FF F5FF 0000" $"0000 FFF5 ECEC ECF5 F5FF 2BFF F5D8 D8E3" $"E3F5 F5FF FFFF F5FF FFF5 F5FF F5FF 0000" $"0000 FFF5 ECEC F5F5 F5FF 2BFF F5F5 D8E3" $"F5F5 F5F5 F5F5 FFF5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC F5F5 F5FF 2BFF F5F5 F5F5" $"F5F5 F5F5 F5FF F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC F5F5 F5FF 2BFF F5FF FFF5" $"FFFF F5FF FFF5 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC F5F5 F5FF 2BFF F5FF FFF5" $"F5F5 FFF5 F5F5 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC F5F5 F5FF 2BFF F5FF FFF5" $"FFFF F5F5 F5F5 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC F5F5 F5FF 2BFF F5F5 F5FF" $"F5F5 F5F5 FFFF FFFF F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECF5 F5FF 2BFF F5FF FFF5" $"F5F5 F5FF F6F6 F6F6 FFF5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECF5 F5FF 2B00 FFF5 F5F5" $"F5F5 FFF6 F6F6 2BF6 F6FF F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC F5F5 F5FF F5FF FFFF" $"FFFF FFFF F6F6 F6F6 F6FF F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECFF FFF5 F5FF FAFA" $"FAFA FAFF F6F6 F6F6 F6FF F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5FF FAFA" $"FAFA FAFF F62B F6F6 F6FF F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5FF FAFA" $"FAFA FAFF F6F6 F6F6 FFF5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5FF FAFA" $"FAFA FAFF FFFF FFFF FFFF FFFF F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5FF FAFA" $"FAFA FFF8 FF2B 2B2B 2B2B FFF5 F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5FF FFFF" $"FFFF F8F8 FF2B 2B2B 2BFF F5F5 F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"FFF8 F8F8 FF2B 2B2B FFF5 F5F5 F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5FF" $"FFFF FFFF FF2B 2BFF F5F5 F5F5 F5FF 0000" $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 FF2B FFF5 F5F5 F5F5 F5FF 0000" $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF F5F5 F5F5 F5F5 F5FF 0000" $"0000 0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000" $"0000 0000 FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF" }; resource 'icl8' (136) { $"0000 00FF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FF00 0000 0000 0000 0000" $"0000 00FF F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 FFFF 0000 0000 0000 0000" $"0000 00FF F5EC ECEC ECEC F5F5 FFF5 F5F5" $"F5F5 F5F5 F5F5 FF2B FF00 0000 0000 0000" $"0000 00FF F5EC ECEC ECEC F5FF FFF5 F5F5" $"F5F5 F5F5 F5F5 FF2B 2BFF 0000 0000 0000" $"0000 00FF F5EC ECEC ECEC F5F5 FFF5 F5F5" $"F5F5 F5F5 F5F5 FF2B 2B2B FF00 0000 0000" $"0000 00FF F5EC ECEC ECEC F5F5 FFF5 F5F5" $"F5F5 F5F5 F5F5 FF2B 2B2B 2BFF 0000 0000" $"0000 00FF F5EC ECEC ECEC F5FF FFFF F5F5" $"F5F5 F5FF FFFF FFFF FFFF FFFF FF00 0000" $"0000 00FF F5EC ECEC ECEC F5F5 FFF5 F5F5" $"F5FF FF05 05FF ECFF FFF5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5F5 FFF5 F5F5" $"FF05 0505 05FF ECEC ECFF F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECF5 F5FF FFF5 F5F5" $"FF05 0505 05FF ECEC ECFF F5F5 FF00 0000" $"0000 00FF F5EC ECEC F5F5 F5F5 FFF5 F5FF" $"0505 0505 05FF ECEC ECEC FFF5 FF00 0000" $"0000 00FF F5EC ECEC F5F5 F5F5 FFF5 F5FF" $"0505 0505 05FF ECEC ECEC FFF5 FF00 0000" $"0000 00FF F5EC ECF5 F5F5 F5FF FFFF F5FF" $"0505 0505 FFFF FFFF FFFF FFF5 FF00 0000" $"0000 00FF F5EC ECF5 F5F5 F5F5 FFF5 F5FF" $"0505 05FF D813 D813 D813 FFF5 FF00 0000" $"0000 00FF F5EC ECF5 F5F5 F5F5 FFF5 F5F5" $"FF05 FFD8 13D8 13D8 13FF F5F5 FF00 0000" $"0000 00FF F5EC ECF5 F5F5 F5FF FFF5 F5F5" $"FFFF D813 D813 D813 D8FF F5C0 FF00 0000" $"0000 00FF F5EC ECF5 F5F5 F5F5 FFF5 F5F5" $"F5FF FFD8 13D8 13FF FFF5 C0F5 FF00 0000" $"0000 00FF F5EC ECF5 F5F5 F5F5 FFF5 F5F5" $"F5F5 F5FF FFFF FFF5 F5F5 C0F5 FF00 0000" $"0000 00FF F5EC ECEC F5F5 F5FF FFFF F5F5" $"F5F5 F5F5 F5F5 F5F5 F5C0 F5F5 FF00 0000" $"0000 00FF F5EC ECEC F5F5 F5F5 FFF5 F5F5" $"F5C0 C0F5 F5F5 F5F5 F5C0 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECF5 F5F5 FFF5 F5F5" $"F5C0 C0F5 F5F5 F5F5 C0F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FF FFF5 F5F5" $"C0F5 F5C0 F5F5 F5F5 C0F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5F5 FFF5 F5F5" $"C0F5 F5F5 C0F5 F5C0 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5F5 FFF5 F5C0" $"F5F5 F5F5 F5C0 C0C0 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FF FFF5 C0C0" $"F5F5 F5F5 F5F5 C0C0 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5F5 FFF5 C0C0" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5F5 FFF5 F5F5" $"F5F5 F5F5 F5FF F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5F5 FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFF5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5F5 F5F5 F5FF" $"F5F5 FFF5 F5FF F5F5 FFF5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFFF FF" }; resource 'icl8' (137) { $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFFF 0000 0000" $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECFF FFFF F5F5 F5F5" $"F5FF FFFF FFF5 F5F5 F5F5 F5FF FFFF 0000" $"0000 FFF5 ECEC ECEC EC00 FFF5 F5F5 F5FF" $"FF05 05FF ECFF FFF5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC EC00 FFF5 F5F5 FF05" $"0505 05FF ECEC ECFF F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECFF FFF5 F5F5 FF05" $"0505 05FF ECEC ECFF F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FFF5 F5FF 0505" $"0505 05FF ECEC ECEC FFF5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC F5F5 FFF5 F5FF 0505" $"0505 05FF ECEC ECEC FFF5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECF5 F5FF FFFF F5FF 0505" $"0505 FFFF FFFF FFFF FFF5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECF5 F5F5 FFF5 F5FF 0505" $"05FF D813 D813 D813 FFF5 F5FF F5FF 0000" $"0000 FFF5 ECEC F5F5 F5F5 FFF5 F5F5 FF05" $"FFD8 13D8 13D8 13FF F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC F5F5 F5FF FFF5 F5F5 FFFF" $"D813 D813 D813 D8FF F5C0 F5FF F5FF 0000" $"0000 FFF5 ECEC F5F5 F5F5 FFF5 F5F5 F5FF" $"FFD8 13D8 13FF FFF5 C0F5 F5FF F5FF 0000" $"0000 FFF5 ECEC F5F5 F5F5 FFF5 F5F5 F5F5" $"F5FF FFFF FFF5 F5F5 C0F5 F5FF F5FF 0000" $"0000 FFF5 ECEC F5F5 F5FF FFFF F5F5 F5F5" $"F5F5 F5F5 F5F5 F5C0 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC F5F5 F5F5 FFF5 F5F5 F5C0" $"C0F5 F5F5 F5F5 F5C0 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECF5 F5F5 FFF5 F5F5 F5C0" $"C0F5 F5F5 F5F5 C0F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECF5 F5FF FFF5 F5F5 C0F5" $"F5C0 F5F5 F5F5 C0F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC F5F5 FFF5 F5F5 C0F5" $"F5F5 C0F5 F5C0 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FFF5 F5C0 F5F5" $"F5F5 F5C0 C0C0 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECFF FFF5 C0C0 F5F5" $"F5F5 F5F5 C0C0 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FFF5 C0C0 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FFF5 F5F5 F5F5" $"F5F5 F5F5 FFFF FFFF FFFF FFF5 F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FFFF FFFF FFFF" $"FFFF FFFF FF2B 2B2B 2BFF F5F5 F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5FF F5F5" $"FFF5 F5FF FF2B 2B2B FFF5 F5F5 F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 FF2B 2BFF F5F5 F5F5 F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 F5F5 FF2B FFF5 F5F5 F5F5 F5FF 0000" $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 FFFF F5F5 F5F5 F5F5 F5FF 0000" $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFF5 F5F5 F5F5 F5F5 F5FF 0000" $"0000 0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000" $"0000 0000 FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF" }; resource 'icl8' (138) { $"0000 00FF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FF00 0000 0000 0000 0000" $"0000 00FF F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 FFFF 0000 0000 0000 0000" $"0000 00FF F5EC ECEC ECEC F5FD FDFD D8D8" $"D8D8 D8D8 D8D8 FF2B FF00 0000 0000 0000" $"0000 00FF F5EC ECEC ECEC F5FD FDFD D8F9" $"F9D8 F9F9 D8D8 FF2B 2BFF 0000 0000 0000" $"0000 00FF F5EC ECEC ECEC F5FD 00FD D8D8" $"F9F9 D8D8 D8F9 FF2B 2B2B FF00 0000 0000" $"0000 00FF F5EC ECEC ECEC F5FD 00FD F9D8" $"D8F9 F9D8 F9D8 FF2B 2B2B 2BFF 0000 0000" $"0000 00FF F5EC ECEC ECEC F5FD FDFD FDFD" $"FDFD FDFD FDFD FFFF FFFF FFFF FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FD FDFD FDFD" $"FDFD FDFD FDFD FDFD FDFD FDF5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FD FDFD E3E3" $"E3E3 E3E3 E3E3 E3E3 FDFD FDF5 FF00 0000" $"0000 00FF F5EC ECEC ECF5 F5FD FDFD E3F9" $"E3F9 F9F9 F9F9 F9E3 FDFD FDF5 FF00 0000" $"0000 00FF F5EC ECEC F5F5 F5FD 00FD E3F9" $"F9F9 F9E3 F9E3 F9E3 FD00 FDF5 FF00 0000" $"0000 00FF F5EC ECEC F5F5 F5FD 00FD E3F9" $"E3F9 F9E3 F9E3 E3F9 FD00 FDF5 FF00 0000" $"0000 00FF F5EC ECF5 F5F5 F5FD FDFD E3F9" $"E3F9 F9F9 F9F9 E3F9 FDFD FDF5 FF00 0000" $"0000 00FF F5EC ECF5 F5F5 F5FD FDFD E3F9" $"F9F9 E3F9 F9E3 F9E3 FDFD FDF5 FF00 0000" $"0000 00FF F5EC ECF5 F5F5 F5FD FDFD E3F9" $"E3E3 F9E3 F9E3 F9E3 FDFD FDF5 FF00 0000" $"0000 00FF F5EC ECF5 F5F5 F5FD FDFD FDFD" $"FDFD FDFD FDFD FDFD FDFD FDF5 FF00 0000" $"0000 00FF F5EC ECF5 F5F5 F5FD 00FD FDFD" $"FDFD FDFD FDFD FDFD FD00 FDF5 FF00 0000" $"0000 00FF F5EC ECF5 F5F5 F5FD 00FD 2B2B" $"2B2B 2B2B 2B2B 2B2B FD00 FDF5 FF00 0000" $"0000 00FF F5EC ECEC F5F5 F5FD FDFD 2BF9" $"F92B F9F9 F9F9 F92B FDFD FDF5 FF00 0000" $"0000 00FF F5EC ECEC F5F5 F5FD FDFD 2BF9" $"F9F9 2BF9 F9F9 F92B FDFD FDF5 FF00 0000" $"0000 00FF F5EC ECEC ECF5 F5FD FDFD 2BF9" $"2BF9 F92B F92B F92B FDFD FDF5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FD FDFD 2BF9" $"F9F9 F92B F9F9 F92B FDFD FDF5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FD 00FD 2BF9" $"2B2B 2BF9 F92B F92B FD00 FDF5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FD 00FD 2BF9" $"F92B 2BF9 F9F9 F92B FD00 FDF5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FD FDFD FDFD" $"FDFD FDFD FDFD FDFD FDFD FDF5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FD FDFD FDFD" $"FDFD FDFD FDFD FDFD FDFD FDF5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FD FDFD 0505" $"0505 FC05 0505 0505 FDFD FDF5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FD FDFD 05FC" $"FCFC FCFC 0505 FC05 FDFD FDF5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FD F5FD 05FC" $"05FC 05FC FC05 FCFC FDF5 FDF5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FD F5FD 05FC" $"05FC 0505 0505 0505 FDF5 FDF5 FF00 0000" $"0000 00FF F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFFF FF" }; resource 'icl8' (139) { $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFFF 0000 0000" $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 FDF5 FDD8 D8F9" $"F9D8 D8D8 F9D8 D8FD F5FD F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 FDF5 FDF9 D8D8" $"F9F9 D8F9 D8D8 D8FD F5FD F5FF FFFF 0000" $"0000 FFF5 ECEC ECEC ECF5 FDFD FDFD FDFD" $"FDFD FDFD FDFD FDFD FDFD F5FF 00FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FDFD FDFD FDFD" $"FDFD FDFD FDFD FDFD FDFD F5FF 00FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FDFD FDE3 E3E3" $"E3E3 E3E3 E3E3 E3FD FDFD F5FF 00FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FDFD FDE3 F9E3" $"F9F9 F9F9 F9F9 E3FD FDFD F5FF 00FF 0000" $"0000 FFF5 ECEC ECEC F5F5 FD00 FDE3 F9F9" $"F9F9 E3F9 E3F9 E3FD 00FD F5FF 00FF 0000" $"0000 FFF5 ECEC ECF5 F5F5 FD00 FDE3 F9E3" $"F9F9 E3F9 E3E3 F9FD 00FD F5FF 00FF 0000" $"0000 FFF5 ECEC ECF5 F5F5 FDFD FDE3 F9E3" $"F9F9 F9F9 F9E3 F9FD FDFD F5FF 00FF 0000" $"0000 FFF5 ECEC F5F5 F5F5 FDFD FDE3 F9F9" $"F9E3 F9F9 E3F9 E3FD FDFD F5FF 00FF 0000" $"0000 FFF5 ECEC F5F5 F5F5 FDFD FDE3 F9E3" $"E3F9 E3F9 E3F9 E3FD FDFD F5FF 00FF 0000" $"0000 FFF5 ECEC F5F5 F5F5 FDFD FDFD FDFD" $"FDFD FDFD FDFD FDFD FDFD F5FF 00FF 0000" $"0000 FFF5 ECEC F5F5 F5F5 FD00 FDFD FDFD" $"FDFD FDFD FDFD FDFD 00FD F5FF 00FF 0000" $"0000 FFF5 ECEC F5F5 F5F5 FD00 FD2B 2B2B" $"2B2B 2B2B 2B2B 2BFD 00FD F5FF 00FF 0000" $"0000 FFF5 ECEC F5F5 F5F5 FDFD FD2B F9F9" $"2BF9 F9F9 F9F9 2BFD FDFD F5FF 00FF 0000" $"0000 FFF5 ECEC ECF5 F5F5 FDFD FD2B F9F9" $"F92B F9F9 F9F9 2BFD FDFD F5FF 00FF 0000" $"0000 FFF5 ECEC ECF5 F5F5 FDFD FD2B F92B" $"F9F9 2BF9 2BF9 2BFD FDFD F5FF 00FF 0000" $"0000 FFF5 ECEC ECEC F5F5 FDFD FD2B F9F9" $"F9F9 2BF9 F9F9 2BFD FDFD F5FF 00FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FD00 FD2B F92B" $"2B2B F9F9 2BF9 2BFD 00FD F5FF 00FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FD00 FD2B F9F9" $"2B2B F9F9 F9F9 2BFD 00FD F5FF 00FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FDFD FDFD FDFD" $"FDFD FDFD FDFD FDFD FDFD F5FF 00FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FDFD FDFD FDFD" $"FDFD FDFD FFFF FFFF FFFF FFF5 00FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FDFD FD05 0505" $"05F9 0505 FF2B 2B2B 2BFF F5FD 00FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FDFD FD05 F9F9" $"F9F9 F905 FF2B 2B2B FFF5 FDFD 00FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FDF5 FD05 F905" $"F905 F9F9 FF2B 2BFF F5FD FDFD 00FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FDF5 FD05 F905" $"F905 0505 FF2B FFF5 05FD FDFD 00FF 0000" $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 FFFF F5FC FCFD F5FD 00FF 0000" $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFF5 0505 05FD F5FD 00FF 0000" $"0000 0000 FF00 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 00FF 0000" $"0000 0000 FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF" }; resource 'icl8' (140) { $"0000 00FF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FF00 0000 0000 0000 0000" $"0000 00FF F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 FFFF 0000 0000 0000 0000" $"0000 00FF F5EC ECEC ECEC F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 FF2B FF00 0000 0000 0000" $"0000 00FF F5EC ECEC ECEC F5F9 F52B F5F5" $"2B2B F5F5 F5F5 FF2B 2BFF 0000 0000 0000" $"0000 00FF F5EC ECEC ECEC F52B F52B F5F9" $"F5F5 F5F5 F5F5 FF2B 2B2B FF00 0000 0000" $"0000 00FF F5EC ECEC ECEC F52B F52B F5F5" $"F5E3 E3F5 F5F5 FF2B 2B2B 2BFF 0000 0000" $"0000 00FF F5EC ECEC ECEC F5F5 F5F5 F52B" $"2BF5 F5F5 E3E3 FFFF FFFF FFFF FF00 0000" $"0000 00FF F5EC ECEC ECEC F5F5 F5F5 F5F5" $"F5F5 F52B 0000 2BE3 E3F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FF FFFF FFFF" $"FFFF FFFF FFFF FFF5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECF5 F5FF FFFF FFFF" $"FFFF FFFF FFFF FFFF F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC F5F5 F5FF FFFF FFF5" $"F5F5 F52B F5F5 FFFF F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC F5F9 F5F5 FFFF FFF9" $"F5F5 F5F9 F5F5 F52B F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECF5 F5F5 F52B 00FF FFFF" $"F5F5 F52B F5F5 F5FF F52B F5F5 FF00 0000" $"0000 00FF F5EC ECF5 0505 0505 0500 FFFF" $"FFF5 F5F5 2BF9 F52B F52B F5F5 FF00 0000" $"0000 00FF F5EC ECF5 05F9 F9FF F905 00FF" $"FFFF F5F5 F5F5 F5F5 F52B F5F5 FF00 0000" $"0000 00FF F5EC ECF5 05FF F905 E305 0500" $"FFFF FFF5 F5F5 F52B F5F5 2BF5 FF00 0000" $"0000 00FF F5EC ECF5 05FF 05F9 F9F9 052B" $"FFFF FFFF F52B F5F5 F5FF F5F5 FF00 0000" $"0000 00FF F5EC ECF5 F5F9 0505 F905 052B" $"00FF FFFF F5F5 F5F5 FFFF F5F5 FF00 0000" $"0000 00FF F5EC ECEC F5F5 0505 FF05 0500" $"0000 FFFF F5F5 2BF5 F5FF F5F5 FF00 0000" $"0000 00FF F5EC ECEC F5F5 0505 0505 0500" $"00FF FF2B F5F5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECF5 F5F5 F5F5 F52B" $"FFFF F52B F5F5 2BF5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5F9 F9F5 F5FF" $"FFF5 F5F5 F5F5 2BF5 F5F5 2BF5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5F5 F52B FFFF" $"F5F5 F5F5 F5F5 F5F5 FFF5 2BF5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F52B F5FF FF2B" $"F5F5 F5F5 F5F5 F5F5 FFF5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F52B FFFF F5F5" $"F52B F5F5 2BF5 2BFF FFF5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FF FFFF FFFF" $"FFFF FFFF FFFF FFFF F9F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5FF FFFF FFFF" $"FFFF FFFF FFFF FFFF 2BF5 2BF5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F52B 2BF5 F52B" $"F5F5 2BF5 F52B 2BF5 F5F5 F5F5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5D8 D8F9 F5F5" $"F5F5 F5F5 F5F5 F5F9 F9F5 2BF5 FF00 0000" $"0000 00FF F5EC ECEC ECEC F5D8 D8F9 F52B" $"F9F5 F52B F5F5 F5F9 2B2B F5F5 FF00 0000" $"0000 00FF F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F52B F5F5 F5F5 F5F5 F5F5 FF00 0000" $"0000 00FF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFFF FF" }; resource 'icl8' (141) { $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFFF 0000 0000" $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 2BF5 2BF5 F9F5" $"F52B F5F5 F52B F5F5 F5F5 F5FF 0000 0000" $"0000 FFF5 ECEC ECEC ECF5 2BF5 2BF5 F5F5" $"E3E3 F5F5 F52B 2BF5 F52B F5FF FFFF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 2B2B" $"F5F5 F5E3 E3F5 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5" $"F5F5 2B00 002B E3E3 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FFFF FFFF FFFF" $"FFFF FFFF FFFF F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FFFF FFFF FFFF" $"FFFF FFFF FFFF FFF5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC F5F5 FFFF FFFF F5F5" $"F5F5 2BF5 F5FF FFF5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECF5 2BF5 F5FF FFFF F9F5" $"F5F5 F9F5 F5F5 2BF5 2BF5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECF5 2BF5 2BF5 FFFF FFF5" $"F5F5 2BF5 F5F5 FFF5 2BF5 F5FF F5FF 0000" $"0000 FFF5 ECEC F5F5 F5F5 F5F5 F5FF FFFF" $"F5F5 F52B F9F5 2BF5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC F505 0505 0505 F5FF FFFF" $"FFF5 F5F5 F5F5 F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC F505 F9F9 FFF9 0500 00FF" $"FFFF F5F5 F5F5 2BF5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC F505 FFF9 0505 0505 2BFF" $"FFFF FFF5 2BF5 F5F5 2BF5 F5FF F5FF 0000" $"0000 FFF5 ECEC F505 FF05 F9F9 F905 2B00" $"FFFF FFF5 F5F5 F5FF 2BF5 F5FF F5FF 0000" $"0000 FFF5 ECEC F5F5 F905 05F9 0505 0000" $"00FF FFF5 F52B F5F5 F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECF5 F505 05FF 0505 0000" $"FFFF 2BF5 F5F5 F5F5 F52B F5FF F5FF 0000" $"0000 FFF5 ECEC ECF5 F5F5 F5F5 F5F5 2BFF" $"FFF5 2BF5 F52B F5F5 F52B F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC F5F5 F5F5 F5F5 FFFF" $"F5F5 F5F5 F52B F5F5 F52B F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 2BFF FFF5" $"F5F5 2BF5 F5F5 F5FF F52B F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 2BF5 FFFF 2BF5" $"F5F5 F5F5 F5F5 F5FF F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 2BFF FFF5 F5F5" $"2BF5 F52B F52B FFFF F5F5 F5FF F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFF5 F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 FFFF FFFF FFFF" $"FFFF FFFF FF2B 2B2B 2BFF F5F5 F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 F5F5 F500 F5F5" $"F5F5 F5F5 FF2B 2B2B FFF5 F5F5 F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 D8D8 F52B 2BF5" $"F52B F5F5 FF2B 2BFF F5F5 F5F5 F5FF 0000" $"0000 FFF5 ECEC ECEC ECF5 D8D8 2BF5 2BF5" $"F5F5 F5F5 FF2B FFF5 F5F5 F5F5 F5FF 0000" $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 FFFF F5F5 F5F5 F5F5 F5FF 0000" $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFF5 F5F5 F5F5 F5F5 F5FF 0000" $"0000 0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5" $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000" $"0000 0000 FFFF FFFF FFFF FFFF FFFF FFFF" $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF" }; resource 'icl8' (142) { $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"F0EF F0EF F000 0000 0000 0000 0000 0000" $"FA00 0000 0000 0000 0000 0000 0000 0000" $"F0EF F0EF F000 0000 0000 0000 0000 00FA" $"D2FA 0000 0000 0000 0000 0000 0000 0000" $"EFF0 EFF0 EF00 0000 0000 0000 0000 FA00" $"F9D2 FA00 0000 0000 0000 0000 0000 0000" $"F0EF F0EF F000 0000 0000 0000 00FA 0000" $"00FA D2FA 0000 0000 0000 0000 0000 0000" $"EFF0 EFF0 EF00 0000 0000 0000 FAFF 0000" $"FA00 57D2 FA00 0000 0000 0000 0000 0000" $"EFF0 EFF0 EF00 0000 0000 00FA FF00 F7F9" $"00FF 00F9 D2FA 0000 0000 0000 0000 0000" $"F0EF F0EF F000 0000 0000 FA00 00FA F900" $"FA00 00FA F9D2 FA00 0000 0000 0000 0000" $"EFF0 EFF0 EF00 0000 007B FF00 00F9 0000" $"00F9 00FF 00FA D2FA 0000 0000 0000 0000" $"F0EF F0EF F000 0000 FA00 002B FA00 0000" $"0000 FA00 0000 F9D2 FA00 0000 0000 0000" $"EFF0 EFF0 EF00 00F9 0000 00FA 0000 0000" $"0000 00F9 0000 00FA D2FA 0000 0000 0000" $"F0EF F0EF F000 F9FF 0000 FA00 0000 0000" $"0000 0000 FA00 FFF9 F9D2 FA00 0000 0000" $"EFF0 EFF0 EFF9 0000 F7F9 0000 0000 0000" $"0000 0000 00F9 00FF 00F9 D2FA 0000 0000" $"F0EF EFF0 F9FF 0000 F900 0000 0000 F9FA" $"00F9 FAF9 FA00 FA00 00FA F9D2 FA00 0000" $"EFF0 F0F9 0000 00FA 0000 0000 FAF9 00F9" $"FA00 F9FA FFF9 F9FA 00FF 00FA D2FA 0000" $"EFF0 F9FF 0000 FA00 0000 00F9 00FA 00C9" $"00D2 00D2 C2EF F0F0 F900 0000 F9D2 7B00" $"F0F9 0000 00FA 0000 00FA 00D2 0000 C200" $"05E6 E5E6 D2E5 EFEF F0F9 0000 00FA D2FA" $"EFEF FA00 FA00 0000 F9D2 0000 D2F9 E6E6" $"05E5 E6E5 E5E6 E6E5 EFF0 FA00 0000 F900" $"F0EF EFF9 0000 00FA FA00 C300 FAE6 E505" $"0505 E5D2 D2E5 E5F9 E6E5 EFF9 00FA 8C00" $"F0EF F0F0 FA00 F900 00D2 00F9 E505 0505" $"0505 0505 E5D2 E6E6 E5EF F0FF F98C 0000" $"EFF0 EFEF F0F9 FA00 F9D2 FAD2 C8E5 E505" $"0505 E6E5 E6E5 E6EF E6E5 E6FF FF00 0000" $"EFF0 EFF0 EFFA 0000 D2FA 00C2 E5E5 E6E6" $"05E6 D2E6 E5E6 E5E5 E5E6 FFE5 F000 0000" $"F0EF F0EF F0F9 FAF9 0000 E6E6 E5E6 E5E5" $"05E5 E6D2 E6E5 E6EF E5EF E5FF F0FF 0000" $"EFF0 EFF0 F900 00FA D2C2 C9C2 E6E5 D2E5" $"E6D2 D2D2 E5E5 E6E5 E6E5 FFEF E5FF 0000" $"F0EF F0EF 00FA 00D2 F9EB D2C9 E5D2 D2E6" $"D2D2 D2E5 E6E6 E5E6 EFE6 E5E6 EFFF 0000" $"EFF0 EFEF FAF9 D200 D2D2 D2D2 D2D2 D2D2" $"E5E6 E5E6 E5E5 E6E5 E6E5 F0EF F0FF 0000" $"F0EF F0F0 00D2 00D2 D2D2 D2E5 E5E6 E5E6" $"D2E5 D2E5 E6E5 E5E6 EFE5 EFE5 EFFF 0000" $"EFF0 EFF0 F900 D2D2 D2D2 E5E5 E6E5 E6E5" $"E5D2 E5E6 E5E6 E5E6 E5EF E5FF EFFF 0000" $"EFEF F0EF 00D2 00D2 D2E5 E6E6 E5E6 E5E6" $"E6D2 D2E5 E6E5 E6E5 EFF0 FFE5 FFFF 0000" $"F0F0 EFF0 FAF9 D2D2 D2E6 E5E5 E6E5 E6E5" $"E5D2 D2E5 E6E5 E6E5 F0E6 E5EF FFFF 0000" $"EFEF F0EF F000 F0D2 D2D2 E6E5 E6E5 E6E5" $"E6D2 D2D2 E5E6 EFE6 EFF0 EFFF FF00 0000" $"F0F0 EFF0 EFFA C2F0 EFD2 D2D2 E5E6 E5E6" $"D2D2 F0D2 D2EF F0EF F0EF FFFF FF" }; resource 'icl4' (128) { $"0000 0000 0000 0000 0000 0000 0000 0000" $"6666 6000 0000 0000 D000 0000 0000 0000" $"6666 6000 0000 000D 6D00 0000 0000 0000" $"6666 6000 0000 00D0 D6D0 0000 0000 0000" $"6666 6000 0000 0D00 0D6D 0000 0000 0000" $"6666 6000 0000 DF00 D0D6 D000 0000 0000" $"6666 6000 000D F0CD 0F0D 6D00 0000 0000" $"6666 6000 00D0 0DD0 D00D D6D0 0000 0000" $"6666 6000 0DF0 0D00 0D0F 0D6D 0000 0000" $"6666 6000 D00C D000 00D0 00D6 D000 0000" $"6666 600D 000D 0000 000D 000D 6D00 0000" $"6666 60DF 00D0 0000 0000 D0FD D6D0 0000" $"6666 6D00 CD00 0000 0000 0D0F 0D6D 0000" $"6666 DF00 D000 00DD 0DDD D0D0 0DD6 D000" $"666D 000D 0000 DD0D D0DD FDDD 0F0D 6D00" $"66DF 00D0 000D 0D09 0606 7666 D000 D6D0" $"6D00 0D00 0D06 0070 1999 6966 6D00 0D6D" $"66D0 D000 D600 6D99 1999 9999 66D0 00D0" $"666D 000D D080 D991 1196 699D 996D 0D50" $"6666 D0D0 060D 9111 1111 9699 966F D500" $"6666 6DD0 D6D6 9991 1199 9996 999F F000" $"6666 6D00 6D07 9999 1969 9999 99F9 6000" $"6666 6DDD 0099 9999 1996 9996 969F 6F00" $"6666 D00D 6797 9969 9666 9999 99F6 9F00" $"6666 0D06 D669 9669 6669 9999 6999 6F00" $"6666 DD60 6666 6666 9999 9999 9966 6F00" $"6666 0606 6669 9999 6969 9999 6969 6F00" $"6666 D066 6699 9999 9699 9999 969F 6F00" $"6666 0606 6999 9999 9669 9999 66F9 FF00" $"6666 DD66 6999 9999 9669 9999 6996 FF00" $"6666 6066 6699 9999 9666 9969 666F F000" $"6666 6D76 6666 9999 6666 6666 66FF F0" }; resource 'icl4' (129) { $"000F FFFF FFFF FFFF FFFF FFF0 0000 0000" $"000F 0000 0000 0000 0000 00FF 0000 0000" $"000F 0666 6600 0000 0000 00FC F000 0000" $"000F 0666 6600 0000 0000 00FC CF00 0000" $"000F 0666 6600 0000 0000 00FC CCF0 0000" $"000F 0666 6600 FF0F 0FFF FFFC CCCF 0000" $"000F 0666 6600 0000 0000 00FF FFFF F000" $"000F 0666 660F FFF0 0FFF 0FF0 F000 F000" $"000F 0666 6600 0000 0000 0000 0000 F000" $"000F 0666 60F0 FF0F 0FF0 F0FF 0F00 F000" $"000F 0666 0000 0000 0000 0000 0000 F000" $"000F 0666 0F0F FF0F FF0F 0FFF 0F00 F000" $"000F 0660 0000 0000 0000 0000 0000 F000" $"000F 0660 FF0F 0FFF 0FF0 FF0F FF00 F000" $"000F 0660 0000 0000 0000 0000 0000 F000" $"000F 0660 F0FF FFF0 FFFF 0FF0 FF00 F000" $"000F 0660 0000 0000 0000 0000 0000 F000" $"000F 0660 FF0F FF0F F0FF F0FF 0000 F000" $"000F 0666 0000 0000 0000 0000 0000 F000" $"000F 0666 0FFF 0FF0 F0F0 F0F0 FF00 F000" $"000F 0666 6000 0000 0000 0000 0000 F000" $"000F 0666 660F F0FF F0FF FF0F 0F00 F000" $"000F 0666 6600 0000 0000 0000 0000 F000" $"000F 0666 660F 0FF0 FFFF 0FF0 FF00 F000" $"000F 0666 6600 0000 0000 0000 0000 F000" $"000F 0666 660F FF00 FFF0 FFF0 0F00 F000" $"000F 0666 6600 0000 0000 0000 0000 F000" $"000F 0666 660F FF0F 0FFF 00FF 0F00 F000" $"000F 0666 6600 0000 0000 0000 0000 F000" $"000F 0666 6600 0000 0000 0000 0000 F000" $"000F 0000 0000 0000 0000 0000 0000 F000" $"000F FFFF FFFF FFFF FFFF FFFF FFFF F0" }; resource 'icl4' (130) { $"00FF FFFF FFFF FFFF FFFF FFFF FFFF 0000" $"00F0 0000 0000 0000 0000 0000 000F 0000" $"00F0 6666 6000 0000 0000 0000 000F 0000" $"00F0 6666 6000 0000 0000 0000 000F FF00" $"00F0 6666 6000 0000 0000 0000 000F 0F00" $"00F0 6666 6F0F F0FF FF0F FF0F 000F 0F00" $"00F0 6666 6000 0000 0000 0000 000F 0F00" $"00F0 6666 600F FF0F 0FF0 FF0F 000F 0F00" $"00F0 6666 0000 0000 0000 0000 000F 0F00" $"00F0 6660 F0FF 0F0F FF0F 0FF0 F00F 0F00" $"00F0 6660 0000 0000 0000 0000 000F 0F00" $"00F0 660F F0FF FF0F FFF0 FFF0 000F 0F00" $"00F0 6600 0000 0000 0000 0000 000F 0F00" $"00F0 6600 F0FF 0FFF F00F F0FF F00F 0F00" $"00F0 6600 0000 0000 0000 0000 000F 0F00" $"00F0 660F FF0F FF00 FF0F FF0F F00F 0F00" $"00F0 6600 0000 0000 0000 0000 000F 0F00" $"00F0 6660 FF0F FFFF 00FF 0FF0 000F 0F00" $"00F0 6660 0000 0000 0000 0000 000F 0F00" $"00F0 6666 0FF0 FFF0 FFFF 0F0F F00F 0F00" $"00F0 6666 6000 0000 0000 0000 000F 0F00" $"00F0 6666 6FF0 0FFF 0FFF F0F0 F00F 0F00" $"00F0 6666 6000 0000 0000 0000 000F 0F00" $"00F0 6666 6F0F FFF0 0FF0 FFFF FFF0 0F00" $"00F0 6666 6000 0000 0000 FCCC CF00 0F00" $"00F0 6666 6F00 FF0F F0F0 FCCC F0F0 0F00" $"00F0 6666 6000 0000 0000 FCCF 0000 0F00" $"00F0 6666 60FF 0FFF 0FF0 FCF0 F0F0 0F00" $"00F0 0000 0000 0000 0000 FF00 0000 0F00" $"00FF FFFF FFFF FFFF FFFF F000 0000 0F00" $"0000 F000 0000 0000 0000 0000 0000 0F00" $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FF" }; resource 'icl4' (131) { $"00FF FFFF FFFF FFFF FFFF FF00 0000 0000" $"00F0 0000 0000 0000 0000 0FF0 0000 0000" $"00F0 6666 6000 0000 0000 0FCF 0000 0000" $"00F0 6666 6000 0000 0000 0FCC F000 0000" $"00F0 6666 6000 0000 0000 0FCC CF00 0000" $"00F0 6666 6000 0000 0000 0FCC CCF0 0000" $"00F0 6666 6000 0000 0000 0FFF FFFF 0000" $"00F0 6666 6000 0000 0000 0000 000F 0000" $"00F0 6666 6000 0000 0000 0000 000F 0000" $"00F0 6666 0000 0000 0000 0000 000F 0000" $"00F0 6660 0000 0000 0000 0000 000F 0000" $"00F0 666F FF0F FF0F FF0F F0FF 000F 0000" $"00F0 6600 0000 0000 0000 0000 000F 0000" $"00F0 6600 0000 0000 0000 0000 000F 0000" $"00F0 660F FF0F FFF0 FFFF 0FFF 000F 0000" $"00F0 6600 0000 0000 0000 0000 000F 0000" $"00F0 6600 0000 0000 0000 0000 000F 0000" $"00F0 660F F0FF FFFF F0FF F0FF 000F 0000" $"00F0 6660 0000 0000 0000 0000 000F 0000" $"00F0 6660 0000 0000 0000 0000 000F 0000" $"00F0 6666 0000 0000 0000 0000 000F 0000" $"00F0 6666 6000 0000 0000 0000 000F 0000" $"00F0 6666 6000 0000 0000 0000 000F 0000" $"00F0 6666 6000 0000 0000 0000 000F 0000" $"00F0 6666 6000 0000 0000 0000 000F 0000" $"00F0 6666 6000 0000 0000 0000 000F 0000" $"00F0 6666 6000 0000 0000 0000 000F 0000" $"00F0 6666 6000 0000 0000 0000 000F 0000" $"00F0 6666 6000 0000 0000 0000 000F 0000" $"00F0 6666 6000 0000 0000 0000 000F 0000" $"00F0 0000 0000 0000 0000 0000 000F 0000" $"00FF FFFF FFFF FFFF FFFF FFFF FFFF" }; resource 'icl4' (132) { $"000F FFFF FFFF FFFF FFFF FFF0 0000 0000" $"000F 0000 0000 0000 0000 00FF 0000 0000" $"000F 0666 66FF 070F FFF0 70FC F000 0000" $"000F 0666 6600 0700 0000 70FC CF00 0000" $"000F 0666 6677 70FF FFFF 0FFC CCF0 0000" $"000F 0666 6600 0F00 0000 F0FC CCCF 0000" $"000F 0666 6600 0F00 0000 F0FF FFFF F000" $"000F 0666 6600 0F00 0000 F000 0000 F000" $"000F 0666 6677 70FF FFFF 0FFF FFFF F000" $"000F 0666 6000 0F00 0000 F000 0000 F000" $"000F 0666 00FF 0F00 0000 F000 0000 F000" $"000F 0666 0000 0F00 0000 F000 0000 F000" $"000F 0660 7777 70FF FFFF 0FFF FFFF F000" $"000F 0660 0000 0F00 0000 F000 0000 F000" $"000F 0660 0FFF 0F00 0000 F000 0000 F000" $"000F 0660 0000 0F00 0000 F000 0000 F000" $"000F 0660 7777 70FF FFFF 0FFF FFFF F000" $"000F 0660 0000 0F00 0000 F000 0000 F000" $"000F 0666 00FF 0F00 0000 F000 0000 F000" $"000F 0666 0000 0F00 0000 F000 0000 F000" $"000F 0666 6777 70FF FFFF 0FFF FFFF F000" $"000F 0666 6600 0F00 0000 F000 0000 F000" $"000F 0666 660F 0F00 0000 F000 0000 F000" $"000F 0666 6600 0F00 0000 F000 0000 F000" $"000F 0666 6677 70FF FFFF 0FFF FFFF F000" $"000F 0666 6600 0F00 0000 F000 0000 F000" $"000F 0666 660F 0F00 0000 F000 0000 F000" $"000F 0666 6600 0F00 0000 F000 0000 F000" $"000F 0666 6677 70FF FFFF 0FFF FFFF F000" $"000F 0666 6600 0F00 0000 F000 0000 F000" $"000F 0000 0000 0000 0000 0000 0000 F000" $"000F FFFF FFFF FFFF FFFF FFFF FFFF F0" }; resource 'icl4' (133) { $"00FF FFFF FFFF FFFF FFFF FFFF FFFF 0000" $"00F0 0000 0000 0000 0000 0000 000F 0000" $"00F0 6666 6000 070F FFF0 70FF FF0F 0000" $"00F0 6666 6000 0700 0000 7000 000F FF00" $"00F0 6666 6777 70FF FFFF 0FFF FFFF 0F00" $"00F0 6666 6000 0F00 0000 F000 000F 0F00" $"00F0 6666 600F 0F00 0000 F000 000F 0F00" $"00F0 6666 6000 0F00 0000 F000 000F FF00" $"00F0 6666 7777 70FF FFFF 0FFF FFFF 0F00" $"00F0 6660 0000 0F00 0000 F000 000F 0F00" $"00F0 6660 0FFF 0F00 0000 F000 000F 0F00" $"00F0 6600 0000 0F00 0000 F000 000F FF00" $"00F0 6607 7777 70FF FFFF 0FFF FFFF 0F00" $"00F0 6600 0000 0F00 0000 F000 000F 0F00" $"00F0 6600 FFFF 0F00 0000 F000 000F 0F00" $"00F0 6600 0000 0F00 0000 F000 000F FF00" $"00F0 6607 7777 70FF FFFF 0FFF FFFF 0F00" $"00F0 6660 0000 0F00 0000 F000 000F 0F00" $"00F0 6660 0FFF 0F00 0000 F000 000F 0F00" $"00F0 6666 0000 0F00 0000 F000 000F FF00" $"00F0 6666 6777 70FF FFFF 0FFF FFFF 0F00" $"00F0 6666 6000 0F00 0000 F000 000F 0F00" $"00F0 6666 600F 0F00 0000 F000 000F 0F00" $"00F0 6666 6000 0F00 0000 FFFF FFF0 FF00" $"00F0 6666 6777 70FF FFFF F000 0F00 0F00" $"00F0 6666 6000 0F00 0000 F000 F000 0F00" $"00F0 6666 600F 0F00 0000 F00F 0000 0F00" $"00F0 6666 6000 0F00 0000 F0F0 FFFF FF00" $"00F0 0000 0000 0000 0000 FF00 0000 0F00" $"00FF FFFF FFFF FFFF FFFF F0F0 0000 0F00" $"0000 F000 0000 0000 0000 0000 0000 0F00" $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FF" }; resource 'icl4' (134) { $"00FF FFFF FFFF FFFF FFFF FF00 0000 0000" $"00F0 0000 0000 0000 0000 0FF0 0000 0000" $"00F0 6666 6FFF FFFF FFFF FF0F 0000 0000" $"00F0 6666 6FCC CCCC CCCC CF00 F000 0000" $"00F0 6666 6FCD DDDD DDDD DF00 0F00 0000" $"00F0 6666 6FCD FFFF FFFF FF00 00F0 0000" $"00F0 6666 6FCD F001 6000 0FFF FFFF 0000" $"00F0 6666 6FCD F011 6600 0000 000F 0000" $"00F0 6666 6FCD F111 6660 0FFF F00F 0000" $"00F0 6666 0FCD F333 8880 0000 00FF 0000" $"00F0 6660 0FCD F033 8800 FFF0 FF0F 0000" $"00F0 6660 0FCD F003 8000 000F 000F 0000" $"00F0 6600 0FCD F000 0000 00F0 000F 0000" $"00F0 6600 0FCD F0FF 0FF0 FF00 000F 0000" $"00F0 6600 0FCD F0FF 000F 0000 000F 0000" $"00F0 6600 0FCD F0FF 0FF0 0000 000F 0000" $"00F0 6600 0FCD F000 F000 0FFF F00F 0000" $"00F0 6600 0FCD F0FF 0000 F0C0 CF0F 0000" $"00F0 6660 0FCD 0F00 000F 0C0C 0CFF 0000" $"00F0 6660 0F00 F0FF FFFF F0C0 C0FF 0000" $"00F0 6666 00FF 00FD DDDD FC0C 0CFF 0000" $"00F0 6666 6F00 00FD DDDD F0C0 C0FF 0000" $"00F0 6666 6000 00FD DDDD FC0C 0F0F 0000" $"00F0 6666 6000 00FD DDDD FFFF F00F 0000" $"00F0 6666 6000 00FD DDDF CF00 000F 0000" $"00F0 6666 6000 00FF FFFC DCF0 000F 0000" $"00F0 6666 6000 0000 0FCD CDCF 000F 0000" $"00F0 6666 6000 0000 FCDC DCDC F00F 0000" $"00F0 6666 6000 000F FFFF FFFF FF0F 0000" $"00F0 6666 6000 0000 0000 0000 000F 0000" $"00F0 0000 0000 0000 0000 0000 000F 0000" $"00FF FFFF FFFF FFFF FFFF FFFF FFFF" }; resource 'icl4' (135) { $"00FF FFFF FFFF FFFF FFFF FFFF FFFF 0000" $"00F0 0000 0000 0000 0000 0000 000F 0000" $"00F0 6666 6FFF FFFF FFFF FFFF FF0F 0000" $"00F0 6666 6FCC CCCC CCCC CCCC CC0F FF00" $"00F0 6666 6FCC CCCC CCCC CCCC CC0F 0F00" $"00F0 6666 6FCF FFFF FFFF FFFF FF0F 0F00" $"00F0 6666 6FCF 0016 0000 0000 000F 0F00" $"00F0 6666 6FCF 0116 6000 0000 000F 0F00" $"00F0 6666 0FCF 1116 6600 FFFF 00FF 0F00" $"00F0 6660 0FCF 3338 8800 0000 0F0F 0F00" $"00F0 6660 0FCF 0338 800F FF0F F00F 0F00" $"00F0 6600 0FCF 0038 0000 00F0 000F 0F00" $"00F0 6600 0FCF 0000 0000 0F00 000F 0F00" $"00F0 6600 0FCF 0FF0 FF0F F000 000F 0F00" $"00F0 6600 0FCF 0FF0 00F0 0000 000F 0F00" $"00F0 6600 0FCF 0FF0 FF00 0000 000F 0F00" $"00F0 6600 0FCF 000F 0000 FFFF 000F 0F00" $"00F0 6660 0FCF 0FF0 000F 0C0C F00F 0F00" $"00F0 6660 0FC0 F000 00F0 C0C0 CF0F 0F00" $"00F0 6666 000F 0FFF FFFF 0C0C 0F0F 0F00" $"00F0 6666 6FF0 0FDD DDDF C0C0 CF0F 0F00" $"00F0 6666 6000 0FDD DDDF 0C0C 0F0F 0F00" $"00F0 6666 6000 0FDD DDDF C0C0 F00F 0F00" $"00F0 6666 6000 0FDD DDDF FFFF FFFF 0F00" $"00F0 6666 6000 0FDD DDFC F000 00F0 0F00" $"00F0 6666 6000 0FFF FFCD F000 0F00 0F00" $"00F0 6666 6000 0000 FCDC F000 F000 0F00" $"00F0 6666 6000 000F FFFF F00F 0000 0F00" $"00F0 0000 0000 0000 0000 F0F0 0000 0F00" $"00FF FFFF FFFF FFFF FFFF FF00 0000 0F00" $"0000 F000 0000 0000 0000 0000 0000 0F00" $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FF" }; resource 'icl4' (136) { $"000F FFFF FFFF FFFF FFFF FFF0 0000 0000" $"000F 0000 0000 0000 0000 00FF 0000 0000" $"000F 0666 6600 F000 0000 00FC F000 0000" $"000F 0666 660F F000 0000 00FC CF00 0000" $"000F 0666 6600 F000 0000 00FC CCF0 0000" $"000F 0666 6600 F000 0000 00FC CCCF 0000" $"000F 0666 660F FF00 000F FFFF FFFF F000" $"000F 0666 6600 F000 0FF1 1F6F F000 F000" $"000F 0666 6600 F000 F111 1F66 6F00 F000" $"000F 0666 600F F000 F111 1F66 6F00 F000" $"000F 0666 0000 F00F 1111 1F66 66F0 F000" $"000F 0666 0000 F00F 1111 1F66 66F0 F000" $"000F 0660 000F FF0F 1111 FFFF FFF0 F000" $"000F 0660 0000 F00F 111F 3C3C 3CF0 F000" $"000F 0660 0000 F000 F1F3 C3C3 CF00 F000" $"000F 0660 000F F000 FF3C 3C3C 3F07 F000" $"000F 0660 0000 F000 0FF3 C3CF F070 F000" $"000F 0660 0000 F000 000F FFF0 0070 F000" $"000F 0666 000F FF00 0000 0000 0700 F000" $"000F 0666 0000 F000 0770 0000 0700 F000" $"000F 0666 6000 F000 0770 0000 7000 F000" $"000F 0666 660F F000 7007 0000 7000 F000" $"000F 0666 6600 F000 7000 7007 0000 F000" $"000F 0666 6600 F007 0000 0777 0000 F000" $"000F 0666 660F F077 0000 0077 0000 F000" $"000F 0666 6600 F077 0000 0000 0000 F000" $"000F 0666 6600 F000 0000 0F00 0000 F000" $"000F 0666 6600 FFFF FFFF FFFF FFF0 F000" $"000F 0666 6600 000F 00F0 0F00 F000 F000" $"000F 0666 6600 0000 0000 0000 0000 F000" $"000F 0000 0000 0000 0000 0000 0000 F000" $"000F FFFF FFFF FFFF FFFF FFFF FFFF F0" }; resource 'icl4' (137) { $"00FF FFFF FFFF FFFF FFFF FFFF FFFF 0000" $"00F0 0000 0000 0000 0000 0000 000F 0000" $"00F0 6666 6000 0000 0000 0000 000F 0000" $"00F0 6666 6FFF 0000 0FFF F000 000F FF00" $"00F0 6666 60F0 000F F11F 6FF0 000F 0F00" $"00F0 6666 60F0 00F1 111F 666F 000F 0F00" $"00F0 6666 6FF0 00F1 111F 666F 000F 0F00" $"00F0 6666 60F0 0F11 111F 6666 F00F 0F00" $"00F0 6666 00F0 0F11 111F 6666 F00F 0F00" $"00F0 6660 0FFF 0F11 11FF FFFF F00F 0F00" $"00F0 6660 00F0 0F11 1F3C 3C3C F00F 0F00" $"00F0 6600 00F0 00F1 F3C3 C3CF 000F 0F00" $"00F0 6600 0FF0 00FF 3C3C 3C3F 070F 0F00" $"00F0 6600 00F0 000F F3C3 CFF0 700F 0F00" $"00F0 6600 00F0 0000 0FFF F000 700F 0F00" $"00F0 6600 0FFF 0000 0000 0007 000F 0F00" $"00F0 6600 00F0 0007 7000 0007 000F 0F00" $"00F0 6660 00F0 0007 7000 0070 000F 0F00" $"00F0 6660 0FF0 0070 0700 0070 000F 0F00" $"00F0 6666 00F0 0070 0070 0700 000F 0F00" $"00F0 6666 60F0 0700 0007 7700 000F 0F00" $"00F0 6666 6FF0 7700 0000 7700 000F 0F00" $"00F0 6666 60F0 7700 0000 0000 000F 0F00" $"00F0 6666 60F0 0000 0000 FFFF FFF0 0F00" $"00F0 6666 60FF FFFF FFFF FCCC CF00 0F00" $"00F0 6666 6000 0F00 F00F FCCC F000 0F00" $"00F0 6666 6000 0000 0000 FCCF 0000 0F00" $"00F0 6666 6000 0000 0000 FCF0 0000 0F00" $"00F0 0000 0000 0000 0000 FF00 0000 0F00" $"00FF FFFF FFFF FFFF FFFF F000 0000 0F00" $"0000 F000 0000 0000 0000 0000 0000 0F00" $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FF" }; resource 'icl4' (138) { $"000F FFFF FFFF FFFF FFFF FFF0 0000 0000" $"000F 0000 0000 0000 0000 00FF 0000 0000" $"000F 0666 660E FE33 3333 33FC F000 0000" $"000F 0666 660F EF3D D3DD 33FC CF00 0000" $"000F 0666 660E 0E33 DD33 3DFC CCF0 0000" $"000F 0666 660F 0FD3 3DD3 D3FC CCCF 0000" $"000F 0666 660E FEFE FEFE FEFF FFFF F000" $"000F 0666 660F EFEF EFEF EFEF EFE0 F000" $"000F 0666 660E FE88 8888 8888 FEF0 F000" $"000F 0666 600F EF8D 8DDD DDD8 EFE0 F000" $"000F 0666 000E 0E8D DDD8 D8D8 F0F0 F000" $"000F 0666 000F 0F8D 8DD8 D88D E0E0 F000" $"000F 0660 000E FE8D 8DDD DD8D FEF0 F000" $"000F 0660 000F EF8D DD8D D8D8 EFE0 F000" $"000F 0660 000E FE8D 88D8 D8D8 FEF0 F000" $"000F 0660 000F EFEF EFEF EFEF EFE0 F000" $"000F 0660 000E 0EFE FEFE FEFE F0F0 F000" $"000F 0660 000F 0FCC CCCC CCCC E0E0 F000" $"000F 0666 000E FECD DCDD DDDC FEF0 F000" $"000F 0666 000F EFCD DDCD DDDC EFE0 F000" $"000F 0666 600E FECD CDDC DCDC FEF0 F000" $"000F 0666 660F EFCD DDDC DDDC EFE0 F000" $"000F 0666 660E 0ECD CCCD DCDC F0F0 F000" $"000F 0666 660F 0FCD DCCD DDDC E0E0 F000" $"000F 0666 660E FEFE FEFE FEFE FEF0 F000" $"000F 0666 660F EFEF EFEF EFEF EFE0 F000" $"000F 0666 660E FE11 11F1 1111 FEF0 F000" $"000F 0666 660F EF1F EFEF 11E1 EFE0 F000" $"000F 0666 660E 0E1E 1E1E F1FE F0F0 F000" $"000F 0666 660F 0F1F 1F11 1111 E0E0 F000" $"000F 0000 0000 0000 0000 0000 0000 F000" $"000F FFFF FFFF FFFF FFFF FFFF FFFF F0" }; resource 'icl4' (139) { $"00FF FFFF FFFF FFFF FFFF FFFF FFFF 0000" $"00F0 0000 0000 0000 0000 0000 000F 0000" $"00F0 6666 60F0 F33D D333 D33E 0E0F 0000" $"00F0 6666 60E0 ED33 DD3D 333F 0F0F FF00" $"00F0 6666 60FE FEFE FEFE FEFE FE0F 0F00" $"00F0 6666 60EF EFEF EFEF EFEF EF0F 0F00" $"00F0 6666 60FE F888 8888 888E FE0F 0F00" $"00F0 6666 60EF E8D8 DDDD DD8F EF0F 0F00" $"00F0 6666 00F0 F8DD DD8D 8D8E 0E0F 0F00" $"00F0 6660 00E0 E8D8 DD8D 88DF 0F0F 0F00" $"00F0 6660 00FE F8D8 DDDD D8DE FE0F 0F00" $"00F0 6600 00EF E8DD D8DD 8D8F EF0F 0F00" $"00F0 6600 00FE F8D8 8D8D 8D8E FE0F 0F00" $"00F0 6600 00EF EFEF EFEF EFEF EF0F 0F00" $"00F0 6600 00F0 FEFE FEFE FEFE 0E0F 0F00" $"00F0 6600 00E0 ECCC CCCC CCCF 0F0F 0F00" $"00F0 6600 00FE FCDD CDDD DDCE FE0F 0F00" $"00F0 6660 00EF ECDD DCDD DDCF EF0F 0F00" $"00F0 6660 00FE FCDC DDCD CDCE FE0F 0F00" $"00F0 6666 00EF ECDD DDCD DDCF EF0F 0F00" $"00F0 6666 60F0 FCDC CCDD CDCE 0E0F 0F00" $"00F0 6666 60E0 ECDD CCDD DDCF 0F0F 0F00" $"00F0 6666 60FE FEFE FEFE FEFE FE0F 0F00" $"00F0 6666 60EF EFEF EFEF FFFF FFF0 0F00" $"00F0 6666 60FE F111 1D11 FCCC CF0E 0F00" $"00F0 6666 60EF E1DD DDD1 FCCC F0EF 0F00" $"00F0 6666 60F0 F1D1 D1DD FCCF 0EFE 0F00" $"00F0 6666 60E0 E1D1 D111 FCF0 1FEF 0F00" $"00F0 0000 0000 0000 0000 FF0E EE0E 0F00" $"00FF FFFF FFFF FFFF FFFF F011 1F0F 0F00" $"0000 F000 0000 0000 0000 0000 0000 0F00" $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FF" }; resource 'icl4' (140) { $"000F FFFF FFFF FFFF FFFF FFF0 0000 0000" $"000F 0000 0000 0000 0000 00FF 0000 0000" $"000F 0666 6600 0000 0000 00FC F000 0000" $"000F 0666 660D 0C00 CC00 00FC CF00 0000" $"000F 0666 660C 0C0D 0000 00FC CCF0 0000" $"000F 0666 660C 0C00 0880 00FC CCCF 0000" $"000F 0666 6600 000C C000 88FF FFFF F000" $"000F 0666 6600 0000 000C 00C8 8000 F000" $"000F 0666 660F FFFF FFFF FFF0 0000 F000" $"000F 0666 600F FFFF FFFF FFFF 0000 F000" $"000F 0666 000F FFF0 000C 00FF 0000 F000" $"000F 0666 0D00 FFFD 000D 000C 0000 F000" $"000F 0660 000C 0FFF 000C 000F 0C00 F000" $"000F 0660 1111 10FF F000 CD0C 0C00 F000" $"000F 0660 1DDF D10F FF00 0000 0C00 F000" $"000F 0660 1FD1 8110 FFF0 000C 00C0 F000" $"000F 0660 1F1D DD1C FFFF 0C00 0F00 F000" $"000F 0660 0D11 D11C 0FFF 0000 FF00 F000" $"000F 0666 0011 F110 00FF 00C0 0F00 F000" $"000F 0666 0011 1110 0FFC 0000 0000 F000" $"000F 0666 6000 000C FF0C 00C0 0000 F000" $"000F 0666 660D D00F F000 00C0 00C0 F000" $"000F 0666 6600 0CFF 0000 0000 F0C0 F000" $"000F 0666 660C 0FFC 0000 0000 F000 F000" $"000F 0666 660C FF00 0C00 C0CF F000 F000" $"000F 0666 660F FFFF FFFF FFFF D000 F000" $"000F 0666 660F FFFF FFFF FFFF C0C0 F000" $"000F 0666 660C C00C 00C0 0CC0 0000 F000" $"000F 0666 6603 3D00 0000 000D D0C0 F000" $"000F 0666 6603 3D0C D00C 000D CC00 F000" $"000F 0000 0000 0000 000C 0000 0000 F000" $"000F FFFF FFFF FFFF FFFF FFFF FFFF F0" }; resource 'icl4' (141) { $"00FF FFFF FFFF FFFF FFFF FFFF FFFF 0000" $"00F0 0000 0000 0000 0000 0000 000F 0000" $"00F0 6666 60C0 C0D0 0C00 0C00 000F 0000" $"00F0 6666 60C0 C000 8800 0CC0 0C0F FF00" $"00F0 6666 6000 00CC 0008 8000 000F 0F00" $"00F0 6666 6000 0000 00C0 0C88 000F 0F00" $"00F0 6666 60FF FFFF FFFF FF00 000F 0F00" $"00F0 6666 60FF FFFF FFFF FFF0 000F 0F00" $"00F0 6666 00FF FF00 00C0 0FF0 000F 0F00" $"00F0 6660 C00F FFD0 00D0 00C0 C00F 0F00" $"00F0 6660 C0C0 FFF0 00C0 00F0 C00F 0F00" $"00F0 6600 0000 0FFF 000C D0C0 000F 0F00" $"00F0 6601 1111 0FFF F000 0000 000F 0F00" $"00F0 6601 DDFD 100F FF00 00C0 000F 0F00" $"00F0 6601 FD11 11CF FFF0 C000 C00F 0F00" $"00F0 6601 F1DD D1C0 FFF0 000F C00F 0F00" $"00F0 6600 D11D 1100 0FF0 0C00 000F 0F00" $"00F0 6660 011F 1100 FFC0 0000 0C0F 0F00" $"00F0 6660 0000 00CF F0C0 0C00 0C0F 0F00" $"00F0 6666 0000 00FF 0000 0C00 0C0F 0F00" $"00F0 6666 6000 CFF0 00C0 000F 0C0F 0F00" $"00F0 6666 60C0 FFC0 0000 000F 000F 0F00" $"00F0 6666 60CF F000 C00C 0CFF 000F 0F00" $"00F0 6666 60FF FFFF FFFF FFFF FFF0 0F00" $"00F0 6666 60FF FFFF FFFF F000 0F00 0F00" $"00F0 6666 6000 0000 0000 F000 F000 0F00" $"00F0 6666 6033 0CC0 0C00 F00F 0000 0F00" $"00F0 6666 6033 C0C0 0000 F0F0 0000 0F00" $"00F0 0000 0000 0000 0000 FF00 0000 0F00" $"00FF FFFF FFFF FFFF FFFF F000 0000 0F00" $"0000 F000 0000 0000 0000 0000 0000 0F00" $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FF" }; resource 'icl4' (142) { $"0000 0000 0000 0000 0000 0000 0000 0000" $"6666 6000 0000 0000 D000 0000 0000 0000" $"6666 6000 0000 000D 6D00 0000 0000 0000" $"6666 6000 0000 00D0 D6D0 0000 0000 0000" $"6666 6000 0000 0D00 0D6D 0000 0000 0000" $"6666 6000 0000 DF00 D0D6 D000 0000 0000" $"6666 6000 000D F0CD 0F0D 6D00 0000 0000" $"6666 6000 00D0 0DD0 D00D D6D0 0000 0000" $"6666 6000 0DF0 0D00 0D0F 0D6D 0000 0000" $"6666 6000 D00C D000 00D0 00D6 D000 0000" $"6666 600D 000D 0000 000D 000D 6D00 0000" $"6666 60DF 00D0 0000 0000 D0FD D6D0 0000" $"6666 6D00 CD00 0000 0000 0D0F 0D6D 0000" $"6666 DF00 D000 00DD 0DDD D0D0 0DD6 D000" $"666D 000D 0000 DD0D D0DD FDDD 0F0D 6D00" $"66DF 00D0 000D 0D09 0606 7666 D000 D6D0" $"6D00 0D00 0D06 0070 1999 6966 6D00 0D6D" $"66D0 D000 D600 6D99 1999 9999 66D0 00D0" $"666D 000D D080 D991 1196 699D 996D 0D50" $"6666 D0D0 060D 9111 1111 9699 966F D500" $"6666 6DD0 D6D6 9991 1199 9996 999F F000" $"6666 6D00 6D07 9999 1969 9999 99F9 6000" $"6666 6DDD 0099 9999 1996 9996 969F 6F00" $"6666 D00D 6797 9969 9666 9999 99F6 9F00" $"6666 0D06 D669 9669 6669 9999 6999 6F00" $"6666 DD60 6666 6666 9999 9999 9966 6F00" $"6666 0606 6669 9999 6969 9999 6969 6F00" $"6666 D066 6699 9999 9699 9999 969F 6F00" $"6666 0606 6999 9999 9669 9999 66F9 FF00" $"6666 DD66 6999 9999 9669 9999 6996 FF00" $"6666 6066 6699 9999 9666 9969 666F F000" $"6666 6D76 6666 9999 6666 6666 66FF F0" }; resource 'FREF' (128) { 'APPL', 0, "" }; resource 'FREF' (129) { 'SW/©', 1, "" }; resource 'FREF' (130) { 'TEXT', 2, "" }; resource 'FREF' (131) { 'sW/©', 3, "" }; // Writer 2.0 resource 'FREF' (132) { 'SDwr', 4, "" }; // Writer 2.0 Vorlage resource 'FREF' (133) { 'SWwv', 5, "" }; // Excel resource 'FREF' (134) { 'XLS ', 6, "" }; resource 'FREF' (135) { 'RTF ', 7, "" }; // Word 6 resource 'FREF' (136) { 'W6BN', 8, "" }; resource 'FREF' (137) { 'SVsc', 9, "" }; resource 'FREF' (138) { 'sVsc', 10, "" }; resource 'FREF' (139) { 'SVsd', 11, "" }; resource 'FREF' (140) { 'sVsd', 12, "" }; resource 'FREF' (141) { 'SVsh', 13, "" }; resource 'FREF' (142) { 'sVsh', 14, "" }; resource 'FREF' (143) { 'SVsi', 15, "" }; resource 'FREF' (144) { 'sVsi', 16, "" }; resource 'FREF' (145) { 'SVsm', 17, "" }; resource 'FREF' (146) { 'sVsm', 18, "" }; resource 'FREF' (147) { 'SVfs', 19, "" }; resource 'BNDL' (128) { 'SVdt', 0, { /* array TypeArray: 2 elements */ /* [1] */ 'FREF', { /* array IDArray: 20 elements */ /* [1] */ 0, 128, /* [2] */ 1, 129, /* [3] */ 2, 130, /* [4] */ 3, 131, /* [5] */ 4, 132, /* [6] */ 5, 133, /* [7] */ 6, 134, /* [8] */ 7, 135, /* [9] */ 8, 136, /* [10] */ 9, 137, /* [11] */ 10, 138, /* [12] */ 11, 139, /* [13] */ 12, 140, /* [14] */ 13, 141, /* [15] */ 14, 142, /* [16] */ 15, 143, /* [17] */ 16, 144, /* [18] */ 17, 145, /* [19] */ 18, 146, /* [20] */ 19, 147 }, /* [2] */ 'ICN#', { /* array IDArray: 20 elements */ /* [1] */ 0, 128, /* [2] */ 1, 129, /* [3] */ 2, 131, /* [4] */ 3, 130, /* [5] */ 4, 0, /* [6] */ 5, 0, /* [7] */ 6, 0, /* [8] */ 7, 0, /* [9] */ 8, 0, /* [10] */ 9, 132, /* [11] */ 10, 133, /* [12] */ 11, 134, /* [13] */ 12, 135, /* [14] */ 13, 136, /* [15] */ 14, 137, /* [16] */ 15, 138, /* [17] */ 16, 139, /* [18] */ 17, 140, /* [19] */ 18, 141, /* [20] */ 19, 142 } } }; data 'cicn' (2001, "mrj bar") { $"0000 0000 8010 0000 0000 0020 0020 0000" $"0000 0000 0000 0048 0000 0048 0000 0000" $"0004 0001 0004 0000 0000 0000 0000 0000" $"0000 0000 0000 0004 0000 0000 0020 0020" $"0000 0000 0004 0000 0000 0020 0020 0000" $"0000 FC00 0000 FC00 0000 FC00 0000 FC00" $"0000 FC00 0000 FC00 0000 FC00 0000 FC00" $"0000 FC00 0000 FC00 0000 FC00 0000 FC00" $"0000 FC00 0000 FC00 0000 FC00 0000 FC00" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 FC00 0000 8400 0000 C400 0000 E400" $"0000 F400 0000 FC00 0000 9C00 0000 8C00" $"0000 C400 0000 E400 0000 F400 0000 FC00" $"0000 9C00 0000 8C00 0000 C400 0000 E400" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0007 0000 FFFF FFFF" $"FFFF 0001 FFFF FFFF 3333 0002 FFFF CCCC" $"0000 0003 3333 3333 3333 0004 4444 4444" $"4444 0005 2222 2222 2222 0006 1111 1111" $"1111 000F 0000 0000 0000 FFFF FF00 0000" $"0000 0000 0000 0000 0000 F122 4300 0000" $"0000 0000 0000 0000 0000 F422 2600 0000" $"0000 0000 0000 0000 0000 F5F2 2F00 0000" $"0000 0000 0000 0000 0000 F5FF FF00 0000" $"0000 0000 0000 0000 0000 F1FF FF00 0000" $"0000 0000 0000 0000 0000 F22F FF00 0000" $"0000 0000 0000 0000 0000 F222 FF00 0000" $"0000 0000 0000 0000 0000 F422 2F00 0000" $"0000 0000 0000 0000 0000 F5F2 2F00 0000" $"0000 0000 0000 0000 0000 F5FF FF00 0000" $"0000 0000 0000 0000 0000 F1FF FF00 0000" $"0000 0000 0000 0000 0000 F22F FF00 0000" $"0000 0000 0000 0000 0000 F222 FF00 0000" $"0000 0000 0000 0000 0000 F422 2F00 0000" $"0000 0000 0000 0000 0000 F5F2 2F00 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000 0000 0000 0000" $"0000 0000 0000 0000 0000" };
diff --git a/desktop/win32/source/QuickStart/OOQuickStart.rc b/desktop/win32/source/QuickStart/OOQuickStart.rc
new file mode 100755
index 0000000000..9baf7e864f
--- /dev/null
+++ b/desktop/win32/source/QuickStart/OOQuickStart.rc
@@ -0,0 +1,130 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#define APSTUDIO_HIDDEN_SYMBOLS
+#include "windows.h"
+#undef APSTUDIO_HIDDEN_SYMBOLS
+#include "resource.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// German (Germany) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
+#ifdef _WIN32
+LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+ICON_ACTIVE ICON DISCARDABLE "icons/ooo3_main_app.ico"
+IDI_QUICKSTART ICON DISCARDABLE "icons/ooo3_main_app.ico"
+IDI_SMALL ICON DISCARDABLE "icons/ooo3_main_app.ico"
+ICON_INACTIVE ICON DISCARDABLE "icons/ooo3_main_app.ico"
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Accelerator
+//
+
+IDC_QUICKSTART ACCELERATORS MOVEABLE PURE
+BEGIN
+ "?", IDM_ABOUT, ASCII, ALT
+ "/", IDM_ABOUT, ASCII, ALT
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_ABOUTBOX DIALOG DISCARDABLE 22, 17, 230, 75
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "About"
+FONT 8, "System"
+BEGIN
+ ICON IDI_QUICKSTART,IDC_MYICON,14,9,16,16
+ LTEXT "QuickStart Version 1.0",IDC_STATIC,49,10,119,8,
+ SS_NOPREFIX
+ LTEXT "Copyright (C) 2001",IDC_STATIC,49,20,119,8
+ DEFPUSHBUTTON "OK",IDOK,195,6,30,11,WS_GROUP
+END
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
+ "#include ""windows.h""\r\n"
+ "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
+ "#include ""resource.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resource.h\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_APP_TITLE "SoQuickStart"
+ IDC_QUICKSTART "QUICKSTART"
+ IDS_TOOLTIP "StarOffice 6.0 QuickStart"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_EXIT "Exit"
+END
+
+#endif // German (Germany) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/desktop/win32/source/QuickStart/QuickStart.cpp b/desktop/win32/source/QuickStart/QuickStart.cpp
new file mode 100755
index 0000000000..204b3d3a06
--- /dev/null
+++ b/desktop/win32/source/QuickStart/QuickStart.cpp
@@ -0,0 +1,426 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+// QuickStart.cpp : Defines the entry point for the application.
+//
+
+#include "stdafx.h"
+#include "resource.h"
+#include <systools/win32/uwinapi.h>
+#include <stdio.h>
+
+#define MY_TASKBAR_NOTIFICATION WM_USER+1
+
+#define MAX_LOADSTRING 100
+
+// message used to communicate with soffice
+#define TERMINATIONVETO_MESSAGE "SO TerminationVeto"
+#define TERMINATE_MESSAGE "SO Terminate"
+#define LISTENER_WINDOWCLASS "SO Listener Class"
+#define KILLTRAY_MESSAGE "SO KillTray"
+
+static UINT aTerminationVetoMessage = 0x7FFF;
+static UINT aTerminateMessage = 0x7FFF;
+static HMENU popupMenu = NULL;
+static bool bTerminateVeto = true;
+
+#define UPDATE_TIMER 1
+
+// Global Variables:
+HINSTANCE hInst; // current instance
+TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
+TCHAR szWindowClass[MAX_LOADSTRING]; // The title bar text
+
+TCHAR szExitString[MAX_LOADSTRING];
+TCHAR szTooltipString[MAX_LOADSTRING];
+
+// Foward declarations of functions included in this code module:
+ATOM MyRegisterClass(HINSTANCE hInstance);
+BOOL InitInstance(HINSTANCE, int);
+LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
+LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);
+
+bool SofficeRuns()
+{
+ // check for soffice by searching the communication window
+ return ( FindWindowEx( NULL, NULL, LISTENER_WINDOWCLASS, NULL ) == NULL ) ? false : true;
+}
+
+bool launchSoffice( )
+{
+ if ( !SofficeRuns() )
+ {
+ // UINT ret = WinExec( "h:\\office60.630b\\program\\swriter.exe -bean", SW_SHOW );
+ char filename[_MAX_PATH + 1];
+
+ filename[_MAX_PATH] = 0;
+ GetModuleFileName( NULL, filename, _MAX_PATH ); // soffice resides in the same dir
+ char *p = strrchr( filename, '\\' );
+ if ( !p )
+ return false;
+
+ strncpy( p+1, "soffice.exe", _MAX_PATH - (p+1 - filename) );
+
+ char imagename[_MAX_PATH + 1];
+
+ imagename[_MAX_PATH] = 0;
+ _snprintf(imagename, _MAX_PATH, "\"%s\" -quickstart", filename );
+
+ UINT ret = WinExec( imagename, SW_SHOW );
+ if ( ret < 32 )
+ return false;
+/*
+ // wait until we can communicate
+ int retry = 30;
+ while (retry-- && !SofficeRuns() )
+ Sleep(1000);
+
+ return SofficeRuns();
+ */
+ return true;
+ }
+ else
+ return true;
+}
+
+void NotifyListener( HWND hWnd )
+{
+ static HICON hIconActive=NULL;
+ //static HICON hIconInActive=NULL;
+
+ if( !hIconActive )
+ {
+ hIconActive = (HICON)LoadImage( GetModuleHandle( NULL ), MAKEINTRESOURCE( ICON_ACTIVE ),
+ IMAGE_ICON, GetSystemMetrics( SM_CXSMICON ), GetSystemMetrics( SM_CYSMICON ),
+ LR_DEFAULTCOLOR | LR_SHARED );
+
+/* hIconInActive = (HICON)LoadImage( GetModuleHandle( NULL ), MAKEINTRESOURCE( ICON_INACTIVE ),
+ IMAGE_ICON, GetSystemMetrics( SM_CXSMICON ), GetSystemMetrics( SM_CYSMICON ),
+ LR_DEFAULTCOLOR | LR_SHARED );
+ */
+ }
+
+ NOTIFYICONDATA nid;
+ nid.cbSize = sizeof(NOTIFYICONDATA);
+ nid.hWnd = hWnd;
+ nid.uID = IDM_QUICKSTART;
+ nid.szTip[SAL_N_ELEMENTS(nid.szTip) - 1] = 0;
+// nid.hIcon = bTerminateVeto ? hIconActive : hIconInActive;
+// strncpy(nid.szTip, bTerminateVeto ? STRING_QUICKSTARTACTIVE : STRING_QUICKSTARTINACTIVE, SAL_N_ELEMENTS(nid.szTip) - 1 );
+ nid.hIcon = hIconActive;
+ strncpy(nid.szTip, szTooltipString, SAL_N_ELEMENTS(nid.szTip) - 1);
+ nid.uFlags = NIF_TIP|NIF_ICON;
+
+ // update systray
+ Shell_NotifyIcon( NIM_MODIFY, &nid );
+ //CheckMenuItem( popupMenu, IDM_QUICKSTART, bTerminateVeto ? MF_CHECKED : MF_UNCHECKED );
+
+ // notify listener
+ SendMessage( HWND_BROADCAST, aTerminationVetoMessage, (WORD) bTerminateVeto, 0L );
+}
+
+
+
+int APIENTRY WinMain(HINSTANCE hInstance,
+ HINSTANCE /*hPrevInstance*/,
+ LPSTR /*lpCmdLine*/,
+ int nCmdShow)
+{
+ // Look for -killtray argument
+
+ for ( int i = 1; i < __argc; i++ )
+ {
+ if ( 0 == strcmp( __argv[i], "-killtray" ) )
+ {
+ HWND hwndTray = FindWindow( LISTENER_WINDOWCLASS, NULL );
+
+ if ( hwndTray )
+ {
+ UINT uMsgKillTray = RegisterWindowMessage( KILLTRAY_MESSAGE );
+ SendMessage( hwndTray, uMsgKillTray, 0, 0 );
+ }
+
+ return 0;
+ }
+ }
+
+ launchSoffice();
+ return 0;
+
+ // TODO: Place code here.
+ MSG msg;
+ HACCEL hAccelTable;
+ aTerminationVetoMessage = RegisterWindowMessage( TERMINATIONVETO_MESSAGE );
+ aTerminateMessage = RegisterWindowMessage( TERMINATE_MESSAGE );
+
+ // Initialize global strings
+ LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
+ LoadString(hInstance, IDC_QUICKSTART, szWindowClass, MAX_LOADSTRING);
+
+ LoadString(hInstance, IDS_EXIT, szExitString, MAX_LOADSTRING);
+ LoadString(hInstance, IDS_TOOLTIP, szTooltipString, MAX_LOADSTRING);
+
+ MyRegisterClass(hInstance);
+
+ // Perform application initialization:
+ if (!InitInstance (hInstance, nCmdShow))
+ {
+ return FALSE;
+ }
+
+ hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_QUICKSTART);
+
+ // Main message loop:
+ while (GetMessage(&msg, NULL, 0, 0))
+ {
+ if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
+ {
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+ }
+
+ return msg.wParam;
+}
+
+
+
+//
+// FUNCTION: MyRegisterClass()
+//
+// PURPOSE: Registers the window class.
+//
+// COMMENTS:
+//
+// This function and its usage is only necessary if you want this code
+// to be compatible with Win32 systems prior to the 'RegisterClassEx'
+// function that was added to Windows 95. It is important to call this function
+// so that the application will get 'well formed' small icons associated
+// with it.
+//
+ATOM MyRegisterClass(HINSTANCE hInstance)
+{
+ WNDCLASSEX wcex;
+
+ wcex.cbSize = sizeof(WNDCLASSEX);
+
+ wcex.style = CS_HREDRAW | CS_VREDRAW;
+ wcex.lpfnWndProc = (WNDPROC)WndProc;
+ wcex.cbClsExtra = 0;
+ wcex.cbWndExtra = 0;
+ wcex.hInstance = hInstance;
+ wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_QUICKSTART);
+ wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
+ wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
+ wcex.lpszMenuName = NULL;
+ wcex.lpszClassName = szWindowClass;
+ wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);
+
+ return RegisterClassEx(&wcex);
+}
+
+//
+// FUNCTION: InitInstance(HANDLE, int)
+//
+// PURPOSE: Saves instance handle and creates main window
+//
+// COMMENTS:
+//
+// In this function, we save the instance handle in a global variable and
+// create and display the main program window.
+//
+BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
+{
+ HWND hWnd;
+
+ hInst = hInstance; // Store instance handle in our global variable
+
+ hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
+ CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
+
+ if (!hWnd)
+ {
+ return FALSE;
+ }
+
+ nCmdShow = SW_HIDE; // hide main window, we only need the taskbar icon
+ ShowWindow(hWnd, nCmdShow);
+ UpdateWindow(hWnd);
+
+ return TRUE;
+}
+
+//
+// FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
+//
+// PURPOSE: Processes messages for the main window.
+//
+// WM_COMMAND - process the application menu
+// WM_PAINT - Paint the main window
+// WM_DESTROY - post a quit message and return
+//
+//
+LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
+{
+ switch (message)
+ {
+ case WM_CREATE:
+ {
+ // make sure soffice runs
+ if( !launchSoffice() )
+ return -1;
+
+ // create popup menu
+ popupMenu = CreatePopupMenu();
+ static int count=0;
+
+ // Add my items
+ MENUITEMINFO mi;
+ mi.cbSize = sizeof(MENUITEMINFO);
+ mi.fMask=MIIM_TYPE|MIIM_STATE|MIIM_ID;
+ mi.fType=MFT_STRING;
+ mi.fState=MFS_ENABLED|MFS_DEFAULT;
+ mi.wID = IDM_QUICKSTART;
+ mi.hSubMenu=NULL;
+ mi.hbmpChecked=NULL;
+ mi.hbmpUnchecked=NULL;
+ mi.dwItemData=NULL;
+ mi.dwTypeData = "QuickStart";
+ mi.cch = strlen(mi.dwTypeData);
+// InsertMenuItem(popupMenu, count++, TRUE, &mi);
+
+ mi.cbSize = sizeof(MENUITEMINFO);
+ mi.fMask=MIIM_TYPE|MIIM_STATE|MIIM_ID;
+ mi.fType=MFT_STRING;
+ mi.fState=MFS_ENABLED;
+ mi.wID = IDM_ABOUT;
+ mi.hSubMenu=NULL;
+ mi.hbmpChecked=NULL;
+ mi.hbmpUnchecked=NULL;
+ mi.dwItemData=NULL;
+ mi.dwTypeData = "Info...";
+ mi.cch = strlen(mi.dwTypeData);
+// InsertMenuItem(popupMenu, count++, TRUE, &mi);
+
+ mi.cbSize = sizeof(MENUITEMINFO);
+ mi.fMask=MIIM_TYPE;
+ mi.fType=MFT_SEPARATOR;
+ mi.hSubMenu=NULL;
+ mi.hbmpChecked=NULL;
+ mi.hbmpUnchecked=NULL;
+ mi.dwItemData=NULL;
+// InsertMenuItem(popupMenu, count++, TRUE, &mi);
+
+ mi.cbSize = sizeof(MENUITEMINFO);
+ mi.fMask=MIIM_TYPE|MIIM_STATE|MIIM_ID;
+ mi.fType=MFT_STRING;
+ mi.fState=MFS_ENABLED;
+ mi.wID = IDM_EXIT;
+ mi.hSubMenu=NULL;
+ mi.hbmpChecked=NULL;
+ mi.hbmpUnchecked=NULL;
+ mi.dwItemData=NULL;
+ mi.dwTypeData = szExitString;
+ mi.cch = strlen(mi.dwTypeData);
+ InsertMenuItem(popupMenu, count++, TRUE, &mi);
+
+ // add taskbar icon
+ NOTIFYICONDATA nid;
+ nid.cbSize = sizeof(NOTIFYICONDATA);
+ nid.hWnd = hWnd;
+ nid.uID = IDM_QUICKSTART;
+ nid.uFlags = NIF_MESSAGE;
+ nid.uCallbackMessage=MY_TASKBAR_NOTIFICATION;
+ Shell_NotifyIcon(NIM_ADD, &nid);
+
+ // and update state
+ NotifyListener( hWnd );
+
+ // check for soffice
+ SetTimer(hWnd, UPDATE_TIMER, 3000, NULL);
+ }
+ break;
+
+ case MY_TASKBAR_NOTIFICATION: // message from taskbar
+ switch(lParam)
+ {
+/*
+ case WM_LBUTTONDBLCLK:
+ bTerminateVeto = bTerminateVeto ? false : true;
+ NotifyListener( hWnd );
+ break;
+ */
+
+ case WM_LBUTTONDOWN:
+ case WM_RBUTTONDOWN:
+ {
+ POINT pt;
+ GetCursorPos(&pt);
+ SetForegroundWindow( hWnd );
+ int m = TrackPopupMenuEx(popupMenu, TPM_RETURNCMD|TPM_LEFTALIGN|TPM_RIGHTBUTTON,
+ pt.x, pt.y, hWnd, NULL);
+ // BUGFIX: See Q135788 (PRB: Menus for Notification Icons Don't Work Correctly)
+ PostMessage(hWnd, NULL, 0, 0);
+ switch(m)
+ {
+ case IDM_QUICKSTART:
+ bTerminateVeto = bTerminateVeto ? false : true;
+ NotifyListener( hWnd );
+ break;
+ case IDM_ABOUT:
+ DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
+ break;
+ case IDM_EXIT:
+ DestroyWindow(hWnd);
+ break;
+ }
+ }
+ break;
+ }
+ break;
+
+ case WM_TIMER:
+ if( wParam == UPDATE_TIMER )
+ {
+ // update state
+ NotifyListener( hWnd );
+ }
+ break;
+
+ case WM_DESTROY:
+ // try to terminate office
+ SendMessage( HWND_BROADCAST, aTerminateMessage, 0, 0L );
+
+ // delete taskbar icon
+ NOTIFYICONDATA nid;
+ nid.cbSize=sizeof(NOTIFYICONDATA);
+ nid.hWnd = hWnd;
+ nid.uID = IDM_QUICKSTART;
+ Shell_NotifyIcon(NIM_DELETE, &nid);
+
+ PostQuitMessage(0);
+ break;
+ default:
+ return DefWindowProc(hWnd, message, wParam, lParam);
+ }
+ return 0;
+}
+
+// Mesage handler for about box.
+LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM)
+{
+ switch (message)
+ {
+ case WM_INITDIALOG:
+ return TRUE;
+
+ case WM_COMMAND:
+ if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
+ {
+ EndDialog(hDlg, LOWORD(wParam));
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/win32/source/QuickStart/QuickStart.h b/desktop/win32/source/QuickStart/QuickStart.h
new file mode 100755
index 0000000000..b61a04075e
--- /dev/null
+++ b/desktop/win32/source/QuickStart/QuickStart.h
@@ -0,0 +1,15 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+
+#if !defined(AFX_QUICKSTART_H__7D38EE02_7699_4CF0_AFF9_FD92E05CC009__INCLUDED_)
+#define AFX_QUICKSTART_H__7D38EE02_7699_4CF0_AFF9_FD92E05CC009__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#include "resource.h"
+
+
+#endif // !defined(AFX_QUICKSTART_H__7D38EE02_7699_4CF0_AFF9_FD92E05CC009__INCLUDED_)
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/win32/source/QuickStart/StdAfx.h b/desktop/win32/source/QuickStart/StdAfx.h
new file mode 100755
index 0000000000..88c24f4535
--- /dev/null
+++ b/desktop/win32/source/QuickStart/StdAfx.h
@@ -0,0 +1,42 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+// stdafx.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+//
+
+#if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
+#define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
+
+
+// Windows Header Files:
+#if defined _MSC_VER
+#pragma warning(push, 1)
+#endif
+#include <windows.h>
+#include <shellapi.h>
+#if defined _MSC_VER
+#pragma warning(pop)
+#endif
+
+// C RunTime Header Files
+#include <stdlib.h>
+#include <malloc.h>
+#include <memory.h>
+#include <tchar.h>
+
+// Local Header Files
+
+// TODO: reference additional headers your program requires here
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/win32/source/QuickStart/makefile.mk b/desktop/win32/source/QuickStart/makefile.mk
new file mode 100644
index 0000000000..41242d849d
--- /dev/null
+++ b/desktop/win32/source/QuickStart/makefile.mk
@@ -0,0 +1,74 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org 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 Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sysui
+TARGET=quickstart
+LIBTARGET=NO
+ENABLE_EXCEPTIONS=TRUE
+TARGETTYPE=GUI
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+UWINAPILIB =
+
+# --- Resources ----------------------------------------------------
+
+RCFILES=OOQuickStart.rc
+
+# --- Files --------------------------------------------------------
+
+OBJFILES=$(OBJ)$/QuickStart.obj
+
+APP1OBJS=$(OBJFILES)
+APP1NOSAL=TRUE
+APP1TARGET=$(TARGET)
+APP1RPATH=BRAND
+.IF "$(COM)"=="GCC"
+APP1STDLIBS=-luuid
+.ELSE
+APP1STDLIBS=comsupp.lib
+.ENDIF
+
+APP1STDLIBS+=$(SHELL32LIB)\
+ $(OLE32LIB)\
+ $(GDI32LIB)\
+ $(OLEAUT32LIB)\
+ $(COMDLG32LIB)\
+ $(KERNEL32LIB)\
+ $(OLEAUT32LIB)
+
+APP1NOSVRES=$(RES)$/$(TARGET).res
+
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
diff --git a/desktop/win32/source/QuickStart/resource.h b/desktop/win32/source/QuickStart/resource.h
new file mode 100755
index 0000000000..cd47c2ad1f
--- /dev/null
+++ b/desktop/win32/source/QuickStart/resource.h
@@ -0,0 +1,35 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by QUICKSTART.RC
+//
+#define IDR_MAINFRAME 128
+#define IDD_QUICKSTART_DIALOG 102
+#define IDD_ABOUTBOX 103
+#define IDS_APP_TITLE 103
+#define IDM_ABOUT 104
+#define IDM_EXIT 105
+#define IDS_HELLO 106
+#define IDI_QUICKSTART 107
+#define IDI_SMALL 108
+#define IDC_QUICKSTART 109
+#define IDM_QUICKSTART 110
+#define IDS_TOOLTIP 111
+#define IDS_EXIT 112
+#define ICON_ACTIVE 1
+#define ICON_INACTIVE 2
+#define IDC_MYICON 3
+#define IDC_STATIC -1
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+
+#define _APS_NEXT_RESOURCE_VALUE 129
+#define _APS_NEXT_COMMAND_VALUE 32771
+#define _APS_NEXT_CONTROL_VALUE 1000
+#define _APS_NEXT_SYMED_VALUE 113
+#endif
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/win32/source/QuickStart/so/QuickStart.rc b/desktop/win32/source/QuickStart/so/QuickStart.rc
new file mode 100755
index 0000000000..732904dc74
--- /dev/null
+++ b/desktop/win32/source/QuickStart/so/QuickStart.rc
@@ -0,0 +1,130 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "../resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#define APSTUDIO_HIDDEN_SYMBOLS
+#include "windows.h"
+#undef APSTUDIO_HIDDEN_SYMBOLS
+#include "resource.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// German (Germany) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
+#ifdef _WIN32
+LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+ICON_ACTIVE ICON DISCARDABLE "icons/so9_main_app.ico"
+IDI_QUICKSTART ICON DISCARDABLE "icons/so9_main_app.ico"
+IDI_SMALL ICON DISCARDABLE "icons/so9_main_app.ico"
+ICON_INACTIVE ICON DISCARDABLE "icons/so9_main_app.ico"
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Accelerator
+//
+
+IDC_QUICKSTART ACCELERATORS MOVEABLE PURE
+BEGIN
+ "?", IDM_ABOUT, ASCII, ALT
+ "/", IDM_ABOUT, ASCII, ALT
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_ABOUTBOX DIALOG DISCARDABLE 22, 17, 230, 75
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "About"
+FONT 8, "System"
+BEGIN
+ ICON IDI_QUICKSTART,IDC_MYICON,14,9,16,16
+ LTEXT "QuickStart Version 1.0",IDC_STATIC,49,10,119,8,
+ SS_NOPREFIX
+ LTEXT "Copyright (C) 2001",IDC_STATIC,49,20,119,8
+ DEFPUSHBUTTON "OK",IDOK,195,6,30,11,WS_GROUP
+END
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
+ "#include ""windows.h""\r\n"
+ "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
+ "#include ""resource.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resource.h\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_APP_TITLE "SoQuickStart"
+ IDC_QUICKSTART "QUICKSTART"
+ IDS_TOOLTIP "Oracle Open Office 3.2 QuickStart"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_EXIT "Exit"
+END
+
+#endif // German (Germany) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/desktop/win32/source/QuickStart/so/makefile.mk b/desktop/win32/source/QuickStart/so/makefile.mk
new file mode 100755
index 0000000000..50154c7d50
--- /dev/null
+++ b/desktop/win32/source/QuickStart/so/makefile.mk
@@ -0,0 +1,77 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org 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 Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..$/..
+
+PRJNAME=sysui
+TARGET=soquickstart
+LIBTARGET=NO
+ENABLE_EXCEPTIONS=TRUE
+TARGETTYPE=GUI
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+UWINAPILIB =
+
+# --- Resources ----------------------------------------------------
+
+.IF "$(LINK_SO)"=="TRUE"
+
+RCFILES=QuickStart.rc
+INCPRE=..
+
+# --- Files --------------------------------------------------------
+
+OBJFILES=$(OBJ)$/QuickStart.obj
+
+APP1OBJS=$(OBJFILES)
+APP1NOSAL=TRUE
+APP1TARGET=$(TARGET)
+APP1RPATH=BRAND
+.IF "$(COM)"=="GCC"
+APP1STDLIBS=-luuid
+.ELSE
+APP1STDLIBS=comsupp.lib
+.ENDIF
+
+APP1STDLIBS+=$(SHELL32LIB)\
+ $(OLE32LIB)\
+ $(GDI32LIB)\
+ $(OLEAUT32LIB)\
+ $(COMDLG32LIB)\
+ $(KERNEL32LIB)\
+ $(OLEAUT32LIB)
+
+APP1NOSVRES=$(RES)$/$(TARGET).res
+
+.ENDIF # "$(LINK_SO)"=="TRUE"
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
diff --git a/desktop/win32/source/applauncher/launcher.cxx b/desktop/win32/source/applauncher/launcher.cxx
index dd50c351a9..7fceb0173f 100644
--- a/desktop/win32/source/applauncher/launcher.cxx
+++ b/desktop/win32/source/applauncher/launcher.cxx
@@ -72,7 +72,6 @@ extern "C" int APIENTRY _tWinMain( HINSTANCE, HINSTANCE, LPTSTR, int )
ppArguments = GetArgv( &nArguments );
- // if ( 1 == nArguments )
{
lpCommandLine = (LPTSTR)_alloca( sizeof(_TCHAR) * (_tcslen(lpCommandLine) + _tcslen(APPLICATION_SWITCH) + 2) );
diff --git a/desktop/win32/source/applauncher/makefile.mk b/desktop/win32/source/applauncher/makefile.mk
index f0f5743f38..d08309bbed 100644..100755
--- a/desktop/win32/source/applauncher/makefile.mk
+++ b/desktop/win32/source/applauncher/makefile.mk
@@ -53,6 +53,7 @@ OBJFILES= \
$(OBJ)$/sweb.obj
# SO launcher
+.IF "$(LINK_SO)"=="TRUE"
.IF "$(BUILD_SPECIAL)"!=""
APP1DEPN= $(APP1RES) verinfo.rc
APP1TARGET=so$/swriter
@@ -139,7 +140,8 @@ APP7VERINFO=verinfo.rc
APP7PRODUCTDEF+=-DRES_APP_NAME=sweb
-.ENDIF # "$(BUILD_SPECIAL)"!=""
+.ENDIF # "$(BUILD_SPECIAL)"!=""
+.ENDIF # "$(LINK_SO)"=="TRUE"
# --- Targets ------------------------------------------------------
diff --git a/desktop/win32/source/applauncher/ooo/makefile.mk b/desktop/win32/source/applauncher/ooo/makefile.mk
index 02f240cce9..02f240cce9 100644..100755
--- a/desktop/win32/source/applauncher/ooo/makefile.mk
+++ b/desktop/win32/source/applauncher/ooo/makefile.mk
diff --git a/desktop/win32/source/applauncher/verinfo.rc b/desktop/win32/source/applauncher/verinfo.rc
index afb58f3a37..afb58f3a37 100644..100755
--- a/desktop/win32/source/applauncher/verinfo.rc
+++ b/desktop/win32/source/applauncher/verinfo.rc
diff --git a/desktop/win32/source/extendloaderenvironment.hxx b/desktop/win32/source/extendloaderenvironment.hxx
index 2c1207a0db..83163d49e0 100644
--- a/desktop/win32/source/extendloaderenvironment.hxx
+++ b/desktop/win32/source/extendloaderenvironment.hxx
@@ -79,12 +79,10 @@ inline WCHAR * commandLineAppendEncoded(WCHAR * buffer, WCHAR const * text) {
// Set the PATH environment variable in the current (loader) process, so that a
// following CreateProcess has the necessary environment:
-//
// @param binPath
// Must point to an array of size at least MAX_PATH. Is filled with the null
// terminated full path to the "bin" file corresponding to the current
// executable.
-//
// @param iniDirectory
// Must point to an array of size at least MAX_PATH. Is filled with the null
// terminated full directory path (ending in "\") to the "ini" file
diff --git a/desktop/win32/source/guiloader/makefile.mk b/desktop/win32/source/guiloader/makefile.mk
index 5bb1c523ff..7912471fba 100644..100755
--- a/desktop/win32/source/guiloader/makefile.mk
+++ b/desktop/win32/source/guiloader/makefile.mk
@@ -48,14 +48,16 @@ APP1OBJS=\
$(SOLARLIBDIR)$/pathutils-obj.obj
STDLIB1=$(SHLWAPILIB)
+.IF "$(LINK_SO)"=="TRUE"
APP2TARGET=so$/guiloader
APP2NOSAL=TRUE
-APP2ICON=$(SOLARRESDIR)$/icons/so8-main-app.ico
+APP2ICON=$(SOLARRESDIR)$/icons/so9_main_app.ico
APP2OBJS=\
$(OBJ)$/extendloaderenvironment.obj \
$(OBJ)$/genericloader.obj \
$(SOLARLIBDIR)$/pathutils-obj.obj
STDLIB2=$(SHLWAPILIB)
+.ENDIF # "$(LINK_SO)"=="TRUE"
# --- Targets ------------------------------------------------------
diff --git a/desktop/win32/source/guistdio/guistdio.inc b/desktop/win32/source/guistdio/guistdio.inc
index 05d462d231..05d462d231 100644..100755
--- a/desktop/win32/source/guistdio/guistdio.inc
+++ b/desktop/win32/source/guistdio/guistdio.inc
diff --git a/desktop/win32/source/guistdio/makefile.mk b/desktop/win32/source/guistdio/makefile.mk
index 660a48bcdc..660a48bcdc 100644..100755
--- a/desktop/win32/source/guistdio/makefile.mk
+++ b/desktop/win32/source/guistdio/makefile.mk
diff --git a/desktop/win32/source/main.h b/desktop/win32/source/main.h
index 9e72fb9c3e..9e72fb9c3e 100644..100755
--- a/desktop/win32/source/main.h
+++ b/desktop/win32/source/main.h
diff --git a/desktop/win32/source/makefile.mk b/desktop/win32/source/makefile.mk
index 564ba319eb..564ba319eb 100644..100755
--- a/desktop/win32/source/makefile.mk
+++ b/desktop/win32/source/makefile.mk
diff --git a/desktop/win32/source/officeloader/makefile.mk b/desktop/win32/source/officeloader/makefile.mk
index 10758727b7..5609dea250 100644..100755
--- a/desktop/win32/source/officeloader/makefile.mk
+++ b/desktop/win32/source/officeloader/makefile.mk
@@ -30,7 +30,6 @@ PRJ=..$/..$/..
PRJNAME=desktop
TARGET=officeloader
LIBTARGET=NO
-#TARGETTYPE=GUI
# --- Settings -----------------------------------------------------
@@ -41,23 +40,6 @@ LIBTARGET=NO
OBJFILES = \
$(OBJ)$/officeloader.obj
-#APP1TARGET=so$/officeloader
-#APP1NOSAL=TRUE
-#APP1LINKRES=$(MISC)$/$(TARGET).res
-#APP1ICON=$(SOLARRESDIR)$/icons/001_star_main.ico
-#APP1OBJS = \
-# $(OBJ)$/officeloader.obj
-
-#APP2TARGET=officeloader
-#APP2NOSAL=TRUE
-#APP2LINKRES=$(MISC)$/$(TARGET).res
-#APP2ICON=$(SOLARRESDIR)$/icons/ooo_gulls.ico
-#APP2OBJS = \
-# $(OBJ)$/officeloader.obj
-
-
# --- Targets ------------------------------------------------------
-
.INCLUDE : target.mk
-
diff --git a/desktop/win32/source/officeloader/officeloader.cxx b/desktop/win32/source/officeloader/officeloader.cxx
index cce56b05a6..f61b56216d 100644
--- a/desktop/win32/source/officeloader/officeloader.cxx
+++ b/desktop/win32/source/officeloader/officeloader.cxx
@@ -115,7 +115,6 @@ BOOL WINAPI ConvertSidToStringSid( PSID pSid, LPTSTR* StringSid )
}
// Add SID subauthorities to the string.
- //
for (dwCounter=0 ; dwCounter < dwSubAuthorities ; dwCounter++)
{
dwSidSize+=wsprintf(*StringSid + dwSidSize, TEXT("-%lu"),
@@ -357,7 +356,7 @@ int WINAPI _tWinMain( HINSTANCE, HINSTANCE, LPTSTR, int )
BOOL bHeadlessMode( FALSE );
{
- // Check command line arguments for "-headless" parameter. We only
+ // Check command line arguments for "--headless" parameter. We only
// set the environment variable "ATTACHED_PARENT_PROCESSID" for the headless
// mode as self-destruction of the soffice.bin process can lead to
// certain side-effects (log-off can result in data-loss, ".lock" is not deleted.
@@ -371,8 +370,11 @@ int WINAPI _tWinMain( HINSTANCE, HINSTANCE, LPTSTR, int )
for ( n = 1; n < argc; n++ )
{
- if ( 0 == _tcsnicmp( argv[n], _T("-headless"), 9 ) )
+ if ( 0 == _tcsnicmp( argv[n], _T("-headless"), 9 ) ||
+ 0 == _tcsnicmp( argv[n], _T("--headless"), 9 ) )
+ {
bHeadlessMode = TRUE;
+ }
}
}
}
diff --git a/desktop/win32/source/rebase/Resource.h b/desktop/win32/source/rebase/Resource.h
index 8c892111c9..8c892111c9 100644..100755
--- a/desktop/win32/source/rebase/Resource.h
+++ b/desktop/win32/source/rebase/Resource.h
diff --git a/desktop/win32/source/rebase/makefile.mk b/desktop/win32/source/rebase/makefile.mk
index 724ea0edf4..724ea0edf4 100644..100755
--- a/desktop/win32/source/rebase/makefile.mk
+++ b/desktop/win32/source/rebase/makefile.mk
diff --git a/desktop/win32/source/rebase/rcfooter.txt b/desktop/win32/source/rebase/rcfooter.txt
index 3237729437..3237729437 100644..100755
--- a/desktop/win32/source/rebase/rcfooter.txt
+++ b/desktop/win32/source/rebase/rcfooter.txt
diff --git a/desktop/win32/source/rebase/rcheader.txt b/desktop/win32/source/rebase/rcheader.txt
index 56afc53779..56afc53779 100644..100755
--- a/desktop/win32/source/rebase/rcheader.txt
+++ b/desktop/win32/source/rebase/rcheader.txt
diff --git a/desktop/win32/source/rebase/rctmpl.txt b/desktop/win32/source/rebase/rctmpl.txt
index 97a2775e9b..97a2775e9b 100644..100755
--- a/desktop/win32/source/rebase/rctmpl.txt
+++ b/desktop/win32/source/rebase/rctmpl.txt
diff --git a/desktop/win32/source/rebase/rebasegui.ulf b/desktop/win32/source/rebase/rebasegui.ulf
index ee6b6e828a..ee6b6e828a 100644..100755
--- a/desktop/win32/source/rebase/rebasegui.ulf
+++ b/desktop/win32/source/rebase/rebasegui.ulf
diff --git a/desktop/win32/source/setup/Resource.h b/desktop/win32/source/setup/Resource.h
index 2f075004d6..2f075004d6 100644..100755
--- a/desktop/win32/source/setup/Resource.h
+++ b/desktop/win32/source/setup/Resource.h
diff --git a/desktop/win32/source/setup/makefile.mk b/desktop/win32/source/setup/makefile.mk
index 15b7b1937e..f0c6e0e955 100644..100755
--- a/desktop/win32/source/setup/makefile.mk
+++ b/desktop/win32/source/setup/makefile.mk
@@ -43,9 +43,9 @@ ENABLE_EXCEPTIONS = TRUE
INCPRE+=$(MFC_INCLUDE)
-.IF "$(USE_STLP_DEBUG)"!=""
+.IF "$(USE_DEBUG_RUNTIME)"!=""
CDEFS+=-D_DEBUG
-.ENDIF # "$(USE_STLP_DEBUG)"!=""
+.ENDIF # "$(USE_DEBUG_RUNTIME)"!=""
RCFILES= $(RES)$/$(TARGET).rc
diff --git a/desktop/win32/source/setup/rcfooter.txt b/desktop/win32/source/setup/rcfooter.txt
index 3237729437..3237729437 100644..100755
--- a/desktop/win32/source/setup/rcfooter.txt
+++ b/desktop/win32/source/setup/rcfooter.txt
diff --git a/desktop/win32/source/setup/rcheader.txt b/desktop/win32/source/setup/rcheader.txt
index 9a59ad7f64..9a59ad7f64 100644..100755
--- a/desktop/win32/source/setup/rcheader.txt
+++ b/desktop/win32/source/setup/rcheader.txt
diff --git a/desktop/win32/source/setup/rctmpl.txt b/desktop/win32/source/setup/rctmpl.txt
index 59f454f70c..59f454f70c 100644..100755
--- a/desktop/win32/source/setup/rctmpl.txt
+++ b/desktop/win32/source/setup/rctmpl.txt
diff --git a/desktop/win32/source/setup/setup.cpp b/desktop/win32/source/setup/setup.cpp
index 69d09a47f6..69d09a47f6 100644..100755
--- a/desktop/win32/source/setup/setup.cpp
+++ b/desktop/win32/source/setup/setup.cpp
diff --git a/desktop/win32/source/setup/setup.ulf b/desktop/win32/source/setup/setup.ulf
index d0e867d49f..85d43f43aa 100644..100755
--- a/desktop/win32/source/setup/setup.ulf
+++ b/desktop/win32/source/setup/setup.ulf
@@ -46,7 +46,7 @@ en-US = "There is already a setup process running."
[%UNKNOWN_ERROR%]
-en-US = "An Unknown Error occured!"
+en-US = "An Unknown Error occurred!"
[%INVALID_PROFILE%]
diff --git a/desktop/win32/source/setup/setup_main.cxx b/desktop/win32/source/setup/setup_main.cxx
index effd3de52e..920f60215b 100644
--- a/desktop/win32/source/setup/setup_main.cxx
+++ b/desktop/win32/source/setup/setup_main.cxx
@@ -75,8 +75,6 @@ SetupApp::~SetupApp()
}
//--------------------------------------------------------------------------
-//--------------------------------------------------------------------------
-//--------------------------------------------------------------------------
extern "C" int __stdcall WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, int )
{
@@ -129,7 +127,7 @@ extern "C" int __stdcall WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, int )
{
pSetup->DisplayError( ERROR_OUTOFMEMORY );
}
- catch ( UINT nErr )
+ catch ( UINT &nErr )
{
pSetup->DisplayError( nErr );
}
diff --git a/desktop/win32/source/wrapper.h b/desktop/win32/source/wrapper.h
index 6ccf063b36..6ccf063b36 100644..100755
--- a/desktop/win32/source/wrapper.h
+++ b/desktop/win32/source/wrapper.h
diff --git a/desktop/zipintro/delzip b/desktop/zipintro/delzip
index 8b13789179..8b13789179 100644..100755
--- a/desktop/zipintro/delzip
+++ b/desktop/zipintro/delzip
diff --git a/desktop/zipintro/makefile.mk b/desktop/zipintro/makefile.mk
index cdc547fcc5..83a91ad3c2 100644..100755
--- a/desktop/zipintro/makefile.mk
+++ b/desktop/zipintro/makefile.mk
@@ -67,7 +67,7 @@ ZIP3DEPS=$(ZIP3LIST)
.INCLUDE : target.mk
ALLTAR : \
- $(COMMONBIN)$/brand$/intro.zip \
+ $(COMMONBIN)$/intro.zip \
$(COMMONBIN)$/brand_dev$/intro.zip \
$(COMMONBIN)$/shell/shell.zip
@@ -75,7 +75,7 @@ $(COMMONBIN)$/brand_dev$/intro.zip : $(COMMONBIN)$/brand_dev.zip
@@-$(MKDIR) $(@:d)
@$(COPY) $< $@
-$(COMMONBIN)$/brand$/intro.zip : $(COMMONBIN)$/brand.zip
+$(COMMONBIN)$/intro.zip : $(COMMONBIN)$/brand.zip
@@-$(MKDIR) $(@:d)
@$(COPY) $< $@