From a44ed6f222b934d30124502682923b4205894f99 Mon Sep 17 00:00:00 2001 From: Damiano Date: Wed, 21 Oct 2015 22:47:24 +0200 Subject: [PATCH] Better open single picture --- Documentation/My_Skate_Map_stralciata.kml | 5 +- MobileClient/QtProject/MobileClientQml.pro | 4 - MobileClient/QtProject/src/Panel_Home.qml | 23 ++--- .../QtProject/src/Panel_NearbySpots.qml | 16 +-- .../src/cpp/WebApi/NearbySpotsModel.cpp | 98 ------------------- .../src/cpp/WebApi/NearbySpotsModel.h | 54 ---------- .../QtProject/src/cpp/WebApi/NewsModel.cpp | 90 ----------------- .../QtProject/src/cpp/WebApi/NewsModel.h | 53 ---------- .../src/cpp/WebApi/PictureRepository.cpp | 50 +++++++--- .../src/cpp/WebApi/PictureRepository.h | 11 ++- .../src/cpp/WebApi/PicturesModel.cpp | 43 +++++--- .../QtProject/src/cpp/WebApi/PicturesModel.h | 6 +- .../src/cpp/WebApi/SpotRepository.cpp | 28 +++--- .../QtProject/src/cpp/WebApi/SpotRepository.h | 12 ++- .../QtProject/src/cpp/WebApi/SpotsModel.cpp | 28 +++++- .../QtProject/src/cpp/WebApi/SpotsModel.h | 6 ++ MobileClient/QtProject/src/cpp/main.cpp | 4 - .../src/pages-picture/Page_PicturesList.qml | 17 +++- .../QtProject/src/pages-spot/Page_Spot.qml | 27 +++-- .../src/pages-upload/NearbySpotSelection.qml | 10 +- .../src/pages-user/Page_Settings.qml | 1 - .../QtProject/src/pages-user/Page_User.qml | 20 ++-- README.md | 4 +- 23 files changed, 188 insertions(+), 422 deletions(-) delete mode 100644 MobileClient/QtProject/src/cpp/WebApi/NearbySpotsModel.cpp delete mode 100644 MobileClient/QtProject/src/cpp/WebApi/NearbySpotsModel.h delete mode 100644 MobileClient/QtProject/src/cpp/WebApi/NewsModel.cpp delete mode 100644 MobileClient/QtProject/src/cpp/WebApi/NewsModel.h diff --git a/Documentation/My_Skate_Map_stralciata.kml b/Documentation/My_Skate_Map_stralciata.kml index 6b8eb48..aba64c2 100644 --- a/Documentation/My_Skate_Map_stralciata.kml +++ b/Documentation/My_Skate_Map_stralciata.kml @@ -367,16 +367,13 @@ http://lh4.ggpht.com/_NFj9nTnRuuA/THlMnExCTOI/AAAAAAAAAN8/oyB0plBcpp0/s144/DSC00 6.659367,46.831279 -Coira - Banca -9.528907,46.851196 - Coira - Bank gigante 9.508753,46.861453 Coira - Curb in salita 9.519299000000002,46.851453 -Coira - Curb storto +Coira - Curb storto che non è piu storto 9.530125,46.85117400000001 Coira - Minihip diff --git a/MobileClient/QtProject/MobileClientQml.pro b/MobileClient/QtProject/MobileClientQml.pro index c3f7ec7..3f0ca56 100644 --- a/MobileClient/QtProject/MobileClientQml.pro +++ b/MobileClient/QtProject/MobileClientQml.pro @@ -31,9 +31,7 @@ SOURCES += src/cpp/main.cpp \ src/cpp/WebApi/WebApiError.cpp \ src/cpp/HelperClasses/Logger.cpp \ src/cpp/HelperClasses/StringHelper.cpp \ - src/cpp/WebApi/NewsModel.cpp \ src/cpp/WebApi/PictureUploader.cpp \ - src/cpp/WebApi/NearbySpotsModel.cpp \ src/cpp/HelperClasses/PlateformDetail.cpp \ src/cpp/HelperClasses/LocationManager.cpp \ src/cpp/HelperClasses/PictureCacher.cpp \ @@ -62,9 +60,7 @@ HEADERS += \ src/cpp/WebApi/WebApiError.h \ src/cpp/HelperClasses/Logger.h \ src/cpp/HelperClasses/StringHelper.h \ - src/cpp/WebApi/NewsModel.h \ src/cpp/WebApi/PictureUploader.h \ - src/cpp/WebApi/NearbySpotsModel.h \ src/cpp/HelperClasses/PlateformDetail.h \ src/cpp/HelperClasses/LocationManager.h \ src/cpp/HelperClasses/PictureCacher.h \ diff --git a/MobileClient/QtProject/src/Panel_Home.qml b/MobileClient/QtProject/src/Panel_Home.qml index 2a6a62d..e197271 100644 --- a/MobileClient/QtProject/src/Panel_Home.qml +++ b/MobileClient/QtProject/src/Panel_Home.qml @@ -14,7 +14,6 @@ import QtQuick 2.3 import QtQuick.Controls 1.2 // Project c++ imports --------------------- -import NewsModel 1.0 // Project qml imports --------------------- import "qrc:/" @@ -23,17 +22,6 @@ import "qrc:/pages-spot/" Item { - NewsModel{ - id: newsModel - } - - // Signals ----------------------------- - Component.onCompleted: - { - newsModel.getNewestSpots(); - } - - // Gui --------------------------------- Navigator{ @@ -67,12 +55,15 @@ Item { } initialItem: Page_PicturesList { + id: page_PicturesList width : parent.width height: parent.height navigation_Title: qsTr("News") - model: newsModel + Component.onCompleted: { + model.getNewestSpots(); + } onUserClicked: { stackView.push({item: Qt.resolvedUrl("qrc:/pages-user/Page_User.qml"), @@ -88,10 +79,10 @@ Item { stackView.push({item: Qt.resolvedUrl("qrc:/pages-spot/Page_Spot.qml"), properties:{width : stackView.width, height : stackView.height, - navigation_Title : spotName, + navigation_Title : spotName, stackView : stackView, - navigator : navigator, - spotId : spotId}}); + navigator : navigator}}); + stackView.currentItem.model.getBy_SpotId(spotId); } } } diff --git a/MobileClient/QtProject/src/Panel_NearbySpots.qml b/MobileClient/QtProject/src/Panel_NearbySpots.qml index f50ba01..ecc5099 100644 --- a/MobileClient/QtProject/src/Panel_NearbySpots.qml +++ b/MobileClient/QtProject/src/Panel_NearbySpots.qml @@ -14,7 +14,7 @@ import QtQuick 2.3 import QtQuick.Controls 1.2 // Project c++ imports --------------------- -import NearbySpotsModel 1.0 +import SpotsModel 1.0 // Project qml imports --------------------- import "qrc:/views" @@ -22,8 +22,8 @@ import "qrc:/pages-spot" Item { - NearbySpotsModel{ - id: nearbySpotsModel + SpotsModel{ + id: spotsModel } // Signals ----------------------------- @@ -39,7 +39,7 @@ Item { // TODO display message cacca } - nearbySpotsModel.setLocation(hc_LocationManager.latitude(), + spotsModel.setLocation(hc_LocationManager.latitude(), hc_LocationManager.longitude(), 150); } @@ -51,7 +51,7 @@ Item { return; // Set current location (also if outdated) - nearbySpotsModel.setLocation(hc_LocationManager.latitude(), + spotsModel.setLocation(hc_LocationManager.latitude(), hc_LocationManager.longitude(), 150); @@ -93,7 +93,7 @@ Item { navigation_Title: qsTr('Nearby spots') - model: nearbySpotsModel + model: spotsModel onSpotClicked: { stackView.push({item: Qt.resolvedUrl("qrc:/pages-spot/Page_Spot.qml"), @@ -101,8 +101,8 @@ Item { height : stackView.height, navigation_Title : spotName, stackView : stackView, - navigator : navigator, - spotId : spotId}}); + navigator : navigator}}); + stackView.currentItem.model.getBy_SpotId(spotId); } } } diff --git a/MobileClient/QtProject/src/cpp/WebApi/NearbySpotsModel.cpp b/MobileClient/QtProject/src/cpp/WebApi/NearbySpotsModel.cpp deleted file mode 100644 index b0308b4..0000000 --- a/MobileClient/QtProject/src/cpp/WebApi/NearbySpotsModel.cpp +++ /dev/null @@ -1,98 +0,0 @@ -/******************************************************************** - * * - * InstaSpots * - * * - * Author: Damiano Lombardi * - * Created: 31.12.2014 * - * * - * Copiright (c) 2014 Damiano Lombardi * - * * -********************************************************************/ - -// Files includes -------------------------- -#include "NearbySpotsModel.h" - -// Projects includes ----------------------- -#include "Spot.h" -#include "SpotRepository.h" - -// Qt includes ----------------------------- -#include - -//----------------------------------------------------------------------------------------------------------------------------- - -NearbySpotsModel::NearbySpotsModel(QObject *parent) - : QAbstractListModel(parent), - m_QList_Spots(), - m_RequestId(0) -{ - connect(SpotRepository::instance(), - SIGNAL(signal_DataReady(int, - bool)), - SLOT(slot_SpotRepository_DataReady(int, - bool))); -} - -//----------------------------------------------------------------------------------------------------------------------------- - -NearbySpotsModel::~NearbySpotsModel() -{ - -} - -//----------------------------------------------------------------------------------------------------------------------------- - -int NearbySpotsModel::rowCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent) - return m_QList_Spots.count(); -} - -//----------------------------------------------------------------------------------------------------------------------------- - -QVariant NearbySpotsModel::data(const QModelIndex &index, - int role) const -{ - return m_QList_Spots.at(index.row())->spotRole((Spot::SpotRoles)role); -} - -//----------------------------------------------------------------------------------------------------------------------------- - -QHash NearbySpotsModel::roleNames() const -{ - return Spot::roleNames(); -} - -//----------------------------------------------------------------------------------------------------------------------------- - -void NearbySpotsModel::setLocation(double latitude, - double longitude, - double maxDistance_km) -{ - m_RequestId = SpotRepository::instance()->getBy_Distance(latitude, - longitude, - maxDistance_km); -} - -//----------------------------------------------------------------------------------------------------------------------------- - -void NearbySpotsModel::slot_SpotRepository_DataReady(int requestId, - bool success) -{ - if(m_RequestId != requestId) - return; - - if(success == false) - return; - // TODO error handling? - - beginResetModel(); - m_QList_Spots.clear(); - endResetModel(); - - beginInsertRows(QModelIndex() , 0, SpotRepository::instance()->getSpots(m_RequestId).size()-1); - m_QList_Spots = SpotRepository::instance()->getSpots(m_RequestId); - endInsertRows(); -} - -//----------------------------------------------------------------------------------------------------------------------------- diff --git a/MobileClient/QtProject/src/cpp/WebApi/NearbySpotsModel.h b/MobileClient/QtProject/src/cpp/WebApi/NearbySpotsModel.h deleted file mode 100644 index a4f84d8..0000000 --- a/MobileClient/QtProject/src/cpp/WebApi/NearbySpotsModel.h +++ /dev/null @@ -1,54 +0,0 @@ -/******************************************************************** - * * - * InstaSpots * - * * - * Author: Damiano Lombardi * - * Created: 31.12.2014 * - * * - * Copiright (c) 2014 Damiano Lombardi * - * * -********************************************************************/ - -#ifndef NEARBYSPOTSMODEL_H -#define NEARBYSPOTSMODEL_H - -// Qt includes ----------------------------- -#include - -// Forward declarations -------------------- -class Spot; - -class NearbySpotsModel : public QAbstractListModel -{ - Q_OBJECT - -public: - - explicit NearbySpotsModel(QObject *parent = 0); - ~NearbySpotsModel(); - - virtual int rowCount(const QModelIndex &parent) const; - - virtual QVariant data(const QModelIndex &index, int role) const; - - virtual QHash roleNames() const; - - public slots: - - void setLocation(double latitude, - double longitude, - double maxDistance_km); - - private slots: - void slot_SpotRepository_DataReady(int requestId, - bool success); - - private: - - // News data - QList m_QList_Spots; - int m_RequestId; -}; - -#endif // NEARBYSPOTSMODEL_H - diff --git a/MobileClient/QtProject/src/cpp/WebApi/NewsModel.cpp b/MobileClient/QtProject/src/cpp/WebApi/NewsModel.cpp deleted file mode 100644 index 53607b7..0000000 --- a/MobileClient/QtProject/src/cpp/WebApi/NewsModel.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/******************************************************************** - * * - * InstaSpots * - * * - * Author: Damiano Lombardi * - * Created: 18.12.2014 * - * * - * Copiright (c) 2014 Damiano Lombardi * - * * -********************************************************************/ - -// Files includes -------------------------- -#include "NewsModel.h" - -// Projects includes ----------------------- -#include "Picture.h" -#include "PictureRepository.h" - -// Qt includes ----------------------------- -#include - -//----------------------------------------------------------------------------------------------------------------------------- - -NewsModel::NewsModel(QObject *parent) - : QAbstractListModel(parent), - m_QList_Pictures(), - m_RequestId(0) -{ - connect(PictureRepository::instance(), - SIGNAL(signal_DataReady(int, - bool)), - SLOT(slot_PictureRepository_DataReady(int, - bool))); -} - -//----------------------------------------------------------------------------------------------------------------------------- - -NewsModel::~NewsModel() -{ - -} - -//----------------------------------------------------------------------------------------------------------------------------- - -int NewsModel::rowCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent) - return m_QList_Pictures.count(); -} - -//----------------------------------------------------------------------------------------------------------------------------- - -QVariant NewsModel::data(const QModelIndex &index, - int role) const -{ - return m_QList_Pictures.at(index.row())->pictureRole((Picture::PictureRoles)role); -} - -//----------------------------------------------------------------------------------------------------------------------------- - -QHash NewsModel::roleNames() const -{ - return Picture::roleNames(); -} - -//----------------------------------------------------------------------------------------------------------------------------- - -void NewsModel::getNewestSpots() -{ - m_RequestId = PictureRepository::instance()->getNews(); -} - -//----------------------------------------------------------------------------------------------------------------------------- - -void NewsModel::slot_PictureRepository_DataReady(int requestId, - bool success) -{ - if(m_RequestId != requestId) - return; - - if(success == false) - return; - // TODO error handling? - - beginInsertRows(QModelIndex() , 0, PictureRepository::instance()->getPictures(m_RequestId).size()-1); - m_QList_Pictures = PictureRepository::instance()->getPictures(m_RequestId); - endInsertRows(); -} - -//----------------------------------------------------------------------------------------------------------------------------- diff --git a/MobileClient/QtProject/src/cpp/WebApi/NewsModel.h b/MobileClient/QtProject/src/cpp/WebApi/NewsModel.h deleted file mode 100644 index 520f737..0000000 --- a/MobileClient/QtProject/src/cpp/WebApi/NewsModel.h +++ /dev/null @@ -1,53 +0,0 @@ -/******************************************************************** - * * - * InstaSpots * - * * - * Author: Damiano Lombardi * - * Created: 18.12.2014 * - * * - * Copiright (c) 2014 Damiano Lombardi * - * * -********************************************************************/ - -#ifndef NEWSMODEL_H -#define NEWSMODEL_H - -// Qt includes ----------------------------- -#include - -// Forward declarations -------------------- -class Picture; - -class NewsModel : public QAbstractListModel -{ - Q_OBJECT - - public: - - explicit NewsModel(QObject *parent = 0); - ~NewsModel(); - - virtual int rowCount(const QModelIndex &parent) const; - - virtual QVariant data(const QModelIndex &index, int role) const; - - virtual QHash roleNames() const; - - signals: - - public slots: - - void getNewestSpots(); - - private slots: - void slot_PictureRepository_DataReady(int requestId, - bool success); - - private: - - // News data - QList m_QList_Pictures; - int m_RequestId; -}; - -#endif // NEWSMODEL_H diff --git a/MobileClient/QtProject/src/cpp/WebApi/PictureRepository.cpp b/MobileClient/QtProject/src/cpp/WebApi/PictureRepository.cpp index 1f3a004..d7d5b16 100644 --- a/MobileClient/QtProject/src/cpp/WebApi/PictureRepository.cpp +++ b/MobileClient/QtProject/src/cpp/WebApi/PictureRepository.cpp @@ -79,15 +79,42 @@ void PictureRepository::destroy() //----------------------------------------------------------------------------------------------------------------------------- +int PictureRepository::getNewRequestId() +{ + return ++m_RequestId; +} + +//----------------------------------------------------------------------------------------------------------------------------- + QList PictureRepository::getPictures(int requestId) { - return m_QMap_Results.value(requestId, - QList()); + return m_QMap_Results.value(requestId); +} + +//----------------------------------------------------------------------------------------------------------------------------- + +void PictureRepository::getBy_PictureId(int requestId, + int pictureId) +{ + // Get local + if(m_QMap_Pictures.contains(pictureId)) + { + QList newPictures; + newPictures.append(m_QMap_Pictures.value(pictureId)); + m_QMap_Results.insert(requestId, + newPictures); + emit signal_DataReady(requestId, + true); + return; + } + + // Get internet } //----------------------------------------------------------------------------------------------------------------------------- -int PictureRepository::getBy_SpotId(int spotId) +void PictureRepository::getBy_SpotId(int requestId, + int spotId) { QList qList_QueryItems; qList_QueryItems.append(QueryItem(WebApi::R_PARAM_SPOT_ID, QString::number(spotId))); @@ -97,19 +124,18 @@ int PictureRepository::getBy_SpotId(int spotId) webApiCommand->setAnswerType(WebApiCommand::JSON); webApiCommand->setCommand(WebApi::C_GET_PICTURES_BY_SPOT_ID); - webApiCommand->setProperty(PROPERTY_REQUEST_ID, ++m_RequestId); + webApiCommand->setProperty(PROPERTY_REQUEST_ID, requestId); connect(webApiCommand, SIGNAL(signal_Finished(const WebApiError &)), SLOT(slot_Command_Finished(const WebApiError &))); webApiCommand->postRequest(qList_QueryItems); - - return m_RequestId; } //----------------------------------------------------------------------------------------------------------------------------- -int PictureRepository::getBy_UserId(int userId) +void PictureRepository::getBy_UserId(int requestId, + int userId) { QList qList_QueryItems; qList_QueryItems.append(QueryItem(WebApi::R_PARAM_USER_ID, QString::number(userId))); @@ -119,19 +145,17 @@ int PictureRepository::getBy_UserId(int userId) webApiCommand->setAnswerType(WebApiCommand::JSON); webApiCommand->setCommand(WebApi::C_GET_PICTURES_BY_USER_ID); - webApiCommand->setProperty(PROPERTY_REQUEST_ID, ++m_RequestId); + webApiCommand->setProperty(PROPERTY_REQUEST_ID, requestId); connect(webApiCommand, SIGNAL(signal_Finished(const WebApiError &)), SLOT(slot_Command_Finished(const WebApiError &))); webApiCommand->postRequest(qList_QueryItems); - - return m_RequestId; } //----------------------------------------------------------------------------------------------------------------------------- -int PictureRepository::getNews() +void PictureRepository::getBy_Newest(int requestId) { QList qList_QueryItems; @@ -140,14 +164,12 @@ int PictureRepository::getNews() webApiCommand->setAnswerType(WebApiCommand::JSON); webApiCommand->setCommand(WebApi::C_GET_PICTURES_BY_NEWEST); - webApiCommand->setProperty(PROPERTY_REQUEST_ID, ++m_RequestId); + webApiCommand->setProperty(PROPERTY_REQUEST_ID, requestId); connect(webApiCommand, SIGNAL(signal_Finished(const WebApiError &)), SLOT(slot_Command_Finished(const WebApiError &))); webApiCommand->postRequest(qList_QueryItems); - - return m_RequestId; } //----------------------------------------------------------------------------------------------------------------------------- diff --git a/MobileClient/QtProject/src/cpp/WebApi/PictureRepository.h b/MobileClient/QtProject/src/cpp/WebApi/PictureRepository.h index fb76dea..6eb6117 100644 --- a/MobileClient/QtProject/src/cpp/WebApi/PictureRepository.h +++ b/MobileClient/QtProject/src/cpp/WebApi/PictureRepository.h @@ -1,6 +1,6 @@ /******************************************************************** * * - * InstaSpots * + * Lowerspot * * * * Author: Damiano Lombardi * * Created: 15.06.2015 * @@ -37,13 +37,16 @@ class PictureRepository : public QObject static PictureRepository *instance() { return s_PictureRepository; } + int getNewRequestId(); + public slots: QList getPictures(int requestId); - int getBy_SpotId(int spotId); - int getBy_UserId(int userId); - int getNews(); + void getBy_PictureId(int requestId, int pictureId); + void getBy_SpotId(int requestId, int spotId); + void getBy_UserId(int requestId, int userId); + void getBy_Newest(int requestId); signals: diff --git a/MobileClient/QtProject/src/cpp/WebApi/PicturesModel.cpp b/MobileClient/QtProject/src/cpp/WebApi/PicturesModel.cpp index 13a0de9..d0a9336 100644 --- a/MobileClient/QtProject/src/cpp/WebApi/PicturesModel.cpp +++ b/MobileClient/QtProject/src/cpp/WebApi/PicturesModel.cpp @@ -1,6 +1,6 @@ /******************************************************************** * * - * InstaSpots * + * Lowerspot * * * * Author: Damiano Lombardi * * Created: 15.06.2015 * @@ -26,11 +26,13 @@ PicturesModel::PicturesModel(QObject *parent) m_QList_Pictures(), m_RequestId(0) { - connect(PictureRepository::instance(), - SIGNAL(signal_DataReady(int, - bool)), - SLOT(slot_PictureRepository_DataReady(int, - bool))); + m_RequestId = PictureRepository::instance()->getNewRequestId(); + + connect(PictureRepository::instance(), + SIGNAL(signal_DataReady(int, + bool)), + SLOT(slot_PictureRepository_DataReady(int, + bool))); } //----------------------------------------------------------------------------------------------------------------------------- @@ -65,25 +67,34 @@ QHash PicturesModel::roleNames() const //----------------------------------------------------------------------------------------------------------------------------- -void PicturesModel::setSpotId(int id) +void PicturesModel::getNewestSpots() { - beginResetModel(); - m_QList_Pictures.clear(); - endResetModel(); + PictureRepository::instance()->getBy_Newest(m_RequestId); +} +//----------------------------------------------------------------------------------------------------------------------------- - m_RequestId = PictureRepository::instance()->getBy_SpotId(id); +void PicturesModel::getBy_PictureId(int id) +{ + PictureRepository::instance()->getBy_PictureId(m_RequestId, + id); } //----------------------------------------------------------------------------------------------------------------------------- -void PicturesModel::setUserId(int id) +void PicturesModel::getBy_SpotId(int id) { - beginResetModel(); - m_QList_Pictures.clear(); - endResetModel(); - m_RequestId = PictureRepository::instance()->getBy_UserId(id); + PictureRepository::instance()->getBy_SpotId(m_RequestId, + id); +} + +//----------------------------------------------------------------------------------------------------------------------------- + +void PicturesModel::getBy_UserId(int id) +{ + PictureRepository::instance()->getBy_UserId(m_RequestId, + id); } //----------------------------------------------------------------------------------------------------------------------------- diff --git a/MobileClient/QtProject/src/cpp/WebApi/PicturesModel.h b/MobileClient/QtProject/src/cpp/WebApi/PicturesModel.h index 47382dc..72b7a11 100644 --- a/MobileClient/QtProject/src/cpp/WebApi/PicturesModel.h +++ b/MobileClient/QtProject/src/cpp/WebApi/PicturesModel.h @@ -35,9 +35,11 @@ class PicturesModel : public QAbstractListModel public slots: - void setSpotId(int id); + void getNewestSpots(); - void setUserId(int id); + void getBy_PictureId(int id); + void getBy_SpotId(int id); + void getBy_UserId(int id); signals: void countChanged(int count); diff --git a/MobileClient/QtProject/src/cpp/WebApi/SpotRepository.cpp b/MobileClient/QtProject/src/cpp/WebApi/SpotRepository.cpp index 67dcc0e..561342e 100644 --- a/MobileClient/QtProject/src/cpp/WebApi/SpotRepository.cpp +++ b/MobileClient/QtProject/src/cpp/WebApi/SpotRepository.cpp @@ -80,17 +80,24 @@ void SpotRepository::destroy() //----------------------------------------------------------------------------------------------------------------------------- +int SpotRepository::getNewRequestId() +{ + return ++m_RequestId; +} + +//----------------------------------------------------------------------------------------------------------------------------- + QList SpotRepository::getSpots(int requestId) { - return m_QMap_Results.value(requestId, - QList()); + return m_QMap_Results.value(requestId); } //----------------------------------------------------------------------------------------------------------------------------- -int SpotRepository::getBy_Distance(double latitude, - double longitude, - double maxDistance_km) +void SpotRepository::getBy_Distance(int requestId, + double latitude, + double longitude, + double maxDistance_km) { QList qList_QueryItems; qList_QueryItems.append(QueryItem(WebApi::R_PARAM_LATITUDE, QString::number(latitude))); @@ -102,19 +109,18 @@ int SpotRepository::getBy_Distance(double latitude, webApiCommand->setAnswerType(WebApiCommand::JSON); webApiCommand->setCommand(WebApi::C_GET_SPOTS_BY_DISTANCE); - webApiCommand->setProperty(PROPERTY_REQUEST_ID, ++m_RequestId); + webApiCommand->setProperty(PROPERTY_REQUEST_ID, requestId); connect(webApiCommand, SIGNAL(signal_Finished(const WebApiError &)), SLOT(slot_Command_Finished(const WebApiError &))); webApiCommand->postRequest(qList_QueryItems); - - return m_RequestId; } //----------------------------------------------------------------------------------------------------------------------------- -int SpotRepository::getBy_UserId(int userId) +void SpotRepository::getBy_UserId(int requestId, + int userId) { QList qList_QueryItems; qList_QueryItems.append(QueryItem(WebApi::R_PARAM_USER_ID, QString::number(userId))); @@ -124,14 +130,12 @@ int SpotRepository::getBy_UserId(int userId) webApiCommand->setAnswerType(WebApiCommand::JSON); webApiCommand->setCommand(WebApi::C_GET_SPOTS_BY_USER_ID); - webApiCommand->setProperty(PROPERTY_REQUEST_ID, ++m_RequestId); + webApiCommand->setProperty(PROPERTY_REQUEST_ID, requestId); connect(webApiCommand, SIGNAL(signal_Finished(const WebApiError &)), SLOT(slot_Command_Finished(const WebApiError &))); webApiCommand->postRequest(qList_QueryItems); - - return m_RequestId; } //----------------------------------------------------------------------------------------------------------------------------- diff --git a/MobileClient/QtProject/src/cpp/WebApi/SpotRepository.h b/MobileClient/QtProject/src/cpp/WebApi/SpotRepository.h index 0668ad5..7505b12 100644 --- a/MobileClient/QtProject/src/cpp/WebApi/SpotRepository.h +++ b/MobileClient/QtProject/src/cpp/WebApi/SpotRepository.h @@ -37,15 +37,19 @@ class SpotRepository : public QObject static SpotRepository *instance() { return s_SpotRepository; } + int getNewRequestId(); + public slots: QList getSpots(int requestId); - int getBy_Distance(double latitude, - double longitude, - double maxDistance_km); + void getBy_Distance(int requestId, + double latitude, + double longitude, + double maxDistance_km); - int getBy_UserId(int userId); + void getBy_UserId(int requestId, + int userId); signals: diff --git a/MobileClient/QtProject/src/cpp/WebApi/SpotsModel.cpp b/MobileClient/QtProject/src/cpp/WebApi/SpotsModel.cpp index 1e68f5f..591dc63 100644 --- a/MobileClient/QtProject/src/cpp/WebApi/SpotsModel.cpp +++ b/MobileClient/QtProject/src/cpp/WebApi/SpotsModel.cpp @@ -26,6 +26,8 @@ SpotsModel::SpotsModel(QObject *parent) : m_QList_Spots(), m_RequestId(0) { + m_RequestId = SpotRepository::instance()->getNewRequestId(); + connect(SpotRepository::instance(), SIGNAL(signal_DataReady(int, bool)), @@ -64,19 +66,35 @@ QHash SpotsModel::roleNames() const //----------------------------------------------------------------------------------------------------------------------------- +void SpotsModel::clear() +{ + beginResetModel(); + m_QList_Spots.clear(); + endResetModel(); +} + +//----------------------------------------------------------------------------------------------------------------------------- + void SpotsModel::setUserId(int id) { - beginResetModel(); - m_QList_Spots.clear(); - endResetModel(); + SpotRepository::instance()->getBy_UserId(m_RequestId, + id); +} - m_RequestId = SpotRepository::instance()->getBy_UserId(id); +//----------------------------------------------------------------------------------------------------------------------------- + +void SpotsModel::setLocation(double latitude, double longitude, double maxDistance_km) +{ + SpotRepository::instance()->getBy_Distance(m_RequestId, + latitude, + longitude, + maxDistance_km); } //----------------------------------------------------------------------------------------------------------------------------- void SpotsModel::slot_SpotRepository_DataReady(int requestId, - bool success) + bool success) { if(m_RequestId != requestId) return; diff --git a/MobileClient/QtProject/src/cpp/WebApi/SpotsModel.h b/MobileClient/QtProject/src/cpp/WebApi/SpotsModel.h index 8e28f95..623fde7 100644 --- a/MobileClient/QtProject/src/cpp/WebApi/SpotsModel.h +++ b/MobileClient/QtProject/src/cpp/WebApi/SpotsModel.h @@ -35,8 +35,14 @@ class SpotsModel : public QAbstractListModel public slots: + void clear(); + void setUserId(int id); + void setLocation(double latitude, + double longitude, + double maxDistance_km); + signals: void countChanged(int count); diff --git a/MobileClient/QtProject/src/cpp/main.cpp b/MobileClient/QtProject/src/cpp/main.cpp index e6a380e..85981b7 100644 --- a/MobileClient/QtProject/src/cpp/main.cpp +++ b/MobileClient/QtProject/src/cpp/main.cpp @@ -13,8 +13,6 @@ #include "WebApi/PicturesModel.h" #include "WebApi/Picture.h" #include "WebApi/User.h" -#include "WebApi/NewsModel.h" -#include "WebApi/NearbySpotsModel.h" #include "WebApi/PictureUploader.h" // Qt includes ----------------------------- @@ -63,8 +61,6 @@ int main(int argc, char *argv[]) qmlRegisterType ("Picture", 1, 0, "Picture"); qmlRegisterType ("SpotsModel", 1, 0, "SpotsModel"); qmlRegisterType ("Spot", 1, 0, "Spot"); - qmlRegisterType ("NewsModel", 1, 0, "NewsModel"); - qmlRegisterType("NearbySpotsModel", 1, 0, "NearbySpotsModel"); engine.load(QUrl(QStringLiteral("qrc:///main.qml"))); diff --git a/MobileClient/QtProject/src/pages-picture/Page_PicturesList.qml b/MobileClient/QtProject/src/pages-picture/Page_PicturesList.qml index 45ca746..e102e49 100644 --- a/MobileClient/QtProject/src/pages-picture/Page_PicturesList.qml +++ b/MobileClient/QtProject/src/pages-picture/Page_PicturesList.qml @@ -13,6 +13,9 @@ import QtQuick 2.3 import QtQuick.Controls 1.3 +// Project c++ imports --------------------- +import PicturesModel 1.0 + // Project qml imports --------------------- import "qrc:/" import "qrc:/views" @@ -20,6 +23,12 @@ import "qrc:/views" Item{ id: page_PicturesList + + // Bind properties --------------------- + + property alias model: picturesModel + + // Navigation properties --------------- property string navigation_Title: qsTr("Pictures") @@ -28,9 +37,11 @@ Item{ property bool navigation_MenuButtonVisible: false - // Bind properties --------------------- + // Model ------------------------------- - property alias model: listView.model + PicturesModel{ + id: picturesModel + } // Signals ----------------------------- @@ -44,7 +55,7 @@ Item{ ListView { id: listView anchors.fill: parent - model: wa_NewsModel + model: picturesModel delegate: SpotViewDelegate{ onUserClicked: { diff --git a/MobileClient/QtProject/src/pages-spot/Page_Spot.qml b/MobileClient/QtProject/src/pages-spot/Page_Spot.qml index 713f1a7..9dcf680 100644 --- a/MobileClient/QtProject/src/pages-spot/Page_Spot.qml +++ b/MobileClient/QtProject/src/pages-spot/Page_Spot.qml @@ -19,6 +19,7 @@ import PicturesModel 1.0 // Project qml imports --------------------- import "qrc:/" import "qrc:/widgets" +import "qrc:/pages-picture" Item{ id: page_Spot @@ -26,11 +27,15 @@ Item{ // Properties -------------------------- - property int spotId: -1 property Navigator navigator property StackView stackView + // Bind properties --------------------- + + property alias model: picturesModel + + // Navigation properties --------------- property string navigation_Title: "-" @@ -45,15 +50,6 @@ Item{ id: picturesModel } - - // Signals ----------------------------- - - onSpotIdChanged: - { - picturesModel.setSpotId(spotId) - } - - // Components -------------------------- Component { @@ -72,10 +68,13 @@ Item{ MouseArea { anchors.fill: parent onClicked: { - stackView.push({item: Qt.resolvedUrl("qrc:/widgets/CachedPicture.qml"), - properties:{width:stackView.width, - height:width, - sourceUrl:role_PictureUrl}}); + var page_PicturesList = Qt.resolvedUrl("qrc:/pages-picture/Page_PicturesList.qml"); + stackView.push({item: page_PicturesList, + properties : {width : page_Spot.width, + height : page_Spot.height, + navigation_Title : navigation_Title, + navigation_BackButtonVisible : true}}); + stackView.currentItem.model.getBy_PictureId(role_PictureId); } } } diff --git a/MobileClient/QtProject/src/pages-upload/NearbySpotSelection.qml b/MobileClient/QtProject/src/pages-upload/NearbySpotSelection.qml index fb647b9..45adfb7 100644 --- a/MobileClient/QtProject/src/pages-upload/NearbySpotSelection.qml +++ b/MobileClient/QtProject/src/pages-upload/NearbySpotSelection.qml @@ -14,7 +14,7 @@ import QtQuick 2.0 import QtQuick.Controls 1.2 // Project c++ imports --------------------- -import NearbySpotsModel 1.0 +import SpotsModel 1.0 // Project qml imports --------------------- import "qrc:/" @@ -24,8 +24,8 @@ import "qrc:/pages-spot/" Item{ id: nearbySpotSelection - NearbySpotsModel{ - id: nearbySpotsModel + SpotsModel{ + id: spotsModel } @@ -53,7 +53,7 @@ Item{ console.log("nearbySpotModel.setLocation") - nearbySpotsModel.setLocation(hc_LocationManager.latitude(), + spotsModel.setLocation(hc_LocationManager.latitude(), hc_LocationManager.longitude(), 4); } @@ -82,7 +82,7 @@ Item{ width: parent.width anchors.top: button_AddNewSpot.bottom anchors.bottom: parent.bottom - model: nearbySpotsModel + model: spotsModel onSpotClicked: { wa_PictureUploader.setNewSpot(false); wa_PictureUploader.setExistingSpotId(spotId); diff --git a/MobileClient/QtProject/src/pages-user/Page_Settings.qml b/MobileClient/QtProject/src/pages-user/Page_Settings.qml index e0d1a14..3930c2e 100644 --- a/MobileClient/QtProject/src/pages-user/Page_Settings.qml +++ b/MobileClient/QtProject/src/pages-user/Page_Settings.qml @@ -137,7 +137,6 @@ Item{ ListElement { text: "Airolo - Tre scalini banca"; latitude: 46.528897; longitude: 8.611414 } ListElement { text: "Biasca - Manual pad"; latitude: 46.360764; longitude: 8.969275 } ListElement { text: "Biasca - SPAI"; latitude: 46.349831; longitude: 8.969629 } - ListElement { text: "Chur - Bank Curbs"; latitude: 46.851196; longitude: 9.528907 } ListElement { text: "Näfels"; latitude: 47.107661; longitude: 9.064581 } } width: 200 diff --git a/MobileClient/QtProject/src/pages-user/Page_User.qml b/MobileClient/QtProject/src/pages-user/Page_User.qml index 11d25a1..f1bd477 100644 --- a/MobileClient/QtProject/src/pages-user/Page_User.qml +++ b/MobileClient/QtProject/src/pages-user/Page_User.qml @@ -96,8 +96,8 @@ Item{ navigation_Title : spotName, navigation_BackButtonVisible : true, stackView : stackView, - navigator : navigator, - spotId : spotId}}); + navigator : navigator}}); + stackView.currentItem.model.getBy_SpotId(spotId); } } } @@ -108,7 +108,7 @@ Item{ onUserIdChanged: { - picturesModel.setUserId(userId); + picturesModel.getBy_UserId(userId); spotsModel.setUserId(userId); } @@ -132,13 +132,13 @@ Item{ anchors.fill: parent onClicked: { stackView.push({item: Qt.resolvedUrl("qrc:/pages-spot/Page_Spot.qml"), - properties:{width : stackView.width, - height : stackView.height, - title : spotName, - stackView : stackView, - navigator : navigator, - spotId : role_SpotId}}); - navigator.backButtonVisible = true; + properties:{width : stackView.width, + height : stackView.height, + navigation_Title : spotName, + navigation_BackButtonVisible : true, + stackView : stackView, + navigator : navigator}}); + stackView.currentItem.model.getBy_SpotId(spotId); } } } diff --git a/README.md b/README.md index b2b75de..d324ebf 100644 --- a/README.md +++ b/README.md @@ -1 +1,3 @@ -# Instaspots +# Lowerspot + +Lowerspot is an application to keep track of your skate spots. The application is under development but can already be used in its basics functionalities.