diff options
Diffstat (limited to 'dbaccess/source/ui/browser/unodatbr.cxx')
-rw-r--r-- | dbaccess/source/ui/browser/unodatbr.cxx | 437 |
1 files changed, 213 insertions, 224 deletions
diff --git a/dbaccess/source/ui/browser/unodatbr.cxx b/dbaccess/source/ui/browser/unodatbr.cxx index 5bbfe7b298ef..283f3680afd6 100644 --- a/dbaccess/source/ui/browser/unodatbr.cxx +++ b/dbaccess/source/ui/browser/unodatbr.cxx @@ -82,12 +82,13 @@ #include <svx/dataaccessdescriptor.hxx> #include <svx/databaseregistrationui.hxx> #include <toolkit/helper/vclunohelper.hxx> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> #include <osl/diagnose.h> #include <sal/log.hxx> #include <tools/multisel.hxx> #include <tools/urlobj.hxx> #include <unotools/confignode.hxx> +#include <utility> #include <vcl/split.hxx> #include <vcl/svapp.hxx> #include <vcl/toolbox.hxx> @@ -110,7 +111,6 @@ using namespace ::com::sun::star::lang; using namespace ::com::sun::star::ui::dialogs; using namespace ::com::sun::star::task; using namespace ::com::sun::star::form; -using namespace ::com::sun::star::io; using namespace ::com::sun::star::i18n; using namespace ::com::sun::star::view; using namespace ::com::sun::star::datatransfer; @@ -151,12 +151,12 @@ static void SafeRemovePropertyListener(const Reference< XPropertySet > & xSet, c OUString SAL_CALL SbaTableQueryBrowser::getImplementationName() { - return "org.openoffice.comp.dbu.ODatasourceBrowser"; + return u"org.openoffice.comp.dbu.ODatasourceBrowser"_ustr; } css::uno::Sequence<OUString> SAL_CALL SbaTableQueryBrowser::getSupportedServiceNames() { - return { "com.sun.star.sdb.DataSourceBrowser" }; + return { u"com.sun.star.sdb.DataSourceBrowser"_ustr }; } SbaTableQueryBrowser::SbaTableQueryBrowser(const Reference< XComponentContext >& _rM) @@ -192,9 +192,9 @@ Any SAL_CALL SbaTableQueryBrowser::queryInterface(const Type& _rType) { if ( _rType.equals( cppu::UnoType<XScriptInvocationContext>::get() ) ) { - OSL_PRECOND( !!m_aDocScriptSupport, "SbaTableQueryBrowser::queryInterface: did not initialize this, yet!" ); - if ( !!m_aDocScriptSupport && *m_aDocScriptSupport ) - return makeAny( Reference< XScriptInvocationContext >( this ) ); + OSL_PRECOND( m_aDocScriptSupport.has_value(), "SbaTableQueryBrowser::queryInterface: did not initialize this, yet!" ); + if ( m_aDocScriptSupport.has_value() && *m_aDocScriptSupport ) + return Any( Reference< XScriptInvocationContext >( this ) ); return Any(); } @@ -211,13 +211,14 @@ Sequence< Type > SAL_CALL SbaTableQueryBrowser::getTypes( ) SbaTableQueryBrowser_Base::getTypes() ) ); - OSL_PRECOND( !!m_aDocScriptSupport, "SbaTableQueryBrowser::getTypes: did not initialize this, yet!" ); - if ( !m_aDocScriptSupport || !*m_aDocScriptSupport ) + OSL_PRECOND( m_aDocScriptSupport.has_value(), "SbaTableQueryBrowser::getTypes: did not initialize this, yet!" ); + if ( !m_aDocScriptSupport.has_value() || !*m_aDocScriptSupport ) { - auto newEnd = std::remove_if( aTypes.begin(), aTypes.end(), + auto [begin, end] = asNonConstRange(aTypes); + auto newEnd = std::remove_if( begin, end, [](const Type& type) { return type == cppu::UnoType<XScriptInvocationContext>::get(); } ); - aTypes.realloc( std::distance(aTypes.begin(), newEnd) ); + aTypes.realloc( std::distance(begin, newEnd) ); } return aTypes; } @@ -248,6 +249,11 @@ void SAL_CALL SbaTableQueryBrowser::disposing() // remove ourself as status listener implRemoveStatusListeners(); + // check out from all the objects we are listening + // the frame + if (m_xCurrentFrameParent.is()) + m_xCurrentFrameParent->removeFrameActionListener(static_cast<css::frame::XFrameActionListener*>(this)); + // remove the container listener from the database context try { @@ -259,10 +265,6 @@ void SAL_CALL SbaTableQueryBrowser::disposing() DBG_UNHANDLED_EXCEPTION("dbaccess"); } - // check out from all the objects we are listening - // the frame - if (m_xCurrentFrameParent.is()) - m_xCurrentFrameParent->removeFrameActionListener(static_cast<css::frame::XFrameActionListener*>(this)); SbaXDataBrowserController::disposing(); } @@ -284,49 +286,49 @@ bool SbaTableQueryBrowser::Construct(vcl::Window* pParent) { SAL_WARN("dbaccess.ui", "SbaTableQueryBrowser::Construct: could not create (or start listening at) the database context!"); } + // some help ids - if (getBrowserView() && getBrowserView()->getVclControl()) - { + if (!getBrowserView() || !getBrowserView()->getVclControl()) + return true; - // create controls and set sizes - const tools::Long nFrameWidth = getBrowserView()->LogicToPixel(::Size(3, 0), MapMode(MapUnit::MapAppFont)).Width(); + // create controls and set sizes + const tools::Long nFrameWidth = getBrowserView()->LogicToPixel(::Size(3, 0), MapMode(MapUnit::MapAppFont)).Width(); - m_pSplitter = VclPtr<Splitter>::Create(getBrowserView(),WB_HSCROLL); - m_pSplitter->SetPosSizePixel( ::Point(0,0), ::Size(nFrameWidth,0) ); - m_pSplitter->SetBackground( Wallpaper( Application::GetSettings().GetStyleSettings().GetDialogColor() ) ); + m_pSplitter = VclPtr<Splitter>::Create(getBrowserView(),WB_HSCROLL); + m_pSplitter->SetPosSizePixel( ::Point(0,0), ::Size(nFrameWidth,0) ); + m_pSplitter->SetBackground( Wallpaper( Application::GetSettings().GetStyleSettings().GetDialogColor() ) ); - m_pTreeView = VclPtr<InterimDBTreeListBox>::Create(getBrowserView(), E_TABLE); + m_pTreeView = VclPtr<InterimDBTreeListBox>::Create(getBrowserView()); - weld::TreeView& rTreeView = m_pTreeView->GetWidget(); - rTreeView.connect_expanding(LINK(this, SbaTableQueryBrowser, OnExpandEntry)); + weld::TreeView& rTreeView = m_pTreeView->GetWidget(); + rTreeView.connect_expanding(LINK(this, SbaTableQueryBrowser, OnExpandEntry)); - m_pTreeView->setCopyHandler(LINK(this, SbaTableQueryBrowser, OnCopyEntry)); + m_pTreeView->setCopyHandler(LINK(this, SbaTableQueryBrowser, OnCopyEntry)); - m_pTreeView->setContextMenuProvider( this ); - m_pTreeView->setControlActionListener( this ); - m_pTreeView->SetHelpId(HID_CTL_TREEVIEW); + m_pTreeView->setContextMenuProvider( this ); + m_pTreeView->setControlActionListener( this ); + m_pTreeView->SetHelpId(HID_CTL_TREEVIEW); - // a default pos for the splitter, so that the listbox is about 80 (logical) pixels wide - m_pSplitter->SetSplitPosPixel(getBrowserView()->LogicToPixel(::Size(80, 0), MapMode(MapUnit::MapAppFont)).Width()); + // a default pos for the splitter, so that the listbox is about 80 (logical) pixels wide + m_pSplitter->SetSplitPosPixel(getBrowserView()->LogicToPixel(::Size(80, 0), MapMode(MapUnit::MapAppFont)).Width()); - getBrowserView()->setSplitter(m_pSplitter); - getBrowserView()->setTreeView(m_pTreeView); + getBrowserView()->setSplitter(m_pSplitter); + getBrowserView()->setTreeView(m_pTreeView); - // fill view with data - rTreeView.set_sort_order(true); - rTreeView.set_sort_func([this](const weld::TreeIter& rLeft, const weld::TreeIter& rRight){ - return OnTreeEntryCompare(rLeft, rRight); - }); - rTreeView.make_sorted(); - m_pTreeView->SetSelChangeHdl(LINK(this, SbaTableQueryBrowser, OnSelectionChange)); - m_pTreeView->show_container(); + // fill view with data + rTreeView.set_sort_order(true); + rTreeView.set_sort_func([this](const weld::TreeIter& rLeft, const weld::TreeIter& rRight){ + return OnTreeEntryCompare(rLeft, rRight); + }); + rTreeView.make_sorted(); + m_pTreeView->SetSelChangeHdl(LINK(this, SbaTableQueryBrowser, OnSelectionChange)); + m_pTreeView->show_container(); - // TODO - getBrowserView()->getVclControl()->SetHelpId(HID_CTL_TABBROWSER); - if (getBrowserView()->getVclControl()->GetHeaderBar()) - getBrowserView()->getVclControl()->GetHeaderBar()->SetHelpId(HID_DATABROWSE_HEADER); - InvalidateFeature(ID_BROWSER_EXPLORER); - } + // TODO + getBrowserView()->getVclControl()->SetHelpId(HID_CTL_TABBROWSER); + if (getBrowserView()->getVclControl()->GetHeaderBar()) + getBrowserView()->getVclControl()->GetHeaderBar()->SetHelpId(HID_DATABROWSE_HEADER); + InvalidateFeature(ID_BROWSER_EXPLORER); return true; } @@ -414,8 +416,8 @@ void SbaTableQueryBrowser::impl_sanitizeRowSetClauses_nothrow() if ( invalidColumn ) { // reset the complete order statement at both the row set and the parser - xRowSetProps->setPropertyValue( PROPERTY_ORDER, makeAny( OUString() ) ); - xComposer->setOrder( "" ); + xRowSetProps->setPropertyValue( PROPERTY_ORDER, Any( OUString() ) ); + xComposer->setOrder( u""_ustr ); } // check if the columns participating in the filter refer to existing tables @@ -467,7 +469,7 @@ bool SbaTableQueryBrowser::InitializeForm( const Reference< XPropertySet > & i_f try { weld::TreeView& rTreeView = m_pTreeView->GetWidget(); - DBTreeListUserData* pData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*m_xCurrentlyDisplayed).toUInt64()); + DBTreeListUserData* pData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*m_xCurrentlyDisplayed)); ENSURE_OR_RETURN_FALSE( pData, "SbaTableQueryBrowser::InitializeForm: No user data set at the currently displayed entry!" ); ENSURE_OR_RETURN_FALSE( pData->xObjectProperties.is(), "SbaTableQueryBrowser::InitializeForm: No table available!" ); @@ -477,16 +479,16 @@ bool SbaTableQueryBrowser::InitializeForm( const Reference< XPropertySet > & i_f const OUString aTransferProperties[] = { - OUString(PROPERTY_APPLYFILTER), - OUString(PROPERTY_FILTER), - OUString(PROPERTY_HAVING_CLAUSE), - OUString(PROPERTY_ORDER) + PROPERTY_APPLYFILTER, + PROPERTY_FILTER, + PROPERTY_HAVING_CLAUSE, + PROPERTY_ORDER }; - for (const auto & aTransferPropertie : aTransferProperties) + for (const auto & aTransferProperty : aTransferProperties) { - if ( !xPSI->hasPropertyByName( aTransferPropertie ) ) + if ( !xPSI->hasPropertyByName( aTransferProperty ) ) continue; - aPropertyValues.put( aTransferPropertie, pData->xObjectProperties->getPropertyValue( aTransferPropertie ) ); + aPropertyValues.put( aTransferProperty, pData->xObjectProperties->getPropertyValue( aTransferProperty ) ); } std::vector< OUString > aNames( aPropertyValues.getNames() ); @@ -521,9 +523,9 @@ void SbaTableQueryBrowser::initializePreviewMode() Reference< XPropertySet > xDataSourceSet(getRowSet(), UNO_QUERY); if ( xDataSourceSet.is() ) { - xDataSourceSet->setPropertyValue("AllowInserts",makeAny(false)); - xDataSourceSet->setPropertyValue("AllowUpdates",makeAny(false)); - xDataSourceSet->setPropertyValue("AllowDeletes",makeAny(false)); + xDataSourceSet->setPropertyValue(u"AllowInserts"_ustr,Any(false)); + xDataSourceSet->setPropertyValue(u"AllowUpdates"_ustr,Any(false)); + xDataSourceSet->setPropertyValue(u"AllowDeletes"_ustr,Any(false)); } } @@ -544,10 +546,10 @@ void SbaTableQueryBrowser::InitializeGridModel(const Reference< css::form::XForm if (m_xCurrentlyDisplayed) { Sequence< OUString> aProperties(6 + ( m_bPreview ? 5 : 0 )); - Sequence< Any> aValues(7 + ( m_bPreview ? 5 : 0 )); + Sequence< Any> aValues(6 + ( m_bPreview ? 5 : 0 )); weld::TreeView& rTreeView = m_pTreeView->GetWidget(); - DBTreeListUserData* pData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*m_xCurrentlyDisplayed).toUInt64()); + DBTreeListUserData* pData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*m_xCurrentlyDisplayed)); OSL_ENSURE( pData->xObjectProperties.is(), "SbaTableQueryBrowser::InitializeGridModel: No table available!" ); if ( !pData->xObjectProperties.is() ) return; @@ -639,14 +641,14 @@ void SbaTableQueryBrowser::InitializeGridModel(const Reference< css::form::XForm case DataType::BOOLEAN: { aCurrentModelType = "CheckBox"; - aInitialValues.emplace_back( "VisualEffect", makeAny( VisualEffect::FLAT ) ); + aInitialValues.emplace_back( "VisualEffect", Any( VisualEffect::FLAT ) ); sDefaultProperty = PROPERTY_DEFAULTSTATE; sal_Int32 nNullable = ColumnValue::NULLABLE_UNKNOWN; OSL_VERIFY( xColumn->getPropertyValue( PROPERTY_ISNULLABLE ) >>= nNullable ); aInitialValues.emplace_back( "TriState", - makeAny( ColumnValue::NO_NULLS != nNullable ) + Any( ColumnValue::NO_NULLS != nNullable ) ); if ( ColumnValue::NO_NULLS == nNullable ) aDefault <<= sal_Int16(TRISTATE_FALSE); @@ -655,7 +657,7 @@ void SbaTableQueryBrowser::InitializeGridModel(const Reference< css::form::XForm case DataType::LONGVARCHAR: case DataType::CLOB: - aInitialValues.emplace_back( "MultiLine", makeAny( true ) ); + aInitialValues.emplace_back( "MultiLine", Any( true ) ); [[fallthrough]]; case DataType::BINARY: case DataType::VARBINARY: @@ -673,19 +675,19 @@ void SbaTableQueryBrowser::InitializeGridModel(const Reference< css::form::XForm sDefaultProperty = PROPERTY_EFFECTIVEDEFAULT; if ( xSupplier.is() ) - aInitialValues.emplace_back( "FormatsSupplier", makeAny( xSupplier ) ); - aInitialValues.emplace_back( "TreatAsNumber", makeAny( bFormattedIsNumeric ) ); + aInitialValues.emplace_back( "FormatsSupplier", Any( xSupplier ) ); + aInitialValues.emplace_back( "TreatAsNumber", Any( bFormattedIsNumeric ) ); aCopyProperties.emplace_back(PROPERTY_FORMATKEY ); break; } - aInitialValues.emplace_back( PROPERTY_CONTROLSOURCE, makeAny( rName ) ); + aInitialValues.emplace_back( PROPERTY_CONTROLSOURCE, Any( rName ) ); OUString sLabel; xColumn->getPropertyValue(PROPERTY_LABEL) >>= sLabel; if ( !sLabel.isEmpty() ) - aInitialValues.emplace_back( PROPERTY_LABEL, makeAny( sLabel ) ); + aInitialValues.emplace_back( PROPERTY_LABEL, Any( sLabel ) ); else - aInitialValues.emplace_back( PROPERTY_LABEL, makeAny( rName ) ); + aInitialValues.emplace_back( PROPERTY_LABEL, Any( rName ) ); Reference< XPropertySet > xGridCol( xColFactory->createColumn( aCurrentModelType ), UNO_SET_THROW ); Reference< XPropertySetInfo > xGridColPSI( xGridCol->getPropertySetInfo(), UNO_SET_THROW ); @@ -732,7 +734,7 @@ void SbaTableQueryBrowser::InitializeGridModel(const Reference< css::form::XForm // don't allow the mouse to scroll in the cells if ( xGridColPSI->hasPropertyByName( PROPERTY_MOUSE_WHEEL_BEHAVIOR ) ) - aInitialValues.emplace_back( PROPERTY_MOUSE_WHEEL_BEHAVIOR, makeAny( MouseWheelBehavior::SCROLL_DISABLED ) ); + aInitialValues.emplace_back( PROPERTY_MOUSE_WHEEL_BEHAVIOR, Any( MouseWheelBehavior::SCROLL_DISABLED ) ); // now set all those values for (auto const& property : aInitialValues) @@ -742,7 +744,7 @@ void SbaTableQueryBrowser::InitializeGridModel(const Reference< css::form::XForm for (auto const& copyPropertyName : aCopyProperties) xGridCol->setPropertyValue( copyPropertyName, xColumn->getPropertyValue(copyPropertyName) ); - xColContainer->insertByName(rName, makeAny(xGridCol)); + xColContainer->insertByName(rName, Any(xGridCol)); } } } @@ -759,7 +761,7 @@ static Reference<XPropertySet> getColumnHelper(const weld::TreeView& rTreeView, Reference<XPropertySet> xRet; if (pCurrentlyDisplayed) { - DBTreeListUserData* pData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*pCurrentlyDisplayed).toUInt64()); + DBTreeListUserData* pData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*pCurrentlyDisplayed)); Reference<XColumnsSupplier> xColumnsSup(pData->xObjectProperties,UNO_QUERY); Reference<XNameAccess> xNames = xColumnsSup->getColumns(); OUString aName; @@ -775,7 +777,7 @@ void SbaTableQueryBrowser::transferChangedControlProperty(const OUString& _rProp if (m_xCurrentlyDisplayed) { weld::TreeView& rTreeView = m_pTreeView->GetWidget(); - DBTreeListUserData* pData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*m_xCurrentlyDisplayed).toUInt64()); + DBTreeListUserData* pData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*m_xCurrentlyDisplayed)); Reference< XPropertySet > xObjectProps = pData->xObjectProperties; OSL_ENSURE(xObjectProps.is(),"SbaTableQueryBrowser::transferChangedControlProperty: no table/query object!"); if (xObjectProps.is()) @@ -803,7 +805,7 @@ void SbaTableQueryBrowser::propertyChange(const PropertyChangeEvent& evt) if(xProp.is()) { if(!evt.NewValue.hasValue()) - xProp->setPropertyValue(PROPERTY_WIDTH,makeAny(sal_Int32(227))); + xProp->setPropertyValue(PROPERTY_WIDTH,Any(sal_Int32(227))); else xProp->setPropertyValue(PROPERTY_WIDTH,evt.NewValue); } @@ -829,12 +831,12 @@ void SbaTableQueryBrowser::propertyChange(const PropertyChangeEvent& evt) { sal_Int16 nAlign = 0; if(evt.NewValue >>= nAlign) - xProp->setPropertyValue(PROPERTY_ALIGN,makeAny(sal_Int32(nAlign))); + xProp->setPropertyValue(PROPERTY_ALIGN,Any(sal_Int32(nAlign))); else xProp->setPropertyValue(PROPERTY_ALIGN,evt.NewValue); } else - xProp->setPropertyValue(PROPERTY_ALIGN,makeAny(css::awt::TextAlign::LEFT)); + xProp->setPropertyValue(PROPERTY_ALIGN,Any(css::awt::TextAlign::LEFT)); } } catch( const Exception& ) @@ -860,12 +862,12 @@ void SbaTableQueryBrowser::propertyChange(const PropertyChangeEvent& evt) { if (m_xCurrentlyDisplayed) { - DBTreeListUserData* pData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*m_xCurrentlyDisplayed).toUInt64()); + DBTreeListUserData* pData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*m_xCurrentlyDisplayed)); OSL_ENSURE( pData->xObjectProperties.is(), "No table available!" ); bool bDefault = !evt.NewValue.hasValue(); if (bDefault) - pData->xObjectProperties->setPropertyValue(PROPERTY_ROW_HEIGHT,makeAny(sal_Int32(45))); + pData->xObjectProperties->setPropertyValue(PROPERTY_ROW_HEIGHT,Any(sal_Int32(45))); else pData->xObjectProperties->setPropertyValue(PROPERTY_ROW_HEIGHT,evt.NewValue); } @@ -1035,7 +1037,7 @@ namespace struct FilterByEntryDataId : public IEntryFilter { OUString sId; - explicit FilterByEntryDataId( const OUString& _rId ) : sId( _rId ) { } + explicit FilterByEntryDataId( OUString _aId ) : sId(std::move( _aId )) { } virtual ~FilterByEntryDataId() {} @@ -1052,8 +1054,8 @@ namespace OUString SbaTableQueryBrowser::getDataSourceAccessor(const weld::TreeIter& rDataSourceEntry) const { weld::TreeView& rTreeView = m_pTreeView->GetWidget(); - DBTreeListUserData* pData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(rDataSourceEntry).toUInt64()); - OSL_ENSURE( pData, "SbaTableQueryBrowser::getDataSourceAccessor: invalid entry data!" ); + DBTreeListUserData* pData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(rDataSourceEntry)); + assert(pData && "SbaTableQueryBrowser::getDataSourceAccessor: invalid entry data!"); OSL_ENSURE( pData->eType == etDatasource, "SbaTableQueryBrowser::getDataSourceAccessor: entry does not denote a data source!" ); return !pData->sAccessor.isEmpty() ? pData->sAccessor : GetEntryText(rDataSourceEntry); } @@ -1165,7 +1167,7 @@ std::unique_ptr<weld::TreeIter> SbaTableQueryBrowser::getObjectEntry(const OUStr { if (ensureEntryObject(*xObject)) { - DBTreeListUserData* pParentData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*xObject).toUInt64()); + DBTreeListUserData* pParentData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*xObject)); Reference< XNameAccess > xCollection( pParentData->xContainer, UNO_QUERY ); sal_Int32 nIndex2 = nIndex; sPath = _rCommand.getToken( 0, '/', nIndex2 ); @@ -1182,7 +1184,7 @@ std::unique_ptr<weld::TreeIter> SbaTableQueryBrowser::getObjectEntry(const OUStr { pEntryData->eType = etQueryContainer; } - implAppendEntry(xObject.get(), sPath, pEntryData, pEntryData->eType); + implAppendEntry(xObject.get(), sPath, pEntryData); } } } @@ -1224,33 +1226,33 @@ void SbaTableQueryBrowser::connectExternalDispatches() if ( m_aExternalFeatures.empty() ) { - const char* pURLs[] = { - ".uno:DataSourceBrowser/DocumentDataSource", - ".uno:DataSourceBrowser/FormLetter", - ".uno:DataSourceBrowser/InsertColumns", - ".uno:DataSourceBrowser/InsertContent", + static constexpr OUString aURLs[] { + u".uno:DataSourceBrowser/DocumentDataSource"_ustr, + u".uno:DataSourceBrowser/FormLetter"_ustr, + u".uno:DataSourceBrowser/InsertColumns"_ustr, + u".uno:DataSourceBrowser/InsertContent"_ustr, }; - const sal_uInt16 nIds[] = { + static constexpr sal_uInt16 nIds[] = { ID_BROWSER_DOCUMENT_DATASOURCE, ID_BROWSER_FORMLETTER, ID_BROWSER_INSERTCOLUMNS, ID_BROWSER_INSERTCONTENT }; - for ( size_t i=0; i < SAL_N_ELEMENTS( pURLs ); ++i ) + for ( size_t i=0; i < std::size( aURLs ); ++i ) { URL aURL; - aURL.Complete = OUString::createFromAscii( pURLs[i] ); + aURL.Complete = aURLs[i]; if ( m_xUrlTransformer.is() ) m_xUrlTransformer->parseStrict( aURL ); - m_aExternalFeatures[ nIds[ i ] ] = ExternalFeature( aURL ); + m_aExternalFeatures[ nIds[ i ] ] = ExternalFeature( std::move(aURL) ); } } for (auto & externalFeature : m_aExternalFeatures) { externalFeature.second.xDispatcher = xProvider->queryDispatch( - externalFeature.second.aURL, "_parent", FrameSearchFlag::PARENT + externalFeature.second.aURL, u"_parent"_ustr, FrameSearchFlag::PARENT ); if ( externalFeature.second.xDispatcher.get() == static_cast< XDispatch* >( this ) ) @@ -1290,8 +1292,8 @@ void SbaTableQueryBrowser::implCheckExternalSlot( sal_uInt16 _nId ) if ( pToolbox ) { bool bHaveDispatcher = m_aExternalFeatures[ _nId ].xDispatcher.is(); - if ( bHaveDispatcher != pToolbox->IsItemVisible( _nId ) ) - bHaveDispatcher ? pToolbox->ShowItem( _nId ) : pToolbox->HideItem( _nId ); + if ( bHaveDispatcher != pToolbox->IsItemVisible( ToolBoxItemId(_nId) ) ) + bHaveDispatcher ? pToolbox->ShowItem( ToolBoxItemId(_nId) ) : pToolbox->HideItem( ToolBoxItemId(_nId) ); } // and invalidate this feature in general @@ -1343,7 +1345,7 @@ void SAL_CALL SbaTableQueryBrowser::disposing( const css::lang::EventObject& _rS { do { - DBTreeListUserData* pData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*xDSLoop).toUInt64()); + DBTreeListUserData* pData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*xDSLoop)); if ( pData && pData->xConnection == xCon ) { // we set the connection to null to avoid a second disposing of the connection @@ -1457,7 +1459,7 @@ void SbaTableQueryBrowser::attachFrame(const Reference< css::frame::XFrame > & _ Reference< XFrame > xCurrentFrame( getFrame() ); if ( xCurrentFrame.is() ) { - m_xCurrentFrameParent = xCurrentFrame->findFrame("_parent",FrameSearchFlag::PARENT); + m_xCurrentFrameParent = xCurrentFrame->findFrame(u"_parent"_ustr,FrameSearchFlag::PARENT); if ( m_xCurrentFrameParent.is() ) m_xCurrentFrameParent->addFrameActionListener(static_cast<css::frame::XFrameActionListener*>(this)); @@ -1466,13 +1468,13 @@ void SbaTableQueryBrowser::attachFrame(const Reference< css::frame::XFrame > & _ { Reference< XPropertySet > xFrameProps( m_aCurrentFrame.getFrame(), UNO_QUERY_THROW ); Reference< XLayoutManager > xLayouter( - xFrameProps->getPropertyValue("LayoutManager"), + xFrameProps->getPropertyValue(u"LayoutManager"_ustr), UNO_QUERY ); if ( xLayouter.is() ) { Reference< XUIElement > xUI( - xLayouter->getElement( "private:resource/toolbar/toolbar" ), + xLayouter->getElement( u"private:resource/toolbar/toolbar"_ustr ), UNO_SET_THROW ); m_xMainToolbar.set(xUI->getRealInterface(), css::uno::UNO_QUERY); OSL_ENSURE( m_xMainToolbar.is(), "SbaTableQueryBrowser::attachFrame: where's my toolbox?" ); @@ -1643,7 +1645,7 @@ FeatureState SbaTableQueryBrowser::GetState(sal_uInt16 nId) const std::unique_ptr<weld::TreeIter> xDataSourceEntry = m_pTreeView->GetRootLevelParent(xCurrentEntry.get()); DBTreeListUserData* pDSData = xDataSourceEntry - ? reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*xDataSourceEntry).toUInt64()) + ? weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*xDataSourceEntry)) : nullptr; if ( nId == ID_TREE_CLOSE_CONN ) @@ -1653,9 +1655,9 @@ FeatureState SbaTableQueryBrowser::GetState(sal_uInt16 nId) const else if ( nId == ID_TREE_EDIT_DATABASE ) { ::utl::OConfigurationTreeRoot aConfig( ::utl::OConfigurationTreeRoot::createWithComponentContext( getORB(), - "/org.openoffice.Office.DataAccess/Policies/Features/Common" ) ); + u"/org.openoffice.Office.DataAccess/Policies/Features/Common"_ustr ) ); bool bHaveEditDatabase( true ); - OSL_VERIFY( aConfig.getNodeValue( "EditDatabaseFromDataSourceView" ) >>= bHaveEditDatabase ); + OSL_VERIFY( aConfig.getNodeValue( u"EditDatabaseFromDataSourceView"_ustr ) >>= bHaveEditDatabase ); aReturn.bEnabled = getORB().is() && xDataSourceEntry && bHaveEditDatabase; } else if ( nId == ID_BROWSER_COPY ) @@ -2032,7 +2034,7 @@ void SbaTableQueryBrowser::implAddDatasource(const OUString& _rDbName, OUString& pDSData->eType = etDatasource; pDSData->sAccessor = sDataSourceId; pDSData->xConnection = _rxConnection; - OUString sId(OUString::number(reinterpret_cast<sal_uInt64>(pDSData))); + OUString sId(weld::toId(pDSData)); std::unique_ptr<weld::TreeIter> xDatasourceEntry(rTreeView.make_iterator()); rTreeView.insert(nullptr, -1, &sDSDisplayName, &sId, nullptr, nullptr, false, xDatasourceEntry.get()); @@ -2043,7 +2045,7 @@ void SbaTableQueryBrowser::implAddDatasource(const OUString& _rDbName, OUString& { DBTreeListUserData* pQueriesData = new DBTreeListUserData; pQueriesData->eType = etQueryContainer; - sId = OUString::number(reinterpret_cast<sal_uInt64>(pQueriesData)); + sId = weld::toId(pQueriesData); std::unique_ptr<weld::TreeIter> xRet(rTreeView.make_iterator()); rTreeView.insert(xDatasourceEntry.get(), -1, &_rQueryName, &sId, @@ -2056,7 +2058,7 @@ void SbaTableQueryBrowser::implAddDatasource(const OUString& _rDbName, OUString& { DBTreeListUserData* pTablesData = new DBTreeListUserData; pTablesData->eType = etTableContainer; - sId = OUString::number(reinterpret_cast<sal_uInt64>(pTablesData)); + sId = weld::toId(pTablesData); std::unique_ptr<weld::TreeIter> xRet(rTreeView.make_iterator()); rTreeView.insert(xDatasourceEntry.get(), -1, &_rTableName, &sId, @@ -2087,7 +2089,7 @@ void SbaTableQueryBrowser::populateTree(const Reference<XNameAccess>& _xNameAcce weld::TreeView& rTreeView = m_pTreeView->GetWidget(); rTreeView.make_unsorted(); - DBTreeListUserData* pData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(rParent).toUInt64()); + DBTreeListUserData* pData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(rParent)); if (pData) // don't ask if the nameaccess is already set see OnExpandEntry views and tables pData->xContainer = _xNameAccess; @@ -2106,7 +2108,7 @@ void SbaTableQueryBrowser::populateTree(const Reference<XNameAccess>& _xNameAcce if ( xChild.is() ) pEntryData->eType = etQueryContainer; } - implAppendEntry(&rParent, rName, pEntryData, pEntryData->eType); + implAppendEntry(&rParent, rName, pEntryData); } } } @@ -2118,13 +2120,15 @@ void SbaTableQueryBrowser::populateTree(const Reference<XNameAccess>& _xNameAcce rTreeView.make_sorted(); } -std::unique_ptr<weld::TreeIter> SbaTableQueryBrowser::implAppendEntry(const weld::TreeIter* pParent, const OUString& rName, void* pUserData, EntryType eEntryType) +std::unique_ptr<weld::TreeIter> SbaTableQueryBrowser::implAppendEntry(const weld::TreeIter* pParent, const OUString& rName, const DBTreeListUserData* pUserData) { + EntryType eEntryType = pUserData->eType; + std::unique_ptr<ImageProvider> xImageProvider(getImageProviderFor(pParent)); OUString aImage = xImageProvider->getImageId(rName, getDatabaseObjectType(eEntryType)); - OUString sId(OUString::number(reinterpret_cast<sal_uInt64>(pUserData))); + OUString sId(weld::toId(pUserData)); weld::TreeView& rTreeView = m_pTreeView->GetWidget(); std::unique_ptr<weld::TreeIter> xNewEntry(rTreeView.make_iterator()); rTreeView.insert(pParent, -1, &rName, &sId, nullptr, nullptr, eEntryType == etQueryContainer, xNewEntry.get()); @@ -2146,7 +2150,7 @@ IMPL_LINK(SbaTableQueryBrowser, OnExpandEntry, const weld::TreeIter&, rParent, b std::unique_ptr<weld::TreeIter> xFirstParent = m_pTreeView->GetRootLevelParent(&rParent); OSL_ENSURE(xFirstParent,"SbaTableQueryBrowser::OnExpandEntry: No rootlevelparent!"); - DBTreeListUserData* pData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(rParent).toInt64()); + DBTreeListUserData* pData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(rParent)); assert(pData && "SbaTableQueryBrowser::OnExpandEntry: No user data!"); if (etTableContainer == pData->eType) @@ -2155,9 +2159,7 @@ IMPL_LINK(SbaTableQueryBrowser, OnExpandEntry, const weld::TreeIter&, rParent, b // it could be that we already have a connection SharedConnection xConnection; - ensureConnection(xFirstParent.get(), xConnection); - - if ( xConnection.is() ) + if (ensureConnection(xFirstParent.get(), xConnection) && xConnection.is()) { SQLExceptionInfo aInfo; try @@ -2234,7 +2236,7 @@ IMPL_LINK(SbaTableQueryBrowser, OnExpandEntry, const weld::TreeIter&, rParent, b // we have to expand the queries or bookmarks if (ensureEntryObject(rParent)) { - DBTreeListUserData* pParentData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(rParent).toUInt64()); + DBTreeListUserData* pParentData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(rParent)); Reference< XNameAccess > xCollection( pParentData->xContainer, UNO_QUERY ); populateTree(xCollection, rParent, etQuery); } @@ -2248,8 +2250,8 @@ bool SbaTableQueryBrowser::ensureEntryObject(const weld::TreeIter& rEntry) // the user data of the entry weld::TreeView& rTreeView = m_pTreeView->GetWidget(); - DBTreeListUserData* pEntryData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(rEntry).toUInt64()); - OSL_ENSURE(pEntryData,"ensureEntryObject: user data should already be set!"); + DBTreeListUserData* pEntryData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(rEntry)); + assert(pEntryData && "ensureEntryObject: user data should already be set!"); std::unique_ptr<weld::TreeIter> xDataSourceEntry = m_pTreeView->GetRootLevelParent(&rEntry); @@ -2271,7 +2273,7 @@ bool SbaTableQueryBrowser::ensureEntryObject(const weld::TreeIter& rEntry) if (rTreeView.iter_compare(*xParent, *xDataSourceEntry) != 0) { OUString aName(rTreeView.get_text(rEntry)); - DBTreeListUserData* pData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*xParent).toUInt64()); + DBTreeListUserData* pData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*xParent)); try { Reference< XNameAccess > xNameAccess(pData->xContainer,UNO_QUERY); @@ -2343,17 +2345,17 @@ bool SbaTableQueryBrowser::implLoadAnything(const OUString& _rDataSourceName, co Reference<XPropertySet> xProp( getRowSet(), UNO_QUERY_THROW ); Reference< XLoadable > xLoadable( xProp, UNO_QUERY_THROW ); // the values allowing the RowSet to re-execute - xProp->setPropertyValue(PROPERTY_DATASOURCENAME, makeAny(_rDataSourceName)); + xProp->setPropertyValue(PROPERTY_DATASOURCENAME, Any(_rDataSourceName)); if(_rxConnection.is()) - xProp->setPropertyValue( PROPERTY_ACTIVE_CONNECTION, makeAny( _rxConnection.getTyped() ) ); + xProp->setPropertyValue( PROPERTY_ACTIVE_CONNECTION, Any( _rxConnection.getTyped() ) ); // set this _before_ setting the connection, else the rowset would rebuild it ... - xProp->setPropertyValue(PROPERTY_COMMAND_TYPE, makeAny(nCommandType)); - xProp->setPropertyValue(PROPERTY_COMMAND, makeAny(_rCommand)); - xProp->setPropertyValue(PROPERTY_ESCAPE_PROCESSING, css::uno::makeAny(_bEscapeProcessing)); + xProp->setPropertyValue(PROPERTY_COMMAND_TYPE, Any(nCommandType)); + xProp->setPropertyValue(PROPERTY_COMMAND, Any(_rCommand)); + xProp->setPropertyValue(PROPERTY_ESCAPE_PROCESSING, css::uno::Any(_bEscapeProcessing)); if ( m_bPreview ) { - xProp->setPropertyValue(PROPERTY_FETCHDIRECTION, makeAny(FetchDirection::FORWARD)); + xProp->setPropertyValue(PROPERTY_FETCHDIRECTION, Any(FetchDirection::FORWARD)); } // the formatter depends on the data source we're working on, so rebuild it here ... @@ -2423,45 +2425,45 @@ bool SbaTableQueryBrowser::implSelect(const OUString& _rDataSourceName, const OU const SharedConnection& _rxConnection, bool _bSelectDirect) { - if (_rDataSourceName.getLength() && _rCommand.getLength() && (-1 != nCommandType)) - { - std::unique_ptr<weld::TreeIter> xDataSource; - std::unique_ptr<weld::TreeIter> xCommandType; - std::unique_ptr<weld::TreeIter> xCommand = getObjectEntry( _rDataSourceName, _rCommand, nCommandType, &xDataSource, &xCommandType, true, _rxConnection ); + if (!_rDataSourceName.getLength() || !_rCommand.getLength() || (-1 == nCommandType)) + return false; - if (xCommand) - { - weld::TreeView& rTreeView = m_pTreeView->GetWidget(); + std::unique_ptr<weld::TreeIter> xDataSource; + std::unique_ptr<weld::TreeIter> xCommandType; + std::unique_ptr<weld::TreeIter> xCommand = getObjectEntry( _rDataSourceName, _rCommand, nCommandType, &xDataSource, &xCommandType, true, _rxConnection ); - bool bSuccess = true; - if ( _bSelectDirect ) - { - bSuccess = implSelect(xCommand.get()); - } - else - { - rTreeView.select(*xCommand); - } + if (xCommand) + { + weld::TreeView& rTreeView = m_pTreeView->GetWidget(); - if ( bSuccess ) - { - rTreeView.scroll_to_row(*xCommand); - rTreeView.set_cursor(*xCommand); - } + bool bSuccess = true; + if ( _bSelectDirect ) + { + bSuccess = implSelect(xCommand.get()); } - else if (!xCommandType) + else { - if (m_xCurrentlyDisplayed) - { - // tell the old entry (if any) it has been deselected - selectPath(m_xCurrentlyDisplayed.get(), false); - m_xCurrentlyDisplayed.reset(); - } + rTreeView.select(*xCommand); + } - // we have a command and need to display this in the rowset - return implLoadAnything(_rDataSourceName, _rCommand, nCommandType, _bEscapeProcessing, _rxConnection); + if ( bSuccess ) + { + rTreeView.scroll_to_row(*xCommand); + rTreeView.set_cursor(*xCommand); } } + else if (!xCommandType) + { + if (m_xCurrentlyDisplayed) + { + // tell the old entry (if any) it has been deselected + selectPath(m_xCurrentlyDisplayed.get(), false); + m_xCurrentlyDisplayed.reset(); + } + + // we have a command and need to display this in the rowset + return implLoadAnything(_rDataSourceName, _rCommand, nCommandType, _bEscapeProcessing, _rxConnection); + } return false; } @@ -2474,15 +2476,15 @@ IMPL_LINK_NOARG(SbaTableQueryBrowser, OnSelectionChange, LinkParamNone*, void) implSelect(xSelection.get()); } -std::unique_ptr<weld::TreeIter> SbaTableQueryBrowser::implGetConnectionEntry(weld::TreeIter& rEntry) const +std::unique_ptr<weld::TreeIter> SbaTableQueryBrowser::implGetConnectionEntry(const weld::TreeIter& rEntry) const { weld::TreeView& rTreeView = m_pTreeView->GetWidget(); std::unique_ptr<weld::TreeIter> xCurrentEntry(rTreeView.make_iterator(&rEntry)); - DBTreeListUserData* pEntryData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*xCurrentEntry).toInt64()); + DBTreeListUserData* pEntryData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*xCurrentEntry)); while (pEntryData->eType != etDatasource) { rTreeView.iter_parent(*xCurrentEntry); - pEntryData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*xCurrentEntry).toInt64()); + pEntryData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*xCurrentEntry)); } return xCurrentEntry; } @@ -2493,7 +2495,7 @@ bool SbaTableQueryBrowser::implSelect(const weld::TreeIter* pEntry) return false; weld::TreeView& rTreeView = m_pTreeView->GetWidget(); - DBTreeListUserData* pEntryData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*pEntry).toUInt64()); + DBTreeListUserData* pEntryData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*pEntry)); switch (pEntryData->eType) { case etTableOrView: @@ -2509,11 +2511,11 @@ bool SbaTableQueryBrowser::implSelect(const weld::TreeIter* pEntry) // get the entry for the tables or queries std::unique_ptr<weld::TreeIter> xContainer = rTreeView.make_iterator(pEntry); rTreeView.iter_parent(*xContainer); - DBTreeListUserData* pContainerData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*xContainer).toUInt64()); + DBTreeListUserData* pContainerData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*xContainer)); // get the entry for the datasource std::unique_ptr<weld::TreeIter> xConnection = implGetConnectionEntry(*xContainer); - DBTreeListUserData* pConData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*xConnection).toUInt64()); + DBTreeListUserData* pConData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*xConnection)); // reinitialize the rowset // but first check if it is necessary @@ -2536,8 +2538,7 @@ bool SbaTableQueryBrowser::implSelect(const weld::TreeIter* pEntry) { while (rTreeView.iter_compare(*xNextTemp, *xConnection) != 0) { - sNameBuffer.insert(0,'/'); - sNameBuffer.insert(0, rTreeView.get_text(*xTemp)); + sNameBuffer.insert(0, rTreeView.get_text(*xTemp) + "/"); rTreeView.copy_iterator(*xNextTemp, *xTemp); if (!rTreeView.iter_parent(*xNextTemp)) break; @@ -2574,7 +2575,7 @@ bool SbaTableQueryBrowser::implSelect(const weld::TreeIter* pEntry) selectPath(m_xCurrentlyDisplayed.get()); // get the name of the data source currently selected - ensureConnection(m_xCurrentlyDisplayed.get(), pConData->xConnection); + (void)ensureConnection(m_xCurrentlyDisplayed.get(), pConData->xConnection); if ( !pConData->xConnection.is() ) { @@ -2620,7 +2621,7 @@ bool SbaTableQueryBrowser::implSelect(const weld::TreeIter* pEntry) bool bEscapeProcessing = true; if(xNameAccess.is() && xNameAccess->hasByName(sSimpleName)) { - DBTreeListUserData* pData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*pEntry).toUInt64()); + DBTreeListUserData* pData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*pEntry)); if ( !pData->xObjectProperties.is() ) { Reference<XInterface> xObject; @@ -2652,7 +2653,7 @@ bool SbaTableQueryBrowser::implSelect(const weld::TreeIter* pEntry) OUString sReplace = sSql.replaceFirst(sFilter, ""); xAnalyzer->setQuery(sReplace); Reference<XSingleSelectQueryComposer> xComposer(xAnalyzer,UNO_QUERY); - xComposer->setFilter("0=1"); + xComposer->setFilter(u"0=1"_ustr); aName = xAnalyzer->getQuery(); nCommandType = CommandType::COMMAND; } @@ -2721,14 +2722,14 @@ std::unique_ptr<weld::TreeIter> SbaTableQueryBrowser::getEntryFromContainer(cons if (rTreeView.iter_children(*xContainer)) { // 1st child is queries - DBTreeListUserData* pQueriesData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*xContainer).toUInt64()); + DBTreeListUserData* pQueriesData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*xContainer)); if (pQueriesData && pQueriesData->xContainer == rxNameAccess) break; if (rTreeView.iter_next_sibling(*xContainer)) { // 2nd child is tables - DBTreeListUserData* pTablesData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*xContainer).toUInt64()); + DBTreeListUserData* pTablesData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*xContainer)); if (pTablesData && pTablesData->xContainer == rxNameAccess) break; } @@ -2755,8 +2756,8 @@ void SAL_CALL SbaTableQueryBrowser::elementInserted(const ContainerEvent& rEvent rTreeView.make_unsorted(); // insert the new entry into the tree - DBTreeListUserData* pContainerData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*xEntry).toUInt64()); - OSL_ENSURE(pContainerData, "elementInserted: There must be user data for this type!"); + DBTreeListUserData* pContainerData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*xEntry)); + assert(pContainerData && "elementInserted: There must be user data for this type!"); DBTreeListUserData* pNewData = new DBTreeListUserData; bool bIsTable = etTableContainer == pContainerData->eType; @@ -2775,7 +2776,7 @@ void SAL_CALL SbaTableQueryBrowser::elementInserted(const ContainerEvent& rEvent } pNewData->eType = etQuery; } - implAppendEntry(xEntry.get(), ::comphelper::getString(rEvent.Accessor), pNewData, pNewData->eType); + implAppendEntry(xEntry.get(), ::comphelper::getString(rEvent.Accessor), pNewData); rTreeView.make_sorted(); } @@ -2820,7 +2821,7 @@ void SAL_CALL SbaTableQueryBrowser::elementRemoved( const ContainerEvent& _rEven // unload unloadAndCleanup( false ); // don't dispose the connection - DBTreeListUserData* pData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*xTemp).toUInt64()); + DBTreeListUserData* pData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*xTemp)); rTreeView.set_id(*xTemp, OUString()); delete pData; // the data could be null because we have a table which isn't correct rTreeView.remove(*xTemp); @@ -2835,7 +2836,7 @@ void SAL_CALL SbaTableQueryBrowser::elementRemoved( const ContainerEvent& _rEven { if (rTreeView.get_text(*xChild) == aName) { - DBTreeListUserData* pData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*xChild).toUInt64()); + DBTreeListUserData* pData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*xChild)); rTreeView.set_id(*xChild, OUString()); delete pData; rTreeView.remove(*xChild); @@ -2860,7 +2861,7 @@ void SAL_CALL SbaTableQueryBrowser::elementReplaced( const ContainerEvent& _rEve std::unique_ptr<weld::TreeIter> xContainer = getEntryFromContainer(xNames); if (xContainer) { - // a table or query as been replaced + // a table or query has been replaced OUString aName = ::comphelper::getString(_rEvent.Accessor); weld::TreeView& rTreeView = m_pTreeView->GetWidget(); @@ -2871,13 +2872,13 @@ void SAL_CALL SbaTableQueryBrowser::elementReplaced( const ContainerEvent& _rEve std::unique_ptr<weld::TreeIter> xTemp = rTreeView.make_iterator(m_xCurrentlyDisplayed.get()); unloadAndCleanup( false ); // don't dispose the connection - DBTreeListUserData* pData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*xTemp).toUInt64()); + DBTreeListUserData* pData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*xTemp)); if (pData) { if ( etTableOrView == pData->eType ) { // only insert userdata when we have a table because the query is only a commanddefinition object and not a query - _rEvent.Element >>= pData->xObjectProperties; // remember the new element + _rEvent.Element >>= pData->xObjectProperties; // remember the new element } else { @@ -2896,7 +2897,7 @@ void SAL_CALL SbaTableQueryBrowser::elementReplaced( const ContainerEvent& _rEve { if (rTreeView.get_text(*xChild) == aName) { - DBTreeListUserData* pData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*xChild).toUInt64()); + DBTreeListUserData* pData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*xChild)); if (pData) { if ( etTableOrView == pData->eType ) @@ -2964,13 +2965,13 @@ void SbaTableQueryBrowser::disposeConnection(const weld::TreeIter* pDSEntry) if (pDSEntry) { weld::TreeView& rTreeView = m_pTreeView->GetWidget(); - DBTreeListUserData* pTreeListData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*pDSEntry).toUInt64()); + DBTreeListUserData* pTreeListData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*pDSEntry)); if (pTreeListData) impl_releaseConnection(pTreeListData->xConnection); } } -void SbaTableQueryBrowser::closeConnection(weld::TreeIter& rDSEntry, bool _bDisposeConnection) +void SbaTableQueryBrowser::closeConnection(const weld::TreeIter& rDSEntry, bool _bDisposeConnection) { OSL_ENSURE(impl_isDataSourceEntry(&rDSEntry), "SbaTableQueryBrowser::closeConnection: invalid entry (not top-level)!"); @@ -3000,7 +3001,7 @@ void SbaTableQueryBrowser::closeConnection(weld::TreeIter& rDSEntry, bool _bDisp { std::unique_ptr<weld::TreeIter> xRemove(rTreeView.make_iterator(xElements.get())); bElements = rTreeView.iter_next_sibling(*xElements); - DBTreeListUserData* pData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*xRemove).toUInt64()); + DBTreeListUserData* pData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*xRemove)); rTreeView.set_id(*xRemove, OUString()); delete pData; rTreeView.remove(*xRemove); @@ -3087,17 +3088,17 @@ namespace { DBG_UNHANDLED_EXCEPTION("dbaccess"); } - return xDataSource.get(); + return xDataSource; } } -void SbaTableQueryBrowser::impl_initialize() +void SbaTableQueryBrowser::impl_initialize(const ::comphelper::NamedValueCollection& rArguments) { SolarMutexGuard aGuard; // doin' a lot of VCL stuff here -> lock the SolarMutex // first initialize the parent - SbaXDataBrowserController::impl_initialize(); + SbaXDataBrowserController::impl_initialize(rArguments); Reference<XConnection> xForeignConnection; Reference< XFrame > xFrame; @@ -3109,8 +3110,6 @@ void SbaTableQueryBrowser::impl_initialize() OUString sInitialDataSourceName; OUString sInitialCommand; - const NamedValueCollection& rArguments( getInitParams() ); - rArguments.get_ensureType( PROPERTY_DATASOURCENAME, sInitialDataSourceName ); rArguments.get_ensureType( PROPERTY_COMMAND_TYPE, nInitialDisplayCommandType ); rArguments.get_ensureType( PROPERTY_COMMAND, sInitialCommand ); @@ -3119,22 +3118,22 @@ void SbaTableQueryBrowser::impl_initialize() rArguments.get_ensureType( PROPERTY_UPDATE_SCHEMANAME, aSchemaName ); rArguments.get_ensureType( PROPERTY_UPDATE_TABLENAME, aTableName ); rArguments.get_ensureType( PROPERTY_ESCAPE_PROCESSING, bEscapeProcessing ); - rArguments.get_ensureType( "Frame", xFrame ); + rArguments.get_ensureType( u"Frame"_ustr, xFrame ); rArguments.get_ensureType( PROPERTY_SHOWMENU, m_bShowMenu ); // disable the browser if either of ShowTreeViewButton (compatibility name) or EnableBrowser // is present and set to FALSE - bool bDisableBrowser = !rArguments.getOrDefault( "ShowTreeViewButton", true ) // compatibility name + bool bDisableBrowser = !rArguments.getOrDefault( u"ShowTreeViewButton"_ustr, true ) // compatibility name || !rArguments.getOrDefault( PROPERTY_ENABLE_BROWSER, true ); - OSL_ENSURE( !rArguments.has( "ShowTreeViewButton" ), + OSL_ENSURE( !rArguments.has( u"ShowTreeViewButton"_ustr ), "SbaTableQueryBrowser::impl_initialize: ShowTreeViewButton is superseded by EnableBrowser!" ); m_bEnableBrowser = !bDisableBrowser; // hide the tree view it is disabled in general, or if the settings tell to hide it initially bool bHideTreeView = ( !m_bEnableBrowser ) - || !rArguments.getOrDefault( "ShowTreeView", true ) // compatibility name + || !rArguments.getOrDefault( u"ShowTreeView"_ustr, true ) // compatibility name || !rArguments.getOrDefault( PROPERTY_SHOW_BROWSER, true ); - OSL_ENSURE( !rArguments.has( "ShowTreeView" ), + OSL_ENSURE( !rArguments.has( u"ShowTreeView"_ustr ), "SbaTableQueryBrowser::impl_initialize: ShowTreeView is superseded by ShowBrowser!" ); if ( bHideTreeView ) @@ -3146,24 +3145,14 @@ void SbaTableQueryBrowser::impl_initialize() { try { - Sequence< OUString> aProperties(5); - Sequence< Any> aValues(5); - - OUString* pStringIter = aProperties.getArray(); - Any* pValueIter = aValues.getArray(); - *pStringIter++ = "AlwaysShowCursor"; - *pValueIter++ <<= false; - *pStringIter++ = PROPERTY_BORDER; - *pValueIter++ <<= sal_Int16(0); - - *pStringIter++ = "HasNavigationBar"; - *pValueIter++ <<= false; - *pStringIter++ = "HasRecordMarker"; - *pValueIter++ <<= false; - - *pStringIter++ = "Tabstop"; - *pValueIter++ <<= false; - + Sequence< OUString> aProperties + { + u"AlwaysShowCursor"_ustr, PROPERTY_BORDER, u"HasNavigationBar"_ustr, u"HasRecordMarker"_ustr, u"Tabstop"_ustr + }; + Sequence< Any> aValues + { + Any(false), Any(sal_Int16(0)), Any(false), Any(false), Any(false) + }; Reference< XMultiPropertySet > xFormMultiSet(getFormComponent(), UNO_QUERY); if ( xFormMultiSet.is() ) xFormMultiSet->setPropertyValues(aProperties, aValues); @@ -3258,9 +3247,9 @@ void SbaTableQueryBrowser::impl_initialize() try { Reference< XPropertySet > xRowSetProps(getRowSet(), UNO_QUERY); - xRowSetProps->setPropertyValue(PROPERTY_UPDATE_CATALOGNAME,makeAny(aCatalogName)); - xRowSetProps->setPropertyValue(PROPERTY_UPDATE_SCHEMANAME,makeAny(aSchemaName)); - xRowSetProps->setPropertyValue(PROPERTY_UPDATE_TABLENAME,makeAny(aTableName)); + xRowSetProps->setPropertyValue(PROPERTY_UPDATE_CATALOGNAME,Any(aCatalogName)); + xRowSetProps->setPropertyValue(PROPERTY_UPDATE_SCHEMANAME,Any(aSchemaName)); + xRowSetProps->setPropertyValue(PROPERTY_UPDATE_TABLENAME,Any(aTableName)); } catch(const Exception&) @@ -3312,7 +3301,7 @@ bool SbaTableQueryBrowser::ensureConnection(const weld::TreeIter* pAnyEntry, Sha weld::TreeView& rTreeView = m_pTreeView->GetWidget(); DBTreeListUserData* pDSData = xDSEntry - ? reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*xDSEntry).toUInt64()) + ? weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*xDSEntry)) : nullptr; return ensureConnection(xDSEntry.get(), pDSData, rConnection); @@ -3333,7 +3322,7 @@ bool SbaTableQueryBrowser::getExistentConnectionFor(const weld::TreeIter* pAnyEn weld::TreeView& rTreeView = m_pTreeView->GetWidget(); DBTreeListUserData* pDSData = xDSEntry - ? reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*xDSEntry).toUInt64()) + ? weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*xDSEntry)) : nullptr; if (pDSData) rConnection = pDSData->xConnection; @@ -3442,7 +3431,7 @@ int SbaTableQueryBrowser::OnTreeEntryCompare(const weld::TreeIter& rLHS, const w return nCompareResult; } -void SbaTableQueryBrowser::implAdministrate(weld::TreeIter& rApplyTo) +void SbaTableQueryBrowser::implAdministrate(const weld::TreeIter& rApplyTo) { try { @@ -3467,16 +3456,16 @@ void SbaTableQueryBrowser::implAdministrate(weld::TreeIter& rApplyTo) InteractionHandler::createWithParent(getORB(), nullptr) ); ::comphelper::NamedValueCollection aLoadArgs; - aLoadArgs.put( "Model", xDocumentModel ); - aLoadArgs.put( "InteractionHandler", xInteractionHandler ); - aLoadArgs.put( "MacroExecutionMode", MacroExecMode::USE_CONFIG ); + aLoadArgs.put( u"Model"_ustr, xDocumentModel ); + aLoadArgs.put( u"InteractionHandler"_ustr, xInteractionHandler ); + aLoadArgs.put( u"MacroExecutionMode"_ustr, MacroExecMode::USE_CONFIG ); Sequence< PropertyValue > aLoadArgPV; aLoadArgs >>= aLoadArgPV; xFrameLoader->loadComponentFromURL( xDocumentModel->getURL(), - "_default", + u"_default"_ustr, FrameSearchFlag::ALL | FrameSearchFlag::GLOBAL, aLoadArgPV ); @@ -3501,7 +3490,7 @@ bool SbaTableQueryBrowser::requestQuickHelp(const void* pUserData, OUString& rTe OUString SbaTableQueryBrowser::getContextMenuResourceName() const { - return "explorer"; + return u"explorer"_ustr; } IController& SbaTableQueryBrowser::getCommandController() @@ -3529,7 +3518,7 @@ Any SbaTableQueryBrowser::getCurrentSelection(weld::TreeView& rControl) const return Any(); NamedDatabaseObject aSelectedObject; - DBTreeListUserData* pData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*xSelected).toUInt64()); + DBTreeListUserData* pData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*xSelected)); aSelectedObject.Type = static_cast< sal_Int32 >( pData->eType ); switch ( aSelectedObject.Type ) @@ -3550,7 +3539,7 @@ Any SbaTableQueryBrowser::getCurrentSelection(weld::TreeView& rControl) const break; } - return makeAny( aSelectedObject ); + return Any( aSelectedObject ); } vcl::Window* SbaTableQueryBrowser::getMenuParent() const @@ -3650,7 +3639,7 @@ void SbaTableQueryBrowser::loadMenu(const Reference< XFrame >& _xFrame) if ( xLayoutManager.is() ) { xLayoutManager->lock(); - xLayoutManager->createElement( "private:resource/toolbar/toolbar" ); + xLayoutManager->createElement( u"private:resource/toolbar/toolbar"_ustr ); xLayoutManager->unlock(); xLayoutManager->doLayout(); } @@ -3787,14 +3776,14 @@ void SbaTableQueryBrowser::impl_cleanupDataSourceEntry(std::u16string_view rData do { // delete any user data of the child entries of the to-be-removed entry - const DBTreeListUserData* pData = reinterpret_cast<const DBTreeListUserData*>(rTreeView.get_id(*xChild).toUInt64()); + const DBTreeListUserData* pData = weld::fromId<const DBTreeListUserData*>(rTreeView.get_id(*xChild)); rTreeView.set_id(*xChild, OUString()); delete pData; } while (rTreeView.iter_next_sibling(*xChild)); } // remove the entry - DBTreeListUserData* pData = reinterpret_cast<DBTreeListUserData*>(rTreeView.get_id(*xDataSourceEntry).toUInt64()); + DBTreeListUserData* pData = weld::fromId<DBTreeListUserData*>(rTreeView.get_id(*xDataSourceEntry)); rTreeView.set_id(*xDataSourceEntry, OUString()); delete pData; rTreeView.remove(*xDataSourceEntry); |