diff --git a/interface/src/UserLocationsModel.cpp b/interface/src/UserLocationsModel.cpp deleted file mode 100644 index 0fae0d8800..0000000000 --- a/interface/src/UserLocationsModel.cpp +++ /dev/null @@ -1,251 +0,0 @@ -// -// UserLocationsModel.cpp -// interface/src -// -// Created by Ryan Huffman on 06/24/14. -// Copyright 2014 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -#include -#include -#include -#include - -#include "AccountManager.h" -#include "Application.h" -#include "UserLocationsModel.h" - -static const QString LOCATIONS_GET = "/api/v1/locations"; -static const QString LOCATION_UPDATE_OR_DELETE = "/api/v1/locations/%1"; - -UserLocation::UserLocation(const QString& id, const QString& name, const QString& address) : - _id(id), - _name(name), - _address(address), - _previousName(name), - _updating(false) { -} - -void UserLocation::requestRename(const QString& newName) { - if (!_updating && newName.toLower() != _name) { - _updating = true; - - JSONCallbackParameters callbackParams(this, "handleRenameResponse", this, "handleRenameError"); - - QJsonObject jsonNameObject; - jsonNameObject.insert("name", newName); - - QJsonObject locationObject; - locationObject.insert("location", jsonNameObject); - - QJsonDocument jsonDocument(jsonNameObject); - AccountManager::getInstance().authenticatedRequest(LOCATION_UPDATE_OR_DELETE.arg(_id), - QNetworkAccessManager::PutOperation, - callbackParams, - jsonDocument.toJson()); - _previousName = _name; - _name = newName; - - emit updated(_name); - } -} - -void UserLocation::handleRenameResponse(const QJsonObject& responseData) { - _updating = false; - - QJsonValue status = responseData["status"]; - if (!status.isUndefined() && status.toString() == "success") { - qDebug() << responseData; - QString updatedName = responseData["data"].toObject()["location"].toObject()["name"].toString(); - qDebug() << "The updated name is" << updatedName; - _name = updatedName; - } else { - _name = _previousName; - - QString msg = "There was an error renaming location '" + _name + "'"; - - QJsonValue data = responseData["data"]; - if (!data.isUndefined()) { - QJsonValue nameError = data.toObject()["name"]; - if (!nameError.isUndefined()) { - msg += ": " + nameError.toString(); - } - } - qDebug() << msg; - QMessageBox::warning(Application::getInstance()->getWindow(), "Error", msg); - } - - emit updated(_name); -} - -void UserLocation::handleRenameError(QNetworkReply& errorReply) { - _updating = false; - - QString msg = "There was an error renaming location '" + _name + "': " + errorReply.errorString(); - qDebug() << msg; - QMessageBox::warning(Application::getInstance()->getWindow(), "Error", msg); - - emit updated(_name); -} - -void UserLocation::requestDelete() { - if (!_updating) { - _updating = true; - - JSONCallbackParameters callbackParams(this, "handleDeleteResponse", this, "handleDeleteError"); - AccountManager::getInstance().authenticatedRequest(LOCATION_UPDATE_OR_DELETE.arg(_id), - QNetworkAccessManager::DeleteOperation, - callbackParams); - } -} - -void UserLocation::handleDeleteResponse(const QJsonObject& responseData) { - _updating = false; - - QJsonValue status = responseData["status"]; - if (!status.isUndefined() && status.toString() == "success") { - emit deleted(_name); - } else { - QString msg = "There was an error deleting location '" + _name + "'"; - qDebug() << msg; - QMessageBox::warning(Application::getInstance()->getWindow(), "Error", msg); - } -} - -void UserLocation::handleDeleteError(QNetworkReply& errorReply) { - _updating = false; - - QString msg = "There was an error deleting location '" + _name + "': " + errorReply.errorString(); - qDebug() << msg; - QMessageBox::warning(Application::getInstance()->getWindow(), "Error", msg); -} - -UserLocationsModel::UserLocationsModel(QObject* parent) : - QAbstractListModel(parent), - _updating(false) { - - refresh(); -} - -UserLocationsModel::~UserLocationsModel() { - qDeleteAll(_locations); - _locations.clear(); -} - -void UserLocationsModel::update() { - beginResetModel(); - endResetModel(); -} - -void UserLocationsModel::deleteLocation(const QModelIndex& index) { - UserLocation* location = _locations[index.row()]; - location->requestDelete(); -} - -void UserLocationsModel::renameLocation(const QModelIndex& index, const QString& newName) { - UserLocation* location = _locations[index.row()]; - location->requestRename(newName); -} - -void UserLocationsModel::refresh() { - if (!_updating) { - beginResetModel(); - qDeleteAll(_locations); - _locations.clear(); - _updating = true; - endResetModel(); - - JSONCallbackParameters callbackParams(this, "handleLocationsResponse"); - AccountManager::getInstance().authenticatedRequest(LOCATIONS_GET, - QNetworkAccessManager::GetOperation, - callbackParams); - } -} - -void UserLocationsModel::handleLocationsResponse(const QJsonObject& responseData) { - _updating = false; - - QJsonValue status = responseData["status"]; - if (!status.isUndefined() && status.toString() == "success") { - beginResetModel(); - QJsonArray locations = responseData["data"].toObject()["locations"].toArray(); - for (QJsonArray::const_iterator it = locations.constBegin(); it != locations.constEnd(); it++) { - QJsonObject location = (*it).toObject(); - QString locationAddress = "hifi://" + location["domain"].toObject()["name"].toString() - + location["path"].toString(); - UserLocation* userLocation = new UserLocation(location["id"].toString(), location["name"].toString(), - locationAddress); - _locations.append(userLocation); - connect(userLocation, &UserLocation::deleted, this, &UserLocationsModel::removeLocation); - connect(userLocation, &UserLocation::updated, this, &UserLocationsModel::update); - } - endResetModel(); - } else { - qDebug() << "Error loading location data"; - } -} - -void UserLocationsModel::removeLocation(const QString& name) { - beginResetModel(); - for (QList::iterator it = _locations.begin(); it != _locations.end(); it++) { - if ((*it)->name() == name) { - _locations.erase(it); - break; - } - } - endResetModel(); -} - -int UserLocationsModel::rowCount(const QModelIndex& parent) const { - if (parent.isValid()) { - return 0; - } - - if (_updating) { - return 1; - } - - return _locations.length(); -} - -QVariant UserLocationsModel::data(const QModelIndex& index, int role) const { - if (role == Qt::DisplayRole) { - if (_updating) { - return QVariant("Updating..."); - } else if (index.row() > _locations.length()) { - return QVariant(); - } else if (index.column() == NameColumn) { - return _locations[index.row()]->name(); - } else if (index.column() == AddressColumn) { - return QVariant(_locations[index.row()]->address()); - } - } - - return QVariant(); - -} -QVariant UserLocationsModel::headerData(int section, Qt::Orientation orientation, int role) const { - if (orientation == Qt::Horizontal && role == Qt::DisplayRole) { - switch (section) { - case NameColumn: return "Name"; - case AddressColumn: return "Address"; - default: return QVariant(); - } - } - - return QVariant(); -} - -Qt::ItemFlags UserLocationsModel::flags(const QModelIndex& index) const { - if (index.row() < _locations.length()) { - UserLocation* ul = _locations[index.row()]; - if (ul->isUpdating()) { - return Qt::NoItemFlags; - } - } - - return QAbstractListModel::flags(index); -} diff --git a/interface/src/UserLocationsModel.h b/interface/src/UserLocationsModel.h deleted file mode 100644 index 54518d72e1..0000000000 --- a/interface/src/UserLocationsModel.h +++ /dev/null @@ -1,82 +0,0 @@ -// -// UserLocationsModel.h -// interface/src -// -// Created by Ryan Huffman on 06/24/14. -// Copyright 2014 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -#ifndef hifi_UserLocationsModel_h -#define hifi_UserLocationsModel_h - -#include -#include -#include - - -class UserLocation : public QObject { - Q_OBJECT -public: - UserLocation(const QString& id, const QString& name, const QString& address); - bool isUpdating() { return _updating; } - void requestRename(const QString& newName); - void requestDelete(); - - const QString& id() { return _id; } - const QString& name() { return _name; } - const QString& address() { return _address; } - -public slots: - void handleRenameResponse(const QJsonObject& responseData); - void handleRenameError(QNetworkReply& errorReply); - void handleDeleteResponse(const QJsonObject& responseData); - void handleDeleteError(QNetworkReply& errorReply); - -signals: - void updated(const QString& name); - void deleted(const QString& name); - -private: - QString _id; - QString _name; - QString _address; - QString _previousName; - bool _updating; - -}; - -class UserLocationsModel : public QAbstractListModel { - Q_OBJECT -public: - UserLocationsModel(QObject* parent = NULL); - ~UserLocationsModel(); - - virtual int rowCount(const QModelIndex& parent = QModelIndex()) const; - virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; - virtual int columnCount(const QModelIndex& parent = QModelIndex()) const { return 2; }; - virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; - virtual Qt::ItemFlags flags(const QModelIndex& index) const; - - void deleteLocation(const QModelIndex& index); - void renameLocation(const QModelIndex& index, const QString& newName); - - enum Columns { - NameColumn = 0, - AddressColumn - }; - -public slots: - void refresh(); - void update(); - void handleLocationsResponse(const QJsonObject& responseData); - void removeLocation(const QString& name); - -private: - bool _updating; - QList _locations; -}; - -#endif // hifi_UserLocationsModel_h