Advertisement
Guest User

Untitled

a guest
Jun 20th, 2013
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.19 KB | None | 0 0
  1. #include "ordertableview.h"
  2.  
  3. /**
  4.  * @brief OrderTableView::OrderTableView
  5.  * @param parent
  6.  */
  7. OrderTableView::OrderTableView(QWidget *parent) :
  8.     QTableView(parent)
  9. {
  10.     table = new OrderTableModel(this);
  11.  
  12.     proxyModel = new QSortFilterProxyModel(this);
  13.     proxyModel->setSourceModel(table);
  14.     proxyModel->setDynamicSortFilter(true);
  15.  
  16.     this->setModel(proxyModel);
  17.     this->setSortingEnabled(true);
  18.     this->setSelectionBehavior(QAbstractItemView::SelectRows);
  19. //    horizontalHeader()->setStretchLastSection(true);
  20. //    verticalHeader()->hide();
  21.     this->setEditTriggers(QAbstractItemView::NoEditTriggers);
  22.     this->setSelectionMode(QAbstractItemView::SingleSelection);
  23.  
  24.     QVariantList orders = readCurrentOrders();
  25.     foreach (QVariant order, orders) {
  26.         table->addOrder(order.toMap());
  27.     }
  28.  
  29.     orderThread = new OrderThread();
  30.     orderThread->start();
  31.  
  32.  
  33.     QObject::connect(orderThread, SIGNAL(readOrders()), this, SLOT(readOrders()));
  34.     QObject::connect(&networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(ordersRead(QNetworkReply*)));
  35. }
  36.  
  37. /**
  38.  * @brief OrderTableView::~OrderTableView
  39.  */
  40. OrderTableView::~OrderTableView()
  41. {
  42.     orderThread->quit();
  43.     orderThread->wait();
  44.  
  45.     writeCurrentOrders(table->orders);
  46.  
  47.     delete table;
  48.     delete proxyModel;
  49. }
  50.  
  51. /**
  52.  * SLOT
  53.  * @brief OrderTableView::readOrders
  54.  */
  55. void OrderTableView::readOrders()
  56. {
  57.     QString url = "http://partnermed.lo/superuser/index.php?op=order_usps";
  58.     networkManager.get(QNetworkRequest(url));
  59. }
  60.  
  61. /**
  62.  * SLOT for catching the HTTP/GET call made on the website.
  63.  * Will parse and complete the data about the printing files.
  64.  *
  65.  * @brief OrderTableView::ordersRead
  66.  * @param networkReply QNetworkReply
  67.  */
  68. void OrderTableView::ordersRead(QNetworkReply *networkReply)
  69. {
  70.     qDebug() << networkReply->url().toString();
  71.     QUrl url = networkReply->url();
  72.     if (!networkReply->error()) {
  73.         QStringList choices;
  74.         QStringList hits;
  75.  
  76.         QByteArray response(networkReply->readAll());
  77.         QJson::Parser parser;
  78.         bool valid;
  79.         QVariant jvon = parser.parse(response, &valid);
  80.         if (valid) {
  81.             foreach (QVariant order, jvon.toList()) {
  82.                 table->addOrder(order.toMap());
  83.             }
  84.         } else {
  85. //            @TODO: Send error message!
  86.         }
  87.  
  88.     }
  89.     networkReply->deleteLater();
  90. }
  91.  
  92. /**
  93.  * Read the logfile and return a QVariantList of the known orders
  94.  *
  95.  * @brief OrderTableView::readCurrent
  96.  * @return QVariantList
  97.  */
  98. QVariantList OrderTableView::readCurrentOrders()
  99. {
  100.     QFile file;
  101.     file.setFileName(".pmprinter");
  102.     file.open(QIODevice::ReadOnly | QIODevice::Text);
  103.  
  104.     qDebug() << "Reading JSON file!";
  105.  
  106.     QJson::Parser parser;
  107.     bool valid;
  108.     QByteArray json = file.readAll();
  109.  
  110. //    qDebug() << QString(json);
  111.  
  112.     return parser.parse(json, &valid).toList();
  113. }
  114.  
  115. /**
  116.  * @brief OrderTableView::writeCurrentOrders
  117.  * @param list
  118.  */
  119. void OrderTableView::writeCurrentOrders(QVariantList list)
  120. {
  121.     QFile file;
  122.     file.setFileName(".pmprinter");
  123.     file.open(QIODevice::WriteOnly | QIODevice::Text);
  124. //    file.write("", 0);
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement