From 8a8c384eeb8bc8dace6c77bad59e6d2654e8840b Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Thu, 17 May 2018 10:53:29 +0100 Subject: weld FilterDialog MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I think this is theoretical and in practice this dialog never appears anymore Change-Id: I1c29432ecf0df215c686c228326183d9a3a422d3 Reviewed-on: https://gerrit.libreoffice.org/54489 Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- uui/source/fltdlg.cxx | 48 +++++++++++++++--------------------- uui/source/fltdlg.hxx | 18 ++++---------- uui/source/iahndl-filter.cxx | 15 ++++++------ uui/uiconfig/ui/filterselect.ui | 54 ++++++++++++++++++++++++++++++++++------- 4 files changed, 77 insertions(+), 58 deletions(-) (limited to 'uui') diff --git a/uui/source/fltdlg.cxx b/uui/source/fltdlg.cxx index e904fcdadb68..2911acb03b22 100644 --- a/uui/source/fltdlg.cxx +++ b/uui/source/fltdlg.cxx @@ -44,28 +44,18 @@ namespace uui @param "pParentWindow" , parent window for dialog @threadsafe no *//*-*************************************************************************************************************/ -FilterDialog::FilterDialog( vcl::Window* pParentWindow ) - : ModalDialog (pParentWindow, "FilterSelectDialog", "uui/ui/filterselect.ui" ) - , m_pFilterNames(nullptr) +FilterDialog::FilterDialog(weld::Window* pParentWindow) + : GenericDialogController(pParentWindow, "uui/ui/filterselect.ui", "FilterSelectDialog") + , m_pFilterNames(nullptr) + , m_xFtURL(m_xBuilder->weld_label("url")) + , m_xLbFilters(m_xBuilder->weld_tree_view("filters")) { - get(m_pFtURL, "url"); - get(m_pLbFilters, "filters"); - Size aSize(pParentWindow->LogicToPixel(Size(182, 175), MapMode(MapUnit::MapAppFont))); - m_pLbFilters->set_height_request(aSize.Height()); - m_pLbFilters->set_width_request(aSize.Width()); - m_pFtURL->SetSizePixel(Size(aSize.Width(), m_pFtURL->GetOptimalSize().Height())); + m_xLbFilters->set_size_request(m_xLbFilters->get_approximate_digit_width() * 42, + m_xLbFilters->get_height_rows(15)); } FilterDialog::~FilterDialog() { - disposeOnce(); -} - -void FilterDialog::dispose() -{ - m_pFtURL.clear(); - m_pLbFilters.clear(); - ModalDialog::dispose(); } /*-************************************************************************************************************ @@ -77,7 +67,7 @@ void FilterDialog::dispose() void FilterDialog::SetURL( const OUString& sURL ) { // convert it and use given pure string as fallback if conversion failed - m_pFtURL->SetText( impl_buildUIFileName(sURL) ); + m_xFtURL->set_label(impl_buildUIFileName(sURL)); } /*-************************************************************************************************************ @@ -100,14 +90,14 @@ void FilterDialog::SetURL( const OUString& sURL ) void FilterDialog::ChangeFilters( const FilterNameList* pFilterNames ) { m_pFilterNames = pFilterNames; - m_pLbFilters->Clear(); + m_xLbFilters->clear(); if( m_pFilterNames != nullptr ) { for( FilterNameListPtr pItem = m_pFilterNames->begin(); pItem != m_pFilterNames->end() ; ++pItem ) { - m_pLbFilters->InsertEntry( pItem->sUI ); + m_xLbFilters->append_text(pItem->sUI); } } } @@ -136,12 +126,12 @@ bool FilterDialog::AskForFilter( FilterNameListPtr& pSelectedItem ) if( m_pFilterNames != nullptr ) { - if( ModalDialog::Execute() == RET_OK ) + if (m_xDialog->run() == RET_OK) { - OUString sEntry = m_pLbFilters->GetSelectedEntry(); + OUString sEntry = m_xLbFilters->get_selected_text(); if( !sEntry.isEmpty() ) { - int nPos = m_pLbFilters->GetSelectedEntryPos(); + int nPos = m_xLbFilters->get_selected_index(); if( nPos < static_cast(m_pFilterNames->size()) ) { pSelectedItem = m_pFilterNames->begin(); @@ -167,18 +157,18 @@ bool FilterDialog::AskForFilter( FilterNameListPtr& pSelectedItem ) class StringCalculator : public ::cppu::WeakImplHelper< css::util::XStringWidth > { public: - explicit StringCalculator( const OutputDevice* pDevice ) - : m_pDevice( const_cast< OutputDevice * >( pDevice ) ) + explicit StringCalculator(weld::Widget* pDevice) + : m_pDevice(pDevice) { } sal_Int32 SAL_CALL queryStringWidth( const OUString& sString ) override { - return static_cast(m_pDevice->GetTextWidth(sString)); + return static_cast(m_pDevice->get_pixel_size(sString).Width()); } private: - VclPtr m_pDevice; + weld::Widget* m_pDevice; }; /*-************************************************************************************************************ @@ -206,11 +196,11 @@ OUString FilterDialog::impl_buildUIFileName( const OUString& sName ) else { // otherwise its really a url ... build short name by using INetURLObject - css::uno::Reference< css::util::XStringWidth > xStringCalculator( new StringCalculator(m_pFtURL) ); + css::uno::Reference< css::util::XStringWidth > xStringCalculator(new StringCalculator(m_xFtURL.get())); if( xStringCalculator.is() ) { INetURLObject aBuilder ( sName ); - Size aSize = m_pFtURL->GetOutputSizePixel(); + Size aSize = m_xLbFilters->get_preferred_size(); sShortName = aBuilder.getAbbreviated( xStringCalculator, aSize.Width(), INetURLObject::DecodeMechanism::Unambiguous ); } } diff --git a/uui/source/fltdlg.hxx b/uui/source/fltdlg.hxx index 76d1d257d6a0..5f788073c41c 100644 --- a/uui/source/fltdlg.hxx +++ b/uui/source/fltdlg.hxx @@ -20,12 +20,7 @@ #ifndef INCLUDED_UUI_SOURCE_FLTDLG_HXX #define INCLUDED_UUI_SOURCE_FLTDLG_HXX -#include - -#include - -#include -#include +#include #include @@ -41,27 +36,24 @@ struct FilterNamePair typedef ::std::vector< FilterNamePair > FilterNameList ; typedef FilterNameList::const_iterator FilterNameListPtr; -class FilterDialog : public ModalDialog +class FilterDialog : public weld::GenericDialogController { // public interface public: - explicit FilterDialog(vcl::Window* pParentWindow); + explicit FilterDialog(weld::Window* pParentWindow); virtual ~FilterDialog() override; - virtual void dispose() override; void SetURL ( const OUString& sURL ); void ChangeFilters( const FilterNameList* pFilterNames ); bool AskForFilter ( FilterNameListPtr& pSelectedItem ); - // helper (or hided functions!) private: - short Execute() override { return RET_CANCEL; }; OUString impl_buildUIFileName( const OUString& sURL ); // member private: - VclPtr m_pFtURL ; - VclPtr m_pLbFilters ; const FilterNameList* m_pFilterNames; + std::unique_ptr m_xFtURL; + std::unique_ptr m_xLbFilters; }; // class FilterDialog diff --git a/uui/source/iahndl-filter.cxx b/uui/source/iahndl-filter.cxx index 38c98375f3e5..9a8ef64c247c 100644 --- a/uui/source/iahndl-filter.cxx +++ b/uui/source/iahndl-filter.cxx @@ -45,20 +45,20 @@ namespace { void executeFilterDialog( - vcl::Window * pParent , + weld::Window* pParent , OUString const & rURL , uui::FilterNameList const & rFilters, OUString & rFilter ) { SolarMutexGuard aGuard; - ScopedVclPtrInstance< uui::FilterDialog > xDialog(pParent); + uui::FilterDialog aDialog(pParent); - xDialog->SetURL(rURL); - xDialog->ChangeFilters(&rFilters); + aDialog.SetURL(rURL); + aDialog.ChangeFilters(&rFilters); uui::FilterNameListPtr pSelected = rFilters.end(); - if( xDialog->AskForFilter( pSelected ) ) + if (aDialog.AskForFilter(pSelected)) { rFilter = pSelected->sInternal; } @@ -66,7 +66,7 @@ executeFilterDialog( void handleNoSuchFilterRequest_( - vcl::Window * pParent, + weld::Window* pParent, uno::Reference< uno::XComponentContext > const & xContext, document::NoSuchFilterRequest const & rRequest, uno::Sequence< uno::Reference< task::XInteractionContinuation > > const & @@ -292,7 +292,8 @@ UUIInteractionHelper::handleNoSuchFilterRequest( document::NoSuchFilterRequest aNoSuchFilterRequest; if (aAnyRequest >>= aNoSuchFilterRequest) { - handleNoSuchFilterRequest_(getParentProperty(), + uno::Reference xParent = getParentXWindow(); + handleNoSuchFilterRequest_(Application::GetFrameWeld(xParent), m_xContext, aNoSuchFilterRequest, rRequest->getContinuations()); diff --git a/uui/uiconfig/ui/filterselect.ui b/uui/uiconfig/ui/filterselect.ui index 5d8fda80109f..a4258df7751c 100644 --- a/uui/uiconfig/ui/filterselect.ui +++ b/uui/uiconfig/ui/filterselect.ui @@ -1,22 +1,37 @@ + - + + + + + + + + + False 6 Filter Selection + True + 0 + 0 dialog + + + False True True + vertical 12 False - vertical - start + end gtk-ok @@ -24,7 +39,6 @@ True True True - False True @@ -40,7 +54,6 @@ True True True - False True @@ -56,13 +69,13 @@ True True True - False True False True 2 + True @@ -96,13 +109,36 @@ - + True True True True - - + in + + + True + True + True + liststore1 + False + False + 0 + False + + + + + + + + + 0 + + + + + -- cgit