IUP ISI/MediaWiki-Silk/coding-style

From KDE Community Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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 );
   }

}