Invisible registerdialog picture.
[speedfreak] / Client / httpclient.cpp
index d4c723c..d1b6f2b 100644 (file)
@@ -2,20 +2,22 @@
  * Http client Connects application to server.
  *
  * @author      Tiina Kivilinna-Korhola <tiina.kivilinna-korhola@fudeco.com>
- * @author      Olavi Pulkkinen <olavi.pulkkinen@fudeco.com>
- * @author      Toni Jussila   <toni.jussila@fudeco.com>
+ * @author      Olavi Pulkkinen         <olavi.pulkkinen@fudeco.com>
+ * @author      Toni Jussila            <toni.jussila@fudeco.com>
  * @copyright   (c) 2010 Speed Freak team
  * @license     http://opensource.org/licenses/gpl-license.php GNU Public License
  */
 
 #include <QString>
 #include <QMessageBox>
+#include <QDir>
 #include "httpclient.h"
 #include "mainwindow.h"
 
 /**
-  *@brief Constructor, connects object to GUI
-  *@param Pointer to carmainwindow, which is temporarily used during development
+  * Constructor, connects object to GUI
+  *
+  * @param Pointer to carmainwindow, which is temporarily used during development
   */
 HttpClient::HttpClient(MainWindow *myCarw)
 {
@@ -24,10 +26,11 @@ HttpClient::HttpClient(MainWindow *myCarw)
     netManager = new QNetworkAccessManager();
     myXmlwriter = new XmlWriter();
     myXmlreader = new XmlReader();
+    connect(myXmlreader, SIGNAL(userInfo(QStringList*)), this, SLOT(sendUsersInfo(QStringList*)));
 }
 
 /**
-  *@brief Destructor
+  * Destructor
   */
 HttpClient::~HttpClient()
 {
@@ -40,49 +43,92 @@ HttpClient::~HttpClient()
 }
 
 /**
-  *@brief Sends registration information to the server in xml format.
-  *Reads user name, password and emaol address from resuldialogs internal variables.
+  * Sends registration information to the server in xml format.
+  * Reads user name, password and emaol address from resuldialogs internal variables.
   */
 void HttpClient::requestRegistration()
 {
     qDebug() << "_requestRegistration" ;
-    qDebug() <<  myMainw->settingsDialog->getRegUserName() << "+" <<  myMainw->settingsDialog->getRegPassword() << "+" <<  myMainw->settingsDialog->getRegEmail();
+    qDebug() <<  myMainw->settingsDialog->registerDialog->getRegUserName() << "+" <<  myMainw->settingsDialog->registerDialog->getRegPassword() << "+" <<  myMainw->settingsDialog->registerDialog->getRegEmail();
 
     QBuffer *regbuffer = new QBuffer();
-    QUrl qurl("http://api.speedfreak-app.com/api/register");
+    QUrl qurl("http://www.speedfreak-app.com/users/register");
     QNetworkRequest request(qurl);
     qDebug() << qurl.toString();
     QNetworkReply *currentDownload;
 
     regbuffer->open(QBuffer::ReadWrite);
-    myXmlwriter->writeRegistering(regbuffer,
+
+    // Without profile dialog
+    /*myXmlwriter->writeRegistering(regbuffer,
                        myMainw->settingsDialog->getRegUserName(),
                        myMainw->settingsDialog->getRegPassword(),
-                       myMainw->settingsDialog->getRegEmail());
+                       myMainw->settingsDialog->getRegEmail());*/
+    // With profile dialog
+    /*myXmlwriter->writeRegistering(regbuffer,
+                                myMainw->settingsDialog->getRegUserName(),
+                                myMainw->settingsDialog->getRegPassword(),
+                                myMainw->settingsDialog->getRegEmail(),
+                                myMainw->settingsDialog->profileDialog->getDescription());
+                                myMainw->settingsDialog->profileDialog->getManufacturer(),
+                                myMainw->settingsDialog->profileDialog->getType(),
+                                myMainw->settingsDialog->profileDialog->getModel(),
+                                myMainw->settingsDialog->profileDialog->getDescription(),
+                                myMainw->settingsDialog->profileDialog->getPicture());*/
+    // New way: Registerdialog = register + Profiledialog
+    myXmlwriter->writeRegistering(regbuffer,
+                                myMainw->settingsDialog->registerDialog->getRegUserName(),
+                                myMainw->settingsDialog->registerDialog->getRegPassword(),
+                                myMainw->settingsDialog->registerDialog->getRegEmail(),
+                                myMainw->settingsDialog->registerDialog->getDescription());
+
     qDebug() << "carmainwindow: regbuffer->data(): " << regbuffer->data();
 
-    currentDownload = netManager->post(request, ("xml=" + regbuffer->data()));
+    // Registration with picture. Send picture to server
+    if(myMainw->settingsDialog->registerDialog->getPicture() != "" )//&& error == false)
+    {
+        qDebug() << "__Registration with picture";
+        QFile pictureFile( myMainw->settingsDialog->registerDialog->getPicture() );
+        if (!pictureFile.open(QIODevice::ReadOnly))
+        {
+            qDebug() << "__picture read fail";
+            return;
+        }
+        //currentDownload = netManager->post(request, pictureFile.readAll());
+        currentDownload = netManager->post(request, ("xml=" + regbuffer->data(), "avatar=" + pictureFile.readAll()));
+        //connect(currentDownload, SIGNAL(finished()), this, SLOT(ackOfSendingPicture()));
+        pictureFile.close();
+    }
+    // Registration Without picture
+    else
+    {
+        qDebug() << "____Registration without picture";
+        currentDownload = netManager->post(request, ("xml=" + regbuffer->data()));
+    }
+
     connect(currentDownload,SIGNAL(finished()),this,SLOT(ackOfRegistration()));
     //connect(currentDownload,SIGNAL(error(QNetworkReply::NetworkError)),myMainw,SLOT(errorFromServer(QNetworkReply::NetworkError)));
 
     //Indicating user
-    if(myMainw->settingsDialog)
-        myMainw->settingsDialog->setLabelInfoToUser("Reguesting registration from server");
+    if(myMainw->settingsDialog->registerDialog)
+        myMainw->settingsDialog->registerDialog->setLabelInfoToUser("Reguesting registration from server");
 
     regbuffer->close();
 }
 
 /**
-  *@brief Sends result(s) to the server in xml format.
-  *Send authentication information in the header.
+  * Sends result(s) to the server in xml format.
+  * Send authentication information in the header.
   */
 void HttpClient::sendResultXml(QString category, double result)
 {
     qDebug() << "_sendResultXml";
+    qDebug() << category;
 
     QBuffer *xmlbuffer = new QBuffer();
 
-    QUrl qurl("http://api.speedfreak-app.com/api/update/" + category);
+    QUrl qurl("http://www.speedfreak-app.com/results/update/" + category);
+
     qDebug() << qurl.toString();
     QNetworkRequest request(qurl);
     QNetworkReply *currentDownload;
@@ -107,53 +153,72 @@ void HttpClient::sendResultXml(QString category, double result)
 }
 
 /**
-  *@brief Sends route to the server in xml format.
-  *Send authentication information in the header.
-  *@todo Check destination URL.
+  * Sends route to the server in xml format.
+  * Send authentication information in the header.
+  *
+  * @param QString filename
+  * @param int 1(send to server) or 0(no send)
   */
-void HttpClient::sendRouteXml()
+void HttpClient::sendRouteXml(QString oldName, QString newName, int i)
 {
     qDebug() << "_sendRouteXml";
 
-    QString filename = "route.xml";
-    QFile file(filename);
-    if (!file.open(QFile::ReadOnly)) {
-        qDebug() << "_sendRouteXml file.open() fail";
-        return;
+    //QString filename = "/home/user/MyDocs/speedfreak/route/route.xml";
+    qDebug() << "__old:" + oldName;
+    QString filename = newName; //+ ".xml";
+
+    if(newName != "")
+    {
+        qDebug() << "_rename xml";
+        QDir dir(filename);
+        qDebug() << "__new:" + filename;
+        qDebug() << dir.rename(oldName, filename);
     }
 
-    QUrl qurl("http://api.speedfreak-app.com/api/update/route");
-    qDebug() << qurl.toString();
-    QNetworkRequest request(qurl);
-    QNetworkReply *currentDownload;
+    if(i == 1)
+    {
+        qDebug() << "_send route";
+        QFile file(filename);
+        if (!file.open(QFile::ReadOnly))
+        {
+            qDebug() << "_sendRouteXml file.open() fail";
+            return;
+        }
 
-    QString credentials = myMainw->settingsDialog->getUserName() + ":" + myMainw->settingsDialog->getPassword();
-    credentials = "Basic " + credentials.toAscii().toBase64();
-    request.setRawHeader(QByteArray("Authorization"),credentials.toAscii());
+        QUrl qurl("http://speedfreak-app.com/update/route");
+        qDebug() << qurl.toString();
+        QNetworkRequest request(qurl);
+        QNetworkReply *currentDownload;
 
-    currentDownload = netManager->post(request, ("xml=" + file.readAll()));
-    connect(currentDownload,SIGNAL(finished()),this,SLOT(ackOfRoute()));
-    //connect(currentDownload,SIGNAL(error(QNetworkReply::NetworkError)),myMainw,SLOT(errorFromServer(QNetworkReply::NetworkError)));
+        QString credentials = myMainw->settingsDialog->getUserName() + ":" + myMainw->settingsDialog->getPassword();
+        credentials = "Basic " + credentials.toAscii().toBase64();
+        request.setRawHeader(QByteArray("Authorization"),credentials.toAscii());
 
-    //Indicating user
-    if(myMainw->routeSaveDialog->routeDialog)
-        myMainw->routeSaveDialog->routeDialog->setLabelInfoToUser("Sending route to server");
+        currentDownload = netManager->post(request, ("xml=" + file.readAll()));
+        connect(currentDownload,SIGNAL(finished()),this,SLOT(ackOfRoute()));
+        //connect(currentDownload,SIGNAL(error(QNetworkReply::NetworkError)),myMainw,SLOT(errorFromServer(QNetworkReply::NetworkError)));
 
-    file.close();
+        //Indicating user
+        if(myMainw->routeSaveDialog->routeDialog)
+            myMainw->routeSaveDialog->routeDialog->setLabelInfoToUser("Sending route to server");
+
+        file.close();
+    }
 }
 
 /**
-  *@brief Request the Top10List of certain category from the server.
-  *Send authentication information in the header.
-  *@param Category of results.
-  *@param Limit, the number of results.
+  * Request the Top10List of certain category from the server.
+  * Send authentication information in the header.
+  *
+  * @param Category of results.
+  * @param Limit, the number of results.
   */
 void HttpClient::requestTopList(QString category, QString limit)
 {
     qDebug() << "_requestTopList";
     qDebug() << category;
 
-    QString urlBase = "http://api.speedfreak-app.com/api/results/";
+    QString urlBase = "http://www.speedfreak-app.com/results/list_results/";
     QUrl qurl(urlBase + category + "/" + limit);
     qDebug() << qurl.toString();
     QNetworkRequest request(qurl);
@@ -173,14 +238,14 @@ void HttpClient::requestTopList(QString category, QString limit)
 }
 
 /**
-  *@brief Request categories list from the server.
-  *Send authentication information in the header.
+  * Request categories list from the server.
+  * Send authentication information in the header.
   */
 void HttpClient::requestCategories()
 {
     qDebug() << "_requestCategories" ;
 
-    QUrl qurl("http://api.speedfreak-app.com/api/categories/");
+    QUrl qurl("http://www.speedfreak-app.com/results/categories");
     qDebug() << qurl.toString();
     QNetworkRequest request(qurl);
     QNetworkReply *currentDownload;
@@ -199,15 +264,16 @@ void HttpClient::requestCategories()
 }
 
 /**
-  *@brief Check that username and password exist on the server.
-  *Send authentication information in the header.
+  * Check that username and password exist on the server.
+  * Send authentication information in the header.
   */
 void HttpClient::checkLogin()
 {
     qDebug() << "_checkLogin";
 
-    QUrl qurl("http://api.speedfreak-app.com/api/login/");
+    QUrl qurl("http://www.speedfreak-app.com/users/login");
     qDebug() << qurl.toString();
+
     QNetworkRequest request(qurl);
     QNetworkReply *currentDownload;
 
@@ -225,7 +291,7 @@ void HttpClient::checkLogin()
 }
 
 /**
-  *@brief React to servers responce after result has been sent.
+  * React to servers responce after result has been sent.
   */
 void HttpClient::ackOfResult()
 {
@@ -251,8 +317,6 @@ void HttpClient::ackOfResult()
             myMainw->accstart->accRealTimeDialog->resultDialog->setSendServerButtonEnabled();
     }
     else {
-        qDebug() << "errorcode:" << errorcode << reply->errorString();
-
         //Indicating user
         if(myMainw->accstart->accRealTimeDialog->resultDialog)
             QMessageBox::about(myMainw->accstart->accRealTimeDialog->resultDialog, "Server reply to result sending", "Result received " + reply->readAll());
@@ -262,7 +326,7 @@ void HttpClient::ackOfResult()
 }
 
 /**
-  *@brief React to servers responce after route has been sent.
+  * React to servers responce after route has been sent.
   */
 void HttpClient::ackOfRoute()
 {
@@ -290,15 +354,14 @@ void HttpClient::ackOfRoute()
 }
 
 /**
-  *@brief React to servers responce after registration has been sent.
-  *@todo Implement consequencies of reply.
+  * React to servers responce after registration has been sent.
   */
 void HttpClient::ackOfRegistration()
 {
     qDebug() << "_ackOfRegistration";
 
     if(myMainw->settingsDialog)
-        myMainw->settingsDialog->setLabelInfoToUser("");
+        myMainw->settingsDialog->registerDialog->setLabelInfoToUser("");
 
     QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());
 
@@ -306,21 +369,21 @@ void HttpClient::ackOfRegistration()
     errorcode = reply->error();
     if(errorcode != 0) {
         qDebug() <<  "errorcode:" << errorcode << reply->errorString();
-        if(myMainw->settingsDialog)
-            QMessageBox::about(myMainw->settingsDialog, "Server reply to registration",reply->readAll());
+        if(myMainw->settingsDialog->registerDialog)
+            QMessageBox::about(myMainw->settingsDialog->registerDialog, "Server reply to registration",reply->readAll());
     }
     else {
         qDebug() << "errorcode=0" << errorcode << reply->errorString();
-        if(myMainw->settingsDialog)
+        if(myMainw->settingsDialog->registerDialog)
         {
-            QMessageBox::about(myMainw->settingsDialog, "Server reply to registration", "User registration " + reply->readAll());
-            myMainw->settingsDialog->clearRegisterLineEdits();
+            QMessageBox::about(myMainw->settingsDialog->registerDialog, "Server reply to registration", "User registration " + reply->readAll());
+            myMainw->settingsDialog->registerDialog->clearRegisterLineEdits();
         }
     }
 }
 
 /**
-  *@brief React to servers responce after request for categories has been sent.
+  * React to servers responce after request for categories has been sent.
   */
 void HttpClient::ackOfCategories()
 {
@@ -341,7 +404,6 @@ void HttpClient::ackOfCategories()
             myMainw->topResultDialog->setLabelInfoToUser("You're not logged! Please register or log in.");
     }
     else {
-        qDebug() <<  "errorcode:" << errorcode << reply->errorString();
         //QMessageBox::about(myMainw->topResultDialog, "Server reply to requesting categories ", "OK");
         if(myMainw->topResultDialog)
             myMainw->topResultDialog->setLabelInfoToUser("");
@@ -349,7 +411,7 @@ void HttpClient::ackOfCategories()
 }
 
 /**
-  *@brief React to servers responce after request of TopList in certain category has been sent.
+  * React to servers responce after request of TopList in certain category has been sent.
   */
 void HttpClient::ackOfLogin()
 {
@@ -367,7 +429,7 @@ void HttpClient::ackOfLogin()
         qDebug() <<  "errorcode:" << errorcode << reply->errorString();
        if(myMainw->settingsDialog)
        {
-               QMessageBox::about(myMainw->settingsDialog, "Server does not recognize your username. Please registrate.",reply->errorString());
+                QMessageBox::about(myMainw->settingsDialog, "Wrong username or password!","Please try again.");
                myMainw->settingsDialog->usernameOk(false);
        }
     }
@@ -387,7 +449,7 @@ void HttpClient::ackOfLogin()
 }
 
 /**
-  *@brief Reports errors, when server has sent error signal.
+  * Reports errors, when server has sent error signal.
   */
 void HttpClient::errorFromServer(QNetworkReply::NetworkError errorcode)
 {
@@ -406,7 +468,7 @@ void HttpClient::errorFromServer(QNetworkReply::NetworkError errorcode)
 }
 
 /**
-  *@brief React to servers responce after request of TopList in certain category has been sent.
+  * React to servers responce after request of TopList in certain category has been sent.
   */
 void HttpClient::ackOfToplist()
 {
@@ -453,17 +515,18 @@ void HttpClient::sendProfileXml()
         return;
     }
     myXmlwriter->writeProfileXmlFile(&file, userName,
-            myMainw->settingsDialog->profileDialog->getManufacturer(),
-            myMainw->settingsDialog->profileDialog->getType(),
-            myMainw->settingsDialog->profileDialog->getModel(),
-            myMainw->settingsDialog->profileDialog->getDescription(),
-            myMainw->settingsDialog->profileDialog->getPicture());
+            myMainw->settingsDialog->registerDialog->getManufacturer(),
+            myMainw->settingsDialog->registerDialog->getType(),
+            myMainw->settingsDialog->registerDialog->getModel(),
+            myMainw->settingsDialog->registerDialog->getDescription(),
+            myMainw->settingsDialog->registerDialog->getPicture());
 
     //Indicating user
