summaryrefslogtreecommitdiff
path: root/dbaccess
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-07-21 15:35:37 +0100
committerCaolán McNamara <caolanm@redhat.com>2020-07-21 18:16:59 +0200
commitcec40ab4562e552bcc92c33e2fc3af760881086d (patch)
treed6a4f1b3835e93c835fcfdf016f63aab4a5f35f1 /dbaccess
parent17ab82e522faad75bdbcea1ab9a16cc9953c9d79 (diff)
weld OSQLNameEdit
Change-Id: I79c79e17c28c8dd22dbb0f41ded30488c4924ce8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99153 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'dbaccess')
-rw-r--r--dbaccess/source/ui/control/SqlNameEdit.cxx39
-rw-r--r--dbaccess/source/ui/inc/SqlNameEdit.hxx24
-rw-r--r--dbaccess/source/ui/tabledesign/TEditControl.cxx45
-rw-r--r--dbaccess/source/ui/tabledesign/TEditControl.hxx4
4 files changed, 67 insertions, 45 deletions
diff --git a/dbaccess/source/ui/control/SqlNameEdit.cxx b/dbaccess/source/ui/control/SqlNameEdit.cxx
index c24e9fd3cfaf..bd67d97deea6 100644
--- a/dbaccess/source/ui/control/SqlNameEdit.cxx
+++ b/dbaccess/source/ui/control/SqlNameEdit.cxx
@@ -51,33 +51,34 @@ namespace dbaui
}
return bCorrected;
}
- void OSQLNameEdit::Modify()
+
+ namespace
{
- OUString sCorrected;
- if ( checkString( GetText(),sCorrected ) )
+ void checkName(OSQLNameChecker& rChecker, weld::Entry& rEntry)
{
- Selection aSel = GetSelection();
- aSel.setMax( aSel.getMin() );
- SetText( sCorrected, aSel );
+ OUString sCorrected;
+ if (rChecker.checkString(rEntry.get_text(), sCorrected))
+ {
+ int nStartPos, nEndPos;
+ rEntry.get_selection_bounds(nStartPos, nEndPos);
+ int nMin = std::min(nStartPos, nEndPos);
+ rEntry.set_text(sCorrected);
+ rEntry.select_region(nMin, nMin);
- SaveValue();
+ rEntry.save_value();
+ }
}
- Edit::Modify();
}
- IMPL_LINK_NOARG(OSQLNameEntry, ModifyHdl, weld::Entry&, void)
+ IMPL_LINK(OSQLNameEditControl, ModifyHdl, weld::Entry&, rEntry, void)
{
- OUString sCorrected;
- if (checkString(m_xEntry->get_text(), sCorrected))
- {
- int nStartPos, nEndPos;
- m_xEntry->get_selection_bounds(nStartPos, nEndPos);
- int nMin = std::min(nStartPos, nEndPos);
- m_xEntry->set_text(sCorrected);
- m_xEntry->select_region(nMin, nMin);
+ checkName(*this, rEntry);
+ m_ChainChangedHdl.Call(rEntry);
+ }
- m_xEntry->save_value();
- }
+ IMPL_LINK(OSQLNameEntry, ModifyHdl, weld::Entry&, rEntry, void)
+ {
+ checkName(*this, rEntry);
}
}
diff --git a/dbaccess/source/ui/inc/SqlNameEdit.hxx b/dbaccess/source/ui/inc/SqlNameEdit.hxx
index 7a6e43c15b32..609382af40fa 100644
--- a/dbaccess/source/ui/inc/SqlNameEdit.hxx
+++ b/dbaccess/source/ui/inc/SqlNameEdit.hxx
@@ -19,7 +19,7 @@
#ifndef INCLUDED_DBACCESS_SOURCE_UI_INC_SQLNAMEEDIT_HXX
#define INCLUDED_DBACCESS_SOURCE_UI_INC_SQLNAMEEDIT_HXX
-#include <vcl/edit.hxx>
+#include <svtools/editbrowsebox.hxx>
#include <vcl/weld.hxx>
namespace dbaui
@@ -46,18 +46,26 @@ namespace dbaui
bool checkString(const OUString& _sToCheck,OUString& _rsCorrected);
};
- class OSQLNameEdit : public Edit
- ,public OSQLNameChecker
+ class OSQLNameEditControl : public svt::EditControl
+ , public OSQLNameChecker
{
public:
- OSQLNameEdit(vcl::Window* _pParent,WinBits nStyle = WB_BORDER, const OUString& _rAllowedChars = OUString())
- : Edit(_pParent,nStyle)
- , OSQLNameChecker(_rAllowedChars)
+ OSQLNameEditControl(BrowserDataWin* pParent, const OUString& rAllowedChars)
+ : svt::EditControl(pParent)
+ , OSQLNameChecker(rAllowedChars)
+ {
+ m_xWidget->connect_changed(LINK(this, OSQLNameEditControl, ModifyHdl));
+ }
+
+ virtual void connect_changed(const Link<weld::Entry&, void>& rLink) override
{
+ m_ChainChangedHdl = rLink;
}
- // Edit overrides
- virtual void Modify() override;
+ private:
+ DECL_LINK(ModifyHdl, weld::Entry&, void);
+
+ Link<weld::Entry&,void> m_ChainChangedHdl;
};
class OWidgetBase
diff --git a/dbaccess/source/ui/tabledesign/TEditControl.cxx b/dbaccess/source/ui/tabledesign/TEditControl.cxx
index ee2cb2c1fdf2..5073a4667717 100644
--- a/dbaccess/source/ui/tabledesign/TEditControl.cxx
+++ b/dbaccess/source/ui/tabledesign/TEditControl.cxx
@@ -183,7 +183,7 @@ void OTableEditorCtrl::SetReadOnly( bool bRead )
void OTableEditorCtrl::InitCellController()
{
// Cell Field name
- sal_Int32 nMaxTextLen = EDIT_NOLIMIT;
+ sal_Int32 nMaxTextLen = 0;
OUString sExtraNameChars;
Reference<XConnection> xCon;
try
@@ -191,10 +191,9 @@ void OTableEditorCtrl::InitCellController()
xCon = GetView()->getController().getConnection();
Reference< XDatabaseMetaData> xMetaData = xCon.is() ? xCon->getMetaData() : Reference< XDatabaseMetaData>();
+ // length 0 is treated by Entry::set_max_length as unlimited
nMaxTextLen = xMetaData.is() ? xMetaData->getMaxColumnNameLength() : 0;
- if( nMaxTextLen == 0 )
- nMaxTextLen = EDIT_NOLIMIT;
sExtraNameChars = xMetaData.is() ? xMetaData->getExtraNameCharacters() : OUString();
}
@@ -203,8 +202,8 @@ void OTableEditorCtrl::InitCellController()
OSL_FAIL("getMaxColumnNameLength");
}
- pNameCell = VclPtr<OSQLNameEdit>::Create(&GetDataWindow(), WB_LEFT, sExtraNameChars);
- pNameCell->SetMaxTextLen( nMaxTextLen );
+ pNameCell = VclPtr<OSQLNameEditControl>::Create(&GetDataWindow(), sExtraNameChars);
+ pNameCell->get_widget().set_max_length(nMaxTextLen);
pNameCell->setCheck( isSQL92CheckEnabled(xCon) );
// Cell type
@@ -237,7 +236,7 @@ void OTableEditorCtrl::InitCellController()
void OTableEditorCtrl::ClearModified()
{
- pNameCell->ClearModifyFlag();
+ pNameCell->get_widget().save_value();
pDescrCell->get_widget().save_value();
pHelpTextCell->get_widget().save_value();
pTypeCell->get_widget().save_value();
@@ -355,11 +354,15 @@ void OTableEditorCtrl::InitController(CellControllerRef&, long nRow, sal_uInt16
switch (nColumnId)
{
case FIELD_NAME:
+ {
if( pActFieldDescr )
aInitString = pActFieldDescr->GetName();
- pNameCell->SetText( aInitString );
- pNameCell->SaveValue();
+
+ weld::Entry& rEntry = pNameCell->get_widget();
+ rEntry.set_text(aInitString);
+ rEntry.save_value();
break;
+ }
case FIELD_TYPE:
{
if ( pActFieldDescr && pActFieldDescr->getTypeInfo() )
@@ -502,7 +505,8 @@ void OTableEditorCtrl::SaveData(long nRow, sal_uInt16 nColId)
case FIELD_NAME:
{
// If there is no name, do nothing
- const OUString aName(pNameCell->GetText());
+ weld::Entry& rEntry = pNameCell->get_widget();
+ const OUString aName(rEntry.get_text());
if( aName.isEmpty() )
{
@@ -518,7 +522,7 @@ void OTableEditorCtrl::SaveData(long nRow, sal_uInt16 nColId)
}
if(pActFieldDescr)
pActFieldDescr->SetName( aName );
- pNameCell->ClearModifyFlag();
+ rEntry.save_value();
break;
}
@@ -1097,8 +1101,11 @@ bool OTableEditorCtrl::IsCutAllowed()
break;
}
case NAME:
- bIsCutAllowed = !pNameCell->GetSelected().isEmpty();
+ {
+ weld::Entry& rEntry = pNameCell->get_widget();
+ bIsCutAllowed = rEntry.get_selection_bounds(nStartPos, nEndPos);
break;
+ }
case ROW:
bIsCutAllowed = IsCopyAllowed();
break;
@@ -1126,7 +1133,10 @@ bool OTableEditorCtrl::IsCopyAllowed()
bIsCopyAllowed = rEntry.get_selection_bounds(nStartPos, nEndPos);
}
else if(m_eChildFocus == NAME)
- bIsCopyAllowed = !pNameCell->GetSelected().isEmpty();
+ {
+ weld::Entry& rEntry = pNameCell->get_widget();
+ bIsCopyAllowed = rEntry.get_selection_bounds(nStartPos, nEndPos);
+ }
else if(m_eChildFocus == ROW)
{
Reference<XPropertySet> xTable = GetView()->getController().getTable();
@@ -1174,7 +1184,7 @@ void OTableEditorCtrl::cut()
if(GetView()->getController().isAlterAllowed())
{
SaveData(-1,FIELD_NAME);
- pNameCell->Cut();
+ pNameCell->get_widget().cut_clipboard();
CellModified(-1,FIELD_NAME);
}
}
@@ -1206,10 +1216,13 @@ void OTableEditorCtrl::cut()
void OTableEditorCtrl::copy()
{
- if(GetSelectRowCount())
+ if (GetSelectRowCount())
OTableRowView::copy();
else if(m_eChildFocus == NAME)
- pNameCell->Copy();
+ {
+ weld::Entry& rEntry = pNameCell->get_widget();
+ rEntry.copy_clipboard();
+ }
else if(HELPTEXT == m_eChildFocus )
{
weld::Entry& rEntry = pHelpTextCell->get_widget();
@@ -1235,7 +1248,7 @@ void OTableEditorCtrl::paste()
{
if(GetView()->getController().isAlterAllowed())
{
- pNameCell->Paste();
+ pNameCell->get_widget().paste_clipboard();
CellModified();
}
}
diff --git a/dbaccess/source/ui/tabledesign/TEditControl.hxx b/dbaccess/source/ui/tabledesign/TEditControl.hxx
index 69039f3d92f4..b216cb518d55 100644
--- a/dbaccess/source/ui/tabledesign/TEditControl.hxx
+++ b/dbaccess/source/ui/tabledesign/TEditControl.hxx
@@ -29,7 +29,7 @@ class Edit;
class SfxUndoManager;
namespace dbaui
{
- class OSQLNameEdit;
+ class OSQLNameEditControl;
class OTableEditorCtrl : public OTableRowView
{
@@ -44,7 +44,7 @@ namespace dbaui
std::vector< std::shared_ptr<OTableRow> >* m_pRowList;
- VclPtr<OSQLNameEdit> pNameCell;
+ VclPtr<OSQLNameEditControl> pNameCell;
VclPtr<::svt::ListBoxControl> pTypeCell;
VclPtr<::svt::EditControl> pHelpTextCell;
VclPtr<::svt::EditControl> pDescrCell;