summaryrefslogtreecommitdiff
path: root/indra/newview/llfloaterabout.cpp
diff options
context:
space:
mode:
authorJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
committerJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
commit420b91db29485df39fd6e724e782c449158811cb (patch)
treeb471a94563af914d3ed3edd3e856d21cb1b69945 /indra/newview/llfloaterabout.cpp
Print done when done.
Diffstat (limited to 'indra/newview/llfloaterabout.cpp')
-rw-r--r--indra/newview/llfloaterabout.cpp167
1 files changed, 167 insertions, 0 deletions
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp
new file mode 100644
index 0000000000..d3c927a11c
--- /dev/null
+++ b/indra/newview/llfloaterabout.cpp
@@ -0,0 +1,167 @@
+/**
+ * @file llfloaterabout.cpp
+ * @author James Cook
+ * @brief The about box from Help->About
+ *
+ * Copyright (c) 2001-$CurrentYear$, Linden Research, Inc.
+ * $License$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloaterabout.h"
+
+#include "llsys.h"
+#include "llgl.h"
+#include "llui.h" // for tr()
+#include "v3dmath.h"
+
+#include "llviewertexteditor.h"
+#include "llviewercontrol.h"
+#include "llagent.h"
+#include "llviewerstats.h"
+#include "llviewerregion.h"
+#include "llversion.h"
+#include "llviewerbuild.h"
+#include "llvieweruictrlfactory.h"
+#include "viewer.h" // for gViewerDigest
+
+#include "llmozlib.h"
+#include "llglheaders.h"
+
+extern LLCPUInfo gSysCPU;
+extern LLMemoryInfo gSysMemory;
+extern LLOSInfo gSysOS;
+extern U32 gPacketsIn;
+
+///----------------------------------------------------------------------------
+/// Local function declarations, constants, enums, and typedefs
+///----------------------------------------------------------------------------
+
+LLFloaterAbout* LLFloaterAbout::sInstance = NULL;
+
+///----------------------------------------------------------------------------
+/// Class LLFloaterAbout
+///----------------------------------------------------------------------------
+
+// Default constructor
+LLFloaterAbout::LLFloaterAbout()
+: LLFloater("floater_about", "FloaterAboutRect", "")
+{
+ gUICtrlFactory->buildFloater(this, "floater_about.xml");
+
+ // Support for changing product name.
+ LLString title("About ");
+ title += gSecondLife;
+ setTitle(title);
+
+ LLString support;
+
+ // Version string
+ LLString version = gSecondLife
+ + llformat(" %d.%d.%d (%d) %s %s",
+ LL_VERSION_MAJOR, LL_VERSION_MINOR, LL_VERSION_PATCH, LL_VIEWER_BUILD,
+ __DATE__, __TIME__);
+ support.append(version);
+ support.append("\n\n");
+
+ // Position
+ LLViewerRegion* region = gAgent.getRegion();
+ if (region)
+ {
+ //XUI:translate
+ const LLVector3d &pos = gAgent.getPositionGlobal();
+ LLString pos_text = llformat("You are at %.1f, %.1f, %.1f ",
+ pos.mdV[VX], pos.mdV[VY], pos.mdV[VZ]);
+ support.append(pos_text);
+
+ LLString region_text = llformat("in %s located at ",
+ gAgent.getRegion()->getName().c_str());
+ support.append(region_text);
+
+ char buffer[MAX_STRING];
+ gAgent.getRegion()->getHost().getHostName(buffer, MAX_STRING);
+ support.append(buffer);
+ support.append(" (");
+ gAgent.getRegion()->getHost().getString(buffer, MAX_STRING);
+ support.append(buffer);
+ support.append(")\n\n");
+ }
+
+ // CPU
+ support.append("CPU: ");
+ support.append( gSysCPU.getCPUStringTerse() );
+ support.append("\n");
+
+ U32 memory = gSysMemory.getPhysicalMemory() / 1024 / 1024;
+ // For some reason, the reported amount of memory is always wrong by one meg
+ memory++;
+
+ LLString mem_text = llformat("Memory: %u MB\n", memory );
+ support.append(mem_text);
+
+ support.append("OS Version: ");
+ support.append( gSysOS.getOSString().c_str() );
+ support.append("\n");
+
+ support.append("Graphics Card Vendor: ");
+ support.append( (const char*) glGetString(GL_VENDOR) );
+ support.append("\n");
+
+ support.append("Graphics Card: ");
+ support.append( (const char*) glGetString(GL_RENDERER) );
+ support.append("\n");
+
+ support.append("OpenGL Version: ");
+ support.append( (const char*) glGetString(GL_VERSION) );
+ support.append("\n");
+
+#if LL_LIBXUL_ENABLED
+ support.append("LLMozLib Version: ");
+ support.append( (const char*) LLMozLib::getInstance()->getVersion().c_str() );
+ support.append("\n");
+#endif // LL_LIBXUL_ENABLED
+
+ if (gViewerStats
+ && gPacketsIn > 0)
+ {
+ LLString packet_loss = llformat("Packets Lost: %.0f/%.0f (%.1f%%)",
+ gViewerStats->mPacketsLostStat.getCurrent(),
+ F32(gPacketsIn),
+ 100.f*gViewerStats->mPacketsLostStat.getCurrent() / F32(gPacketsIn) );
+ support.append(packet_loss);
+ support.append("\n");
+ }
+
+ // MD5 digest of executable
+ support.append("Viewer Digest: ");
+ char viewer_digest_string[UUID_STR_LENGTH];
+ gViewerDigest.toString( viewer_digest_string );
+ support.append(viewer_digest_string);
+
+ // Fix views
+ childDisable("credits_editor");
+ childDisable("support_editor");
+ childSetText("support_editor", support);
+
+ center();
+
+ sInstance = this;
+}
+
+// Destroys the object
+LLFloaterAbout::~LLFloaterAbout()
+{
+ sInstance = NULL;
+}
+
+// static
+void LLFloaterAbout::show(void*)
+{
+ if (!sInstance)
+ {
+ sInstance = new LLFloaterAbout();
+ }
+
+ sInstance->open();
+}