okular/ui/searchwidget.cpp
Jakob Petsovits df5364da6c Copy Okular's app icon from Oxygen core as "okular",
in the hicolor namespace. Before, the non-specified
"graphics-viewer-document" icon was used, which caused
icon loaders from other toolkits not to find this icon
as they don't consider Oxygen by default.

Also update all the references that made use of the
"graphics-viewer-document" icon in the code and
the many .desktop files.

svn path=/trunk/KDE/kdegraphics/okular/; revision=819965
2008-06-12 18:51:36 +00:00

110 lines
3.9 KiB
C++

/***************************************************************************
* Copyright (C) 2004 by Enrico Ros <eros.kde@email.it> *
* *
* 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 "searchwidget.h"
// qt/kde includes
#include <qlayout.h>
#include <qmenu.h>
#include <qaction.h>
#include <qsizepolicy.h>
#include <qtoolbutton.h>
#include <kicon.h>
#include <klocale.h>
// local includes
#include "searchlineedit.h"
SearchWidget::SearchWidget( QWidget * parent, Okular::Document * document )
: QWidget( parent )
{
setObjectName( "iSearchBar" );
QSizePolicy sp = sizePolicy();
sp.setVerticalPolicy( QSizePolicy::Minimum );
setSizePolicy( sp );
QHBoxLayout * mainlay = new QHBoxLayout( this );
mainlay->setMargin( 0 );
mainlay->setSpacing( 3 );
// 2. text line
m_lineEdit = new SearchLineEdit( this, document );
m_lineEdit->setClearButtonShown( true );
m_lineEdit->setToolTip(i18n( "Enter at least 3 letters to filter pages" ));
m_lineEdit->setSearchCaseSensitivity( Qt::CaseInsensitive );
m_lineEdit->setSearchMinimumLength( 3 );
m_lineEdit->setSearchType( Okular::Document::GoogleAll );
m_lineEdit->setSearchId( SW_SEARCH_ID );
m_lineEdit->setSearchColor( qRgb( 0, 183, 255 ) );
mainlay->addWidget( m_lineEdit );
// 3.1. create the popup menu for changing filtering features
m_menu = new QMenu( this );
m_caseSensitiveAction = m_menu->addAction( i18n("Case Sensitive") );
m_menu->addSeparator();
m_matchPhraseAction = m_menu->addAction( i18n("Match Phrase") );
m_marchAllWordsAction = m_menu->addAction( i18n("Match All Words") );
m_marchAnyWordsAction = m_menu->addAction( i18n("Match Any Word") );
m_caseSensitiveAction->setCheckable( true );
QActionGroup *actgrp = new QActionGroup( this );
m_matchPhraseAction->setCheckable( true );
m_matchPhraseAction->setActionGroup( actgrp );
m_marchAllWordsAction->setCheckable( true );
m_marchAllWordsAction->setActionGroup( actgrp );
m_marchAnyWordsAction->setCheckable( true );
m_marchAnyWordsAction->setActionGroup( actgrp );
m_marchAllWordsAction->setChecked( true );
connect( m_menu, SIGNAL( triggered(QAction *) ), SLOT( slotMenuChaged(QAction*) ) );
// 3.2. create the toolbar button that spawns the popup menu
QToolButton *optionsMenuAction = new QToolButton( this );
mainlay->addWidget( optionsMenuAction );
optionsMenuAction->setAutoRaise( true );
optionsMenuAction->setIcon( KIcon( "view-filter" ) );
optionsMenuAction->setToolTip( i18n( "Filter Options" ) );
optionsMenuAction->setPopupMode( QToolButton::InstantPopup );
optionsMenuAction->setMenu( m_menu );
}
void SearchWidget::clearText()
{
m_lineEdit->clear();
}
void SearchWidget::slotMenuChaged( QAction * act )
{
// update internal variables and checked state
if ( act == m_caseSensitiveAction )
{
m_lineEdit->setSearchCaseSensitivity( m_caseSensitiveAction->isChecked() ? Qt::CaseSensitive : Qt::CaseInsensitive );
}
else if ( act == m_matchPhraseAction )
{
m_lineEdit->setSearchType( Okular::Document::AllDocument );
}
else if ( act == m_marchAllWordsAction )
{
m_lineEdit->setSearchType( Okular::Document::GoogleAll );
}
else if ( act == m_marchAnyWordsAction )
{
m_lineEdit->setSearchType( Okular::Document::GoogleAny );
}
else
return;
// update search
m_lineEdit->restartSearch();
}
#include "searchwidget.moc"