traverso-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Traverso-commit] traverso/src/traverso Interface.cpp widgets/Tra...


From: Nicola Doebelin
Subject: [Traverso-commit] traverso/src/traverso Interface.cpp widgets/Tra...
Date: Sun, 18 May 2008 20:55:33 +0000

CVSROOT:        /sources/traverso
Module name:    traverso
Changes by:     Nicola Doebelin <n_doebelin>    08/05/18 20:55:33

Modified files:
        src/traverso   : Interface.cpp 
        src/traverso/widgets: TransportConsoleWidget.cpp 
                              TransportConsoleWidget.h 

Log message:
        * some changes to the transport console to make resizing more reliable
        * some mac specific tweaks to the interface (text below icons of 
toolbars)

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/Interface.cpp?cvsroot=traverso&r1=1.140&r2=1.141
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/widgets/TransportConsoleWidget.cpp?cvsroot=traverso&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/widgets/TransportConsoleWidget.h?cvsroot=traverso&r1=1.2&r2=1.3

Patches:
Index: Interface.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/Interface.cpp,v
retrieving revision 1.140
retrieving revision 1.141
diff -u -b -r1.140 -r1.141
--- Interface.cpp       15 May 2008 08:29:26 -0000      1.140
+++ Interface.cpp       18 May 2008 20:55:33 -0000      1.141
@@ -113,7 +113,7 @@
        //         setMaximumWidth(1024);
        //         setMaximumHeight(768);
 
-       setUnifiedTitleAndToolBarOnMac(false);
+       setUnifiedTitleAndToolBarOnMac(true);
 
        // CenterAreaWidget
        centerAreaWidget = new QStackedWidget(this);
@@ -180,6 +180,14 @@
        m_editToolBar->setObjectName("Edit Toolbar");
        addToolBar(m_editToolBar);
 
+       #if defined Q_WS_MAC
+               
m_projectToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
+               m_projectToolBar->setIconSize(QSize(20, 20));
+       
+               m_editToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
+               m_editToolBar->setIconSize(QSize(20, 20));
+       #endif
+
        // Some default values.
        currentSheetWidget = 0;
        m_exportDialog = 0;

Index: widgets/TransportConsoleWidget.cpp
===================================================================
RCS file: 
/sources/traverso/traverso/src/traverso/widgets/TransportConsoleWidget.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- widgets/TransportConsoleWidget.cpp  16 May 2008 07:40:13 -0000      1.4
+++ widgets/TransportConsoleWidget.cpp  18 May 2008 20:55:33 -0000      1.5
@@ -29,12 +29,57 @@
 #include <QAction>
 #include <QSize>
 #include <QFrame>
+#include <QApplication>
 
 // Always put me below _all_ includes, this is needed
 // in case we run with memory leak detection enabled!
 #include "Debugger.h"
 
 static const int HEIGHT_THRESHOLD = 90;
+static const float FONT_HEIGHT = 0.8;
+
+TimeLabel::TimeLabel(QWidget* parent)
+       : QFrame(parent)
+{
+       font = QApplication::font();
+       setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
+       setSizePolicy(QSizePolicy(QSizePolicy::Expanding, 
QSizePolicy::Expanding));
+       calc_font_size();
+}
+
+void TimeLabel::set_time(QString s)
+{
+       time = s;
+       update();
+}
+
+void TimeLabel::paintEvent(QPaintEvent *)
+{
+       QPainter p(this);
+               p.setFont(font);
+               p.drawText(0, 0, width(), height(), Qt::AlignCenter, time);
+       p.end();
+}
+
+void TimeLabel::resizeEvent(QResizeEvent *)
+{
+       calc_font_size();
+       update();
+}
+
+void TimeLabel::calc_font_size()
+{
+       font.setPixelSize(int(FONT_HEIGHT * height()));
+
+       QFontMetrics fm(font);
+       int w = fm.width(time);
+
+       if (w >= width())
+       {
+               font.setPixelSize(int((FONT_HEIGHT * height() * width()) / w));
+       }
+}
+
 
 TransportConsoleWidget::TransportConsoleWidget(QWidget* parent)
        : QWidget(parent)
@@ -42,12 +87,8 @@
        setEnabled(false);
 
        m_layout = new QGridLayout(this);
