20 #undef SC_DLLIMPLEMENTATION
45 :
SfxTabPage(pPage, pController,
"modules/scalc/ui/headerfootercontent.ui",
"HeaderFooterContent", &rCoreAttrs)
47 , m_bDropDownActive(
false)
49 , m_xFtDefinedHF(m_xBuilder->weld_label(!bHeader ?
"labelFT_F_DEFINED" :
"labelFT_H_DEFINED"))
50 , m_xLbDefined(m_xBuilder->weld_combo_box(
"comboLB_DEFINED"))
51 , m_xFtCustomHF(m_xBuilder->weld_label(!bHeader ?
"labelFT_F_CUSTOM" :
"labelFT_H_CUSTOM"))
52 , m_xBtnText(m_xBuilder->weld_button(
"buttonBTN_TEXT"))
53 , m_xBtnFile(m_xBuilder->weld_menu_button(
"buttonBTN_FILE"))
54 , m_xBtnTable(m_xBuilder->weld_button(
"buttonBTN_TABLE"))
55 , m_xBtnPage(m_xBuilder->weld_button(
"buttonBTN_PAGE"))
56 , m_xBtnLastPage(m_xBuilder->weld_button(
"buttonBTN_PAGES"))
57 , m_xBtnDate(m_xBuilder->weld_button(
"buttonBTN_DATE"))
58 , m_xBtnTime(m_xBuilder->weld_button(
"buttonBTN_TIME"))
59 , m_xFtConfidential(m_xBuilder->weld_label(
"labelSTR_HF_CONFIDENTIAL"))
60 , m_xFtPage(m_xBuilder->weld_label(
"labelSTR_PAGE"))
61 , m_xFtOfQuestion(m_xBuilder->weld_label(
"labelSTR_HF_OF_QUESTION"))
62 , m_xFtOf(m_xBuilder->weld_label(
"labelSTR_HF_OF"))
63 , m_xFtNone(m_xBuilder->weld_label(
"labelSTR_HF_NONE_IN_BRACKETS"))
64 , m_xFtCreatedBy(m_xBuilder->weld_label(
"labelSTR_HF_CREATED_BY"))
65 , m_xFtCustomized(m_xBuilder->weld_label(
"labelSTR_HF_CUSTOMIZED"))
66 , m_xLeft(m_xBuilder->weld_widget(
"labelFT_LEFT"))
67 , m_xRight(m_xBuilder->weld_widget(
"labelFT_RIGHT"))
71 , m_xWndLeftWnd(new
weld::CustomWeld(*m_xBuilder,
"textviewWND_LEFT", *m_xWndLeft))
72 , m_xWndCenterWnd(new
weld::CustomWeld(*m_xBuilder,
"textviewWND_CENTER", *m_xWndCenter))
73 , m_xWndRightWnd(new
weld::CustomWeld(*m_xBuilder,
"textviewWND_RIGHT", *m_xWndRight))
74 , m_pEditFocus(nullptr)
102 sal_Int32 nOldLeftAttach =
m_xLeft->get_grid_left_attach();
103 sal_Int32 nOldRightAttach =
m_xRight->get_grid_left_attach();
104 m_xLeft->set_grid_left_attach(nOldRightAttach);
105 m_xRight->set_grid_left_attach(nOldLeftAttach);
133 m_xBtnText->grab_focus();
166 std::unique_ptr<EditTextObject> pLeft =
m_xWndLeft->CreateTextObject();
167 std::unique_ptr<EditTextObject> pCenter =
m_xWndCenter->CreateTextObject();
168 std::unique_ptr<EditTextObject> pRight =
m_xWndRight->CreateTextObject();
174 rCoreSet->
Put( aItem );
183 std::optional<Color> pTxtColour;
184 std::optional<Color> pFldColour;
197 OUString aPageEntry(
m_xFtPage->get_label() +
" " + aPageFieldValue);
200 OUString aPageOfEntry(aPageEntry +
" " +
m_xFtOfQuestion->get_label());
205 OUString aConfidentialEntry(aUserOpt.
GetCompany() +
" " +
m_xFtConfidential->get_label() +
", " + aDateFieldValue +
", " + aPageEntry);
208 OUString aFileNamePageEntry(aFileFieldValue +
", " + aPageEntry);
213 OUString aPageSheetNameEntry(aPageEntry +
", " + aSheetFieldValue);
216 OUString aPageFileNameEntry(aPageEntry +
", " + aFileFieldValue);
219 OUString aPagePathNameEntry(aPageEntry +
", " + aExtFileFieldValue);
222 OUString aUserNameEntry(aUserOpt.
GetFirstName() +
" " + aUserOpt.
GetLastName() +
", " + aPageEntry +
", " + aDateFieldValue);
226 aDateFieldValue +
", " + aPageEntry;
255 std::unique_ptr< EditTextObject > pLeftObj;
256 std::unique_ptr< EditTextObject > pCenterObj;
257 std::unique_ptr< EditTextObject > pRightObj;
260 OUString aCenterEntry;
261 OUString aRightEntry;
263 pLeftObj =
m_xWndLeft->GetEditEngine()->CreateTextObject();
264 pCenterObj =
m_xWndCenter->GetEditEngine()->CreateTextObject();
265 pRightObj =
m_xWndRight->GetEditEngine()->CreateTextObject();
270 for(sal_Int32
i = 0;
i < nCount && !bFound; ++
i)
272 switch(static_cast<ScHFEntryId>(
i))
276 aLeftEntry = pLeftObj->GetText(0);
277 aCenterEntry = pCenterObj->GetText(0);
278 aRightEntry = pRightObj->GetText(0);
279 if(aLeftEntry.isEmpty() && aCenterEntry.isEmpty()
280 && aRightEntry.isEmpty())
290 aLeftEntry = pLeftObj->GetText(0);
291 aRightEntry = pRightObj->GetText(0);
292 if(aLeftEntry.isEmpty() && aRightEntry.isEmpty())
311 aLeftEntry = pLeftObj->GetText(0);
312 aRightEntry = pRightObj->GetText(0);
313 if(aLeftEntry.isEmpty() && aRightEntry.isEmpty())
315 if(pCenterObj->IsFieldObject())
321 if(dynamic_cast<const SvxTableField*>( pField))
337 if(aConfidentialEntry ==
m_xWndLeft->GetEditEngine()->GetText(0))
354 aLeftEntry = pLeftObj->GetText(0);
355 aRightEntry = pRightObj->GetText(0);
357 && aRightEntry.isEmpty())
379 aLeftEntry = pLeftObj->GetText(0);
395 if(aUserNameEntry ==
m_xWndLeft->GetEditEngine()->GetText(0))
410 if(aCreatedByEntry ==
m_xWndLeft->GetEditEngine()->GetText(0))
429 m_xLbDefined->set_active( sal::static_int_cast<sal_uInt16>( eSelectEntry ) );
434 if(!pEngine || !pTextObj)
437 bool bReturn =
false;
441 std::vector<sal_Int32> aPosList;
443 if(aPosList.size() == 2)
445 OUString aPageEntry(
m_xFtPage->get_label() +
" ");
447 aSel.nEndPos = aPageEntry.getLength();
448 if(aPageEntry == pEngine->
GetText(aSel))
450 aSel.nStartPos = aSel.nEndPos;
452 std::unique_ptr< EditTextObject > pPageObj = pEngine->
CreateTextObject(aSel);
453 if(pPageObj && pPageObj->IsFieldObject() )
459 if(dynamic_cast<const SvxPageField*>( pField))
474 bool bReturn =
false;
481 if(dynamic_cast<const SvxDateField*>( pField))
492 bool bReturn =
false;
499 if(dynamic_cast<const SvxExtFileField*>( pField))
509 std::unique_ptr< EditTextObject > pTextObj;
522 OUString aPageEntry(
m_xFtPage->get_label() +
" " );
523 m_xWndCenter->GetEditEngine()->SetTextCurrentDefaults(aPageEntry);
534 OUString aPageEntry(
m_xFtPage->get_label() +
" ");
535 m_xWndCenter->GetEditEngine()->SetTextCurrentDefaults(aPageEntry);
536 aSel.
nEndPos = aPageEntry.getLength();
540 OUString aPageOfEntry(
" " +
m_xFtOf->get_label() +
" ");
544 pTextObj =
m_xWndCenter->GetEditEngine()->CreateTextObject();
562 m_xWndLeft->GetEditEngine()->SetTextCurrentDefaults(aConfidentialEntry);
565 OUString aPageEntry(
m_xFtPage->get_label() +
" ");
566 m_xWndRight->GetEditEngine()->SetTextCurrentDefaults(aPageEntry);
579 OUString aPageEntry(
", " +
m_xFtPage->get_label() +
" ");
584 pTextObj =
m_xWndCenter->GetEditEngine()->CreateTextObject();
594 OUString(), SvxFileType::Var, SvxFileFormat::PathFull ),
EE_FEATURE_FIELD ) );
603 OUString aPageEntry(
m_xFtPage->get_label() +
" " );
604 m_xWndCenter->GetEditEngine()->SetTextCurrentDefaults(aPageEntry);
605 aSel.
nEndPos = aPageEntry.getLength();
609 OUString aCommaSpace(
", ");
613 pTextObj =
m_xWndCenter->GetEditEngine()->CreateTextObject();
624 OUString aPageEntry(
m_xFtPage->get_label() +
" " );
625 m_xWndCenter->GetEditEngine()->SetTextCurrentDefaults(aPageEntry);
626 aSel.
nEndPos = aPageEntry.getLength();
629 OUString aCommaSpace(
", ");
633 pTextObj =
m_xWndCenter->GetEditEngine()->CreateTextObject();
643 OUString aPageEntry(
m_xFtPage->get_label() +
" " );
644 m_xWndCenter->GetEditEngine()->SetTextCurrentDefaults(aPageEntry);
647 OUString(), SvxFileType::Var, SvxFileFormat::PathFull ),
EE_FEATURE_FIELD ) );
657 m_xWndLeft->GetEditEngine()->SetTextCurrentDefaults(aUserNameEntry);
658 OUString aPageEntry(
m_xFtPage->get_label() +
" ");
660 m_xWndCenter->GetEditEngine()->SetTextCurrentDefaults(aPageEntry);
672 m_xWndLeft->GetEditEngine()->SetTextCurrentDefaults(aCreatedByEntry);
674 OUString aPageEntry(
m_xFtPage->get_label() +
" " );
675 m_xWndRight->GetEditEngine()->SetTextCurrentDefaults(aPageEntry);
689 m_xWndLeft->GetEditEngine()->SetTextCurrentDefaults(OUString());
691 m_xWndCenter->GetEditEngine()->SetTextCurrentDefaults(OUString());
693 m_xWndRight->GetEditEngine()->SetTextCurrentDefaults(OUString());
700 m_bDropDownActive = !m_bDropDownActive;
702 osl_getSystemTime(&aNow);
703 m_nTimeToggled = sal_Int64(aNow.Seconds) * 1000000000 + aNow.Nanosec;
711 osl_getSystemTime(&aNow);
712 sal_Int64 nNow = sal_Int64(aNow.Seconds) * 1000000000 + aNow.Nanosec;
715 bool bDiscrepancy = m_xLbDefined->get_popup_shown() != m_bDropDownActive;
717 ListToggleHdl_Impl(*m_xLbDefined);
719 bool bFocusToTarget = !m_xLbDefined->get_popup_shown() && m_nTimeToggled != -1 && (nNow - m_nTimeToggled < 800000000);
720 ProcessDefinedListSel(eSel, !bFocusToTarget);
723 RemoveFromDefinedList();
727 ListToggleHdl_Impl(*m_xLbDefined);
735 if (&rBtn == m_xBtnText.get())
737 m_pEditFocus->SetCharAttributes();
741 if ( &rBtn == m_xBtnPage.get() )
743 else if ( &rBtn == m_xBtnLastPage.get() )
745 else if ( &rBtn == m_xBtnDate.get() )
747 else if ( &rBtn == m_xBtnTime.get() )
749 else if ( &rBtn == m_xBtnTable.get() )
752 InsertToDefinedList();
753 m_pEditFocus->GrabFocus();
761 if (rSelectedId ==
"title")
765 else if (rSelectedId ==
"filename")
768 OUString(), SvxFileType::Var, SvxFileFormat::NameAndExt ),
EE_FEATURE_FIELD ) );
770 else if (rSelectedId ==
"pathname")
773 OUString(), SvxFileType::Var, SvxFileFormat::PathFull ),
EE_FEATURE_FIELD ) );
787 return std::make_unique<ScFirstHeaderEditPage>( pPage, pController, *rCoreSet );
800 return std::make_unique<ScRightHeaderEditPage>( pPage, pController, *rCoreSet );
813 return std::make_unique<ScLeftHeaderEditPage>( pPage, pController, *rCoreSet );
826 return std::make_unique<ScFirstFooterEditPage>( pPage, pController, *rCoreSet );
839 return std::make_unique<ScRightFooterEditPage>( pPage, pController, *rCoreSet );
852 return std::make_unique<ScLeftFooterEditPage>( pPage, pController, *rCoreSet );
#define LINK(Instance, Class, Member)
std::unique_ptr< weld::CustomWeld > m_xWndRightWnd
OUString GetText(LineEnd eEnd=LINEEND_LF) const
std::unique_ptr< weld::Label > m_xFtPage
#define SID_SCATTR_PAGE_HEADERFIRST
std::unique_ptr< weld::Widget > m_xRight
bool IsPageEntry(EditEngine *pEngine, const EditTextObject *pTextObj)
const T * GetItemIfSet(TypedWhichId< T > nWhich, bool bSrchInParent=true) const
virtual const SvxFieldItem * GetField() const =0
#define SID_SCATTR_PAGE_FOOTERRIGHT
std::unique_ptr< weld::MenuButton > m_xBtnFile
const EditTextObject * GetCenterArea() const
std::unique_ptr< weld::ComboBox > m_xLbDefined
ScHFEditPage(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet &rCoreSet, TypedWhichId< ScPageHFItem > nWhich, bool bHeader)
void ProcessDefinedListSel(ScHFEntryId eSel, bool bTravelling)
#define SID_SCATTR_PAGE_HEADERRIGHT
std::unique_ptr< weld::Label > m_xFtConfidential
std::unique_ptr< weld::Button > m_xBtnText
#define SID_SCATTR_PAGE_FOOTERLEFT
void SetLeftArea(const EditTextObject &rNew)
IMPL_LINK_NOARG(ScHFEditPage, ObjectSelectHdl, ScEditWindow &, void)
void SetSelectDefinedList()
constexpr TypedWhichId< SvxFieldItem > EE_FEATURE_FIELD(EE_FEATURE_NOTCONV+1)
void SetCenterArea(const EditTextObject &rNew)
std::unique_ptr< weld::Label > m_xFtNone
std::unique_ptr< weld::Label > m_xFtOfQuestion
virtual void Reset(const SfxItemSet *rCoreSet) override
virtual bool FillItemSet(SfxItemSet *rCoreSet) override
std::unique_ptr< weld::CustomWeld > m_xWndLeftWnd
void InitPreDefinedList()
std::unique_ptr< ScEditWindow > m_xWndCenter
std::unique_ptr< weld::Button > m_xBtnTime
IMPL_LINK(ScHFEditPage, ClickHdl, weld::Button &, rBtn, void)
std::unique_ptr< EditTextObject > CreateTextObject()
ScEditWindow * m_pEditFocus
static bool GetLayoutRTL()
void SetRightArea(const EditTextObject &rNew)
TypedWhichId< ScPageHFItem > nWhich
std::unique_ptr< weld::Button > m_xBtnPage
SfxItemPool * GetPool() const
void InsertToDefinedList()
std::unique_ptr< weld::Label > m_xFtOf
std::unique_ptr< weld::Widget > m_xLeft
OUString GetFirstName() const
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
#define SID_SCATTR_PAGE_HEADERLEFT
std::unique_ptr< weld::Button > m_xBtnTable
OUString GetLastName() const
const EditTextObject * GetRightArea() const
const EditTextObject * GetLeftArea() const
void GetPortions(sal_Int32 nPara, std::vector< sal_Int32 > &rList)
std::unique_ptr< weld::Label > m_xFtCreatedBy
virtual ~ScHFEditPage() override
OUString GetCompany() const
std::unique_ptr< weld::Label > m_xFtCustomized
std::unique_ptr< weld::Button > m_xBtnLastPage
void SetNumType(SvxNumType eNumType)
#define SID_SCATTR_PAGE_FOOTERFIRST
std::unique_ptr< ScEditWindow > m_xWndLeft
std::unique_ptr< weld::Label > m_xFtCustomHF
virtual bool IsFieldObject() const =0
static bool IsDateEntry(const EditTextObject *pTextObj)
std::unique_ptr< weld::Button > m_xBtnDate
std::unique_ptr< weld::Label > m_xFtDefinedHF
void RemoveFromDefinedList()
static bool IsExtFileNameEntry(const EditTextObject *pTextObj)
const SvxFieldData * GetField() const
bool m_bDetectedRangeSegmentation false
std::unique_ptr< ScEditWindow > m_xWndRight