--- a/phonebookui/phonebookservices/src/cntserviceproviderviewing.cpp Wed Aug 18 09:39:00 2010 +0300
+++ b/phonebookui/phonebookservices/src/cntserviceproviderviewing.cpp Thu Sep 02 20:16:15 2010 +0300
@@ -28,7 +28,8 @@
CntServiceProviderViewing::CntServiceProviderViewing(CntServices& aServices, QObject *parent):
XQServiceProvider(QLatin1String(KCntServiceInterfaceView), parent),
mServices(aServices),
- mCurrentRequestIndex(0)
+ mCurrentRequestIndex(0),
+ mAllowExit(true)
{
CNT_ENTRY
publishAll();
@@ -43,39 +44,52 @@
}
void CntServiceProviderViewing::openContactCard( int aContactId )
- {
+{
CNT_ENTRY
mCurrentRequestIndex = setCurrentRequestAsync();
mServices.setQuittable(requestInfo().isEmbedded());
mServices.launchContactCard( aContactId, *this );
CNT_EXIT
- }
+}
void CntServiceProviderViewing::openTemporaryContactCard( QString aFieldName, QString aFieldValue )
- {
+{
CNT_ENTRY
mCurrentRequestIndex = setCurrentRequestAsync();
mServices.setQuittable(requestInfo().isEmbedded());
mServices.launchTemporaryContactCard( aFieldName, aFieldValue, *this );
CNT_EXIT
- }
+}
void CntServiceProviderViewing::openGroup( int aContactId )
- {
+{
CNT_ENTRY
mCurrentRequestIndex = setCurrentRequestAsync();
+ mAllowExit = false;
mServices.setQuittable(requestInfo().isEmbedded());
mServices.launchGroupMemberView( aContactId, *this );
CNT_EXIT
- }
+}
void CntServiceProviderViewing::CompleteServiceAndCloseApp(const QVariant& retValue)
- {
+{
CNT_ENTRY
connect(this, SIGNAL(returnValueDelivered()), qApp, SLOT(quit()));
if ( mCurrentRequestIndex != 0 )
{
- const bool success = completeRequest(mCurrentRequestIndex, retValue);
+ bool success = false;
+
+ if (!mOverriddenReturnValue.isNull() && retValue.value<int>() != KCntServicesReturnValueContactDeleted)
+ {
+ CNT_LOG_ARGS(mOverriddenReturnValue.value<int>());
+ success = completeRequest(mCurrentRequestIndex, mOverriddenReturnValue);
+ }
+ else
+ {
+ CNT_LOG_ARGS(retValue.value<int>());
+ success = completeRequest(mCurrentRequestIndex, retValue);
+ }
+
if ( !success )
{
CNT_LOG_ARGS("Failed to complete highway request.");
@@ -83,4 +97,21 @@
mCurrentRequestIndex = 0;
}
CNT_EXIT
+}
+
+void CntServiceProviderViewing::overrideReturnValue(const QVariant& retValue)
+{
+ CNT_ENTRY
+
+ if (mOverriddenReturnValue.isNull() || mOverriddenReturnValue.value<int>() != KCntServicesReturnValueContactSaved)
+ {
+ mOverriddenReturnValue = retValue;
}
+
+ CNT_EXIT
+}
+
+bool CntServiceProviderViewing::allowSubViewsExit()
+{
+ return mAllowExit;
+}