summaryrefslogtreecommitdiff
path: root/muse2/muse/transport.h
blob: ce8dcf1b3709919290843008e32732137d650aae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
//=========================================================
//  MusE
//  Linux Music Editor
//  $Id: transport.h,v 1.4 2004/06/28 21:13:16 wschweer Exp $
//
//  (C) Copyright 1999/2000 Werner Schweer (ws@seh.de)
//=========================================================

#ifndef __TRANSPORT_H__
#define __TRANSPORT_H__

#include "al/sig.h"

#include <QWidget>

namespace Awl {
      class PosEdit;
      };

using Awl::PosEdit;

class QComboBox;
class QHBoxLayout;
class QLabel;
class QSlider;
class QToolButton;

class DoubleLabel;
class SigLabel;
class Pos;

//---------------------------------------------------------
//    TempoSig
//---------------------------------------------------------

class TempoSig : public QWidget {
    Q_OBJECT
    
      DoubleLabel* l1;
      SigLabel* l2;
      QLabel* l3;
      

   private slots:
      void configChanged();

   public slots:
      void setTempo(double);
      void setTempo(int tempo);

   signals:
      void tempoChanged(int);
      void sigChanged(const AL::TimeSignature&);

   public:
      TempoSig(QWidget* parent=0);
      void setTimesig(int a, int b);
      };

//---------------------------------------------------------
//   Handle
//---------------------------------------------------------

class Handle : public QWidget {
      QWidget* rootWin;
      int dx, dy;
      void mouseMoveEvent(QMouseEvent* ev);
      void mousePressEvent(QMouseEvent* ev);
   public:
      Handle(QWidget* r, QWidget* parent=0);
      };

class TimeLLabel;

//---------------------------------------------------------
//   Transport
//---------------------------------------------------------

class Transport : public QWidget
      {
      Q_OBJECT
    
      PosEdit* tl1;           // left mark
      PosEdit* tl2;           // right mark
      PosEdit* time1;         // tick time
      PosEdit* time2;         // SMPTE
      
      QSlider* slider;
      TempoSig* tempo;
      QHBoxLayout* tb;
      QToolButton* masterButton;
      QComboBox* recMode;
      QComboBox* cycleMode;
      QToolButton* quantizeButton;
      QToolButton* clickButton;
      QToolButton* syncButton;
      QToolButton* jackTransportButton;
      QToolButton* buttons[6];      // transport buttons
      QLabel* l2;
      QLabel* l3;
      QLabel* l5;
      QLabel* l6;

      Handle *lefthandle, *righthandle;

 private slots:
      void cposChanged(const Pos&);
      void cposChanged(int);
      void lposChanged(const Pos&);
      void rposChanged(const Pos&);
      void setRecMode(int);
      void setCycleMode(int);
      void songChanged(int);
      void syncChanged(bool);
      void jackSyncChanged(bool);
      void setRecord(bool flag);
      void stopToggled(bool);
      void playToggled(bool);
      void configChanged();

   public slots:
      void setTempo(int tempo);
      void setTimesig(int a, int b);
      void setPos(int,unsigned, bool);
      void setMasterFlag(bool);
      void setClickFlag(bool);
      void setQuantizeFlag(bool);
      void setSyncFlag(bool);
      void setPlay(bool f);
      void setHandleColor(QColor);

   public:
      Transport(QWidget* parent, const char* name = 0);
      ~Transport();
      QColor getHandleColor() const { return lefthandle->palette().color(QPalette::Window); }
      };
#endif