[kde-doc-english] Re: [kde-workspace] /: Make font dpi fully configurable by the user

Anne-Marie Mahfouf annemarie.mahfouf at free.fr
Sat Jun 11 12:56:02 CEST 2011


Hi Lucas,

It looks like you changed a string (you should have asked i18n people prior to 
committing) and you committed a feature which is not allowed in the 4.7 
feature plan.
http://techbase.kde.org/Schedules/KDE4/4.7_Release_Schedule

Best regards,

Anne-Marie

On Saturday 11 June 2011 11:42:56 Lukas Sommer wrote:
> Git commit 9e1de272620da40fead11dfdb705cfc3d9a90f10 by Lukas Sommer.
> Committed on 11/06/2011 at 11:34.
> Pushed by sommer into branch 'master'.
> 
> Make font dpi fully configurable by the user
> 
> Adopts startkde.cmake to accept dpi values different from 96 and 120.
> 
> Adopts the UI in kcontrol to make dpi values from 1 to 1000 possible.
> The spinbox uses steps of 24 dpi because the common dpi values 72,
> 96 and 120 are all multiples of 24. As some fonts are optimized for
> these resolutions, this could make fonts look better.
> FEATURE: 190489
> FIXED-IN: 4.7
> REVIEW: 101410
> GUI:
> DIGEST:
> 
> M  +28   -20   kcontrol/fonts/fonts.cpp
> M  +4    -3    kcontrol/fonts/fonts.h
> M  +2    -6    startkde.cmake
> 
> http://commits.kde.org/kde-workspace/9e1de272620da40fead11dfdb705cfc3d9a90f
> 10
> 
> diff --git a/kcontrol/fonts/fonts.cpp b/kcontrol/fonts/fonts.cpp
> index 0cd2666..a9b5ef2 100644
> --- a/kcontrol/fonts/fonts.cpp
> +++ b/kcontrol/fonts/fonts.cpp
> @@ -13,6 +13,7 @@
>  #include <QDir>
>  #include <QLabel>
>  #include <QPushButton>
> +#include <QSpinBox>
>  #include <QtCore/QSettings>
> 
> 
> @@ -625,14 +626,11 @@ KFonts::KFonts(QWidget *parent, const QVariantList
> &args) lay->addWidget( aaSettingsButton, 0, 2 );
>     connect(cbAA, SIGNAL(activated(int)), SLOT(slotUseAntiAliasing()));
>  #endif
> -   label = new QLabel( i18n( "Force fonts DPI:" ), this );
> -   label->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
> -   lay->addWidget( label, 1, 0 );
> -   comboForceDpi = new QComboBox( this );
> -   label->setBuddy( comboForceDpi );
> -   comboForceDpi->insertItem( DPINone, i18nc("Force fonts DPI", "Disabled"
> )); // change DPISetti ng type if order changes -  
> comboForceDpi->insertItem( DPI96, i18n( "96 DPI" ));
> -   comboForceDpi->insertItem( DPI120, i18n( "120 DPI" ));
> +   checkboxForceDpi = new QCheckBox( i18n( "Force fonts DPI:" ), this );
> +   lay->addWidget( checkboxForceDpi, 1, 0 );
> +   spinboxDpi = new QSpinBox( this );
> +   spinboxDpi->setRange(1, 1000);
> +   spinboxDpi->setSingleStep(24); // The common DPI values 72, 96 and 120
> are multiples of 24 QString whatsthis = i18n(
>         "<p>This option forces a specific DPI value for fonts. It may be
> useful" " when the real DPI of the hardware is not detected properly and
> it" @@ -644,9 +642,13 @@ KFonts::KFonts(QWidget *parent, const
> QVariantList &args) " ServerLocalArgs= in $KDEDIR/share/config/kdm/kdmrc).
> When fonts do not render" " properly with real DPI value better fonts
> should be used or configuration" " of font hinting should be checked.</p>"
> );
> -   comboForceDpi->setWhatsThis(whatsthis);
> -   connect( comboForceDpi, SIGNAL( activated( int )), SLOT( changed()));
> -   lay->addWidget( comboForceDpi, 1, 1 );
> +   spinboxDpi->setWhatsThis(whatsthis);
> +   checkboxForceDpi->setChecked(false);
> +   spinboxDpi->setEnabled(false);
> +   connect( spinboxDpi, SIGNAL( valueChanged(int)), SLOT( changed()));
> +   connect( checkboxForceDpi, SIGNAL( toggled(bool)), SLOT( changed()));
> +   connect( checkboxForceDpi, SIGNAL( toggled(bool)), spinboxDpi, SLOT(
> setEnabled(bool))); +   lay->addWidget( spinboxDpi, 1, 1 );
> 
>     layout->addStretch(1);
> 
> @@ -681,7 +683,8 @@ void KFonts::defaults()
>    cbAA->setCurrentIndex( useAA );
>    aaSettings->defaults();
>  #endif
> -  comboForceDpi->setCurrentIndex( DPINone );
> +  checkboxForceDpi->setChecked( false );
> +  spinboxDpi->setValue( 96 );
>    emit changed(true);
>  }
> 
> @@ -701,9 +704,15 @@ void KFonts::load()
>    KConfig _cfgfonts( "kcmfonts" );
>    KConfigGroup cfgfonts(&_cfgfonts, "General");
>    int dpicfg = cfgfonts.readEntry( "forceFontDPI", 0 );
> -  DPISetting dpi = dpicfg == 120 ? DPI120 : dpicfg == 96 ? DPI96 :
> DPINone; -  comboForceDpi->setCurrentIndex( dpi );
> -  dpi_original = dpi;
> +  if (dpicfg <= 0) {
> +    checkboxForceDpi->setChecked(false);
> +    spinboxDpi->setValue(96);
> +    dpi_original = 0;
> +  } else {
> +    checkboxForceDpi->setChecked(true);
> +    spinboxDpi->setValue(dpicfg);
> +    dpi_original = dpicfg;
> +  };
>  #ifdef HAVE_FONTCONFIG
>    if( cfgfonts.readEntry( "dontChangeAASettings", true )) {
>        useAA_original = useAA = AASystem;
> @@ -727,16 +736,15 @@ void KFonts::save()
> 
>    KConfig _cfgfonts( "kcmfonts" );
>    KConfigGroup cfgfonts(&_cfgfonts, "General");
> -  DPISetting dpi = static_cast< DPISetting >(
> comboForceDpi->currentIndex()); -  const int dpi2value[] = { 0, 96, 120 };
> -  cfgfonts.writeEntry( "forceFontDPI", dpi2value[ dpi ] );
> +  int dpi = ( checkboxForceDpi->isChecked() ? spinboxDpi->value() : 0 );
> +  cfgfonts.writeEntry( "forceFontDPI", dpi );
>  #ifdef HAVE_FONTCONFIG
>    cfgfonts.writeEntry( "dontChangeAASettings", cbAA->currentIndex() ==
> AASystem ); #endif
>    cfgfonts.sync();
>    // if the setting is reset in the module, remove the dpi value,
>    // otherwise don't explicitly remove it and leave any possible
> system-wide value -  if( dpi == DPINone && dpi_original != DPINone ) {
> +  if( dpi == 0 && dpi_original != 0 ) {
>        KProcess proc;
>        proc << "xrdb" << "-quiet" << "-remove" << "-nocpp";
>        proc.start();
> @@ -777,7 +785,7 @@ void KFonts::save()
>    if( aaSave || (useAA != useAA_original) || dpi != dpi_original) {
>      KMessageBox::information(this,
>        i18n(
> -        "<p>Some changes such as anti-aliasing will only affect newly
> started applications.</p>" +        "<p>Some changes such as anti-aliasing
> or DPI will only affect newly started applications.</p>" ), i18n("Font
> Settings Changed"), "FontSettingsChanged");
>      useAA_original = useAA;
>      dpi_original = dpi;
> diff --git a/kcontrol/fonts/fonts.h b/kcontrol/fonts/fonts.h
> index 2c722d4..2a1b940 100644
> --- a/kcontrol/fonts/fonts.h
> +++ b/kcontrol/fonts/fonts.h
> @@ -20,6 +20,7 @@
> 
>  class QCheckBox;
>  class QComboBox;
> +class QSpinBox;
>  class KDoubleNumInput;
>  class FontAASettings;
> 
> @@ -116,9 +117,9 @@ private:
>      FontAASettings *aaSettings;
>  #endif
> 
> -    enum DPISetting { DPINone, DPI96, DPI120 };
> -    DPISetting dpi_original;
> -    QComboBox* comboForceDpi;
> +    int dpi_original;
> +    QCheckBox *checkboxForceDpi;
> +    QSpinBox* spinboxDpi;
>      QList<FontUseItem *> fontUseList;
>  };
> 
> diff --git a/startkde.cmake b/startkde.cmake
> index dde9c23..afec4eb 100755
> --- a/startkde.cmake
> +++ b/startkde.cmake
> @@ -130,13 +130,9 @@ fi
> 
>  . krandrstartup 2>/dev/null
> 
> -if test "$kcmfonts_general_forcefontdpi" -eq 120; then
> +if test "$kcmfonts_general_forcefontdpi" -ne 0; then
>      xrdb -quiet -merge -nocpp <<EOF
> -Xft.dpi: 120
> -EOF
> -elif test "$kcmfonts_general_forcefontdpi" -eq 96; then
> -    xrdb -quiet -merge -nocpp <<EOF
> -Xft.dpi: 96
> +Xft.dpi: $kcmfonts_general_forcefontdpi
>  EOF
>  fi
> 
> _______________________________________________
> kde-doc-english mailing list
> kde-doc-english at kde.org
> https://mail.kde.org/mailman/listinfo/kde-doc-english


More information about the kde-doc-english mailing list