diff -r 000000000000 -r 876b1a06bc25 examples/sysinfo/dialog.cpp --- /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 +#include + +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); + } +} + +