summaryrefslogtreecommitdiffstats
path: root/kcontrol
diff options
context:
space:
mode:
authorMavridis Philippe <mavridisf@gmail.com>2021-03-05 15:34:53 +0200
committerMavridis Philippe <mavridisf@gmail.com>2021-03-30 16:39:25 +0300
commit94b98729138c6948c1e4fdbb1e0552f85783f263 (patch)
tree5e0b741dc58c987c5468c750d80f6e14d20cafcb /kcontrol
parentf06c728734b0102b131395f297de60877d4d0a66 (diff)
downloadtdebase-94b98729138c6948c1e4fdbb1e0552f85783f263.tar.gz
tdebase-94b98729138c6948c1e4fdbb1e0552f85783f263.zip
KDesktop: customizable icon spacing.
This commit introduces changes to KDesktop which allow for a custom icon spacing option, some new controls into the Desktop Behaviour module of KControl, as well as the KDesktop Ctrl+Mouse Scroll binding to manipulate the icon spacing. This commit depends on a previous (minor) change in LibKonq. Signed-off-by: Mavridis Philippe <mavridisf@gmail.com>
Diffstat (limited to 'kcontrol')
-rw-r--r--kcontrol/konq/desktopbehavior.ui293
-rw-r--r--kcontrol/konq/desktopbehavior_impl.cpp42
-rw-r--r--kcontrol/konq/desktopbehavior_impl.h6
3 files changed, 269 insertions, 72 deletions
diff --git a/kcontrol/konq/desktopbehavior.ui b/kcontrol/konq/desktopbehavior.ui
index c247ab354..2f346f47e 100644
--- a/kcontrol/konq/desktopbehavior.ui
+++ b/kcontrol/konq/desktopbehavior.ui
@@ -33,79 +33,243 @@
<attribute name="title">
<string>General</string>
</attribute>
- <grid>
+ <vbox>
<property name="name">
<cstring>unnamed</cstring>
</property>
- <widget class="TQCheckBox" row="0" column="0">
+ <widget class="TQGroupBox">
<property name="name">
- <cstring>iconsEnabledBox</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>&amp;Show icons on desktop</string>
- </property>
- <property name="whatsThis" stdset="0">
- <string>Uncheck this option if you do not want to have icons on the desktop. Without icons the desktop will be somewhat faster but you will no longer be able to drag files to the desktop.</string>
+ <cstring>iconsGroupBox</cstring>
</property>
- </widget>
- <widget class="TQLayoutWidget" row="1" column="0">
- <property name="name">
- <cstring>layout1</cstring>
+ <property name="title">
+ <string>Desktop Icons</string>
</property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <spacer>
+ <vbox>
+ <widget class="TQCheckBox">
<property name="name">
- <cstring>spacer3</cstring>
+ <cstring>iconsEnabledBox</cstring>
</property>
- <property name="orientation">
- <enum>Horizontal</enum>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
</property>
- <property name="sizeType">
- <enum>Fixed</enum>
+ <property name="text">
+ <string>&amp;Show icons on desktop</string>
</property>
- <property name="sizeHint">
- <size>
- <width>20</width>
- <height>0</height>
- </size>
+ <property name="whatsThis" stdset="0">
+ <string>Uncheck this option if you do not want to have icons on the desktop. Without icons the desktop will be somewhat faster but you will no longer be able to drag files to the desktop.</string>
</property>
- </spacer>
+ </widget>
+ <widget class="TQLayoutWidget">
+ <property name="name">
+ <cstring>layout1</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>spacer1</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Fixed</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>0</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="TQCheckBox">
+ <property name="name">
+ <cstring>vrootBox</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Allow pro&amp;grams in desktop window</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Check this option if you want to run X11 programs that draw into the desktop such as xsnow, xpenguin or xmountain. If you have problems with applications like netscape that check the root window for running instances, disable this option.</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
<widget class="TQCheckBox">
<property name="name">
- <cstring>vrootBox</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
+ <cstring>toolTipBox</cstring>
</property>
<property name="text">
- <string>Allow pro&amp;grams in desktop window</string>
+ <string>Show &amp;tooltips</string>
</property>
- <property name="whatsThis" stdset="0">
- <string>Check this option if you want to run X11 programs that draw into the desktop such as xsnow, xpenguin or xmountain. If you have problems with applications like netscape that check the root window for running instances, disable this option.</string>
+ </widget>
+ <widget class="KSeparator">
+ <property name="name">
+ <cstring>iconOptsSeparator</cstring>
</property>
</widget>
- </hbox>
- </widget>
- <widget class="TQCheckBox" row="2" column="0">
- <property name="name">
- <cstring>toolTipBox</cstring>
- </property>
- <property name="text">
- <string>Show &amp;tooltips</string>
- </property>
+ <widget class="TQLayoutWidget">
+ <property name="name">
+ <cstring>iconOptsOuterLayout</cstring>
+ </property>
+ <hbox>
+ <widget class="TQLayoutWidget">
+ <property name="name">
+ <cstring>iconOptsVLayout</cstring>
+ </property>
+ <vbox>
+ <widget class="TQCheckBox">
+ <property name="name">
+ <cstring>lockInPlaceBox</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Lock in Place</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Check this option if you want to prevent your icons from being dragged around.</string>
+ </property>
+ </widget>
+ <widget class="TQCheckBox">
+ <property name="name">
+ <cstring>autoLineupIconsBox</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Align to grid</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Check this option if you want to see your icons automatically aligned to the grid when you move them.</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Fixed</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="TQLayoutWidget">
+ <property name="name">
+ <cstring>spacingVLayout</cstring>
+ </property>
+ <vbox>
+ <widget class="TQLayoutWidget">
+ <property name="name">
+ <cstring>spacingValueLayout</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>spacingLayout</cstring>
+ </property>
+ <widget class="TQLabel">
+ <property name="name">
+ <cstring>spacingLabel</cstring>
+ </property>
+ <property name="text">
+ <string>Icon Spacing:</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Changing this value controls how close or far to each other the icons are placed on the desktop. This option has effect only if the "Align to Grid" option is enabled.</string>
+ </property>
+ </widget>
+ <widget class="TQSpinBox">
+ <property name="name">
+ <cstring>spacingValue</cstring>
+ </property>
+ <property name="specialValueText">
+ <string>Default</string>
+ </property>
+ <property name="suffix">
+ <string> px</string>
+ </property>
+ <property name="minValue">
+ <number>5</number>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Changing this value controls how close or far to each other the icons are placed on the desktop. This option has effect only if the "Align to Grid" option is enabled.</string>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer3</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ <widget class="TQCheckBox">
+ <property name="name">
+ <cstring>spacingCtrlScroll</cstring>
+ </property>
+ <property name="text">
+ <string>Ctrl+Mouse Scroll changes spacing</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Check this if you want to change desktop icon spacing by pressing Ctrl and scrolling on the desktop background.</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ </vbox>
</widget>
- <widget class="TQButtonGroup" row="3" column="0">
+ <widget class="TQButtonGroup">
<property name="name">
<cstring>desktopMenuGroup</cstring>
</property>
@@ -151,7 +315,7 @@
</widget>
</vbox>
</widget>
- <widget class="TQGroupBox" row="4" column="0">
+ <widget class="TQGroupBox">
<property name="name">
<cstring>groupBox3</cstring>
</property>
@@ -260,7 +424,7 @@
</widget>
<spacer row="0" column="3" rowspan="3" colspan="1">
<property name="name">
- <cstring>spacer5</cstring>
+ <cstring>spacer4</cstring>
</property>
<property name="orientation">
<enum>Horizontal</enum>
@@ -277,9 +441,9 @@
</spacer>
</grid>
</widget>
- <spacer row="5" column="0">
+ <spacer>
<property name="name">
- <cstring>spacer8</cstring>
+ <cstring>spacer5</cstring>
</property>
<property name="orientation">
<enum>Vertical</enum>
@@ -294,7 +458,7 @@
</size>
</property>
</spacer>
- </grid>
+ </vbox>
</widget>
<widget class="TQWidget">
<property name="name">
@@ -307,17 +471,6 @@
<property name="name">
<cstring>unnamed</cstring>
</property>
- <widget class="TQCheckBox" row="0" column="0">
- <property name="name">
- <cstring>autoLineupIconsBox</cstring>
- </property>
- <property name="text">
- <string>Automatically &amp;line up icons</string>
- </property>
- <property name="whatsThis" stdset="0">
- <string>Check this option if you want to see your icons automatically aligned to the grid when you move them.</string>
- </property>
- </widget>
<widget class="TQCheckBox" row="1" column="0">
<property name="name">
<cstring>showHiddenBox</cstring>
diff --git a/kcontrol/konq/desktopbehavior_impl.cpp b/kcontrol/konq/desktopbehavior_impl.cpp
index 17fc2f364..5c5fe2b95 100644
--- a/kcontrol/konq/desktopbehavior_impl.cpp
+++ b/kcontrol/konq/desktopbehavior_impl.cpp
@@ -28,6 +28,7 @@
#include <tqcombobox.h>
#include <tqpushbutton.h>
#include <tqbuttongroup.h>
+#include <tqspinbox.h>
#include <tqtabwidget.h>
#include <tqwhatsthis.h>
#include <tdelistview.h>
@@ -130,9 +131,12 @@ DesktopBehavior::DesktopBehavior(TDEConfig *config, TQWidget *parent, const char
connect(iconsEnabledBox, TQT_SIGNAL(clicked()), this, TQT_SLOT(enableChanged()));
connect(showHiddenBox, TQT_SIGNAL(clicked()), this, TQT_SIGNAL(changed()));
connect(vrootBox, TQT_SIGNAL(clicked()), this, TQT_SIGNAL(changed()));
- connect(autoLineupIconsBox, TQT_SIGNAL(clicked()), this, TQT_SIGNAL(changed()));
+ connect(lockInPlaceBox, TQT_SIGNAL(clicked()), this, TQT_SLOT(enableGridChanged()));
+ connect(autoLineupIconsBox, TQT_SIGNAL(clicked()), this, TQT_SLOT(enableGridChanged()));
connect(toolTipBox, TQT_SIGNAL(clicked()), this, TQT_SIGNAL(changed()));
connect(mediaListView, TQT_SIGNAL(clicked(TQListViewItem *)), this, TQT_SLOT(mediaListViewChanged(TQListViewItem *)));
+ connect(spacingValue, TQT_SIGNAL(valueChanged(int)), this, TQT_SLOT(spacingChanged(int)));
+ connect(spacingCtrlScroll, TQT_SIGNAL(clicked()), this, TQT_SIGNAL(changed()));
strMouseButton1 = i18n("&Left button:");
strButtonTxt1 = i18n( "You can choose what happens when"
@@ -236,6 +240,11 @@ void DesktopBehavior::mediaListViewChanged(TQListViewItem * item)
emit changed();
}
+void DesktopBehavior::spacingChanged(int value)
+{
+ emit changed();
+}
+
void DesktopBehavior::setMediaListViewEnabled(bool enabled)
{
for (DesktopBehaviorMediaItem *it=static_cast<DesktopBehaviorMediaItem *>(mediaListView->firstChild());
@@ -307,6 +316,9 @@ void DesktopBehavior::load( bool useDefaults )
g_pConfig->setGroup( "Desktop Icons" );
bool bShowHidden = g_pConfig->readBoolEntry("ShowHidden", DEFAULT_SHOW_HIDDEN_ROOT_ICONS);
showHiddenBox->setChecked(bShowHidden);
+ spacingValue->setValue( g_pConfig->readNumEntry("IconSpacing", 5) );
+ spacingCtrlScroll->setChecked( g_pConfig->readBoolEntry("SpacingCtrlScroll", false) );
+ lockInPlaceBox->setChecked( g_pConfig->readBoolEntry( "LockIcons", false ) );
//bool bVertAlign = g_pConfig->readBoolEntry("VertAlign", DEFAULT_VERT_ALIGN);
TDETrader::OfferList plugins = TDETrader::self()->query("ThumbCreator");
previewListView->clear();
@@ -333,6 +345,8 @@ void DesktopBehavior::load( bool useDefaults )
iconsEnabledBox->setChecked( g_pConfig->readBoolEntry( "Enabled", true ) );
autoLineupIconsBox->setChecked( g_pConfig->readBoolEntry( "AutoLineUpIcons", false ) );
+ toggleSpacingOpts();
+
//
g_pConfig->setGroup( "Mouse Buttons" );
TQString s;
@@ -365,6 +379,9 @@ void DesktopBehavior::save()
{
g_pConfig->setGroup( "Desktop Icons" );
g_pConfig->writeEntry("ShowHidden", showHiddenBox->isChecked());
+ g_pConfig->writeEntry("IconSpacing", spacingValue->value());
+ g_pConfig->writeEntry("SpacingCtrlScroll", spacingCtrlScroll->isChecked());
+ g_pConfig->writeEntry("LockIcons", lockInPlaceBox->isChecked());
TQStringList previews;
for ( DesktopBehaviorPreviewItem *item = static_cast<DesktopBehaviorPreviewItem *>( previewListView->firstChild() );
item;
@@ -395,6 +412,8 @@ void DesktopBehavior::save()
g_pConfig->writeEntry( "Enabled", iconsEnabledBox->isChecked() );
g_pConfig->writeEntry( "AutoLineUpIcons", autoLineupIconsBox->isChecked() );
+ toggleSpacingOpts();
+
saveMediaListView();
g_pConfig->sync();
@@ -421,6 +440,9 @@ void DesktopBehavior::enableChanged()
bool enabled = iconsEnabledBox->isChecked();
behaviorTab->setTabEnabled(behaviorTab->page(1), enabled);
vrootBox->setEnabled(enabled);
+ lockInPlaceBox->setEnabled(enabled);
+ autoLineupIconsBox->setEnabled(enabled);
+ enableGridChanged();
if (m_bHasMedia)
{
@@ -433,6 +455,24 @@ void DesktopBehavior::enableChanged()
changed();
}
+void DesktopBehavior::toggleSpacingOpts()
+{
+ bool enabled = (
+ autoLineupIconsBox->isEnabled() && // Desktop grid available
+ autoLineupIconsBox->isChecked() && // Desktop grid enabled
+ !lockInPlaceBox->isChecked() // Lock in Place is off
+ );
+
+ spacingCtrlScroll->setEnabled(enabled);
+ spacingValue->setEnabled(enabled);
+}
+
+void DesktopBehavior::enableGridChanged()
+{
+ toggleSpacingOpts();
+ changed();
+}
+
void DesktopBehavior::comboBoxChanged()
{
int i;
diff --git a/kcontrol/konq/desktopbehavior_impl.h b/kcontrol/konq/desktopbehavior_impl.h
index bc5965750..8a1a5c247 100644
--- a/kcontrol/konq/desktopbehavior_impl.h
+++ b/kcontrol/konq/desktopbehavior_impl.h
@@ -44,10 +44,12 @@ signals:
void changed();
private slots:
- void enableChanged();
+ void enableChanged();
+ void enableGridChanged();
void comboBoxChanged();
void editButtonPressed();
void mediaListViewChanged(TQListViewItem * item);
+ void spacingChanged(int value);
private:
TDEConfig *g_pConfig;
@@ -56,6 +58,8 @@ private:
void saveMediaListView();
void setMediaListViewEnabled(bool enabled);
+ void toggleSpacingOpts();
+
// Combo for the menus
void fillMenuCombo( TQComboBox * combo );