diff options
Diffstat (limited to 'kmid/rhythmview.cpp')
-rw-r--r-- | kmid/rhythmview.cpp | 108 |
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); +} + |