https://bugs.kde.org/show_bug.cgi?id=371800

--- Comment #4 from abraa...@gmail.com ---
Comment on attachment 101866
  --> https://bugs.kde.org/attachment.cgi?id=101866
patch: automatically adjust the width of the view headers

>From 4ec66687e337395aaf0f00198652719e4d9a3c80 Mon Sep 17 00:00:00 2001
>From: Staffan Palmroos <spalmr...@gmail.com>
>Date: Fri, 28 Oct 2016 23:37:27 +0300
>Subject: [PATCH] Give the user the option to have the structure view headers
> automatically adjust their widths
>
>---
> .../settings/structviewdisplaysettingswidget.ui    | 256 +++++++++++----------
> kasten/controllers/view/structures/structview.cpp  |  26 ++-
> kasten/controllers/view/structures/structview.h    |   1 +
> 3 files changed, 158 insertions(+), 125 deletions(-)
>
>diff --git 
>a/kasten/controllers/view/structures/settings/structviewdisplaysettingswidget.ui
> 
>b/kasten/controllers/view/structures/settings/structviewdisplaysettingswidget.ui
>index c290815..1085251 100644
>--- 
>a/kasten/controllers/view/structures/settings/structviewdisplaysettingswidget.ui
>+++ 
>b/kasten/controllers/view/structures/settings/structviewdisplaysettingswidget.ui
>@@ -6,135 +6,145 @@
>    <rect>
>     <x>0</x>
>     <y>0</y>
>-    <width>411</width>
>-    <height>292</height>
>+    <width>310</width>
>+    <height>421</height>
>    </rect>
>   </property>
>-  <layout class="QVBoxLayout" name="verticalLayout">
>-   <item>
>-    <layout class="QFormLayout" name="formLayout_2">
>-     <property name="fieldGrowthPolicy">
>-      <enum>QFormLayout::ExpandingFieldsGrow</enum>
>-     </property>
>-     <item row="0" column="0">
>-      <widget class="QLabel" name="byteOrderLabel">
>+  <widget class="QWidget" name="layoutWidget">
>+   <property name="geometry">
>+    <rect>
>+     <x>7</x>
>+     <y>7</y>
>+     <width>297</width>
>+     <height>407</height>
>+    </rect>
>+   </property>
>+   <layout class="QFormLayout" name="formLayout">
>+    <item row="0" column="0">
>+     <widget class="QLabel" name="byteOrderLabel">
>+      <property name="text">
>+       <string>Byte order:</string>
>+      </property>
>+      <property name="buddy">
>+       <cstring>kcfg_ByteOrder</cstring>
>+      </property>
>+     </widget>
>+    </item>
>+    <item row="0" column="1">
>+     <widget class="KComboBox" name="kcfg_ByteOrder">
>+      <property name="sizeAdjustPolicy">
>+       <enum>QComboBox::AdjustToContents</enum>
>+      </property>
>+      <item>
>        <property name="text">
>-        <string>Byte order:</string>
>+        <string>Big endian</string>
>        </property>
>-       <property name="buddy">
>-        <cstring>kcfg_ByteOrder</cstring>
>-       </property>
>-      </widget>
>-     </item>
>-     <item row="0" column="1">
>-      <widget class="KComboBox" name="kcfg_ByteOrder">
>-       <property name="sizeAdjustPolicy">
>-        <enum>QComboBox::AdjustToContents</enum>
>-       </property>
>-       <item>
>-        <property name="text">
>-         <string>Big endian</string>
>-        </property>
>-       </item>
>-       <item>
>-        <property name="text">
>-         <string>Little endian</string>
>-        </property>
>-       </item>
>-      </widget>
>-     </item>
>-     <item row="1" column="0" colspan="2">
>-      <widget class="QCheckBox" name="kcfg_ShortTypeNames">
>-       <property name="text">
>-        <string>Use short type names</string>
>-       </property>
>-      </widget>
>-     </item>
>-     <item row="2" column="0" colspan="2">
>-      <widget class="QCheckBox" name="kcfg_LocaleAwareDecimalFormatting">
>-       <property name="text">
>-        <string>Use locale-aware integer formatting</string>
>-       </property>
>-      </widget>
>-     </item>
>-     <item row="3" column="0">
>-      <widget class="QLabel" name="unsigned_label">
>-       <property name="text">
>-        <string>Unsigned values:</string>
>-       </property>
>-       <property name="buddy">
>-        <cstring>combo_UnsignedDisplayBase</cstring>
>-       </property>
>-      </widget>
>-     </item>
>-     <item row="3" column="1">
>-      <widget class="KComboBox" name="combo_UnsignedDisplayBase"/>
>-     </item>
>-     <item row="4" column="0">
>-      <widget class="QLabel" name="signed_label">
>-       <property name="text">
>-        <string>Signed values:</string>
>-       </property>
>-       <property name="buddy">
>-        <cstring>combo_SignedDisplayBase</cstring>
>-       </property>
>-      </widget>
>-     </item>
>-     <item row="4" column="1">
>-      <widget class="KComboBox" name="combo_SignedDisplayBase"/>
>-     </item>
>-     <item row="5" column="0" colspan="2">
>-      <widget class="QCheckBox" name="kcfg_LocaleAwareFloatFormatting">
>-       <property name="text">
>-        <string>Use locale-aware floating-point formatting</string>
>-       </property>
>-      </widget>
>-     </item>
>-     <item row="6" column="0">
>-      <widget class="QLabel" name="label">
>-       <property name="text">
>-        <string>Floating-point precision:</string>
>-       </property>
>-       <property name="buddy">
>-        <cstring>kcfg_FloatPrecision</cstring>
>-       </property>
>-      </widget>
>-     </item>
>-     <item row="6" column="1">
>-      <widget class="QSpinBox" name="kcfg_FloatPrecision"/>
>-     </item>
>-     <item row="7" column="0" colspan="2">
>-      <widget class="QCheckBox" name="kcfg_ShowCharNumericalValue">
>+      </item>
>+      <item>
>        <property name="text">
>-        <string>Show numerical value of chars</string>
>-       </property>
>-      </widget>
>-     </item>
>-     <item row="8" column="0">
>-      <widget class="QLabel" name="char_label">
>-       <property name="text">
>-        <string>Character value:</string>
>-       </property>
>-       <property name="buddy">
>-        <cstring>combo_CharDisplayBase</cstring>
>+        <string>Little endian</string>
>        </property>
>-      </widget>
>-     </item>
>-     <item row="8" column="1">
>-      <widget class="KComboBox" name="combo_CharDisplayBase"/>
>-     </item>
>-     <item row="9" column="0">
>-      <widget class="QSpinBox" name="kcfg_CharDisplayBase"/>
>-     </item>
>-     <item row="9" column="1">
>-      <widget class="QSpinBox" name="kcfg_SignedDisplayBase"/>
>-     </item>
>-     <item row="10" column="0">
>-      <widget class="QSpinBox" name="kcfg_UnsignedDisplayBase"/>
>-     </item>
>-    </layout>
>-   </item>
>-  </layout>
>+      </item>
>+     </widget>
>+    </item>
>+    <item row="1" column="0" colspan="2">
>+     <widget class="QCheckBox" name="kcfg_ShortTypeNames">
>+      <property name="text">
>+       <string>Use short type names</string>
>+      </property>
>+     </widget>
>+    </item>
>+    <item row="2" column="0" colspan="2">
>+     <widget class="QCheckBox" name="kcfg_LocaleAwareDecimalFormatting">
>+      <property name="text">
>+       <string>Use locale-aware integer formatting</string>
>+      </property>
>+     </widget>
>+    </item>
>+    <item row="3" column="0">
>+     <widget class="QLabel" name="unsigned_label">
>+      <property name="text">
>+       <string>Unsigned values:</string>
>+      </property>
>+      <property name="buddy">
>+       <cstring>combo_UnsignedDisplayBase</cstring>
>+      </property>
>+     </widget>
>+    </item>
>+    <item row="3" column="1">
>+     <widget class="KComboBox" name="combo_UnsignedDisplayBase"/>
>+    </item>
>+    <item row="4" column="0">
>+     <widget class="QLabel" name="signed_label">
>+      <property name="text">
>+       <string>Signed values:</string>
>+      </property>
>+      <property name="buddy">
>+       <cstring>combo_SignedDisplayBase</cstring>
>+      </property>
>+     </widget>
>+    </item>
>+    <item row="4" column="1">
>+     <widget class="KComboBox" name="combo_SignedDisplayBase"/>
>+    </item>
>+    <item row="5" column="0" colspan="2">
>+     <widget class="QCheckBox" name="kcfg_LocaleAwareFloatFormatting">
>+      <property name="text">
>+       <string>Use locale-aware floating-point formatting</string>
>+      </property>
>+     </widget>
>+    </item>
>+    <item row="6" column="0">
>+     <widget class="QLabel" name="label">
>+      <property name="text">
>+       <string>Floating-point precision:</string>
>+      </property>
>+      <property name="buddy">
>+       <cstring>kcfg_FloatPrecision</cstring>
>+      </property>
>+     </widget>
>+    </item>
>+    <item row="6" column="1">
>+     <widget class="QSpinBox" name="kcfg_FloatPrecision"/>
>+    </item>
>+    <item row="7" column="0" colspan="2">
>+     <widget class="QCheckBox" name="kcfg_ShowCharNumericalValue">
>+      <property name="text">
>+       <string>Show numerical value of chars</string>
>+      </property>
>+     </widget>
>+    </item>
>+    <item row="8" column="0">
>+     <widget class="QLabel" name="char_label">
>+      <property name="text">
>+       <string>Character value:</string>
>+      </property>
>+      <property name="buddy">
>+       <cstring>combo_CharDisplayBase</cstring>
>+      </property>
>+     </widget>
>+    </item>
>+    <item row="8" column="1">
>+     <widget class="KComboBox" name="combo_CharDisplayBase"/>
>+    </item>
>+    <item row="9" column="0">
>+     <widget class="QSpinBox" name="kcfg_CharDisplayBase"/>
>+    </item>
>+    <item row="9" column="1">
>+     <widget class="QSpinBox" name="kcfg_SignedDisplayBase"/>
>+    </item>
>+    <item row="10" column="0">
>+     <widget class="QSpinBox" name="kcfg_UnsignedDisplayBase"/>
>+    </item>
>+    <item row="11" column="0" colspan="2">
>+     <widget class="QCheckBox" name="kcfg_AutoAdjustHeaders">
>+      <property name="text">
>+       <string>Adjust header widths automatically</string>
>+      </property>
>+     </widget>
>+    </item>
>+   </layout>
>+  </widget>
>  </widget>
>  <customwidgets>
>   <customwidget>
>diff --git a/kasten/controllers/view/structures/structview.cpp 
>b/kasten/controllers/view/structures/structview.cpp
>index df121dd..67da76a 100644
>--- a/kasten/controllers/view/structures/structview.cpp
>+++ b/kasten/controllers/view/structures/structview.cpp
>@@ -83,8 +83,14 @@ StructView::StructView(StructTool* tool, QWidget* parent) :
>     mStructTreeView->setSortingEnabled(false);
>     mStructTreeView->installEventFilter(this);
>     QHeaderView* header = mStructTreeView->header();
>-    header->setSectionResizeMode(QHeaderView::Interactive);
>-
>+    if (Kasten::StructViewPreferences::autoAdjustHeaders())
>+    {
>+        header->setSectionResizeMode(QHeaderView::ResizeToContents);
>+    }
>+    else
>+    {
>+        header->setSectionResizeMode(QHeaderView::Interactive);
>+    }
>     baseLayout->addWidget(mStructTreeView, 10);
> 
>     // settings
>@@ -166,12 +172,28 @@ void StructView::openSettingsDlg()
> 
>     //User edited the configuration - update your local copies of the 
> configuration data
>     connect(dialog, &KConfigDialog::settingsChanged, mTool, 
> &StructTool::setSelectedStructuresInView);
>+    connect(dialog, &KConfigDialog::settingsChanged, this, 
>&StructView::setAutoAdjustHeaders);
> 
> #pragma message("TODO: kconfig_compiler signals work now, use those signals 
> and not the generic KConfigDialog::settingsChanged")
>     dialog->setCurrentPage(displ);
>     dialog->show();
> }
> 
>+// Change the header resize policy of the structures view if the user changed 
>the setting.
>+void StructView::setAutoAdjustHeaders()
>+{
>+    QHeaderView* header = mStructTreeView->header();
>+    if (Kasten::StructViewPreferences::autoAdjustHeaders())
>+    {
>+        header->setSectionResizeMode(QHeaderView::ResizeToContents);
>+    }
>+    else
>+    {
>+        header->setSectionResizeMode(QHeaderView::Interactive);
>+    }
>+}
>+
>+
> bool StructView::eventFilter(QObject* object, QEvent* event)
> {
>     if (object == mStructTreeView)
>diff --git a/kasten/controllers/view/structures/structview.h 
>b/kasten/controllers/view/structures/structview.h
>index 404481e..a0bb28b 100644
>--- a/kasten/controllers/view/structures/structview.h
>+++ b/kasten/controllers/view/structures/structview.h
>@@ -75,6 +75,7 @@ protected Q_SLOTS:
>     void lockButtonToggled();
>     void setLockButtonState(bool structureLocked);
>     void onByteArrayModelChanged(Okteta::AbstractByteArrayModel* model);
>+    void setAutoAdjustHeaders();
> private:
>     void setLockButtonState(const QModelIndex& current);
> };
>-- 
>2.7.3
>

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to