summaryrefslogtreecommitdiffstats
path: root/kmid/rhythmview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kmid/rhythmview.cpp')
-rw-r--r--kmid/rhythmview.cpp108
1 files changed, 108 insertions, 0 deletions
diff --git a/kmid/rhythmview.cpp b/kmid/rhythmview.cpp
new file mode 100644
index 00000000..2b9136aa
--- /dev/null
+++ b/kmid/rhythmview.cpp
@@ -0,0 +1,108 @@
+/**************************************************************************
+
+ rhythmview.cpp - The RhythmView widget
+ Copyright (C) 1998 Antonio Larrosa Jimenez
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ Send comments and bug fixes to larrosa@kde.org
+ or to Antonio Larrosa, Rio Arnoya, 10 5B, 29006 Malaga, Spain
+
+***************************************************************************/
+#include "rhythmview.h"
+
+RhythmView::RhythmView (QWidget *parent, const char *name) : QWidget (parent,name)
+{
+ lamps=NULL;
+ setRhythm(4,4);
+}
+
+RhythmView::~RhythmView()
+{
+ if (lamps!=NULL)
+ {
+ for (int i=0;i<num;i++) delete lamps[i];
+ delete [] lamps;
+ lamps=NULL;
+ }
+}
+
+void RhythmView::setRhythm(int numerator,int denominator)
+{
+ int i;
+ if (lamps!=NULL)
+ {
+ for (i=0;i<num;i++) delete lamps[i];
+ delete [] lamps;
+ lamps=NULL;
+ }
+ num=numerator;
+ den=denominator;
+
+ lamps=new KLed *[num];
+ int w=width()/num;
+ int x=0;
+
+ for (i=0;i<num;i++)
+ {
+ lamps[i]=new KLed(Qt::yellow, KLed::Off, KLed::Sunken, KLed::Rectangular, this);
+// lamps[i]->setState(KLed::Off);
+ lamps[i]->setGeometry(x+2,0,w-4,height());
+ lamps[i]->show();
+ x+=w;
+ }
+// lamps[0]->setState(KLed::On);
+
+}
+
+void RhythmView::Beat(int j)
+{
+ if (j>num) setRhythm(j,4); // This is a preventive case
+
+ for (int i=0;i<num;i++)
+ {
+ lamps[i]->off();
+ }
+ lamps[j-1]->on();
+}
+
+void RhythmView::Beat(void)
+{
+
+}
+
+void RhythmView::resizeEvent(QResizeEvent *)
+{
+ int w=width()/num;
+ int x=0;
+
+ for (int i=0;i<num;i++)
+ {
+ lamps[i]->setGeometry(x+2,0,w-4,height());
+ x+=w;
+ }
+}
+
+QSize RhythmView::sizeHint()
+{
+ return QSize(10,10);
+}
+
+QSizePolicy RhythmView::sizePolicy()
+{
+// return QWidget::sizePolicy();
+ return QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Minimum);
+}
+