-    if(myMainw->settingsDialog->profileDialog)
-        myMainw->settingsDialog->profileDialog->setLabelInfoToUser("Profile saved to phone");
+    if(myMainw->settingsDialog->registerDialog)
+        myMainw->settingsDialog->registerDialog->setLabelInfoToUser("Profile saved to phone");
 
-    QUrl qurl("http://api.speedfreak-app.com/api/profile");
+    // Send xml to server
+    /*QUrl qurl("http://speedfreak-app.com/api/profile");
     QNetworkRequest request(qurl);
     qDebug() << qurl.toString();
     QNetworkReply *currentDownload;
@@ -473,12 +536,12 @@ void HttpClient::sendProfileXml()
     request.setRawHeader(QByteArray("Authorization"),credentials.toAscii());
 
     currentDownload = netManager->post(request, ("xml=" + file.readAll()));
-    bool error = connect(currentDownload, SIGNAL(finished()), this, SLOT(ackOfProfile()));
+    bool error = connect(currentDownload, SIGNAL(finished()), this, SLOT(ackOfProfile()));*/
 
     file.close();
 
-    // Send picture
-    if(myMainw->settingsDialog->profileDialog->getPicture() != "" && error == false)
+    // Send picture to server
+    /*if(myMainw->settingsDialog->profileDialog->getPicture() != "" && error == false)
     {
         QFile pictureFile( myMainw->settingsDialog->profileDialog->getPicture() );
         if (!pictureFile.open(QIODevice::ReadOnly))
@@ -489,7 +552,7 @@ void HttpClient::sendProfileXml()
         currentDownload = netManager->post(request, pictureFile.readAll());
         connect(currentDownload, SIGNAL(finished()), this, SLOT(ackOfSendingPicture()));
         pictureFile.close();
-    }
+    }*/
 }
 
 /**
@@ -504,20 +567,20 @@ bool HttpClient::ackOfProfile()
     if(errorcode != 0) {
         qDebug() <<  "errorcode:" << errorcode << reply->errorString();
         //Indicating user
-        if(myMainw->settingsDialog->profileDialog)
+        if(myMainw->settingsDialog->registerDialog)
         {
             //QMessageBox::about(myMainw->settingsDialog->profileDialog, "Server reply to requesting profile",reply->errorString());
-            myMainw->settingsDialog->profileDialog->setLabelInfoToUser("Profile save to server - fail");
+            myMainw->settingsDialog->registerDialog->setLabelInfoToUser("Profile save to server - fail");
             return true;
         }
     }
     else {
         qDebug() <<  "errorcode:" << errorcode << reply->errorString();
         //Indicating user
-        if(myMainw->settingsDialog->profileDialog)
+        if(myMainw->settingsDialog->registerDialog)
         {
             //QMessageBox::about(myMainw->settingsDialog->profileDialog, "Server reply to requesting profile", "OK " + reply->readAll());
-            myMainw->settingsDialog->profileDialog->setLabelInfoToUser("Profile saved to server");
+            myMainw->settingsDialog->registerDialog->setLabelInfoToUser("Profile saved to server");
             return false;
         }
     }
@@ -534,19 +597,161 @@ void HttpClient::ackOfSendingPicture()
     if(errorcode != 0) {
         qDebug() <<  "errorcode:" << errorcode << reply->errorString();
         //Indicating user
-        if(myMainw->settingsDialog->profileDialog)
+        if(myMainw->settingsDialog->registerDialog)
         {
             //QMessageBox::about(myMainw->settingsDialog->profileDialog, "Server reply to requesting picture",reply->errorString());
-            myMainw->settingsDialog->profileDialog->setLabelInfoToUser("Picture save to server - fail");
+            myMainw->settingsDialog->registerDialog->setLabelInfoToUser("Picture save to server - fail");
         }
     }
     else {
         qDebug() <<  "errorcode:" << errorcode << reply->errorString();
         //Indicating user
-        if(myMainw->settingsDialog->profileDialog)
+        if(myMainw->settingsDialog->registerDialog)
         {
             //QMessageBox::about(myMainw->settingsDialog->profileDialog, "Server reply to requesting picture", "OK " + reply->readAll());
-            myMainw->settingsDialog->profileDialog->setLabelInfoToUser("Picture saved to server");
+            myMainw->settingsDialog->registerDialog->setLabelInfoToUser("Picture saved to server");
+        }
+    }
+}
+
+/**
+  * Request the user information of certain user from the server.
+  * Send authentication information in the header.
+  *
+  * @param QString username which information we want.
+  */
+void HttpClient::requestUserInfo(QString username)
+{
+    qDebug() << "_requestUsersInfo" ;
+
+    QUrl qurl("http://speedfreak-app.com/users/info/" + username);
+    qDebug() << qurl.toString();
+    QNetworkRequest request(qurl);
+    QNetworkReply *currentDownload;
+
+    QString credentials = myMainw->settingsDialog->getUserName() + ":" + myMainw->settingsDialog->getPassword();
+    credentials = "Basic " + credentials.toAscii().toBase64();
+    request.setRawHeader(QByteArray("Authorization"),credentials.toAscii());
+
+    currentDownload = netManager->post(request, ("data=" ));
+    connect(currentDownload,SIGNAL(finished()),this,SLOT(ackOfUserInfo()));
+
+    //qDebug() << "requestUserInfo";
+    //ackOfUserInfo();
+}
+
+/**
+  * React to servers responce after request the user information of certain user.
+  */
+void HttpClient::ackOfUserInfo()
+{
+    qDebug() << "ackUserInfo";
+    /*QString fileName = "user.xml";
+    QFile file(fileName);
+    //file.setFileName( "routetemp.xml");
+    if (!file.open(QFile::ReadOnly))
+    {
+        qDebug() << "_xmlShow fail";
+        return;
+    }
+
+    myXmlreader->xmlReadUserInfo(&file);
+    file.close();*/
+
+    QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());
+    //myXmlreader->xmlReadUserInfo(reply);
+
+    //for(int i = 0; i < myXmlreader->usersList->count(); i++)
+    //{
+    //    myMainw->settingsDialog->sendUsernameToUsersDialog(myXmlreader->usersList->at(i));
+    //}
+    QNetworkReply::NetworkError errorcode;
+    errorcode = reply->error();
+    if(errorcode != 0) {
+        qDebug() <<  "errorcode:" << errorcode << reply->errorString();
+        //QMessageBox::about(myMainw->topResultDialog, "Server reply to requesting categories",reply->errorString());
+        if(myMainw->usersDialog)
+            myMainw->usersDialog->setLabelInfoToUser("You're not logged! Please register or log in.");
+    }
+    else {
+        myXmlreader->xmlReadUserInfo(reply);
+        qDebug() <<  "errorcode:" << errorcode << reply->errorString();
+        //QMessageBox::about(myMainw->topResultDialog, "Server reply to requesting categories ", "OK");
+        if(myMainw->usersDialog)
+            myMainw->usersDialog->setLabelInfoToUser("");
+    }
+}
+
+/**
+  * Request the users list of all users from the server.
+  * Send authentication information in the header.
+  */
+void HttpClient::requestUsers()
+{  
+    qDebug() << "_requestUsers" ;
+
+    QUrl qurl("http://www.speedfreak-app.com/users/list_all");
+    qDebug() << qurl.toString();
+    QNetworkRequest request(qurl);
+    QNetworkReply *currentDownload;
+
+    QString credentials = myMainw->settingsDialog->getUserName() + ":" + myMainw->settingsDialog->getPassword();
+    credentials = "Basic " + credentials.toAscii().toBase64();
+    request.setRawHeader(QByteArray("Authorization"),credentials.toAscii());
+
+    currentDownload = netManager->post(request, ("data=" ));
+    connect(currentDownload,SIGNAL(finished()),this,SLOT(ackOfUsers()));
+
+
+    //connect(currentDownload,SIGNAL(error(QNetworkReply::NetworkError)),myMainw,SLOT(errorFromServer(QNetworkReply::NetworkError)));
+
+    //Indicating user
+    if(myMainw->usersDialog)
+        myMainw->usersDialog->setLabelInfoToUser("Reguesting users from server");
+
+    //ackOfUsers();
+}
+
+/**
+  * React to servers responce after request the users list of all users.
+  */
+void HttpClient::ackOfUsers()
+{
+    qDebug() << "ackUsers";
+
+    //if(myMainw->topResultDialog)
+    //    myMainw->topResultDialog->setLabelInfoToUser("");
+
+    QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());
+    //myXmlreader->xmlReadUsers(reply);
+
+    QNetworkReply::NetworkError errorcode;
+    errorcode = reply->error();
+    if(errorcode != 0) {
+        qDebug() <<  "errorcode:" << errorcode << reply->errorString();
+        //QMessageBox::about(myMainw->topResultDialog, "Server reply to requesting categories",reply->errorString());
+        if(myMainw->usersDialog)
+            myMainw->usersDialog->setLabelInfoToUser("You're not logged! Please register or log in.");
+    }
+    else {
+        myXmlreader->xmlReadUsers(reply);
+        qDebug() <<  "errorcode:" << errorcode << reply->errorString();
+        //QMessageBox::about(myMainw->topResultDialog, "Server reply to requesting categories ", "OK");
+        if(myMainw->usersDialog)
+            myMainw->usersDialog->setLabelInfoToUser("");
+        for(int i = 0; i < myXmlreader->usersList->count(); i++)
+        {
+            myMainw->usersDialog->appendUserToList(myXmlreader->usersList->at(i));
         }
     }
 }
+
+/**
+  * This slot function called when userInfo signal is emitted from xmlreader.
+  *
+  * @param QStringList usersInfo includes information from certain user.
+  */
+void HttpClient::sendUsersInfo(QStringList* usersInfo)
+{
+    myMainw->usersDialog->setUserInfo(usersInfo);
+}