mediasettings/videosettingsplugin/src/videosettingsgroup.cpp
changeset 41 229f037ce963
parent 40 13331705e488
child 49 824471cb468a
--- a/mediasettings/videosettingsplugin/src/videosettingsgroup.cpp	Fri Jun 11 09:44:20 2010 +0300
+++ b/mediasettings/videosettingsplugin/src/videosettingsgroup.cpp	Thu Jun 24 09:49:13 2010 +0300
@@ -31,9 +31,25 @@
 #include <MPSettEngPluginImplementationUIDs.hrh>
 #include <xqconversions.h>
 #include <qapplication.h>
-#include <qtranslator.h>
 #include <hbapplication.h>
 
+const int PROXY_LOWEST_ACCEPTED_VALUE = 1;
+const int UDP_LOWEST_ACCEPTED_VALUE = 1024;
+const int PORT_HIGHEST_ACCEPTED_VALUE = 65535;
+
+void gValidatePortValues(int& value, int bottom, int top)
+{
+    if(value < bottom)
+    {
+        value = bottom;
+    }
+
+    if(value > top)
+    {
+        value = top;
+    }
+}
+
 // ---------------------------------------------------------------------------
 // Constructor
 // ---------------------------------------------------------------------------
@@ -50,28 +66,27 @@
     mProxyPortItem(0)
 {
     MPX_ENTER_EXIT(_L("VideoSettingsGroup::VideoSettingsGroup()"));
-    
+
     // Load the translation file.
     QString lang = QLocale::system().name();
-    QTranslator translator;
     bool loaded(false);
 
-    loaded = translator.load( "videos_" + lang, QString("c:/resource/qt/translations") );
+    loaded = mTranslator.load( "videos_" + lang, QString("c:/resource/qt/translations") );
 
     if (!loaded)
     {
-        translator.load("videos_" + lang, QString("z:/resource/qt/translations") );
+        mTranslator.load("videos_" + lang, QString("z:/resource/qt/translations") );
     }
 
     // Install the translator
     HbApplication* app = qobject_cast<HbApplication*>(qApp);
     if(app)
     {
-        app->installTranslator(&translator);
+        app->installTranslator(&mTranslator);
     }
-    
+
     this->setLabel(hbTrId("txt_videos_subhead_video_streaming_settings"));
-    
+
     TRAPD(err, InitSettingsModelL());
     if(err != KErrNone)
     {
@@ -79,52 +94,52 @@
         mSettingsModel = 0;
         return;
     }
-    
+
     itemDataHelper.connectToForm(SIGNAL(itemShown(const QModelIndex)), this, SLOT(itemShown(const QModelIndex)));
-    
+
     // Access point in use
-    mAccessPointItem = new VideoSettingsAccessPointEntry(itemDataHelper, 
+    mAccessPointItem = new VideoSettingsAccessPointEntry(itemDataHelper,
         hbTrId("txt_videos_dblist_access_point"), this);
     this->appendChild(mAccessPointItem);
-    
+
     // Lowest UDP port
     mLowestUDPPortItem = new CpSettingFormItemData(HbDataFormModelItem::TextItem,
         hbTrId("txt_videos_dblist_min_udp_port"));
     mLowestUDPPortItem->setContentWidgetData(QString("maxRows"), 1);
-    mItemDataHelper.addConnection(mLowestUDPPortItem, SIGNAL(editingFinished()), 
+    mItemDataHelper.addConnection(mLowestUDPPortItem, SIGNAL(editingFinished()),
         this, SLOT(lowestUdpPortEditingFinished()));
     this->appendChild(mLowestUDPPortItem);
-    
+
     // Highest UDP port
     mHighestUDPPortItem = new CpSettingFormItemData(HbDataFormModelItem::TextItem,
         hbTrId("txt_videos_dblist_max_udp_port"));
     mHighestUDPPortItem->setContentWidgetData(QString("maxRows"), 1);
-    mItemDataHelper.addConnection(mHighestUDPPortItem, SIGNAL(editingFinished()), 
+    mItemDataHelper.addConnection(mHighestUDPPortItem, SIGNAL(editingFinished()),
         this, SLOT(highestUdpPortEditingFinished()));
     this->appendChild(mHighestUDPPortItem);
-    
+
     // Use proxy
     mUseProxyItem = new CpSettingFormItemData(HbDataFormModelItem::CheckBoxItem, QString());
     mUseProxyItem->setContentWidgetData(QString("text"), hbTrId("txt_videos_formlabel_proxy_in_use"));
     this->appendChild(mUseProxyItem);
-    
+
     // Proxy server address
     mProxyServerItem = new CpSettingFormItemData(HbDataFormModelItem::TextItem,
         hbTrId("txt_videos_dblist_proxy_host_name"));
     mProxyServerItem->setContentWidgetData(QString("maxRows"), 1);
     mProxyServerItem->setContentWidgetData(QString("placeholderText"), hbTrId("txt_videos_dblist_none"));
-    mItemDataHelper.addConnection(mProxyServerItem, SIGNAL(editingFinished()), 
+    mItemDataHelper.addConnection(mProxyServerItem, SIGNAL(editingFinished()),
         this, SLOT(proxyServerEditingFinished()));
     this->appendChild(mProxyServerItem);
-    
+
     // Proxy port number
     mProxyPortItem = new CpSettingFormItemData(HbDataFormModelItem::TextItem,
         hbTrId("txt_videos_dblist_proxy_port"));
     mProxyPortItem->setContentWidgetData(QString("maxRows"), 1);
-    mItemDataHelper.addConnection(mProxyPortItem, SIGNAL(editingFinished()), 
+    mItemDataHelper.addConnection(mProxyPortItem, SIGNAL(editingFinished()),
         this, SLOT(proxyPortEditingFinished()));
     this->appendChild(mProxyPortItem);
-    
+
     loadSettings();
 }
 
@@ -135,9 +150,9 @@
 VideoSettingsGroup::~VideoSettingsGroup()
 {
     MPX_ENTER_EXIT(_L("VideoSettingsGroup::~VideoSettingsGroup()"));
-    
+
     TRAP_IGNORE( mSettingsModel->StoreSettingsL() );
-    
+
     delete mSettingsModel;
 }
 
@@ -148,12 +163,12 @@
 uint VideoSettingsGroup::getAccessPointId()
 {
     MPX_ENTER_EXIT(_L("VideoSettingsGroup::getAccessPointId()"));
-    
+
     TUint32 defaultAp(0);
     mSettingsModel->GetDefaultAp(defaultAp);
-    
+
     MPX_DEBUG(_L("Returned access point id = %i"), defaultAp);
-    
+
     return defaultAp;
 }
 
@@ -163,10 +178,16 @@
 //
 void VideoSettingsGroup::setAccessPointId(const uint& defaultAp)
 {
-    MPX_ENTER_EXIT(_L("VideoSettingsGroup::setAccessPointId()"), 
+    MPX_ENTER_EXIT(_L("VideoSettingsGroup::setAccessPointId()"),
         _L("defaultAp = %i"), defaultAp);
-    
-    mSettingsModel->SetDefaultAp(defaultAp);
+
+    uint oldAp = getAccessPointId();
+
+    if(oldAp != defaultAp)
+    {
+        mSettingsModel->SetDefaultAp(defaultAp);
+        mUseProxyItem->setContentWidgetData(QString("checked"), false);
+    }
 }
 
 // ---------------------------------------------------------------------------
@@ -176,18 +197,21 @@
 void VideoSettingsGroup::lowestUdpPortEditingFinished()
 {
     MPX_ENTER_EXIT(_L("VideoSettingsGroup::lowestUdpPortValueChanged()"));
-    
+
     int minPort = mLowestUDPPortItem->contentWidgetData(QString("text")).toString().toInt();
     int maxPort = mHighestUDPPortItem->contentWidgetData(QString("text")).toString().toInt();
-    
+
     MPX_DEBUG(_L("minudp = %i, maxudp = %i"), minPort, maxPort);
-    
+
     if(minPort > maxPort)
     {
         minPort = maxPort;
-        mLowestUDPPortItem->setContentWidgetData(QString("text"), QString::number(minPort));
     }
-    
+
+    gValidatePortValues(minPort, UDP_LOWEST_ACCEPTED_VALUE, PORT_HIGHEST_ACCEPTED_VALUE);
+
+    mLowestUDPPortItem->setContentWidgetData(QString("text"), QString::number(minPort));
+
     mSettingsModel->SetMinUDPPort(minPort);
 }
 
@@ -198,18 +222,21 @@
 void VideoSettingsGroup::highestUdpPortEditingFinished()
 {
     MPX_ENTER_EXIT(_L("VideoSettingsGroup::highestUdpPortValueChanged()"));
-    
+
     int maxPort = mHighestUDPPortItem->contentWidgetData(QString("text")).toString().toInt();
     int minPort = mLowestUDPPortItem->contentWidgetData(QString("text")).toString().toInt();
-    
+
     MPX_DEBUG(_L("minudp = %i, maxudp = %i"), minPort, maxPort);
-    
+
     if(maxPort < minPort)
     {
         maxPort = minPort;
-        mHighestUDPPortItem->setContentWidgetData(QString("text"), QString::number(maxPort));
     }
-    
+
+    gValidatePortValues(maxPort, UDP_LOWEST_ACCEPTED_VALUE, PORT_HIGHEST_ACCEPTED_VALUE);
+
+    mHighestUDPPortItem->setContentWidgetData(QString("text"), QString::number(maxPort));
+
     mSettingsModel->SetMaxUDPPort(maxPort);
 }
 
@@ -219,12 +246,12 @@
 //
 void VideoSettingsGroup::useProxyToggled(int state)
 {
-    MPX_ENTER_EXIT(_L("VideoSettingsGroup::useProxyToggled()"), 
+    MPX_ENTER_EXIT(_L("VideoSettingsGroup::useProxyToggled()"),
         _L("state = %i"), state);
-    
+
     mProxyServerItem->setEnabled(state == Qt::Checked);
     mProxyPortItem->setEnabled(state == Qt::Checked);
-    
+
     mSettingsModel->SetProxyMode(state == Qt::Checked ? 1 : 0);
 }
 
@@ -235,11 +262,11 @@
 void VideoSettingsGroup::proxyServerEditingFinished()
 {
     MPX_ENTER_EXIT(_L("VideoSettingsGroup::proxyServerValueChanged()"));
-    
+
     QString text = mProxyServerItem->contentWidgetData(QString("text")).toString();
-    
+
     MPX_DEBUG(_L("new proxy server = '%s'"), text.data());
-    
+
     HBufC* proxyServer = XQConversions::qStringToS60Desc(text);
     TRAP_IGNORE( mSettingsModel->SetProxyHostNameL(*proxyServer) );
     delete proxyServer;
@@ -252,12 +279,16 @@
 void VideoSettingsGroup::proxyPortEditingFinished()
 {
     MPX_ENTER_EXIT(_L("VideoSettingsGroup::proxyPortValueChanged()"));
-    
+
     int proxyPort = mProxyPortItem->contentWidgetData(QString("text")).toString().toInt();
-    
+
     MPX_DEBUG(_L("new proxy port = %i"), proxyPort);
-    
-    mSettingsModel->SetProxyPort(proxyPort);    
+
+    gValidatePortValues(proxyPort, PROXY_LOWEST_ACCEPTED_VALUE, PORT_HIGHEST_ACCEPTED_VALUE);
+
+    mProxyPortItem->setContentWidgetData(QString("text"), QString::number(proxyPort));
+
+    mSettingsModel->SetProxyPort(proxyPort);
 }
 
 // ---------------------------------------------------------------------------
@@ -266,26 +297,23 @@
 //
 void VideoSettingsGroup::itemShown(const QModelIndex& index)
 {
-    MPX_ENTER_EXIT(_L("VideoSettingsGroup::itemShown()"), 
+    MPX_ENTER_EXIT(_L("VideoSettingsGroup::itemShown()"),
         _L("index row = %i"), index.row());
-    
+
     HbDataFormModelItem* modelItem = mItemDataHelper.modelItemFromModelIndex(index);
-    
+
     if(modelItem == mLowestUDPPortItem ||
        modelItem == mHighestUDPPortItem ||
        modelItem == mProxyPortItem )
     {
         HbLineEdit *editor = static_cast<HbLineEdit *>(mItemDataHelper.widgetFromModelIndex(index));
 
+        editor->setMaxLength(5);
+
         HbEditorInterface editorIf(editor);
         editorIf.setFilter(HbDigitsOnlyFilter::instance());
-        
-        HbValidator *validator = new HbValidator(this);
-        int lowestAllowedPort = modelItem == mProxyPortItem ? 1 : 1024;
-        validator->addField(new QIntValidator(lowestAllowedPort, 65535, validator), modelItem->contentWidgetData(QString("text")).toString());
-        editor->setValidator(validator);
     }
-    
+
     if(modelItem == mProxyServerItem)
     {
         mItemDataHelper.addConnection(mUseProxyItem, SIGNAL(stateChanged(int)), this, SLOT(useProxyToggled(int)));
@@ -301,7 +329,7 @@
 void VideoSettingsGroup::InitSettingsModelL()
 {
     MPX_ENTER_EXIT(_L("VideoSettingsGroup::InitSettingsModelL()"));
-    
+
     TUid settingsUid = {KMPSettEngImplUidROP};
     mSettingsModel = CMPSettingsModel::NewL(settingsUid);
     mSettingsModel->LoadSettingsL(EConfigUser);
@@ -314,28 +342,28 @@
 void VideoSettingsGroup::loadSettings()
 {
     MPX_ENTER_EXIT(_L("VideoSettingsGroup::loadSettings()"));
-    
+
     int lowestUdpPort(0);
     mSettingsModel->GetMinUDPPort(lowestUdpPort);
     mLowestUDPPortItem->setContentWidgetData(QString("text"), QString::number(lowestUdpPort));
-    
+
     int highestUdpPort(0);
     mSettingsModel->GetMaxUDPPort(highestUdpPort);
     mHighestUDPPortItem->setContentWidgetData(QString("text"), QString::number(highestUdpPort));
-    
+
     int proxyMode(0);
     mSettingsModel->GetProxyMode(proxyMode);
     mUseProxyItem->setContentWidgetData(QString("checked"), proxyMode == 1);
     useProxyToggled(proxyMode == 1 ? Qt::Checked : Qt::Unchecked);
-    
-    TBuf<2048> proxyServerBuf;
+
+    TBuf<496> proxyServerBuf;
     mSettingsModel->GetProxyHostName(proxyServerBuf);
     QString proxyServer = XQConversions::s60DescToQString(proxyServerBuf);
     mProxyServerItem->setContentWidgetData(QString("text"), proxyServer);
-    
+
     int proxyPort;
     mSettingsModel->GetProxyPort(proxyPort);
     mProxyPortItem->setContentWidgetData(QString("text"), QString::number(proxyPort));
-    
+
     mAccessPointItem->setIapId(getAccessPointId());
 }