diff -r de1630741fbe -r 2a11b5b00470 phonebookui/pbkcommonui/src/cntaddressviewitem.cpp --- a/phonebookui/pbkcommonui/src/cntaddressviewitem.cpp Mon May 03 12:24:20 2010 +0300 +++ b/phonebookui/pbkcommonui/src/cntaddressviewitem.cpp Fri May 14 15:42:23 2010 +0300 @@ -29,23 +29,18 @@ #include #include -//#include "qlocationpickeritem_temp.h" +#include "qlocationpickeritem.h" #include #include #include CntAddressViewItem::CntAddressViewItem(QGraphicsItem* aParent) : /*CntDetailViewItem(aParent),*/ - HbDataFormViewItem(aParent), - mRequest(NULL), - mAppManager(NULL), - mSenderButton(NULL) + HbDataFormViewItem(aParent) { } CntAddressViewItem::~CntAddressViewItem() { - delete mRequest; - delete mAppManager; } HbAbstractViewItem* CntAddressViewItem::createItem() @@ -53,52 +48,109 @@ return new CntAddressViewItem(*this); } +bool CntAddressViewItem::canSetModelIndex( const QModelIndex &index ) const +{ + HbDataFormModelItem::DataItemType itemType = + static_cast( + index.data(HbDataFormModelItem::ItemTypeRole).toInt() ); + + if( itemType == HbDataFormModelItem::CustomItemBase ) + { + return true; + } + else + { + return false; + } + +} + HbWidget* CntAddressViewItem::createCustomWidget() { - QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Horizontal); - + HbDataFormModelItem::DataItemType itemType = static_cast( + modelIndex().data(HbDataFormModelItem::ItemTypeRole).toInt()); + HbWidget* widget = new HbWidget(); - widget->setLayout(layout); - - HbStyleLoader::registerFilePath(":/style/cntlocationbutton.css"); - HbStyleLoader::registerFilePath(":/style/cntlocationbutton.hbpushbutton.widgetml"); - HbDataForm* form = static_cast (itemView()); - HbDataFormModel* model = static_cast (form->model()); - - HbPushButton* mLocationButton = new HbPushButton(this); - mLocationButton->setObjectName("cntlocationbutton"); - mLocationButton->setIcon(HbIcon(":/icons/pickerIcon.jpg")); - mLocationButton->setText(qtTrId("Select location from map")); - mLocationButton->setOrientation(Qt::Horizontal); - - connect(mLocationButton, SIGNAL(clicked()), this, SLOT(launchLocationPicker())); - - layout->addItem(mLocationButton); + if( itemType == HbDataFormModelItem::CustomItemBase ) + { + QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Horizontal); + widget->setLayout(layout); + + HbStyleLoader::registerFilePath(":/style/cntlocationbutton.css"); + HbStyleLoader::registerFilePath(":/style/cntlocationbutton.hbpushbutton.widgetml"); + HbDataForm* form = static_cast (itemView()); + HbDataFormModel* model = static_cast (form->model()); + + HbPushButton* mLocationButton = new HbPushButton(this); + mLocationButton->setObjectName("cntlocationbutton"); + mLocationButton->setIcon(HbIcon("qtg_mono_location")); + mLocationButton->setText( hbTrId("txt_phob_button_select_location") ); + + connect(mLocationButton, SIGNAL(clicked()), this, SLOT(launchLocationPicker())); + + layout->addItem(mLocationButton); + + } return widget; } void CntAddressViewItem::launchLocationPicker() { - mAppManager = new XQApplicationManager(); - if (mRequest) { - delete mRequest; - mRequest = 0; + XQApplicationManager *appManager = new XQApplicationManager(); + XQAiwRequest* request = appManager->create("com.nokia.symbian", "ILocationPick", "pick()", true); + if( request ) + { + QVariant retValue; + if( request->send( retValue ) ) + { + handleLocationChange( retValue ); + } + + delete request; } - - mSenderButton = sender(); - mRequest = mAppManager->create("com.nokia.symbian", "ILocationPick", "pick()", false); - if (mRequest) { - connect(mRequest, SIGNAL(requestOk(const QVariant&)), this, - SLOT(handleLocationChange(const QVariant&))); - mRequest->send(); - } + delete appManager; } void CntAddressViewItem::handleLocationChange(const QVariant& aValue) { - Q_UNUSED( aValue ); + QLocationPickerItem selectedLocation = aValue.value(); + if( selectedLocation.mIsValid ) + { + HbDataForm* form = static_cast(itemView()); + HbDataFormModel* model = static_cast(form->model()); + HbDataFormModelItem* item = model->itemFromIndex( modelIndex() ); + + QModelIndex nextIndex = modelIndex().sibling( modelIndex().row() + 1 , modelIndex().column() ); + HbDataFormModelItem* street = model->itemFromIndex( nextIndex ); + street->setContentWidgetData( "text", selectedLocation.mStreet ); + street->setContentWidgetData( "maxLength", CNT_STREET_MAXLENGTH ); + + nextIndex = modelIndex().sibling( modelIndex().row() + 2 , modelIndex().column() ); + + HbDataFormModelItem* postal = model->itemFromIndex( nextIndex ); + postal->setContentWidgetData( "text", selectedLocation.mPostalCode ); + postal->setContentWidgetData( "maxLength", CNT_POSTCODE_MAXLENGTH ); + + nextIndex = modelIndex().sibling( modelIndex().row() + 3 , modelIndex().column() ); + HbDataFormModelItem* locality = model->itemFromIndex( nextIndex ); + locality->setContentWidgetData( "text", selectedLocation.mCity ); + locality->setContentWidgetData( "maxLength", CNT_LOCALITY_MAXLENGTH ); + + nextIndex = modelIndex().sibling( modelIndex().row() + 4 , modelIndex().column() ); + HbDataFormModelItem* province = model->itemFromIndex( nextIndex ); + province->setContentWidgetData( "text", selectedLocation.mState ); + province->setContentWidgetData( "maxLength", CNT_REGION_MAXLENGTH ); + + nextIndex = modelIndex().sibling( modelIndex().row() + 5 , modelIndex().column() ); + HbDataFormModelItem* country = model->itemFromIndex( nextIndex ); + country->setContentWidgetData( "text", selectedLocation.mCountry ); + country->setContentWidgetData( "maxLength", CNT_COUNTRY_MAXLENGTH ); + + + } + } -//Q_IMPLEMENT_USER_METATYPE(QLocationPickerItem) + Q_IMPLEMENT_USER_METATYPE(QLocationPickerItem) // End of File