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

Line 1: Line 1:
 +
= Class type to return attributes =
 +
 +
== attribute.h ==
 +
<code 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.
 +
*/
 +
 +
#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
 +
</code>
 +
== attribute.cpp ==
 +
<code 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 );
 +
  }
 +
}
 +
</code>
 +
= Class type to return list =
 +
 +
== list.h ==
 +
<code 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.
 +
*/
 +
 +
#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
 +
</code>
 +
== list.cpp ==
 +
<code 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 );
 +
  }
 +
}
 +
</code>
 
For the coding style we follow the [http://techbase.kde.org/Policies/Kdelibs_Coding_Style kdelibs coding style].
 
For the coding style we follow the [http://techbase.kde.org/Policies/Kdelibs_Coding_Style kdelibs coding style].
  

Revision as of 09:25, 26 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.
  • /
  1. ifndef ATTRIBUTE_H
  1. define ATTRIBUTE_H
  1. include <QtCore/QObject>
  1. 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;

};

  1. 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.
  • /
  1. include <QtNetwork/QNetworkAccessManager>
  1. include <QtNetwork/QNetworkRequest>
  1. include <QtNetwork/QNetworkReply>
  1. include <QtCore/QXmlStreamReader>
  1. include <QtCore/QTimer>
  1. include <QtCore/QDebug>
  1. 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.
  • /
  1. ifndef LIST_H
  1. define LIST_H
  1. include <QtCore/QObject>
  1. 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;

};

  1. 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.
  • /
  1. include <QtNetwork/QNetworkAccessManager>
  1. include <QtNetwork/QNetworkRequest>
  1. include <QtNetwork/QNetworkReply>
  1. include <QtCore/QXmlStreamReader>
  1. include <QtCore/QDebug>
  1. 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 );
  }

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

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