mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 22:28:48 +02:00
Added disk cache editor
This commit is contained in:
parent
9d7144dab0
commit
53f23d8452
2 changed files with 194 additions and 0 deletions
148
interface/src/ui/DiskCacheEditor.cpp
Normal file
148
interface/src/ui/DiskCacheEditor.cpp
Normal file
|
@ -0,0 +1,148 @@
|
||||||
|
//
|
||||||
|
// DiskCacheEditor.cpp
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Created by Clement on 3/4/15.
|
||||||
|
// Copyright 2015 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 <QDebug>
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QGridLayout>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QNetworkDiskCache>
|
||||||
|
#include <QMessageBox>
|
||||||
|
|
||||||
|
#include <NetworkAccessManager.h>
|
||||||
|
|
||||||
|
#include "DiskCacheEditor.h"
|
||||||
|
|
||||||
|
DiskCacheEditor::DiskCacheEditor(QWidget* parent) : QObject(parent) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
QWindow* DiskCacheEditor::windowHandle() {
|
||||||
|
return (_dialog) ? _dialog->windowHandle() : nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DiskCacheEditor::toggle() {
|
||||||
|
qDebug() << "DiskCacheEditor::toggle()";
|
||||||
|
if (!_dialog) {
|
||||||
|
makeDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!_dialog->isActiveWindow()) {
|
||||||
|
_dialog->show();
|
||||||
|
_dialog->raise();
|
||||||
|
_dialog->activateWindow();
|
||||||
|
} else {
|
||||||
|
_dialog->close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DiskCacheEditor::makeDialog() {
|
||||||
|
_dialog = new QDialog(static_cast<QWidget*>(parent()));
|
||||||
|
Q_CHECK_PTR(_dialog);
|
||||||
|
_dialog->setAttribute(Qt::WA_DeleteOnClose);
|
||||||
|
_dialog->setWindowTitle("Disk Cache Editor");
|
||||||
|
|
||||||
|
QGridLayout* layout = new QGridLayout(_dialog);
|
||||||
|
Q_CHECK_PTR(layout);
|
||||||
|
_dialog->setLayout(layout);
|
||||||
|
|
||||||
|
|
||||||
|
QLabel* path = new QLabel("Path : ", _dialog);
|
||||||
|
Q_CHECK_PTR(path);
|
||||||
|
path->setAlignment(Qt::AlignRight);
|
||||||
|
layout->addWidget(path, 0, 0);
|
||||||
|
|
||||||
|
QLabel* size = new QLabel("Max Size : ", _dialog);
|
||||||
|
Q_CHECK_PTR(size);
|
||||||
|
size->setAlignment(Qt::AlignRight);
|
||||||
|
layout->addWidget(size, 1, 0);
|
||||||
|
|
||||||
|
QLabel* maxSize = new QLabel("Current Size : ", _dialog);
|
||||||
|
Q_CHECK_PTR(maxSize);
|
||||||
|
maxSize->setAlignment(Qt::AlignRight);
|
||||||
|
layout->addWidget(maxSize, 2, 0);
|
||||||
|
|
||||||
|
|
||||||
|
_path = new QLabel(_dialog);
|
||||||
|
Q_CHECK_PTR(_path);
|
||||||
|
_path->setAlignment(Qt::AlignLeft);
|
||||||
|
layout->addWidget(_path, 0, 1, 1, 3);
|
||||||
|
|
||||||
|
_size = new QLabel(_dialog);
|
||||||
|
Q_CHECK_PTR(_size);
|
||||||
|
_size->setAlignment(Qt::AlignLeft);
|
||||||
|
layout->addWidget(_size, 1, 1, 1, 3);
|
||||||
|
|
||||||
|
_maxSize = new QLabel(_dialog);
|
||||||
|
Q_CHECK_PTR(_maxSize);
|
||||||
|
_maxSize->setAlignment(Qt::AlignLeft);
|
||||||
|
layout->addWidget(_maxSize, 2, 1, 1, 3);
|
||||||
|
|
||||||
|
refresh();
|
||||||
|
|
||||||
|
|
||||||
|
QPushButton* refreshCacheButton = new QPushButton(_dialog);
|
||||||
|
Q_CHECK_PTR(refreshCacheButton);
|
||||||
|
refreshCacheButton->setText("Refresh");
|
||||||
|
refreshCacheButton->setToolTip("Reload the cache stats.");
|
||||||
|
connect(refreshCacheButton, SIGNAL(clicked()), SLOT(refresh()));
|
||||||
|
layout->addWidget(refreshCacheButton, 3, 2);
|
||||||
|
|
||||||
|
QPushButton* clearCacheButton = new QPushButton(_dialog);
|
||||||
|
Q_CHECK_PTR(clearCacheButton);
|
||||||
|
clearCacheButton->setText("Clear");
|
||||||
|
clearCacheButton->setToolTip("Erases the entire content of the disk cache.");
|
||||||
|
connect(clearCacheButton, SIGNAL(clicked()), SLOT(clear()));
|
||||||
|
layout->addWidget(clearCacheButton, 3, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DiskCacheEditor::refresh() {
|
||||||
|
static const std::function<QString(qint64)> stringify = [](qint64 number) {
|
||||||
|
static const QStringList UNITS = QStringList() << "B" << "KB" << "MB" << "GB";
|
||||||
|
static const qint64 CHUNK = 1024;
|
||||||
|
QString unit;
|
||||||
|
int i = 0;
|
||||||
|
for (i = 0; i < 4; ++i) {
|
||||||
|
if (number / CHUNK > 0) {
|
||||||
|
number /= CHUNK;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return QString("%0 %1").arg(number).arg(UNITS[i]);
|
||||||
|
};
|
||||||
|
QNetworkDiskCache* cache = qobject_cast<QNetworkDiskCache*>(NetworkAccessManager::getInstance().cache());
|
||||||
|
|
||||||
|
if (_path) {
|
||||||
|
_path->setText(cache->cacheDirectory());
|
||||||
|
}
|
||||||
|
if (_size) {
|
||||||
|
_size->setText(stringify(cache->cacheSize()));
|
||||||
|
}
|
||||||
|
if (_maxSize) {
|
||||||
|
_maxSize->setText(stringify(cache->maximumCacheSize()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DiskCacheEditor::clear() {
|
||||||
|
QMessageBox::StandardButton buttonClicked =
|
||||||
|
QMessageBox::question(_dialog, "Clearing disk cache",
|
||||||
|
"You are about to erase all the content of the disk cache,"
|
||||||
|
"are you sure you want to do that?");
|
||||||
|
if (buttonClicked == QMessageBox::Yes) {
|
||||||
|
QNetworkDiskCache* cache = qobject_cast<QNetworkDiskCache*>(NetworkAccessManager::getInstance().cache());
|
||||||
|
if (cache) {
|
||||||
|
qDebug() << "DiskCacheEditor::clear(): Clearing disk cache.";
|
||||||
|
cache->clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
refresh();
|
||||||
|
}
|
46
interface/src/ui/DiskCacheEditor.h
Normal file
46
interface/src/ui/DiskCacheEditor.h
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
//
|
||||||
|
// DiskCacheEditor.h
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Created by Clement on 3/4/15.
|
||||||
|
// Copyright 2015 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_DiskCacheEditor_h
|
||||||
|
#define hifi_DiskCacheEditor_h
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include <QPointer>
|
||||||
|
|
||||||
|
class QDialog;
|
||||||
|
class QLabel;
|
||||||
|
class QWindow;
|
||||||
|
|
||||||
|
class DiskCacheEditor : public QObject {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
DiskCacheEditor(QWidget* parent = nullptr);
|
||||||
|
|
||||||
|
QWindow* windowHandle();
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void toggle();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void refresh();
|
||||||
|
void clear();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void makeDialog();
|
||||||
|
|
||||||
|
QPointer<QDialog> _dialog;
|
||||||
|
QPointer<QLabel> _path;
|
||||||
|
QPointer<QLabel> _size;
|
||||||
|
QPointer<QLabel> _maxSize;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // hifi_DiskCacheEditor_h
|
Loading…
Reference in a new issue