wlanutilities/wlanwizard/src/wlanwizardpagessid.cpp
changeset 39 7b3e49e4608a
parent 31 e8f4211554fb
child 43 72ebcbb64834
--- a/wlanutilities/wlanwizard/src/wlanwizardpagessid.cpp	Thu Jun 10 15:44:54 2010 +0300
+++ b/wlanutilities/wlanwizard/src/wlanwizardpagessid.cpp	Thu Jun 24 10:49:51 2010 +0300
@@ -1,20 +1,19 @@
 /*
- * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description: 
- *   WLAN Wizard Page: SSID Selection.
- *
- */
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* WLAN Wizard Page: SSID Selection.
+*/
 
 // System includes
 #include <HbDocumentLoader>
@@ -35,14 +34,14 @@
 #endif
 
 /*!
- * Constructor. Member initialization.
+ * Constructor method for the SSID query view object.
+ * @param [in] parent pointer to parent object.
  */
 WlanWizardPageSsid::WlanWizardPageSsid(WlanWizardPrivate* parent) :
     WlanWizardPageInternal(parent),
     mWidget(NULL),
     mLabel(NULL),
     mSsid(NULL),
-    mLabelError(NULL),
     mLoader(NULL)
 {
 
@@ -59,178 +58,131 @@
 
 /*!
  * Page initialization. If view is already loaded, does nothing.
+ * @return pointer to widget "occ_add_wlan_01".
  */
 HbWidget* WlanWizardPageSsid::initializePage()
 {
     OstTrace0( TRACE_NORMAL, WLANWIZARDPAGESSID_INITIALIZEPAGE,
         "WlanWizardPageSsid::initializePage" );
 
-    if (mWidget == NULL) {
-        bool ok;
+    // It is not possible for this method to be called more than once during
+    // wizard lifetime.
+    Q_ASSERT(mWidget == NULL);
 
-        mLoader = new HbDocumentLoader(mWizard->mainWindow());
+    bool ok;
 
-        mLoader->load(":/docml/occ_add_wlan_01_04.docml", &ok);
-        Q_ASSERT_X(ok, "WlanWizardPageSsid", "Invalid docml file");
+    mLoader = new HbDocumentLoader(mWizard->mainWindow());
 
-        // Load orientation
-        loadDocml(mWizard->mainWindow()->orientation());
+    mLoader->load(":/docml/occ_add_wlan_01_04.docml", &ok);
+    Q_ASSERT(ok);
+
+    // Load orientation
+    loadDocmlSection(mWizard->mainWindow()->orientation());
 
-        // Load widgets
-        mWidget = qobject_cast<HbWidget*> (mLoader->findWidget(
-            "occ_add_wlan_01"));
-        Q_ASSERT_X(mWidget != NULL, "WlanWizardPageSsid", "View not found");
-
-        mLabel = qobject_cast<HbLabel*> (mLoader->findWidget("dialog"));
-        Q_ASSERT_X(mLabel != NULL, "WlanWizardPageSsid", "dialog not found");
+    // Load widgets
+    mWidget = qobject_cast<HbWidget*> (mLoader->findWidget(
+        "occ_add_wlan_01"));
+    Q_ASSERT(mWidget != NULL);
 
-        mSsid = qobject_cast<HbLineEdit*> (mLoader->findWidget("lineEditKey"));
-        Q_ASSERT_X(mSsid != NULL, "WlanWizardPageSsid", "lineEditKey not found");
+    mLabel = qobject_cast<HbLabel*> (mLoader->findWidget("dialog"));
+    Q_ASSERT(mLabel != NULL);
 
-        mLabelError = qobject_cast<HbLabel*> (mLoader->findWidget(
-            "labelErrorNote"));
-        Q_ASSERT_X(mLabelError != NULL, "WlanWizardPageSsid",
-            "labelErrorNote not found");
+    mSsid = qobject_cast<HbLineEdit*> (mLoader->findWidget("lineEditKey"));
+    Q_ASSERT(mSsid != NULL);
+
+    mLabel->setPlainText(hbTrId(
+        "txt_occ_dialog_insert_the_name_of_the_new_wlan_net"));
 
-        mLabel->setPlainText(hbTrId(
-            "txt_occ_dialog_insert_the_name_of_the_new_wlan_net"));
+    // Connect orientation signal from the main window to orientation
+    // loader.
+    ok = connect(mWizard->mainWindow(),
+        SIGNAL(orientationChanged(Qt::Orientation)), this,
+        SLOT(loadDocmlSection(Qt::Orientation)));
+    Q_ASSERT(ok);
 
-        // Connect orientation signal from the main window to orientation
-        // loader.
-        ok &= connect(mWizard->mainWindow(),
-            SIGNAL(orientationChanged(Qt::Orientation)), this,
-            SLOT(loadDocml(Qt::Orientation)));
-
-        // Connect text change-signal from input dialog to handler function
-        ok &= connect(mSsid, SIGNAL(textChanged(const QString &)), this,
-            SLOT(textChanged(const QString &)));
-
-        Q_ASSERT(ok);
+    // Connect text change-signal from input dialog to handler function
+    ok = connect(mSsid, SIGNAL(textChanged(const QString &)), this,
+        SLOT(textChanged(const QString &)));
+    Q_ASSERT(ok);
 
-        HbEditorInterface editInterface(mSsid);
-        editInterface.setInputConstraints(HbEditorConstraintLatinAlphabetOnly);
-
+    HbEditorInterface editInterface(mSsid);
+    
+    // TODO: remove (HbEditorConstraints) type cast when 
+    // Q_DECLARE_OPERATORS_FOR_FLAGS(HbEditorConstraints) is defined (SDK xxx)
+    editInterface.setInputConstraints(
+        (HbEditorConstraints)(HbEditorConstraintAutoCompletingField |
+            HbEditorConstraintLatinAlphabetOnly));
+    
+    editInterface.setSmileyTheme(HbSmileyTheme());
+    editInterface.setEditorClass(HbInputEditorClassNetworkName);
+    mSsid->setInputMethodHints(
+        Qt::ImhNoPredictiveText | Qt::ImhPreferLowercase);
+    mSsid->setMaxLength(WlanWizardUtils::SsidMaxLength);
 
-        editInterface.setSmileyTheme(HbSmileyTheme());
-        //editInterface.setEditorClass(HbInputEditorClassNetworkName);
-        mSsid->setInputMethodHints(
-            Qt::ImhNoPredictiveText | Qt::ImhPreferLowercase);
-        mSsid->setMaxLength(WlanWizardUtils::SsidMaxLength);
-        mSsid->installEventFilter(this);
-    }
-	
-	// Open virtual keyboard by setting focus to line edit
-	mSsid->setFocus();
-
-    return mWidget;
+	return mWidget;
 }
 
 /*!
- * Selection of the next page.
+ * This method is overrides the default implementation from WlanWizardPage.
+ * It indicates whether the Next-button should be enabled or not.
+ * @return true, if mSsid edit field is not empty.
+ */
+bool WlanWizardPageSsid::showPage()
+{
+    // Initiate the scanning of public APs here.
+    mWizard->wlanQtUtils()->scanWlanAps();
+    
+    // Open virtual keyboard by setting focus to line edit
+    mSsid->setFocus();
+
+    return !(mSsid->text().isEmpty());
+}
+
+/*!
+ * Stores the SSID selection in the configuration.
+ * @param [out] removeFromStack returns false.
+ * @return WlanWizardPageScanning page id.
  */
 int WlanWizardPageSsid::nextId(bool &removeFromStack) const
 {
-    int pageId = WlanWizardPage::PageNone;
     removeFromStack = false;
 
-    WlanWizardUtils::SsidStatus status = WlanWizardUtils::validateSsid(
-        mSsid->text());
-
-    if (status != WlanWizardUtils::SsidStatusOk) {
-        mLabelError->setPlainText(SsidStatusToErrorString(status));
-    }
-    else {
-        // SSID is stored into configuration
-        mWizard->setConfiguration(WlanWizardPrivate::ConfSsid, mSsid->text());
-        pageId = WlanWizardPageInternal::PageScanning;
-    }
-
-    return pageId;
+    // SSID is stored into configuration
+    mWizard->setConfiguration(WlanWizardPrivate::ConfSsid, mSsid->text());
+    
+    return WlanWizardPageInternal::PageScanning;
 }
 
 /*!
- * Load the document with given screen orientation.
+ * Loads the document orientation information from occ_add_wlan_01_04.docml
+ * This is called each time phone orientation changes.
+ * @param [in] orientation indicates whether the phone is in portrait or
+ * landscape mode.
  */
-void WlanWizardPageSsid::loadDocml(Qt::Orientation orientation)
+void WlanWizardPageSsid::loadDocmlSection(Qt::Orientation orientation)
 {
     OstTrace1( TRACE_FLOW, WLANWIZARDPAGESSID_LOADDOCML,
         "WlanWizardPageSsid::loadDocml - orientation ;orientation=%x",
         ( TUint )( orientation ) );
 
-    bool ok;
-    // Then load the orientation specific section
-    if (orientation == Qt::Horizontal) {
-        qDebug("Loading landscape section for wlan_01_04");
-        mLoader->load(":/docml/occ_add_wlan_01_04.docml", "landscape_section",
-            &ok);
-        Q_ASSERT(ok);
-    }
-    else {
-        Q_ASSERT(orientation == Qt::Vertical);
-        qDebug("Loading portrait section for wlan_01_04");
-        mLoader->load(":/docml/occ_add_wlan_01_04.docml", "portrait_section",
-            &ok);
-        Q_ASSERT(ok);
-    }
-}
-
-/*!
- * Actions, when user makes changes to the text editor widget.
- */
-void WlanWizardPageSsid::textChanged(const QString & /* text */)
-{
-    OstTrace0( TRACE_FLOW, WLANWIZARDPAGESSID_TEXTCHANGED,
-        "WlanWizardPageSsid::textChanged in text edit widget" );
-
-    mWizard->enableNextButton(showPage());
+    WlanWizardPageInternal::loadDocmlSection(
+        mLoader,
+        orientation,
+        ":/docml/occ_add_wlan_01_04.docml", 
+        "portrait_section",
+        "landscape_section");
 }
 
 /*!
- * Returns true, if the text editor widget contains any characters.
+ * Executed when changes have been made to the mSsid field (and the field is
+ * not empty).
+ * @param [in] text is not used at this point.
  */
-bool WlanWizardPageSsid::showPage()
+void WlanWizardPageSsid::textChanged(const QString &text)
 {
-    // Initiate the scanning of public APs here.
-    mWizard->wlanQtUtils()->scanWlanAps();
-
-   return !(mSsid->text().isEmpty());
-}
-
-/*!
- * Filter to catch focus event to the text editor widget.
- */
-bool WlanWizardPageSsid::eventFilter(QObject *obj, QEvent *event)
-{
-    if (obj == mSsid && event->type() == QEvent::FocusIn) {
-        OstTrace0( TRACE_BORDER, WLANWIZARDPAGESSID_EVENTFILTER,
-            "WlanWizardPageSsid::eventFilter text edit widget received focus" );
-
-        mLabelError->setPlainText("");
-    }
-    return false;
-}
+    Q_UNUSED(text);
+    OstTrace0( TRACE_FLOW, WLANWIZARDPAGESSID_TEXTCHANGED,
+        "WlanWizardPageSsid::textChanged in text edit widget" );
 
-/*!
- * Conversion function from SsidStatus to plain text.
- */
-QString WlanWizardPageSsid::SsidStatusToErrorString(
-    WlanWizardUtils::SsidStatus status) const
-{
-    QString errorString;
-    switch (status) {
-    case WlanWizardUtils::SsidStatusIllegalCharacters:
-        errorString = hbTrId(
-            "txt_occ_dialog_illegal_characters_in_key_please_c");
-        break;
-    case WlanWizardUtils::SsidStatusInvalidLength:
-        errorString
-            = hbTrId("txt_occ_dialog_key_is_of_incorrect_length_please");
-        break;
-    case WlanWizardUtils::SsidStatusOk:
-    default:
-        Q_ASSERT(WlanWizardUtils::SsidStatusOk == status);
-        break;
-    }
-    return errorString;
+    mWizard->enableNextButton(!(mSsid->text().isEmpty()));
 }
-