Kaydet (Commit) 1485acc3 authored tarafından Palenik Mihály's avatar Palenik Mihály Kaydeden (comit) Caolán McNamara

Implement search funtion in Expert Configuration dialog.

Change-Id: I5a594b3d6ef84b022ce4a92a865beba735d47113
Reviewed-on: https://gerrit.libreoffice.org/14322Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst 47230a03
...@@ -24,6 +24,9 @@ ...@@ -24,6 +24,9 @@
#include <com/sun/star/container/XHierarchicalName.hpp> #include <com/sun/star/container/XHierarchicalName.hpp>
#include <com/sun/star/container/XHierarchicalNameAccess.hpp> #include <com/sun/star/container/XHierarchicalNameAccess.hpp>
#include <com/sun/star/util/XChangesBatch.hpp> #include <com/sun/star/util/XChangesBatch.hpp>
#include <com/sun/star/i18n/TransliterationModules.hpp>
#include <com/sun/star/util/SearchFlags.hpp>
#include <unotools/textsearch.hxx>
#include <vector> #include <vector>
#include <boost/shared_ptr.hpp> #include <boost/shared_ptr.hpp>
...@@ -124,9 +127,10 @@ CuiAboutConfigTabPage::CuiAboutConfigTabPage( vcl::Window* pParent/*, const SfxI ...@@ -124,9 +127,10 @@ CuiAboutConfigTabPage::CuiAboutConfigTabPage( vcl::Window* pParent/*, const SfxI
m_pPrefCtrl( get<SvSimpleTableContainer>("preferences") ), m_pPrefCtrl( get<SvSimpleTableContainer>("preferences") ),
m_pResetBtn( get<PushButton>("reset") ), m_pResetBtn( get<PushButton>("reset") ),
m_pEditBtn( get<PushButton>("edit") ), m_pEditBtn( get<PushButton>("edit") ),
m_pSearchBtn( get<PushButton>("searchButton") ),
m_pSearchEdit( get<Edit>("searchEntry") ),
m_vectorOfModified(), m_vectorOfModified(),
m_pPrefBox( new SvSimpleTable(*m_pPrefCtrl, m_pPrefBox( new SvSimpleTable(*m_pPrefCtrl, WB_SCROLL | WB_HSCROLL | WB_VSCROLL ) )
WB_SCROLL | WB_HSCROLL | WB_VSCROLL ) )
{ {
Size aControlSize(LogicToPixel(Size(385, 230), MAP_APPFONT)); Size aControlSize(LogicToPixel(Size(385, 230), MAP_APPFONT));
m_pPrefCtrl->set_width_request(aControlSize.Width()); m_pPrefCtrl->set_width_request(aControlSize.Width());
...@@ -135,6 +139,7 @@ CuiAboutConfigTabPage::CuiAboutConfigTabPage( vcl::Window* pParent/*, const SfxI ...@@ -135,6 +139,7 @@ CuiAboutConfigTabPage::CuiAboutConfigTabPage( vcl::Window* pParent/*, const SfxI
m_pEditBtn->SetClickHdl( LINK( this, CuiAboutConfigTabPage, StandardHdl_Impl ) ); m_pEditBtn->SetClickHdl( LINK( this, CuiAboutConfigTabPage, StandardHdl_Impl ) );
m_pResetBtn->SetClickHdl( LINK( this, CuiAboutConfigTabPage, ResetBtnHdl_Impl ) ); m_pResetBtn->SetClickHdl( LINK( this, CuiAboutConfigTabPage, ResetBtnHdl_Impl ) );
m_pPrefBox->SetDoubleClickHdl( LINK(this, CuiAboutConfigTabPage, StandardHdl_Impl) ); m_pPrefBox->SetDoubleClickHdl( LINK(this, CuiAboutConfigTabPage, StandardHdl_Impl) );
m_pSearchBtn->SetClickHdl( LINK(this, CuiAboutConfigTabPage, SearchHdl_Impl) );
m_pPrefBox->InsertHeaderEntry(get<FixedText>("preference")->GetText()); m_pPrefBox->InsertHeaderEntry(get<FixedText>("preference")->GetText());
m_pPrefBox->InsertHeaderEntry(get<FixedText>("property")->GetText()); m_pPrefBox->InsertHeaderEntry(get<FixedText>("property")->GetText());
...@@ -150,6 +155,11 @@ CuiAboutConfigTabPage::CuiAboutConfigTabPage( vcl::Window* pParent/*, const SfxI ...@@ -150,6 +155,11 @@ CuiAboutConfigTabPage::CuiAboutConfigTabPage( vcl::Window* pParent/*, const SfxI
aTabs[3] = aTabs[2] + fWidth * 20; aTabs[3] = aTabs[2] + fWidth * 20;
aTabs[4] = aTabs[3] + fWidth * 8; aTabs[4] = aTabs[3] + fWidth * 8;
m_options.algorithmType = util::SearchAlgorithms_ABSOLUTE;
m_options.transliterateFlags |= i18n::TransliterationModules_IGNORE_CASE;
m_options.searchFlag |= (util::SearchFlags::REG_NOT_BEGINOFLINE |
util::SearchFlags::REG_NOT_ENDOFLINE);
m_pPrefBox->SetTabs(aTabs, MAP_PIXEL); m_pPrefBox->SetTabs(aTabs, MAP_PIXEL);
m_pPrefBox->SetAlternatingRowColors( true ); m_pPrefBox->SetAlternatingRowColors( true );
} }
...@@ -165,6 +175,10 @@ void CuiAboutConfigTabPage::InsertEntry(const OUString& rProp, const OUString& r ...@@ -165,6 +175,10 @@ void CuiAboutConfigTabPage::InsertEntry(const OUString& rProp, const OUString& r
pEntry->AddItem( new SvLBoxString( pEntry, 0, rValue)); pEntry->AddItem( new SvLBoxString( pEntry, 0, rValue));
m_pPrefBox->Insert( pEntry ); m_pPrefBox->Insert( pEntry );
SvTreeListEntry* pEntryClone = new SvTreeListEntry;
pEntryClone->Clone( pEntry );
m_prefBoxEntries.push_back( pEntryClone );
} }
void CuiAboutConfigTabPage::Reset() void CuiAboutConfigTabPage::Reset()
...@@ -654,6 +668,15 @@ IMPL_LINK_NOARG( CuiAboutConfigTabPage, StandardHdl_Impl ) ...@@ -654,6 +668,15 @@ IMPL_LINK_NOARG( CuiAboutConfigTabPage, StandardHdl_Impl )
//update listbox value. //update listbox value.
m_pPrefBox->SetEntryText( sDialogValue, pEntry, 3 ); m_pPrefBox->SetEntryText( sDialogValue, pEntry, 3 );
//update m_prefBoxEntries
SvTreeListEntries::iterator it = std::find_if(m_prefBoxEntries.begin(), m_prefBoxEntries.end(),
[sPropertyPath, sPropertyName](SvTreeListEntry &entry) -> bool
{
return static_cast< SvLBoxString* >( entry.GetItem(1) )->GetText().equals( sPropertyPath ) &&
static_cast< SvLBoxString* >( entry.GetItem(2) )->GetText().equals( sPropertyName );
}
);
it->ReplaceItem( new SvLBoxString( &(*it), 0, sDialogValue ), 4 );
} }
catch( uno::Exception& ) catch( uno::Exception& )
{ {
...@@ -662,4 +685,56 @@ IMPL_LINK_NOARG( CuiAboutConfigTabPage, StandardHdl_Impl ) ...@@ -662,4 +685,56 @@ IMPL_LINK_NOARG( CuiAboutConfigTabPage, StandardHdl_Impl )
return 0; return 0;
} }
IMPL_LINK_NOARG( CuiAboutConfigTabPage, SearchHdl_Impl)
{
m_pPrefBox->Clear();
m_pPrefBox->SetUpdateMode( false );
SvSortMode sortMode = m_pPrefBox->GetModel()->GetSortMode();
sal_uInt16 sortedCol = m_pPrefBox->GetSortedCol();
if( sortMode != SortNone )
m_pPrefBox->SortByCol( 0xFFFF );
if( m_pSearchEdit->GetText().isEmpty() )
{
for( auto it = m_prefBoxEntries.begin(); it != m_prefBoxEntries.end(); ++it )
{
SvTreeListEntry* pEntry = new SvTreeListEntry;
pEntry->Clone( &(*it) ) ;
m_pPrefBox->Insert( pEntry );
}
}
else
{
m_options.searchString = m_pSearchEdit->GetText();
utl::TextSearch textSearch( m_options );
for(auto it = m_prefBoxEntries.begin(); it != m_prefBoxEntries.end(); ++it)
{
sal_Int32 endPos, startPos = 0;
for(size_t i = 1; i < it->ItemCount(); ++i)
{
OUString scrTxt = static_cast< SvLBoxString* >( it->GetItem(i) )->GetText();
endPos = scrTxt.getLength();
if( textSearch.SearchForward( scrTxt, &startPos, &endPos ) )
{
SvTreeListEntry* pEntry = new SvTreeListEntry;
pEntry->Clone( &(*it) ) ;
m_pPrefBox->Insert( pEntry );
break;
}
}
}
}
if( sortMode != SortNone )
m_pPrefBox->SortByCol(sortedCol, sortMode == SortAscending);
m_pPrefBox->SetUpdateMode( true );
return 0;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include <com/sun/star/container/XNameAccess.hpp> #include <com/sun/star/container/XNameAccess.hpp>
#include <com/sun/star/beans/NamedValue.hpp> #include <com/sun/star/beans/NamedValue.hpp>
#include <com/sun/star/util/SearchOptions.hpp>
#include <sfx2/tabdlg.hxx> #include <sfx2/tabdlg.hxx>
#include <svtools/simptabl.hxx> #include <svtools/simptabl.hxx>
...@@ -45,15 +46,22 @@ private: ...@@ -45,15 +46,22 @@ private:
SvSimpleTableContainer* m_pPrefCtrl; SvSimpleTableContainer* m_pPrefCtrl;
PushButton* m_pResetBtn; PushButton* m_pResetBtn;
PushButton* m_pEditBtn; PushButton* m_pEditBtn;
PushButton* m_pSearchBtn;
Edit* m_pSearchEdit;
std::vector< boost::shared_ptr< Prop_Impl > > m_vectorOfModified; std::vector< boost::shared_ptr< Prop_Impl > > m_vectorOfModified;
boost::scoped_ptr< SvSimpleTable > m_pPrefBox; boost::scoped_ptr< SvSimpleTable > m_pPrefBox;
//for search
::com::sun::star::util::SearchOptions m_options;
SvTreeListEntries m_prefBoxEntries;
void AddToModifiedVector( const boost::shared_ptr< Prop_Impl >& rProp ); void AddToModifiedVector( const boost::shared_ptr< Prop_Impl >& rProp );
std::vector< OUString > commaStringToSequence( const OUString& rCommaSepString ); std::vector< OUString > commaStringToSequence( const OUString& rCommaSepString );
DECL_LINK( StandardHdl_Impl, void * ); DECL_LINK( StandardHdl_Impl, void * );
DECL_LINK( ResetBtnHdl_Impl, void * ); DECL_LINK( ResetBtnHdl_Impl, void * );
DECL_LINK( SearchHdl_Impl, void* );
public: public:
CuiAboutConfigTabPage(vcl::Window* pParent); CuiAboutConfigTabPage(vcl::Window* pParent);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment