Difference between revisions of "IUP ISI/MediaWiki-Silk/coding-style"

Jump to: navigation, search
Line 1: Line 1:
 +
= Class type to return attributes =
 +
 +
== attribute.h ==
 +
 
/*
 
/*
 
  *  Copyright 2010 by XXXX XXXX <[email protected]>
 
  *  Copyright 2010 by XXXX XXXX <[email protected]>
Line 52: Line 56:
 
         @param success true if the request was completed successfully.
 
         @param success true if the request was completed successfully.
 
     */
 
     */
     void onFinished( bool );
+
     void finished( bool );
  
 
public slots:
 
public slots:
Line 75: Line 79:
  
 
<nowiki>#</nowiki>endif // ATTRIBUTE_H
 
<nowiki>#</nowiki>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.
 +
*/
 +
 +
<nowiki>#</nowiki>include <QtNetwork/QNetworkAccessManager>
 +
 +
<nowiki>#</nowiki>include <QtNetwork/QNetworkRequest>
 +
 +
<nowiki>#</nowiki>include <QtNetwork/QNetworkReply>
 +
 +
<nowiki>#</nowiki>include <QtCore/QXmlStreamReader>
 +
 +
<nowiki>#</nowiki>include <QtCore/QTimer>
 +
 +
<nowiki>#</nowiki>include <QtCore/QDebug>
 +
 +
<nowiki>#</nowiki>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 );
 +
    }
 +
}

Revision as of 19:36, 25 October 2010

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

}


Content is available under Creative Commons License SA 4.0 unless otherwise noted.