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