summaryrefslogtreecommitdiff
path: root/dbaccess/source/ui/misc
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-09-05 12:22:38 +0100
committerCaolán McNamara <caolanm@redhat.com>2019-09-12 20:28:14 +0200
commit8c66efa030e98cfdf5da20be368566d64e43c5d1 (patch)
tree88c9fb335349fd1b7b285d46108e5d41a3c9aac4 /dbaccess/source/ui/misc
parent8150219824a1d08c4a22fd8bb7cc63fe2aa88074 (diff)
weld OCopyTableWizard cluster
Change-Id: I52547defb0e7ba328ec20d41a955e545556ffd16 note: get the toplevel parent by getting it from the XInteractionHandler Reviewed-on: https://gerrit.libreoffice.org/78751 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'dbaccess/source/ui/misc')
-rw-r--r--dbaccess/source/ui/misc/DExport.cxx18
-rw-r--r--dbaccess/source/ui/misc/TableCopyHelper.cxx5
-rw-r--r--dbaccess/source/ui/misc/WCPage.cxx160
-rw-r--r--dbaccess/source/ui/misc/WColumnSelect.cxx241
-rw-r--r--dbaccess/source/ui/misc/WCopyTable.cxx202
-rw-r--r--dbaccess/source/ui/misc/WExtendPages.cxx9
-rw-r--r--dbaccess/source/ui/misc/WNameMatch.cxx380
-rw-r--r--dbaccess/source/ui/misc/WTypeSelect.cxx286
8 files changed, 559 insertions, 742 deletions
diff --git a/dbaccess/source/ui/misc/DExport.cxx b/dbaccess/source/ui/misc/DExport.cxx
index 3bc250adb718..78117ef9f348 100644
--- a/dbaccess/source/ui/misc/DExport.cxx
+++ b/dbaccess/source/ui/misc/DExport.cxx
@@ -677,7 +677,7 @@ bool ODatabaseExport::executeWizard(const OUString& _rTableName, const Any& _aTe
{
bool bHaveDefaultTable = !m_sDefaultTableName.isEmpty();
OUString sTableName( bHaveDefaultTable ? m_sDefaultTableName : _rTableName );
- ScopedVclPtrInstance<OCopyTableWizard> aWizard(
+ OCopyTableWizard aWizard(
nullptr,
sTableName,
bHaveDefaultTable ? CopyTableOperation::AppendData : CopyTableOperation::CopyDefinitionAndData,
@@ -693,14 +693,14 @@ bool ODatabaseExport::executeWizard(const OUString& _rTableName, const Any& _aTe
bool bError = false;
try
{
- if (aWizard->Execute())
+ if (aWizard.run())
{
- switch(aWizard->getOperation())
+ switch(aWizard.getOperation())
{
case CopyTableOperation::CopyDefinitionAndData:
case CopyTableOperation::AppendData:
{
- m_xTable = aWizard->createTable();
+ m_xTable = aWizard.createTable();
bError = !m_xTable.is();
if(m_xTable.is())
{
@@ -708,10 +708,10 @@ bool ODatabaseExport::executeWizard(const OUString& _rTableName, const Any& _aTe
if(_aTextColor.hasValue())
m_xTable->setPropertyValue(PROPERTY_TEXTCOLOR,_aTextColor);
}
- m_bIsAutoIncrement = aWizard->shouldCreatePrimaryKey();
- m_vColumnPositions = aWizard->GetColumnPositions();
- m_vColumnTypes = aWizard->GetColumnTypes();
- m_bAppendFirstLine = !aWizard->UseHeaderLine();
+ m_bIsAutoIncrement = aWizard.shouldCreatePrimaryKey();
+ m_vColumnPositions = aWizard.GetColumnPositions();
+ m_vColumnTypes = aWizard.GetColumnTypes();
+ m_bAppendFirstLine = !aWizard.UseHeaderLine();
}
break;
default:
@@ -726,7 +726,7 @@ bool ODatabaseExport::executeWizard(const OUString& _rTableName, const Any& _aTe
}
catch( const SQLException&)
{
- ::dbtools::showError( ::dbtools::SQLExceptionInfo( ::cppu::getCaughtException() ), VCLUnoHelper::GetInterface(aWizard.get()), m_xContext );
+ ::dbtools::showError( ::dbtools::SQLExceptionInfo( ::cppu::getCaughtException() ), aWizard.getDialog()->GetXWindow(), m_xContext );
bError = true;
}
catch( const Exception& )
diff --git a/dbaccess/source/ui/misc/TableCopyHelper.cxx b/dbaccess/source/ui/misc/TableCopyHelper.cxx
index 6b7015d16344..135632e0c698 100644
--- a/dbaccess/source/ui/misc/TableCopyHelper.cxx
+++ b/dbaccess/source/ui/misc/TableCopyHelper.cxx
@@ -26,6 +26,7 @@
#include <WCopyTable.hxx>
#include <dbaccess/genericcontroller.hxx>
#include <WCPage.hxx>
+#include <com/sun/star/task/InteractionHandler.hpp>
#include <com/sun/star/task/XInteractionHandler.hpp>
#include <com/sun/star/sdb/XSingleSelectQueryComposer.hpp>
#include <com/sun/star/sdb/application/CopyTableOperation.hpp>
@@ -114,7 +115,9 @@ void OTableCopyHelper::insertTable( const OUString& i_rSourceDataSource, const R
Reference< XPropertySet > xDest( xFactory->createDataAccessDescriptor(), UNO_SET_THROW );
xDest->setPropertyValue( PROPERTY_ACTIVE_CONNECTION, makeAny( i_rDestConnection ) );
- Reference< XCopyTableWizard > xWizard( CopyTableWizard::create( aContext, xSource, xDest ), UNO_SET_THROW );
+ auto xInteractionHandler = InteractionHandler::createWithParent(aContext, VCLUnoHelper::GetInterface(m_pController->getView()));
+
+ Reference<XCopyTableWizard> xWizard(CopyTableWizard::createWithInteractionHandler(aContext, xSource, xDest, xInteractionHandler), UNO_SET_THROW);
OUString sTableNameForAppend( GetTableNameForAppend() );
xWizard->setDestinationTableName( GetTableNameForAppend() );
diff --git a/dbaccess/source/ui/misc/WCPage.cxx b/dbaccess/source/ui/misc/WCPage.cxx
index 11717f2d04a5..ae07cb947fb8 100644
--- a/dbaccess/source/ui/misc/WCPage.cxx
+++ b/dbaccess/source/ui/misc/WCPage.cxx
@@ -48,48 +48,47 @@ using namespace ::com::sun::star::sdbcx;
namespace CopyTableOperation = css::sdb::application::CopyTableOperation;
-OCopyTable::OCopyTable(vcl::Window * pParent)
- : OWizardPage(pParent, "CopyTablePage", "dbaccess/ui/copytablepage.ui")
- , m_nOldOperation(0)
+OCopyTable::OCopyTable(OCopyTableWizard* pWizard, TabPageParent pParent)
+ : OWizardPage(pWizard, pParent, "dbaccess/ui/copytablepage.ui", "CopyTablePage")
, m_bPKeyAllowed(false)
, m_bUseHeaderAllowed(true)
+ , m_nOldOperation(0)
+ , m_xEdTableName(m_xBuilder->weld_entry("name"))
+ , m_xRB_DefData(m_xBuilder->weld_radio_button("defdata"))
+ , m_xRB_Def(m_xBuilder->weld_radio_button("def"))
+ , m_xRB_View(m_xBuilder->weld_radio_button("view"))
+ , m_xRB_AppendData(m_xBuilder->weld_radio_button("data"))
+ , m_xCB_UseHeaderLine(m_xBuilder->weld_check_button("firstline"))
+ , m_xCB_PrimaryColumn(m_xBuilder->weld_check_button("primarykey"))
+ , m_xFT_KeyName(m_xBuilder->weld_label("keynamelabel"))
+ , m_xEdKeyName(m_xBuilder->weld_entry("keyname"))
{
- get(m_pEdTableName, "name");
- get(m_pRB_DefData, "defdata");
- get(m_pRB_Def, "def");
- get(m_pRB_View, "view");
- get(m_pRB_AppendData, "data");
- get(m_pCB_UseHeaderLine, "firstline");
- get(m_pCB_PrimaryColumn, "primarykey");
- get(m_pFT_KeyName, "keynamelabel");
- get(m_pEdKeyName, "keyname");
-
- m_pEdTableName->SetMaxTextLen(EDIT_NOLIMIT);
+ m_xEdTableName->set_max_length(EDIT_NOLIMIT);
if ( m_pParent->m_xDestConnection.is() )
{
- if ( !m_pParent->supportsViews() )
- m_pRB_View->Disable();
+ if (!m_pParent->supportsViews())
+ m_xRB_View->set_sensitive(false);
- m_pCB_UseHeaderLine->Check();
+ m_xCB_UseHeaderLine->set_active(true);
m_bPKeyAllowed = m_pParent->supportsPrimaryKey();
- m_pCB_PrimaryColumn->Enable(m_bPKeyAllowed);
+ m_xCB_PrimaryColumn->set_sensitive(m_bPKeyAllowed);
- m_pRB_AppendData->SetClickHdl( LINK( this, OCopyTable, AppendDataClickHdl ) );
+ m_xRB_AppendData->connect_clicked( LINK( this, OCopyTable, AppendDataClickHdl ) );
- m_pRB_DefData->SetClickHdl( LINK( this, OCopyTable, RadioChangeHdl ) );
- m_pRB_Def->SetClickHdl( LINK( this, OCopyTable, RadioChangeHdl ) );
- m_pRB_View->SetClickHdl( LINK( this, OCopyTable, RadioChangeHdl ) );
+ m_xRB_DefData->connect_clicked( LINK( this, OCopyTable, RadioChangeHdl ) );
+ m_xRB_Def->connect_clicked( LINK( this, OCopyTable, RadioChangeHdl ) );
+ m_xRB_View->connect_clicked( LINK( this, OCopyTable, RadioChangeHdl ) );
- m_pCB_PrimaryColumn->SetClickHdl(LINK( this, OCopyTable, KeyClickHdl ) );
+ m_xCB_PrimaryColumn->connect_clicked(LINK( this, OCopyTable, KeyClickHdl ) );
- m_pFT_KeyName->Enable(false);
- m_pEdKeyName->Enable(false);
- m_pEdKeyName->SetText(m_pParent->createUniqueName("ID"));
+ m_xFT_KeyName->set_sensitive(false);
+ m_xEdKeyName->set_sensitive(false);
+ m_xEdKeyName->set_text(m_pParent->createUniqueName("ID"));
const sal_Int32 nMaxLen = m_pParent->getMaxColumnNameLength();
- m_pEdKeyName->SetMaxTextLen(nMaxLen ? nMaxLen : EDIT_NOLIMIT);
+ m_xEdKeyName->set_max_length(nMaxLen ? nMaxLen : EDIT_NOLIMIT);
}
SetText(DBA_RES(STR_COPYTABLE_TITLE_COPY));
@@ -97,24 +96,9 @@ OCopyTable::OCopyTable(vcl::Window * pParent)
OCopyTable::~OCopyTable()
{
- disposeOnce();
-}
-
-void OCopyTable::dispose()
-{
- m_pEdTableName.clear();
- m_pRB_DefData.clear();
- m_pRB_Def.clear();
- m_pRB_View.clear();
- m_pRB_AppendData.clear();
- m_pCB_UseHeaderLine.clear();
- m_pCB_PrimaryColumn.clear();
- m_pFT_KeyName.clear();
- m_pEdKeyName.clear();
- OWizardPage::dispose();
}
-IMPL_LINK_NOARG( OCopyTable, AppendDataClickHdl, Button*, void )
+IMPL_LINK_NOARG( OCopyTable, AppendDataClickHdl, weld::Button&, void )
{
SetAppendDataRadio();
}
@@ -122,20 +106,20 @@ IMPL_LINK_NOARG( OCopyTable, AppendDataClickHdl, Button*, void )
void OCopyTable::SetAppendDataRadio()
{
m_pParent->EnableNextButton(true);
- m_pFT_KeyName->Enable(false);
- m_pCB_PrimaryColumn->Enable(false);
- m_pEdKeyName->Enable(false);
+ m_xFT_KeyName->set_sensitive(false);
+ m_xCB_PrimaryColumn->set_sensitive(false);
+ m_xEdKeyName->set_sensitive(false);
m_pParent->setOperation(CopyTableOperation::AppendData);
}
-IMPL_LINK( OCopyTable, RadioChangeHdl, Button*, pButton, void )
+IMPL_LINK(OCopyTable, RadioChangeHdl, weld::Button&, rButton, void)
{
- m_pParent->EnableNextButton(pButton != m_pRB_View);
- bool bKey = m_bPKeyAllowed && pButton != m_pRB_View;
- m_pFT_KeyName->Enable(bKey && m_pCB_PrimaryColumn->IsChecked());
- m_pEdKeyName->Enable(bKey && m_pCB_PrimaryColumn->IsChecked());
- m_pCB_PrimaryColumn->Enable(bKey);
- m_pCB_UseHeaderLine->Enable(m_bUseHeaderAllowed && IsOptionDefData());
+ m_pParent->EnableNextButton(&rButton != m_xRB_View.get());
+ bool bKey = m_bPKeyAllowed && &rButton != m_xRB_View.get();
+ m_xFT_KeyName->set_sensitive(bKey && m_xCB_PrimaryColumn->get_active());
+ m_xEdKeyName->set_sensitive(bKey && m_xCB_PrimaryColumn->get_active());
+ m_xCB_PrimaryColumn->set_sensitive(bKey);
+ m_xCB_UseHeaderLine->set_sensitive(m_bUseHeaderAllowed && IsOptionDefData());
// set type what to do
if( IsOptionDefData() )
@@ -146,17 +130,17 @@ IMPL_LINK( OCopyTable, RadioChangeHdl, Button*, pButton, void )
m_pParent->setOperation( CopyTableOperation::CreateAsView );
}
-IMPL_LINK_NOARG( OCopyTable, KeyClickHdl, Button*, void )
+IMPL_LINK_NOARG( OCopyTable, KeyClickHdl, weld::Button&, void )
{
- m_pEdKeyName->Enable(m_pCB_PrimaryColumn->IsChecked());
- m_pFT_KeyName->Enable(m_pCB_PrimaryColumn->IsChecked());
+ m_xEdKeyName->set_sensitive(m_xCB_PrimaryColumn->get_active());
+ m_xFT_KeyName->set_sensitive(m_xCB_PrimaryColumn->get_active());
}
bool OCopyTable::LeavePage()
{
- m_pParent->m_bCreatePrimaryKeyColumn = m_bPKeyAllowed && m_pCB_PrimaryColumn->IsEnabled() && m_pCB_PrimaryColumn->IsChecked();
- m_pParent->m_aKeyName = m_pParent->m_bCreatePrimaryKeyColumn ? m_pEdKeyName->GetText() : OUString();
- m_pParent->setUseHeaderLine( m_pCB_UseHeaderLine->IsChecked() );
+ m_pParent->m_bCreatePrimaryKeyColumn = m_bPKeyAllowed && m_xCB_PrimaryColumn->get_sensitive() && m_xCB_PrimaryColumn->get_active();
+ m_pParent->m_aKeyName = m_pParent->m_bCreatePrimaryKeyColumn ? m_xEdKeyName->get_text() : OUString();
+ m_pParent->setUseHeaderLine( m_xCB_UseHeaderLine->get_active() );
// first check if the table already exists in the database
if( m_pParent->getOperation() != CopyTableOperation::AppendData )
@@ -164,7 +148,7 @@ bool OCopyTable::LeavePage()
m_pParent->clearDestColumns();
DynamicTableOrQueryNameCheck aNameCheck( m_pParent->m_xDestConnection, CommandType::TABLE );
SQLExceptionInfo aErrorInfo;
- if ( !aNameCheck.isNameValid( m_pEdTableName->GetText(), aErrorInfo ) )
+ if ( !aNameCheck.isNameValid( m_xEdTableName->get_text(), aErrorInfo ) )
{
aErrorInfo.append( SQLExceptionInfo::TYPE::SQLContext, DBA_RES( STR_SUGGEST_APPEND_TABLE_DATA ) );
m_pParent->showError(aErrorInfo.get());
@@ -178,7 +162,7 @@ bool OCopyTable::LeavePage()
OUString sSchema;
OUString sTable;
::dbtools::qualifiedNameComponents( xMeta,
- m_pEdTableName->GetText(),
+ m_xEdTableName->get_text(),
sCatalog,
sSchema,
sTable,
@@ -199,7 +183,7 @@ bool OCopyTable::LeavePage()
}
}
- if ( m_pEdTableName->IsValueChangedFromSaved() )
+ if (m_xEdTableName->get_value_changed_from_saved())
{ // table exists and name has changed
if ( m_pParent->getOperation() == CopyTableOperation::AppendData )
{
@@ -208,7 +192,7 @@ bool OCopyTable::LeavePage()
}
else if ( m_nOldOperation == CopyTableOperation::AppendData )
{
- m_pEdTableName->SaveValue();
+ m_xEdTableName->save_value();
return LeavePage();
}
}
@@ -220,8 +204,8 @@ bool OCopyTable::LeavePage()
return false;
}
}
- m_pParent->m_sName = m_pEdTableName->GetText();
- m_pEdTableName->SaveValue();
+ m_pParent->m_sName = m_xEdTableName->get_text();
+ m_xEdTableName->save_value();
if(m_pParent->m_sName.isEmpty())
{
@@ -234,10 +218,10 @@ bool OCopyTable::LeavePage()
void OCopyTable::ActivatePage()
{
- m_pParent->GetOKButton().Enable();
+ m_pParent->GetOKButton().set_sensitive(true);
m_nOldOperation = m_pParent->getOperation();
- m_pEdTableName->GrabFocus();
- m_pCB_UseHeaderLine->Check(m_pParent->UseHeaderLine());
+ m_xEdTableName->grab_focus();
+ m_xCB_UseHeaderLine->set_active(m_pParent->UseHeaderLine());
}
OUString OCopyTable::GetTitle() const
@@ -249,8 +233,8 @@ void OCopyTable::Reset()
{
m_bFirstTime = false;
- m_pEdTableName->SetText( m_pParent->m_sName );
- m_pEdTableName->SaveValue();
+ m_xEdTableName->set_text( m_pParent->m_sName );
+ m_xEdTableName->save_value();
}
bool OCopyTable::checkAppendData()
@@ -259,9 +243,9 @@ bool OCopyTable::checkAppendData()
Reference< XPropertySet > xTable;
Reference< XTablesSupplier > xSup( m_pParent->m_xDestConnection, UNO_QUERY );
Reference<XNameAccess> xTables;
- if(xSup.is())
+ if (xSup.is())
xTables = xSup->getTables();
- if(xTables.is() && xTables->hasByName(m_pEdTableName->GetText()))
+ if (xTables.is() && xTables->hasByName(m_xEdTableName->get_text()))
{
const ODatabaseExport::TColumnVector& rSrcColumns = m_pParent->getSrcVector();
const sal_uInt32 nSrcSize = rSrcColumns.size();
@@ -269,7 +253,7 @@ bool OCopyTable::checkAppendData()
m_pParent->m_vColumnTypes.resize( nSrcSize , COLUMN_POSITION_NOT_FOUND );
// set new destination
- xTables->getByName( m_pEdTableName->GetText() ) >>= xTable;
+ xTables->getByName( m_xEdTableName->get_text() ) >>= xTable;
ObjectCopySource aTableCopySource( m_pParent->m_xDestConnection, xTable );
m_pParent->loadData( aTableCopySource, m_pParent->m_vDestColumns, m_pParent->m_aDestVec );
const ODatabaseExport::TColumnVector& rDestColumns = m_pParent->getDestVector();
@@ -308,40 +292,40 @@ bool OCopyTable::checkAppendData()
void OCopyTable::setCreatePrimaryKey( bool _bDoCreate, const OUString& _rSuggestedName )
{
bool bCreatePK = m_bPKeyAllowed && _bDoCreate;
- m_pCB_PrimaryColumn->Check( bCreatePK );
- m_pEdKeyName->SetText( _rSuggestedName );
+ m_xCB_PrimaryColumn->set_active( bCreatePK );
+ m_xEdKeyName->set_text( _rSuggestedName );
- m_pFT_KeyName->Enable( bCreatePK );
- m_pEdKeyName->Enable( bCreatePK );
+ m_xFT_KeyName->set_sensitive( bCreatePK );
+ m_xEdKeyName->set_sensitive( bCreatePK );
}
void OCopyTable::setCreateStyleAction()
{
// reselect the last action before
- switch(m_pParent->getOperation())
+ switch (m_pParent->getOperation())
{
case CopyTableOperation::CopyDefinitionAndData:
- m_pRB_DefData->Check();
- RadioChangeHdl(m_pRB_DefData);
+ m_xRB_DefData->set_active(true);
+ RadioChangeHdl(*m_xRB_DefData);
break;
case CopyTableOperation::CopyDefinitionOnly:
- m_pRB_Def->Check();
- RadioChangeHdl(m_pRB_Def);
+ m_xRB_Def->set_active(true);
+ RadioChangeHdl(*m_xRB_Def);
break;
case CopyTableOperation::AppendData:
- m_pRB_AppendData->Check();
+ m_xRB_AppendData->set_active(true);
SetAppendDataRadio();
break;
case CopyTableOperation::CreateAsView:
- if ( m_pRB_View->IsEnabled() )
+ if (m_xRB_View->get_sensitive())
{
- m_pRB_View->Check();
- RadioChangeHdl(m_pRB_View);
+ m_xRB_View->set_active(true);
+ RadioChangeHdl(*m_xRB_View);
}
else
{
- m_pRB_DefData->Check();
- RadioChangeHdl(m_pRB_DefData);
+ m_xRB_DefData->set_active(true);
+ RadioChangeHdl(*m_xRB_DefData);
}
}
}
diff --git a/dbaccess/source/ui/misc/WColumnSelect.cxx b/dbaccess/source/ui/misc/WColumnSelect.cxx
index 15eb6c66451d..89fd3a86bc41 100644
--- a/dbaccess/source/ui/misc/WColumnSelect.cxx
+++ b/dbaccess/source/ui/misc/WColumnSelect.cxx
@@ -28,6 +28,7 @@
#include <com/sun/star/sdbc/DataType.hpp>
#include <com/sun/star/sdbc/ColumnValue.hpp>
#include <com/sun/star/sdb/application/CopyTableOperation.hpp>
+#include <vcl/svapp.hxx>
#include <stringconstants.hxx>
#include <functional>
@@ -42,51 +43,40 @@ namespace CopyTableOperation = ::com::sun::star::sdb::application::CopyTableOper
OUString OWizColumnSelect::GetTitle() const { return DBA_RES(STR_WIZ_COLUMN_SELECT_TITEL); }
-OWizardPage::OWizardPage(vcl::Window* pParent, const OString& rID, const OUString& rUIXMLDescription)
- : TabPage(pParent, rID, rUIXMLDescription)
- ,m_pParent(static_cast<OCopyTableWizard*>(pParent))
- ,m_bFirstTime(true)
+OWizardPage::OWizardPage(OCopyTableWizard* pWizard, TabPageParent pParent, const OUString& rUIXMLDescription, const OString& rID)
+ : TabPage(pParent.pPage ? Application::GetDefDialogParent() : pParent.pParent.get()) //just drag this along hidden in this scenario
+ , m_xBuilder(pParent.pPage ? Application::CreateBuilder(pParent.pPage, rUIXMLDescription)
+ : Application::CreateInterimBuilder(this, rUIXMLDescription))
+ , m_xContainer(m_xBuilder->weld_container(rID))
+ , m_pParent(pWizard)
+ , m_bFirstTime(true)
{
}
OWizardPage::~OWizardPage()
{
- disposeOnce();
-}
-
-void OWizardPage::dispose()
-{
- m_pParent.clear();
- TabPage::dispose();
}
// OWizColumnSelect
-OWizColumnSelect::OWizColumnSelect( vcl::Window* pParent)
- :OWizardPage( pParent, "ApplyColPage", "dbaccess/ui/applycolpage.ui")
+OWizColumnSelect::OWizColumnSelect(OCopyTableWizard* pWizard, TabPageParent pParent)
+ : OWizardPage(pWizard, pParent, "dbaccess/ui/applycolpage.ui", "ApplyColPage")
+ , m_xOrgColumnNames(m_xBuilder->weld_tree_view("from"))
+ , m_xColumn_RH(m_xBuilder->weld_button("colrh"))
+ , m_xColumns_RH(m_xBuilder->weld_button("colsrh"))
+ , m_xColumn_LH(m_xBuilder->weld_button("collh"))
+ , m_xColumns_LH(m_xBuilder->weld_button("colslh"))
+ , m_xNewColumnNames(m_xBuilder->weld_tree_view("to"))
{
- get(m_pOrgColumnNames, "from");
- get(m_pColumn_RH, "colrh");
- get(m_pColumns_RH, "colsrh");
- get(m_pColumn_LH, "collh");
- get(m_pColumns_LH, "colslh");
- get(m_pNewColumnNames, "to");
-
- Size aSize(approximate_char_width() * 30, GetTextHeight() * 40);
- m_pOrgColumnNames->set_width_request(aSize.Width());
- m_pOrgColumnNames->set_height_request(aSize.Height());
- m_pNewColumnNames->set_width_request(aSize.Width());
- m_pNewColumnNames->set_height_request(aSize.Height());
-
- m_pColumn_RH->SetClickHdl(LINK(this,OWizColumnSelect,ButtonClickHdl));
- m_pColumn_LH->SetClickHdl(LINK(this,OWizColumnSelect,ButtonClickHdl));
- m_pColumns_RH->SetClickHdl(LINK(this,OWizColumnSelect,ButtonClickHdl));
- m_pColumns_LH->SetClickHdl(LINK(this,OWizColumnSelect,ButtonClickHdl));
-
- m_pOrgColumnNames->EnableMultiSelection(true);
- m_pNewColumnNames->EnableMultiSelection(true);
-
- m_pOrgColumnNames->SetDoubleClickHdl(LINK(this,OWizColumnSelect,ListDoubleClickHdl));
- m_pNewColumnNames->SetDoubleClickHdl(LINK(this,OWizColumnSelect,ListDoubleClickHdl));
+ m_xColumn_RH->connect_clicked(LINK(this,OWizColumnSelect,ButtonClickHdl));
+ m_xColumn_LH->connect_clicked(LINK(this,OWizColumnSelect,ButtonClickHdl));
+ m_xColumns_RH->connect_clicked(LINK(this,OWizColumnSelect,ButtonClickHdl));
+ m_xColumns_LH->connect_clicked(LINK(this,OWizColumnSelect,ButtonClickHdl));
+
+ m_xOrgColumnNames->set_selection_mode(SelectionMode::Multiple);
+ m_xNewColumnNames->set_selection_mode(SelectionMode::Multiple);
+
+ m_xOrgColumnNames->connect_row_activated(LINK(this,OWizColumnSelect,ListDoubleClickHdl));
+ m_xNewColumnNames->connect_row_activated(LINK(this,OWizColumnSelect,ListDoubleClickHdl));
}
OWizColumnSelect::~OWizColumnSelect()
@@ -96,29 +86,19 @@ OWizColumnSelect::~OWizColumnSelect()
void OWizColumnSelect::dispose()
{
- while ( m_pNewColumnNames->GetEntryCount() )
+ while (m_xNewColumnNames->n_children())
{
- void* pData = m_pNewColumnNames->GetEntryData(0);
- if ( pData )
- delete static_cast<OFieldDescription*>(pData);
-
- m_pNewColumnNames->RemoveEntry(0);
+ delete reinterpret_cast<OFieldDescription*>(m_xNewColumnNames->get_id(0).toInt64());
+ m_xNewColumnNames->remove(0);
}
- m_pNewColumnNames->Clear();
- m_pOrgColumnNames.clear();
- m_pColumn_RH.clear();
- m_pColumns_RH.clear();
- m_pColumn_LH.clear();
- m_pColumns_LH.clear();
- m_pNewColumnNames.clear();
OWizardPage::dispose();
}
void OWizColumnSelect::Reset()
{
// restore original state
- clearListBox(*m_pOrgColumnNames);
- clearListBox(*m_pNewColumnNames);
+ clearListBox(*m_xOrgColumnNames);
+ clearListBox(*m_xNewColumnNames);
m_pParent->m_mNameMapping.clear();
// insert the source columns in the left listbox
@@ -126,12 +106,12 @@ void OWizColumnSelect::Reset()
for (auto const& column : rSrcColumns)
{
- const sal_Int32 nPos = m_pOrgColumnNames->InsertEntry(column->first);
- m_pOrgColumnNames->SetEntryData(nPos,column->second);
+ OUString sId(OUString::number(reinterpret_cast<sal_Int64>(column->second)));
+ m_xOrgColumnNames->append(sId, column->first);
}
- if(m_pOrgColumnNames->GetEntryCount())
- m_pOrgColumnNames->SelectEntryPos(0);
+ if (m_xOrgColumnNames->n_children())
+ m_xOrgColumnNames->select(0);
m_bFirstTime = false;
}
@@ -142,7 +122,7 @@ void OWizColumnSelect::ActivatePage( )
if(m_pParent->getDestColumns().empty())
Reset();
- clearListBox(*m_pNewColumnNames);
+ clearListBox(*m_xNewColumnNames);
const ODatabaseExport::TColumnVector& rDestColumns = m_pParent->getDestVector();
@@ -157,14 +137,14 @@ void OWizColumnSelect::ActivatePage( )
{
if (rSrcColumns.find(column->first) != rSrcColumns.end())
{
- const sal_Int32 nPos = m_pNewColumnNames->InsertEntry(column->first);
- m_pNewColumnNames->SetEntryData(nPos,new OFieldDescription(*(column->second)));
- m_pOrgColumnNames->RemoveEntry(column->first);
+ OUString sId(OUString::number(reinterpret_cast<sal_Int64>(new OFieldDescription(*(column->second)))));
+ m_xNewColumnNames->append(sId, column->first);
+ m_xOrgColumnNames->remove_text(column->first);
}
}
- m_pParent->GetOKButton().Enable(m_pNewColumnNames->GetEntryCount() != 0);
- m_pParent->EnableNextButton(m_pNewColumnNames->GetEntryCount() && m_pParent->getOperation() != CopyTableOperation::AppendData);
- m_pColumns_RH->GrabFocus();
+ m_pParent->GetOKButton().set_sensitive(m_xNewColumnNames->n_children() != 0);
+ m_pParent->EnableNextButton(m_xNewColumnNames->n_children() && m_pParent->getOperation() != CopyTableOperation::AppendData);
+ m_xColumns_RH->grab_focus();
}
bool OWizColumnSelect::LeavePage()
@@ -172,14 +152,14 @@ bool OWizColumnSelect::LeavePage()
m_pParent->clearDestColumns();
- for(sal_Int32 i=0 ; i< m_pNewColumnNames->GetEntryCount();++i)
+ for(sal_Int32 i=0 ; i< m_xNewColumnNames->n_children();++i)
{
- OFieldDescription* pField = static_cast<OFieldDescription*>(m_pNewColumnNames->GetEntryData(i));
+ OFieldDescription* pField = reinterpret_cast<OFieldDescription*>(m_xNewColumnNames->get_id(i).toInt64());
OSL_ENSURE(pField,"The field information can not be null!");
m_pParent->insertColumn(i,pField);
}
- clearListBox(*m_pNewColumnNames);
+ clearListBox(*m_xNewColumnNames);
if ( m_pParent->GetPressedButton() == OCopyTableWizard::WIZARD_NEXT
|| m_pParent->GetPressedButton() == OCopyTableWizard::WIZARD_FINISH
@@ -189,32 +169,32 @@ bool OWizColumnSelect::LeavePage()
return true;
}
-IMPL_LINK( OWizColumnSelect, ButtonClickHdl, Button *, pButton, void )
+IMPL_LINK(OWizColumnSelect, ButtonClickHdl, weld::Button&, rButton, void)
{
- ListBox *pLeft = nullptr;
- ListBox *pRight = nullptr;
+ weld::TreeView *pLeft = nullptr;
+ weld::TreeView *pRight = nullptr;
bool bAll = false;
- if (pButton == m_pColumn_RH)
+ if (&rButton == m_xColumn_RH.get())
{
- pLeft = m_pOrgColumnNames;
- pRight = m_pNewColumnNames;
+ pLeft = m_xOrgColumnNames.get();
+ pRight = m_xNewColumnNames.get();
}
- else if(pButton == m_pColumn_LH)
+ else if (&rButton == m_xColumn_LH.get())
{
- pLeft = m_pNewColumnNames;
- pRight = m_pOrgColumnNames;
+ pLeft = m_xNewColumnNames.get();
+ pRight = m_xOrgColumnNames.get();
}
- else if(pButton == m_pColumns_RH)
+ else if (&rButton == m_xColumns_RH.get())
{
- pLeft = m_pOrgColumnNames;
- pRight = m_pNewColumnNames;
+ pLeft = m_xOrgColumnNames.get();
+ pRight = m_xNewColumnNames.get();
bAll = true;
}
- else if(pButton == m_pColumns_LH)
+ else if (&rButton == m_xColumns_LH.get())
{
- pLeft = m_pNewColumnNames;
- pRight = m_pOrgColumnNames;
+ pLeft = m_xNewColumnNames.get();
+ pRight = m_xOrgColumnNames.get();
bAll = true;
}
@@ -231,39 +211,42 @@ IMPL_LINK( OWizColumnSelect, ButtonClickHdl, Button *, pButton, void )
if(!bAll)
{
- for(sal_Int32 i=0; i < pLeft->GetSelectedEntryCount(); ++i)
- moveColumn(pRight,pLeft,aRightColumns,pLeft->GetSelectedEntry(i),sExtraChars,nMaxNameLen,aCase);
+ auto aRows = pLeft->get_selected_rows();
+ std::sort(aRows.begin(), aRows.end());
+
+ for (auto it = aRows.begin(); it != aRows.end(); ++it)
+ moveColumn(pRight,pLeft,aRightColumns,pLeft->get_text(*it),sExtraChars,nMaxNameLen,aCase);
- for(sal_Int32 j=pLeft->GetSelectedEntryCount(); j ; --j)
- pLeft->RemoveEntry(pLeft->GetSelectedEntry(j-1));
+ for (auto it = aRows.rbegin(); it != aRows.rend(); ++it)
+ pLeft->remove(*it);
}
else
{
- const sal_Int32 nEntries = pLeft->GetEntryCount();
+ const sal_Int32 nEntries = pLeft->n_children();
for(sal_Int32 i=0; i < nEntries; ++i)
- moveColumn(pRight,pLeft,aRightColumns,pLeft->GetEntry(i),sExtraChars,nMaxNameLen,aCase);
- for(sal_Int32 j=pLeft->GetEntryCount(); j ; )
- pLeft->RemoveEntry(--j);
+ moveColumn(pRight,pLeft,aRightColumns,pLeft->get_text(i),sExtraChars,nMaxNameLen,aCase);
+ for(sal_Int32 j=pLeft->n_children(); j ; )
+ pLeft->remove(--j);
}
enableButtons();
- if(m_pOrgColumnNames->GetEntryCount())
- m_pOrgColumnNames->SelectEntryPos(0);
+ if (m_xOrgColumnNames->n_children())
+ m_xOrgColumnNames->select(0);
}
-IMPL_LINK( OWizColumnSelect, ListDoubleClickHdl, ListBox&, rListBox, void )
+IMPL_LINK( OWizColumnSelect, ListDoubleClickHdl, weld::TreeView&, rListBox, void )
{
- ListBox *pLeft,*pRight;
- if(&rListBox == m_pOrgColumnNames)
+ weld::TreeView *pLeft,*pRight;
+ if (&rListBox == m_xOrgColumnNames.get())
{
- pLeft = m_pOrgColumnNames;
- pRight = m_pNewColumnNames;
+ pLeft = m_xOrgColumnNames.get();
+ pRight = m_xNewColumnNames.get();
}
else
{
- pRight = m_pOrgColumnNames;
- pLeft = m_pNewColumnNames;
+ pRight = m_xOrgColumnNames.get();
+ pLeft = m_xNewColumnNames.get();
}
// If database is able to process PrimaryKeys, set PrimaryKey
@@ -275,30 +258,32 @@ IMPL_LINK( OWizColumnSelect, ListDoubleClickHdl, ListBox&, rListBox, void )
std::vector< OUString> aRightColumns;
fillColumns(pRight,aRightColumns);
- for(sal_Int32 i=0; i < pLeft->GetSelectedEntryCount(); ++i)
- moveColumn(pRight,pLeft,aRightColumns,pLeft->GetSelectedEntry(i),sExtraChars,nMaxNameLen,aCase);
- for(sal_Int32 j=pLeft->GetSelectedEntryCount(); j ; )
- pLeft->RemoveEntry(pLeft->GetSelectedEntry(--j));
+ auto aRows = pLeft->get_selected_rows();
+ std::sort(aRows.begin(), aRows.end());
+
+ for (auto it = aRows.begin(); it != aRows.end(); ++it)
+ moveColumn(pRight,pLeft,aRightColumns,pLeft->get_text(*it),sExtraChars,nMaxNameLen,aCase);
+
+ for (auto it = aRows.rbegin(); it != aRows.rend(); ++it)
+ pLeft->remove(*it);
enableButtons();
}
-void OWizColumnSelect::clearListBox(ListBox& _rListBox)
+void OWizColumnSelect::clearListBox(weld::TreeView& rListBox)
{
- while(_rListBox.GetEntryCount())
- _rListBox.RemoveEntry(0);
- _rListBox.Clear();
+ rListBox.clear();
}
-void OWizColumnSelect::fillColumns(ListBox const * pRight,std::vector< OUString> &_rRightColumns)
+void OWizColumnSelect::fillColumns(weld::TreeView const * pRight,std::vector< OUString> &_rRightColumns)
{
- const sal_Int32 nCount = pRight->GetEntryCount();
+ const sal_Int32 nCount = pRight->n_children();
_rRightColumns.reserve(nCount);
- for(sal_Int32 i=0; i < nCount; ++i)
- _rRightColumns.push_back(pRight->GetEntry(i));
+ for (sal_Int32 i=0; i < nCount; ++i)
+ _rRightColumns.push_back(pRight->get_text(i));
}
-void OWizColumnSelect::createNewColumn( ListBox* _pListbox,
+void OWizColumnSelect::createNewColumn( weld::TreeView* _pListbox,
OFieldDescription const * _pSrcField,
std::vector< OUString>& _rRightColumns,
const OUString& _sColumnName,
@@ -317,25 +302,25 @@ void OWizColumnSelect::createNewColumn( ListBox* _pListbox,
if ( !m_pParent->supportsPrimaryKey() )
pNewField->SetPrimaryKey(false);
- _pListbox->SetEntryData(_pListbox->InsertEntry(sConvertedName),pNewField);
+ _pListbox->append(OUString::number(reinterpret_cast<sal_Int64>(pNewField)), sConvertedName);
_rRightColumns.push_back(sConvertedName);
if ( !bNotConvert )
m_pParent->showColumnTypeNotSupported(sConvertedName);
}
-void OWizColumnSelect::moveColumn( ListBox* _pRight,
- ListBox const * _pLeft,
+void OWizColumnSelect::moveColumn( weld::TreeView* _pRight,
+ weld::TreeView const * _pLeft,
std::vector< OUString>& _rRightColumns,
const OUString& _sColumnName,
const OUString& _sExtraChars,
sal_Int32 _nMaxNameLen,
const ::comphelper::UStringMixEqual& _aCase)
{
- if(_pRight == m_pNewColumnNames)
+ if(_pRight == m_xNewColumnNames.get())
{
// we copy the column into the new format for the dest
- OFieldDescription* pSrcField = static_cast<OFieldDescription*>(_pLeft->GetEntryData(_pLeft->GetEntryPos(_sColumnName)));
+ OFieldDescription* pSrcField = reinterpret_cast<OFieldDescription*>(_pLeft->get_id(_pLeft->find_text(_sColumnName)).toInt64());
createNewColumn(_pRight,pSrcField,_rRightColumns,_sColumnName,_sExtraChars,_nMaxNameLen,_aCase);
}
else
@@ -359,8 +344,10 @@ void OWizColumnSelect::moveColumn( ListBox* _pRight,
OSL_ENSURE( aPos != rSrcVector.end(),"Invalid position for the iterator here!");
ODatabaseExport::TColumnVector::size_type nPos = (aPos - rSrcVector.begin()) - adjustColumnPosition(_pLeft, _sColumnName, (aPos - rSrcVector.begin()), _aCase);
- _pRight->SetEntryData( _pRight->InsertEntry( (*aIter).first, sal::static_int_cast< sal_uInt16 >(nPos)),aSrcIter->second );
- _rRightColumns.push_back((*aIter).first);
+ OUString sId(OUString::number(reinterpret_cast<sal_Int64>(aSrcIter->second)));
+ const OUString& rStr = (*aIter).first;
+ _pRight->insert(nullptr, nPos, &rStr, &sId, nullptr, nullptr, nullptr, false, nullptr);
+ _rRightColumns.push_back(rStr);
m_pParent->removeColumnNameFromNameMap(_sColumnName);
}
}
@@ -370,23 +357,23 @@ void OWizColumnSelect::moveColumn( ListBox* _pRight,
// not enough. We need to take into account what fields have
// been removed earlier and adjust accordingly. Based on the
// algorithm employed in moveColumn().
-sal_Int32 OWizColumnSelect::adjustColumnPosition( ListBox const * _pLeft,
- const OUString& _sColumnName,
- ODatabaseExport::TColumnVector::size_type nCurrentPos,
- const ::comphelper::UStringMixEqual& _aCase)
+sal_Int32 OWizColumnSelect::adjustColumnPosition(weld::TreeView const * _pLeft,
+ const OUString& _sColumnName,
+ ODatabaseExport::TColumnVector::size_type nCurrentPos,
+ const ::comphelper::UStringMixEqual& _aCase)
{
sal_Int32 nAdjustedPos = 0;
// if returning all entries to their original position,
// then there is no need to adjust the positions.
- if (m_pColumns_LH->HasFocus())
+ if (m_xColumns_LH->has_focus())
return nAdjustedPos;
- const sal_Int32 nCount = _pLeft->GetEntryCount();
+ const sal_Int32 nCount = _pLeft->n_children();
OUString sColumnString;
for(sal_Int32 i=0; i < nCount; ++i)
{
- sColumnString = _pLeft->GetEntry(i);
+ sColumnString = _pLeft->get_text(i);
if(_sColumnName != sColumnString)
{
// find the new column in the dest name mapping to obtain the old column
@@ -417,11 +404,11 @@ sal_Int32 OWizColumnSelect::adjustColumnPosition( ListBox const * _pLeft,
void OWizColumnSelect::enableButtons()
{
- bool bEntries = m_pNewColumnNames->GetEntryCount() != 0;
- if(!bEntries)
+ bool bEntries = m_xNewColumnNames->n_children() != 0;
+ if (!bEntries)
m_pParent->m_mNameMapping.clear();
- m_pParent->GetOKButton().Enable(bEntries);
+ m_pParent->GetOKButton().set_sensitive(bEntries);
m_pParent->EnableNextButton(bEntries && m_pParent->getOperation() != CopyTableOperation::AppendData);
}
diff --git a/dbaccess/source/ui/misc/WCopyTable.cxx b/dbaccess/source/ui/misc/WCopyTable.cxx
index 46f563d62959..d5bb45130773 100644
--- a/dbaccess/source/ui/misc/WCopyTable.cxx
+++ b/dbaccess/source/ui/misc/WCopyTable.cxx
@@ -57,7 +57,6 @@
#include <sal/log.hxx>
#include <tools/debug.hxx>
#include <tools/diagnose_ex.h>
-#include <vcl/waitobj.hxx>
#include <functional>
@@ -487,25 +486,25 @@ namespace
}
// OCopyTableWizard
-OCopyTableWizard::OCopyTableWizard( vcl::Window * pParent, const OUString& _rDefaultName, sal_Int16 _nOperation,
+OCopyTableWizard::OCopyTableWizard(weld::Window* pParent, const OUString& _rDefaultName, sal_Int16 _nOperation,
const ICopyTableSourceObject& _rSourceObject, const Reference< XConnection >& _xSourceConnection,
const Reference< XConnection >& _xConnection, const Reference< XComponentContext >& _rxContext,
- const Reference< XInteractionHandler>& _xInteractionHandler)
- : WizardDialog( pParent, "RTFCopyTable", "dbaccess/ui/rtfcopytabledialog.ui")
- ,m_mNameMapping(_xConnection->getMetaData().is() && _xConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers())
- ,m_xDestConnection( _xConnection )
- ,m_rSourceObject( _rSourceObject )
- ,m_xFormatter( getNumberFormatter( _xConnection, _rxContext ) )
- ,m_xContext(_rxContext)
- ,m_xInteractionHandler(_xInteractionHandler)
- ,m_sTypeNames(DBA_RES(STR_TABLEDESIGN_DBFIELDTYPES))
- ,m_nPageCount(0)
- ,m_bDeleteSourceColumns(true)
- ,m_bInterConnectionCopy( _xSourceConnection != _xConnection )
- ,m_sName( _rDefaultName )
- ,m_nOperation( _nOperation )
- ,m_ePressed( WIZARD_NONE )
- ,m_bCreatePrimaryKeyColumn(false)
+ const Reference< XInteractionHandler>& _xInteractionHandler)
+ : vcl::RoadmapWizardMachine(pParent)
+ , m_mNameMapping(_xConnection->getMetaData().is() && _xConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers())
+ , m_xDestConnection( _xConnection )
+ , m_rSourceObject( _rSourceObject )
+ , m_xFormatter( getNumberFormatter( _xConnection, _rxContext ) )
+ , m_xContext(_rxContext)
+ , m_xInteractionHandler(_xInteractionHandler)
+ , m_sTypeNames(DBA_RES(STR_TABLEDESIGN_DBFIELDTYPES))
+ , m_nPageCount(0)
+ , m_bDeleteSourceColumns(true)
+ , m_bInterConnectionCopy( _xSourceConnection != _xConnection )
+ , m_sName( _rDefaultName )
+ , m_nOperation( _nOperation )
+ , m_ePressed( WIZARD_NONE )
+ , m_bCreatePrimaryKeyColumn(false)
{
construct();
@@ -566,38 +565,47 @@ OCopyTableWizard::OCopyTableWizard( vcl::Window * pParent, const OUString& _rDef
m_sName = ::dbtools::composeTableName(m_xDestConnection->getMetaData(),sCatalog,sSchema,sTable,false,::dbtools::EComposeRule::InTableDefinitions);
}
- VclPtrInstance<OCopyTable> pPage1( this );
+ VclPtrInstance<OCopyTable> pPage1(this, CreatePageContainer());
pPage1->disallowUseHeaderLine();
if ( !bAllowViews )
pPage1->disallowViews();
pPage1->setCreateStyleAction();
AddWizardPage(pPage1);
- AddWizardPage( VclPtr<OWizNameMatching>::Create( this ) );
- AddWizardPage( VclPtr<OWizColumnSelect>::Create( this ) );
- AddWizardPage( VclPtr<OWizNormalExtend>::Create( this ) );
+ AddWizardPage( VclPtr<OWizNameMatching>::Create(this, CreatePageContainer() ) );
+ AddWizardPage( VclPtr<OWizColumnSelect>::Create(this, CreatePageContainer() ) );
+ AddWizardPage( VclPtr<OWizNormalExtend>::Create(this, CreatePageContainer() ) );
ActivatePage();
+
+ m_xAssistant->set_current_page(0);
}
-OCopyTableWizard::OCopyTableWizard( vcl::Window* pParent, const OUString& _rDefaultName, sal_Int16 _nOperation,
+TabPageParent OCopyTableWizard::CreatePageContainer()
+{
+ OString sIdent(OString::number(m_nPageCount));
+ weld::Container* pPageContainer = m_xAssistant->append_page(sIdent);
+ return TabPageParent(pPageContainer, this);
+}
+
+OCopyTableWizard::OCopyTableWizard( weld::Window* pParent, const OUString& _rDefaultName, sal_Int16 _nOperation,
const ODatabaseExport::TColumns& _rSourceColumns, const ODatabaseExport::TColumnVector& _rSourceColVec,
const Reference< XConnection >& _xConnection, const Reference< XNumberFormatter >& _xFormatter,
TypeSelectionPageFactory _pTypeSelectionPageFactory, SvStream& _rTypeSelectionPageArg, const Reference< XComponentContext >& _rxContext )
- :WizardDialog( pParent, "RTFCopyTable", "dbaccess/ui/rtfcopytabledialog.ui")
- ,m_vSourceColumns(_rSourceColumns)
- ,m_mNameMapping(_xConnection->getMetaData().is() && _xConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers())
- ,m_xDestConnection( _xConnection )
- ,m_rSourceObject( DummyCopySource::Instance() )
- ,m_xFormatter(_xFormatter)
- ,m_xContext(_rxContext)
- ,m_sTypeNames(DBA_RES(STR_TABLEDESIGN_DBFIELDTYPES))
- ,m_nPageCount(0)
- ,m_bDeleteSourceColumns(false)
- ,m_bInterConnectionCopy( false )
- ,m_sName(_rDefaultName)
- ,m_nOperation( _nOperation )
- ,m_ePressed( WIZARD_NONE )
- ,m_bCreatePrimaryKeyColumn(false)
+ : vcl::RoadmapWizardMachine(pParent)
+ , m_vSourceColumns(_rSourceColumns)
+ , m_mNameMapping(_xConnection->getMetaData().is() && _xConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers())
+ , m_xDestConnection( _xConnection )
+ , m_rSourceObject( DummyCopySource::Instance() )
+ , m_xFormatter(_xFormatter)
+ , m_xContext(_rxContext)
+ , m_sTypeNames(DBA_RES(STR_TABLEDESIGN_DBFIELDTYPES))
+ , m_nPageCount(0)
+ , m_bDeleteSourceColumns(false)
+ , m_bInterConnectionCopy( false )
+ , m_sName(_rDefaultName)
+ , m_nOperation( _nOperation )
+ , m_ePressed( WIZARD_NONE )
+ , m_bCreatePrimaryKeyColumn(false)
{
construct();
for (auto const& sourceCol : _rSourceColVec)
@@ -610,65 +618,45 @@ OCopyTableWizard::OCopyTableWizard( vcl::Window* pParent, const OUString& _rDefa
m_xInteractionHandler = InteractionHandler::createWithParent(m_xContext, nullptr);
- VclPtrInstance<OCopyTable> pPage1( this );
+ VclPtrInstance<OCopyTable> pPage1( this, CreatePageContainer() );
pPage1->disallowViews();
pPage1->setCreateStyleAction();
AddWizardPage( pPage1 );
- AddWizardPage( VclPtr<OWizNameMatching>::Create( this ) );
- AddWizardPage( VclPtr<OWizColumnSelect>::Create( this ) );
- AddWizardPage( (*_pTypeSelectionPageFactory)( this, _rTypeSelectionPageArg ) );
+ AddWizardPage( VclPtr<OWizNameMatching>::Create( this, CreatePageContainer() ) );
+ AddWizardPage( VclPtr<OWizColumnSelect>::Create( this, CreatePageContainer() ) );
+ AddWizardPage( (*_pTypeSelectionPageFactory)( this, CreatePageContainer(), _rTypeSelectionPageArg ) );
ActivatePage();
+
+ m_xAssistant->set_current_page(0);
}
void OCopyTableWizard::construct()
{
- SetSizePixel(Size(700, 350));
-
- m_pbHelp = VclPtr<HelpButton>::Create(this, WB_TABSTOP);
- AddButton(m_pbHelp);
- m_pbCancel = VclPtr<CancelButton>::Create(this, WB_TABSTOP);
- AddButton(m_pbCancel);
- m_pbPrev = VclPtr<PushButton>::Create(this, WB_TABSTOP);
- AddButton(m_pbPrev);
- m_pbNext = VclPtr<PushButton>::Create(this, WB_TABSTOP);
- AddButton(m_pbNext);
- m_pbFinish = VclPtr<PushButton>::Create(this, WB_TABSTOP);
- AddButton(m_pbFinish);
-
- m_pbHelp->SetSizePixel( LogicToPixel(Size(50, 14), MapMode(MapUnit::MapAppFont)) );
- m_pbCancel->SetSizePixel( LogicToPixel(Size(50, 14), MapMode(MapUnit::MapAppFont)) );
- m_pbPrev->SetSizePixel( LogicToPixel(Size(50, 14), MapMode(MapUnit::MapAppFont)) );
- m_pbNext->SetSizePixel( LogicToPixel(Size(50, 14), MapMode(MapUnit::MapAppFont)) );
- m_pbFinish->SetSizePixel( LogicToPixel(Size(50, 14), MapMode(MapUnit::MapAppFont)) );
-
- m_pbPrev->SetText(DBA_RES(STR_WIZ_PB_PREV));
- m_pbNext->SetText(DBA_RES(STR_WIZ_PB_NEXT));
- m_pbFinish->SetText(DBA_RES(STR_WIZ_PB_OK));
-
- m_pbHelp->Show();
- m_pbCancel->Show();
- m_pbPrev->Show();
- m_pbNext->Show();
- m_pbFinish->Show();
+ m_xAssistant->set_size_request(700, 350);
- m_pbPrev->SetClickHdl( LINK( this, OCopyTableWizard, ImplPrevHdl ) );
- m_pbNext->SetClickHdl( LINK( this, OCopyTableWizard, ImplNextHdl ) );
- m_pbFinish->SetClickHdl( LINK( this, OCopyTableWizard, ImplOKHdl ) );
+ m_xPrevPage->set_label(DBA_RES(STR_WIZ_PB_PREV));
+ m_xNextPage->set_label(DBA_RES(STR_WIZ_PB_NEXT));
+ m_xFinish->set_label(DBA_RES(STR_WIZ_PB_OK));
- SetActivatePageHdl( LINK( this, OCopyTableWizard, ImplActivateHdl ) );
+ m_xHelp->show();
+ m_xCancel->show();
+ m_xPrevPage->show();
+ m_xNextPage->show();
+ m_xFinish->show();
- SetPrevButton( m_pbPrev );
- SetNextButton( m_pbNext );
+ m_xPrevPage->connect_clicked( LINK( this, OCopyTableWizard, ImplPrevHdl ) );
+ m_xNextPage->connect_clicked( LINK( this, OCopyTableWizard, ImplNextHdl ) );
+ m_xFinish->connect_clicked( LINK( this, OCopyTableWizard, ImplOKHdl ) );
- m_pbNext->GrabFocus();
+ m_xNextPage->grab_focus();
if (!m_vDestColumns.empty())
// source is a html or rtf table
- m_pbNext->SetStyle(m_pbFinish->GetStyle() | WB_DEFBUTTON);
+ m_xNextPage->set_has_default(true);
else
- m_pbFinish->SetStyle(m_pbFinish->GetStyle() | WB_DEFBUTTON);
+ m_xFinish->set_has_default(true);
m_pTypeInfo = std::make_shared<OTypeInfo>();
m_pTypeInfo->aUIName = m_sTypeNames.getToken(TYPE_OTHER, ';');
@@ -677,20 +665,6 @@ void OCopyTableWizard::construct()
OCopyTableWizard::~OCopyTableWizard()
{
- disposeOnce();
-}
-
-void OCopyTableWizard::dispose()
-{
- for ( ;; )
- {
- VclPtr<TabPage> pPage = GetPage(0);
- if ( pPage == nullptr )
- break;
- RemovePage( pPage );
- pPage.disposeAndClear();
- }
-
if ( m_bDeleteSourceColumns )
clearColumns(m_vSourceColumns,m_vSourceVec);
@@ -700,16 +674,9 @@ void OCopyTableWizard::dispose()
m_aTypeInfoIndex.clear();
m_aTypeInfo.clear();
m_aDestTypeInfoIndex.clear();
-
- m_pbHelp.disposeAndClear();
- m_pbCancel.disposeAndClear();
- m_pbPrev.disposeAndClear();
- m_pbNext.disposeAndClear();
- m_pbFinish.disposeAndClear();
- WizardDialog::dispose();
}
-IMPL_LINK_NOARG(OCopyTableWizard, ImplPrevHdl, Button*, void)
+IMPL_LINK_NOARG(OCopyTableWizard, ImplPrevHdl, weld::Button&, void)
{
m_ePressed = WIZARD_PREV;
if ( GetCurLevel() )
@@ -726,7 +693,7 @@ IMPL_LINK_NOARG(OCopyTableWizard, ImplPrevHdl, Button*, void)
}
}
-IMPL_LINK_NOARG(OCopyTableWizard, ImplNextHdl, Button*, void)
+IMPL_LINK_NOARG(OCopyTableWizard, ImplNextHdl, weld::Button&, void)
{
m_ePressed = WIZARD_NEXT;
if ( GetCurLevel() < MAX_PAGES )
@@ -831,14 +798,14 @@ bool OCopyTableWizard::CheckColumns(sal_Int32& _rnBreakPos)
return bRet;
}
-IMPL_LINK_NOARG(OCopyTableWizard, ImplOKHdl, Button*, void)
+IMPL_LINK_NOARG(OCopyTableWizard, ImplOKHdl, weld::Button&, void)
{
m_ePressed = WIZARD_FINISH;
bool bFinish = DeactivatePage();
if(bFinish)
{
- WaitObject aWait(this);
+ weld::WaitObject aWait(m_xAssistant.get());
switch(getOperation())
{
case CopyTableOperation::CopyDefinitionAndData:
@@ -917,11 +884,10 @@ IMPL_LINK_NOARG(OCopyTableWizard, ImplOKHdl, Button*, void)
}
}
- EndDialog(RET_OK);
+ m_xAssistant->response(RET_OK);
}
}
-
void OCopyTableWizard::setCreatePrimaryKey( bool _bDoCreate, const OUString& _rSuggestedName )
{
m_bCreatePrimaryKeyColumn = _bDoCreate;
@@ -934,10 +900,10 @@ void OCopyTableWizard::setCreatePrimaryKey( bool _bDoCreate, const OUString& _rS
pSettingsPage->setCreatePrimaryKey( _bDoCreate, _rSuggestedName );
}
-IMPL_LINK_NOARG(OCopyTableWizard, ImplActivateHdl, WizardDialog*, void)
+void OCopyTableWizard::ActivatePage()
{
OWizardPage* pCurrent = static_cast<OWizardPage*>(GetPage(GetCurLevel()));
- if(pCurrent)
+ if (pCurrent)
{
bool bFirstTime = pCurrent->IsFirstTime();
if(bFirstTime)
@@ -945,9 +911,7 @@ IMPL_LINK_NOARG(OCopyTableWizard, ImplActivateHdl, WizardDialog*, void)
CheckButtons();
- SetText(pCurrent->GetTitle());
-
- Invalidate();
+ m_xAssistant->set_title(pCurrent->GetTitle());
}
}
@@ -956,27 +920,27 @@ void OCopyTableWizard::CheckButtons()
if(GetCurLevel() == 0) // the first page has no back button
{
if(m_nPageCount > 1)
- m_pbNext->Enable();
+ m_xNextPage->set_sensitive(true);
else
- m_pbNext->Enable(false);
+ m_xNextPage->set_sensitive(false);
- m_pbPrev->Enable(false);
+ m_xPrevPage->set_sensitive(false);
}
else if(GetCurLevel() == m_nPageCount-1) // the last page has no next button
{
- m_pbNext->Enable(false);
- m_pbPrev->Enable();
+ m_xNextPage->set_sensitive(false);
+ m_xPrevPage->set_sensitive(true);
}
else
{
- m_pbPrev->Enable();
+ m_xPrevPage->set_sensitive(true);
// next already has its state
}
}
void OCopyTableWizard::EnableNextButton(bool bEnable)
{
- m_pbNext->Enable(bEnable);
+ m_xNextPage->set_sensitive(bEnable);
}
bool OCopyTableWizard::DeactivatePage()
@@ -1256,7 +1220,7 @@ Reference< XPropertySet > OCopyTableWizard::createTable()
{
xSuppDestinationColumns.set( xTable, UNO_QUERY_THROW );
// insert new table name into table filter
- ::dbaui::appendToFilter(m_xDestConnection, m_sName, GetComponentContext(), GetFrameWeld());
+ ::dbaui::appendToFilter(m_xDestConnection, m_sName, GetComponentContext(), m_xAssistant.get());
// copy ui settings
m_rSourceObject.copyUISettingsTo( xTable );
diff --git a/dbaccess/source/ui/misc/WExtendPages.cxx b/dbaccess/source/ui/misc/WExtendPages.cxx
index 6d43919be87f..f34661cabd7d 100644
--- a/dbaccess/source/ui/misc/WExtendPages.cxx
+++ b/dbaccess/source/ui/misc/WExtendPages.cxx
@@ -22,9 +22,11 @@
#include <HtmlReader.hxx>
#include <WCopyTable.hxx>
-using namespace dbaui;
using namespace com::sun::star;
+namespace dbaui
+{
+
void OWizHTMLExtend::createReaderAndCallParser(sal_Int32 _nRows)
{
tools::SvRef<OHTMLReader> xParser = new OHTMLReader(*m_pParserStream,
@@ -51,13 +53,10 @@ void OWizRTFExtend::createReaderAndCallParser(sal_Int32 _nRows)
xParser->CallParser();
}
-OWizNormalExtend::OWizNormalExtend(vcl::Window* pParent) : OWizTypeSelect( pParent )
+void OWizNormalExtend::createReaderAndCallParser(sal_Int32 /*_nRows*/)
{
- EnableAuto(false);
}
-void OWizNormalExtend::createReaderAndCallParser(sal_Int32 /*_nRows*/)
-{
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/misc/WNameMatch.cxx b/dbaccess/source/ui/misc/WNameMatch.cxx
index 8fd6226b43ed..258394be15c0 100644
--- a/dbaccess/source/ui/misc/WNameMatch.cxx
+++ b/dbaccess/source/ui/misc/WNameMatch.cxx
@@ -33,105 +33,74 @@
using namespace ::dbaui;
// OWizColumnSelect
-OWizNameMatching::OWizNameMatching(vcl::Window* pParent)
- : OWizardPage(pParent, "NameMatching", "dbaccess/ui/namematchingpage.ui")
+OWizNameMatching::OWizNameMatching(OCopyTableWizard* pWizard, TabPageParent pParent)
+ : OWizardPage(pWizard, pParent, "dbaccess/ui/namematchingpage.ui", "NameMatching")
+ , m_xTABLE_LEFT(m_xBuilder->weld_label("leftlabel"))
+ , m_xTABLE_RIGHT(m_xBuilder->weld_label("rightlabel"))
+ , m_xCTRL_LEFT(m_xBuilder->weld_tree_view("left"))
+ , m_xCTRL_RIGHT(m_xBuilder->weld_tree_view("right"))
+ , m_xColumn_up(m_xBuilder->weld_button("up"))
+ , m_xColumn_down(m_xBuilder->weld_button("down"))
+ , m_xColumn_up_right(m_xBuilder->weld_button("up_right"))
+ , m_xColumn_down_right(m_xBuilder->weld_button("down_right"))
+ , m_xAll(m_xBuilder->weld_button("all"))
+ , m_xNone(m_xBuilder->weld_button("none"))
{
- Image aImgUp(StockImage::Yes, BMP_UP);
- Image aImgDown(StockImage::Yes, BMP_DOWN);
- get(m_pTABLE_LEFT, "leftlabel");
- get(m_pTABLE_RIGHT, "rightlabel");
- get(m_pCTRL_LEFT, "left");
- get(m_pCTRL_RIGHT, "right");
- get(m_pColumn_up, "up");
- m_pColumn_up->SetModeImage(aImgUp);
- get(m_pColumn_down, "down");
- m_pColumn_down->SetModeImage(aImgDown);
- get(m_pColumn_up_right, "up_right");
- m_pColumn_up_right->SetModeImage(aImgUp);
- get(m_pColumn_down_right, "down_right");
- m_pColumn_down_right->SetModeImage(aImgDown);
- get(m_pAll, "all");
- get(m_pNone, "none");
-
- m_pColumn_up->SetClickHdl(LINK(this,OWizNameMatching,ButtonClickHdl));
- m_pColumn_down->SetClickHdl(LINK(this,OWizNameMatching,ButtonClickHdl));
-
- m_pColumn_up_right->SetClickHdl(LINK(this,OWizNameMatching,RightButtonClickHdl));
- m_pColumn_down_right->SetClickHdl(LINK(this,OWizNameMatching,RightButtonClickHdl));
-
- m_pAll->SetClickHdl(LINK(this,OWizNameMatching,AllNoneClickHdl));
- m_pNone->SetClickHdl(LINK(this,OWizNameMatching,AllNoneClickHdl));
-
- m_pCTRL_LEFT->SetSelectHdl(LINK(this,OWizNameMatching,TableListClickHdl));
- m_pCTRL_RIGHT->SetSelectHdl(LINK(this,OWizNameMatching,TableListRightSelectHdl));
- m_pCTRL_RIGHT->EnableCheckButton( nullptr );
-
- m_pCTRL_LEFT->SetForceMakeVisible( true );
- m_pCTRL_RIGHT->SetForceMakeVisible( true );
-
- m_sSourceText = m_pTABLE_LEFT->GetText() + "\n";
- m_sDestText = m_pTABLE_RIGHT->GetText() + "\n";
-}
+ OUString aImgUp(BMP_UP);
+ OUString aImgDown(BMP_DOWN);
+ m_xColumn_up->set_from_icon_name(aImgUp);
+ m_xColumn_down->set_from_icon_name(aImgDown);
+ m_xColumn_up_right->set_from_icon_name(aImgUp);
+ m_xColumn_down_right->set_from_icon_name(aImgDown);
-OWizNameMatching::~OWizNameMatching()
-{
- disposeOnce();
+ m_xColumn_up->connect_clicked(LINK(this,OWizNameMatching,ButtonClickHdl));
+ m_xColumn_down->connect_clicked(LINK(this,OWizNameMatching,ButtonClickHdl));
+
+ m_xColumn_up_right->connect_clicked(LINK(this,OWizNameMatching,RightButtonClickHdl));
+ m_xColumn_down_right->connect_clicked(LINK(this,OWizNameMatching,RightButtonClickHdl));
+
+ m_xAll->connect_clicked(LINK(this,OWizNameMatching,AllNoneClickHdl));
+ m_xNone->connect_clicked(LINK(this,OWizNameMatching,AllNoneClickHdl));
+
+ m_xCTRL_LEFT->connect_changed(LINK(this,OWizNameMatching,TableListClickHdl));
+ m_xCTRL_RIGHT->connect_changed(LINK(this,OWizNameMatching,TableListRightSelectHdl));
+
+ m_sSourceText = m_xTABLE_LEFT->get_label() + "\n";
+ m_sDestText = m_xTABLE_RIGHT->get_label() + "\n";
}
-void OWizNameMatching::dispose()
+OWizNameMatching::~OWizNameMatching()
{
- m_pTABLE_LEFT.clear();
- m_pTABLE_RIGHT.clear();
- m_pCTRL_LEFT.clear();
- m_pCTRL_RIGHT.clear();
- m_pColumn_up.clear();
- m_pColumn_down.clear();
- m_pColumn_up_right.clear();
- m_pColumn_down_right.clear();
- m_pAll.clear();
- m_pNone.clear();
- OWizardPage::dispose();
}
void OWizNameMatching::Reset()
{
- // restore original state;
- // the left tree contains bitmaps so i need to resize the right one
- if(m_bFirstTime)
- {
- m_pCTRL_RIGHT->SetReadOnly(); // sets autoinc to readonly
- m_pCTRL_RIGHT->SetEntryHeight(m_pCTRL_LEFT->GetEntryHeight());
- m_pCTRL_RIGHT->SetIndent(m_pCTRL_LEFT->GetIndent());
- m_pCTRL_RIGHT->SetSpaceBetweenEntries(m_pCTRL_LEFT->GetSpaceBetweenEntries());
-
- m_bFirstTime = false;
- }
-
+ m_bFirstTime = false;
}
void OWizNameMatching::ActivatePage( )
{
-
// set source table name
OUString aName = m_sSourceText + m_pParent->m_sSourceName;
- m_pTABLE_LEFT->SetText(aName);
+ m_xTABLE_LEFT->set_label(aName);
// set dest table name
aName = m_sDestText + m_pParent->m_sName;
- m_pTABLE_RIGHT->SetText(aName);
+ m_xTABLE_RIGHT->set_label(aName);
- m_pCTRL_LEFT->FillListBox(m_pParent->getSrcVector());
- m_pCTRL_RIGHT->FillListBox(m_pParent->getDestVector());
+ FillListBox(*m_xCTRL_LEFT, m_pParent->getSrcVector(), true);
+ FillListBox(*m_xCTRL_RIGHT, m_pParent->getDestVector(), false);
- m_pColumn_up->Enable( m_pCTRL_LEFT->GetEntryCount() > 1 );
- m_pColumn_down->Enable( m_pCTRL_LEFT->GetEntryCount() > 1 );
+ m_xColumn_up->set_sensitive( m_xCTRL_LEFT->n_children() > 1 );
+ m_xColumn_down->set_sensitive( m_xCTRL_LEFT->n_children() > 1 );
- m_pColumn_up_right->Enable( m_pCTRL_RIGHT->GetEntryCount() > 1 );
- m_pColumn_down_right->Enable( m_pCTRL_RIGHT->GetEntryCount() > 1 );
+ m_xColumn_up_right->set_sensitive( m_xCTRL_RIGHT->n_children() > 1 );
+ m_xColumn_down_right->set_sensitive( m_xCTRL_RIGHT->n_children() > 1 );
m_pParent->EnableNextButton(false);
- m_pCTRL_LEFT->GrabFocus();
+ m_xCTRL_LEFT->grab_focus();
+ TableListClickHdl(*m_xCTRL_LEFT);
}
bool OWizNameMatching::LeavePage()
@@ -144,12 +113,15 @@ bool OWizNameMatching::LeavePage()
m_pParent->m_vColumnPositions.resize( rSrcColumns.size(), ODatabaseExport::TPositions::value_type( COLUMN_POSITION_NOT_FOUND, COLUMN_POSITION_NOT_FOUND ) );
m_pParent->m_vColumnTypes.resize( rSrcColumns.size(), COLUMN_POSITION_NOT_FOUND );
+ std::unique_ptr<weld::TreeIter> xLeftEntry = m_xCTRL_LEFT->make_iterator();
+ std::unique_ptr<weld::TreeIter> xRightEntry = m_xCTRL_RIGHT->make_iterator();
+
sal_Int32 nParamPos = 0;
- SvTreeListEntry* pLeftEntry = m_pCTRL_LEFT->GetModel()->First();
- SvTreeListEntry* pRightEntry = m_pCTRL_RIGHT->GetModel()->First();
- while(pLeftEntry && pRightEntry)
+ bool bLeftEntry = m_xCTRL_LEFT->get_iter_first(*xLeftEntry);
+ bool bRightEntry = m_xCTRL_RIGHT->get_iter_first(*xRightEntry);
+ while (bLeftEntry && bRightEntry)
{
- OFieldDescription* pSrcField = static_cast<OFieldDescription*>(pLeftEntry->GetUserData());
+ OFieldDescription* pSrcField = reinterpret_cast<OFieldDescription*>(m_xCTRL_LEFT->get_id(*xLeftEntry).toInt64());
OSL_ENSURE(pSrcField,"OWizNameMatching: OColumn can not be null!");
sal_Int32 nPos = 0;
@@ -160,9 +132,9 @@ bool OWizNameMatching::LeavePage()
++nPos;
}
- if(m_pCTRL_LEFT->GetCheckButtonState(pLeftEntry) == SvButtonState::Checked)
+ if (m_xCTRL_LEFT->get_toggle(*xLeftEntry, 0) == TRISTATE_TRUE)
{
- OFieldDescription* pDestField = static_cast<OFieldDescription*>(pRightEntry->GetUserData());
+ OFieldDescription* pDestField = reinterpret_cast<OFieldDescription*>(m_xCTRL_RIGHT->get_id(*xRightEntry).toInt64());
OSL_ENSURE(pDestField,"OWizNameMatching: OColumn can not be null!");
const ODatabaseExport::TColumnVector& rDestColumns = m_pParent->getDestVector();
sal_Int32 nPosDest = 1;
@@ -203,8 +175,8 @@ bool OWizNameMatching::LeavePage()
m_pParent->m_vColumnPositions[nPos].second = COLUMN_POSITION_NOT_FOUND;
}
- pLeftEntry = m_pCTRL_LEFT->GetModel()->Next(pLeftEntry);
- pRightEntry = m_pCTRL_RIGHT->GetModel()->Next(pRightEntry);
+ bLeftEntry = m_xCTRL_LEFT->iter_next(*xLeftEntry);
+ bRightEntry = m_xCTRL_RIGHT->iter_next(*xRightEntry);
}
return true;
@@ -212,199 +184,145 @@ bool OWizNameMatching::LeavePage()
OUString OWizNameMatching::GetTitle() const { return DBA_RES(STR_WIZ_NAME_MATCHING_TITEL); }
-IMPL_LINK( OWizNameMatching, ButtonClickHdl, Button *, pButton, void )
+IMPL_LINK(OWizNameMatching, ButtonClickHdl, weld::Button&, rButton, void)
{
- SvTreeListEntry* pEntry = m_pCTRL_LEFT->FirstSelected();
- if ( pEntry )
- {
- sal_Int32 nPos = m_pCTRL_LEFT->GetModel()->GetAbsPos(pEntry);
- if(pButton == m_pColumn_up && nPos)
- --nPos;
- else if(pButton == m_pColumn_down)
- nPos += 2;
+ int nPos = m_xCTRL_LEFT->get_selected_index();
+ if (nPos == -1)
+ return;
- m_pCTRL_LEFT->ModelIsMoving(pEntry,nullptr,nPos);
- m_pCTRL_LEFT->GetModel()->Move(pEntry,nullptr,nPos);
- m_pCTRL_LEFT->ModelHasMoved(pEntry);
+ int nOrigPos = nPos;
+ if (&rButton == m_xColumn_up.get() && nPos)
+ --nPos;
+ else if (&rButton == m_xColumn_down.get() && nPos < m_xCTRL_LEFT->n_children() - 1)
+ ++nPos;
- long nThumbPos = m_pCTRL_LEFT->GetVScroll()->GetThumbPos();
- long nVisibleSize = m_pCTRL_LEFT->GetVScroll()->GetVisibleSize();
+ m_xCTRL_LEFT->swap(nOrigPos, nPos);
- if(pButton == m_pColumn_down && (nThumbPos+nVisibleSize+1) < nPos)
- {
- m_pCTRL_LEFT->GetVScroll()->DoScrollAction(ScrollType::LineDown);
- }
+ m_xCTRL_LEFT->scroll_to_row(nPos);
- TableListClickHdl(m_pCTRL_LEFT);
- }
+ TableListClickHdl(*m_xCTRL_LEFT);
+}
+
+IMPL_LINK( OWizNameMatching, RightButtonClickHdl, weld::Button&, rButton, void )
+{
+ int nPos = m_xCTRL_RIGHT->get_selected_index();
+ if (nPos == -1)
+ return;
+
+ int nOrigPos = nPos;
+ if (&rButton == m_xColumn_up_right.get() && nPos)
+ --nPos;
+ else if (&rButton == m_xColumn_down_right.get() && nPos < m_xCTRL_RIGHT->n_children() - 1)
+ ++nPos;
+
+ m_xCTRL_RIGHT->swap(nOrigPos, nPos);
+
+ m_xCTRL_RIGHT->scroll_to_row(nPos);
+
+ TableListRightSelectHdl(*m_xCTRL_RIGHT);
}
-IMPL_LINK( OWizNameMatching, RightButtonClickHdl, Button *, pButton, void )
+namespace
{
- SvTreeListEntry* pEntry = m_pCTRL_RIGHT->FirstSelected();
- if ( pEntry )
+ int GetFirstEntryInView(weld::TreeView& rTreeView)
{
- sal_Int32 nPos = m_pCTRL_RIGHT->GetModel()->GetAbsPos(pEntry);
- if(pButton == m_pColumn_up_right && nPos)
- --nPos;
- else if(pButton == m_pColumn_down_right)
- nPos += 2;
-
- m_pCTRL_RIGHT->ModelIsMoving(pEntry,nullptr,nPos);
- m_pCTRL_RIGHT->GetModel()->Move(pEntry,nullptr,nPos);
- m_pCTRL_RIGHT->ModelHasMoved(pEntry);
- long nThumbPos = m_pCTRL_RIGHT->GetVScroll()->GetThumbPos();
- long nVisibleSize = m_pCTRL_RIGHT->GetVScroll()->GetVisibleSize();
-
- if(pButton == m_pColumn_down_right && (nThumbPos+nVisibleSize+1) < nPos)
- m_pCTRL_RIGHT->GetVScroll()->DoScrollAction(ScrollType::LineDown);
- TableListRightSelectHdl(m_pCTRL_RIGHT);
+ int nFirstEntryInView = -1;
+
+ rTreeView.visible_foreach([&nFirstEntryInView, &rTreeView](weld::TreeIter& rEntry){
+ nFirstEntryInView = rTreeView.get_iter_index_in_parent(rEntry);
+ // stop after first entry
+ return true;
+ });
+
+ return nFirstEntryInView;
}
}
-IMPL_LINK_NOARG( OWizNameMatching, TableListClickHdl, SvTreeListBox*, void )
+IMPL_LINK_NOARG(OWizNameMatching, TableListClickHdl, weld::TreeView&, void)
{
- SvTreeListEntry* pEntry = m_pCTRL_LEFT->FirstSelected();
- if(pEntry)
+ int nPos = m_xCTRL_LEFT->get_selected_index();
+ if (nPos != -1)
{
- sal_uLong nPos = m_pCTRL_LEFT->GetModel()->GetAbsPos(pEntry);
- SvTreeListEntry* pOldEntry = m_pCTRL_RIGHT->FirstSelected();
- if(pOldEntry && nPos != m_pCTRL_RIGHT->GetModel()->GetAbsPos(pOldEntry))
+ int nOldEntry = m_xCTRL_RIGHT->get_selected_index();
+ if (nOldEntry != -1 && nPos != nOldEntry)
{
- if(pOldEntry)
- m_pCTRL_RIGHT->Select(pOldEntry,false);
- pOldEntry = m_pCTRL_RIGHT->GetEntry(nPos);
- if(pOldEntry)
+ m_xCTRL_RIGHT->unselect(nOldEntry);
+ if (nPos < m_xCTRL_RIGHT->n_children())
{
- sal_uLong nNewPos = m_pCTRL_LEFT->GetModel()->GetAbsPos(m_pCTRL_LEFT->GetFirstEntryInView());
+ int nNewPos = GetFirstEntryInView(*m_xCTRL_LEFT);
if ( nNewPos - nPos == 1 )
--nNewPos;
- m_pCTRL_RIGHT->MakeVisible(m_pCTRL_RIGHT->GetEntry(nNewPos), true);
- m_pCTRL_RIGHT->Select(pOldEntry);
+ m_xCTRL_RIGHT->scroll_to_row(nNewPos);
+ m_xCTRL_RIGHT->select(nPos);
}
}
- else if(!pOldEntry)
+ else if (nOldEntry == -1)
{
- pOldEntry = m_pCTRL_RIGHT->GetEntry(nPos);
- if(pOldEntry)
- {
- m_pCTRL_RIGHT->Select(pOldEntry);
- }
+ if (nPos < m_xCTRL_RIGHT->n_children())
+ m_xCTRL_RIGHT->select(nPos);
}
}
}
-IMPL_LINK_NOARG( OWizNameMatching, TableListRightSelectHdl, SvTreeListBox*, void )
+IMPL_LINK_NOARG( OWizNameMatching, TableListRightSelectHdl, weld::TreeView&, void )
{
- SvTreeListEntry* pEntry = m_pCTRL_RIGHT->FirstSelected();
- if(pEntry)
+ int nPos = m_xCTRL_RIGHT->get_selected_index();
+ if (nPos != -1)
{
- sal_uLong nPos = m_pCTRL_RIGHT->GetModel()->GetAbsPos(pEntry);
- SvTreeListEntry* pOldEntry = m_pCTRL_LEFT->FirstSelected();
- if(pOldEntry && nPos != m_pCTRL_LEFT->GetModel()->GetAbsPos(pOldEntry))
+ OFieldDescription* pColumn = reinterpret_cast<OFieldDescription*>(m_xCTRL_RIGHT->get_id(nPos).toInt64());
+ if (pColumn->IsAutoIncrement())
{
- if(pOldEntry)
- m_pCTRL_LEFT->Select(pOldEntry,false);
- pOldEntry = m_pCTRL_LEFT->GetEntry(nPos);
- if(pOldEntry)
+ m_xCTRL_RIGHT->unselect(nPos);
+ return;
+ }
+
+ int nOldEntry = m_xCTRL_LEFT->get_selected_index();
+ if (nOldEntry != -1 && nPos != nOldEntry)
+ {
+ m_xCTRL_LEFT->unselect(nOldEntry);
+ if (nPos < m_xCTRL_LEFT->n_children())
{
- sal_uLong nNewPos = m_pCTRL_RIGHT->GetModel()->GetAbsPos(m_pCTRL_RIGHT->GetFirstEntryInView());
+ int nNewPos = GetFirstEntryInView(*m_xCTRL_RIGHT);
if ( nNewPos - nPos == 1 )
nNewPos--;
- m_pCTRL_LEFT->MakeVisible(m_pCTRL_LEFT->GetEntry(nNewPos), true);
- m_pCTRL_LEFT->Select(pOldEntry);
+ m_xCTRL_LEFT->scroll_to_row(nNewPos);
+ m_xCTRL_LEFT->select(nPos);
}
}
- else if(!pOldEntry)
+ else if (nOldEntry == -1)
{
- pOldEntry = m_pCTRL_LEFT->GetEntry(nPos);
- if(pOldEntry)
- {
- m_pCTRL_LEFT->Select(pOldEntry);
- }
+ if (nPos < m_xCTRL_LEFT->n_children())
+ m_xCTRL_LEFT->select(nPos);
}
}
}
-IMPL_LINK( OWizNameMatching, AllNoneClickHdl, Button *, pButton, void )
+IMPL_LINK(OWizNameMatching, AllNoneClickHdl, weld::Button&, rButton, void)
{
- bool bAll = pButton == m_pAll;
- SvTreeListEntry* pEntry = m_pCTRL_LEFT->First();
- while(pEntry)
- {
- m_pCTRL_LEFT->SetCheckButtonState( pEntry, bAll ? SvButtonState::Checked : SvButtonState::Unchecked);
- pEntry = m_pCTRL_LEFT->Next(pEntry);
- }
+ bool bAll = &rButton == m_xAll.get();
+ m_xCTRL_LEFT->all_foreach([this, bAll](weld::TreeIter& rEntry){
+ m_xCTRL_LEFT->set_toggle(rEntry, bAll ? TRISTATE_TRUE : TRISTATE_FALSE, 0);
+ return false;
+ });
}
-// class OColumnString
-class OColumnString : public SvLBoxString
+void OWizNameMatching::FillListBox(weld::TreeView& rTreeView, const ODatabaseExport::TColumnVector& rList, bool bCheckButtons)
{
- bool m_bReadOnly;
-public:
- OColumnString( const OUString& rStr, bool RO )
- :SvLBoxString(rStr)
- ,m_bReadOnly(RO)
- {
- }
+ rTreeView.clear();
- virtual void Paint(const Point& rPos, SvTreeListBox& rDev, vcl::RenderContext& rRenderContext,
- const SvViewDataEntry* pView, const SvTreeListEntry& rEntry) override;
-};
+ int nRow(0);
-void OColumnString::Paint(const Point& rPos, SvTreeListBox& /*rDev*/, vcl::RenderContext& rRenderContext,
- const SvViewDataEntry* /*pView*/, const SvTreeListEntry& /*rEntry*/)
-{
- rRenderContext.Push(PushFlags::TEXTCOLOR | PushFlags::TEXTFILLCOLOR);
- if(m_bReadOnly)
+ for (auto const& elem : rList)
{
- const StyleSettings& rStyleSettings = rRenderContext.GetSettings().GetStyleSettings();
- rRenderContext.SetTextColor(rStyleSettings.GetDisableColor());
- rRenderContext.SetTextFillColor(rStyleSettings.GetFieldColor());
- }
- rRenderContext.DrawText(rPos, GetText());
- rRenderContext.Pop();
-}
-
-OColumnTreeBox::OColumnTreeBox( vcl::Window* pParent )
- : OMarkableTreeListBox(pParent, WB_BORDER)
- , m_bReadOnly(false)
-{
- SetDragDropMode( DragDropMode::NONE );
- EnableInplaceEditing( false );
- SetStyle(GetStyle() | WB_BORDER | WB_HASBUTTONS | WB_HSCROLL );
- SetSelectionMode( SelectionMode::Single );
-}
-
-VCL_BUILDER_FACTORY(OColumnTreeBox)
-
-void OColumnTreeBox::InitEntry(SvTreeListEntry* pEntry, const OUString& rStr, const Image& rImg1, const Image& rImg2)
-{
- DBTreeListBox::InitEntry(pEntry, rStr, rImg1, rImg2);
- pEntry->ReplaceItem(std::make_unique<OColumnString>(rStr,false), pEntry->ItemCount() - 1);
-}
-
-bool OColumnTreeBox::Select( SvTreeListEntry* pEntry, bool bSelect )
-{
- if(bSelect)
- {
- OFieldDescription* pColumn = static_cast<OFieldDescription*>(pEntry->GetUserData());
- if(!(pColumn->IsAutoIncrement() && m_bReadOnly))
- bSelect = DBTreeListBox::Select( pEntry,bSelect );
- }
- else
- bSelect = DBTreeListBox::Select( pEntry,bSelect );
- return bSelect;
-}
-
-void OColumnTreeBox::FillListBox( const ODatabaseExport::TColumnVector& _rList)
-{
- Clear();
- for (auto const& elem : _rList)
- {
- SvTreeListEntry* pEntry = InsertEntry(elem->first, nullptr, false, TREELIST_APPEND, elem->second);
- SvButtonState eState = !(m_bReadOnly && elem->second->IsAutoIncrement()) ? SvButtonState::Checked : SvButtonState::Unchecked;
- SetCheckButtonState( pEntry, eState );
+ rTreeView.append();
+ if (bCheckButtons)
+ {
+ bool bChecked = !elem->second->IsAutoIncrement();
+ rTreeView.set_toggle(nRow, bChecked ? TRISTATE_TRUE : TRISTATE_FALSE, 0);
+ }
+ rTreeView.set_text(nRow, elem->first);
+ rTreeView.set_id(nRow, OUString::number(reinterpret_cast<sal_Int64>(elem->second)));
+ ++nRow;
}
}
diff --git a/dbaccess/source/ui/misc/WTypeSelect.cxx b/dbaccess/source/ui/misc/WTypeSelect.cxx
index 29144469ad6f..06fcf50d0a46 100644
--- a/dbaccess/source/ui/misc/WTypeSelect.cxx
+++ b/dbaccess/source/ui/misc/WTypeSelect.cxx
@@ -44,10 +44,10 @@ using namespace ::com::sun::star::util;
using namespace ::com::sun::star::sdbc;
// OWizTypeSelectControl
-OWizTypeSelectControl::OWizTypeSelectControl(vcl::Window* pParent, vcl::Window* pParentTabPage)
+OWizTypeSelectControl::OWizTypeSelectControl(TabPageParent pParent, OWizTypeSelect* pParentTabPage)
: OFieldDescControl(pParent, nullptr)
+ , m_xParentTabPage(pParentTabPage)
{
- m_pParentTabPage = pParentTabPage;
}
OWizTypeSelectControl::~OWizTypeSelectControl()
@@ -57,7 +57,7 @@ OWizTypeSelectControl::~OWizTypeSelectControl()
void OWizTypeSelectControl::dispose()
{
- m_pParentTabPage.clear();
+ m_xParentTabPage.clear();
OFieldDescControl::dispose();
}
@@ -93,12 +93,12 @@ void OWizTypeSelectControl::CellModified(long nRow, sal_uInt16 nColId )
{
OSL_ENSURE(nRow == -1,"nRow must be -1!");
- MultiListBox *pListBox = static_cast<OWizTypeSelect*>(m_pParentTabPage.get())->m_pColumnNames;
+ weld::TreeView* pListBox = m_xParentTabPage->m_xColumnNames->GetWidget();
OFieldDescription* pCurFieldDescr = getCurrentFieldDescData();
- const sal_Int32 nPos = pListBox->GetEntryPos( pCurFieldDescr->GetName() );
- pCurFieldDescr = static_cast< OFieldDescription* >( pListBox->GetEntryData( nPos ) );
+ const sal_Int32 nPos = pListBox->find_text(pCurFieldDescr->GetName());
+ pCurFieldDescr = reinterpret_cast< OFieldDescription* >( pListBox->get_id(nPos).toInt64() );
OSL_ENSURE( pCurFieldDescr, "OWizTypeSelectControl::CellModified: Columnname/type not found in the listbox!" );
if ( !pCurFieldDescr )
return;
@@ -108,23 +108,23 @@ void OWizTypeSelectControl::CellModified(long nRow, sal_uInt16 nColId )
OUString sNewName;
const OPropColumnEditCtrl* pColumnName = getColumnCtrl();
if ( pColumnName )
- sNewName = pColumnName->GetText();
+ sNewName = pColumnName->get_text();
switch(nColId)
{
case FIELD_PROPERTY_COLUMNNAME:
{
- OCopyTableWizard* pWiz = static_cast<OCopyTableWizard*>(GetParentDialog());
+ OCopyTableWizard* pWiz = m_xParentTabPage->m_pParent;
// first we have to check if this name already exists
bool bDoubleName = false;
bool bCase = true;
if ( getMetaData().is() && !getMetaData()->supportsMixedCaseQuotedIdentifiers() )
{
bCase = false;
- const sal_Int32 nCount = pListBox->GetEntryCount();
+ const sal_Int32 nCount = pListBox->n_children();
for (sal_Int32 i=0 ; !bDoubleName && i < nCount ; ++i)
{
- OUString sEntry(pListBox->GetEntry(i));
+ OUString sEntry(pListBox->get_text(i));
bDoubleName = sNewName.equalsIgnoreAsciiCase(sEntry);
}
if ( !bDoubleName && pWiz->shouldCreatePrimaryKey() )
@@ -132,7 +132,7 @@ void OWizTypeSelectControl::CellModified(long nRow, sal_uInt16 nColId )
}
else
- bDoubleName = ((pListBox->GetEntryPos(sNewName) != LISTBOX_ENTRY_NOTFOUND)
+ bDoubleName = ((pListBox->find_text(sNewName) != -1)
|| ( pWiz->shouldCreatePrimaryKey()
&& pWiz->getPrimaryKeyName() == sNewName) );
@@ -143,13 +143,13 @@ void OWizTypeSelectControl::CellModified(long nRow, sal_uInt16 nColId )
pWiz->showError(strMessage);
pCurFieldDescr->SetName(sName);
DisplayData(pCurFieldDescr);
- static_cast<OWizTypeSelect*>(m_pParentTabPage.get())->setDuplicateName(true);
+ m_xParentTabPage->setDuplicateName(true);
return;
}
OUString sOldName = pCurFieldDescr->GetName();
pCurFieldDescr->SetName(sNewName);
- static_cast<OWizTypeSelect*>(m_pParentTabPage.get())->setDuplicateName(false);
+ m_xParentTabPage->setDuplicateName(false);
// now we change the name
@@ -163,9 +163,9 @@ void OWizTypeSelectControl::CellModified(long nRow, sal_uInt16 nColId )
}
}
- pListBox->RemoveEntry(nPos);
- pListBox->InsertEntry(pCurFieldDescr->GetName(),nPos);
- pListBox->SetEntryData(nPos,pCurFieldDescr);
+ pListBox->remove(nPos);
+ pListBox->insert_text(nPos, pCurFieldDescr->GetName());
+ pListBox->set_id(nPos, OUString::number(reinterpret_cast<sal_Int64>(pCurFieldDescr)));
pWiz->replaceColumn(nPos,pCurFieldDescr,sOldName);
}
@@ -176,75 +176,74 @@ void OWizTypeSelectControl::CellModified(long nRow, sal_uInt16 nColId )
css::lang::Locale OWizTypeSelectControl::GetLocale() const
{
- return static_cast<OWizTypeSelect*>(m_pParentTabPage.get())->m_pParent->GetLocale();
+ return m_xParentTabPage->m_pParent->GetLocale();
}
Reference< XNumberFormatter > OWizTypeSelectControl::GetFormatter() const
{
- return static_cast<OWizTypeSelect*>(m_pParentTabPage.get())->m_pParent->GetFormatter();
+ return m_xParentTabPage->m_pParent->GetFormatter();
}
TOTypeInfoSP OWizTypeSelectControl::getTypeInfo(sal_Int32 _nPos)
{
- return static_cast<OWizTypeSelect*>(m_pParentTabPage.get())->m_pParent->getDestTypeInfo(_nPos);
+ return m_xParentTabPage->m_pParent->getDestTypeInfo(_nPos);
}
const OTypeInfoMap* OWizTypeSelectControl::getTypeInfo() const
{
- return &static_cast<OWizTypeSelect*>(m_pParentTabPage.get())->m_pParent->getDestTypeInfo();
+ return &m_xParentTabPage->m_pParent->getDestTypeInfo();
}
css::uno::Reference< css::sdbc::XDatabaseMetaData> OWizTypeSelectControl::getMetaData()
{
- return static_cast<OWizTypeSelect*>(m_pParentTabPage.get())->m_pParent->m_xDestConnection->getMetaData();
+ return m_xParentTabPage->m_pParent->m_xDestConnection->getMetaData();
}
css::uno::Reference< css::sdbc::XConnection> OWizTypeSelectControl::getConnection()
{
- return static_cast<OWizTypeSelect*>(m_pParentTabPage.get())->m_pParent->m_xDestConnection;
+ return m_xParentTabPage->m_pParent->m_xDestConnection;
}
bool OWizTypeSelectControl::isAutoIncrementValueEnabled() const
{
- return static_cast<OWizTypeSelect*>(m_pParentTabPage.get())->m_bAutoIncrementEnabled;
+ return m_xParentTabPage->m_bAutoIncrementEnabled;
}
OUString OWizTypeSelectControl::getAutoIncrementValue() const
{
- return static_cast<OWizTypeSelect*>(m_pParentTabPage.get())->m_sAutoIncrementValue;
+ return m_xParentTabPage->m_sAutoIncrementValue;
}
-OWizTypeSelect::OWizTypeSelect( vcl::Window* pParent, SvStream* _pStream )
- :OWizardPage( pParent, "TypeSelect", "dbaccess/ui/typeselectpage.ui")
- ,m_pTypeControl(VclPtr<OWizTypeSelectControl>::Create(get<VclVBox>("control_container"), this) )
- ,m_pParserStream( _pStream )
- ,m_nDisplayRow(0)
- ,m_bAutoIncrementEnabled(false)
- ,m_bDuplicateName(false)
+OWizTypeSelect::OWizTypeSelect(OCopyTableWizard* pWizard, TabPageParent pParent, SvStream* pStream)
+ : OWizardPage(pWizard, pParent, "dbaccess/ui/typeselectpage.ui", "TypeSelect")
+ , m_xColumnNames(new OWizTypeSelectList(m_xBuilder->weld_tree_view("columnnames")))
+ , m_xColumns(m_xBuilder->weld_label("columns"))
+ , m_xControlContainer(m_xBuilder->weld_container("control_container"))
+ , m_xTypeControl(VclPtr<OWizTypeSelectControl>::Create(TabPageParent(m_xControlContainer.get(), pWizard), this))
+ , m_xAutoType(m_xBuilder->weld_label("autotype"))
+ , m_xAutoFt(m_xBuilder->weld_label("autolabel"))
+ , m_xAutoEt(m_xBuilder->weld_spin_button("auto"))
+ , m_xAutoPb(m_xBuilder->weld_button("autobutton"))
+ , m_pParserStream(pStream)
+ , m_nDisplayRow(0)
+ , m_bAutoIncrementEnabled(false)
+ , m_bDuplicateName(false)
{
- get(m_pColumnNames, "columnnames");
- m_pColumnNames->SetParentTabPage(this);
- get(m_pColumns, "columns");
- get(m_pAutoType, "autotype");
- get(m_pAutoFt, "autolabel");
- get(m_pAutoEt, "auto");
- get(m_pAutoPb, "autobutton");
+ m_xColumnNames->SetParentTabPage(this);
- m_pColumnNames->SetSelectHdl(LINK(this,OWizTypeSelect,ColumnSelectHdl));
+ m_xColumnNames->connect_changed(LINK(this,OWizTypeSelect,ColumnSelectHdl));
- m_imgPKey = Image(StockImage::Yes, BMP_PRIMARY_KEY);
+ m_xTypeControl->Show();
+ m_xTypeControl->Init();
- m_pTypeControl->Show();
- m_pTypeControl->Init();
-
- m_pAutoEt->SetText("10");
- m_pAutoEt->SetDecimalDigits(0);
- m_pAutoPb->SetClickHdl(LINK(this,OWizTypeSelect,ButtonClickHdl));
- m_pColumnNames->EnableMultiSelection(true);
+ m_xAutoEt->set_text("10");
+ m_xAutoEt->set_digits(0);
+ m_xAutoPb->connect_clicked(LINK(this,OWizTypeSelect,ButtonClickHdl));
+ m_xColumnNames->set_selection_mode(SelectionMode::Multiple);
try
{
- m_pColumnNames->SetPKey( m_pParent->supportsPrimaryKey() );
+ m_xColumnNames->SetPKey( m_pParent->supportsPrimaryKey() );
::dbaui::fillAutoIncrementValue( m_pParent->m_xDestConnection, m_bAutoIncrementEnabled, m_sAutoIncrementValue );
}
catch(const Exception&)
@@ -260,13 +259,7 @@ OWizTypeSelect::~OWizTypeSelect()
void OWizTypeSelect::dispose()
{
- m_pTypeControl.disposeAndClear();
- m_pColumnNames.clear();
- m_pColumns.clear();
- m_pAutoType.clear();
- m_pAutoFt.clear();
- m_pAutoEt.clear();
- m_pAutoPb.clear();
+ m_xTypeControl.disposeAndClear();
OWizardPage::dispose();
}
@@ -275,34 +268,30 @@ OUString OWizTypeSelect::GetTitle() const
return DBA_RES(STR_WIZ_TYPE_SELECT_TITEL);
}
-IMPL_LINK_NOARG( OWizTypeSelect, ColumnSelectHdl, ListBox&, void )
+IMPL_LINK_NOARG(OWizTypeSelect, ColumnSelectHdl, weld::TreeView&, void)
{
- OUString aColumnName( m_pColumnNames->GetSelectedEntry() );
-
- OFieldDescription* pField = static_cast<OFieldDescription*>(m_pColumnNames->GetEntryData(m_pColumnNames->GetEntryPos(aColumnName)));
- if(pField)
- m_pTypeControl->DisplayData(pField);
+ OFieldDescription* pField = reinterpret_cast<OFieldDescription*>(m_xColumnNames->get_selected_id().toInt64());
+ if (pField)
+ m_xTypeControl->DisplayData(pField);
- m_pTypeControl->Enable(m_pColumnNames->GetSelectedEntryCount() == 1 );
+ m_xTypeControl->Enable(m_xColumnNames->count_selected_rows() == 1);
}
void OWizTypeSelect::Reset()
{
// restore original state
-
- while(m_pColumnNames->GetEntryCount())
- m_pColumnNames->RemoveEntry(0);
- m_pColumnNames->Clear();
- sal_Int32 nBreakPos;
+ m_xColumnNames->clear();
+ sal_Int32 nCount(0), nBreakPos;
m_pParent->CheckColumns(nBreakPos);
const ODatabaseExport::TColumnVector& rDestColumns = m_pParent->getDestVector();
for (auto const& column : rDestColumns)
{
- const sal_Int32 nPos = column->second->IsPrimaryKey()
- ? m_pColumnNames->InsertEntry(column->first, m_imgPKey )
- : m_pColumnNames->InsertEntry(column->first);
- m_pColumnNames->SetEntryData(nPos,column->second);
+ OUString sId(OUString::number(reinterpret_cast<sal_Int64>(column->second)));
+ m_xColumnNames->append(sId, column->first);
+ if (column->second->IsPrimaryKey())
+ m_xColumnNames->set_image(nCount, BMP_PRIMARY_KEY);
+ ++nCount;
}
m_bFirstTime = false;
}
@@ -313,20 +302,18 @@ void OWizTypeSelect::ActivatePage( )
Reset();
m_bFirstTime = bOldFirstTime;
- m_pColumnNames->SelectEntryPos(static_cast<sal_uInt16>(m_nDisplayRow));
+ m_xColumnNames->select(m_nDisplayRow);
m_nDisplayRow = 0;
- m_pColumnNames->GetSelectHdl().Call(*m_pColumnNames);
+ ColumnSelectHdl(*m_xColumnNames->GetWidget());
}
bool OWizTypeSelect::LeavePage()
{
- OUString aColumnName( m_pColumnNames->GetSelectedEntry() );
-
bool bDuplicateName = false;
- OFieldDescription* pField = static_cast<OFieldDescription*>(m_pColumnNames->GetEntryData(m_pColumnNames->GetEntryPos(aColumnName)));
+ OFieldDescription* pField = reinterpret_cast<OFieldDescription*>(m_xColumnNames->get_selected_id().toInt64());
if ( pField )
{
- m_pTypeControl->SaveData(pField);
+ m_xTypeControl->SaveData(pField);
bDuplicateName = m_bDuplicateName;
}
return !bDuplicateName;
@@ -334,19 +321,19 @@ bool OWizTypeSelect::LeavePage()
void OWizTypeSelect::EnableAuto(bool bEnable)
{
- m_pAutoFt->Show(bEnable);
- m_pAutoEt->Show(bEnable);
- m_pAutoPb->Show(bEnable);
- m_pAutoType->Show(bEnable);
+ m_xAutoFt->set_visible(bEnable);
+ m_xAutoEt->set_visible(bEnable);
+ m_xAutoPb->set_visible(bEnable);
+ m_xAutoType->set_visible(bEnable);
}
-IMPL_LINK_NOARG( OWizTypeSelect, ButtonClickHdl, Button *, void )
+IMPL_LINK_NOARG(OWizTypeSelect, ButtonClickHdl, weld::Button&, void)
{
sal_Int32 nBreakPos;
m_pParent->CheckColumns(nBreakPos);
// fill column list
- sal_uInt32 nRows = m_pAutoEt->GetText().toInt32();
+ sal_uInt32 nRows = m_xAutoEt->get_text().toInt32();
if(m_pParserStream)
{
sal_uInt64 const nTell = m_pParserStream->Tell(); // might change seek position of stream
@@ -358,24 +345,24 @@ IMPL_LINK_NOARG( OWizTypeSelect, ButtonClickHdl, Button *, void )
ActivatePage();
}
-OWizTypeSelectList::~OWizTypeSelectList()
+OWizTypeSelectList::OWizTypeSelectList(std::unique_ptr<weld::TreeView> xControl)
+ : m_xControl(std::move(xControl))
+ , m_bPKey(false)
+ , m_xParentTabPage(nullptr)
{
- disposeOnce();
-}
-
-void OWizTypeSelectList::dispose()
-{
- m_pParentTabPage.clear();
- MultiListBox::dispose();
+ m_xControl->connect_popup_menu(LINK(this, OWizTypeSelectList, CommandHdl));
}
bool OWizTypeSelectList::IsPrimaryKeyAllowed() const
{
- const sal_Int32 nCount = GetSelectedEntryCount();
+ auto aRows = m_xControl->get_selected_rows();
+ std::sort(aRows.begin(), aRows.end());
+
+ const sal_Int32 nCount = aRows.size();
for( sal_Int32 j = 0; m_bPKey && j < nCount; ++j )
{
- OFieldDescription* pField = static_cast<OFieldDescription*>(GetEntryData(GetSelectedEntryPos(j)));
+ OFieldDescription* pField = reinterpret_cast<OFieldDescription*>(m_xControl->get_id(aRows[j]).toInt64());
if(!pField || pField->getTypeInfo()->nSearchType == ColumnSearch::NONE)
return false;
}
@@ -384,96 +371,71 @@ bool OWizTypeSelectList::IsPrimaryKeyAllowed() const
void OWizTypeSelectList::setPrimaryKey(OFieldDescription* _pFieldDescr, sal_uInt16 _nPos, bool _bSet)
{
- OUString sColumnName = GetEntry(_nPos);
- RemoveEntry(_nPos);
_pFieldDescr->SetPrimaryKey(_bSet);
if( _bSet )
- InsertEntry(sColumnName, static_cast<OWizTypeSelect*>(m_pParentTabPage.get())->m_imgPKey,_nPos);
+ {
+ OUString sImage(BMP_PRIMARY_KEY);
+ m_xControl->set_image(_nPos, sImage);
+ }
else if( _pFieldDescr->getTypeInfo()->bNullable )
{
_pFieldDescr->SetControlDefault(Any());
- InsertEntry(sColumnName,_nPos);
+ m_xControl->set_image(_nPos, OUString());
}
- SetEntryData(_nPos,_pFieldDescr);
}
-VCL_BUILDER_FACTORY(OWizTypeSelectList)
-
-bool OWizTypeSelectList::PreNotify( NotifyEvent& rEvt )
+IMPL_LINK(OWizTypeSelectList, CommandHdl, const CommandEvent&, rCEvt, bool)
{
- bool bDone = false;
- switch( rEvt.GetType() )
+ if (rCEvt.GetCommand() != CommandEventId::ContextMenu)
+ return false;
+ if (!IsPrimaryKeyAllowed())
+ return false;
+
+ std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(m_xControl.get(), "dbaccess/ui/keymenu.ui"));
+ auto xContextMenu = xBuilder->weld_menu("menu");
+ // Should primary key checkbox be checked?
+ const sal_Int32 nCount = m_xControl->n_children();
+ bool bCheckOk = false;
+ for(sal_Int32 j = 0 ; j < nCount ; ++j)
{
- case MouseNotifyEvent::MOUSEBUTTONDOWN:
+ OFieldDescription* pFieldDescr = reinterpret_cast<OFieldDescription*>(m_xControl->get_id(j).toInt64());
+ // if at least one of the fields is selected but not in the primary key,
+ // or is in the primary key but not selected, then don't check the
+ // primary key checkbox.
+ if( pFieldDescr && pFieldDescr->IsPrimaryKey() != m_xControl->is_selected(j) )
{
- const MouseEvent* pMEvt = rEvt.GetMouseEvent();
- if(pMEvt->IsRight() && !pMEvt->GetModifier())
- bDone = true;
- }
+ bCheckOk = false;
break;
- case MouseNotifyEvent::COMMAND:
+ }
+ if (!bCheckOk && m_xControl->is_selected(j))
+ bCheckOk = true;
+ }
+
+ if (bCheckOk)
+ xContextMenu->set_active("primarykey", true);
+
+ OString sCommand(xContextMenu->popup_at_rect(m_xControl.get(), tools::Rectangle(rCEvt.GetMousePosPixel(), Size(1,1))));
+ if (sCommand == "primarykey")
+ {
+ for (sal_Int32 j = 0 ; j < nCount; ++j)
{
- if(!IsPrimaryKeyAllowed())
- break;
-
- const CommandEvent* pComEvt = rEvt.GetCommandEvent();
- if(pComEvt->GetCommand() != CommandEventId::ContextMenu)
- break;
- // the place, at which was clicked
- Point ptWhere(0,0);
- if (pComEvt->IsMouseEvent())
- ptWhere = pComEvt->GetMousePosPixel();
-
- VclBuilder aBuilder(nullptr, VclBuilderContainer::getUIRootDir(), "dbaccess/ui/keymenu.ui", "");
- VclPtr<PopupMenu> aContextMenu(aBuilder.get_menu("menu"));
- // Should primary key checkbox be checked?
- const sal_Int32 nCount = GetEntryCount();
- bool bCheckOk = false;
- for(sal_Int32 j = 0 ; j < nCount ; ++j)
+ OFieldDescription* pFieldDescr = reinterpret_cast<OFieldDescription*>(m_xControl->get_id(j).toInt64());
+ if (pFieldDescr)
{
- OFieldDescription* pFieldDescr = static_cast<OFieldDescription*>(GetEntryData(j));
- // if at least one of the fields is selected but not in the primary key,
- // or is in the primary key but not selected, then don't check the
- // primary key checkbox.
- if( pFieldDescr && pFieldDescr->IsPrimaryKey() != IsEntryPosSelected(j) )
+ if(!bCheckOk && m_xControl->is_selected(j))
{
- bCheckOk = false;
- break;
+ setPrimaryKey(pFieldDescr,j,true);
}
- if (!bCheckOk && IsEntryPosSelected(j))
- bCheckOk = true;
- }
-
- if (bCheckOk)
- aContextMenu->CheckItem("primarykey");
-
- if (aContextMenu->Execute(this, ptWhere))
- {
- for (sal_Int32 j = 0 ; j < nCount ; ++j)
+ else
{
- OFieldDescription* pFieldDescr = static_cast<OFieldDescription*>(GetEntryData(j));
- if( pFieldDescr )
- {
- if(!bCheckOk && IsEntryPosSelected(j))
- {
- setPrimaryKey(pFieldDescr,j,true);
- SelectEntryPos(j);
- }
- else
- {
- setPrimaryKey(pFieldDescr,j);
- }
- }
+ setPrimaryKey(pFieldDescr,j);
}
- GetSelectHdl().Call(*this);
}
- bDone = true;
}
- break;
- default:
- break;
+ m_aChangeHdl.Call(*m_xControl);
}
- return bDone || MultiListBox::PreNotify(rEvt);
+
+ return true;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */