IUP ISI/MediaWiki-Silk/coding-style: Difference between revisions

From KDE Community Wiki
(Replaced content with 'For the coding style we follow [kdelibs coding style][http://techbase.kde.org/Policies/Kdelibs_Coding_Style] astyle --indent=spaces=4 --brackets=linux \ --indent-label...')
Line 1: Line 1:
= Class type to return attributes =
For the coding style we follow [kdelibs coding style][http://techbase.kde.org/Policies/Kdelibs_Coding_Style]


== attribute.h ==
astyle --indent=spaces=4 --brackets=linux \
 
      --indent-labels --pad-oper --unpad-paren \
/*
      --one-line=keep-statements --convert-tabs \
*  Copyright 2010 by XXXX XXXX <[email protected]>
      --indent-preprocessor \
*
      `find -type f -name '*.cpp'` `find -type f -name '*.cc'` `find -type f -name '*.h'`
*  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>ifndef ATTRIBUTE_H
 
<nowiki>#</nowiki>define ATTRIBUTE_H
 
<nowiki>#</nowiki>include <QtCore/QObject>
 
<nowiki>#</nowiki>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;
};
 
<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 );
    }
}
 
= 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.
*/
 
<nowiki>#</nowiki>ifndef LIST_H
 
<nowiki>#</nowiki>define LIST_H
 
<nowiki>#</nowiki>include <QtCore/QObject>
 
<nowiki>#</nowiki>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;
};
 
<nowiki>#</nowiki>endif // LIST_H
 
== list.cpp ==
 
/*
*   Copyright 2010 by XXXX XXXX <XXX.[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/QDebug>
 
<nowiki>#</nowiki>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 );
    }
}

Revision as of 08:44, 26 October 2010

For the coding style we follow [kdelibs coding style][1]

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'`