|
|
|
/***************************************************************************
|
|
|
|
* Copyright (C) 2005 by Joris Guisson *
|
|
|
|
* joris.guisson@gmail.com *
|
|
|
|
* *
|
|
|
|
* 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; if not, write to the *
|
|
|
|
* Free Software Foundation, Inc., *
|
|
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
|
|
|
***************************************************************************/
|
|
|
|
#include <kgenericfactory.h>
|
|
|
|
#include <kglobal.h>
|
|
|
|
#include <klocale.h>
|
|
|
|
#include <kiconloader.h>
|
|
|
|
#include <kstdaction.h>
|
|
|
|
#include <kpopupmenu.h>
|
|
|
|
#include <kapplication.h>
|
|
|
|
#include <kstandarddirs.h>
|
|
|
|
#include <krun.h>
|
|
|
|
#include <interfaces/guiinterface.h>
|
|
|
|
#include "searchplugin.h"
|
|
|
|
#include "searchwidget.h"
|
|
|
|
#include "searchprefpage.h"
|
|
|
|
#include "searchtab.h"
|
|
|
|
#include "searchpluginsettings.h"
|
|
|
|
#include "searchenginelist.h"
|
|
|
|
|
|
|
|
|
|
|
|
#define NAME "Search"
|
|
|
|
#define AUTHOR "Joris Guisson"
|
|
|
|
#define EMAIL "joris.guisson@gmail.com"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
K_EXPORT_COMPONENT_FACTORY(ktsearchplugin,KGenericFactory<kt::SearchPlugin>("ktsearchplugin"))
|
|
|
|
|
|
|
|
namespace kt
|
|
|
|
{
|
|
|
|
|
|
|
|
SearchPlugin::SearchPlugin(TQObject* parent, const char* name, const TQStringList& args)
|
|
|
|
: Plugin(parent, name, args,NAME,i18n("Search"),AUTHOR,EMAIL,
|
|
|
|
i18n("Search for torrents on several popular torrent search engines"),"viewmag")
|
|
|
|
{
|
|
|
|
// setXMLFile("ktsearchpluginui.rc");
|
|
|
|
pref = 0;
|
|
|
|
tab = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
SearchPlugin::~SearchPlugin()
|
|
|
|
{}
|
|
|
|
|
|
|
|
|
|
|
|
void SearchPlugin::load()
|
|
|
|
{
|
|
|
|
engines.load(KGlobal::dirs()->saveLocation("data","ktorrent") + "search_engines");
|
|
|
|
KToolBar* tb = getGUI()->addToolBar("search");
|
|
|
|
tab = new SearchTab(tb);
|
|
|
|
connect(tab,TQT_SIGNAL(search( const TQString&, int, bool )),
|
|
|
|
this,TQT_SLOT(search( const TQString&, int, bool )));
|
|
|
|
|
|
|
|
pref = new SearchPrefPage(this);
|
|
|
|
getGUI()->addPrefPage(pref);
|
|
|
|
pref->updateData();
|
|
|
|
tab->updateSearchEngines(engines);
|
|
|
|
}
|
|
|
|
|
|
|
|
void SearchPlugin::unload()
|
|
|
|
{
|
|
|
|
tab->saveSettings();
|
|
|
|
SearchWidget* s = 0;
|
|
|
|
while ((s = searches.first()) != 0)
|
|
|
|
{
|
|
|
|
getGUI()->removeTabPage(s);
|
|
|
|
searches.removeFirst();
|
|
|
|
delete s;
|
|
|
|
}
|
|
|
|
getGUI()->removeToolBar(tab->getToolBar());
|
|
|
|
getGUI()->removePrefPage(pref);
|
|
|
|
delete pref;
|
|
|
|
pref = 0;
|
|
|
|
delete tab;
|
|
|
|
tab = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SearchPlugin::search(const TQString & text,int engine,bool external)
|
|
|
|
{
|
|
|
|
if(external)
|
|
|
|
{
|
|
|
|
const SearchEngineList& sl = getSearchEngineList();
|
|
|
|
|
|
|
|
if (engine < 0 || engine >= sl.getNumEngines())
|
|
|
|
engine = 0;
|
|
|
|
|
|
|
|
TQString s_url = sl.getSearchURL(engine).prettyURL();
|
|
|
|
s_url.replace("FOOBAR", KURL::encode_string(text), true);
|
|
|
|
KURL url = KURL::fromPathOrURL(s_url);
|
|
|
|
|
|
|
|
if(SearchPluginSettings::useDefaultBrowser())
|
|
|
|
kapp->invokeBrowser(url.url());
|
|
|
|
else
|
|
|
|
KRun::runCommand(TQString("%1 \"%2\"").tqarg(SearchPluginSettings::customBrowser()).tqarg(url.url()), SearchPluginSettings::customBrowser(), "viewmag" );
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
KIconLoader* iload = KGlobal::iconLoader();
|
|
|
|
|
|
|
|
SearchWidget* search = new SearchWidget(this);
|
|
|
|
getGUI()->addTabPage(search,iload->loadIconSet("viewmag", KIcon::Small),text,this);
|
|
|
|
|
|
|
|
KAction* copy_act = KStdAction::copy(TQT_TQOBJECT(search),TQT_SLOT(copy()),actionCollection());
|
|
|
|
copy_act->plug(search->rightClickMenu(),0);
|
|
|
|
searches.append(search);
|
|
|
|
|
|
|
|
search->updateSearchEngines(engines);
|
|
|
|
search->search(text,engine);
|
|
|
|
}
|
|
|
|
|
|
|
|
void SearchPlugin::preferencesUpdated()
|
|
|
|
{
|
|
|
|
engines.load(KGlobal::dirs()->saveLocation("data","ktorrent") + "search_engines");
|
|
|
|
if (tab)
|
|
|
|
tab->updateSearchEngines(engines);
|
|
|
|
|
|
|
|
for (TQPtrList<SearchWidget>::iterator i = searches.begin(); i != searches.end();i++)
|
|
|
|
{
|
|
|
|
SearchWidget* w = *i;
|
|
|
|
w->updateSearchEngines(engines);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void SearchPlugin::tabCloseRequest(kt::GUIInterface* gui,TQWidget* tab)
|
|
|
|
{
|
|
|
|
if (searches.contains((SearchWidget*)tab))
|
|
|
|
{
|
|
|
|
searches.remove((SearchWidget*)tab);
|
|
|
|
gui->removeTabPage(tab);
|
|
|
|
tab->deleteLater();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
bool SearchPlugin::versionCheck(const TQString & version) const
|
|
|
|
{
|
|
|
|
return version == KT_VERSION_MACRO;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#include "searchplugin.moc"
|