[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kmix/kmix-improvements] src/gui: gui: Remove horizontal scrollbars
From:       Trever Fischer <tdfischer () kde ! org>
Date:       2013-02-19 19:56:03
Message-ID: 20130219195603.4A2FFA60EC () git ! kde ! org
[Download RAW message or body]

Git commit 4ef94b240dceaf3f78bbfebf2b72fd8a7a9c4d30 by Trever Fischer.
Committed on 19/02/2013 at 20:55.
Pushed by tdfischer into branch 'kmix-improvements'.

gui: Remove horizontal scrollbars

M  +1    -0    src/gui/CMakeLists.txt
M  +2    -1    src/gui/ControlGroupTab.cpp
M  +2    -2    src/gui/ControlGroupTab.h
M  +6    -0    src/gui/ControlSlider.cpp
M  +2    -0    src/gui/ControlSlider.h
M  +10   -5    src/gui/KMixWindow.cpp
M  +1    -0    src/gui/KMixWindow.h
C  +17   -37   src/gui/VerticalScrollWidget.cpp [from: src/gui/KMixWindow.h - 055% \
similarity] C  +10   -37   src/gui/VerticalScrollWidget.h [from: src/gui/KMixWindow.h \
- 055% similarity]     [License: UNKNOWN]  *

The files marked with a * at the end have a non valid license. Please read: \
http://techbase.kde.org/Policies/Licensing_Policy and use the headers which are \
listed at that page.


http://commits.kde.org/kmix/4ef94b240dceaf3f78bbfebf2b72fd8a7a9c4d30

diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt
index 07053ee..226b883 100644
--- a/src/gui/CMakeLists.txt
+++ b/src/gui/CMakeLists.txt
@@ -5,6 +5,7 @@ set(kmix_KDEINIT_SRCS
    ControlSlider.cpp
    ControlGroupTab.cpp
    ControlMonitor.cpp
+   VerticalScrollWidget.cpp
 )
 
 qt4_add_dbus_interface(kmix_KDEINIT_SRCS ../dbus/org.kde.kmix.kmixd.xml
diff --git a/src/gui/ControlGroupTab.cpp b/src/gui/ControlGroupTab.cpp
index 6b134c0..eedb3ec 100644
--- a/src/gui/ControlGroupTab.cpp
+++ b/src/gui/ControlGroupTab.cpp
@@ -35,6 +35,7 @@ ControlGroupTab::ControlGroupTab(org::kde::KMix::ControlGroup \
*group, QWidget *p  , m_group(group)
 {
     m_layout = new QVBoxLayout(this);
+    m_layout->addStretch();
     m_emptyLabel = new QLabel(tr("No controls available."), this);
     m_emptyLabel->setGeometry(geometry());
     m_emptyLabel->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
@@ -63,7 +64,7 @@ void ControlGroupTab::controlAdded(const QString &path)
     qDebug() << "Discovered control" << path;
     org::kde::KMix::Control *control = new \
org::kde::KMix::Control(KMIX_DBUS_SERVICE, path, QDBusConnection::sessionBus());  \
                ControlSlider *slider = new ControlSlider(control, this);
-    m_layout->addWidget(slider);
+    m_layout->insertWidget(m_layout->count()-1, slider);
     m_controls[path] = slider;
     m_emptyLabel->hide();
 }
diff --git a/src/gui/ControlGroupTab.h b/src/gui/ControlGroupTab.h
index fd65eb8..8070662 100644
--- a/src/gui/ControlGroupTab.h
+++ b/src/gui/ControlGroupTab.h
@@ -24,7 +24,7 @@
 #include <QtGui/QWidget>
 #include <QtCore/QHash>
 
-class QLayout;
+class QBoxLayout;
 class ControlSlider;
 class QResizeEvent;
 class QLabel;
@@ -50,7 +50,7 @@ private slots:
     void controlRemoved(const QString &path);
 private:
     org::kde::KMix::ControlGroup *m_group;
-    QLayout *m_layout;
+    QBoxLayout *m_layout;
     QHash<QString, ControlSlider*> m_controls;
     QLabel *m_emptyLabel;
 };
diff --git a/src/gui/ControlSlider.cpp b/src/gui/ControlSlider.cpp
index 30f0d95..46cf193 100644
--- a/src/gui/ControlSlider.cpp
+++ b/src/gui/ControlSlider.cpp
@@ -178,5 +178,11 @@ void ControlSlider::handleTargetChange()
     }
 }
 
