IUP ISI/MediaWiki-Silk/coding-style
Class type to return attributes
attribute.h
/*
- Copyright 2010 by XXXX XXXX <[email protected]>
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2, 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 Library 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.
- /
- ifndef ATTRIBUTE_H
- define ATTRIBUTE_H
- include <QtCore/QObject>
- include <kdemacros.h>
class MediaWiki;
class QNetworkReply;
class KDE_EXPORT Attribute : public QObject
{
Q_OBJECT
public:
/**
@brief Create an instance of Attribute and send a request.
@param media
@param parent
*/
explicit Attribute( MediaWiki const & media, /*Put attributes here*/ QObject * parent = 0 );
/**
@brief Destroy the AttributePrivate pointer.
*/
virtual ~Attribute();
signals:
/**
@brief Emitted when a request has been completed.
@param success true if the request was completed successfully.
*/
void finished( bool );
public slots:
/**
@brief Aborts the currently running request.
*/
void abort();
private slots:
/**
@brief Reads the xml and build results
@param reply
*/
void onFinished( QNetworkReply *reply );
private:
struct AttributePrivate * const d;
};
- endif // ATTRIBUTE_H
attribute.cpp
/*
- Copyright 2010 by XXXX XXXX <[email protected]>
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2, 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 Library 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 <QtNetwork/QNetworkAccessManager>
- include <QtNetwork/QNetworkRequest>
- include <QtNetwork/QNetworkReply>
- include <QtCore/QXmlStreamReader>
- include <QtCore/QTimer>
- include <QtCore/QDebug>
- include "attribute.h"
struct AttributePrivate
{
QNetworkAccessManager *manager;
QNetworkReply *reply;
QUrl apiUrl;
/*Put attributes here*/
};
Attribute::Attribute( MediaWiki const & media, /*Put attributes here*/, QObject * parent )
: QObject( parent )
, d( new AttributePrivate )
{
d->apiUrl = media.url();
QUrl url = d->apiUrl;
url.addQueryItem( QString("action"), QString("query") );
// Set the request
QNetworkRequest request( url );
request.setRawHeader( "User-Agent", "mediawiki-silk" );
// Send the request
d->manager = new QNetworkAccessManager( this );
connect( d->manager, SIGNAL( onFinished( QNetworkReply* ) ), this, SLOT( onFinished( QNetworkReply * ) ) );
d->reply = d->manager->get( request );
QTimer::singleShot( 30 * 1000, this, SLOT( abort() ) );
}
Attribute::~Attribute()
{
delete d;
}
void Attribute::abort()
{
qDebug() << "abort";
if ( !d->reply )
return;
d->reply->abort();
d->reply = 0;
}
void Attribute::onFinished( QNetworkReply *reply )
{
if ( reply->error() != QNetworkReply::NoError )
{
qDebug() << "Request failed, " << reply->errorString();
emit onFinished( false );
return;
}
QXmlStreamReader reader( reply );
while ( !reader.atEnd() && !reader.hasError() )
{
QXmlStreamReader::TokenType token = reader.readNext();
if ( token == QXmlStreamReader::StartElement )
{
if ( reader.name() == QString( "goodName" ) )
{
QXmlStreamAttributes attrs = reader.attributes();
if ( attrs.value( QString( "result" ) ).toString() == "goodResult" )
{
qDebug() << "Request succed, " << reply->errorString();
d->lgtoken = attrs.value( QString( "result" ) ).toString() ;
emit onFinished( true );
}
}
}
else if ( token == QXmlStreamReader::Invalid )
emit onFinished( false );
}
}
Class type to return list
list.h
/*
- Copyright 2010 by XXXX XXXX <[email protected]>
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2, 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 Library 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.
- /
- ifndef LIST_H
- define LIST_H
- include <QtCore/QObject>
- include <kdemacros.h>
class MediaWiki;
class QNetworkReply;
class KDE_EXPORT List : public QObject
{
Q_OBJECT
public:
struct Result {
/* Attribute result */
};
/**
@brief Create an instance of List and send a request.
@param media
@param parent
*/
explicit List( MediaWiki const & media, /*Put attributes here*/, QObject * parent = 0 );
/**
@brief Destroy the ListPrivate pointer.
*/
virtual ~List();
signals:
/**
@brief Emitted when a request has been completed.
@param success true if the request was completed successfully.
*/
void finished( QList<List::Result> list );
public slots:
/**
@brief Aborts the currently running request.
*/
void abort();
private slots:
/**
@brief Reads the xml and build results
@param reply
*/
void onFinished( QNetworkReply *reply );
private:
struct ListPrivate *const d;
};
- endif // LIST_H
list.cpp
/*
- Copyright 2010 by XXXX XXXX <[email protected]>
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2, 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 Library 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 <QtNetwork/QNetworkAccessManager>
- include <QtNetwork/QNetworkRequest>
- include <QtNetwork/QNetworkReply>
- include <QtCore/QXmlStreamReader>
- include <QtCore/QDebug>
- include "list.h"
struct ListPrivate
{
QNetworkAccessManager *manager;
QNetworkReply *reply;
QUrl apiUrl;
/*Put attributes here*/
};
List::List( MediaWiki const & media, /*Put attributes here*/, QObject * parent )
: QObject( parent )
, d( new ListPrivate )
{
d->apiUrl = media.url();
QUrl url = d->apiUrl;
url.addQueryItem( QString("action"), QString("query") );
// Set the request
QNetworkRequest request( url );
request.setRawHeader( "User-Agent", "mediawiki-silk" );
// Send the request
d->manager = new QNetworkAccessManager( this );
connect( d->manager, SIGNAL( onFinished( QNetworkReply* ) ), this, SLOT( onFinished( QNetworkReply * ) ) );
d->reply = d->manager->get( request );
}
List::~List()
{
delete d;
}
void List::abort()
{
qDebug() << "abort";
if ( !d->reply )
return;
d->reply->abort();
d->reply = 0;
}
void List::onFinished( QNetworkReply *reply )
{
if ( reply->error() == QNetworkReply::NoError )
{
// Parse xml
emit finished( list );
}
}
Coding style
For the coding style we follow the kdelibs coding style.
Artistic Style (astyle) automatic code formatting:
astyle --indent=spaces=4 --brackets=linux \
--indent-labels --pad-oper --unpad-paren \ --one-line=keep-statements --convert-tabs \ --indent-preprocessor \ `find -type f -name '*.cpp'` `find -type f -name '*.cc'` `find -type f -name '*.h'`