1
1
/***************************************************************************
2
* Copyright (C) 2004-2005 by Thomas Fischer *
2
* Copyright (C) 2004-2009 by Thomas Fischer *
3
3
* fischer@unix-ag.uni-kl.de *
5
5
* This program is free software; you can redistribute it and/or modify *
20
20
#include <qapplication.h>
22
22
#include <qstring.h>
25
#include <klineedit.h>
24
26
#include <klocale.h>
25
27
#include <kmessagebox.h>
26
28
#include <kio/netaccess.h>
29
32
#include <fileimporterbibtex.h>
30
33
#include "webquerycitebase.h"
37
WebQueryCitebaseWidget::WebQueryCitebaseWidget( QWidget *parent, const char *name )
38
: WebQueryWidget( parent, name )
42
Settings *settings = Settings::self();
43
QString value = settings->getWebQueryDefault( "Citebase" );
44
value = value == QString::null ? "" : value;
45
lineEditQuery->setText( value );
46
slotTextChanged( value, true );
35
50
WebQueryCitebase::WebQueryCitebase( QWidget* parent ): WebQuery( parent )
52
m_widget = new WebQueryCitebaseWidget( parent );
40
55
WebQueryCitebase::~WebQueryCitebase()
45
60
QString WebQueryCitebase::title()
57
72
return "http://www.citebase.org/";
60
void WebQueryCitebase::query( const QString& searchTerm, int numberOfResults )
62
WebQuery::query( searchTerm, numberOfResults );
63
emit setTotalSteps( 1 );
65
QString term = searchTerm;
66
KURL url = KURL( QString( "http://www.citebase.org/search?submitted=Search&author=&maxrows=%2&yearfrom=&format=BibTeX&order=DESC&type=metadata&title=%1&publication=&yearuntil=&rank=paperimpact" ).arg( term.replace( "%", "%25" ).replace( " ", "+" ).replace( "?", "%3F" ).replace( "&", "%26" ) ).arg( numberOfResults ) );
68
if ( KIO::NetAccess::download( url, tmpFile, m_parent ) && !m_aborted )
70
BibTeX::FileImporterBibTeX importer( FALSE );
71
importer.setIgnoreComments( TRUE );
72
QFile inputFile( tmpFile );
73
inputFile.open( IO_ReadOnly );
74
BibTeX::File *tmpBibFile = importer.load( &inputFile );
76
KIO::NetAccess::removeTempFile( tmpFile );
78
emit setProgress( 1 );
75
WebQueryWidget *WebQueryCitebase::widget()
80
void WebQueryCitebase::query()
83
Settings *settings = Settings::self();
84
settings->setWebQueryDefault( "Citebase", m_widget->lineEditQuery->text() );
87
int numberOfResults = m_widget->spinBoxMaxHits->value();
89
QString searchTerm = m_widget->lineEditQuery->text().stripWhiteSpace().replace( '$', "" );
90
if ( searchTerm.isEmpty() )
92
setEndSearch( WebQuery::statusInvalidQuery );
96
KURL url = KURL( QString( "http://www.citebase.org/search?submitted=Search&author=&maxrows=%1&yearfrom=&format=BibTeX&order=DESC&type=metadata&title=%2&publication=&yearuntil=&rank=paperimpact" ).arg( numberOfResults ).arg( searchTerm.replace( "%", "%25" ).replace( "+", "%2B" ).replace( " ", "%20" ).replace( "#", "%23" ).replace( "&", "%26" ).replace( "?", "%3F" ) ) );
97
BibTeX::File *tmpBibFile = downloadBibTeXFile( url );
98
if ( tmpBibFile != NULL && !m_aborted )
80
100
int count = numberOfResults;
81
101
for ( BibTeX::File::ElementList::iterator it = tmpBibFile->begin(); count > 0 && it != tmpBibFile->end(); ++it )
83
103
BibTeX::Entry *entry = dynamic_cast<BibTeX::Entry*>( *it );
84
104
if ( entry != NULL )
86
emit foundEntry( new BibTeX::Entry( entry ) );
106
emit foundEntry( new BibTeX::Entry( entry ), false );
92
emit endSearch( false );
111
setEndSearch( WebQuery::statusSuccess );
94
113
else if ( !m_aborted )
98
117
message.prepend( '\n' );
99
118
message.prepend( QString( i18n( "Querying database '%1' failed." ) ).arg( title() ) );
100
119
KMessageBox::error( m_parent, message );
101
emit endSearch( true );
120
setEndSearch( WebQuery::statusError );
104
emit endSearch( false );
123
setEndSearch( WebQuery::statusAborted );
125
if ( tmpBibFile != NULL )