You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdemultimedia/kmid/channelview.cpp

166 lines
4.2 KiB

/**************************************************************************
channelview.cpp - The ChannelView dialog
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Send comments and bug fixes to larrosa@kde.org
or to Antonio Larrosa, Rio Arnoya, 10 5B, 29006 Malaga, Spain
***************************************************************************/
#include <kapplication.h>
#include <klocale.h>
#include "channelview.h"
#include "channel3d.h"
#include "channel4d.h"
#include <kconfig.h>
ChannelView::ChannelView(void) : KMainWindow(0, "ChannelView")
{
setCaption(i18n("Channel View"));
for (int i=0;i<16;i++)
{
if (lookMode()==0)
Channel[i]=new KMidChannel3D(i+1,this);
else
Channel[i]=new KMidChannel4D(i+1,this);
connect(Channel[i],TQT_SIGNAL(signalToKMidClient(int *)),this,TQT_SLOT(slottokmidclient(int *)));
Channel[i]->setGeometry(5,5+i*CHANNELHEIGHT,width()-20,CHANNELHEIGHT);
Channel[i]->show();
}
scrollbar=new TQScrollBar(1,16,1,1,1,Qt::Vertical,this,"Channelscrollbar");
connect(scrollbar,TQT_SIGNAL(valueChanged(int)),this,TQT_SLOT(ScrollChn(int)));
setScrollBarRange();
}
ChannelView::~ChannelView()
{
}
void ChannelView::closeEvent(TQCloseEvent *e)
{
emit destroyMe();
e->accept();
}
void ChannelView::resizeEvent(TQResizeEvent *)
{
scrollbar->setGeometry(width()-16,0,16,height());
for (int i=0;i<16;i++)
{
Channel[i]->setGeometry(5,5+(i-(scrollbar->value()-1))*CHANNELHEIGHT,width()-20,CHANNELHEIGHT);
}
setScrollBarRange();
}
void ChannelView::setScrollBarRange(void)
{
nvisiblechannels=height()/CHANNELHEIGHT;
if (nvisiblechannels<16)
scrollbar->setRange(1,16-nvisiblechannels+1);
else
scrollbar->setRange(1,1);
}
void ChannelView::ScrollChn(int v)
{
for (int i=0;i<16;i++)
{
Channel[i]->move(5,5+(i-(v-1))*CHANNELHEIGHT);
}
}
void ChannelView::noteOn(int chn,int note)
{
Channel[chn]->noteOn(note);
}
void ChannelView::noteOff(int chn,int note)
{
Channel[chn]->noteOff(note);
}
void ChannelView::changeInstrument(int chn,int pgm)
{
Channel[chn]->changeInstrument(pgm);
}
void ChannelView::changeForceState(int chn,bool i)
{
Channel[chn]->changeForceState(i);
}
void ChannelView::reset(int level)
{
for (int i=0;i<16;i++)
{
Channel[i]->reset(level);
}
}
int ChannelView::lookmode=0;
int ChannelView::lookMode(void)
{
KConfig *kcfg=(KApplication::kApplication())->config();
kcfg->setGroup("KMid");
lookmode=kcfg->readNumEntry("ChannelViewLookMode",0);
return lookmode;
}
void ChannelView::lookMode(int i)
{
KConfig *kcfg=(KApplication::kApplication())->config();
lookmode=i;
kcfg->setGroup("KMid");
kcfg->writeEntry("ChannelViewLookMode",lookmode);
bool tmp[128];
int pgm;
for (int i=0;i<16;i++)
{
Channel[i]->saveState(tmp,&pgm);
delete Channel[i];
if (lookmode==0)
Channel[i]=new KMidChannel3D(i+1,this);
else
Channel[i]=new KMidChannel4D(i+1,this);
connect(Channel[i],TQT_SIGNAL(signalToKMidClient(int *)),this,TQT_SLOT(slottokmidclient(int *)));
Channel[i]->setGeometry(5,5+(i-(scrollbar->value()-1))*CHANNELHEIGHT,width()-20,CHANNELHEIGHT);
Channel[i]->loadState(tmp,&pgm);
Channel[i]->show();
}
}
void ChannelView::slottokmidclient(int *data)
{
emit signalToKMidClient(data);
}
#include "channelview.moc"