tdf#157838 - UI: Part 4 - Unify lockdown behavior of Options dialog
for Print Page.
Change-Id: I724dcbaf8e3ed479aaf053965d2d0e64381e53fe
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158269
Tested-by: Jenkins
Reviewed-by: Balazs Varga <balazs.varga.extern@allotropia.de>
diff --git a/include/sfx2/printopt.hxx b/include/sfx2/printopt.hxx
index a251616..e01991d 100644
--- a/include/sfx2/printopt.hxx
+++ b/include/sfx2/printopt.hxx
@@ -33,22 +33,33 @@ private:
std::unique_ptr<weld::RadioButton> m_xPrinterOutputRB;
std::unique_ptr<weld::RadioButton> m_xPrintFileOutputRB;
std::unique_ptr<weld::CheckButton> m_xReduceTransparencyCB;
std::unique_ptr<weld::Widget> m_xReduceTransparencyImg;
std::unique_ptr<weld::RadioButton> m_xReduceTransparencyAutoRB;
std::unique_ptr<weld::RadioButton> m_xReduceTransparencyNoneRB;
std::unique_ptr<weld::Widget> m_xReduceTransparencyModeImg;
std::unique_ptr<weld::CheckButton> m_xReduceGradientsCB;
std::unique_ptr<weld::Widget> m_xReduceGradientsImg;
std::unique_ptr<weld::RadioButton> m_xReduceGradientsStripesRB;
std::unique_ptr<weld::RadioButton> m_xReduceGradientsColorRB;
std::unique_ptr<weld::Widget> m_xReduceGradientsModeImg;
std::unique_ptr<weld::SpinButton> m_xReduceGradientsStepCountNF;
std::unique_ptr<weld::CheckButton> m_xReduceBitmapsCB;
std::unique_ptr<weld::Widget> m_xReduceBitmapsImg;
std::unique_ptr<weld::RadioButton> m_xReduceBitmapsOptimalRB;
std::unique_ptr<weld::RadioButton> m_xReduceBitmapsNormalRB;
std::unique_ptr<weld::RadioButton> m_xReduceBitmapsResolutionRB;
std::unique_ptr<weld::Widget> m_xReduceBitmapsModeImg;
std::unique_ptr<weld::ComboBox> m_xReduceBitmapsResolutionLB;
std::unique_ptr<weld::CheckButton> m_xReduceBitmapsTransparencyCB;
std::unique_ptr<weld::Widget> m_xReduceBitmapsTransparencyImg;
std::unique_ptr<weld::CheckButton> m_xConvertToGreyscalesCB;
std::unique_ptr<weld::Widget> m_xConvertToGreyscalesImg;
std::unique_ptr<weld::CheckButton> m_xPaperSizeCB;
std::unique_ptr<weld::Widget> m_xPaperSizeImg;
std::unique_ptr<weld::CheckButton> m_xPaperOrientationCB;
std::unique_ptr<weld::Widget> m_xPaperOrientationImg;
std::unique_ptr<weld::CheckButton> m_xTransparencyCB;
std::unique_ptr<weld::Widget> m_xTransparencyImg;
private:
diff --git a/sfx2/source/dialog/printopt.cxx b/sfx2/source/dialog/printopt.cxx
index 1638f4e..d0ee19c 100644
--- a/sfx2/source/dialog/printopt.cxx
+++ b/sfx2/source/dialog/printopt.cxx
@@ -37,22 +37,33 @@ SfxCommonPrintOptionsTabPage::SfxCommonPrintOptionsTabPage(weld::Container* pPag
, m_xPrinterOutputRB(m_xBuilder->weld_radio_button("printer"))
, m_xPrintFileOutputRB(m_xBuilder->weld_radio_button("file"))
, m_xReduceTransparencyCB(m_xBuilder->weld_check_button("reducetrans"))
, m_xReduceTransparencyImg(m_xBuilder->weld_widget("lockreducetrans"))
, m_xReduceTransparencyAutoRB(m_xBuilder->weld_radio_button("reducetransauto"))
, m_xReduceTransparencyNoneRB(m_xBuilder->weld_radio_button("reducetransnone"))
, m_xReduceTransparencyModeImg(m_xBuilder->weld_widget("lockreducetransmode"))
, m_xReduceGradientsCB(m_xBuilder->weld_check_button("reducegrad"))
, m_xReduceGradientsImg(m_xBuilder->weld_widget("lockreducegrad"))
, m_xReduceGradientsStripesRB(m_xBuilder->weld_radio_button("reducegradstripes"))
, m_xReduceGradientsColorRB(m_xBuilder->weld_radio_button("reducegradcolor"))
, m_xReduceGradientsModeImg(m_xBuilder->weld_widget("lockreducegradmode"))
, m_xReduceGradientsStepCountNF(m_xBuilder->weld_spin_button("reducegradstep"))
, m_xReduceBitmapsCB(m_xBuilder->weld_check_button("reducebitmap"))
, m_xReduceBitmapsImg(m_xBuilder->weld_widget("lockreducebitmap"))
, m_xReduceBitmapsOptimalRB(m_xBuilder->weld_radio_button("reducebitmapoptimal"))
, m_xReduceBitmapsNormalRB(m_xBuilder->weld_radio_button("reducebitmapnormal"))
, m_xReduceBitmapsResolutionRB(m_xBuilder->weld_radio_button("reducebitmapresol"))
, m_xReduceBitmapsModeImg(m_xBuilder->weld_widget("lockreducebitmapmode"))
, m_xReduceBitmapsResolutionLB(m_xBuilder->weld_combo_box("reducebitmapdpi"))
, m_xReduceBitmapsTransparencyCB(m_xBuilder->weld_check_button("reducebitmaptrans"))
, m_xReduceBitmapsTransparencyImg(m_xBuilder->weld_widget("lockreducebitmaptrans"))
, m_xConvertToGreyscalesCB(m_xBuilder->weld_check_button("converttogray"))
, m_xConvertToGreyscalesImg(m_xBuilder->weld_widget("lockconverttogray"))
, m_xPaperSizeCB(m_xBuilder->weld_check_button("papersize"))
, m_xPaperSizeImg(m_xBuilder->weld_widget("lockpapersize"))
, m_xPaperOrientationCB(m_xBuilder->weld_check_button("paperorient"))
, m_xPaperOrientationImg(m_xBuilder->weld_widget("lockpaperorient"))
, m_xTransparencyCB(m_xBuilder->weld_check_button("trans"))
, m_xTransparencyImg(m_xBuilder->weld_widget("locktrans"))
{
if (bOutputForPrinter)
m_xPrinterOutputRB->set_active(true);
@@ -142,8 +153,16 @@ bool SfxCommonPrintOptionsTabPage::FillItemSet( SfxItemSet* /*rSet*/ )
void SfxCommonPrintOptionsTabPage::Reset( const SfxItemSet* /*rSet*/ )
{
m_xPaperSizeCB->set_active(officecfg::Office::Common::Print::Warning::PaperSize::get());
m_xPaperSizeCB->set_sensitive(!officecfg::Office::Common::Print::Warning::PaperSize::isReadOnly());
m_xPaperSizeImg->set_visible(officecfg::Office::Common::Print::Warning::PaperSize::isReadOnly());
m_xPaperOrientationCB->set_active(officecfg::Office::Common::Print::Warning::PaperOrientation::get());
m_xPaperOrientationCB->set_sensitive(!officecfg::Office::Common::Print::Warning::PaperOrientation::isReadOnly());
m_xPaperOrientationImg->set_visible(officecfg::Office::Common::Print::Warning::PaperOrientation::isReadOnly());
m_xTransparencyCB->set_active(officecfg::Office::Common::Print::Warning::Transparency::get());
m_xTransparencyCB->set_sensitive(!officecfg::Office::Common::Print::Warning::Transparency::isReadOnly());
m_xTransparencyImg->set_visible(officecfg::Office::Common::Print::Warning::Transparency::isReadOnly());
m_xPaperSizeCB->save_state();
m_xPaperOrientationCB->save_state();
@@ -168,23 +187,46 @@ DeactivateRC SfxCommonPrintOptionsTabPage::DeactivatePage( SfxItemSet* pItemSet
void SfxCommonPrintOptionsTabPage::ImplUpdateControls( const vcl::printer::Options* pCurrentOptions )
{
bool bEnable = true;
bEnable = !officecfg::Office::Common::Print::Option::File::ReduceTransparency::isReadOnly();
m_xReduceTransparencyCB->set_active( pCurrentOptions->IsReduceTransparency() );
m_xReduceTransparencyCB->set_sensitive(bEnable);
m_xReduceTransparencyImg->set_visible(!bEnable);
if( pCurrentOptions->GetReducedTransparencyMode() == vcl::printer::TransparencyMode::Auto )
m_xReduceTransparencyAutoRB->set_active(true);
else
m_xReduceTransparencyNoneRB->set_active(true);
bEnable = !officecfg::Office::Common::Print::Option::File::ReducedTransparencyMode::isReadOnly();
m_xReduceTransparencyAutoRB->set_sensitive(bEnable);
m_xReduceTransparencyNoneRB->set_sensitive(bEnable);
m_xReduceTransparencyModeImg->set_visible(!bEnable);
bEnable = !officecfg::Office::Common::Print::Option::Printer::ReduceGradients::isReadOnly();
m_xReduceGradientsCB->set_active( pCurrentOptions->IsReduceGradients() );
m_xReduceGradientsCB->set_sensitive(bEnable);
m_xReduceGradientsImg->set_visible(!bEnable);
if( pCurrentOptions->GetReducedGradientMode() == vcl::printer::GradientMode::Stripes )
m_xReduceGradientsStripesRB->set_active(true);
else
m_xReduceGradientsColorRB->set_active(true);
m_xReduceGradientsStepCountNF->set_value(pCurrentOptions->GetReducedGradientStepCount());
bEnable = !officecfg::Office::Common::Print::Option::Printer::ReducedGradientMode::isReadOnly();
m_xReduceGradientsStripesRB->set_sensitive(bEnable);
m_xReduceGradientsColorRB->set_sensitive(bEnable);
m_xReduceGradientsModeImg->set_visible(!bEnable);
bEnable = !officecfg::Office::Common::Print::Option::Printer::ReducedGradientStepCount::isReadOnly();
m_xReduceGradientsStepCountNF->set_value(pCurrentOptions->GetReducedGradientStepCount());
m_xReduceGradientsStepCountNF->set_sensitive(bEnable);
bEnable = !officecfg::Office::Common::Print::Option::Printer::ReduceBitmaps::isReadOnly();
m_xReduceBitmapsCB->set_active( pCurrentOptions->IsReduceBitmaps() );
m_xReduceBitmapsCB->set_sensitive(bEnable);
m_xReduceBitmapsImg->set_visible(!bEnable);
if( pCurrentOptions->GetReducedBitmapMode() == vcl::printer::BitmapMode::Optimal )
m_xReduceBitmapsOptimalRB->set_active(true);
@@ -193,6 +235,12 @@ void SfxCommonPrintOptionsTabPage::ImplUpdateControls( const vcl::printer::Optio
else
m_xReduceBitmapsResolutionRB->set_active(true);
bEnable = !officecfg::Office::Common::Print::Option::Printer::ReducedBitmapMode::isReadOnly();
m_xReduceBitmapsOptimalRB->set_sensitive(bEnable);
m_xReduceBitmapsNormalRB->set_sensitive(bEnable);
m_xReduceBitmapsResolutionRB->set_sensitive(bEnable);
m_xReduceBitmapsModeImg->set_visible(!bEnable);
const sal_uInt16 nDPI = pCurrentOptions->GetReducedBitmapResolution();
if( nDPI < aDPIArray[ 0 ] )
@@ -208,9 +256,18 @@ void SfxCommonPrintOptionsTabPage::ImplUpdateControls( const vcl::printer::Optio
}
}
}
bEnable = !officecfg::Office::Common::Print::Option::File::ReducedBitmapResolution::isReadOnly();
m_xReduceBitmapsResolutionLB->set_sensitive(bEnable);
bEnable = !officecfg::Office::Common::Print::Option::Printer::ReducedBitmapIncludesTransparency::isReadOnly();
m_xReduceBitmapsTransparencyCB->set_active( pCurrentOptions->IsReducedBitmapIncludesTransparency() );
m_xReduceBitmapsTransparencyCB->set_sensitive(bEnable);
m_xReduceBitmapsTransparencyImg->set_visible(!bEnable);
bEnable = !officecfg::Office::Common::Print::Option::Printer::ConvertToGreyscales::isReadOnly();
m_xConvertToGreyscalesCB->set_active( pCurrentOptions->IsConvertToGreyscales() );
m_xConvertToGreyscalesCB->set_sensitive(bEnable);
m_xConvertToGreyscalesImg->set_visible(!bEnable);
ClickReduceTransparencyCBHdl(*m_xReduceTransparencyCB);
ClickReduceGradientsCBHdl(*m_xReduceGradientsCB);
@@ -236,20 +293,25 @@ void SfxCommonPrintOptionsTabPage::ImplSaveControls( vcl::printer::Options* pCur
IMPL_LINK_NOARG( SfxCommonPrintOptionsTabPage, ClickReduceTransparencyCBHdl, weld::Toggleable&, void )
{
const bool bReduceTransparency = m_xReduceTransparencyCB->get_active();
bool bReadOnly = officecfg::Office::Common::Print::Option::File::ReducedTransparencyMode::isReadOnly();
m_xReduceTransparencyAutoRB->set_sensitive( bReduceTransparency );
m_xReduceTransparencyNoneRB->set_sensitive( bReduceTransparency );
m_xReduceTransparencyAutoRB->set_sensitive( bReduceTransparency && !bReadOnly );
m_xReduceTransparencyNoneRB->set_sensitive( bReduceTransparency && !bReadOnly );
m_xTransparencyCB->set_sensitive( !bReduceTransparency );
bReadOnly = officecfg::Office::Common::Print::Warning::Transparency::isReadOnly();
m_xTransparencyCB->set_sensitive( !bReduceTransparency && !bReadOnly);
}
IMPL_LINK_NOARG( SfxCommonPrintOptionsTabPage, ClickReduceGradientsCBHdl, weld::Toggleable&, void )
{
const bool bEnable = m_xReduceGradientsCB->get_active();
bool bReadOnly = officecfg::Office::Common::Print::Option::Printer::ReducedGradientMode::isReadOnly();
m_xReduceGradientsStripesRB->set_sensitive( bEnable );
m_xReduceGradientsColorRB->set_sensitive( bEnable );
m_xReduceGradientsStepCountNF->set_sensitive( bEnable );
m_xReduceGradientsStripesRB->set_sensitive( bEnable && !bReadOnly );
m_xReduceGradientsColorRB->set_sensitive( bEnable && !bReadOnly );
bReadOnly = officecfg::Office::Common::Print::Option::Printer::ReducedGradientStepCount::isReadOnly();
m_xReduceGradientsStepCountNF->set_sensitive( bEnable && !bReadOnly );
ToggleReduceGradientsStripesRBHdl(*m_xReduceGradientsStripesRB);
}
@@ -257,12 +319,15 @@ IMPL_LINK_NOARG( SfxCommonPrintOptionsTabPage, ClickReduceGradientsCBHdl, weld::
IMPL_LINK_NOARG( SfxCommonPrintOptionsTabPage, ClickReduceBitmapsCBHdl, weld::Toggleable&, void )
{
const bool bEnable = m_xReduceBitmapsCB->get_active();
bool bReadOnly = officecfg::Office::Common::Print::Option::Printer::ReducedBitmapMode::isReadOnly();
m_xReduceBitmapsOptimalRB->set_sensitive( bEnable );
m_xReduceBitmapsNormalRB->set_sensitive( bEnable );
m_xReduceBitmapsResolutionRB->set_sensitive( bEnable );
m_xReduceBitmapsTransparencyCB->set_sensitive( bEnable );
m_xReduceBitmapsResolutionLB->set_sensitive( bEnable );
m_xReduceBitmapsOptimalRB->set_sensitive( bEnable && !bReadOnly);
m_xReduceBitmapsNormalRB->set_sensitive( bEnable && !bReadOnly);
m_xReduceBitmapsResolutionRB->set_sensitive( bEnable && !bReadOnly );
m_xReduceBitmapsTransparencyCB->set_sensitive( bEnable &&
!officecfg::Office::Common::Print::Option::Printer::ReducedBitmapIncludesTransparency::isReadOnly() );
m_xReduceBitmapsResolutionLB->set_sensitive( bEnable &&
!officecfg::Office::Common::Print::Option::File::ReducedBitmapResolution::isReadOnly() );
ToggleReduceBitmapsResolutionRBHdl(*m_xReduceBitmapsResolutionRB);
}
diff --git a/sfx2/uiconfig/ui/optprintpage.ui b/sfx2/uiconfig/ui/optprintpage.ui
index 615b818..a2b1a7c 100644
--- a/sfx2/uiconfig/ui/optprintpage.ui
+++ b/sfx2/uiconfig/ui/optprintpage.ui
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.40.0 -->
<!-- Generated with glade 3.38.2 -->
<interface domain="sfx">
<requires lib="gtk+" version="3.20"/>
<object class="GtkAdjustment" id="adjustment1">
@@ -97,7 +97,7 @@
<property name="label-xalign">0</property>
<property name="shadow-type">none</property>
<child>
<!-- n-columns=1 n-rows=3 -->
<!-- n-columns=2 n-rows=3 -->
<object class="GtkGrid" id="grid3">
<property name="visible">True</property>
<property name="can-focus">False</property>
@@ -119,7 +119,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
@@ -138,7 +138,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
@@ -157,6 +157,45 @@
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockpapersize">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockpaperorient">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkImage" id="locktrans">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
</packing>
@@ -186,7 +225,7 @@
<property name="label-xalign">0</property>
<property name="shadow-type">none</property>
<child>
<!-- n-columns=1 n-rows=2 -->
<!-- n-columns=2 n-rows=2 -->
<object class="GtkGrid" id="grid4">
<property name="visible">True</property>
<property name="can-focus">False</property>
@@ -208,7 +247,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
@@ -291,6 +330,32 @@
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockreducegrad">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockreducegradmode">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
@@ -325,7 +390,7 @@
<property name="label-xalign">0</property>
<property name="shadow-type">none</property>
<child>
<!-- n-columns=1 n-rows=2 -->
<!-- n-columns=2 n-rows=2 -->
<object class="GtkGrid" id="grid1">
<property name="visible">True</property>
<property name="can-focus">False</property>
@@ -347,7 +412,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
@@ -455,6 +520,32 @@
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockreducebitmap">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockreducebitmapmode">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
@@ -484,7 +575,7 @@
<property name="label-xalign">0</property>
<property name="shadow-type">none</property>
<child>
<!-- n-columns=1 n-rows=2 -->
<!-- n-columns=2 n-rows=2 -->
<object class="GtkGrid" id="grid5">
<property name="visible">True</property>
<property name="can-focus">False</property>
@@ -506,7 +597,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
@@ -559,6 +650,32 @@
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockreducetrans">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockreducetransmode">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
@@ -588,7 +705,7 @@
<property name="label-xalign">0</property>
<property name="shadow-type">none</property>
<child>
<!-- n-columns=1 n-rows=2 -->
<!-- n-columns=2 n-rows=2 -->
<object class="GtkGrid" id="grid7">
<property name="visible">True</property>
<property name="can-focus">False</property>
@@ -610,7 +727,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
@@ -629,6 +746,32 @@
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockconverttogray">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockreducebitmaptrans">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>