overte/interface/src/ui/ModelsBrowser.h

88 lines
1.9 KiB
C++

//
// ModelsBrowser.h
// interface/src/ui
//
// Created by Clement on 3/17/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_ModelsBrowser_h
#define hifi_ModelsBrowser_h
#include <QReadWriteLock>
#include <QStandardItemModel>
#include <QTreeView>
#include <FSTReader.h>
class QNetworkReply;
extern const char* MODEL_TYPE_NAMES[];
class ModelHandler : public QObject {
Q_OBJECT
public:
ModelHandler(FSTReader::ModelType modelsType, QWidget* parent = NULL);
void lockModel() { _lock.lockForRead(); }
QStandardItemModel* getModel() { return &_model; }
void unlockModel() { _lock.unlock(); }
signals:
void doneDownloading();
void updated();
public slots:
void setNameFilter(QString nameFilter);
void download();
void update();
void exit();
private slots:
void downloadFinished();
private:
bool _initiateExit;
FSTReader::ModelType _type;
QReadWriteLock _lock;
QStandardItemModel _model;
QString _nameFilter;
void queryNewFiles(QString marker = QString());
bool parseXML(QByteArray xmlFile);
bool parseHeaders(QNetworkReply* reply);
};
class ModelsBrowser : public QWidget {
Q_OBJECT
public:
ModelsBrowser(FSTReader::ModelType modelsType, QWidget* parent = NULL);
QString getSelectedFile() { return _selectedFile; }
signals:
void startDownloading();
void startUpdating();
void selected(QString filename);
public slots:
void setNameFilter(QString nameFilter);
void browse();
private slots:
void applyFilter(const QString& filter);
void resizeView();
void enableSearchBar();
private:
ModelHandler* _handler;
QLineEdit* _searchBar;
QTreeView _view;
QString _selectedFile;
};
#endif // hifi_ModelsBrowser_h