[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