diff --git a/interface/src/ui/VoxelStatsDialog.cpp b/interface/src/ui/VoxelStatsDialog.cpp
index 05cd3cf6b7..d8b4df62b0 100644
--- a/interface/src/ui/VoxelStatsDialog.cpp
+++ b/interface/src/ui/VoxelStatsDialog.cpp
@@ -27,6 +27,7 @@ VoxelStatsDialog::VoxelStatsDialog(QWidget* parent, NodeToVoxelSceneStats* model
for (int i = 0; i < MAX_VOXEL_SERVERS; i++) {
_voxelServerLables[i] = 0;
+ _extraServerDetails[i] = false;
}
for (int i = 0; i < MAX_STATS; i++) {
@@ -45,6 +46,8 @@ VoxelStatsDialog::VoxelStatsDialog(QWidget* parent, NodeToVoxelSceneStats* model
_localVoxelsMemory = AddStatItem("Voxels Memory");
_voxelsRendered = AddStatItem("Voxels Rendered");
_sendingMode = AddStatItem("Sending Mode");
+
+ layout()->setSizeConstraint(QLayout::SetFixedSize);
}
void VoxelStatsDialog::RemoveStatItem(int item) {
@@ -57,9 +60,23 @@ void VoxelStatsDialog::RemoveStatItem(int item) {
_labels[item] = NULL;
}
+void VoxelStatsDialog::moreless(const QString& link) {
+ QStringList linkDetails = link.split("-");
+ const int COMMAND_ITEM = 0;
+ const int SERVER_NUMBER_ITEM = 1;
+ QString serverNumberString = linkDetails[SERVER_NUMBER_ITEM];
+ QString command = linkDetails[COMMAND_ITEM];
+ int serverNumber = serverNumberString.toInt();
+ if (command == "more") {
+ _extraServerDetails[serverNumber-1] = true;
+ } else {
+ _extraServerDetails[serverNumber-1] = false;
+ }
+}
+
+
int VoxelStatsDialog::AddStatItem(const char* caption, unsigned colorRGBA) {
char strBuf[64];
- const int STATS_LABEL_WIDTH = 900;
_statCount++; // increment our current stat count
@@ -67,7 +84,6 @@ int VoxelStatsDialog::AddStatItem(const char* caption, unsigned colorRGBA) {
static unsigned rotatingColors[] = { GREENISH, YELLOWISH, GREYISH };
colorRGBA = rotatingColors[_statCount % (sizeof(rotatingColors)/sizeof(rotatingColors[0]))];
}
-
QLabel* label = _labels[_statCount] = new QLabel();
// Set foreground color to 62.5% brightness of the meter (otherwise will be hard to read on the bright background)
@@ -80,9 +96,6 @@ int VoxelStatsDialog::AddStatItem(const char* caption, unsigned colorRGBA) {
rgb = ((rgb & colorpart1) >> 1) + ((rgb & colorpart2) >> 3);
palette.setColor(QPalette::WindowText, QColor::fromRgb(rgb));
label->setPalette(palette);
-
- label->setFixedWidth(STATS_LABEL_WIDTH);
-
snprintf(strBuf, sizeof(strBuf), " %s:", caption);
_form->addRow(strBuf, label);
@@ -218,7 +231,10 @@ void VoxelStatsDialog::showAllVoxelServers() {
if (serverCount > _voxelServerLabelsCount) {
char label[128] = { 0 };
sprintf(label, "Voxel Server %d",serverCount);
- _voxelServerLables[serverCount-1] = AddStatItem(label);
+ int thisServerRow = _voxelServerLables[serverCount-1] = AddStatItem(label);
+ _labels[thisServerRow]->setTextFormat(Qt::RichText);
+ _labels[thisServerRow]->setTextInteractionFlags(Qt::TextBrowserInteraction);
+ connect(_labels[thisServerRow], SIGNAL(linkActivated(const QString&)), this, SLOT(moreless(const QString&)));
_voxelServerLabelsCount++;
}
@@ -273,7 +289,7 @@ void VoxelStatsDialog::showAllVoxelServers() {
QString internalString = locale.toString((uint)stats.getTotalInternal());
QString leavesString = locale.toString((uint)stats.getTotalLeaves());
- serverDetails << "\n" << "Voxels: " <<
+ serverDetails << "
" << "Voxels: " <<
totalString.toLocal8Bit().constData() << " total " <<
internalString.toLocal8Bit().constData() << " internal " <<
leavesString.toLocal8Bit().constData() << " leaves ";
@@ -285,24 +301,24 @@ void VoxelStatsDialog::showAllVoxelServers() {
QString lastFullEncodeString = locale.toString(lastFullEncode);
QString lastFullSendString = locale.toString(lastFullSend);
- serverDetails << "\n" << "Last Full Scene... " <<
+ serverDetails << "
" << "Last Full Scene... " <<
"Encode Time: " << lastFullEncodeString.toLocal8Bit().constData() << " ms " <<
"Send Time: " << lastFullSendString.toLocal8Bit().constData() << " ms ";
-
- bool details = false; // for now, we'd like to add an expand/contract feature to each voxel server
- if (details) {
+
+
+ if (_extraServerDetails[serverNumber-1]) {
for (int i = 0; i < VoxelSceneStats::ITEM_COUNT; i++) {
VoxelSceneStats::Item item = (VoxelSceneStats::Item)(i);
VoxelSceneStats::ItemInfo& itemInfo = stats.getItemInfo(item);
- serverDetails << "\n" << itemInfo.caption << " " << stats.getItemValue(item);
+ serverDetails << "
" << itemInfo.caption << " " << stats.getItemValue(item);
}
+ serverDetails << " " << " [less...]";
+ } else {
+ serverDetails << " " << " [more...]";
}
}
Application::getInstance()->unlockVoxelSceneStats();
-
_labels[_voxelServerLables[serverCount - 1]]->setText(serverDetails.str().c_str());
-
-
} // is VOXEL_SERVER
} // Node Loop
diff --git a/interface/src/ui/VoxelStatsDialog.h b/interface/src/ui/VoxelStatsDialog.h
index 2099d5b122..7e00d4c37b 100644
--- a/interface/src/ui/VoxelStatsDialog.h
+++ b/interface/src/ui/VoxelStatsDialog.h
@@ -17,6 +17,7 @@
#define MAX_STATS 100
#define MAX_VOXEL_SERVERS 50
+#define DEFAULT_COLOR 0
class VoxelStatsDialog : public QDialog {
Q_OBJECT
@@ -30,6 +31,7 @@ signals:
public slots:
void reject();
+ void moreless(const QString& link);
protected:
// State <- data model held by BandwidthMeter
@@ -38,7 +40,7 @@ protected:
// Emits a 'closed' signal when this dialog is closed.
void closeEvent(QCloseEvent*);
- int AddStatItem(const char* caption, unsigned colorRGBA = 0);
+ int AddStatItem(const char* caption, unsigned colorRGBA = DEFAULT_COLOR);
void RemoveStatItem(int item);
void showAllVoxelServers();
@@ -55,6 +57,7 @@ private:
int _voxelsRendered;
int _voxelServerLables[MAX_VOXEL_SERVERS];
int _voxelServerLabelsCount;
+ bool _extraServerDetails[MAX_VOXEL_SERVERS];
};
#endif /* defined(__interface__VoxelStatsDialog__) */