summaryrefslogtreecommitdiff
path: root/sw/source/ui/index/swuiidxmrk.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/ui/index/swuiidxmrk.cxx')
-rw-r--r--sw/source/ui/index/swuiidxmrk.cxx414
1 files changed, 233 insertions, 181 deletions
diff --git a/sw/source/ui/index/swuiidxmrk.cxx b/sw/source/ui/index/swuiidxmrk.cxx
index 7b988a4cbec6..2ca5d673712b 100644
--- a/sw/source/ui/index/swuiidxmrk.cxx
+++ b/sw/source/ui/index/swuiidxmrk.cxx
@@ -31,6 +31,7 @@
#include <com/sun/star/uri/UriReferenceFactory.hpp>
#include <rtl/ustrbuf.hxx>
#include <i18nutil/searchopt.hxx>
+#include <utility>
#include <vcl/svapp.hxx>
#include <vcl/weld.hxx>
#include <sfx2/dispatch.hxx>
@@ -38,6 +39,7 @@
#include <svl/itemset.hxx>
#include <editeng/langitem.hxx>
#include <osl/diagnose.h>
+#include <o3tl/string_view.hxx>
#include <swtypes.hxx>
#include <toxmgr.hxx>
#include <txttxmrk.hxx>
@@ -50,7 +52,6 @@
#include <fldbas.hxx>
#include <strings.hrc>
#include <svl/cjkoptions.hxx>
-#include <comphelper/fileurl.hxx>
#include <sfx2/filedlghelper.hxx>
#include <ndtxt.hxx>
#include <SwRewriter.hxx>
@@ -94,7 +95,7 @@ bool SplitUrlAndPage(const OUString& rText, OUString& rUrl, int& nPageNumber)
return false;
}
- nPageNumber = xUriRef->getFragment().copy(aPagePrefix.getLength()).toInt32();
+ nPageNumber = o3tl::toInt32(xUriRef->getFragment().subView(aPagePrefix.getLength()));
xUriRef->clearFragment();
rUrl = xUriRef->getUriReference();
return true;
@@ -127,9 +128,9 @@ OUString MergeUrlAndPage(const OUString& rUrl, const std::unique_ptr<weld::SpinB
}
// dialog to insert a directory selection
-SwIndexMarkPane::SwIndexMarkPane(const std::shared_ptr<weld::Dialog>& rDialog, weld::Builder& rBuilder, bool bNewDlg,
+SwIndexMarkPane::SwIndexMarkPane(std::shared_ptr<weld::Dialog> xDialog, weld::Builder& rBuilder, bool bNewDlg,
SwWrtShell* pWrtShell)
- : m_xDialog(rDialog)
+ : m_xDialog(std::move(xDialog))
, m_bDel(false)
, m_bNewMark(bNewDlg)
, m_bSelected(false)
@@ -167,10 +168,11 @@ SwIndexMarkPane::SwIndexMarkPane(const std::shared_ptr<weld::Dialog>& rDialog, w
, m_xNextSameBT(rBuilder.weld_button("last"))
, m_xPrevBT(rBuilder.weld_button("previous"))
, m_xNextBT(rBuilder.weld_button("next"))
+ , m_xForSelectedEntry(rBuilder.weld_label("selectedentrytitle"))
{
m_xSyncED->show();
- if (SvtCJKOptions().IsCJKFontEnabled())
+ if (SvtCJKOptions::IsCJKFontEnabled())
{
uno::Reference< uno::XComponentContext > xContext = getProcessComponentContext();
@@ -285,19 +287,20 @@ void SwIndexMarkPane::InitControls()
bool bShow = false;
pMoveMark = &m_pSh->GotoTOXMark( *pMark, TOX_PRV );
- if( pMoveMark != pMark )
+ // tdf#158783 ptr compare OK for SwTOXMark (more below)
+ if (!areSfxPoolItemPtrsEqual( pMoveMark, pMark ))
{
m_pSh->GotoTOXMark( *pMoveMark, TOX_NXT );
bShow = true;
}
- m_xPrevBT->set_sensitive(pMoveMark != pMark);
+ m_xPrevBT->set_sensitive(!areSfxPoolItemPtrsEqual(pMoveMark, pMark));
pMoveMark = &m_pSh->GotoTOXMark( *pMark, TOX_NXT );
- if( pMoveMark != pMark )
+ if (!areSfxPoolItemPtrsEqual( pMoveMark, pMark ))
{
m_pSh->GotoTOXMark( *pMoveMark, TOX_PRV );
bShow = true;
}
- m_xNextBT->set_sensitive(pMoveMark != pMark);
+ m_xNextBT->set_sensitive(!areSfxPoolItemPtrsEqual(pMoveMark, pMark));
if( bShow )
{
m_xPrevBT->show();
@@ -306,19 +309,19 @@ void SwIndexMarkPane::InitControls()
}
pMoveMark = &m_pSh->GotoTOXMark( *pMark, TOX_SAME_PRV );
- if( pMoveMark != pMark )
+ if (!areSfxPoolItemPtrsEqual( pMoveMark, pMark ))
{
m_pSh->GotoTOXMark( *pMoveMark, TOX_SAME_NXT );
bShow = true;
}
- m_xPrevSameBT->set_sensitive(pMoveMark != pMark);
+ m_xPrevSameBT->set_sensitive(!areSfxPoolItemPtrsEqual(pMoveMark, pMark));
pMoveMark = &m_pSh->GotoTOXMark( *pMark, TOX_SAME_NXT );
- if( pMoveMark != pMark )
+ if (!areSfxPoolItemPtrsEqual( pMoveMark, pMark ))
{
m_pSh->GotoTOXMark( *pMoveMark, TOX_SAME_PRV );
bShow = true;
}
- m_xNextSameBT->set_sensitive(pMoveMark != pMark);
+ m_xNextSameBT->set_sensitive(!areSfxPoolItemPtrsEqual(pMoveMark, pMark));
if( bShow )
{
m_xNextSameBT->show();
@@ -344,6 +347,7 @@ void SwIndexMarkPane::InitControls()
//to include all equal entries may only be allowed in the body and even there
//only when a simple selection exists
const FrameTypeFlags nFrameType = m_pSh->GetFrameType(nullptr,true);
+ m_xForSelectedEntry->show();
m_xApplyToAllCB->show();
m_xSearchCaseSensitiveCB->show();
m_xSearchCaseWordOnlyCB->show();
@@ -401,7 +405,7 @@ void SwIndexMarkPane::UpdateLanguageDependenciesForPhoneticReading()
case SvtScriptType::COMPLEX:nWhich = RES_CHRATR_CTL_LANGUAGE; break;
default:nWhich = RES_CHRATR_LANGUAGE; break;
}
- SfxItemSet aLangSet(m_pSh->GetAttrPool(), {{nWhich, nWhich}});
+ SfxItemSet aLangSet(m_pSh->GetAttrPool(), nWhich, nWhich);
m_pSh->GetCurAttr(aLangSet);
m_nLangForPhoneticReading = static_cast<const SvxLanguageItem&>(aLangSet.Get(nWhich)).GetLanguage();
}
@@ -437,6 +441,7 @@ IMPL_LINK_NOARG(SwIndexMarkPane, SyncSelectionHdl, weld::Button&, void)
m_xApplyToAllCB->show();
m_xSearchCaseSensitiveCB->show();
m_xSearchCaseWordOnlyCB->show();
+ m_xDialog->resize_to_request();
m_xApplyToAllCB->set_sensitive(!m_aOrgStr.isEmpty() &&
!(nFrameType & ( FrameTypeFlags::HEADER | FrameTypeFlags::FOOTER | FrameTypeFlags::FLY_ANY )));
SearchTypeHdl(*m_xApplyToAllCB);
@@ -495,7 +500,6 @@ static void lcl_SelectSameStrings(SwWrtShell& rSh, bool bWordOnly, bool bCaseSen
rSh.Push();
i18nutil::SearchOptions2 aSearchOpt(
- SearchAlgorithms_ABSOLUTE,
( bWordOnly ? SearchFlags::NORM_WORD_ONLY : 0 ),
rSh.GetSelText(), OUString(),
GetAppLanguageTag().getLocale(),
@@ -666,7 +670,7 @@ IMPL_LINK_NOARG(SwIndexMarkPane, NewUserIdxHdl, weld::Button&, void)
}
}
-IMPL_LINK( SwIndexMarkPane, SearchTypeHdl, weld::ToggleButton&, rBox, void)
+IMPL_LINK( SwIndexMarkPane, SearchTypeHdl, weld::Toggleable&, rBox, void)
{
const bool bEnable = rBox.get_active() && rBox.get_sensitive();
m_xSearchCaseWordOnlyCB->set_sensitive(bEnable);
@@ -685,8 +689,11 @@ IMPL_LINK_NOARG(SwIndexMarkPane, CloseHdl, weld::Button&, void)
{
if (m_bNewMark)
{
- SfxViewFrame::Current()->GetDispatcher()->Execute(FN_INSERT_IDX_ENTRY_DLG,
- SfxCallMode::ASYNCHRON|SfxCallMode::RECORD);
+ if (SfxViewFrame* pViewFrm = SfxViewFrame::Current())
+ {
+ pViewFrm->GetDispatcher()->Execute(FN_INSERT_IDX_ENTRY_DLG,
+ SfxCallMode::ASYNCHRON|SfxCallMode::RECORD);
+ }
}
else
{
@@ -818,7 +825,8 @@ IMPL_LINK_NOARG(SwIndexMarkPane, DelHdl, weld::Button&, void)
else
{
CloseHdl(*m_xCloseBT);
- SfxViewFrame::Current()->GetBindings().Invalidate(FN_EDIT_IDX_ENTRY_DLG);
+ if (SfxViewFrame* pViewFrm = SfxViewFrame::Current())
+ pViewFrm->GetBindings().Invalidate(FN_EDIT_IDX_ENTRY_DLG);
}
}
@@ -888,25 +896,26 @@ void SwIndexMarkPane::UpdateDialog()
if( m_xPrevBT->get_visible() )
{
const SwTOXMark* pMoveMark = &m_pSh->GotoTOXMark( *pMark, TOX_PRV );
- if( pMoveMark != pMark )
+ // tdf#158783 ptr compare OK for SwTOXMark (more below)
+ if (!areSfxPoolItemPtrsEqual( pMoveMark, pMark ))
m_pSh->GotoTOXMark( *pMoveMark, TOX_NXT );
- m_xPrevBT->set_sensitive( pMoveMark != pMark );
+ m_xPrevBT->set_sensitive( !areSfxPoolItemPtrsEqual(pMoveMark, pMark) );
pMoveMark = &m_pSh->GotoTOXMark( *pMark, TOX_NXT );
- if( pMoveMark != pMark )
+ if (!areSfxPoolItemPtrsEqual( pMoveMark, pMark ))
m_pSh->GotoTOXMark( *pMoveMark, TOX_PRV );
- m_xNextBT->set_sensitive( pMoveMark != pMark );
+ m_xNextBT->set_sensitive( !areSfxPoolItemPtrsEqual(pMoveMark, pMark) );
}
if (m_xPrevSameBT->get_visible())
{
const SwTOXMark* pMoveMark = &m_pSh->GotoTOXMark( *pMark, TOX_SAME_PRV );
- if( pMoveMark != pMark )
+ if (!areSfxPoolItemPtrsEqual( pMoveMark, pMark ))
m_pSh->GotoTOXMark( *pMoveMark, TOX_SAME_NXT );
- m_xPrevSameBT->set_sensitive( pMoveMark != pMark );
+ m_xPrevSameBT->set_sensitive( !areSfxPoolItemPtrsEqual(pMoveMark, pMark) );
pMoveMark = &m_pSh->GotoTOXMark( *pMark, TOX_SAME_NXT );
- if( pMoveMark != pMark )
+ if (!areSfxPoolItemPtrsEqual( pMoveMark, pMark ))
m_pSh->GotoTOXMark( *pMoveMark, TOX_SAME_PRV );
- m_xNextSameBT->set_sensitive( pMoveMark != pMark );
+ m_xNextSameBT->set_sensitive( !areSfxPoolItemPtrsEqual(pMoveMark, pMark) );
}
const bool bEnable = !m_pSh->HasReadonlySel();
@@ -917,6 +926,7 @@ void SwIndexMarkPane::UpdateDialog()
m_xKey1DCB->set_sensitive(bEnable);
m_xKey2DCB->set_sensitive(bEnable);
+ assert(pMark->GetTextTOXMark()->GetTextNode() == m_pSh->GetCursor_()->GetPoint()->GetNode());
m_pSh->SelectTextAttr( RES_TXTATR_TOXMARK, pMark->GetTextTOXMark() );
// we need the point at the start of the attribute
m_pSh->SwapPam();
@@ -1007,7 +1017,8 @@ void SwIndexMarkPane::ReInitDlg(SwWrtShell& rWrtShell, SwTOXMark const * pCurTOX
if(pCurTOXMark)
{
for(sal_uInt16 i = 0; i < m_pTOXMgr->GetTOXMarkCount(); i++)
- if(m_pTOXMgr->GetTOXMark(i) == pCurTOXMark)
+ // tdf#158783 ptr compare OK for SwTOXMark (more below)
+ if (areSfxPoolItemPtrsEqual(m_pTOXMgr->GetTOXMark(i), pCurTOXMark))
{
m_pTOXMgr->SetCurTOXMark(i);
break;
@@ -1066,9 +1077,9 @@ class SwCreateAuthEntryDlg_Impl : public weld::GenericDialogController
{
std::vector<std::unique_ptr<weld::Builder>> m_aBuilders;
- Link<weld::Entry&,bool> aShortNameCheckLink;
+ Link<weld::Entry&,bool> m_aShortNameCheckLink;
- SwWrtShell& rWrtSh;
+ SwWrtShell& m_rWrtSh;
bool m_bNewEntryMode;
bool m_bNameAllowed;
@@ -1076,22 +1087,25 @@ class SwCreateAuthEntryDlg_Impl : public weld::GenericDialogController
std::vector<std::unique_ptr<weld::Container>> m_aOrigContainers;
std::vector<std::unique_ptr<weld::Label>> m_aFixedTexts;
std::unique_ptr<weld::Box> m_pBoxes[AUTH_FIELD_END];
- std::unique_ptr<weld::Entry> pEdits[AUTH_FIELD_END];
+ std::unique_ptr<weld::Entry> m_pEdits[AUTH_FIELD_END];
std::unique_ptr<weld::Button> m_xOKBT;
std::unique_ptr<weld::Container> m_xBox;
std::unique_ptr<weld::Container> m_xLeft;
std::unique_ptr<weld::Container> m_xRight;
std::unique_ptr<weld::ComboBox> m_xTypeListBox;
std::unique_ptr<weld::ComboBox> m_xIdentifierBox;
- std::unique_ptr<weld::Button> m_xBrowseButton;
- std::unique_ptr<weld::CheckButton> m_xPageCB;
- std::unique_ptr<weld::SpinButton> m_xPageSB;
+ std::unique_ptr<weld::Button> m_xLocalBrowseButton;
+ std::unique_ptr<weld::CheckButton> m_xLocalPageCB;
+ std::unique_ptr<weld::SpinButton> m_xLocalPageSB;
+ std::unique_ptr<weld::ComboBox> m_xTargetTypeListBox;
+ weld::Entry* m_pTargetURLField;
DECL_LINK(IdentifierHdl, weld::ComboBox&, void);
DECL_LINK(ShortNameHdl, weld::Entry&, void);
DECL_LINK(EnableHdl, weld::ComboBox&, void);
DECL_LINK(BrowseHdl, weld::Button&, void);
- DECL_LINK(PageNumHdl, weld::ToggleButton&, void);
+ DECL_LINK(PageNumHdl, weld::Toggleable&, void);
+ DECL_LINK(TargetTypeHdl, weld::ComboBox&, void);
public:
SwCreateAuthEntryDlg_Impl(weld::Window* pParent,
@@ -1102,14 +1116,14 @@ public:
OUString GetEntryText(ToxAuthorityField eField) const;
- void SetCheckNameHdl(const Link<weld::Entry&,bool>& rLink) {aShortNameCheckLink = rLink;}
+ void SetCheckNameHdl(const Link<weld::Entry&,bool>& rLink) {m_aShortNameCheckLink = rLink;}
};
struct TextInfo
{
ToxAuthorityField nToxField;
- const char* pHelpId;
+ const OUString pHelpId;
};
}
@@ -1142,6 +1156,9 @@ const TextInfo aTextInfoArr[] =
{AUTH_FIELD_ANNOTE, HID_AUTH_FIELD_ANNOTE },
{AUTH_FIELD_NOTE, HID_AUTH_FIELD_NOTE },
{AUTH_FIELD_URL, HID_AUTH_FIELD_URL },
+ {AUTH_FIELD_TARGET_TYPE, HID_AUTH_FIELD_TARGET_TYPE },
+ {AUTH_FIELD_TARGET_URL, HID_AUTH_FIELD_TARGET_URL },
+ {AUTH_FIELD_LOCAL_URL, HID_AUTH_FIELD_LOCAL_URL },
{AUTH_FIELD_CUSTOM1, HID_AUTH_FIELD_CUSTOM1 },
{AUTH_FIELD_CUSTOM2, HID_AUTH_FIELD_CUSTOM2 },
{AUTH_FIELD_CUSTOM3, HID_AUTH_FIELD_CUSTOM3 },
@@ -1163,29 +1180,29 @@ static OUString lcl_FindColumnEntry(const uno::Sequence<beans::PropertyValue>& r
return OUString();
}
-bool SwAuthorMarkPane::bIsFromComponent = true;
+bool SwAuthorMarkPane::s_bIsFromComponent = true;
SwAuthorMarkPane::SwAuthorMarkPane(weld::DialogController &rDialog, weld::Builder& rBuilder, bool bNewDlg)
: m_rDialog(rDialog)
- , bNewEntry(bNewDlg)
- , bBibAccessInitialized(false)
- , pSh(nullptr)
+ , m_bNewEntry(bNewDlg)
+ , m_bBibAccessInitialized(false)
+ , m_pSh(nullptr)
, m_xFromComponentRB(rBuilder.weld_radio_button("frombibliography"))
, m_xFromDocContentRB(rBuilder.weld_radio_button("fromdocument"))
, m_xAuthorFI(rBuilder.weld_label("author"))
, m_xTitleFI(rBuilder.weld_label("title"))
, m_xEntryED(rBuilder.weld_entry("entryed"))
, m_xEntryLB(rBuilder.weld_combo_box("entrylb"))
- , m_xActionBT(rBuilder.weld_button(bNewEntry ? OString("insert") : OString("modify")))
+ , m_xActionBT(rBuilder.weld_button(m_bNewEntry ? OUString("insert") : OUString("modify")))
, m_xCloseBT(rBuilder.weld_button("close"))
, m_xCreateEntryPB(rBuilder.weld_button("new"))
, m_xEditEntryPB(rBuilder.weld_button("edit"))
{
m_xActionBT->show();
- m_xFromComponentRB->set_visible(bNewEntry);
- m_xFromDocContentRB->set_visible(bNewEntry);
- m_xFromComponentRB->set_active(bIsFromComponent);
- m_xFromDocContentRB->set_active(!bIsFromComponent);
+ m_xFromComponentRB->set_visible(m_bNewEntry);
+ m_xFromDocContentRB->set_visible(m_bNewEntry);
+ m_xFromComponentRB->set_active(s_bIsFromComponent);
+ m_xFromDocContentRB->set_active(!s_bIsFromComponent);
m_xActionBT->connect_clicked(LINK(this,SwAuthorMarkPane, InsertHdl));
m_xCloseBT->connect_clicked(LINK(this,SwAuthorMarkPane, CloseHdl));
@@ -1196,11 +1213,13 @@ SwAuthorMarkPane::SwAuthorMarkPane(weld::DialogController &rDialog, weld::Builde
m_xEntryED->connect_changed(LINK(this,SwAuthorMarkPane, EditModifyHdl));
m_rDialog.set_title(SwResId(
- bNewEntry ? STR_AUTHMRK_INSERT : STR_AUTHMRK_EDIT));
+ m_bNewEntry ? STR_AUTHMRK_INSERT : STR_AUTHMRK_EDIT));
- m_xEntryED->set_visible(!bNewEntry);
- m_xEntryLB->set_visible(bNewEntry);
- if (bNewEntry)
+ m_xEntryED->set_visible(!m_bNewEntry);
+ m_xEntryLB->set_visible(m_bNewEntry);
+ // tdf#90641 - sort bibliography entries by identifier
+ m_xEntryLB->make_sorted();
+ if (m_bNewEntry)
{
m_xEntryLB->connect_changed(LINK(this, SwAuthorMarkPane, CompEntryHdl));
}
@@ -1208,16 +1227,19 @@ SwAuthorMarkPane::SwAuthorMarkPane(weld::DialogController &rDialog, weld::Builde
void SwAuthorMarkPane::ReInitDlg(SwWrtShell& rWrtShell)
{
- pSh = &rWrtShell;
+ m_pSh = &rWrtShell;
InitControls();
}
IMPL_LINK_NOARG(SwAuthorMarkPane, CloseHdl, weld::Button&, void)
{
- if(bNewEntry)
+ if(m_bNewEntry)
{
- SfxViewFrame::Current()->GetDispatcher()->Execute(FN_INSERT_AUTH_ENTRY_DLG,
+ if (SfxViewFrame* pViewFrm = SfxViewFrame::Current())
+ {
+ pViewFrm->GetDispatcher()->Execute(FN_INSERT_AUTH_ENTRY_DLG,
SfxCallMode::ASYNCHRON|SfxCallMode::RECORD);
+ }
}
else
{
@@ -1228,13 +1250,13 @@ IMPL_LINK_NOARG(SwAuthorMarkPane, CloseHdl, weld::Button&, void)
IMPL_LINK( SwAuthorMarkPane, CompEntryHdl, weld::ComboBox&, rBox, void)
{
const OUString sEntry(rBox.get_active_text());
- if(bIsFromComponent)
+ if(s_bIsFromComponent)
{
- if(xBibAccess.is() && !sEntry.isEmpty())
+ if(m_xBibAccess.is() && !sEntry.isEmpty())
{
- if(xBibAccess->hasByName(sEntry))
+ if(m_xBibAccess->hasByName(sEntry))
{
- uno::Any aEntry(xBibAccess->getByName(sEntry));
+ uno::Any aEntry(m_xBibAccess->getByName(sEntry));
uno::Sequence<beans::PropertyValue> aFieldProps;
if(aEntry >>= aFieldProps)
{
@@ -1252,7 +1274,7 @@ IMPL_LINK( SwAuthorMarkPane, CompEntryHdl, weld::ComboBox&, rBox, void)
if(!sEntry.isEmpty())
{
const SwAuthorityFieldType* pFType = static_cast<const SwAuthorityFieldType*>(
- pSh->GetFieldType(SwFieldIds::TableOfAuthorities, OUString()));
+ m_pSh->GetFieldType(SwFieldIds::TableOfAuthorities, OUString()));
const SwAuthEntry* pEntry = pFType ? pFType->GetEntryByIdentifier(sEntry) : nullptr;
for(int i = 0; i < AUTH_FIELD_END; i++)
m_sFields[i] = pEntry ?
@@ -1271,14 +1293,14 @@ IMPL_LINK( SwAuthorMarkPane, CompEntryHdl, weld::ComboBox&, rBox, void)
IMPL_LINK_NOARG(SwAuthorMarkPane, InsertHdl, weld::Button&, void)
{
//insert or update the SwAuthorityField...
- if(pSh)
+ if(m_pSh)
{
bool bDifferent = false;
OSL_ENSURE(!m_sFields[AUTH_FIELD_IDENTIFIER].isEmpty() , "No Id is set!");
OSL_ENSURE(!m_sFields[AUTH_FIELD_AUTHORITY_TYPE].isEmpty() , "No authority type is set!");
//check if the entry already exists with different content
const SwAuthorityFieldType* pFType = static_cast<const SwAuthorityFieldType*>(
- pSh->GetFieldType(SwFieldIds::TableOfAuthorities, OUString()));
+ m_pSh->GetFieldType(SwFieldIds::TableOfAuthorities, OUString()));
const SwAuthEntry* pEntry = pFType ?
pFType->GetEntryByIdentifier( m_sFields[AUTH_FIELD_IDENTIFIER])
: nullptr;
@@ -1296,20 +1318,20 @@ IMPL_LINK_NOARG(SwAuthorMarkPane, InsertHdl, weld::Button&, void)
}
}
- SwFieldMgr aMgr(pSh);
+ SwFieldMgr aMgr(m_pSh);
OUStringBuffer sFields;
for(OUString & s : m_sFields)
{
- sFields.append(s).append(TOX_STYLE_DELIMITER);
+ sFields.append(s + OUStringChar(TOX_STYLE_DELIMITER));
}
- if(bNewEntry)
+ if(m_bNewEntry)
{
if(bDifferent)
{
rtl::Reference<SwAuthEntry> xNewData(new SwAuthEntry);
for(int i = 0; i < AUTH_FIELD_END; i++)
xNewData->SetAuthorField(static_cast<ToxAuthorityField>(i), m_sFields[i]);
- pSh->ChangeAuthorityData(xNewData.get());
+ m_pSh->ChangeAuthorityData(xNewData.get());
}
SwInsertField_Data aData(SwFieldTypesEnum::Authority, 0, sFields.makeStringAndClear(), OUString(), 0 );
aMgr.InsertField( aData );
@@ -1319,7 +1341,7 @@ IMPL_LINK_NOARG(SwAuthorMarkPane, InsertHdl, weld::Button&, void)
aMgr.UpdateCurField(0, sFields.makeStringAndClear(), OUString());
}
}
- if(!bNewEntry)
+ if(!m_bNewEntry)
CloseHdl(*m_xCloseBT);
}
@@ -1331,8 +1353,8 @@ IMPL_LINK(SwAuthorMarkPane, CreateEntryHdl, weld::Button&, rButton, void)
m_sCreatedEntry[i] = bCreate ? OUString() : m_sFields[i];
SwCreateAuthEntryDlg_Impl aDlg(m_rDialog.getDialog(),
bCreate ? m_sCreatedEntry : m_sFields,
- *pSh, bNewEntry, bCreate);
- if(bNewEntry)
+ *m_pSh, m_bNewEntry, bCreate);
+ if(m_bNewEntry)
{
aDlg.SetCheckNameHdl(LINK(this, SwAuthorMarkPane, IsEntryAllowedHdl));
}
@@ -1348,7 +1370,7 @@ IMPL_LINK(SwAuthorMarkPane, CreateEntryHdl, weld::Button&, rButton, void)
m_sFields[i] = aDlg.GetEntryText(static_cast<ToxAuthorityField>(i));
m_sCreatedEntry[i] = m_sFields[i];
}
- if(bNewEntry && !m_xFromDocContentRB->get_active())
+ if(m_bNewEntry && !m_xFromDocContentRB->get_active())
{
m_xFromDocContentRB->set_active(true);
ChangeSourceHdl(*m_xFromDocContentRB);
@@ -1365,7 +1387,7 @@ IMPL_LINK(SwAuthorMarkPane, CreateEntryHdl, weld::Button&, rButton, void)
m_xTitleFI->set_label(m_sFields[AUTH_FIELD_TITLE]);
m_xActionBT->set_sensitive(true);
- if (!bNewEntry)
+ if (!m_bNewEntry)
{
// When in edit mode, automatically apply the changed entry to update the field in the doc
// model.
@@ -1373,19 +1395,19 @@ IMPL_LINK(SwAuthorMarkPane, CreateEntryHdl, weld::Button&, rButton, void)
}
}
-IMPL_LINK_NOARG(SwAuthorMarkPane, ChangeSourceHdl, weld::ToggleButton&, void)
+IMPL_LINK_NOARG(SwAuthorMarkPane, ChangeSourceHdl, weld::Toggleable&, void)
{
bool bFromComp = m_xFromComponentRB->get_active();
- bIsFromComponent = bFromComp;
- m_xCreateEntryPB->set_sensitive(!bIsFromComponent);
+ s_bIsFromComponent = bFromComp;
+ m_xCreateEntryPB->set_sensitive(!s_bIsFromComponent);
m_xEntryLB->clear();
- if(bIsFromComponent)
+ if(s_bIsFromComponent)
{
- if(!bBibAccessInitialized)
+ if(!m_bBibAccessInitialized)
{
uno::Reference< uno::XComponentContext > xContext = getProcessComponentContext();
- xBibAccess = frame::Bibliography::create( xContext );
- uno::Reference< beans::XPropertySet > xPropSet(xBibAccess, uno::UNO_QUERY);
+ m_xBibAccess = frame::Bibliography::create( xContext );
+ uno::Reference< beans::XPropertySet > xPropSet(m_xBibAccess, uno::UNO_QUERY);
OUString uPropName("BibliographyDataFieldNames");
if(xPropSet.is() && xPropSet->getPropertySetInfo()->hasPropertyByName(uPropName))
{
@@ -1393,7 +1415,7 @@ IMPL_LINK_NOARG(SwAuthorMarkPane, ChangeSourceHdl, weld::ToggleButton&, void)
uno::Sequence<beans::PropertyValue> aSeq;
if( aNames >>= aSeq)
{
- for(const beans::PropertyValue& rProp : std::as_const(aSeq))
+ for (const beans::PropertyValue& rProp : aSeq)
{
sal_Int16 nField = 0;
rProp.Value >>= nField;
@@ -1402,11 +1424,11 @@ IMPL_LINK_NOARG(SwAuthorMarkPane, ChangeSourceHdl, weld::ToggleButton&, void)
}
}
}
- bBibAccessInitialized = true;
+ m_bBibAccessInitialized = true;
}
- if(xBibAccess.is())
+ if(m_xBibAccess.is())
{
- const uno::Sequence<OUString> aIdentifiers = xBibAccess->getElementNames();
+ const uno::Sequence<OUString> aIdentifiers = m_xBibAccess->getElementNames();
for(const OUString& rName : aIdentifiers)
m_xEntryLB->append_text(rName);
}
@@ -1414,7 +1436,7 @@ IMPL_LINK_NOARG(SwAuthorMarkPane, ChangeSourceHdl, weld::ToggleButton&, void)
else
{
const SwAuthorityFieldType* pFType = static_cast<const SwAuthorityFieldType*>(
- pSh->GetFieldType(SwFieldIds::TableOfAuthorities, OUString()));
+ m_pSh->GetFieldType(SwFieldIds::TableOfAuthorities, OUString()));
if(pFType)
{
std::vector<OUString> aIds;
@@ -1450,15 +1472,15 @@ IMPL_LINK(SwAuthorMarkPane, IsEntryAllowedHdl, weld::Entry&, rEdit, bool)
{
if (m_xEntryLB->find_text(sEntry) != -1)
return false;
- else if(bIsFromComponent)
+ else if(s_bIsFromComponent)
{
const SwAuthorityFieldType* pFType = static_cast<const SwAuthorityFieldType*>(
- pSh->GetFieldType(SwFieldIds::TableOfAuthorities, OUString()));
+ m_pSh->GetFieldType(SwFieldIds::TableOfAuthorities, OUString()));
bAllowed = !pFType || !pFType->GetEntryByIdentifier(sEntry);
}
else
{
- bAllowed = !xBibAccess.is() || !xBibAccess->hasByName(sEntry);
+ bAllowed = !m_xBibAccess.is() || !m_xBibAccess->hasByName(sEntry);
}
}
return bAllowed;
@@ -1472,15 +1494,15 @@ IMPL_LINK(SwAuthorMarkPane, IsEditAllowedHdl, weld::Entry&, rEdit, bool)
{
if (m_xEntryLB->find_text(sEntry) != -1)
return false;
- else if(bIsFromComponent)
+ else if(s_bIsFromComponent)
{
const SwAuthorityFieldType* pFType = static_cast<const SwAuthorityFieldType*>(
- pSh->GetFieldType(SwFieldIds::TableOfAuthorities, OUString()));
+ m_pSh->GetFieldType(SwFieldIds::TableOfAuthorities, OUString()));
bAllowed = !pFType || !pFType->GetEntryByIdentifier(sEntry);
}
else
{
- bAllowed = !xBibAccess.is() || !xBibAccess->hasByName(sEntry);
+ bAllowed = !m_xBibAccess.is() || !m_xBibAccess->hasByName(sEntry);
}
}
return bAllowed;
@@ -1488,10 +1510,10 @@ IMPL_LINK(SwAuthorMarkPane, IsEditAllowedHdl, weld::Entry&, rEdit, bool)
void SwAuthorMarkPane::InitControls()
{
- OSL_ENSURE(pSh, "no shell?");
- SwField* pField = pSh->GetCurField();
- OSL_ENSURE(bNewEntry || pField, "no current marker");
- if(bNewEntry)
+ OSL_ENSURE(m_pSh, "no shell?");
+ SwField* pField = m_pSh->GetCurField();
+ OSL_ENSURE(m_bNewEntry || pField, "no current marker");
+ if(m_bNewEntry)
{
ChangeSourceHdl(m_xFromComponentRB->get_active() ? *m_xFromComponentRB : *m_xFromDocContentRB);
m_xCreateEntryPB->set_sensitive(!m_xFromComponentRB->get_active());
@@ -1499,7 +1521,7 @@ void SwAuthorMarkPane::InitControls()
for(int i = 0; i < AUTH_FIELD_END; i++)
m_sFields[i] = m_sCreatedEntry[i];
}
- if(bNewEntry || !pField || pField->GetTyp()->Which() != SwFieldIds::TableOfAuthorities)
+ if(m_bNewEntry || !pField || pField->GetTyp()->Which() != SwFieldIds::TableOfAuthorities)
return;
const SwAuthEntry* pEntry = static_cast<SwAuthorityField*>(pField)->GetAuthEntry();
@@ -1517,12 +1539,12 @@ void SwAuthorMarkPane::InitControls()
void SwAuthorMarkPane::Activate()
{
- m_xActionBT->set_sensitive(!pSh->HasReadonlySel());
+ m_xActionBT->set_sensitive(!m_pSh->HasReadonlySel());
}
namespace
{
- const char* STR_AUTH_FIELD_ARY[] =
+ const TranslateId STR_AUTH_FIELD_ARY[] =
{
STR_AUTH_FIELD_IDENTIFIER,
STR_AUTH_FIELD_AUTHORITY_TYPE,
@@ -1554,7 +1576,10 @@ namespace
STR_AUTH_FIELD_CUSTOM3,
STR_AUTH_FIELD_CUSTOM4,
STR_AUTH_FIELD_CUSTOM5,
- STR_AUTH_FIELD_ISBN
+ STR_AUTH_FIELD_ISBN,
+ STR_AUTH_FIELD_LOCAL_URL,
+ STR_AUTH_FIELD_TARGET_TYPE,
+ STR_AUTH_FIELD_TARGET_URL,
};
}
@@ -1564,13 +1589,14 @@ SwCreateAuthEntryDlg_Impl::SwCreateAuthEntryDlg_Impl(weld::Window* pParent,
bool bNewEntry,
bool bCreate)
: GenericDialogController(pParent, "modules/swriter/ui/createauthorentry.ui", "CreateAuthorEntryDialog")
- , rWrtSh(rSh)
+ , m_rWrtSh(rSh)
, m_bNewEntryMode(bNewEntry)
, m_bNameAllowed(true)
, m_xOKBT(m_xBuilder->weld_button("ok"))
, m_xBox(m_xBuilder->weld_container("box"))
, m_xLeft(m_xBuilder->weld_container("leftgrid"))
, m_xRight(m_xBuilder->weld_container("rightgrid"))
+ , m_pTargetURLField(nullptr)
{
bool bLeft = true;
sal_Int32 nLeftRow(0), nRightRow(0);
@@ -1598,28 +1624,14 @@ SwCreateAuthEntryDlg_Impl::SwCreateAuthEntryDlg_Impl(weld::Window* pParent,
else
m_aOrigContainers.back()->move(m_xTypeListBox.get(), m_xRight.get());
- for (int j = 0; j <= AUTH_TYPE_END; j++)
+ for (int j = 0; j < AUTH_TYPE_END; j++)
{
- if (j < AUTH_TYPE_END)
- {
- m_xTypeListBox->append_text(
- SwAuthorityFieldType::GetAuthTypeName(static_cast<ToxAuthorityType>(j)));
- }
- else
- {
- // UI-only type: local file.
- m_xTypeListBox->append_text(SwResId(STR_AUTH_TYPE_LOCAL_FILE));
- }
+ m_xTypeListBox->append_text(
+ SwAuthorityFieldType::GetAuthTypeName(static_cast<ToxAuthorityType>(j)));
}
if(!pFields[aCurInfo.nToxField].isEmpty())
{
- int nPos = pFields[aCurInfo.nToxField].toInt32();
- if (nPos == AUTH_TYPE_WWW && comphelper::isFileUrl(pFields[AUTH_FIELD_URL]))
- {
- // Map file URL to local file.
- nPos = AUTH_TYPE_END;
- }
- m_xTypeListBox->set_active(nPos);
+ m_xTypeListBox->set_active(pFields[aCurInfo.nToxField].toInt32());
}
m_xTypeListBox->set_grid_left_attach(1);
m_xTypeListBox->set_grid_top_attach(bLeft ? nLeftRow : nRightRow);
@@ -1657,10 +1669,44 @@ SwCreateAuthEntryDlg_Impl::SwCreateAuthEntryDlg_Impl(weld::Window* pParent,
m_xIdentifierBox->set_help_id(aCurInfo.pHelpId);
m_aFixedTexts.back()->set_mnemonic_widget(m_xIdentifierBox.get());
}
+ else if (AUTH_FIELD_TARGET_TYPE == aCurInfo.nToxField)
+ {
+ m_xTargetTypeListBox = m_aBuilders.back()->weld_combo_box("listbox-target-type");
+ if (bLeft)
+ m_aOrigContainers.back()->move(m_xTargetTypeListBox.get(), m_xLeft.get());
+ else
+ m_aOrigContainers.back()->move(m_xTargetTypeListBox.get(), m_xRight.get());
+
+ if(!pFields[aCurInfo.nToxField].isEmpty())
+ {
+ m_xTargetTypeListBox->set_active(pFields[aCurInfo.nToxField].toInt32());
+ }
+ else if(m_bNewEntryMode)
+ {
+ // For new documents, set value to "BibliographyTableRow"
+ m_xTargetTypeListBox->set_active(SwAuthorityField::TargetType::BibliographyTableRow);
+ }
+ m_xTargetTypeListBox->set_grid_left_attach(1);
+ m_xTargetTypeListBox->set_grid_top_attach(bLeft ? nLeftRow : nRightRow);
+ m_xTargetTypeListBox->set_hexpand(true);
+ m_xTargetTypeListBox->show();
+ m_xTargetTypeListBox->connect_changed(LINK(this, SwCreateAuthEntryDlg_Impl, TargetTypeHdl));
+ m_xTargetTypeListBox->set_help_id(aCurInfo.pHelpId);
+ m_aFixedTexts.back()->set_mnemonic_widget(m_xTargetTypeListBox.get());
+ }
else
{
m_pBoxes[nIndex] = m_aBuilders.back()->weld_box("vbox");
- pEdits[nIndex] = m_aBuilders.back()->weld_entry("entry");
+ m_pEdits[nIndex] = m_aBuilders.back()->weld_entry("entry");
+
+ if (AUTH_FIELD_TARGET_URL == aCurInfo.nToxField)
+ {
+ m_pTargetURLField = m_pEdits[nIndex].get();
+ assert(m_xTargetTypeListBox);
+ m_pTargetURLField->set_sensitive(
+ m_xTargetTypeListBox->get_active() == SwAuthorityField::TargetType::UseTargetURL);
+ }
+
if (bLeft)
m_aOrigContainers.back()->move(m_pBoxes[nIndex].get(), m_xLeft.get());
else
@@ -1669,63 +1715,61 @@ SwCreateAuthEntryDlg_Impl::SwCreateAuthEntryDlg_Impl(weld::Window* pParent,
m_pBoxes[nIndex]->set_grid_left_attach(1);
m_pBoxes[nIndex]->set_grid_top_attach(bLeft ? nLeftRow : nRightRow);
m_pBoxes[nIndex]->set_hexpand(true);
- if (aCurInfo.nToxField == AUTH_FIELD_URL)
+ if (aCurInfo.nToxField == AUTH_FIELD_LOCAL_URL)
{
- m_xBrowseButton = m_aBuilders.back()->weld_button("browse");
- m_xBrowseButton->connect_clicked(LINK(this, SwCreateAuthEntryDlg_Impl, BrowseHdl));
- m_xPageCB = m_aBuilders.back()->weld_check_button("pagecb");
+ m_xLocalBrowseButton = m_aBuilders.back()->weld_button("browse");
+ m_xLocalBrowseButton->connect_clicked(
+ LINK(this, SwCreateAuthEntryDlg_Impl, BrowseHdl));
+ m_xLocalPageCB = m_aBuilders.back()->weld_check_button("pagecb");
// Distinguish different instances of this for ui-testing.
- m_xPageCB->set_buildable_name(m_xPageCB->get_buildable_name() + "-visible");
- m_xPageSB = m_aBuilders.back()->weld_spin_button("pagesb");
+ m_xLocalPageCB->set_buildable_name(m_xLocalPageCB->get_buildable_name()
+ + "-local-visible");
+ m_xLocalPageSB = m_aBuilders.back()->weld_spin_button("pagesb");
}
// Now that both pEdits[nIndex] and m_xPageSB is initialized, set their values.
OUString aText = pFields[aCurInfo.nToxField];
- if (aCurInfo.nToxField != AUTH_FIELD_URL)
- {
- pEdits[nIndex]->set_text(aText);
- }
- else
+ if (aCurInfo.nToxField == AUTH_FIELD_LOCAL_URL)
{
OUString aUrl;
int nPageNumber;
if (SplitUrlAndPage(aText, aUrl, nPageNumber))
{
- pEdits[nIndex]->set_text(aUrl);
- m_xPageCB->set_active(true);
- m_xPageSB->set_sensitive(true);
- m_xPageSB->set_value(nPageNumber);
+ m_pEdits[nIndex]->set_text(aUrl);
+ m_xLocalPageCB->set_active(true);
+ m_xLocalPageSB->set_sensitive(true);
+ m_xLocalPageSB->set_value(nPageNumber);
}
else
{
- pEdits[nIndex]->set_text(aText);
+ m_pEdits[nIndex]->set_text(aText);
}
}
- pEdits[nIndex]->show();
- pEdits[nIndex]->set_help_id(aCurInfo.pHelpId);
+ else
+ {
+ m_pEdits[nIndex]->set_text(aText);
+ }
+ m_pEdits[nIndex]->show();
+ m_pEdits[nIndex]->set_help_id(aCurInfo.pHelpId);
if(AUTH_FIELD_IDENTIFIER == aCurInfo.nToxField)
{
- pEdits[nIndex]->connect_changed(LINK(this, SwCreateAuthEntryDlg_Impl, ShortNameHdl));
+ m_pEdits[nIndex]->connect_changed(LINK(this, SwCreateAuthEntryDlg_Impl, ShortNameHdl));
m_bNameAllowed = !pFields[nIndex].isEmpty();
if(!bCreate)
{
m_aFixedTexts.back()->set_sensitive(false);
- pEdits[nIndex]->set_sensitive(false);
+ m_pEdits[nIndex]->set_sensitive(false);
}
}
- else if (aCurInfo.nToxField == AUTH_FIELD_URL)
+ else if (aCurInfo.nToxField == AUTH_FIELD_LOCAL_URL)
{
- if (comphelper::isFileUrl(pFields[aCurInfo.nToxField]))
- {
- m_xBrowseButton->show();
- }
- m_xPageCB->show();
- m_xPageCB->connect_toggled(LINK(this, SwCreateAuthEntryDlg_Impl, PageNumHdl));
- m_xPageSB->show();
+ m_xLocalPageCB->show();
+ m_xLocalPageCB->connect_toggled(LINK(this, SwCreateAuthEntryDlg_Impl, PageNumHdl));
+ m_xLocalPageSB->show();
}
- m_aFixedTexts.back()->set_mnemonic_widget(pEdits[nIndex].get());
+ m_aFixedTexts.back()->set_mnemonic_widget(m_pEdits[nIndex].get());
}
if(bLeft)
++nLeftRow;
@@ -1733,6 +1777,7 @@ SwCreateAuthEntryDlg_Impl::SwCreateAuthEntryDlg_Impl(weld::Window* pParent,
++nRightRow;
bLeft = !bLeft;
}
+ assert(m_xTypeListBox && "this will exist after the loop");
EnableHdl(*m_xTypeListBox);
}
@@ -1740,34 +1785,34 @@ OUString SwCreateAuthEntryDlg_Impl::GetEntryText(ToxAuthorityField eField) cons
{
if( AUTH_FIELD_AUTHORITY_TYPE == eField )
{
- OSL_ENSURE(m_xTypeListBox, "No ListBox");
- int nActive = m_xTypeListBox->get_active();
- if (nActive == AUTH_TYPE_END)
- {
- // Map local file to file URL.
- nActive = AUTH_TYPE_WWW;
- }
- return OUString::number(nActive);
+ assert(m_xTypeListBox && "No ListBox");
+ return OUString::number(m_xTypeListBox->get_active());
}
if( AUTH_FIELD_IDENTIFIER == eField && !m_bNewEntryMode)
{
- OSL_ENSURE(m_xIdentifierBox, "No ComboBox");
+ assert(m_xIdentifierBox && "No ComboBox");
return m_xIdentifierBox->get_active_text();
}
+ if (AUTH_FIELD_TARGET_TYPE == eField)
+ {
+ assert(m_xTargetTypeListBox && "No TargetType ListBox");
+ return OUString::number(m_xTargetTypeListBox->get_active());
+ }
+
for(int nIndex = 0; nIndex < AUTH_FIELD_END; nIndex++)
{
const TextInfo aCurInfo = aTextInfoArr[nIndex];
if(aCurInfo.nToxField == eField)
{
- if (aCurInfo.nToxField != AUTH_FIELD_URL)
+ if (aCurInfo.nToxField == AUTH_FIELD_LOCAL_URL)
{
- return pEdits[nIndex]->get_text();
+ return MergeUrlAndPage(m_pEdits[nIndex]->get_text(), m_xLocalPageSB);
}
else
{
- return MergeUrlAndPage(pEdits[nIndex]->get_text(), m_xPageSB);
+ return m_pEdits[nIndex]->get_text();
}
}
}
@@ -1778,7 +1823,7 @@ OUString SwCreateAuthEntryDlg_Impl::GetEntryText(ToxAuthorityField eField) cons
IMPL_LINK(SwCreateAuthEntryDlg_Impl, IdentifierHdl, weld::ComboBox&, rBox, void)
{
const SwAuthorityFieldType* pFType = static_cast<const SwAuthorityFieldType*>(
- rWrtSh.GetFieldType(SwFieldIds::TableOfAuthorities, OUString()));
+ m_rWrtSh.GetFieldType(SwFieldIds::TableOfAuthorities, OUString()));
if(!pFType)
return;
@@ -1796,16 +1841,16 @@ IMPL_LINK(SwCreateAuthEntryDlg_Impl, IdentifierHdl, weld::ComboBox&, rBox, void)
m_xTypeListBox->set_active_text(
pEntry->GetAuthorField(aCurInfo.nToxField));
else
- pEdits[i]->set_text(
+ m_pEdits[i]->set_text(
pEntry->GetAuthorField(aCurInfo.nToxField));
}
}
IMPL_LINK(SwCreateAuthEntryDlg_Impl, ShortNameHdl, weld::Entry&, rEdit, void)
{
- if (aShortNameCheckLink.IsSet())
+ if (m_aShortNameCheckLink.IsSet())
{
- bool bEnable = aShortNameCheckLink.Call(rEdit);
+ bool bEnable = m_aShortNameCheckLink.Call(rEdit);
m_bNameAllowed |= bEnable;
m_xOKBT->set_sensitive(m_xTypeListBox->get_active() != -1 && bEnable);
}
@@ -1814,29 +1859,36 @@ IMPL_LINK(SwCreateAuthEntryDlg_Impl, ShortNameHdl, weld::Entry&, rEdit, void)
IMPL_LINK(SwCreateAuthEntryDlg_Impl, EnableHdl, weld::ComboBox&, rBox, void)
{
m_xOKBT->set_sensitive(m_bNameAllowed && rBox.get_active() != -1);
-
- int nType = m_xTypeListBox->get_active();
- if (nType == AUTH_TYPE_END && !m_xBrowseButton->is_visible())
- {
- // File URL -> show the browse button.
- m_xBrowseButton->show();
- }
- else if (nType != AUTH_TYPE_END && m_xBrowseButton->is_visible())
- {
- // Not a file URL -> hide the browse button.
- m_xBrowseButton->hide();
- }
+ m_xLocalBrowseButton->show();
};
-IMPL_LINK_NOARG(SwCreateAuthEntryDlg_Impl, BrowseHdl, weld::Button&, void)
+IMPL_LINK(SwCreateAuthEntryDlg_Impl, TargetTypeHdl, weld::ComboBox&, rBox, void)
+{
+ assert(m_pTargetURLField);
+ m_pTargetURLField->set_sensitive(rBox.get_active() == SwAuthorityField::TargetType::UseTargetURL);
+}
+
+IMPL_LINK(SwCreateAuthEntryDlg_Impl, BrowseHdl, weld::Button&, rButton, void)
{
sfx2::FileDialogHelper aFileDlg(ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE,
FileDialogFlags::NONE, getDialog());
- OUString aPath = GetEntryText(AUTH_FIELD_URL);
+ OUString aPath;
+ if (&rButton == m_xLocalBrowseButton.get())
+ {
+ aPath = GetEntryText(AUTH_FIELD_LOCAL_URL);
+ }
if (!aPath.isEmpty())
{
aFileDlg.SetDisplayDirectory(aPath);
}
+ else
+ {
+ OUString aBaseURL = m_rWrtSh.GetDoc()->GetDocShell()->getDocumentBaseURL();
+ if (!aBaseURL.isEmpty())
+ {
+ aFileDlg.SetDisplayDirectory(aBaseURL);
+ }
+ }
if (aFileDlg.Execute() != ERRCODE_NONE)
{
@@ -1848,24 +1900,24 @@ IMPL_LINK_NOARG(SwCreateAuthEntryDlg_Impl, BrowseHdl, weld::Button&, void)
for (int nIndex = 0; nIndex < AUTH_FIELD_END; nIndex++)
{
const TextInfo& rCurInfo = aTextInfoArr[nIndex];
- if (rCurInfo.nToxField == AUTH_FIELD_URL)
+ if (rCurInfo.nToxField == AUTH_FIELD_LOCAL_URL && &rButton == m_xLocalBrowseButton.get())
{
- pEdits[nIndex]->set_text(aPath);
+ m_pEdits[nIndex]->set_text(aPath);
break;
}
}
};
-IMPL_LINK_NOARG(SwCreateAuthEntryDlg_Impl, PageNumHdl, weld::ToggleButton&, void)
+IMPL_LINK(SwCreateAuthEntryDlg_Impl, PageNumHdl, weld::Toggleable&, rPageCB, void)
{
- if (m_xPageCB->get_active())
+ if (rPageCB.get_active())
{
- m_xPageSB->set_sensitive(true);
- m_xPageSB->set_value(1);
+ m_xLocalPageSB->set_sensitive(true);
+ m_xLocalPageSB->set_value(1);
}
else
{
- m_xPageSB->set_sensitive(false);
+ m_xLocalPageSB->set_sensitive(false);
}
}