24 #include <osl/file.hxx>
30 #include <sfx2/sfxsids.hrc>
37 #include <strings.hrc>
38 #include <dialmgr.hxx>
39 #include <bitmaps.hlst>
45 OUString CreateUiNameFromURL(
const OUString& aStrURL )
50 switch(aURLObj.GetProtocol())
52 case INetProtocol::File:
55 case INetProtocol::Ftp :
68 if(aStrUiURL.isEmpty())
94 if( aDataHelper.
GetString( SotClipboardFormatId::STRING, aString ) )
107 const OUString& rUIXMLDescription,
111 , mxCbbFrame(xBuilder->weld_combo_box(
"frame"))
112 , mxLbForm(xBuilder->weld_combo_box(
"form"))
113 , mxEdIndication(xBuilder->weld_entry(
"indication"))
114 , mxEdText(xBuilder->weld_entry(
"name"))
115 , mxBtScript(xBuilder->weld_button(
"script"))
116 , mxFormLabel(xBuilder->weld_label(
"form_label"))
117 , mxFrameLabel(xBuilder->weld_label(
"frame_label"))
118 , mbIsCloseDisabled(
false )
120 , mbStdControlsInit(
false )
121 , maTimer(
"cui SvxHyperlinkTabPageBase maTimer")
151 size_t nCount = aList.size();
153 for ( i = 0; i < nCount; i++ )
160 mxBtScript->set_from_icon_name(RID_SVXBMP_SCRIPT);
185 mxMarkWnd = std::make_shared<SvxHlinkDlgMarkWnd>(pDialog,
this);
188 Point aDlgPos(pDialog->get_position());
189 Size aDlgSize(pDialog->get_size());
195 Size aExtraWndSize(
mxMarkWnd->getDialog()->get_preferred_size());
198 if( aDlgPos.X()+(1.05*aDlgSize.Width())+aExtraWndSize.Width() > aScreen.Right() )
200 if( aDlgPos.X() - ( 0.05*aDlgSize.Width() ) - aExtraWndSize.Width() < 0 )
218 mxMarkWnd->getDialog()->set_size_request(aExtraWndSize.Width(), aDlgSize.Height());
243 OUString aStrFormText =
CuiResId( RID_CUISTR_HYPERDLG_FROM_TEXT );
245 OUString aStrFormButton =
CuiResId( RID_CUISTR_HYPERDLG_FORM_BUTTON );
250 mxLbForm->append_text( aStrFormText );
256 mxLbForm->append_text( aStrFormText );
257 mxLbForm->append_text( aStrFormButton );
328 if (!pHyperlinkItem || pHyperlinkItem->
GetMacroEvents() == HyperDialogEvent::NONE)
339 aItemSet.
Put ( aItem );
341 DisableClose(
true );
348 if ( pHyperlinkItem->
GetMacroEvents() & HyperDialogEvent::MouseOverObject )
350 SvMacroItemId::OnMouseOver );
351 if ( pHyperlinkItem->
GetMacroEvents() & HyperDialogEvent::MouseClickObject )
352 pMacroPage->AddEvent(
CuiResId(RID_CUISTR_HYPDLG_MACROACT2),
353 SvMacroItemId::OnClick);
354 if ( pHyperlinkItem->
GetMacroEvents() & HyperDialogEvent::MouseOutObject )
355 pMacroPage->AddEvent(
CuiResId(RID_CUISTR_HYPDLG_MACROACT3),
356 SvMacroItemId::OnMouseOut);
358 short nRet = aDlg.run();
359 DisableClose(
false );
362 const SfxItemSet* pOutSet = aDlg.GetOutputItemSet();
364 if( SfxItemState::SET == pOutSet->
GetItemState( SID_ATTR_MACROITEM,
false, &pItem ))
366 pHyperlinkItem->
SetMacroTable( static_cast<const SvxMacroItem*>(pItem)->GetMacroTable() );
398 if ( aProtocol == INetProtocol::NotValid )
423 OUString& aStrIntName, OUString& aStrFrame,
438 eMode = static_cast<SvxLinkInsertMode>( sal_uInt16(eMode) |
HLINK_HTMLMODE );
449 rItemSet.
GetItem (SID_HYPERLINK_GETLINK);
451 if ( pHyperlinkItem )
467 OUString aStrURL, aStrName, aStrIntName, aStrFrame;
471 if ( aStrName.isEmpty() )
472 aStrName = CreateUiNameFromURL(aStrURL);
477 SvxHyperlinkItem aItem( SID_HYPERLINK_SETLINK, aStrName, aStrURL, aStrFrame,
478 aStrIntName, eMode, nEvents, pTable );
490 rItemSet.
GetItem (SID_HYPERLINK_GETLINK);
492 if ( pHyperlinkItem )
510 OUString aStrURL, aStrName, aStrIntName, aStrFrame;
520 SvxHyperlinkItem aItem( SID_HYPERLINK_GETLINK, aStrName, aStrURL, aStrFrame,
521 aStrIntName, eMode, nEvents, pTable );
525 return DeactivateRC::LeavePage;
constexpr OUStringLiteral INET_FTP_SCHEME
#define LINK(Instance, Class, Member)
virtual void GetCurentItemData(OUString &rStrURL, OUString &aStrName, OUString &aStrIntName, OUString &aStrFrame, SvxLinkInsertMode &eMode)=0
virtual bool ShouldOpenMarkWnd()
std::unique_ptr< weld::ComboBox > mxCbbFrame
const css::datatransfer::dnd::DropTargetDropEvent maDropEvent
virtual bool QueryClose() override
static void GetDefaultTargetList(TargetList &)
const OUString & GetTargetFrame() const
virtual bool FillItemSet(SfxItemSet *) override
virtual void SetInitFocus()
virtual sal_Int8 AcceptDrop(const AcceptDropEvent &rEvt) override
virtual DeactivateRC DeactivatePage(SfxItemSet *pSet) override
void SetMacroTable(const SvxMacroTableDtor &rTbl)
SfxApplication * SfxGetpApp()
std::unique_ptr< weld::Label > mxFormLabel
static bool runAsync(const std::shared_ptr< DialogController > &rController, const std::function< void(sal_Int32)> &)
virtual void SetMarkWndShouldOpen(bool bOpen)
SfxFrame & GetFrame() const
const SvxMacroTableDtor * GetMacroTable() const
void GetDataFromCommonFields(OUString &aStrName, OUString &aStrIntName, OUString &aStrFrame, SvxLinkInsertMode &eMode)
std::shared_ptr< SvxHlinkDlgMarkWnd > mxMarkWnd
std::unique_ptr< weld::Entry > mxEdText
std::unique_ptr< weld::Entry > mxEdIndication
void set_entry_text(const OUString &rStr)
std::unique_ptr< weld::Container > xContainer
constexpr OUStringLiteral INET_HTTP_SCHEME
virtual sal_Int8 ExecuteDrop(const ExecuteDropEvent &rEvt) override
OUString CuiResId(TranslateId aKey)
SvxHyperURLBox(std::unique_ptr< weld::ComboBox > xWidget)
HyperDialogEvent GetMacroEvents() const
const OUString & GetURL() const
TopLevelWindowLocker maBusy
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
void DisableClose(bool _bDisable)
SfxDispatcher * GetDispatcher() const
void MoveToExtraWnd(Point aNewPos)
SvxHyperlinkTabPageBase(weld::Container *pParent, SvxHpLinkDlg *pDlg, const OUString &rUIXMLDescription, const OString &rID, const SfxItemSet *pItemSet)
constexpr OUStringLiteral INET_HTTPS_SCHEME
void AddEvent(const OUString &rEventName, SvMacroItemId nEventId)
IMPL_LINK_NOARG(SvxHyperlinkTabPageBase, ClickScriptHdl_Impl, weld::Button &, void)
static OUString GetScheme(INetProtocol eTheScheme)
void FillStandardDlgFields(const SvxHyperlinkItem *pHyperlinkItem)
bool GetString(SotClipboardFormatId nFormat, OUString &rStr) const
virtual void SetMarkStr(const OUString &aStrMark)
const SfxItemSet & GetItemSet() const
std::unique_ptr< weld::ComboBox > mxLbForm
SfxDispatcher * GetDispatcher() const
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
HyperDialogEvent GetMacroEvents() const
virtual void ActivatePage(const SfxItemSet &rItemSet) override
void SetMacroTable(const SvxMacroTableDtor &rTbl)
INetProtocol GetProtocol() const
SfxViewFrame * GetFrame() const
virtual ~SvxHyperlinkTabPageBase() override
bool IsDropFormatSupported(SotClipboardFormatId nFormat) const
const OUString & GetName() const
SvxLinkInsertMode GetInsertMode() const
SvxMacroTableDtor * GetMacroTable()
virtual void Reset(const SfxItemSet &) override
bool IsMarkWndVisible() const
std::unique_ptr< weld::Button > mxBtScript
std::unique_ptr< weld::Label > mxFrameLabel
const SfxPoolItem * GetItem(sal_uInt16 nWhich, bool bSearchInParent=true) const
::std::vector< OUString > TargetList
static OUString GetSchemeFromURL(const OUString &rStrURL)
virtual void FillDlgFields(const OUString &rStrURL)=0
void incBusy(const weld::Widget *pIgnore)
void SetSmartProtocol(INetProtocol eProt)
bool m_bDetectedRangeSegmentation false
constexpr OUStringLiteral INET_MAILTO_SCHEME
const OUString & GetIntName() const