|
|
|
/* This file is part of the KDE project
|
|
|
|
Copyright (C) 2005 by Tobi Vollebregt <tobivollebregt@gmail.com>
|
|
|
|
Copyright (C) 2004 by Vinay Khaitan <vkhaitan@iitk.ac.in>
|
|
|
|
Copyright (C) 2004 Arend van Beelen jr. <arend@auton.nl>
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with this program; see the file COPYING. If not, write to
|
|
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
|
|
Boston, MA 02110-1301, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef SEARCHBAR_PLUGIN
|
|
|
|
#define SEARCHBAR_PLUGIN
|
|
|
|
|
|
|
|
#include <kcombobox.h>
|
|
|
|
#include <klibloader.h>
|
|
|
|
#include <tdeparts/plugin.h>
|
|
|
|
#include <tdeparts/mainwindow.h>
|
|
|
|
|
|
|
|
#include <tqguardedptr.h>
|
|
|
|
#include <tqpixmap.h>
|
|
|
|
#include <tqstring.h>
|
|
|
|
|
|
|
|
class TDEHTMLPart;
|
|
|
|
class TDEProcess;
|
|
|
|
class TQPopupMenu;
|
|
|
|
class TQTimer;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Combo box which catches mouse clicks on the pixmap.
|
|
|
|
*/
|
|
|
|
class SearchBarCombo : public KHistoryCombo
|
|
|
|
{
|
|
|
|
TQ_OBJECT
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
* Constructor.
|
|
|
|
*/
|
|
|
|
SearchBarCombo(TQWidget *parent, const char *name);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the icon currently displayed in the combo box.
|
|
|
|
*/
|
|
|
|
const TQPixmap &icon() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the icon displayed in the combo box.
|
|
|
|
*/
|
|
|
|
void setIcon(const TQPixmap &icon);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Finds a history item by its text.
|
|
|
|
* @return The item number, or -1 if the item is not found.
|
|
|
|
*/
|
|
|
|
int findHistoryItem(const TQString &text);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets whether the plugin is active. It can be inactive
|
|
|
|
* in case the current Konqueror part isn't a TDEHTML part.
|
|
|
|
*/
|
|
|
|
void setPluginActive(bool pluginActive);
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
virtual void show();
|
|
|
|
|
|
|
|
signals:
|
|
|
|
/**
|
|
|
|
* Emitted when the icon was clicked.
|
|
|
|
*/
|
|
|
|
void iconClicked();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
/**
|
|
|
|
* Captures mouse clicks and emits iconClicked() if the icon
|
|
|
|
* was clicked.
|
|
|
|
*/
|
|
|
|
virtual void mousePressEvent(TQMouseEvent *e);
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
void historyCleared();
|
|
|
|
|
|
|
|
private:
|
|
|
|
TQPixmap m_icon;
|
|
|
|
bool m_pluginActive;
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Plugin that provides a search bar for Konqueror. This search bar is located
|
|
|
|
* next to the location bar and will show a small icon indicating the search
|
|
|
|
* provider it will use.
|
|
|
|
*
|
|
|
|
* @author Arend van Beelen jr. <arend@auton.nl>
|
|
|
|
* @version $Id$
|
|
|
|
*/
|
|
|
|
class SearchBarPlugin : public KParts::Plugin
|
|
|
|
{
|
|
|
|
TQ_OBJECT
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
/** Possible search modes */
|
|
|
|
enum SearchModes { FindInThisPage = 0, UseSearchProvider };
|
|
|
|
|
|
|
|
SearchBarPlugin(TQObject *parent, const char *name,
|
|
|
|
const TQStringList &);
|
|
|
|
virtual ~SearchBarPlugin();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
bool eventFilter(TQObject *o, TQEvent *e);
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
/**
|
|
|
|
* Starts a search by putting the query URL from the selected
|
|
|
|
* search provider in the locationbar and calling goURL()
|
|
|
|
*/
|
|
|
|
void startSearch(const TQString &search);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the icon to indicate which search engine is used.
|
|
|
|
*/
|
|
|
|
void setIcon();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Opens the selection menu.
|
|
|
|
*/
|
|
|
|
void showSelectionMenu();
|
|
|
|
|
|
|
|
void useFindInThisPage();
|
|
|
|
void useSearchProvider(int);
|
|
|
|
void selectSearchEngines();
|
|
|
|
void searchEnginesSelected(TDEProcess *process);
|
|
|
|
void configurationChanged();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* We keep track of part activations to know when to show or hide ourselves
|
|
|
|
*/
|
|
|
|
void partChanged(KParts::Part *newPart);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Show or hide the combo box
|
|
|
|
*/
|
|
|
|
void updateComboVisibility();
|
|
|
|
|
|
|
|
void focusSearchbar();
|
|
|
|
|
|
|
|
// Google Suggest private slots
|
|
|
|
void selectGoogleSuggestMode();
|
|
|
|
void gsStartDelay();
|
|
|
|
void gsMakeCompletionList();
|
|
|
|
void gsDataArrived(TDEIO::Job*, const TQByteArray& data);
|
|
|
|
void gsJobFinished(TDEIO::Job* job);
|
|
|
|
void gsSetCompletedText(const TQString& text);
|
|
|
|
void gsPutTextInBox(const TQString& text);
|
|
|
|
|
|
|
|
signals:
|
|
|
|
|
|
|
|
// Google Suggest signals
|
|
|
|
|
|
|
|
void gsCompleteDelayed();
|
|
|
|
|
|
|
|
private:
|
|
|
|
void nextSearchEntry();
|
|
|
|
void previousSearchEntry();
|
|
|
|
|
|
|
|
TQGuardedPtr<TDEHTMLPart> m_part;
|
|
|
|
SearchBarCombo *m_searchCombo;
|
|
|
|
KWidgetAction *m_searchComboAction;
|
|
|
|
TQPopupMenu *m_popupMenu;
|
|
|
|
TDESelectAction *m_googleMenu;
|
|
|
|
TQPixmap m_searchIcon;
|
|
|
|
SearchModes m_searchMode;
|
|
|
|
TQString m_providerName;
|
|
|
|
bool m_urlEnterLock;
|
|
|
|
TQString m_currentEngine;
|
|
|
|
TQStringList m_searchEngines;
|
|
|
|
|
|
|
|
// Google Suggest private members
|
|
|
|
|
|
|
|
TQTimer m_gsTimer;
|
|
|
|
TQString m_gsData;
|
|
|
|
enum GoogleMode {GoogleOnly,ForAll,Never};
|
|
|
|
GoogleMode m_googleMode;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // SEARCHBAR_PLUGIN
|