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
|
/***************************************************************************
MultiStateWidget.cpp - provides methods of multistateWidget a Class that
switches the image it, displays on clicking, used
for the channel enable/disable lamps...
-------------------
begin : Sun Jun 04 2000
copyright : (C) 2000 by Martin Wilz
email : martin@wilz.de
***************************************************************************/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
#include <QDir>
#include <QMouseEvent>
#include <QPainter>
#include <QStandardPaths>
#include <QString>
#include "libkwave/String.h"
#include "libgui/MultiStateWidget.h"
//***************************************************************************
Kwave::MultiStateWidget::MultiStateWidget(QWidget *parent, int id)
:QWidget(parent), m_current_index(0), m_identifier(id), m_pixmaps()
{
resize(20, 20);
}
//***************************************************************************
Kwave::MultiStateWidget::~MultiStateWidget()
{
m_pixmaps.clear();
}
//***************************************************************************
void Kwave::MultiStateWidget::setID(int id)
{
m_identifier = id;
}
//***************************************************************************
void Kwave::MultiStateWidget::addPixmap(const QString &filename)
{
QString pics_dir = _("pics");
QString path = QStandardPaths::locate(
QStandardPaths::AppDataLocation,
pics_dir + QDir::separator() + filename,
QStandardPaths::LocateFile);
QPixmap newpix(path);
m_pixmaps.append(newpix);
}
//***************************************************************************
void Kwave::MultiStateWidget::setState(int state)
{
m_current_index = (state % m_pixmaps.count());
repaint();
}
//***************************************************************************
void Kwave::MultiStateWidget::switchState(bool on)
{
setState((on) ? 1 : 0);
}
//***************************************************************************
void Kwave::MultiStateWidget::nextState()
{
setState(m_current_index + 1);
emit clicked(m_identifier);
}
//***************************************************************************
void Kwave::MultiStateWidget::mouseReleaseEvent(QMouseEvent *e)
{
if (e && (e->button() == Qt::LeftButton)) {
nextState();
}
}
//***************************************************************************
void Kwave::MultiStateWidget::paintEvent(QPaintEvent *)
{
QPainter p(this);
p.drawPixmap(0, 0, m_pixmaps[m_current_index]);
}
//***************************************************************************
//***************************************************************************
#include "moc_MultiStateWidget.cpp"
|