--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/pbkcommonui/src/cnturleditorview.cpp Fri Mar 19 09:27:18 2010 +0200
@@ -0,0 +1,127 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include "cnturleditorview.h"
+#include "cnteditordataviewitem.h"
+#include <hbinputstandardfilters.h>
+
+CntUrlEditorView::CntUrlEditorView(CntViewManager *viewManager, QGraphicsItem *parent):
+ CntBaseDetailEditorView(viewManager, parent)
+{
+ setHeader(hbTrId("Edit URL details"));
+}
+
+CntUrlEditorView::~CntUrlEditorView()
+{
+
+}
+
+void CntUrlEditorView::aboutToCloseView()
+{
+ for (int i = 0; i < mDetailList.count(); i++)
+ {
+ mContact->saveDetail(mDetailList.at(i));
+
+ if (mDetailList.at(i)->value(QContactUrl::FieldUrl).isEmpty())
+ {
+ mContact->removeDetail(mDetailList.at(i));
+ }
+ }
+ CntBaseDetailEditorView::aboutToCloseView();
+}
+
+QStandardItemModel *CntUrlEditorView::itemModel()
+{
+ QStandardItemModel *fieldModel = new QStandardItemModel();
+
+ QString contextHome = QContactDetail::ContextHome;
+ QString contextWork = QContactDetail::ContextWork;
+
+ QString urlField = QContactUrl::FieldUrl;
+
+ QStandardItem *url = new QStandardItem;
+ url->setText(hbTrId("txt_phob_dblist_url"));
+ url->setData(urlField, Qt::UserRole);
+ url->setData(":/icons/qgn_prop_nrtyp_url.svg", Qt::UserRole+2);
+ url->setData(CNT_URL_EDITOR_MAXLENGTH, Qt::UserRole+3);
+ fieldModel->appendRow(url);
+ QStandardItem *urlhome = new QStandardItem;
+ urlhome->setText(hbTrId("txt_phob_dblist_url_home"));
+ urlhome->setData(urlField, Qt::UserRole);
+ urlhome->setData(contextHome, Qt::UserRole+1);
+ urlhome->setData(":/icons/qgn_prop_nrtyp_url.svg", Qt::UserRole+2);
+ urlhome->setData(CNT_URL_EDITOR_MAXLENGTH, Qt::UserRole+3);
+ fieldModel->appendRow(urlhome);
+ QStandardItem *urlwork = new QStandardItem;
+ urlwork->setText(hbTrId("txt_phob_dblist_url_work"));
+ urlwork->setData(urlField, Qt::UserRole);
+ urlwork->setData(contextWork, Qt::UserRole+1);
+ urlwork->setData(":/icons/qgn_prop_nrtyp_url.svg", Qt::UserRole+2);
+ urlwork->setData(CNT_URL_EDITOR_MAXLENGTH, Qt::UserRole+3);
+ fieldModel->appendRow(urlwork);
+
+ return fieldModel;
+}
+
+void CntUrlEditorView::initializeForm()
+{
+ QContactUrl *buttonUrl = new QContactUrl();
+ mDetailList.append(buttonUrl);
+ CntEditorDataModelItem *buttonItem = new CntEditorDataModelItem(*buttonUrl, hbTrId("Add URL"),
+ static_cast<HbDataFormModelItem::DataItemType>(HbDataFormModelItem::CustomItemBase+2));
+ formModel()->appendDataFormItem(buttonItem, formModel()->invisibleRootItem());
+
+ QList<QContactUrl> details = mContact->details<QContactUrl>();
+
+ if (details.count() > 0)
+ {
+ for(int i = 0;i < details.count();i++)
+ {
+ QContactUrl *url = new QContactUrl(details.at(i));
+ mDetailList.append(url);
+ CntEditorDataModelItem *item = new CntEditorDataModelItem(*url, QContactUrl::FieldUrl, itemModel(),
+ HbDataFormModelItem::CustomItemBase);
+ item->setTextFilter(HbUrlFilter::instance());
+ formModel()->insertDataFormItem(formModel()->rowCount() - 1, item, formModel()->invisibleRootItem());
+
+ // check if this was the clicked item in edit view
+ if (mParamString != "add" && mParamString.toInt() == i)
+ {
+ // set focus to the added field's lineedit
+ static_cast<CntEditorDataViewItem*>(dataForm()->itemByIndex(formModel()->indexFromItem(item)))->focusLineEdit();
+ }
+ }
+ }
+ else
+ {
+ addDetail();
+ }
+}
+
+void CntUrlEditorView::addDetail()
+{
+ QContactUrl *url = new QContactUrl();
+ mDetailList.append(url);
+ CntEditorDataModelItem *item = new CntEditorDataModelItem(*url, QContactUrl::FieldUrl, itemModel(),
+ HbDataFormModelItem::CustomItemBase);
+ item->setTextFilter(HbEmailAddressFilter::instance());
+ formModel()->insertDataFormItem(formModel()->rowCount() - 1, item, formModel()->invisibleRootItem());
+
+ // set focus to the added field's lineedit
+ static_cast<CntEditorDataViewItem*>(dataForm()->itemByIndex(formModel()->indexFromItem(item)))->focusLineEdit();
+}
+