class library: Volume - remove debug message
[supercollider.git] / QtCollider / widgets / QcListWidget.cpp
blob172739ef3b425f4c165f057a4ebd673ac6bdbdc5
1 /************************************************************************
3 * Copyright 2010-2012 Jakob Leben (jakob.leben@gmail.com)
5 * This file is part of SuperCollider Qt GUI.
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20 ************************************************************************/
22 #include "QcListWidget.h"
23 #include "../QcWidgetFactory.h"
25 #include <QKeyEvent>
27 class QcListWidgetFactory : public QcWidgetFactory<QcListWidget>
29 void initialize( QWidgetProxy *p, QcListWidget *l ) {
30 p->setMouseEventWidget( l->viewport() );
34 QC_DECLARE_FACTORY( QcListWidget, QcListWidgetFactory );
36 QcListWidget::QcListWidget() : _emitAction(true)
38 connect( this, SIGNAL( currentItemChanged( QListWidgetItem*, QListWidgetItem* ) ),
39 this, SLOT( onCurrentItemChanged() ) );
42 void QcListWidget::setItems( const VariantList & items )
44 _emitAction = false;
45 clear();
46 Q_FOREACH( QVariant item, items.data )
47 addItem( item.toString() );
48 setCurrentRow( 0 );
49 _emitAction = true;
52 void QcListWidget::setColors( const VariantList & colors ) const
54 int cc = colors.data.count();
55 int ic = count();
56 for( int i=0; i<cc && i < ic; ++i ) {
57 QListWidgetItem *it = item(i);
58 QColor color( colors.data[i].value<QColor>() );
59 if( color.isValid() ) it->setBackground( color );
63 void QcListWidget::setCurrentRowWithoutAction( int row )
65 bool b = _emitAction;
66 _emitAction = false;
67 setCurrentRow( row );
68 _emitAction = b;
71 void QcListWidget::onCurrentItemChanged()
73 if( _emitAction ) Q_EMIT( action() );
76 void QcListWidget::keyPressEvent( QKeyEvent *e )
78 QListWidget::keyPressEvent( e );
80 switch (e->key())
82 case Qt::Key_Return:
83 case Qt::Key_Enter:
84 Q_EMIT( returnPressed() );
85 e->accept();
86 break;
87 case Qt::Key_Up:
88 case Qt::Key_Down:
89 case Qt::Key_Left:
90 case Qt::Key_Right:
91 case Qt::Key_PageUp:
92 case Qt::Key_PageDown:
93 case Qt::Key_Home:
94 case Qt::Key_End:
95 // Prevent propagating to parent when scroller reaches minimum or maximum:
96 e->accept();
97 default: break;