-       m_label = new QLabel(this);
-       m_label->setAlignment(Qt::AlignCenter);
-       m_label->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, 
QSizePolicy::Expanding));
+       m_label = new TimeLabel(this);
        m_label->setMinimumWidth(80);
-       m_label->setScaledContents(true);
-       m_label->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
 
        QToolButton* buttonToStart = new QToolButton(this);
        QToolButton* buttonToLeft = new QToolButton(this);
@@ -94,7 +135,12 @@
        buttonToEnd->setDefaultAction(m_toEndAction);
        buttonToRight->setDefaultAction(m_toRightAction);
 
+       if (height() < HEIGHT_THRESHOLD)
+       {
+               m_layout->addWidget(m_label, 1, 6, 1, 1);
+       } else {
        m_layout->addWidget(m_label,    0, 0, 1, 6);
+       }
        m_layout->addWidget(buttonToStart, 1, 0, 1, 1);
        m_layout->addWidget(buttonToLeft,  1, 1, 1, 1);
        m_layout->addWidget(buttonRec,     1, 2, 1, 1);
@@ -107,7 +153,6 @@
 
        connect(&pm(), SIGNAL(projectLoaded(Project*)), this, 
SLOT(set_project(Project*)));
        connect(&m_updateTimer, SIGNAL(timeout()), this, SLOT(update_label()));
-       resize(width(), height());
 }
 
 
@@ -198,9 +243,10 @@
 
 void TransportConsoleWidget::transfer_started()
 {
-       // use an odd number for the update interval.
-       // with round numbers the last digit stays the same
-       // most of the time, but not always, which looks jerky
+    // use an odd number for the update interval, because
+       // a round number (e.g. 100) lets the last digit stay
+       // the same most of the time, but not always, which 
+       // looks jerky
        m_updateTimer.start(123);
        m_playAction->setChecked(true);
        m_playAction->setIcon(QIcon(":/playstop"));
@@ -245,12 +291,6 @@
 
 void TransportConsoleWidget::resizeEvent(QResizeEvent * e)
 {
-       // scale the font in the text label
-       QFont font = m_label->font();
-       int fs = 0.5 * m_label->height();
-       font.setPixelSize(fs);
-       m_label->setFont(font);
-
        // position the text label depending on the widget size
        if ((e->oldSize().height() >= HEIGHT_THRESHOLD) && (e->size().height() 
< HEIGHT_THRESHOLD))
        {
@@ -284,7 +324,7 @@
        } else {
                currentTime = 
timeref_to_ms_2(m_sheet->get_transport_location());
        }
-       m_label->setText(currentTime);
+       m_label->set_time(currentTime);
 }
 
 //eof

Index: widgets/TransportConsoleWidget.h
===================================================================
RCS file: 
/sources/traverso/traverso/src/traverso/widgets/TransportConsoleWidget.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- widgets/TransportConsoleWidget.h    14 May 2008 17:49:28 -0000      1.2
+++ widgets/TransportConsoleWidget.h    18 May 2008 20:55:33 -0000      1.3
@@ -24,8 +24,11 @@
 
 #include <QWidget>
 #include <QGridLayout>
-#include <QLabel>
+#include <QFrame>
 #include <QTimer>
+#include <QEvent>
+#include <QFont>
+#include <QString>
 
 #include "defines.h"
 
@@ -33,6 +36,29 @@
 class Sheet;
 
 
+class TimeLabel : public QFrame
+{
+Q_OBJECT
+
+public:
+               TimeLabel(QWidget* parent = 0);
+               ~TimeLabel() {};
+
+public slots:
+               void set_time(QString);
+
+protected:
+               void paintEvent(QPaintEvent *);
+               void resizeEvent(QResizeEvent *);
+               
+private:
+               QFont   font;
+               QString time;
+               
+               void calc_font_size();
+};
+
+
 class TransportConsoleWidget : public QWidget
 {
 Q_OBJECT
@@ -53,7 +79,7 @@
        QAction*        m_playAction;
        QAction*        m_toEndAction;
        QAction*        m_toRightAction;
-       QLabel*         m_label;
+       TimeLabel*      m_label;
        QTimer          m_updateTimer;
        QTimer          m_skipTimer;
        TimeRef         m_lastSnapPosition;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]