--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/sysinfo/dialog.cpp Wed Aug 25 15:49:42 2010 +0300
@@ -0,0 +1,773 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Mobility Components.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "dialog.h"
+#include <QMessageBox>
+#include <QTimer>
+
+Dialog::Dialog() :
+ QWidget(),
+ saver(NULL), systemInfo(NULL), di(NULL), ni(NULL)
+{
+ setupUi(this);
+ setupGeneral();
+
+ connect(tabWidget,SIGNAL(currentChanged(int)),this,SLOT(tabChanged(int)));
+ connect(versionComboBox,SIGNAL(activated(int)), this,SLOT(getVersion(int)));
+ connect(featureComboBox,SIGNAL(activated(int)), this,SLOT(getFeature(int)));
+ updateDeviceLockedState();
+ QTimer *timer = new QTimer(this);
+ connect(timer, SIGNAL(timeout()), this, SLOT(updateDeviceLockedState()));
+ timer->start(1000);
+}
+
+Dialog::~Dialog()
+{
+ delete systemInfo;
+ delete di;
+ delete saver;
+}
+
+void Dialog::changeEvent(QEvent *e)
+{
+ QWidget::changeEvent(e);
+ switch (e->type()) {
+ case QEvent::LanguageChange:
+ retranslateUi(this);
+ break;
+ default:
+ break;
+ }
+}
+
+void Dialog::tabChanged(int index)
+{
+#ifdef QTM_EXAMPLES_SMALL_SCREEN
+ switch(index) {
+ case 0:
+ setupGeneral();
+ break;
+ case 1:
+ setupGeneral();
+ break;
+ case 2:
+ setupDevice();
+ break;
+ case 3:
+ setupDevice();
+ break;
+ case 4:
+ setupDevice();
+ break;
+ case 5:
+ setupDisplay();
+ break;
+ case 6:
+ setupStorage();
+ break;
+ case 7:
+ setupNetwork();
+ break;
+ case 8:
+ setupNetwork();
+ break;
+ case 9:
+ setupNetwork();
+ break;
+ case 10:
+ setupSaver();
+ break;
+ };
+#else
+ switch(index) {
+ case 0:
+ setupGeneral();
+ break;
+ case 1:
+ setupDevice();
+ break;
+ case 2:
+ setupDisplay();
+ break;
+ case 3:
+ setupStorage();
+ break;
+ case 4:
+ setupNetwork();
+ break;
+ case 5:
+ setupSaver();
+ break;
+ };
+#endif
+}
+
+void Dialog::setupGeneral()
+{
+ delete systemInfo;
+//! [lang]
+ systemInfo = new QSystemInfo(this);
+ curLanguageLineEdit->setText( systemInfo->currentLanguage());
+//! [lang]
+ languagesComboBox->clear();
+ languagesComboBox->insertItems(0,systemInfo->availableLanguages());
+ countryCodeLabel->setText(systemInfo->currentCountryCode());
+}
+
+void Dialog::setupDevice()
+{
+ delete di;
+//! [createdi]
+ di = new QSystemDeviceInfo(this);
+//! [createdi]
+//! [batteryLevel]
+ batteryLevelBar->setValue(di->batteryLevel());
+//! [batteryLevel]
+
+//! [sig batteryLevelChanged]
+ connect(di,SIGNAL(batteryLevelChanged(int)),
+ this,SLOT(updateBatteryStatus(int)));
+//! [sig batteryLevelChanged]
+
+ connect(di,SIGNAL(batteryStatusChanged(QSystemDeviceInfo::BatteryStatus)),
+ this,SLOT(displayBatteryStatus(QSystemDeviceInfo::BatteryStatus)));
+
+ connect(di,SIGNAL(powerStateChanged(QSystemDeviceInfo::PowerState)),
+ this,SLOT(updatePowerState(QSystemDeviceInfo::PowerState)));
+
+ ImeiLabel->setText(di->imei());
+ imsiLabel->setText(di->imsi());
+//! [manuf-id]
+ manufacturerLabel->setText(di->manufacturer());
+//! [manuf-id]
+ modelLabel->setText(di->model());
+//! [productName]
+ productLabel->setText(di->productName());
+//! [productName]
+
+ deviceLockPushButton->setChecked(di->isDeviceLocked());
+
+ updateSimStatus();
+ updateProfile();
+
+ connect(di, SIGNAL(currentProfileChanged(QSystemDeviceInfo::Profile)),
+ this, SLOT(updateProfile(QSystemDeviceInfo::Profile)));
+
+ if(di->currentPowerState() == QSystemDeviceInfo::BatteryPower) {
+ radioButton_2->setChecked(true);
+ } else if(di->currentPowerState() == QSystemDeviceInfo::WallPower) {
+ radioButton_3->setChecked(true);
+ } else if(di->currentPowerState() == QSystemDeviceInfo::WallPowerChargingBattery) {
+ radioButton_4->setChecked(true);
+ } else {
+ radioButton->setChecked(true);
+ }
+
+//! [inputMethod flags]
+ QSystemDeviceInfo::InputMethodFlags methods = di->inputMethodType();
+ QStringList inputs;
+ if((methods & QSystemDeviceInfo::Keys)){
+ inputs << "Keys";
+ }
+ if((methods & QSystemDeviceInfo::Keypad)) {
+ inputs << "Keypad";
+ }
+//! [inputMethod flags]
+ if((methods & QSystemDeviceInfo::Keyboard)) {
+ inputs << "Keyboard";
+ }
+ if((methods & QSystemDeviceInfo::SingleTouch)) {
+ inputs << "Touch Screen";
+ }
+ if((methods & QSystemDeviceInfo::MultiTouch)) {
+ inputs << "Multi touch";
+ }
+ if((methods & QSystemDeviceInfo::Mouse)){
+ inputs << "Mouse";
+ }
+
+ inputMethodLabel->setText(inputs.join(" "));
+}
+
+void Dialog::updateDeviceLockedState()
+{
+ if (di)
+ deviceLockPushButton->setChecked(di->isDeviceLocked());
+}
+
+void Dialog::updateProfile(QSystemDeviceInfo::Profile /*profile*/)
+{
+ updateProfile();
+}
+
+
+void Dialog::setupDisplay()
+{
+ QSystemDisplayInfo di;
+ brightnessLineEdit->setText(QString::number(di.displayBrightness(0)));
+ colorDepthLineEdit->setText(QString::number(di.colorDepth((0))));
+
+}
+
+void Dialog::setupStorage()
+{
+ QSystemStorageInfo mi;
+ storageTreeWidget->clear();
+ storageTreeWidget->header()->setResizeMode(QHeaderView::ResizeToContents);
+
+ QStringList vols = mi.logicalDrives();
+ foreach(QString volName, vols) {
+ QString type;
+ QSystemStorageInfo::DriveType volType;
+ volType = mi.typeForDrive(volName);
+ if(volType == QSystemStorageInfo::InternalDrive) {
+ type = "Internal";
+ }
+
+ if(volType == QSystemStorageInfo::RemovableDrive) {
+ type = "Removable";
+ }
+ if(volType == QSystemStorageInfo::CdromDrive) {
+ type = "Cdrom";
+ }
+ if(volType == QSystemStorageInfo::RemoteDrive) {
+ type = "Network";
+ }
+ QStringList items;
+ items << volName;
+ items << type;
+ items << QString::number(mi.totalDiskSpace(volName));
+ items << QString::number(mi.availableDiskSpace(volName));
+ QTreeWidgetItem *item = new QTreeWidgetItem(items);
+ storageTreeWidget->addTopLevelItem(item);
+ }
+}
+
+void Dialog::setupNetwork()
+{
+ delete ni;
+//! [networkInfo]
+ ni = new QSystemNetworkInfo(this);
+//! [networkInfo]
+
+ connect(netStatusComboBox,SIGNAL(activated(int)),
+ this, SLOT(netStatusComboActivated(int)));
+
+//! [sig strength]
+ connect(ni,SIGNAL(networkSignalStrengthChanged(QSystemNetworkInfo::NetworkMode, int)),
+ this,SLOT(networkSignalStrengthChanged(QSystemNetworkInfo::NetworkMode,int)));
+//! [sig strength]
+
+ connect(ni,SIGNAL(networkNameChanged(QSystemNetworkInfo::NetworkMode,QString)),
+ this,SLOT(networkNameChanged(QSystemNetworkInfo::NetworkMode,QString)));
+
+ connect(ni,SIGNAL(networkStatusChanged(QSystemNetworkInfo::NetworkMode,QSystemNetworkInfo::NetworkStatus)),
+ this,SLOT(networkStatusChanged(QSystemNetworkInfo::NetworkMode,QSystemNetworkInfo::NetworkStatus)));
+
+ connect(ni,SIGNAL(networkModeChanged(QSystemNetworkInfo::NetworkMode)),
+ this,SLOT(networkModeChanged(QSystemNetworkInfo::NetworkMode)));
+
+ cellIdLabel->setText(QString::number(ni->cellId()));
+ locationAreaCodeLabel->setText(QString::number(ni->locationAreaCode()));
+ currentMMCLabel->setText(ni->currentMobileCountryCode());
+ currentMNCLabel->setText(ni->currentMobileNetworkCode());
+
+ homeMMCLabel->setText(ni->homeMobileCountryCode());
+ homeMNCLabel->setText(ni->homeMobileNetworkCode());
+
+ networkModeChanged(ni->currentMode());
+
+}
+void Dialog::netStatusComboActivated(int index)
+{
+ QString status;
+ int reIndex = index;
+
+ displayNetworkStatus(ni->networkStatus((QSystemNetworkInfo::NetworkMode)reIndex));
+
+ macAddressLabel->setText(ni->macAddress((QSystemNetworkInfo::NetworkMode)reIndex));
+
+ int strength = ni->networkSignalStrength((QSystemNetworkInfo::NetworkMode)reIndex);
+ if(strength < 0)
+ strength = 0;
+ signalLevelProgressBar->setValue(strength);
+
+ InterfaceLabel->setText(ni->interfaceForMode((QSystemNetworkInfo::NetworkMode)reIndex).humanReadableName());
+
+ operatorNameLabel->setText(ni->networkName((QSystemNetworkInfo::NetworkMode)reIndex));
+}
+
+void Dialog::getVersion(int index)
+{
+ QSystemInfo::Version version;
+ switch(index) {
+ case 0:
+ versionLineEdit->setText("");
+ break;
+ case 1:
+//! [OS ver]
+ version = QSystemInfo::Os;
+//! [OS ver]
+ break;
+ case 2:
+//! [Qt ver]
+ version = QSystemInfo::QtCore;
+//! [Qt ver]
+ break;
+ case 3:
+//! [Firm ver]
+ version = QSystemInfo::Firmware;
+//! [Firm ver]
+ break;
+ };
+
+ QSystemInfo si;
+ versionLineEdit->setText(si.version(version));
+}
+
+void Dialog::getFeature(int index)
+{
+//! [feature]
+ QSystemInfo::Feature feature;
+ switch(index) {
+//! [feature]
+ case 0:
+ return;
+ break;
+//! [feature-bluetooth]
+ case 1:
+ feature = QSystemInfo::BluetoothFeature;
+//! [feature-bluetooth]
+ break;
+ case 2:
+ feature = QSystemInfo::CameraFeature;
+ break;
+ case 3:
+ feature = QSystemInfo::FmradioFeature;
+ break;
+ case 4:
+ feature = QSystemInfo::IrFeature;
+ break;
+ case 5:
+ feature = QSystemInfo::LedFeature;
+ break;
+ case 6:
+ feature = QSystemInfo::MemcardFeature;
+ break;
+ case 7:
+ feature = QSystemInfo::UsbFeature;
+ break;
+ case 8:
+ feature = QSystemInfo::VibFeature;
+ break;
+ case 9:
+ feature = QSystemInfo::WlanFeature;
+ break;
+ case 10:
+ feature = QSystemInfo::SimFeature;
+ break;
+ case 11:
+ feature = QSystemInfo::LocationFeature;
+ break;
+ case 12:
+ feature = QSystemInfo::VideoOutFeature;
+ break;
+ case 13:
+ feature = QSystemInfo::HapticsFeature;
+ break;
+ };
+//! [feature test]
+ QSystemInfo si;
+ featuresLineEdit->setText((si.hasFeatureSupported(feature) ? "true":"false" ));
+//! [feature test]
+}
+
+void Dialog::setupSaver()
+{
+ if (!saver) {
+ saver = new QSystemScreenSaver(this);
+ }
+
+ bool saverEnabled = saver->screenSaverInhibited();
+
+
+ connect( saverInhibitedCheckBox, SIGNAL(clicked(bool)),
+ this,SLOT(setSaverEnabled(bool)));
+
+ saverInhibitedCheckBox->setChecked(saverEnabled);
+}
+
+
+void Dialog::setSaverEnabled(bool b)
+{
+ if (b) {
+ if (!saver) {
+ saver = new QSystemScreenSaver(this);
+ }
+ if(saver->setScreenSaverInhibit()) {
+ }
+ } else {
+ delete saver;
+ saver = NULL;
+ }
+}
+
+
+void Dialog::updateBatteryStatus(int level)
+{
+ batteryLevelBar->setValue(level);
+}
+
+void Dialog::updatePowerState(QSystemDeviceInfo::PowerState newState)
+{
+
+ switch (newState) {
+ case QSystemDeviceInfo::BatteryPower:
+ {
+ radioButton_2->setChecked(true);
+ }
+ break;
+ case QSystemDeviceInfo::WallPower:
+ {
+ radioButton_3->setChecked(true);
+ }
+ break;
+ case QSystemDeviceInfo::WallPowerChargingBattery:
+ {
+ radioButton_4->setChecked(true);
+ }
+ break;
+ case QSystemDeviceInfo::NoBatteryLevel:
+ {
+ radioButton->setChecked(true);
+ }
+ break;
+ };
+}
+
+void Dialog::displayBatteryStatus(QSystemDeviceInfo::BatteryStatus status)
+{
+ // this wont annoy users will it?
+ QString msg;
+// if(di->isBatteryCharging()) {
+ switch(status) {
+ case QSystemDeviceInfo::BatteryCritical:
+ {
+ msg = " Battery is Critical (4% or less), please save your work or plug in the charger.";
+ QMessageBox::critical(this,"QSystemInfo",msg);
+ }
+ break;
+ case QSystemDeviceInfo::BatteryVeryLow:
+ {
+ msg = "Battery is Very Low (10%), please plug in the charger soon";
+ QMessageBox::warning(this,"QSystemInfo",msg);
+ }
+ break;
+ case QSystemDeviceInfo::BatteryLow:
+ {
+ msg = "Battery is Low (40% or less)";
+ QMessageBox::information(this,"QSystemInfo",msg);
+
+ }
+ break;
+ case QSystemDeviceInfo::BatteryNormal:
+ {
+ msg = "Battery is Normal (greater than 40%)";
+ QMessageBox::information(this,"QSystemInfo",msg);
+ }
+ break;
+ case QSystemDeviceInfo::NoBatteryLevel:
+ {
+
+ }
+ break;
+ };
+ // }
+
+}
+
+void Dialog::networkSignalStrengthChanged(QSystemNetworkInfo::NetworkMode mode , int strength)
+{
+ if(mode == QSystemNetworkInfo::WlanMode) {
+ if(netStatusComboBox->currentText() == "Wlan") {
+ signalLevelProgressBar->setValue(strength);
+ }
+ }
+
+ if(mode == QSystemNetworkInfo::EthernetMode) {
+ if(netStatusComboBox->currentText() == "Ethernet") {
+ signalLevelProgressBar->setValue(strength);
+ }
+ }
+
+ if(mode == QSystemNetworkInfo::GsmMode) {
+ if(netStatusComboBox->currentText() == "Gsm") {
+ signalLevelProgressBar->setValue(strength);
+ }
+ }
+
+ if(mode == QSystemNetworkInfo::CdmaMode) {
+ if(netStatusComboBox->currentText() == "Cdma") {
+ signalLevelProgressBar->setValue(strength);
+ }
+ }
+
+ if(mode == QSystemNetworkInfo::WcdmaMode) {
+ if(netStatusComboBox->currentText() == "Wcdma") {
+ signalLevelProgressBar->setValue(strength);
+ }
+ }
+
+}
+
+void Dialog::networkNameChanged(QSystemNetworkInfo::NetworkMode mode,const QString &text)
+{
+ if(mode == QSystemNetworkInfo::WlanMode) {
+ if(netStatusComboBox->currentText() == "Wlan") {
+ operatorNameLabel->setText(text);
+ }
+ }
+
+ if(mode == QSystemNetworkInfo::EthernetMode) {
+ if(netStatusComboBox->currentText() == "Ethernet") {
+ operatorNameLabel->setText(text);
+ }
+ }
+
+ if(mode == QSystemNetworkInfo::GsmMode) {
+ if(netStatusComboBox->currentText() == "Gsm") {
+ operatorNameLabel->setText(text);
+ }
+ }
+
+ if(mode == QSystemNetworkInfo::CdmaMode) {
+ if(netStatusComboBox->currentText() == "Cdma") {
+ operatorNameLabel->setText(text);
+ }
+ }
+
+ if(mode == QSystemNetworkInfo::WcdmaMode) {
+ if(netStatusComboBox->currentText() == "Wcdma") {
+ operatorNameLabel->setText(text);
+ }
+ }
+
+}
+
+void Dialog::networkStatusChanged(QSystemNetworkInfo::NetworkMode mode , QSystemNetworkInfo::NetworkStatus status)
+{
+ if(mode == QSystemNetworkInfo::WlanMode) {
+ if(netStatusComboBox->currentText() == "Wlan") {
+ displayNetworkStatus(status);
+ }
+ }
+
+ if(mode == QSystemNetworkInfo::EthernetMode) {
+ if(netStatusComboBox->currentText() == "Ethernet") {
+ displayNetworkStatus(status);
+ }
+ }
+
+ if(mode == QSystemNetworkInfo::GsmMode) {
+ if(netStatusComboBox->currentText() == "Gsm") {
+ displayNetworkStatus(status);
+ }
+ }
+
+ if(mode == QSystemNetworkInfo::CdmaMode) {
+ if(netStatusComboBox->currentText() == "Cdma") {
+ displayNetworkStatus(status);
+ }
+ }
+
+ if(mode == QSystemNetworkInfo::WcdmaMode) {
+ if(netStatusComboBox->currentText() == "Wcdma") {
+ displayNetworkStatus(status);
+ }
+ }
+
+}
+
+void Dialog::networkModeChanged(QSystemNetworkInfo::NetworkMode mode)
+{
+ if(mode == QSystemNetworkInfo::WlanMode) {
+ primaryModeLabel->setText("Wlan");
+ }
+
+ if(mode == QSystemNetworkInfo::EthernetMode) {
+ primaryModeLabel->setText("Ethernet");
+ }
+
+ if(mode == QSystemNetworkInfo::GsmMode) {
+ primaryModeLabel->setText("Gsm");
+ }
+
+ if(mode == QSystemNetworkInfo::CdmaMode) {
+ primaryModeLabel->setText("Cdma");
+ }
+
+ if(mode == QSystemNetworkInfo::WcdmaMode) {
+ primaryModeLabel->setText("Wcdma");
+ }
+ if(mode == QSystemNetworkInfo::UnknownMode) {
+ primaryModeLabel->setText("None");
+ }
+}
+
+
+void Dialog::displayNetworkStatus(QSystemNetworkInfo::NetworkStatus status)
+{
+ QString stat;
+ switch(status) {
+ case QSystemNetworkInfo::UndefinedStatus:
+ stat = "Undefined";
+ break;
+ case QSystemNetworkInfo::NoNetworkAvailable:
+ stat = "No Network Available";
+ break;
+ case QSystemNetworkInfo::EmergencyOnly:
+ stat = "Emergency Only";
+ break;
+ case QSystemNetworkInfo::Searching:
+ stat = "Searching or Connecting";
+ break;
+ case QSystemNetworkInfo::Busy:
+ stat = "Busy";
+ break;
+ case QSystemNetworkInfo::Connected:
+ stat = "Connected";
+ break;
+ case QSystemNetworkInfo::HomeNetwork:
+ stat = "Home Network";
+ break;
+ case QSystemNetworkInfo::Denied:
+ stat = "Denied";
+ break;
+ case QSystemNetworkInfo::Roaming:
+ stat = "Roaming";
+ break;
+ };
+ cellNetworkStatusLabel->setText(stat);
+}
+
+void Dialog::updateProfile()
+{
+ if(di) {
+ QString profilestring;
+ switch(di->currentProfile()) {
+ case QSystemDeviceInfo::UnknownProfile:
+ {
+ profilestring = "Unknown";
+ }
+ break;
+ case QSystemDeviceInfo::SilentProfile:
+ {
+ profilestring = "Silent";
+ }
+ break;
+ case QSystemDeviceInfo::NormalProfile:
+ {
+ profilestring = "Normal";
+ }
+ break;
+ case QSystemDeviceInfo::LoudProfile:
+ {
+ profilestring = "Loud";
+ }
+ break;
+ case QSystemDeviceInfo::VibProfile:
+ {
+ profilestring = "Vibrate";
+ }
+ break;
+ case QSystemDeviceInfo::OfflineProfile:
+ {
+ profilestring = "Offline";
+ }
+ break;
+ case QSystemDeviceInfo::PowersaveProfile:
+ {
+ profilestring = "Powersave";
+ }
+ break;
+ case QSystemDeviceInfo::CustomProfile:
+ {
+ profilestring = "custom";
+ }
+ break;
+ };
+ profileLabel->setText(profilestring);
+ }
+}
+
+
+void Dialog::updateSimStatus()
+{
+ if(di) {
+ QString simstring;
+ switch(di->simStatus()) {
+ case QSystemDeviceInfo::SimLocked:
+ {
+ simstring = "Sim Locked";
+ }
+ break;
+ case QSystemDeviceInfo::SimNotAvailable:
+ {
+ simstring = "Sim not available";
+ }
+ break;
+ case QSystemDeviceInfo::SingleSimAvailable:
+ {
+ simstring = "Single Sim Available";
+
+ }
+ break;
+ case QSystemDeviceInfo::DualSimAvailable:
+ {
+ simstring = "Dual Sim available";
+ }
+ break;
+
+ };
+ simStatusLabel->setText(simstring);
+ }
+}
+
+