camerauis/cameraxui/cxui/src/cxuisettingradiobuttonlist.cpp
changeset 42 feebad15db8c
parent 41 67457b2ffb33
child 46 c826656d6714
equal deleted inserted replaced
41:67457b2ffb33 42:feebad15db8c
    71         setListBoxType(data->mListboxType);
    71         setListBoxType(data->mListboxType);
    72 
    72 
    73         // Store the original setting value and focus matching item.
    73         // Store the original setting value and focus matching item.
    74         QString value;
    74         QString value;
    75         mEngine->settings().get(mSettingId, value);
    75         mEngine->settings().get(mSettingId, value);
    76         CX_DEBUG(("CxuiSettingRadioButtonList - original value: [%s]", value.toAscii().data()));
    76         CX_DEBUG(("CxuiSettingRadioButtonList - original value: [%s]", qPrintable(value)));
    77         setOriginalSelectedItemByValue(QVariant(value));
    77         setOriginalSelectedItemByValue(QVariant(value));
    78     }
    78     }
    79 }
    79 }
    80 
    80 
    81 /*!
    81 /*!
    85  */
    85  */
    86 void CxuiSettingRadioButtonList::setOriginalSelectedItemByValue(const QVariant &value)
    86 void CxuiSettingRadioButtonList::setOriginalSelectedItemByValue(const QVariant &value)
    87 {
    87 {
    88     CX_DEBUG_ENTER_FUNCTION();
    88     CX_DEBUG_ENTER_FUNCTION();
    89 
    89 
       
    90     // Find the index of given value among setting values.
       
    91     // Default to first item, if given value is not found.
    90     int index = mSettingValues.indexOf(QVariant(value));
    92     int index = mSettingValues.indexOf(QVariant(value));
    91     if (index >= 0) {
    93     if (index < 0) {
    92         mOriginalIndex = index;
    94         CX_DEBUG(("[WARNING] Value [%s] not found, selecting first item", qPrintable(value.toString())));
    93         setSelected(index);
    95         index = 0;
    94         // ensure that currently selected item is visible
    96     }
    95         scrollTo(currentIndex());
    97 
    96     } else {
    98     // Store the original value.
    97         CX_DEBUG(("[WARNING] Value %s not found, defaulting to first item", value.toString().toAscii().data()));
    99     mOriginalIndex = index;
    98     }
   100     // Select the index with current value item.
       
   101     setSelected(index);
       
   102     // Ensure that currently selected item is visible.
       
   103     scrollTo(currentIndex());
       
   104 
    99     CX_DEBUG_EXIT_FUNCTION();
   105     CX_DEBUG_EXIT_FUNCTION();
   100 }
   106 }
   101 
   107 
   102 /*!
   108 /*!
   103 * Set list texts.
   109 * Set list texts.
   188 */
   194 */
   189 void CxuiSettingRadioButtonList::commit(int index)
   195 void CxuiSettingRadioButtonList::commit(int index)
   190 {
   196 {
   191     CX_DEBUG_ENTER_FUNCTION();
   197     CX_DEBUG_ENTER_FUNCTION();
   192 
   198 
   193     CX_DEBUG(("id: %s", mSettingId.toAscii().data()));
   199     CX_DEBUG(("CxuiSettingRadioButtonList - id: %s", qPrintable(mSettingId)));
   194 
   200 
   195     if (!mSettingId.isEmpty() && !mSettingValues.isEmpty()) {
   201     if (!mSettingId.isEmpty() && !mSettingValues.isEmpty()) {
   196         QVariant value = mSettingValues.at(index);
   202         QVariant value = mSettingValues.at(index);
   197         if (value.type() == QVariant::Int) {
   203         if (value.type() == QVariant::Int) {
   198             CX_DEBUG(("index:%d value:%d", index, value.toInt()));
   204             CX_DEBUG(("CxuiSettingRadioButtonList - index:%d value:%d", index, value.toInt()));
   199 
   205 
   200             // Don't set the value again, if it is the current value.
   206             // Don't set the value again, if it is the current value.
   201             // For e.g. video quality it would result in re-preparation etc.
   207             // For e.g. video quality it would result in re-preparation etc.
   202             int current(0);
   208             int current(0);
   203             CxeError::Id status(mEngine->settings().get(mSettingId, current));
   209             CxeError::Id status(mEngine->settings().get(mSettingId, current));
   207             }
   213             }
   208             // inform interested clients about value changed event
   214             // inform interested clients about value changed event
   209             emit valueSelected(value.toInt());
   215             emit valueSelected(value.toInt());
   210 
   216 
   211         } else if (value.type() == QVariant::String) {
   217         } else if (value.type() == QVariant::String) {
   212             CX_DEBUG(("index:%d value:[%s]", index, value.toString().toAscii().constData()));
   218             CX_DEBUG(("CxuiSettingRadioButtonList - index:%d value:[%s]", index, qPrintable(value.toString())));
   213 
   219 
   214             QString current;
   220             QString current;
   215             CxeError::Id status(mEngine->settings().get(mSettingId, current));
   221             CxeError::Id status(mEngine->settings().get(mSettingId, current));
   216             CX_DEBUG(("settings model value:[%s]", current.toAscii().constData()));
   222             CX_DEBUG(("CxuiSettingRadioButtonList - settings model value:[%s]", qPrintable(current)));
   217 
   223 
   218             if (status != CxeError::None || current != value.toString()) {
   224             if (status != CxeError::None || current != value.toString()) {
   219                 mEngine->settings().set(mSettingId, value.toString());
   225                 mEngine->settings().set(mSettingId, value.toString());
   220             }
   226             }
   221         }
   227         }