# HG changeset patch # User koda # Date 1354751067 -3600 # Node ID db3bccd784c9bcb44e51fdb4629001e5bbee4bd8 # Parent ebaec8186e4aea30e7d63d30e7afa037b2e83bf4 tinker around the info delivery... diff -r ebaec8186e4a -r db3bccd784c9 QTfrontend/ui/page/pagefeedback.cpp --- a/QTfrontend/ui/page/pagefeedback.cpp Wed Dec 05 23:54:47 2012 +0100 +++ b/QTfrontend/ui/page/pagefeedback.cpp Thu Dec 06 00:44:27 2012 +0100 @@ -23,20 +23,20 @@ #include #include #include -#include +#include -#ifndef Q_WS_WIN -#include -#endif +#include #ifdef Q_WS_WIN #define WINVER 0x0500 #include +#else +#include +#include #endif #ifdef Q_WS_MAC - #include - #include +#include #endif #include "pagefeedback.h" @@ -70,33 +70,39 @@ label_description->setText(QLabel::tr("Description")); pageLayout->addWidget(label_description, 0, Qt::AlignHCenter); description = new QTextBrowser(); + + // Gather some information about the system and embed it into the report QDesktopWidget* screen = QApplication::desktop(); QString os_version = "Operating system: "; QString qt_version = QString("Qt version: ") + QT_VERSION_STR + QString("\n"); - QString total_ram = "Total RAM: unknown\n"; - QString available_ram = "Available RAM: unknown\n"; - QString number_of_cores = "Number of cores: unknown"; + QString total_ram = "Total RAM: "; + QString available_ram = "Available RAM: "; + QString number_of_cores = "Number of cores: "; + QString compiler_bits = "Compiler architecture: "; + QString compiler_version = "Compiler version: "; + QString kernel_line = "Kernel: "; QString screen_size = "Size of the screen(s): " + QString::number(screen->width()) + "x" + QString::number(screen->height()) + "\n"; - QString number_of_screens = "Number of screens: " + - QString::number(screen->screenCount()) + "\n"; + QString number_of_screens = "Number of screens: " + QString::number(screen->screenCount()) + "\n"; + std::string processor_name = "Processor: "; + + // platform specific code #ifdef Q_WS_MACX - number_of_cores = "Number of cores: " + - QString::number(sysconf(_SC_NPROCESSORS_ONLN)); + number_of_cores += QString::number(sysconf(_SC_NPROCESSORS_ONLN)) + "\n"; uint64_t memsize, memavail; size_t len = sizeof(memsize); static int mib_s[2] = { CTL_HW, HW_MEMSIZE }; static int mib_a[2] = { CTL_HW, HW_USERMEM }; if (sysctl (mib_s, 2, &memsize, &len, NULL, 0) == 0) - total_ram = "Total RAM: " + QString::number(memsize/1024/1024) + " MB\n"; + total_ram += QString::number(memsize/1024/1024) + " MB\n"; else - total_ram = "Error getting total RAM information\n"; - if (sysctl (mib_a, 2, &memavail, &len, NULL, 0) == 0) - available_ram = "Available RAM: " + QString::number(memavail/1024/1024) + " MB\n"; + total_ram += "Error getting total RAM information\n"; + if (sysctl (mib_a, 2, &memavail, &len, NULL, 0) == 0) + available_ram += QString::number(memavail/1024/1024) + " MB\n"; else - available_ram = "Error getting available RAM information\n"; - + available_ram += "Error getting available RAM information\n"; + int mib[] = {CTL_KERN, KERN_OSRELEASE}; sysctl(mib, sizeof mib / sizeof(int), NULL, &len, NULL, 0); @@ -122,7 +128,7 @@ #ifdef Q_WS_WIN SYSTEM_INFO sysinfo; GetSystemInfo(&sysinfo); - number_of_cores = "Number of cores: " + QString::number(sysinfo.dwNumberOfProcessors) + "\n"; + number_of_cores += QString::number(sysinfo.dwNumberOfProcessors) + "\n"; MEMORYSTATUSEX status; status.dwLength = sizeof(status); GlobalMemoryStatusEx(&status); @@ -130,36 +136,37 @@ switch(QSysInfo::WinVersion()) { - case QSysInfo::WV_2000: - os_version += "Windows 2000\n"; - break; - case QSysInfo::WV_XP: - os_version += "Windows XP\n"; - break; - case QSysInfo::WV_VISTA: - os_version += "Windows Vista\n"; - break; - case QSysInfo::WV_WINDOWS7: - os_version += "Windows 7\n"; - break; - default: - os_version += "Windows\n"; + case QSysInfo::WV_2000: os_version += "Windows 2000\n"; break; + case QSysInfo::WV_XP: os_version += "Windows XP\n"; break; + case QSysInfo::WV_VISTA: os_version += "Windows Vista\n"; break; + case QSysInfo::WV_WINDOWS7: os_version += "Windows 7\n"; break; + default: os_version += "Windows (Unknown version)\n"; break; } + kernel_line += "Windows kernel\n"; #endif #ifdef Q_WS_X11 - number_of_cores = "Number of cores: " + QString::number(sysconf(_SC_NPROCESSORS_ONLN)) + "\n"; + number_of_cores += QString::number(sysconf(_SC_NPROCESSORS_ONLN)) + "\n"; long pages = sysconf(_SC_PHYS_PAGES), available_pages = sysconf(_SC_AVPHYS_PAGES), page_size = sysconf(_SC_PAGE_SIZE); - total_ram = "Total RAM: " + QString::number(pages * page_size) + "\n"; - available_ram = "Available RAM: " + QString::number(available_pages * page_size) + "\n"; - os_version += "Linux\n"; + total_ram += QString::number(pages * page_size) + "\n"; + available_ram += QString::number(available_pages * page_size) + "\n"; + os_version += "GNU/Linux or BSD\n"; #endif - - /* Get the processor's type string using the CPUID instruction. */ - std::string processor_name = "Processor: "; + + // uname -a +#if defined(Q_WS_X11) || defined(Q_WS_MACX) + QProcess *process = new QProcess(); + QStringList arguments = QStringList("-a"); + process->start("uname", arguments); + if (process->waitForFinished()) + kernel_line += QString(process->readAll()); + delete process; +#endif + + // cpu info uint32_t registers[4]; - unsigned i; + uint32_t i; i = 0x80000002; asm volatile @@ -185,17 +192,22 @@ processor_name += std::string((const char *)®isters[1], 4); processor_name += std::string((const char *)®isters[2], 4); processor_name += std::string((const char *)®isters[3], 3); - - QString processor_bits = "Number of bits: unknown"; - + + // compiler +#ifdef __GNUC__ + compiler_version += "GCC " + QString(__VERSION__) + "\n"; +#else + compiler_version += "Unknown\n"; +#endif + if(sizeof(void*) == 4) - processor_bits = "Number of bits: 32 (probably)"; - else - if(sizeof(void*) == 8) - processor_bits = "Number of bits: 64 (probably)"; - + compiler_bits += "i386\n"; + else if(sizeof(void*) == 8) + compiler_bits += "x86_64\n"; + + // add everything to the field of text description->setText( - "\n\n\n" + "\n\n\n\n\n" "System information:\n" + qt_version + os_version @@ -203,9 +215,11 @@ + available_ram + screen_size + number_of_screens + + QString::fromStdString(processor_name + "\n") + number_of_cores - + QString::fromStdString(processor_name + "\n") - + processor_bits + + compiler_version + + compiler_bits + + kernel_line ); description->setReadOnly(false); pageLayout->addWidget(description);