+QSize ControlSlider::minimumSizeHint() const
+{
+    QSize orig = QWidget::minimumSizeHint();
+    return QSize(400, orig.height());
+}
+
 
 #include "ControlSlider.moc"
diff --git a/src/gui/ControlSlider.h b/src/gui/ControlSlider.h
index ad1d304..3f2e1d1 100644
--- a/src/gui/ControlSlider.h
+++ b/src/gui/ControlSlider.h
@@ -43,6 +43,8 @@ class ControlSlider : public QWidget
 public:
     explicit ControlSlider(org::kde::KMix::Control *control, QWidget *parent = 0);
     ~ControlSlider();
+    QSize minimumSizeHint() const;
+
 private slots:
     void volumeChange(int channel, int level);
     void updateVolume(int channel);
diff --git a/src/gui/KMixWindow.cpp b/src/gui/KMixWindow.cpp
index 32bf45f..c8be085 100644
--- a/src/gui/KMixWindow.cpp
+++ b/src/gui/KMixWindow.cpp
@@ -26,6 +26,8 @@
 // include files for QT
 #include <QtGui/QHBoxLayout>
 #include <QtGui/QTabWidget>
+#include <QtGui/QScrollArea>
+#include <QtGui/QScrollBar>
 
 // include files for KDE
 #include <KDE/KActionCollection>
@@ -38,8 +40,8 @@
 // KMix
 #include "kmixd_interface.h"
 #include "controlgroup_interface.h"
-
 #include "ControlGroupTab.h"
+#include "VerticalScrollWidget.h"
 
 const QString KMIX_DBUS_SERVICE = "org.kde.kmixd";
 const QString KMIX_DBUS_PATH = "/KMixD";
@@ -56,12 +58,15 @@ KMixWindow::KMixWindow(QWidget* parent)
     initActions();
     createGUI( QLatin1String( "kmixui.rc" ) );
     show();
-    QTabWidget *mainWidget = new QTabWidget(this);
-    setCentralWidget(mainWidget);
+    m_tabs = new QTabWidget(this);
+    setCentralWidget(m_tabs);
     foreach(const QString &groupName, m_daemon->mixerGroups()) {
         org::kde::KMix::ControlGroup *group = new \
org::kde::KMix::ControlGroup(KMIX_DBUS_SERVICE, groupName, \
                QDBusConnection::sessionBus(), this);
-        QWidget *groupWidget = new ControlGroupTab(group, mainWidget);
-        mainWidget->addTab(groupWidget, group->displayName());
+        VerticalScrollWidget *scrollWidget = new VerticalScrollWidget(m_tabs);
+        scrollWidget->setFrameStyle(QFrame::StyledPanel | QFrame::Plain);
+        QWidget *groupWidget = new ControlGroupTab(group, scrollWidget);
+        scrollWidget->setWidget(groupWidget);
+        m_tabs->addTab(scrollWidget, group->displayName());
     }
 }
 
diff --git a/src/gui/KMixWindow.h b/src/gui/KMixWindow.h
index 8cc1c44..c7a37e7 100644
--- a/src/gui/KMixWindow.h
+++ b/src/gui/KMixWindow.h
@@ -56,6 +56,7 @@ private:
     org::kde::KMix::KMixD *m_daemon;
     KMixDockWidget *m_dockWidget;
     QHBoxLayout *m_layout;
+    QTabWidget *m_tabs;
 };
 
 #endif // KMIX_H
