findwidget.cpp
author insilmaril
Mon, 08 Mar 2010 12:21:46 +0000
changeset 827 a591443f229c
parent 825 1ad892c1a709
child 829 832e96c9abb6
permissions -rw-r--r--
Added missing flag for Bugzilla
insilmaril@808
     1
#include <QLineEdit>
insilmaril@808
     2
#include <QVBoxLayout>
insilmaril@808
     3
#include <QLabel>
insilmaril@808
     4
insilmaril@825
     5
#include <QComboBox>
insilmaril@825
     6
#include <QPushButton>
insilmaril@825
     7
#include <QGroupBox>
insilmaril@825
     8
#include <QLabel>
insilmaril@825
     9
insilmaril@825
    10
insilmaril@808
    11
#include "findwidget.h"
insilmaril@808
    12
insilmaril@808
    13
insilmaril@811
    14
extern QString iconPath;
insilmaril@808
    15
insilmaril@810
    16
FindWidget::FindWidget(QWidget *)
insilmaril@808
    17
{
insilmaril@808
    18
    QVBoxLayout* mainLayout = new QVBoxLayout;
insilmaril@808
    19
    QHBoxLayout *row2Layout = new QHBoxLayout;
insilmaril@808
    20
    
insilmaril@808
    21
	// Create Buttons
insilmaril@808
    22
	cancelbutton = new QPushButton;
insilmaril@811
    23
	//cancelbutton->setText(tr("Cancel"));
insilmaril@811
    24
	cancelbutton->setIcon (QIcon (iconPath+"fileclose.png"));
insilmaril@808
    25
	cancelbutton->setShortcut (Qt::Key_Escape);
insilmaril@808
    26
	connect ( cancelbutton, SIGNAL( clicked() ), this, SLOT( cancelPressed() ) );
insilmaril@808
    27
	
insilmaril@810
    28
	QLabel *label=new QLabel;
insilmaril@810
    29
	label->setText (tr("Find:","FindWidget"));
insilmaril@810
    30
	
insilmaril@808
    31
	// Create LineEdit (here QComboBox)
insilmaril@808
    32
    findcombo = new QComboBox;
insilmaril@808
    33
	findcombo->setMinimumWidth(250);
insilmaril@808
    34
	findcombo->setEditable(true);
insilmaril@811
    35
insilmaril@811
    36
	QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
insilmaril@811
    37
    findcombo->setSizePolicy(sizePolicy);
insilmaril@808
    38
	connect ( findcombo, SIGNAL( highlighted(int) ), 
insilmaril@808
    39
		this, SLOT( nextPressed() ) );
insilmaril@808
    40
	connect ( findcombo, SIGNAL( textChanged(const QString &) ), 
insilmaril@808
    41
		this, SLOT( findTextChanged(const QString&) ) );
insilmaril@808
    42
insilmaril@808
    43
	nextbutton = new QPushButton;
insilmaril@808
    44
	nextbutton->setText (tr("Next","Find widget"));
insilmaril@810
    45
	nextbutton->setDefault (true);
insilmaril@810
    46
	nextbutton->setShortcut (Qt::Key_Return);
insilmaril@810
    47
	//nextbutton->setShortcutContext (Qt::WidgetShortcut);
insilmaril@808
    48
	connect ( nextbutton, SIGNAL( clicked() ), this, SLOT( nextPressed() ) );
insilmaril@808
    49
insilmaril@808
    50
	row2Layout->addWidget (cancelbutton);
insilmaril@810
    51
	row2Layout->addWidget (label);
insilmaril@808
    52
	row2Layout->addWidget(findcombo);
insilmaril@808
    53
	row2Layout->addWidget(nextbutton);
insilmaril@808
    54
insilmaril@808
    55
	mainLayout->addLayout (row2Layout);
insilmaril@808
    56
insilmaril@808
    57
	setLayout (mainLayout);
insilmaril@811
    58
	status=Undefined;
insilmaril@808
    59
}
insilmaril@808
    60
insilmaril@808
    61
void FindWidget::popup()
insilmaril@808
    62
{
insilmaril@808
    63
	show();
insilmaril@808
    64
	findcombo->lineEdit()->selectAll();
insilmaril@808
    65
	findcombo->setFocus();
insilmaril@811
    66
	setStatus (Undefined);
insilmaril@808
    67
}
insilmaril@808
    68
insilmaril@808
    69
void FindWidget::cancelPressed()
insilmaril@808
    70
{
insilmaril@808
    71
	hide();
insilmaril@812
    72
	emit (hideFindWidget() );
insilmaril@808
    73
}
insilmaril@808
    74
insilmaril@808
    75
void FindWidget::nextPressed()
insilmaril@808
    76
{
insilmaril@808
    77
	emit (nextButton(findcombo->currentText() ) );
insilmaril@808
    78
}
insilmaril@808
    79
insilmaril@808
    80
void FindWidget::findTextChanged(const QString&)
insilmaril@808
    81
{
insilmaril@811
    82
	setStatus (Undefined);
insilmaril@808
    83
}
insilmaril@808
    84
insilmaril@810
    85
void FindWidget::setStatus (Status st)
insilmaril@810
    86
{
insilmaril@811
    87
	if (st==status) return;
insilmaril@811
    88
insilmaril@811
    89
	status=st;
insilmaril@810
    90
	QPalette p=palette();
insilmaril@810
    91
	QColor c;
insilmaril@810
    92
	switch (st)
insilmaril@810
    93
	{
insilmaril@811
    94
		case Success: c=QColor (120,255,120); break;
insilmaril@811
    95
		case Failed:  c=QColor (255,120,120); break;
insilmaril@810
    96
		default:  c=QColor (255,255,255); 
insilmaril@810
    97
	}
insilmaril@810
    98
    p.setColor(QPalette::Active, static_cast<QPalette::ColorRole>(9), c);
insilmaril@810
    99
    p.setColor(QPalette::Inactive, static_cast<QPalette::ColorRole>(9), c);
insilmaril@810
   100
    findcombo->setPalette(p);
insilmaril@810
   101
}
insilmaril@810
   102