tdf#158243 - UI: Part 44 - Unify lockdown behavior of Options dialog

for Draw - View Page.

Change-Id: If06945482e5a441903d6eb44b66242bd8806bcd6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159995
Tested-by: Jenkins
Reviewed-by: Balazs Varga <balazs.varga.extern@allotropia.de>
diff --git a/sd/source/ui/app/sdmod2.cxx b/sd/source/ui/app/sdmod2.cxx
index cccf4251..8a6424d 100644
--- a/sd/source/ui/app/sdmod2.cxx
+++ b/sd/source/ui/app/sdmod2.cxx
@@ -736,7 +736,14 @@ std::unique_ptr<SfxTabPage> SdModule::CreateTabPage( sal_uInt16 nId, weld::Conta
        {
            ::CreateTabPage fnCreatePage = pFact->GetSdOptionsContentsTabPageCreatorFunc();
            if( fnCreatePage )
            {
                xRet = (*fnCreatePage)( pPage, pController, &rSet );
                if (SID_SD_TP_CONTENTS == nId)
                    aSet.Put(SfxUInt32Item(SID_SDMODE_FLAG, SD_DRAW_MODE));
                else
                    aSet.Put(SfxUInt32Item(SID_SDMODE_FLAG, SD_IMPRESS_MODE));
                xRet->PageCreated(aSet);
            }
        }
        break;
        case SID_SD_TP_SNAP:
diff --git a/sd/source/ui/dlg/tpoption.cxx b/sd/source/ui/dlg/tpoption.cxx
index f6f5b4f..8c5416c 100644
--- a/sd/source/ui/dlg/tpoption.cxx
+++ b/sd/source/ui/dlg/tpoption.cxx
@@ -148,6 +148,7 @@ std::unique_ptr<SfxTabPage> SdTpOptionsSnap::Create( weld::Container* pPage, wel
\************************************************************************/
SdTpOptionsContents::SdTpOptionsContents(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rInAttrs)
    : SfxTabPage(pPage, pController, "modules/simpress/ui/sdviewpage.ui", "SdViewPage", &rInAttrs)
    , m_bDrawMode(false)
    , m_xCbxRuler(m_xBuilder->weld_check_button("ruler"))
    , m_xCbxRulerImg(m_xBuilder->weld_widget("lockruler"))
    , m_xCbxDragStripes(m_xBuilder->weld_check_button("dragstripes"))
@@ -216,19 +217,23 @@ void SdTpOptionsContents::Reset( const SfxItemSet* rAttrs )
    m_xCbxDragStripes->set_active( aLayoutItem.GetOptionsLayout().IsDragStripes() );
    m_xCbxHandlesBezier->set_active( aLayoutItem.GetOptionsLayout().IsHandlesBezier() );

    bool bReadOnly = officecfg::Office::Impress::Layout::Display::Ruler::isReadOnly();
    bool bReadOnly = m_bDrawMode ? officecfg::Office::Draw::Layout::Display::Ruler::isReadOnly() :
        officecfg::Office::Impress::Layout::Display::Ruler::isReadOnly();
    m_xCbxRuler->set_sensitive(!bReadOnly);
    m_xCbxRulerImg->set_visible(bReadOnly);

    bReadOnly = officecfg::Office::Impress::Layout::Display::Contour::isReadOnly();
    bReadOnly = m_bDrawMode ? officecfg::Office::Draw::Layout::Display::Contour::isReadOnly() :
        officecfg::Office::Impress::Layout::Display::Contour::isReadOnly();
    m_xCbxMoveOutline->set_sensitive(!bReadOnly);
    m_xCbxMoveOutlineImg->set_visible(bReadOnly);

    bReadOnly = officecfg::Office::Impress::Layout::Display::Guide::isReadOnly();
    bReadOnly = m_bDrawMode ? officecfg::Office::Draw::Layout::Display::Guide::isReadOnly() :
        officecfg::Office::Impress::Layout::Display::Guide::isReadOnly();
    m_xCbxDragStripes->set_sensitive(!bReadOnly);
    m_xCbxDragStripesImg->set_visible(bReadOnly);

    bReadOnly = officecfg::Office::Impress::Layout::Display::Bezier::isReadOnly();
    bReadOnly = m_bDrawMode ? officecfg::Office::Draw::Layout::Display::Bezier::isReadOnly() :
        officecfg::Office::Impress::Layout::Display::Bezier::isReadOnly();
    m_xCbxHandlesBezier->set_sensitive(!bReadOnly);
    m_xCbxHandlesBezierImg->set_visible(bReadOnly);

@@ -244,6 +249,17 @@ std::unique_ptr<SfxTabPage> SdTpOptionsContents::Create( weld::Container* pPage,
    return std::make_unique<SdTpOptionsContents>(pPage, pController, *rAttrs);
}

void SdTpOptionsContents::PageCreated( const SfxAllItemSet& aSet )
{
    const SfxUInt32Item* pFlagItem = aSet.GetItem<SfxUInt32Item>(SID_SDMODE_FLAG, false);
    if (pFlagItem)
    {
        sal_uInt32 nFlags = pFlagItem->GetValue();
        if ((nFlags & SD_DRAW_MODE) == SD_DRAW_MODE)
            SetDrawMode();
    }
}

/*************************************************************************
|*
|*  TabPage to adjust the misc options
diff --git a/sd/source/ui/inc/tpoption.hxx b/sd/source/ui/inc/tpoption.hxx
index e53c552..e1065eb 100644
--- a/sd/source/ui/inc/tpoption.hxx
+++ b/sd/source/ui/inc/tpoption.hxx
@@ -42,6 +42,7 @@ public:
class SdTpOptionsContents final : public SfxTabPage
{
private:
    bool m_bDrawMode;
    std::unique_ptr<weld::CheckButton> m_xCbxRuler;
    std::unique_ptr<weld::Widget> m_xCbxRulerImg;
    std::unique_ptr<weld::CheckButton> m_xCbxDragStripes;
@@ -60,6 +61,10 @@ public:

    virtual bool FillItemSet( SfxItemSet* ) override;
    virtual void Reset( const SfxItemSet * ) override;

    virtual void PageCreated(const SfxAllItemSet& aSet) override;

    void SetDrawMode() { m_bDrawMode = true; }
};

/**