diff --git a/src/gui/KMixWindow.h b/src/gui/VerticalScrollWidget.cpp
similarity index 55%
copy from src/gui/KMixWindow.h
copy to src/gui/VerticalScrollWidget.cpp
index 8cc1c44..b7637cd 100644
--- a/src/gui/KMixWindow.h
+++ b/src/gui/VerticalScrollWidget.cpp
@@ -1,7 +1,7 @@
 /*
  * KMix -- KDE's full featured mini mixer
  *
- * Copyright (C) 2000 Stefan Schimanski <1Stein@gmx.de>
+ * Copyright (C) Trever Fischer <tdfischer@fedoraproject.org>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -18,44 +18,24 @@
  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \
                02110-1301, USA.
  */
 
-#ifndef KMIX_H
-#define KMIX_H
+#include "VerticalScrollWidget.h"
+#include <QtGui/QScrollBar>
 
-// Qt
-
-// KDE
-#include <kxmlguiwindow.h>
-
-// KMix
-class OrgKdeKMixKMixDInterface;
-namespace org {
-    namespace kde {
-        namespace KMix {
-            typedef ::OrgKdeKMixKMixDInterface KMixD;
-        }
-    }
+VerticalScrollWidget::VerticalScrollWidget(QWidget *parent)
+    : QScrollArea(parent)
+{
+    setWidgetResizable(true);
 }
 
-class KMixDockWidget;
-class QHBoxLayout;
-
-class
-KMixWindow : public KXmlGuiWindow
+VerticalScrollWidget::~VerticalScrollWidget()
 {
-   Q_OBJECT
-
-public:
-    KMixWindow(QWidget* parent = 0);
-    ~KMixWindow();
-
-private slots:
-    void launchPhononConfig();
-
-private:
-    void initActions();
-    org::kde::KMix::KMixD *m_daemon;
-    KMixDockWidget *m_dockWidget;
-    QHBoxLayout *m_layout;
-};
+}
 
-#endif // KMIX_H
+QSize VerticalScrollWidget::minimumSizeHint() const
+{
+    int width;
+    QSize origSize = QScrollArea::minimumSizeHint();
+    QSize childSize = widget()->minimumSizeHint();
+    width = qMax(origSize.width(), \
childSize.width())+contentsMargins().left()+contentsMargins().right(); +    return \
QSize(width+verticalScrollBar()->width(), origSize.height()); +}
diff --git a/src/gui/KMixWindow.h b/src/gui/VerticalScrollWidget.h
similarity index 55%
copy from src/gui/KMixWindow.h
copy to src/gui/VerticalScrollWidget.h
index 8cc1c44..c17b8c4 100644
--- a/src/gui/KMixWindow.h
+++ b/src/gui/VerticalScrollWidget.h
@@ -1,7 +1,7 @@
 /*
  * KMix -- KDE's full featured mini mixer
  *
- * Copyright (C) 2000 Stefan Schimanski <1Stein@gmx.de>
+ * Copyright (C) Trever Fischer <tdfischer@fedoraproject.org>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -18,44 +18,17 @@
  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \
                02110-1301, USA.
  */
 
-#ifndef KMIX_H
-#define KMIX_H
+#ifndef VERTICALSCROLLWIDGET_H
+#define VERTICALSCROLLWIDGET_H
 
-// Qt
-
-// KDE
-#include <kxmlguiwindow.h>
-
-// KMix
-class OrgKdeKMixKMixDInterface;
-namespace org {
-    namespace kde {
-        namespace KMix {
-            typedef ::OrgKdeKMixKMixDInterface KMixD;
-        }
-    }
-}
-
-class KMixDockWidget;
-class QHBoxLayout;
-
-class
-KMixWindow : public KXmlGuiWindow
-{
-   Q_OBJECT
+#include <QtGui/QScrollArea>
 
+class VerticalScrollWidget : public QScrollArea {
+    Q_OBJECT
 public:
-    KMixWindow(QWidget* parent = 0);
-    ~KMixWindow();
-
-private slots:
-    void launchPhononConfig();
-
-private:
-    void initActions();
-    org::kde::KMix::KMixD *m_daemon;
-    KMixDockWidget *m_dockWidget;
-    QHBoxLayout *m_layout;
+    VerticalScrollWidget(QWidget *parent);
+    ~VerticalScrollWidget();
+    QSize minimumSizeHint() const;
 };
 
-#endif // KMIX_H
+#endif // VERTICALSCROLLWIDGET_H


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic