--- a/bluetoothappprofiles/avrcp/mediabrowseapi/group/bld.inf Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothappprofiles/avrcp/mediabrowseapi/group/bld.inf Wed Jun 23 18:23:52 2010 +0300
@@ -40,5 +40,5 @@
../public/remconmediabrowsetypes.h SYMBIAN_MW_LAYER_PUBLIC_EXPORT_PATH(remconmediabrowsetypes.h)
../public/remconmediabrowsepanic.h SYMBIAN_MW_LAYER_PUBLIC_EXPORT_PATH(remconmediabrowsepanic.h)
-../public/remconmediabrowsetargetbase.h SYMBIAN_MW_LAYER_PLATFORM_EXPORT_PATH(remcon/remconmediabrowsetargetbase.h)
+../public/remconmediabrowsetargetbase.h SYMBIAN_MW_LAYER_PUBLIC_EXPORT_PATH(remcon/remconmediabrowsetargetbase.h)
--- a/bluetoothappprofiles/avrcp/nowplayingapi/group/bld.inf Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothappprofiles/avrcp/nowplayingapi/group/bld.inf Wed Jun 23 18:23:52 2010 +0300
@@ -30,4 +30,4 @@
../public/remcondatabaseunawarenowplayingtarget.h SYMBIAN_MW_LAYER_PUBLIC_EXPORT_PATH(remcondatabaseunawarenowplayingtarget.h)
../public/remcondatabaseunawarenowplayingtargetobserver.h SYMBIAN_MW_LAYER_PUBLIC_EXPORT_PATH(remcondatabaseunawarenowplayingtargetobserver.h)
-../public/remconnowplayingtargetbase.h SYMBIAN_MW_LAYER_PLATFORM_EXPORT_PATH(remcon/remconnowplayingtargetbase.h)
+../public/remconnowplayingtargetbase.h SYMBIAN_MW_LAYER_PUBLIC_EXPORT_PATH(remcon/remconnowplayingtargetbase.h)
--- a/bluetoothappprofiles/avrcp/remconbeareravrcp/inc/avrcpincomingcommandhandler.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothappprofiles/avrcp/remconbeareravrcp/inc/avrcpincomingcommandhandler.h Wed Jun 23 18:23:52 2010 +0300
@@ -32,13 +32,13 @@
class CPassthroughHelper;
class CRcpRouter;
-class CRemConBearerAvrcp;
+class MRemConControlCommandInterface;
class CAVCFrame;
class TBTDevAddr;
NONSHARABLE_CLASS(CRcpIncomingCommandHandler) : public CBase, public MPlayerChangeObserver, public MIncomingCommandHandler
{
public:
- static CRcpIncomingCommandHandler* NewL(CRemConBearerAvrcp& aBearer,
+ static CRcpIncomingCommandHandler* NewL(MRemConControlCommandInterface& aCommandInterface,
MRemConBearerObserver& aObserver,
CRcpRouter& aRouter,
CDeltaTimer& aTimer,
@@ -59,7 +59,7 @@
void SendReject(TUid aInterfaceUid, TUint aId);
private:
- CRcpIncomingCommandHandler(CRemConBearerAvrcp& aBearer,
+ CRcpIncomingCommandHandler(MRemConControlCommandInterface& aCommandInterface,
MRemConBearerObserver& aObserver,
CRcpRouter& aRouter,
CDeltaTimer& aTimer,
@@ -92,6 +92,8 @@
void SendInternalResponse(TUint aId, RBuf8& aData);
void SendResponse(TDblQue<CControlCommand>& aCommandQueue, TUint aId, RBuf8& aData);
+
+ void EnterAddressedMode();
// Timer functions
TBool DuplicateNotify(TDblQue<CControlCommand>& aCommandQueue, const CControlCommand& aCommand) const;
@@ -100,15 +102,15 @@
TDblQue<CControlCommand> iCommandQueue;
TDblQue<CControlCommand> iInternalCommandQueue;
- CAVRCPFragmenter* iFragmenter;
- CRemConBearerAvrcp& iBearer;
- MRemConBearerObserver& iObserver;
- CRcpRouter& iRouter;
- CDeltaTimer& iTimer;
- TRemConClientId iClientId; // We store the client id even if we aren't
- // in addressed mode as we may switch into
- // it and need to know the current local
- // addressed player
+ CAVRCPFragmenter* iFragmenter;
+ MRemConControlCommandInterface& iCommandInterface;
+ MRemConBearerObserver& iObserver;
+ CRcpRouter& iRouter;
+ CDeltaTimer& iTimer;
+ TRemConClientId iClientId; // We store the client id even if we aren't
+ // in addressed mode as we may switch into
+ // it and need to know the current local
+ // addressed player
TBool iAddressedMode;
CAvrcpPlayerInfoManager& iPlayerInfoManager;
--- a/bluetoothappprofiles/avrcp/remconbeareravrcp/inc/avrcpoutgoingcommandhandler.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothappprofiles/avrcp/remconbeareravrcp/inc/avrcpoutgoingcommandhandler.h Wed Jun 23 18:23:52 2010 +0300
@@ -30,13 +30,13 @@
class CControlCommand;
class CRcpRouter;
-class CRemConBearerAvrcp;
+class MRemConControlCommandInterface;
class MRemConBearerObserver;
NONSHARABLE_CLASS(CRcpOutgoingCommandHandler) : public CBase, public MOutgoingCommandHandler
{
public:
// Construction/Destruction
- static CRcpOutgoingCommandHandler* NewL(CRemConBearerAvrcp& aBearer,
+ static CRcpOutgoingCommandHandler* NewL(MRemConControlCommandInterface& aCommandInterface,
MRemConBearerObserver& aObserver,
CRcpRouter& aRouter,
CDeltaTimer& aTimer);
@@ -68,7 +68,7 @@
const TBTDevAddr& aAddr);
private:
- CRcpOutgoingCommandHandler(CRemConBearerAvrcp& aBearer,
+ CRcpOutgoingCommandHandler(MRemConControlCommandInterface& aCommandInterface,
MRemConBearerObserver& aObserver,
CRcpRouter& aRouter,
CDeltaTimer& aTimer);
@@ -105,14 +105,14 @@
CControlCommand* aCommand,
TBool aNotify);
private:
- TTransactionLabel iCurrentTrans;
+ TTransactionLabel iCurrentTrans;
TDblQue<CControlCommand> iCommandQueue;
TDblQue<CControlCommand> iNotifyCommandQueue;
- CRemConBearerAvrcp& iBearer;
- MRemConBearerObserver& iObserver;
- CRcpRouter& iRouter;
- CDeltaTimer& iTimer;
+ MRemConControlCommandInterface& iCommandInterface;
+ MRemConBearerObserver& iObserver;
+ CRcpRouter& iRouter;
+ CDeltaTimer& iTimer;
CControlCommand* iUnreleasedCommand;
TBool iUnreleasedHasResponse;
--- a/bluetoothappprofiles/avrcp/remconbeareravrcp/inc/avrcpremotedevice.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothappprofiles/avrcp/remconbeareravrcp/inc/avrcpremotedevice.h Wed Jun 23 18:23:52 2010 +0300
@@ -24,7 +24,7 @@
#include <e32std.h>
-class CRemConBearerAvrcp;
+class MRemConControlCommandInterface;
class MIncomingCommandHandler;
class MOutgoingCommandHandler;
class CRcpIncomingCommandHandler;
@@ -41,7 +41,7 @@
public:
static CRcpRemoteDevice* NewL(const TBTDevAddr& aAddr,
CRcpRouter& aRouter,
- CRemConBearerAvrcp& aBearer,
+ MRemConControlCommandInterface& aCommandInterface,
MRemConBearerObserver& aObserver,
CDeltaTimer& aTimer,
CAvrcpPlayerInfoManager& aPlayerInfoManager);
@@ -58,7 +58,7 @@
private:
CRcpRemoteDevice(const TBTDevAddr& aAddr,
CRcpRouter& aRouter,
- CRemConBearerAvrcp& aBearer,
+ MRemConControlCommandInterface& aCommandInterface,
CDeltaTimer& aTimer);
void ConstructL(MRemConBearerObserver& aObserver,
@@ -73,7 +73,7 @@
CRcpOutgoingCommandHandler* iOutgoing;
CRcpRouter& iRouter;
- CRemConBearerAvrcp& iBearer;
+ MRemConControlCommandInterface& iCommandInterface;
CDeltaTimer& iTimer;
};
--- a/bluetoothappprofiles/avrcp/remconbeareravrcp/inc/avrcputils.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothappprofiles/avrcp/remconbeareravrcp/inc/avrcputils.h Wed Jun 23 18:23:52 2010 +0300
@@ -80,6 +80,8 @@
ECommandAlreadyQueuedForSending = 52,
EPassthroughQueueNotEmptyAfterDisconnect = 53,
EPreviousPassthroughNonNullReplacing = 54,
+ ETooManyRemotesRegisterForLocalAddressedPlayerUpdates = 55,
+ ETooFewRemotesRegisterForLocalAddressedPlayerUpdates = 56,
};
template <typename XAny>
--- a/bluetoothappprofiles/avrcp/remconbeareravrcp/inc/controlbearer.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothappprofiles/avrcp/remconbeareravrcp/inc/controlbearer.h Wed Jun 23 18:23:52 2010 +0300
@@ -62,6 +62,8 @@
void MrcciCommandExpired(TUint aTransactionId);
void MrccciSetAddressedClient(const TRemConClientId& aClient);
+ void MrccciRegisterForLocalAddressedClientUpdates();
+ void MrccciUnregisterForLocalAddressedClientUpdates();
private: // MRemConBearerInterfaceV3 functions called from RemCon
virtual TInt GetResponse(TUid& aInterfaceUid,
@@ -184,6 +186,8 @@
CAvrcpBulkBearer* iBulkBearer;
RAvctp iAvctp;
+
+ TInt iRemotesInterestedInLocalAddressedClient;
};
#endif //CONTROLBEARER_H
--- a/bluetoothappprofiles/avrcp/remconbeareravrcp/inc/passthroughhelper.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothappprofiles/avrcp/remconbeareravrcp/inc/passthroughhelper.h Wed Jun 23 18:23:52 2010 +0300
@@ -19,19 +19,19 @@
#include <e32base.h>
class CRcpRouter;
-class CRemConBearerAvrcp;
+class MRemConControlCommandInterface;
class CControlCommand;
NONSHARABLE_CLASS(CPassthroughHelper) : public CBase
{
public:
- static CPassthroughHelper* NewL(CRcpRouter& aRouter, CRemConBearerAvrcp& aBearer, CDeltaTimer& aTimer);
+ static CPassthroughHelper* NewL(CRcpRouter& aRouter, MRemConControlCommandInterface& aCommandInterface, CDeltaTimer& aTimer);
~CPassthroughHelper();
void Disconnect();
void HandlePassthrough(CControlCommand& aCommand); // FIXME for now
private:
- CPassthroughHelper(CRcpRouter& aRouter, CRemConBearerAvrcp& aAvrcp, CDeltaTimer& aTimer);
+ CPassthroughHelper(CRcpRouter& aRouter, MRemConControlCommandInterface& aCommandInterface, CDeltaTimer& aTimer);
void ConstructL();
void Respond(CControlCommand& aCommand, TInt aErr);
@@ -52,7 +52,7 @@
private:
CRcpRouter& iRouter;
- CRemConBearerAvrcp& iBearer;
+ MRemConControlCommandInterface& iCommandInterface;
CDeltaTimer& iTimer;
CControlCommand* iPreviousPassthrough;
};
--- a/bluetoothappprofiles/avrcp/remconbeareravrcp/inc/remconcommandinterface.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothappprofiles/avrcp/remconbeareravrcp/inc/remconcommandinterface.h Wed Jun 23 18:23:52 2010 +0300
@@ -51,7 +51,8 @@
virtual void MrccciNewNotifyResponse(CControlCommand& aCommand) = 0;
virtual void MrccciSetAddressedClient(const TRemConClientId& aClient) = 0;
-
+ virtual void MrccciRegisterForLocalAddressedClientUpdates() = 0;
+ virtual void MrccciUnregisterForLocalAddressedClientUpdates() = 0;
};
#endif //REMCONCOMMANDINTERFACE_H
--- a/bluetoothappprofiles/avrcp/remconbeareravrcp/src/avrcpMetadataTransfer.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothappprofiles/avrcp/remconbeareravrcp/src/avrcpMetadataTransfer.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -901,11 +901,16 @@
eventsBuf.Append(ERegisterNotificationUidsChanged );
}
- // Always mark support for stuff that's handled internally rather than
- // by the player
- count+= 2;
- eventsBuf.Append(ERegisterNotificationAvailablePlayersChanged );
- eventsBuf.Append(ERegisterNotificationAddressedPlayerChanged );
+ // If there are any browsing clients then mark support for the player addressing
+ // events. Without browsing support the remote will not be able to see the
+ // information about the players so it is better not to let them see events
+ // relating to the them
+ if(iPlayerInfoManager->BrowsingSupportedL(KNullClientId))
+ {
+ count+= 2;
+ eventsBuf.Append(ERegisterNotificationAvailablePlayersChanged );
+ eventsBuf.Append(ERegisterNotificationAddressedPlayerChanged );
+ }
responseData[1] += count;
--- a/bluetoothappprofiles/avrcp/remconbeareravrcp/src/avrcpincomingcommandhandler.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothappprofiles/avrcp/remconbeareravrcp/src/avrcpincomingcommandhandler.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -54,7 +54,7 @@
@return A fully constructed CRcpIncomingCommandHandler.
@leave System wide error codes.
*/
-CRcpIncomingCommandHandler* CRcpIncomingCommandHandler::NewL(CRemConBearerAvrcp& aBearer,
+CRcpIncomingCommandHandler* CRcpIncomingCommandHandler::NewL(MRemConControlCommandInterface& aCommandInterface,
MRemConBearerObserver& aObserver,
CRcpRouter& aRouter,
CDeltaTimer& aTimer,
@@ -62,7 +62,7 @@
TBTDevAddr& aDevice)
{
LOG_STATIC_FUNC
- CRcpIncomingCommandHandler* handler = new(ELeave)CRcpIncomingCommandHandler(aBearer, aObserver, aRouter, aTimer, aPlayerInfoManager, aDevice);
+ CRcpIncomingCommandHandler* handler = new(ELeave)CRcpIncomingCommandHandler(aCommandInterface, aObserver, aRouter, aTimer, aPlayerInfoManager, aDevice);
CleanupStack::PushL(handler);
handler->ConstructL();
CleanupStack::Pop(handler);
@@ -78,7 +78,7 @@
@return A partially constructed CRcpIncomingCommandHandler.
@leave System wide error codes.
*/
-CRcpIncomingCommandHandler::CRcpIncomingCommandHandler(CRemConBearerAvrcp& aBearer,
+CRcpIncomingCommandHandler::CRcpIncomingCommandHandler(MRemConControlCommandInterface& aCommandInterface,
MRemConBearerObserver& aObserver,
CRcpRouter& aRouter,
CDeltaTimer& aTimer,
@@ -87,7 +87,7 @@
: iCommandQueue(_FOFF(CControlCommand, iHandlingLink))
, iInternalCommandQueue(_FOFF(CControlCommand, iHandlingLink))
, iFragmenter(NULL)
- , iBearer(aBearer)
+ , iCommandInterface(aCommandInterface)
, iObserver(aObserver)
, iRouter(aRouter)
, iTimer(aTimer)
@@ -121,7 +121,7 @@
CleanupStack::PopAndDestroy(&players);
- iPassthroughHelper = CPassthroughHelper::NewL(iRouter, iBearer, iTimer);
+ iPassthroughHelper = CPassthroughHelper::NewL(iRouter, iCommandInterface, iTimer);
}
/** Destructor.
@@ -130,6 +130,7 @@
{
LOG_FUNC
+ iCommandInterface.MrccciUnregisterForLocalAddressedClientUpdates();
iPlayerInfoManager.RemoveObserver( *this );
delete iFragmenter;
delete iPassthroughHelper;
@@ -207,7 +208,7 @@
{
LOG_FUNC
- TUint id = iBearer.MrcciNewTransactionId();
+ TUint id = iCommandInterface.MrcciNewTransactionId();
// If there's nothing beyond a header this is bobs. Dump it now.
if(aMessageInformation.Length() <= KAVCFrameHeaderLength)
@@ -508,11 +509,11 @@
// can go directly to client (unlike passthrough which may need to map 2 commands to 1 click
if (aCommand.Frame().Type() == AVC::ENotify)
{
- iBearer.MrccciNewNotifyCommand(aCommand, aCommand.ClientId());
+ iCommandInterface.MrccciNewNotifyCommand(aCommand, aCommand.ClientId());
}
else
{
- iBearer.MrcciNewCommand(aCommand, aCommand.ClientId());
+ iCommandInterface.MrcciNewCommand(aCommand, aCommand.ClientId());
}
}
}
@@ -522,7 +523,7 @@
LOG_FUNC
// Once we respond to this we've told the remote that we're using a particular player
- iAddressedMode = ETrue;
+ EnterAddressedMode();
// SetAddressedPlayer involves not just responding to this command but
// also rejecting a bunch of notifies and completing the addressed player
@@ -568,7 +569,7 @@
};
SendInternalResponse(aId, responseBuf);
- iBearer.MrccciSetAddressedClient(iClientId);
+ iCommandInterface.MrccciSetAddressedClient(iClientId);
responseBuf.Close();
}
@@ -662,7 +663,7 @@
LOG_FUNC
// Once we respond to this we've told the remote that we're using a particular player
- iAddressedMode = ETrue;
+ EnterAddressedMode();
RBuf8 responseBuf;
TRAPD(err, DoHandleRegisterAddressedPlayerNotificationL(responseBuf, aCommand));
@@ -720,7 +721,7 @@
// Although we haven't strictly told the remote which player we're using this is
// a 1.4 command, and implies use of a specific player so switch into addressed mode
- iAddressedMode = ETrue;
+ EnterAddressedMode();
RBuf8 responseBuf;
TUint16 uidCounter = 0;
@@ -823,6 +824,12 @@
aData.Close();
}
+void CRcpIncomingCommandHandler::EnterAddressedMode()
+ {
+ iAddressedMode = ETrue;
+ iCommandInterface.MrccciRegisterForLocalAddressedClientUpdates();
+ }
+
TBool CRcpIncomingCommandHandler::DuplicateNotify(TDblQue<CControlCommand>& aCommandQueue, const CControlCommand& aCommand) const
{
TUid interfaceUid = aCommand.RemConInterfaceUid();
--- a/bluetoothappprofiles/avrcp/remconbeareravrcp/src/avrcpoutgoingcommandhandler.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothappprofiles/avrcp/remconbeareravrcp/src/avrcpoutgoingcommandhandler.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -45,13 +45,13 @@
@return A fully constructed CRcpOutgoingCommandHandler.
@leave System wide error codes.
*/
-CRcpOutgoingCommandHandler* CRcpOutgoingCommandHandler::NewL(CRemConBearerAvrcp& aBearer,
+CRcpOutgoingCommandHandler* CRcpOutgoingCommandHandler::NewL(MRemConControlCommandInterface& aCommandInterface,
MRemConBearerObserver& aObserver,
CRcpRouter& aRouter,
CDeltaTimer& aTimer)
{
LOG_STATIC_FUNC
- CRcpOutgoingCommandHandler* handler = new(ELeave)CRcpOutgoingCommandHandler(aBearer, aObserver, aRouter, aTimer);
+ CRcpOutgoingCommandHandler* handler = new(ELeave)CRcpOutgoingCommandHandler(aCommandInterface, aObserver, aRouter, aTimer);
return handler;
}
@@ -64,12 +64,12 @@
@return A partially constructed CRcpIncomingCommandHandler.
@leave System wide error codes.
*/
-CRcpOutgoingCommandHandler::CRcpOutgoingCommandHandler(CRemConBearerAvrcp& aBearer,
+CRcpOutgoingCommandHandler::CRcpOutgoingCommandHandler(MRemConControlCommandInterface& aCommandInterface,
MRemConBearerObserver& aObserver,
CRcpRouter& aRouter,
CDeltaTimer& aTimer) : iCommandQueue(_FOFF(CControlCommand, iHandlingLink)),
iNotifyCommandQueue(_FOFF(CControlCommand, iHandlingLink)),
- iBearer(aBearer), iObserver(aObserver), iRouter(aRouter), iTimer(aTimer)
+ iCommandInterface(aCommandInterface), iObserver(aObserver), iRouter(aRouter), iTimer(aTimer)
{
LOG_FUNC
}
@@ -281,11 +281,11 @@
if ( aNotify )
{//This is a notify command
- iBearer.MrccciNewNotifyResponse(*aCommand);
+ iCommandInterface.MrccciNewNotifyResponse(*aCommand);
}
else
{
- iBearer.MrccciNewResponse(*aCommand);
+ iCommandInterface.MrccciNewResponse(*aCommand);
}
}
@@ -331,7 +331,7 @@
if(command)
{
command->SetNotifyVolumeChangeResult(command->Frame());
- iBearer.MrccciNewNotifyResponse(*command);
+ iCommandInterface.MrccciNewNotifyResponse(*command);
}
else
{
@@ -353,7 +353,7 @@
}
}
- iBearer.MrccciNewResponse(*command);
+ iCommandInterface.MrccciNewResponse(*command);
}
command->iHandlingLink.Deque();
@@ -578,7 +578,7 @@
aCommand.SetCoreButtonAction(ERemConCoreApiButtonRelease, ETrue);
}
- iBearer.MrccciNewResponse(aCommand);
+ iCommandInterface.MrccciNewResponse(aCommand);
}
}
}
--- a/bluetoothappprofiles/avrcp/remconbeareravrcp/src/avrcpremotedevice.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothappprofiles/avrcp/remconbeareravrcp/src/avrcpremotedevice.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -31,13 +31,13 @@
*/
CRcpRemoteDevice* CRcpRemoteDevice::NewL(const TBTDevAddr& aAddr,
CRcpRouter& aRouter,
- CRemConBearerAvrcp& aBearer,
+ MRemConControlCommandInterface& aCommandInterface,
MRemConBearerObserver& aObserver,
CDeltaTimer& aTimer,
CAvrcpPlayerInfoManager& aPlayerInfoManager)
{
LOG_STATIC_FUNC
- CRcpRemoteDevice* engine = new(ELeave) CRcpRemoteDevice(aAddr, aRouter, aBearer, aTimer);
+ CRcpRemoteDevice* engine = new(ELeave) CRcpRemoteDevice(aAddr, aRouter, aCommandInterface, aTimer);
CleanupStack::PushL(engine);
engine->ConstructL(aObserver, aPlayerInfoManager);
CleanupStack::Pop(engine);
@@ -56,9 +56,9 @@
*/
CRcpRemoteDevice::CRcpRemoteDevice(const TBTDevAddr& aAddr,
CRcpRouter& aRouter,
- CRemConBearerAvrcp& aBearer,
+ MRemConControlCommandInterface& aCommandInterface,
CDeltaTimer& aTimer) :
- iDevice(aAddr), iRouter(aRouter), iBearer(aBearer), iTimer(aTimer)
+ iDevice(aAddr), iRouter(aRouter), iCommandInterface(aCommandInterface), iTimer(aTimer)
{
LOG_FUNC
}
@@ -72,8 +72,8 @@
CAvrcpPlayerInfoManager& aPlayerInfoManager)
{
LOG_FUNC
- iIncoming = CRcpIncomingCommandHandler::NewL(iBearer, aObserver, iRouter, iTimer, aPlayerInfoManager, iDevice);
- iOutgoing = CRcpOutgoingCommandHandler::NewL(iBearer, aObserver, iRouter, iTimer);
+ iIncoming = CRcpIncomingCommandHandler::NewL(iCommandInterface, aObserver, iRouter, iTimer, aPlayerInfoManager, iDevice);
+ iOutgoing = CRcpOutgoingCommandHandler::NewL(iCommandInterface, aObserver, iRouter, iTimer);
}
/** Destructor.
--- a/bluetoothappprofiles/avrcp/remconbeareravrcp/src/avrcpsdputils.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothappprofiles/avrcp/remconbeareravrcp/src/avrcpsdputils.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2008-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"
@@ -29,18 +29,14 @@
if(aProfileVersion == AvrcpSdp::KAvrcpProfileVersion13)
{
serviceClassUuids->StartListL()
- ->BuildDESL()->StartListL()
->BuildUUIDL(TUUID(TUint16(KAVRemoteControlUUID)))
- ->EndListL()
->EndListL();
}
else
{
serviceClassUuids->StartListL()
- ->BuildDESL()->StartListL()
->BuildUUIDL(TUUID(TUint16(KAVRemoteControlUUID)))
->BuildUUIDL(TUUID(TUint16(KAVRemoteControlControllerUUID)))
- ->EndListL()
->EndListL();
}
--- a/bluetoothappprofiles/avrcp/remconbeareravrcp/src/passthroughhelper.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothappprofiles/avrcp/remconbeareravrcp/src/passthroughhelper.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -21,9 +21,9 @@
#include "controlbearer.h"
-CPassthroughHelper* CPassthroughHelper::NewL(CRcpRouter& aRouter, CRemConBearerAvrcp& aBearer, CDeltaTimer& aTimer)
+CPassthroughHelper* CPassthroughHelper::NewL(CRcpRouter& aRouter, MRemConControlCommandInterface& aCommandInterface, CDeltaTimer& aTimer)
{
- CPassthroughHelper* helper = new(ELeave)CPassthroughHelper(aRouter, aBearer, aTimer);
+ CPassthroughHelper* helper = new(ELeave)CPassthroughHelper(aRouter, aCommandInterface, aTimer);
CleanupStack::PushL(helper);
helper->ConstructL();
CleanupStack::Pop(helper);
@@ -34,9 +34,9 @@
{
}
-CPassthroughHelper::CPassthroughHelper(CRcpRouter& aRouter, CRemConBearerAvrcp& aBearer, CDeltaTimer& aTimer)
+CPassthroughHelper::CPassthroughHelper(CRcpRouter& aRouter, MRemConControlCommandInterface& aCommandInterface, CDeltaTimer& aTimer)
: iRouter(aRouter)
- , iBearer(aBearer)
+ , iCommandInterface(aCommandInterface)
, iTimer(aTimer)
{
}
@@ -164,7 +164,7 @@
{
iPreviousPassthrough->SetClick(EFalse);
iPreviousPassthrough->SetCoreButtonAction(ERemConCoreApiButtonPress, ETrue);
- iBearer.MrcciNewCommand(*iPreviousPassthrough, iPreviousPassthrough->ClientId());
+ iCommandInterface.MrcciNewCommand(*iPreviousPassthrough, iPreviousPassthrough->ClientId());
}
StartReleaseTimer(*iPreviousPassthrough);
}
@@ -174,7 +174,7 @@
// to RemCon then start waiting for click.
iPreviousPassthrough->CancelTimer(iTimer);
iPreviousPassthrough->SetCoreButtonAction(ERemConCoreApiButtonClick, ETrue);
- iBearer.MrcciNewCommand(*iPreviousPassthrough, iPreviousPassthrough->ClientId());
+ iCommandInterface.MrcciNewCommand(*iPreviousPassthrough, iPreviousPassthrough->ClientId());
HandledCommand(*iPreviousPassthrough);
@@ -214,7 +214,7 @@
// Cancel hold timer and send the previous command as a click.
iPreviousPassthrough->CancelTimer(iTimer);
iPreviousPassthrough->SetCoreButtonAction(ERemConCoreApiButtonClick, ETrue);
- iBearer.MrcciNewCommand(*iPreviousPassthrough, iPreviousPassthrough->ClientId());
+ iCommandInterface.MrcciNewCommand(*iPreviousPassthrough, iPreviousPassthrough->ClientId());
HandledCommand(*iPreviousPassthrough);
}
@@ -228,7 +228,7 @@
{
aCommand.SetCoreButtonAction(ERemConCoreApiButtonRelease, ETrue);
}
- iBearer.MrcciNewCommand(aCommand, aCommand.ClientId());
+ iCommandInterface.MrcciNewCommand(aCommand, aCommand.ClientId());
aCommand.DecrementUsers();
}
}
@@ -267,7 +267,7 @@
}
else
{
- iBearer.MrcciNewCommand(aCommand, aCommand.ClientId());
+ iCommandInterface.MrcciNewCommand(aCommand, aCommand.ClientId());
StartReleaseTimer(aCommand);
}
}
@@ -303,7 +303,7 @@
TRAPD(err, aCommand.ReSetCoreButtonActionL(ERemConCoreApiButtonRelease, ETrue));
if (err == KErrNone)
{
- iBearer.MrcciNewCommand(aCommand, aCommand.ClientId());
+ iCommandInterface.MrcciNewCommand(aCommand, aCommand.ClientId());
}
else
{
@@ -386,7 +386,7 @@
aCommand.CancelTimer(iTimer);
aCommand.SetClick(EFalse);
aCommand.SetCoreButtonAction(ERemConCoreApiButtonPress, ETrue);
- iBearer.MrcciNewCommand(aCommand, aCommand.ClientId());
+ iCommandInterface.MrcciNewCommand(aCommand, aCommand.ClientId());
StartReleaseTimer(aCommand);
}
--- a/bluetoothappprofiles/avrcp/remconbeareravrcp/src/remconbeareravrcp.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothappprofiles/avrcp/remconbeareravrcp/src/remconbeareravrcp.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -870,6 +870,54 @@
Observer().SetRemoteAddressedClient(TUid::Uid(KRemConBearerAvrcpImplementationUid), aClientId);
}
+void CRemConBearerAvrcp::MrccciRegisterForLocalAddressedClientUpdates()
+ {
+ // Addressed player observers are registered with RemCon on a per-bearer basis
+ // so we aggregate interest from remote here
+ iRemotesInterestedInLocalAddressedClient++;
+ if(iRemotesInterestedInLocalAddressedClient == 1)
+ {
+ // Weren't any registered before, tell RemCon we care
+ Observer().RegisterLocalAddressedClientObserver(TUid::Uid(KRemConBearerAvrcpImplementationUid));
+ }
+
+#ifdef __DEBUG
+ TInt numRemotes = 0;
+ CRcpRemoteDevice* remote = NULL;
+
+ TDblQueIter<CRcpRemoteDevice> iter(iRemotes);
+ while (iter++)
+ {
+ numRemotes++;
+ }
+ __ASSERT_DEBUG(iRemotesInterestedInLocalAddressedClient <= numRemotes, AVRCP_PANIC(ETooManyRemotesRegisterForLocalAddressedPlayerUpdates));
+#endif
+ }
+
+void CRemConBearerAvrcp::MrccciUnregisterForLocalAddressedClientUpdates()
+ {
+#ifdef __DEBUG
+ TInt numRemotes = 0;
+ CRcpRemoteDevice* remote = NULL;
+
+ TDblQueIter<CRcpRemoteDevice> iter(iRemotes);
+ while (iter++)
+ {
+ numRemotes++;
+ }
+ __ASSERT_DEBUG(iRemotesInterestedInLocalAddressedClient <= numRemotes, AVRCP_PANIC(ETooManyRemotesRegisterForLocalAddressedPlayerUpdates));
+ __ASSERT_DEBUG(iRemotesInterestedInLocalAddressedClient > 0, AVRCP_PANIC(ETooFewRemotesRegisterForLocalAddressedPlayerUpdates));
+#endif
+
+ iRemotesInterestedInLocalAddressedClient--;
+ if(iRemotesInterestedInLocalAddressedClient == 0)
+ {
+ // No-one left who cares. Tell RemCon not to bother updating
+ // us anymore.
+ Observer().UnregisterLocalAddressedClientObserver(TUid::Uid(KRemConBearerAvrcpImplementationUid));
+ }
+ }
+
/** Called from outgoing handlers to notify that a response
for a notify command is ready for RemCon.
Binary file bluetoothengine/bteng/conf/CI_bteng.confml has changed
Binary file bluetoothengine/bteng/conf/bteng.confml has changed
--- a/bluetoothengine/bteng/group/bld.inf Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/bteng/group/bld.inf Wed Jun 23 18:23:52 2010 +0300
@@ -37,6 +37,10 @@
../conf/bteng_10204DAB.crml MW_LAYER_CRML(bteng_10204DAB.crml)
../conf/bteng_10204DAC.crml MW_LAYER_CRML(bteng_10204DAC.crml)
+/*remove the following exportation, when SCB CR is approved*/
+../conf/CI_bteng.confml MW_LAYER_CONFML(CI_bteng.confml)
+
+
../data/btrfs.txt z:/resource/btrfs.txt
--- a/bluetoothengine/bthid/bthidserver/src/bthidserver.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/bthid/bthidserver/src/bthidserver.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -101,7 +101,7 @@
delete iHidSdpClient;
- RProperty::Delete( KPSUidBthidSrv, KBTMouseCursorState );
+
}
CBTHidServer* CBTHidServer::NewL()
@@ -210,13 +210,8 @@
}
TRACE_INFO(_L("[BTHID]\tCBTHidServer::ConstructL(): Starting the server"));
-
- User::LeaveIfError( RProperty::Define( KPSUidBthidSrv,
- KBTMouseCursorState,
- RProperty::EInt,
- KBTHIDPSKeyReadPolicy,
- KBTHIDPSKeyWritePolicy) );
-
+
+
StartL(KBTHidSrvName);
iActiveState = EFalse;
--- a/bluetoothengine/bthid/common/inc/bthidPsKey.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/bthid/common/inc/bthidPsKey.h Wed Jun 23 18:23:52 2010 +0300
@@ -20,7 +20,9 @@
#ifndef BTHIDPSKEY_H_
#define BTHIDPSKEY_H_
-const TUid KPSUidBthidSrv = {0x2001E301};
+
+
+const TUid KPSUidBthidSrv = { 0x2001FE5C };
const TUint KBTMouseCursorState = 0x00000001;
--- a/bluetoothengine/bthid/keyboard/group/keyboard.mmp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/bthid/keyboard/group/keyboard.mmp Wed Jun 23 18:23:52 2010 +0300
@@ -22,7 +22,7 @@
TARGETTYPE PLUGIN
UID ECOM_UID KEYBOARD_UID
-CAPABILITY CAP_APPLICATION
+CAPABILITY CAP_APPLICATION CommDD ProtServ
VENDORID VID_DEFAULT
USERINCLUDE ../inc
--- a/bluetoothengine/bthid/keyboard/inc/keyboard.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/bthid/keyboard/inc/keyboard.h Wed Jun 23 18:23:52 2010 +0300
@@ -27,9 +27,6 @@
#include "hidkeys.h"
#include "layoutmgr.h"
#include "timeoutnotifier.h"
-#include <e32msgqueue.h>
-#include <e32cmn.h>
-#include "pointmsgqueue.h"
#include "bthidsettings.h"
class CField;
@@ -67,16 +64,6 @@
KNumInputFieldTypes
};
- // The types of keyboard input report fields that we handle:
- enum TMouseFieldType
- {
- EMouseButtons = 0,
- EMouseXY = 1,
- EMouseWheel = 2,
- EMouseMediaKeys = 3,
- EMousePowerKeys = 4,
- KMouseInputFieldTypes
- };
public:
// Constructors and destructor
/*!
@@ -210,14 +197,6 @@
// Handles the states of the modifier keys
void UpdateModifiers(TInt aFieldIndex, const TDesC8& aReport);
- // Handles the states of the XY (mouse up, down, left, right)
- void UpdateXY(TInt aFieldIndex, const TDesC8& aReport);
-
- // Handles the states of the Buttons (left & right button)
- void UpdateButtons(TInt aFieldIndex, const TDesC8& aReport);
-
- // Handles the states of the wheel
- void UpdateWheel(TInt aFieldIndex, const TDesC8& aReport);
// Handle key presses
void ProcessKeys(TInt aFieldIndex, const TDesC8& aReport);
@@ -302,17 +281,10 @@
// ----------------------------------------
static TInt ResetArrayToSize(RArray<TInt>& aArray, TInt aSize);
- void MoveCursor(const TPoint& aPoint);
- TInt PostPointer(const TPoint& aPoint);
- TInt SendButtonEvent(TBool aButtonDown);
TBool IsDigitKey(TInt aScanCode);
TBool IsSpecialHandleKey(TInt aUniCode);
- void LaunchApplicationL(const TDesC& aName);
-
- //Redraw cursor
- void CursorRedraw();
private:
TKeyboardDriverState iDriverState;
@@ -333,9 +305,6 @@
// various types of key:
const CField* iField[KNumInputFieldTypes];
- // Pointers to the fields in the report descriptor containing the
- // various types of key:
- const CField* iMouseField[KMouseInputFieldTypes];
// Pointer to the field in the report descriptor containing the LEDs:
const CField* iLedField;
@@ -371,13 +340,6 @@
// This timer stops key repeating after defined time to prevent endless key repeats in error cases. Fix for EMKD-7FBB9H
CTimeOutTimer* iRepeatEndTimer;
-
- TBool iComboDevice;
-
- RMsgQueue<TPointBuffer> iPointBufQueue;
- TPointBuffer iPointerBuffer;
- TBool iButtonDown;
- TBool iButton2Down;
};
// ----------------------------------------------------------------------
--- a/bluetoothengine/bthid/keyboard/src/keyboard.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/bthid/keyboard/src/keyboard.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -23,8 +23,6 @@
#include <eiksvdef.h>
#include <apgcli.h>
#include <apgtask.h>
-#include <apacmdln.h>
-#include <e32property.h>
#include "hidtranslate.h"
#include "finder.h"
@@ -52,7 +50,6 @@
const TInt KKeyRepeatDelay = 500000;
const TInt KKeyRepeatInterval = 75000;
-_LIT(KAppName, "PaintCursor.exe");
//----------------------------------------------------------------------------
// CHidKeyboardDriver::CHidKeyboardDriver
//----------------------------------------------------------------------------
@@ -112,8 +109,6 @@
iPhoneAppId = PhoneAppId();
iIdleAppId = IdleAppId();
- iComboDevice = EFalse;
-
iSettings = CBtHidSettings::NewL();
}
@@ -136,58 +131,10 @@
iKeys[i].Reset();
}
- iPointBufQueue.Close();
-
- if (iComboDevice)
- {
- RProperty::Set( KPSUidBthidSrv, KBTMouseCursorState, ECursorNotInitialized );
- }
-
if (iSettings)
delete iSettings;
}
-void CHidKeyboardDriver::MoveCursor(const TPoint& aPoint)
- {
- DBG(RDebug::Print(
- _L("CHidKeyboard::MoveCursor")));
-
- PostPointer(aPoint);
- }
-// ---------------------------------------------------------------------------
-// CHidMouseDriver::PostPointer
-// Save the event to the buffer
-// ---------------------------------------------------------------------------
-//
-TInt CHidKeyboardDriver::PostPointer(const TPoint& aPoint)
- {
- DBG(RDebug::Print(_L("CHidKeyboard::PostPointer")));
- iPointerBuffer.iPoint[iPointerBuffer.iNum] = aPoint;
- iPointerBuffer.iType[iPointerBuffer.iNum] = KBufferPlainPointer;
- iPointerBuffer.iNum++;
- TInt ret = KErrNone;
-
- if (iPointerBuffer.iNum > KPMaxEvent)
- {
- ret = iPointBufQueue.Send(iPointerBuffer);
- iPointerBuffer.iNum = 0;
- }
- return ret;
- }
-
-TInt CHidKeyboardDriver::SendButtonEvent(TBool aButtonDown)
- {
- DBG(RDebug::Print(
- _L("CHidKeyboard::SendButtonEvent")));
- iPointerBuffer.iPoint[iPointerBuffer.iNum] = TPoint(0, 0);
- iPointerBuffer.iType[iPointerBuffer.iNum] = aButtonDown
- ? KBufferPenDown
- : KBufferPenUp;
- iPointerBuffer.iNum++;
- TInt ret = iPointBufQueue.Send(iPointerBuffer);
- iPointerBuffer.iNum = 0;
- return ret;
- }
//----------------------------------------------------------------------------
// CHidKeyboardDriver:::StartL
//----------------------------------------------------------------------------
@@ -233,25 +180,10 @@
//Used the layoutID from CenRep
iLayoutMgr.SetLayout(iLastSelectedLayout);
}
- TInt err = iPointBufQueue.OpenGlobal(KMsgBTMouseBufferQueue);
- if (err == KErrNotFound)
- {
- User::LeaveIfError(iPointBufQueue.CreateGlobal(KMsgBTMouseBufferQueue, KPointQueueLen));
- }
- else
- {
- User::LeaveIfError( err );
- }
// Ready to process keyboard events:
iDriverState = EInitialised;
- if (iComboDevice)
- {
- LaunchApplicationL(KAppName);
- RProperty::Set( KPSUidBthidSrv, KBTMouseCursorState, ECursorShow );
- }
-
}
//----------------------------------------------------------------------------
@@ -286,41 +218,6 @@
{
iDriverState = EDisabled;
CancelAllKeys();
- if (iComboDevice)
- {
- RProperty::Set( KPSUidBthidSrv, KBTMouseCursorState, ECursorNotInitialized );
- }
- }
-
-//----------------------------------------------------------------------------
-// CHidMouseDriver::LaunchApplicationL
-//----------------------------------------------------------------------------
-//
-void CHidKeyboardDriver::LaunchApplicationL(const TDesC& aName)
- {
- //Check if application is already running in the background
- TApaTaskList tasks(iWsSession);
- TApaTask task = tasks.FindApp(aName);
- if (task.Exists())
- {
- // Application is active, so just bring to foreground
- }
- else
- {
- // If application is not running, then create a new one
- CApaCommandLine* cmd = CApaCommandLine::NewLC();
- cmd->SetExecutableNameL(aName);
- cmd->SetCommandL(EApaCommandBackground); // EApaCommandRun
-
- RApaLsSession arcSession;
- //connect to AppArc server
- User::LeaveIfError(arcSession.Connect());
- CleanupClosePushL(arcSession);
- User::LeaveIfError(arcSession.StartApp(*cmd));
- arcSession.Close();
- CleanupStack::PopAndDestroy(2);
- }
-
}
// ----------------------------------------------------------------------
@@ -339,21 +236,6 @@
case CHidTransport::EHidChannelInt:
if (EInitialised == iDriverState)
{
- if (iComboDevice)
- {
- TInt mouseStatus;
- TInt err = RProperty::Get( KPSUidBthidSrv, KBTMouseCursorState, mouseStatus );
- if ( !err &&
- ((static_cast<THidMouseCursorState>(mouseStatus) == ECursorRedraw)||
- (static_cast<THidMouseCursorState>(mouseStatus) == ECursorReset)) )
- {
- err = RProperty::Set( KPSUidBthidSrv, KBTMouseCursorState, ECursorShow );
- DBG(RDebug::Print(
- _L("[BTHID]\tCHidKeyboardDriver::DataIn() ECursorRedraw ||ECursorReset ")) );
- }
-
- CursorRedraw();
- }
InterruptData(aPayload);
}
break;
@@ -386,127 +268,6 @@
Stop();
}
-void CHidKeyboardDriver::UpdateXY(TInt aFieldIndex, const TDesC8& aReport)
- {
- // DBG(RDebug::Print(_L("[HID]\tCHidMouseDriver::UpdateModifiers()")));
-
- // Translate the HID usage values into a boot protocol style
- // modifier bitmask:
- //
- TReportTranslator report(aReport, iMouseField[aFieldIndex]);
-
- TInt Xvalue = 0;
- TInt Yvalue = 0;
-
- TInt errX = report.GetValue(Xvalue, EGenericDesktopUsageX);
- TInt errY = report.GetValue(Yvalue, EGenericDesktopUsageY);
-
- DBG(RDebug::Print(_L("[HID]\tCHidMouseDriver::UpdateXY (%d,%d)"), Xvalue, Yvalue));
- if ((Xvalue != 0) || (Yvalue != 0))
- {
- MoveCursor(TPoint(Xvalue, Yvalue));
- }
- }
-
-void CHidKeyboardDriver::UpdateWheel(TInt aFieldIndex, const TDesC8& aReport)
- {
- TReportTranslator report(aReport, iMouseField[aFieldIndex]);
-
- TInt Yvalue = 0;
-
- TInt errY = report.GetValue(Yvalue, EGenericDesktopUsageWheel);
- DBG(RDebug::Print(_L("[HID]\tCHidMouseDriver::UpdateWheel (%d)"), Yvalue));
- TInt absValue(Abs(Yvalue));
- if ((errY == KErrNone) && (absValue >= 1))
- {
- TRawEvent rawEvent;
- for (TInt ii = 0; ii < absValue; ii++)
- {
- rawEvent.Set(TRawEvent::EKeyDown,
- (Yvalue > 0) ? EStdKeyUpArrow : EStdKeyDownArrow);
- UserSvr::AddEvent(rawEvent);
- rawEvent.Set(TRawEvent::EKeyUp,
- (Yvalue > 0) ? EStdKeyUpArrow : EStdKeyDownArrow);
- UserSvr::AddEvent(rawEvent);
- }
- }
- DBG(RDebug::Print(_L("[HID]\t new iModifiers = %02x"), iModifiers));
- }
-
-void CHidKeyboardDriver::UpdateButtons(TInt aFieldIndex,
- const TDesC8& aReport)
- {
- DBG(RDebug::Print(_L("[HID]\tCHidMouseDriver::UpdateButtons()")));
- // Translate the HID usage values into a boot protocol style
- // modifier bitmask:
- //
- const TInt KButton1 = 1;
- const TInt KButton2 = 2;
- const TInt KButton3 = 3;
-
- TBool buttonPressed(EFalse);
-
- DBG(RDebug::Print(_L("[HID]\tCHidMouseDriver::UpdateButtons() %d, %d, %d"),
- iMouseField[aFieldIndex]->UsagePage(),
- iMouseField[aFieldIndex]->UsageMin(),
- iMouseField[aFieldIndex]->UsageMax()));
- (void) aFieldIndex;
- // Hack but works
- // We dont come here if the report is wrong?
- TInt buttonByte = aReport[1];
- if (KButton1 == buttonByte)
- {
- DBG(RDebug::Print(_L("[HID]\tCHidMouseDriver::UpdateButtons() Button1")));
- buttonPressed = ETrue;
- }
-
- if (KButton2 == buttonByte)
- {
- DBG(RDebug::Print(_L("[HID]\tCHidMouseDriver::UpdateButtons() Button2")));
- if (!iButton2Down)
- {
- iButton2Down = ETrue;
- TRawEvent rawEvent;
- rawEvent.Set(TRawEvent::EKeyDown, EStdKeyApplication0);
- CursorRedraw();
- UserSvr::AddEvent(rawEvent);
- }
- }
- else
- {
- if (iButton2Down)
- {
- iButton2Down = EFalse;
- TRawEvent rawEvent;
- rawEvent.Set(TRawEvent::EKeyUp, EStdKeyApplication0);
- CursorRedraw();
- UserSvr::AddEvent(rawEvent);
- }
- }
-
- if (KButton3 == buttonByte)
- {
- DBG(RDebug::Print(_L("[HID]\tCHidMouseDriver::UpdateButtons() Button3")));
- buttonPressed = ETrue;
- }
-
- if (buttonPressed)
- {
- if (!iButtonDown)
- {
- iButtonDown = ETrue;
- SendButtonEvent(ETrue);//Send Mouse Button Down
- }
- }
- else
- {
- if (iButtonDown)
- {
- iButtonDown = EFalse;
- SendButtonEvent(EFalse); //Send Mouse Button Up
- }
- }
- }
//----------------------------------------------------------------------------
// CHidKeyboardDriver::InterruptData
//----------------------------------------------------------------------------
@@ -531,30 +292,6 @@
ii, nextByte));
}
#endif
- TBool mouseEvent(EFalse);
- if (iMouseField[EMouseXY] && iMouseField[EMouseXY]->IsInReport(firstByte))
- {
- UpdateXY(EMouseXY, aPayload);
- mouseEvent = ETrue;
- }
-
- if (iMouseField[EMouseButtons] && iMouseField[EMouseButtons]->IsInReport(
- firstByte))
- {
- UpdateButtons(EMouseButtons, aPayload);
- mouseEvent = ETrue;
- }
- if (iMouseField[EMouseXY] && iMouseField[EMouseXY]->IsInReport(firstByte))
- {
- UpdateWheel(EMouseWheel, aPayload);
- mouseEvent = ETrue;
- }
- DBG(RDebug::Print(_L("[HID]\tCHidKeyboardDriver::InterruptData() mouseevent %d"),
- mouseEvent));
- if (mouseEvent)
- {
- return;
- }
// First check for any rollover errors:
//
TInt i;
@@ -1523,18 +1260,6 @@
{
valid = KErrNone;
}
-
- TMouseFinder mousefinder;
- search.SearchL(aReportRoot, &mousefinder);
- iMouseField[EMouseButtons] = mousefinder.ButtonsField();
- iMouseField[EMouseXY] = mousefinder.XYField();
- iMouseField[EMouseWheel] = mousefinder.WheelField();
-
- if ((iMouseField[EMouseButtons] != 0) && (iMouseField[EMouseXY] != 0))
- {
- iComboDevice = ETrue;
- }
-
TRACE_INFO( (
_L("CHidKeyboard::CanHandleReport() returning %d"), valid));
@@ -1937,18 +1662,5 @@
CancelAllKeys();
}
-void CHidKeyboardDriver::CursorRedraw()
- {
- TInt mouseStatus;
-
- TInt err = RProperty::Get( KPSUidBthidSrv, KBTMouseCursorState, mouseStatus );
- if ( !err )
- {
- err = RProperty::Set( KPSUidBthidSrv, KBTMouseCursorState, ECursorRedraw );
- DBG(RDebug::Print(
- _L("[BTHID]\tCHidKeyboardDriver::CursorRedraw() X->ECursorRedraw") ) );
- }
- }
-
// ----------------------------------------------------------------------
// End of file
--- a/bluetoothengine/bthid/mouse/PaintCursor/src/paintcursorappview.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/bthid/mouse/PaintCursor/src/paintcursorappview.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -16,11 +16,20 @@
*/
#include <coecntrl.h>
+#include <e32property.h>
+#include <bthidPsKey.h>
#include "paintcursorappview.h"
#include "pointmsgqueue.h"
#include "debug.h"
+/** PubSub key read and write policies */
+_LIT_SECURITY_POLICY_C2( KBTHIDPSKeyReadPolicy,
+ ECapabilityLocalServices, ECapabilityReadDeviceData );
+_LIT_SECURITY_POLICY_C2( KBTHIDPSKeyWritePolicy,
+ ECapabilityLocalServices, ECapabilityWriteDeviceData );
+
+
CPaintCursorAppView* CPaintCursorAppView::NewL(const TRect& aRect)
{
CPaintCursorAppView* self = CPaintCursorAppView::NewLC(aRect);
@@ -38,6 +47,13 @@
void CPaintCursorAppView::ConstructL(const TRect& aRect)
{
+
+ User::LeaveIfError( RProperty::Define( KPSUidBthidSrv,
+ KBTMouseCursorState,
+ RProperty::EInt,
+ KBTHIDPSKeyReadPolicy,
+ KBTHIDPSKeyWritePolicy) );
+
// Create a window for this application view
CreateWindowL();
@@ -110,6 +126,8 @@
// Close the animation server
iMouseCursorDll.Close();
+
+ RProperty::Delete( KPSUidBthidSrv, KBTMouseCursorState );
}
void CPaintCursorAppView::SizeChanged()
--- a/bluetoothengine/bthid/mouse/Sesame_client/src/clientimagecommander.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/bthid/mouse/Sesame_client/src/clientimagecommander.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -27,6 +27,7 @@
#include <coecntrl.h>
#include <w32std.h>
#include <BTMouseBitMaps.mbg>
+#include <e32svr.h>
#include "clientimagecommander.h"
#ifndef DBG
--- a/bluetoothengine/bthid/mouse/hidmousedriver/group/mouse.mmp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/bthid/mouse/hidmousedriver/group/mouse.mmp Wed Jun 23 18:23:52 2010 +0300
@@ -23,7 +23,7 @@
TARGETTYPE PLUGIN
UID ECOM_UID MOUSE_UID
-CAPABILITY CAP_APPLICATION
+CAPABILITY CAP_APPLICATION CommDD ProtServ
VENDORID VID_DEFAULT
--- a/bluetoothengine/bthid/mouse/hidmousedriver/inc/mouse.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/bthid/mouse/hidmousedriver/inc/mouse.h Wed Jun 23 18:23:52 2010 +0300
@@ -176,7 +176,8 @@
TInt SendButtonEvent(TBool aButtonDown);
void LaunchApplicationL(const TDesC& aName);
- //void LaunchApplicationL(TInt aAppUid);
+
+ TBool IsAlreadyRunning();
private:
// The Generic HID layer
--- a/bluetoothengine/bthid/mouse/hidmousedriver/src/mouse.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/bthid/mouse/hidmousedriver/src/mouse.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -183,10 +183,7 @@
void CHidMouseDriver::LaunchApplicationL(const TDesC& aName)
{
//Check if application is already running in the background
- TApaTaskList tasks( iWsSession );
- TApaTask task = tasks.FindApp( aName );
-
- if ( task.Exists() )
+ if (IsAlreadyRunning())
{
// Application is active, so just bring to foreground
}
@@ -208,6 +205,32 @@
CleanupStack::PopAndDestroy(2);
}
}
+
+TBool CHidMouseDriver::IsAlreadyRunning()
+ {
+ TFindProcess processFinder(_L("*[2001fe5c]*")); //search by paintcursor.exe UID3
+
+ TBool found = EFalse;
+ TFullName result;
+ if (processFinder.Next(result) == KErrNone)
+ {
+ DBG(RDebug::Print(_L("[BTHID] CHidMouseDriver::IsAlreadyRunning - process found Inside while")) );
+ found = ETrue;
+ }
+
+ if (found)
+ {
+ DBG(RDebug::Print(_L("[BTHID] CHidMouseDriver::IsAlreadyRunning - Process found ")) );
+ }
+ else
+ {
+ DBG(RDebug::Print(_L("[BTHID] CHidMouseDriver::IsAlreadyRunning - Process was never found")) );
+ }
+
+ return found;
+}
+
+
// ----------------------------------------------------------------------
// CHidDriver mandatory functions:
@@ -231,6 +254,7 @@
_L("[BTHID]\tCHidMouseDriver::DataIn() ECursorRedraw ||ECursorReset ")) );
}
+ LaunchApplicationL(KAppName);
CursorRedraw();
--- a/bluetoothengine/btnotif/btdevicedialogplugin/btdevicedialogplugin.pro Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/btdevicedialogplugin.pro Wed Jun 23 18:23:52 2010 +0300
@@ -17,7 +17,7 @@
TEMPLATE = lib
TARGET = btdevicedialogplugin
CONFIG += hb plugin
-INCLUDEPATH += . ../inc
+INCLUDEPATH += . ../inc ../../btui/inc
DEPENDPATH += .
DESTDIR = $${HB_BUILD_DIR}/plugins/devicedialogs
@@ -33,7 +33,9 @@
inc/btdevicesearchdialogwidget.h \
inc/btmoredevicesdialogwidget.h \
inc/btsenddialogwidget.h \
- inc/btdevicedialogplugintrace.h
+ inc/btdevicedialogplugintrace.h \
+ inc/btdevicedialogrecvquerywidget.h \
+ inc/btrecvprgrsdialogwidget.h
SOURCES += src/btdevicedialogplugin.cpp \
@@ -42,7 +44,9 @@
src/btdevicedialognotifwidget.cpp \
src/btdevicesearchdialogwidget.cpp \
src/btmoredevicesdialogwidget.cpp \
- src/btsenddialogwidget.cpp
+ src/btsenddialogwidget.cpp \
+ src/btdevicedialogrecvquerywidget.cpp \
+ src/btrecvprgrsdialogwidget.cpp
RESOURCES += btdevicedialogplugin.qrc
@@ -51,6 +55,9 @@
TARGET.EPOCALLOWDLLDATA = 1
TARGET.CAPABILITY = CAP_GENERAL_DLL
TARGET.UID3 = 0x2002E6DF
+
+ LIBS += -lbtdevice
+
hblib.sources = Hb.dll
hblib.path = \sys\bin
hblib.depends = "(0xEEF9EA38), 1, 0, 0, {\"Hb\"}"
--- a/bluetoothengine/btnotif/btdevicedialogplugin/btdevicedialogplugin.qrc Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/btdevicedialogplugin.qrc Wed Jun 23 18:23:52 2010 +0300
@@ -4,6 +4,10 @@
<file>docml/bt-more-devices-dialog.docml</file>
<file>docml/bt-send-dialog.docml</file>
<file>icons/qgn_prop_sml_bt.svg</file>
- <file>icons/qtg_large_bluetooth.svg</file>
+ <file>icons/qtg_large_bluetooth.svg</file>
+ <file>docml/bt-receive-auth-dialog.docml</file>
+ <file>docml/bt-recv-progress-dialog.docml</file>
+ <file>btdialogs_en_GB.qm</file>
+ <file>btviews_en_GB.qm</file>
</qresource>
</RCC>
Binary file bluetoothengine/btnotif/btdevicedialogplugin/btdialogs_en_GB.qm has changed
Binary file bluetoothengine/btnotif/btdevicedialogplugin/btviews_en_GB.qm has changed
--- a/bluetoothengine/btnotif/btdevicedialogplugin/docml/bt-device-search-dialog.docml Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/docml/bt-device-search-dialog.docml Wed Jun 23 18:23:52 2010 +0300
@@ -1,19 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="1.0">
- <widget name="dialog" type="HbDialog">
+<hbdocument version="1.1">
+ <object name="viewaction" type="HbAction">
+ <string locid="txt_common_button_show" name="text"/>
+ </object>
+ <object name="stopretryaction" type="HbAction">
+ <string locid="txt_common_button_stop" name="text"/>
+ </object>
+ <widget name="searchdialog" type="HbDialog">
+ <rect height="72.07463un" name="geometry" width="49.73134un" x="1.73134un" y="11.64179un"/>
<widget name="heading" role="HbDialog:headingWidget" type="HbLabel">
<enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+ <string locid="txt_bt_subhead_bluetooth_found_devices" name="plainText"/>
</widget>
<widget name="container" role="HbDialog:contentWidget" type="HbWidget">
<widget name="container_1" type="HbWidget">
<widget name="searchDoneLabel" type="HbLabel">
<enums name="alignment" value="AlignVCenter|AlignHCenter"/>
<sizehint height="3.8806un" type="PREFERRED" width="26.86567un"/>
- <string name="plainText" value="Search Done"/>
+ <string locid="txt_bt_subhead_search_done" name="plainText"/>
</widget>
<widget name="searchLabel" type="HbLabel">
<sizehint height="3.8806un" type="PREFERRED" width="18.95522un"/>
- <string name="plainText" value="Searching..."/>
+ <string locid="txt_bt_subhead_searching" name="plainText"/>
</widget>
<widget name="iconLabel" type="HbLabel">
<sizehint height="3.8806un" type="PREFERRED" width="3.43284un"/>
@@ -31,32 +39,18 @@
</widget>
<widget name="listView" type="HbListView">
<widget name="listItemPrototype" role="HbAbstractView:prototype" type="HbListViewItem"/>
+ <enums name="verticalScrollBarPolicy" value="ScrollBarAsNeeded"/>
<sizehint height="47.7612un" type="PREFERRED" width="35.8209un"/>
- <enums name="verticalScrollBarPolicy" value="ScrollBarAsNeeded"/>
- </widget>
- <widget name="container_3" type="HbWidget">
- <widget name="viewby" type="HbPushButton">
- <string name="text" value="View"/>
- </widget>
- <widget name="stop" type="HbPushButton">
- <string name="text" value="Stop"/>
- </widget>
- <real name="z" value="0"/>
- <sizehint height="9.85821un" type="PREFERRED" width="23.8806un"/>
- <sizehint height="8.85821un" type="MINIMUM"/>
- <layout orientation="Horizontal" type="linear">
- <linearitem itemname="viewby"/>
- <linearitem itemname="stop"/>
- </layout>
</widget>
<layout type="grid">
+ <griditem column="0" itemname="container_1" row="0"/>
<griditem column="0" itemname="listView" row="1"/>
- <griditem column="0" itemname="container_1" row="0"/>
- <griditem column="0" itemname="container_3" row="2"/>
</layout>
</widget>
+ <ref object="stopretryaction" role="HbWidget:addAction"/>
+ <ref object="viewaction" role="HbWidget:addAction"/>
</widget>
- <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
+ <metadata activeUIState="Common ui state" display="NHD-3.2-inch_portrait" unit="un">
<uistate name="Common ui state" sections="#common"/>
<dummydata objectName="listView" section="#common" value="empty_dummydata_template"/>
</metadata>
--- a/bluetoothengine/btnotif/btdevicedialogplugin/docml/bt-more-devices-dialog.docml Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/docml/bt-more-devices-dialog.docml Wed Jun 23 18:23:52 2010 +0300
@@ -1,45 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="1.0">
- <widget name="dialog" type="HbDialog">
- <widget name="container" role="HbDialog:headingWidget" type="HbWidget">
- <widget name="container_1" type="HbWidget">
- <widget name="moreDevices" type="HbPushButton">
- <string name="text" value="More devices"/>
- <string name="state" value="normal"/>
- </widget>
- <widget name="cancel" type="HbPushButton">
- <string name="text" value="Cancel"/>
- <string name="state" value="normal"/>
- </widget>
- <real name="z" value="2"/>
- <sizehint height="10un" type="PREFERRED" width="27un"/>
- <layout spacing="0.5un" type="grid">
- <griditem column="0" itemname="moreDevices" row="0"/>
- <griditem column="1" itemname="cancel" row="0"/>
- </layout>
+<hbdocument version="1.1">
+ <object name="moreaction" type="HbAction">
+ <enums name="softKeyRole" value="NoSoftKey"/>
+ <string locid="txt_bt_button_more_devices" name="text"/>
+ <string name="toolTip" value="txt_bt_button_more_devices"/>
+ </object>
+ <object name="cancelaction" type="HbAction">
+ <string locid="txt_common_button_cancel" name="text"/>
+ </object>
+ <widget name="lastuseddialog" type="HbDialog">
+ <rect height="68.20896un" name="geometry" width="49.73134un" x="1.73134un" y="11.64179un"/>
+ <widget name="useddeviceslabel" role="HbDialog:headingWidget" type="HbLabel">
+ <real name="z" value="1"/>
+ <string locid="txt_bt_title_send_to" name="plainText"/>
+ </widget>
+ <widget name="container_2" role="HbDialog:contentWidget" type="HbWidget">
+ <widget name="listView" type="HbListView">
+ <widget name="listItemPrototype_1" role="HbAbstractView:prototype" type="HbListViewItem"/>
+ <enums name="verticalScrollBarPolicy" value="ScrollBarAsNeeded"/>
+ <sizehint height="47.7612un" type="PREFERRED" width="35.8209un"/>
</widget>
- <widget name="listView" type="HbListView">
- <widget name="listItemPrototype" role="HbAbstractView:prototype" type="HbListViewItem">
- <string name="state" value="normal"/>
- </widget>
- <enums name="horizontalScrollBarPolicy" value="ScrollBarAutoHide"/>
- <real name="z" value="2"/>
- <sizehint height="47.7612un" type="PREFERRED" width="35.8209un"/>
- <enums name="verticalScrollBarPolicy" value="ScrollBarAsNeeded"/>
- </widget>
- <widget name="label" type="HbLabel"/>
- <real name="z" value="3"/>
- <layout orientation="Vertical" type="linear">
- <contentsmargins bottom="1.34328un" left="1.34328un" right="1.34328un" top="1.34328un"/>
- <linearitem itemname="label"/>
- <linearitem itemname="listView"/>
- <linearitem itemname="container_1"/>
+ <real name="z" value="2"/>
+ <layout type="grid">
+ <griditem column="0" itemname="listView" row="0"/>
</layout>
</widget>
- <rect height="73.43284un" name="geometry" width="45.22388un" x="4.62687un" y="6.86567un"/>
+ <ref object="moreaction" role="HbWidget:addAction"/>
+ <ref object="cancelaction" role="HbWidget:addAction"/>
</widget>
- <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
+ <metadata activeUIState="Common ui state" display="NHD-3.2-inch_portrait" unit="un">
<uistate name="Common ui state" sections="#common"/>
- <dummydata objectName="listView" section="#common" value="0"/>
+ <dummydata objectName="listView" section="#common" value="empty_dummydata_template"/>
</metadata>
</hbdocument>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/docml/bt-receive-auth-dialog.docml Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument version="1.1">
+ <object name="noaction" type="HbAction">
+ <string locid="txt_common_button_no" name="iconText"/>
+ <string locid="txt_common_button_no" name="text"/>
+ <string locid="txt_common_button_no" name="toolTip"/>
+ </object>
+ <object name="yesaction" type="HbAction">
+ <string locid="txt_common_button_yes" name="iconText"/>
+ <string locid="txt_common_button_yes" name="text"/>
+ <string locid="txt_common_button_yes" name="toolTip"/>
+ </object>
+ <widget name="senddialog" type="HbDialog">
+ <rect height="40.59702un" name="geometry" width="49.73134un" x="1.49254un" y="36.26866un"/>
+ <widget name="heading" role="HbDialog:headingWidget" type="HbLabel">
+ <real name="z" value="1"/>
+ <string name="plainText"/>
+ </widget>
+ <ref object="yesaction" role="HbWidget:addAction"/>
+ <ref object="noaction" role="HbWidget:addAction"/>
+ <widget name="container" role="HbDialog:contentWidget" type="HbWidget">
+ <widget name="filecontainer" type="HbWidget">
+ <widget name="deviceIcon" type="HbLabel">
+ <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+ <real name="z" value="1"/>
+ </widget>
+ <widget name="deviceType" type="HbLabel">
+ <real name="z" value="3"/>
+ <sizehint height="4.02985un" type="PREFERRED" width="24.32836un"/>
+ <string name="plainText"/>
+ </widget>
+ <widget name="deviceName" type="HbLabel">
+ <real name="z" value="4"/>
+ <sizehint height="4.1791un" type="PREFERRED" width="35.07463un"/>
+ <string name="plainText"/>
+ </widget>
+ <real name="z" value="0"/>
+ <sizehint height="9.8806un" type="PREFERRED" width="23.8806un"/>
+ <layout type="anchor">
+ <anchoritem dst="deviceIcon" dstEdge="LEFT" spacing="1.04478un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="deviceIcon" dstEdge="BOTTOM" spacing="-0.71767un" src="" srcEdge="BOTTOM"/>
+ <anchoritem dst="deviceType" dstEdge="LEFT" spacing="9.30448un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="deviceType" dstEdge="BOTTOM" spacing="-0.26991un" src="" srcEdge="BOTTOM"/>
+ <anchoritem dst="deviceName" dstEdge="LEFT" spacing="9.30448un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="deviceName" dstEdge="TOP" spacing="0.44776un" src="" srcEdge="TOP"/>
+ </layout>
+ </widget>
+ <widget name="checkbox" type="HbCheckBox">
+ <string locid="txt_bt_list_dont_ask_again_with_this_device" name="text"/>
+ </widget>
+ <real name="z" value="2"/>
+ <layout orientation="Vertical" type="linear">
+ <linearitem itemname="filecontainer"/>
+ <linearitem itemname="checkbox"/>
+ </layout>
+ </widget>
+ </widget>
+ <metadata activeUIState="Common ui state" display="NHD-3.2-inch_portrait" unit="un">
+ <uistate name="Common ui state" sections="#common"/>
+ </metadata>
+</hbdocument>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/docml/bt-recv-progress-dialog.docml Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument version="1.1">
+ <object name="hideaction" type="HbAction">
+ <string locid="txt_common_button_hide" name="iconText"/>
+ <string locid="txt_common_button_hide" name="text"/>
+ <string locid="txt_common_button_hide" name="toolTip"/>
+ </object>
+ <object name="cancelaction" type="HbAction">
+ <string locid="txt_common_button_cancel" name="iconText"/>
+ <string locid="txt_common_button_cancel" name="text"/>
+ <string locid="txt_common_button_cancel" name="toolTip"/>
+ </object>
+ <widget name="senddialog" type="HbDialog">
+ <rect height="37.46269un" name="geometry" width="49.73134un" x="1.49254un" y="36.26866un"/>
+ <widget name="heading" role="HbDialog:headingWidget" type="HbLabel">
+ <real name="z" value="1"/>
+ <string name="plainText"/>
+ </widget>
+ <widget name="container" role="HbDialog:contentWidget" type="HbWidget">
+ <widget name="filecontainer" type="HbWidget">
+ <widget name="fileiconlabel" type="HbLabel">
+ <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+ <icon iconName="qtg_small_smiley_very_cool" name="icon"/>
+ <real name="z" value="1"/>
+ </widget>
+ <widget name="fileSize" type="HbLabel">
+ <real name="z" value="3"/>
+ <sizehint height="4.02985un" type="PREFERRED" width="24.32836un"/>
+ <string name="plainText"/>
+ </widget>
+ <widget name="fileName" type="HbLabel">
+ <real name="z" value="4"/>
+ <sizehint height="4.1791un" type="PREFERRED" width="35.07463un"/>
+ <string name="plainText"/>
+ </widget>
+ <real name="z" value="0"/>
+ <sizehint height="9.8806un" type="PREFERRED" width="23.8806un"/>
+ <layout type="anchor">
+ <anchoritem dst="fileiconlabel" dstEdge="LEFT" spacing="1.04478un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="fileiconlabel" dstEdge="BOTTOM" spacing="-0.71767un" src="" srcEdge="BOTTOM"/>
+ <anchoritem dst="fileSize" dstEdge="LEFT" spacing="9.30448un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="fileSize" dstEdge="BOTTOM" spacing="-0.26991un" src="" srcEdge="BOTTOM"/>
+ <anchoritem dst="fileName" dstEdge="LEFT" spacing="9.30448un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="fileName" dstEdge="TOP" spacing="0.44776un" src="" srcEdge="TOP"/>
+ </layout>
+ </widget>
+ <widget name="progresscontainer" type="HbWidget">
+ <widget name="horizontalProgressBar" type="HbProgressBar">
+ <integer name="progressValue" value="30"/>
+ <integer name="minimum" value="0"/>
+ <sizehint height="3un" type="PREFERRED" width="7.46un"/>
+ <enums name="orientation" value="Horizontal"/>
+ <integer name="maximum" value="100"/>
+ </widget>
+ <real name="z" value="0"/>
+ <sizehint height="4un" type="PREFERRED" width="11.9403un"/>
+ <sizehint height="1un" type="MINIMUM"/>
+ <layout orientation="Vertical" spacing="0un" type="linear">
+ <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+ <linearitem itemname="horizontalProgressBar"/>
+ </layout>
+ </widget>
+ <widget name="fileCount_label" type="HbLabel">
+ <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+ <string name="plainText"/>
+ </widget>
+ <real name="z" value="2"/>
+ <layout orientation="Vertical" type="linear">
+ <linearitem itemname="filecontainer"/>
+ <linearitem itemname="fileCount_label"/>
+ <linearitem itemname="progresscontainer"/>
+ </layout>
+ </widget>
+ <ref object="hideaction" role="HbWidget:addAction"/>
+ <ref object="cancelaction" role="HbWidget:addAction"/>
+ </widget>
+ <metadata activeUIState="Common ui state" display="NHD-3.2-inch_portrait" unit="un">
+ <uistate name="Common ui state" sections="#common"/>
+ </metadata>
+</hbdocument>
--- a/bluetoothengine/btnotif/btdevicedialogplugin/docml/bt-send-dialog.docml Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/docml/bt-send-dialog.docml Wed Jun 23 18:23:52 2010 +0300
@@ -1,37 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="1.0">
- <widget name="dialog" type="HbDialog">
- <widget name="container" role="HbDialog:headingWidget" type="HbWidget">
- <widget name="heading" type="HbLabel">
- <sizehint height="3.92537un" type="PREFERRED" width="0un"/>
- </widget>
- <widget name="container_1" type="HbWidget">
- <widget name="listView" type="HbListView">
- <sizehint height="47.7612un" type="PREFERRED" width="35.8209un"/>
+<hbdocument version="1.1">
+ <object name="hideaction" type="HbAction">
+ <string locid="txt_common_button_hide" name="text"/>
+ </object>
+ <object name="cancelaction" type="HbAction">
+ <string locid="txt_common_button_cancel" name="text"/>
+ </object>
+ <widget name="senddialog" type="HbDialog">
+ <rect height="32.68657un" name="geometry" width="49.73134un" x="1.49254un" y="36.26866un"/>
+ <widget name="heading" role="HbDialog:headingWidget" type="HbLabel">
+ <real name="z" value="1"/>
+ <string name="plainText" value="Sending File x/y to Device"/>
+ </widget>
+ <ref object="cancelaction" role="HbWidget:addAction"/>
+ <ref object="hideaction" role="HbWidget:addAction"/>
+ <widget name="container" role="HbDialog:contentWidget" type="HbWidget">
+ <widget name="filecontainer" type="HbWidget">
+ <widget name="fileiconlabel" type="HbLabel">
+ <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+ <icon iconName="qtg_small_smiley_very_cool" name="icon"/>
+ <real name="z" value="1"/>
+ </widget>
+ <widget name="filesizelabel" type="HbLabel">
+ <real name="z" value="3"/>
+ <sizehint height="4.02985un" type="PREFERRED" width="24.32836un"/>
+ <string name="plainText" value="Label"/>
+ </widget>
+ <widget name="filenamelabel" type="HbLabel">
+ <real name="z" value="4"/>
+ <sizehint height="4.1791un" type="PREFERRED" width="35.07463un"/>
+ <string name="plainText" value="Label"/>
</widget>
<real name="z" value="0"/>
- <sizehint height="23.8806un" type="PREFERRED" width="11.9403un"/>
- <layout orientation="Vertical" type="linear">
- <linearitem itemname="listView"/>
+ <sizehint height="9.8806un" type="PREFERRED" width="23.8806un"/>
+ <layout type="anchor">
+ <anchoritem dst="fileiconlabel" dstEdge="LEFT" spacing="1.04478un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="fileiconlabel" dstEdge="BOTTOM" spacing="-0.71767un" src="" srcEdge="BOTTOM"/>
+ <anchoritem dst="filesizelabel" dstEdge="LEFT" spacing="9.30448un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="filesizelabel" dstEdge="BOTTOM" spacing="-0.26991un" src="" srcEdge="BOTTOM"/>
+ <anchoritem dst="filenamelabel" dstEdge="LEFT" spacing="9.30448un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="filenamelabel" dstEdge="TOP" spacing="0.44776un" src="" srcEdge="TOP"/>
</layout>
</widget>
- <widget name="horizontalProgressBar" type="HbProgressBar">
- <integer name="progressValue" value="30"/>
- <integer name="minimum" value="0"/>
- <enums name="orientation" value="Horizontal"/>
- <integer name="maximum" value="100"/>
+ <widget name="progresscontainer" type="HbWidget">
+ <widget name="horizontalProgressBar" type="HbProgressBar">
+ <integer name="progressValue" value="30"/>
+ <integer name="minimum" value="0"/>
+ <sizehint height="3un" type="PREFERRED" width="7.46un"/>
+ <enums name="orientation" value="Horizontal"/>
+ <integer name="maximum" value="100"/>
+ </widget>
+ <real name="z" value="0"/>
+ <sizehint height="4un" type="PREFERRED" width="11.9403un"/>
+ <sizehint height="1un" type="MINIMUM"/>
+ <layout orientation="Vertical" spacing="0un" type="linear">
+ <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+ <linearitem itemname="horizontalProgressBar"/>
+ </layout>
</widget>
- <real name="z" value="1"/>
+ <real name="z" value="2"/>
<layout orientation="Vertical" type="linear">
- <linearitem itemname="heading"/>
- <linearitem itemname="container_1"/>
- <linearitem itemname="horizontalProgressBar"/>
+ <linearitem itemname="filecontainer"/>
+ <linearitem itemname="progresscontainer"/>
</layout>
</widget>
- <rect height="17.46269un" name="geometry" width="47.01493un" x="2.68657un" y="46.26866un"/>
</widget>
- <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
+ <metadata activeUIState="Common ui state" display="NHD-3.2-inch_portrait" unit="un">
<uistate name="Common ui state" sections="#common"/>
- <dummydata objectName="listView" section="#common" value="app_list_template5"/>
</metadata>
</hbdocument>
--- a/bluetoothengine/btnotif/btdevicedialogplugin/inc/btdevicedialognotifwidget.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/inc/btdevicedialognotifwidget.h Wed Jun 23 18:23:52 2010 +0300
@@ -21,12 +21,13 @@
#include <QVariantMap>
+#include <hbpopup.h>
#include <hbdevicedialoginterface.h>
#include <hbdevicedialog.h>
#include <hbnotificationdialog.h>
/*!
- \class BtDeviceDialogQueryWidget
+ \class BtDeviceDialogNotifWidget
\brief Widget class with properties setting.
BtDeviceDialogQueryWidget, inherited from HbNotificationDialog,
@@ -36,38 +37,42 @@
*/
class BtDeviceDialogNotifWidget :
- public HbNotificationDialog, public HbDeviceDialogInterface
+ public QObject, public HbDeviceDialogInterface
{
Q_OBJECT
public:
BtDeviceDialogNotifWidget(const QVariantMap ¶meters);
+ ~BtDeviceDialogNotifWidget();
// From base class HbDeviceDialogInterface
virtual bool setDeviceDialogParameters(const QVariantMap ¶meters);
virtual int deviceDialogError() const;
virtual void closeDeviceDialog(bool byClient);
- virtual HbDialog *deviceDialogWidget() const;
+ HbPopup *deviceDialogWidget() const;
+ virtual QObject *signalSender() const;
signals:
// Required by the framework
void deviceDialogClosed();
+ void deviceDialogData(QVariantMap data);
private:
+
void processParam(const QVariantMap ¶meters);
- bool constructQueryDialog(const QVariantMap ¶meters);
+ bool constructNotifDialog(const QVariantMap ¶meters);
void resetProperties();
- // From base HbInputDialog, reimplement and emit signals.
- void hideEvent(QHideEvent *event);
- void showEvent(QShowEvent *event);
-
+public slots:
+ void NotifClosed(HbAction *action);
+
private:
Q_DISABLE_COPY(BtDeviceDialogNotifWidget)
int mLastError;
int mSendAction;
bool mShowEventReceived;
+ HbNotificationDialog* mNotificationDialog;
};
#endif // BTDEVICEDIALOGNOTIFWIDGET_H
--- a/bluetoothengine/btnotif/btdevicedialogplugin/inc/btdevicedialogplugin.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/inc/btdevicedialogplugin.h Wed Jun 23 18:23:52 2010 +0300
@@ -26,6 +26,7 @@
// Forward declarations
class BtDeviceDialogPluginPrivate;
+class QTranslator;
/*!
\class BtDeviceDialogPlugin
@@ -67,6 +68,8 @@
private:
Q_DISABLE_COPY(BtDeviceDialogPlugin)
BtDeviceDialogPluginPrivate *d;
+ QTranslator* mDialogTranslator;
+ QTranslator* mViewTranslator;
};
#endif // BTDEVICEDIALOGPLUGIN_P_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/inc/btdevicedialogrecvquerywidget.h Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,77 @@
+/*
+* 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: BtDeviceDialogWidget class declaration.
+*
+*/
+
+
+#ifndef BTDEVICEDIALOGRECVQUERYWIDGET_H_
+#define BTDEVICEDIALOGRECVQUERYWIDGET_H_
+
+#include <QObject>
+#include <QVariantMap>
+#include <hbdialog.h>
+#include <hbdevicedialoginterface.h>
+#include <hbpopup.h>
+#include <hbdocumentloader.h>
+#include <qstandarditemmodel.h>
+#include <hbcheckbox.h>
+#include <hblabel.h>
+#include <hbaction.h>
+
+
+class BTRecvQueryDialogWidget : public QObject,
+ public HbDeviceDialogInterface
+ {
+ Q_OBJECT
+
+public:
+ BTRecvQueryDialogWidget(const QVariantMap ¶meters);
+ ~BTRecvQueryDialogWidget();
+
+public: // from HbDeviceDialogInterface
+ bool setDeviceDialogParameters(const QVariantMap ¶meters);
+ int deviceDialogError() const;
+ void closeDeviceDialog(bool byClient);
+ HbPopup *deviceDialogWidget() const;
+ virtual QObject *signalSender() const;
+
+public slots:
+ void yesClicked();
+ void noClicked();
+ void checkBoxStateChanged(bool checked);
+
+private:
+ bool constructDialog(const QVariantMap ¶meters);
+
+signals:
+ void deviceDialogClosed();
+ void deviceDialogData(QVariantMap data);
+
+private:
+ HbDocumentLoader *mLoader;
+ QStandardItemModel *mContentItemModel;
+ HbLabel *mHeading;
+ HbLabel *mDeviceName;
+ HbLabel *mDeviceType;
+ HbLabel *mDeviceIcon;
+ HbAction *mYes;
+ HbAction *mNo;
+ HbCheckBox *mCheckBox;
+ HbDialog *mDialog;
+
+ Q_DISABLE_COPY(BTRecvQueryDialogWidget)
+ };
+
+#endif /* BTDEVICEDIALOGRECVQUERYWIDGET_H_ */
--- a/bluetoothengine/btnotif/btdevicedialogplugin/inc/btdevicesearchdialogwidget.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/inc/btdevicesearchdialogwidget.h Wed Jun 23 18:23:52 2010 +0300
@@ -28,8 +28,9 @@
#include <qstandarditemmodel.h>
#include <hbradiobuttonlist.h>
#include <hblistwidget.h>
-#include <hbpushbutton.h>
#include <hblabel.h>
+#include <hbaction.h>
+
struct device
{
@@ -38,7 +39,8 @@
int mDeviceIdx;
};
-class BTDeviceSearchDialogWidget : public HbDialog,
+
+class BTDeviceSearchDialogWidget : public QObject,
public HbDeviceDialogInterface
{
Q_OBJECT
@@ -52,6 +54,7 @@
int deviceDialogError() const;
void closeDeviceDialog(bool byClient);
HbPopup *deviceDialogWidget() const;
+ virtual QObject *signalSender() const;
public slots:
void stopRetryClicked();
@@ -60,6 +63,7 @@
void deviceSelected(const QModelIndex& modelIndex);
// void viewByItemSelected(int index);
void selectionDialogClosed(HbAction*);
+ void searchDialogClosed(HbAction* action);
private:
bool constructDialog(const QVariantMap ¶meters);
@@ -87,8 +91,6 @@
QList<QString> mDeviceTypeList;
QList<device> mDeviceList;
HbListView* mListView;
- HbPushButton* mStopRetryBtn;
- HbPushButton* mViewByBtn;
HbLabel* mSearchLabel;
HbLabel* mSearchIconLabel;
HbLabel* mSearchDoneLabel;
@@ -97,6 +99,11 @@
int mDeviceLstIdx;
int mSelectedType;
int mDeviceDialogData;
+ HbDialog *mSearchDevicesDialog;
+ HbAction *mStopRetryAction;
+ HbAction *mViewByAction;
+
+ int mStopRetryFlag;
Q_DISABLE_COPY(BTDeviceSearchDialogWidget)
};
--- a/bluetoothengine/btnotif/btdevicedialogplugin/inc/btmoredevicesdialogwidget.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/inc/btmoredevicesdialogwidget.h Wed Jun 23 18:23:52 2010 +0300
@@ -26,10 +26,9 @@
#include <hbpopup.h>
#include <hbdocumentloader.h>
#include <qstandarditemmodel.h>
-
+#include <hbaction.h>
-class BTMoreDevicesDialogWidget : public HbDialog,
- public HbDeviceDialogInterface
+class BTMoreDevicesDialogWidget : public QObject, public HbDeviceDialogInterface
{
Q_OBJECT
@@ -37,12 +36,12 @@
BTMoreDevicesDialogWidget(const QVariantMap ¶meters);
~BTMoreDevicesDialogWidget();
-public: // from HbDeviceDialogInterface
+public: // from HbDeviceDialogInterface`
bool setDeviceDialogParameters(const QVariantMap ¶meters);
int deviceDialogError() const;
void closeDeviceDialog(bool byClient);
HbPopup *deviceDialogWidget() const;
- // virtual QObject *signalSender() const;
+ virtual QObject *signalSender() const;
public slots:
void moreDevicesClicked();
@@ -52,8 +51,8 @@
private:
bool constructDialog(const QVariantMap ¶meters);
- void hideEvent(QHideEvent *event);
- void showEvent(QShowEvent *event);
+ // void hideEvent(QHideEvent *event);
+ // void showEvent(QShowEvent *event);
QIcon icon(/*QString deviceType*/);
signals:
@@ -63,8 +62,9 @@
private:
HbDocumentLoader *mLoader;
int mDeviceDialogData;
-// HbAction *mMoreAction;
-// HbAction *mCancelAction;
+ HbDialog *mMoreDeviceDialog;
+ HbAction *mMoreAction;
+ HbAction *mCancelAction;
/**
*
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/inc/btrecvprgrsdialogwidget.h Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,76 @@
+/*
+* 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: BtDeviceDialogWidget class declaration.
+*
+*/
+
+#ifndef BTRECVPRGRSDIALOGWIDGET_H_
+#define BTRECVPRGRSDIALOGWIDGET_H_
+
+#include <QObject>
+#include <QVariantMap>
+#include <hbdialog.h>
+#include <hbdevicedialoginterface.h>
+#include <hbpopup.h>
+#include <hbdocumentloader.h>
+#include <qstandarditemmodel.h>
+#include <hbprogressbar.h>
+#include <hblabel.h>
+#include <hbaction.h>
+
+
+class BTRecvPrgrsDialogWidget : public QObject,
+ public HbDeviceDialogInterface
+ {
+ Q_OBJECT
+
+public:
+ BTRecvPrgrsDialogWidget(const QVariantMap ¶meters);
+ ~BTRecvPrgrsDialogWidget();
+
+public: // from HbDeviceDialogInterface
+ bool setDeviceDialogParameters(const QVariantMap ¶meters);
+ int deviceDialogError() const;
+ void closeDeviceDialog(bool byClient);
+ HbPopup *deviceDialogWidget() const;
+ virtual QObject *signalSender() const;
+
+public slots:
+ void hideClicked();
+ void cancelClicked();
+
+private:
+ bool constructDialog(const QVariantMap ¶meters);
+
+signals:
+ void deviceDialogClosed();
+ void deviceDialogData(QVariantMap data);
+
+private:
+ HbDocumentLoader *mLoader;
+ QStandardItemModel *mContentItemModel;
+ HbLabel *mHeading;
+ HbLabel *mFileName;
+ HbLabel *mFileSize;
+ HbLabel *mFileCount;
+ HbAction *mHide;
+ HbAction *mCancel;
+ HbDialog *mDialog;
+ HbProgressBar *mProgressBar;
+ int mFileSz;
+
+ Q_DISABLE_COPY(BTRecvPrgrsDialogWidget)
+ };
+
+#endif /* BTRECVPRGRSDIALOGWIDGET_H_ */
--- a/bluetoothengine/btnotif/btdevicedialogplugin/inc/btsenddialogwidget.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/inc/btsenddialogwidget.h Wed Jun 23 18:23:52 2010 +0300
@@ -29,9 +29,10 @@
#include <hbprogressbar.h>
#include <hblabel.h>
#include <hblistview.h>
+#include <hbaction.h>
-class BTSendDialogWidget : public HbDialog,
+class BTSendDialogWidget : public QObject,
public HbDeviceDialogInterface
{
Q_OBJECT
@@ -49,8 +50,8 @@
public slots:
// void hideClicked();
-// void cancelClicked();
- void inputClosed(HbAction* action);
+ void cancelClicked();
+// void inputClosed(HbAction* action);
private:
bool constructDialog(const QVariantMap ¶meters);
void hideEvent(QHideEvent *event);
@@ -61,11 +62,19 @@
private:
HbDocumentLoader *mLoader;
- QStandardItemModel* mContentItemModel;
+ // QStandardItemModel* mContentItemModel;
HbProgressBar* mProgressBar;
- HbLabel* mLabel;
- HbListView* mListView;
- int mFileIndex;
+ HbLabel* mDialogHeading;
+ HbLabel* mFileIconLabel;
+ HbLabel* mFileNameLabel;
+ HbLabel* mFileSizeLabel;
+
+// HbListView* mListView;
+ HbDialog *mSendDialog;
+ HbAction *mHideAction;
+ HbAction *mCancelAction;
+ int mFileIndex;
+
Q_DISABLE_COPY(BTSendDialogWidget)
};
--- a/bluetoothengine/btnotif/btdevicedialogplugin/src/btdevicedialoginputwidget.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/src/btdevicedialoginputwidget.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -21,8 +21,12 @@
#include <bluetoothdevicedialogs.h>
#include <hbaction.h>
#include <hbdialog.h>
+#include <hblabel.h>
+#include <hbvalidator.h>
#include "btdevicedialogpluginerrors.h"
+const int PASSCODE_MAX_LEN = 16; // from BT specs
+
/*!
class Constructor
*/
@@ -118,7 +122,8 @@
{
TRACE_ENTRY
- QString keyStr, prompt;
+ QString keyStr, prompt,title,regExp;
+ QVariant name;
keyStr.setNum( TBluetoothDialogParams::EResource );
// Validate if the resource item exists.
QVariantMap::const_iterator i = parameters.constFind( keyStr );
@@ -130,7 +135,11 @@
QVariant param = parameters.value( keyStr );
if ( param.toInt() == EPinInput ) {
- prompt = QString( tr( "Passcode for device %1:" ) );
+ // Numeric value only
+ mInputDialog->setInputMode(HbInputDialog::RealInput);
+ title = QString(hbTrId("txt_bt_title_pairing_with_1"));
+ // todo: Fixe the multiline problem
+ prompt = QString( hbTrId( "txt_bt_dialog_please_enter_the_passcode_for_1" ) );
}
else {
mLastError = ParameterError;
@@ -141,23 +150,46 @@
keyStr.setNum( TBluetoothDeviceDialog::EAdditionalDesc );
i = parameters.constFind( keyStr );
// Mini Length required, update prompt
- // ToDo: use Validator to check input length.
+ // ToDo: The validator doesn't seem to work properly
if ( i != parameters.constEnd() ) {
- prompt = QString( tr( "Enter %1 digit passcode for device %2:" ) );
+ // Todo : The string ID for the localization is not available yet
+ // for string : "Enter %1 digit passcode for device %2:"
+ // I'm using the "Enter the passcode for device %1" instead
+ prompt = QString( hbTrId( "txt_bt_dialog_please_enter_the_passcode_for_1" ) );
param = parameters.value( keyStr );
+ regExp = tr("^\\d{%1,}$");
+ regExp.arg(param.toString());
+ HbValidator* validator = new HbValidator(mInputDialog->lineEdit());
+ validator->addField(
+ new QRegExpValidator(
+ QRegExp(regExp, Qt::CaseInsensitive), validator ),"");
+ mInputDialog->setValidator(validator);
+ }else{
+ // Minimum requirement is to have at least 1 digit
+ regExp = tr("^\\d{1,}$");
+ HbValidator* validator = new HbValidator(mInputDialog->lineEdit());
+ validator->addField(
+ new QRegExpValidator(
+ QRegExp(regExp, Qt::CaseInsensitive), validator ),"");
+ mInputDialog->setValidator(validator);
}
-
// replace % with the miniLength and device name
int repls = prompt.count( QString( "%" ) );
if ( repls > 1 ) {
prompt = prompt.arg( param.toString() );
}
if ( repls > 0 ) {
- QVariant name = parameters.value( QString::number( TBluetoothDeviceDialog::EDeviceName ) );
+ name = parameters.value( QString::number( TBluetoothDeviceDialog::EDeviceName ) );
prompt = prompt.arg( name.toString() );
}
- // set property value to this dialog widget
- mInputDialog->setPromptText( prompt );
+ repls = title.count(QString("%"));
+ if(repls > 0){
+ title = title.arg( name.toString() );
+ }
+ mInputDialog->setHeadingWidget(new HbLabel(title));
+ mInputDialog->lineEdit(0)->setMaxLength(PASSCODE_MAX_LEN);
+ mInputDialog->lineEdit(0)->setText(tr("")); // clear the input field
+ mInputDialog->setPromptText(prompt);
TRACE_EXIT
}
--- a/bluetoothengine/btnotif/btdevicedialogplugin/src/btdevicedialognotifwidget.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/src/btdevicedialognotifwidget.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -22,7 +22,7 @@
#include <hbaction.h>
#include <hbdialog.h>
#include "btdevicedialogpluginerrors.h"
-
+#include <btuiiconutil.h>
/*!
class Constructor
*/
@@ -32,12 +32,23 @@
// set properties
mLastError = NoError;
mShowEventReceived = false;
+ mNotificationDialog = new HbNotificationDialog();
resetProperties();
- constructQueryDialog(parameters);
+ constructNotifDialog(parameters);
TRACE_EXIT
}
/*!
+ class Constructor
+ */
+BtDeviceDialogNotifWidget::~BtDeviceDialogNotifWidget()
+{
+ TRACE_ENTRY
+ delete mNotificationDialog;
+ return;
+}
+
+/*!
Set parameters, implementation of interface
Invoked when HbDeviceDialog::update calls.
*/
@@ -70,8 +81,8 @@
Q_UNUSED(byClient);
// Closed by client or internally by server -> no action to be transmitted.
mSendAction = false;
- close();
- // If show event has been received, close is signalled from hide event. If not,
+ mNotificationDialog->close();
+ // If show event has been received, close is signalled from hide event. If not,
// hide event does not come and close is signalled from here.
if (!mShowEventReceived) {
emit deviceDialogClosed();
@@ -82,22 +93,27 @@
/*!
Return display widget, implementation of interface
*/
-HbDialog *BtDeviceDialogNotifWidget::deviceDialogWidget() const
+HbPopup *BtDeviceDialogNotifWidget::deviceDialogWidget() const
{
TRACE_ENTRY
TRACE_EXIT
+ return mNotificationDialog;
+}
+
+QObject* BtDeviceDialogNotifWidget::signalSender() const
+ {
return const_cast<BtDeviceDialogNotifWidget*>(this);
-}
+ }
/*!
Construct display widget
*/
-bool BtDeviceDialogNotifWidget::constructQueryDialog(const QVariantMap ¶meters)
+bool BtDeviceDialogNotifWidget::constructNotifDialog(const QVariantMap ¶meters)
{
TRACE_ENTRY
// analyze the parameters to compose the properties of the message box widget
processParam(parameters);
-
+ connect(mNotificationDialog, SIGNAL(finished(HbAction*)), this, SLOT(NotifClosed(HbAction*)));
TRACE_EXIT
return true;
}
@@ -108,7 +124,8 @@
void BtDeviceDialogNotifWidget::processParam(const QVariantMap ¶meters)
{
TRACE_ENTRY
- QString keyStr, prompt;
+ QString keyStr, prompt,title;
+ QVariant classOfDevice;
keyStr.setNum( TBluetoothDialogParams::EResource );
// Validate if the resource item exists.
QVariantMap::const_iterator i = parameters.constFind( keyStr );
@@ -117,32 +134,41 @@
mLastError = UnknownDeviceDialogError;
return;
}
-
+ HbIcon icon;
QVariant param = parameters.value( keyStr );
int key = param.toInt();
switch ( key ) {
- // Note dialogs
case EPairingSuccess:
- prompt = QString( tr( "Pairing with %1 complete" ) );
+ title = QString(hbTrId( "txt_bt_dpophead_paired" ));
+ prompt = QString( hbTrId( "txt_bt_dpopinfo_paired_to_1" ) );
+ classOfDevice = parameters.value(QString::number( TBluetoothDeviceDialog::EDeviceClass ));
+ icon = getBadgedDeviceTypeIcon(classOfDevice.toInt());
+ mNotificationDialog->setIcon(icon);
break;
- case EPairingFailure:
- prompt = QString( tr( "Unable to pair with %1" ) );
- break;
+ // todo: remove this Unpaired notification if not used
+ case EUnpairedDevice:
+ title = QString(hbTrId( "txt_bt_dpophead_unpaired" ));
+ prompt = QString( hbTrId( "txt_bt_dpopinfo_with_1" ) );
+ classOfDevice = parameters.value(QString::number( TBluetoothDeviceDialog::EDeviceClass ));
+ icon = getBadgedDeviceTypeIcon(classOfDevice.toInt());
+ mNotificationDialog->setIcon(icon);
+ break;
case EVisibilityTimeout:
- prompt = QString( tr( "Phone is not detectable in searches made by other devices" ) );
+ title = QString(hbTrId( "txt_bt_dpophead_bluetooth" ));
+ prompt = QString( hbTrId( "txt_bt_dpopinfo_is_now_hidden" ) );
+ mNotificationDialog->setIcon(HbIcon("qtg_large_bluetooth"));
break;
default:
mLastError = ParameterError;
break;
}
- // Could use QChar with ReplacementCharacter?
int repls = prompt.count( QString( "%" ) );
if ( repls > 0 ) {
QVariant name = parameters.value( QString::number( TBluetoothDeviceDialog::EDeviceName ) );
prompt = prompt.arg( name.toString() );
}
- // set property value to this dialog widget
- HbNotificationDialog::setTitle( prompt );
+ mNotificationDialog->setTitle( title );
+ mNotificationDialog->setText( prompt );
TRACE_EXIT
}
@@ -157,20 +183,10 @@
return;
}
-/*!
- Widget is about to hide. Closing effect has ended.
- */
-void BtDeviceDialogNotifWidget::hideEvent(QHideEvent *event)
+void BtDeviceDialogNotifWidget::NotifClosed(HbAction *action)
{
- HbNotificationDialog::hideEvent(event);
+ Q_UNUSED(action);
emit deviceDialogClosed();
+ mSendAction = false;
}
-/*!
- Widget is about to show
- */
-void BtDeviceDialogNotifWidget::showEvent(QShowEvent *event)
-{
- HbNotificationDialog::showEvent(event);
- mShowEventReceived = true;
-}
--- a/bluetoothengine/btnotif/btdevicedialogplugin/src/btdevicedialogplugin.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/src/btdevicedialogplugin.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -24,14 +24,21 @@
#include "btdevicedialoginputwidget.h"
#include "btdevicedialogquerywidget.h"
#include "btdevicedialognotifwidget.h"
+#include "btrecvprgrsdialogwidget.h"
#include "btdevicedialogpluginerrors.h"
#include "btdevicesearchdialogwidget.h"
#include "btmoredevicesdialogwidget.h"
#include "btsenddialogwidget.h"
+#include "btdevicedialogrecvquerywidget.h"
+#include <qtranslator.h>
+#include <qcoreapplication.h>
Q_EXPORT_PLUGIN2(btdevicedialogplugin, BtDeviceDialogPlugin)
+const char* BTDIALOG_TRANSLATION = "btdialogs_en_GB";
+const char* BTVIEW_TRANSLATION = "btviews_en_GB";
+
// This plugin implements one device dialog type
static const struct {
const char *mTypeString;
@@ -57,7 +64,8 @@
/*!
BtDeviceDialogPlugin Constructor
*/
-BtDeviceDialogPlugin::BtDeviceDialogPlugin()
+BtDeviceDialogPlugin::BtDeviceDialogPlugin():
+ mDialogTranslator(0),mViewTranslator(0)
{
d = new BtDeviceDialogPluginPrivate;
}
@@ -68,6 +76,8 @@
BtDeviceDialogPlugin::~BtDeviceDialogPlugin()
{
delete d;
+ delete mDialogTranslator;
+ delete mViewTranslator;
}
/*!
@@ -95,6 +105,34 @@
d->mError = NoError;
int i;
+
+ //TODO: Uncomment the lines when actual translation files are available in sdk and remove loading locally.
+ // QString locale = QLocale::system().name();
+ // QString path = "z:/resource/qt/translations/";
+ // QTranslator translator;
+ //QTranslator translator_comm;
+ //translator.load(path + QString("btdialogs_") + locale);
+ //translator_comm.load(path + QString("common_") + locale);
+
+ QString path = ":/";
+ if(!mDialogTranslator)
+ {
+ mDialogTranslator = new QTranslator();
+// QString lang = QLocale::system().name();
+// QString appName = "btdialogs_";
+ //todo need to handle failed case of transaltor loading
+ bool ok = mDialogTranslator->load(BTDIALOG_TRANSLATION, path);
+ QCoreApplication::installTranslator(mDialogTranslator);
+ }
+ if(!mViewTranslator)
+ {
+ mViewTranslator = new QTranslator();
+// QString lang = QLocale::system().name();
+// QString appName = "btviews_";
+ //todo need to handle failed case of transaltor loading
+ bool ok = mViewTranslator->load(BTVIEW_TRANSLATION, path);
+ QCoreApplication::installTranslator(mViewTranslator);
+ }
// verify that requested dialog type is supported
const int numTypes = sizeof(noteInfos) / sizeof(noteInfos[0]);
for(i = 0; i < numTypes; i++) {
@@ -184,7 +222,7 @@
switch ( i.value().toInt() ) {
case TBluetoothDialogParams::ENote:
deviceDialog =
- new BtDeviceDialogQueryWidget(HbMessageBox::MessageTypeInformation, parameters);
+ new BtDeviceDialogNotifWidget(parameters);
break;
case TBluetoothDialogParams::EQuery:
deviceDialog =
@@ -205,6 +243,12 @@
case TBluetoothDialogParams::EGlobalNotif:
deviceDialog = new BtDeviceDialogNotifWidget(parameters);
break;
+ case TBluetoothDialogParams::EUserAuthorization:
+ deviceDialog = new BTRecvQueryDialogWidget(parameters);
+ break;
+ case TBluetoothDialogParams::EReceiveProgress:
+ deviceDialog = new BTRecvPrgrsDialogWidget(parameters);
+ break;
default:
d->mError = UnknownDeviceDialogError;
break;
--- a/bluetoothengine/btnotif/btdevicedialogplugin/src/btdevicedialogquerywidget.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/src/btdevicedialogquerywidget.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -21,6 +21,7 @@
#include <bluetoothdevicedialogs.h>
#include <hbaction.h>
#include <hbdialog.h>
+#include <hblabel.h>
#include "btdevicedialogpluginerrors.h"
/*!
@@ -118,7 +119,8 @@
void BtDeviceDialogQueryWidget::processParam(const QVariantMap ¶meters)
{
TRACE_ENTRY
- QString keyStr, prompt;
+ QString keyStr, prompt,title;
+ QVariant name,param,addval;
keyStr.setNum( TBluetoothDialogParams::EResource );
// Validate if the resource item exists.
QVariantMap::const_iterator i = parameters.constFind( keyStr );
@@ -127,31 +129,15 @@
mLastError = UnknownDeviceDialogError;
return;
}
-
- QVariant param = parameters.value( keyStr );
+ title = QString(hbTrId("txt_bt_title_pairing_with_1"));
+ param = parameters.value( keyStr );
int key = param.toInt();
switch ( key ) {
- // Query dialogs:
- case EAuthorization:
- prompt = QString( tr( "Accept connection request from:\n%1" ) );
- break;
- case EIncomingPairing:
- prompt = QString( tr( "Device '%1' is trying to pair with you. Allow pairing?" ) );
- break;
case ENumericComparison:
- prompt = QString( tr( "Does this code match the one on %1?\n\n%2" ) );
+ prompt = QString( hbTrId( "txt_bt_info_does_this_code_match_the_code_on_1" ) );
break;
case EPasskeyDisplay:
- prompt = QString( tr( "Enter on %1:\n\n%2" ) );
- break;
- case ESetTrusted:
- prompt = QString( tr( "Authorise this device to make connections automatically?" ) );
- break;
- case EBlockUnpairedDevice:
- prompt = QString( tr( "Do you want to block all future connection attempts from device %1?" ) );
- break;
- case EBlockPairedDevice:
- prompt = QString( tr( "Do you want to block all future connection attempts from paired device %1? \nThis will delete your pairing with the device." ) );
+ prompt = QString( hbTrId( "txt_bt_info_enter_the_following_code_to_the_1" ) );
break;
// Note dialogs, but not Notification dialogs
// Input dialogs
@@ -164,18 +150,22 @@
mLastError = ParameterError;
break;
}
- // Could use QChar with ReplacementCharacter?
int repls = prompt.count( QString( "%" ) );
if ( repls > 0 ) {
- QVariant name = parameters.value( QString::number( TBluetoothDeviceDialog::EDeviceName ) );
+ name = parameters.value( QString::number( TBluetoothDeviceDialog::EDeviceName ) );
prompt = prompt.arg( name.toString() );
- if ( repls > 1 ) {
- QVariant addval = parameters.value( QString::number( TBluetoothDeviceDialog::EAdditionalDesc ) );
- prompt = prompt.arg( addval.toString() );
- }
+ addval = parameters.value( QString::number( TBluetoothDeviceDialog::EAdditionalDesc ) );
+ // todo: Formating the prompt need to be discussed with UI designer
+ // The passcode could be displayed on a separate row if it the label did support
+ // the use of newline escape character.
+ prompt.append(tr(" "));
+ prompt.append(addval.toString());
}
+ title = title.arg(name.toString());
// set property value to this dialog widget
+ mMessageBox->setHeadingWidget(new HbLabel(title));
mMessageBox->setText( prompt );
+ mMessageBox->setIconVisible(false);
TRACE_EXIT
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/src/btdevicedialogrecvquerywidget.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,160 @@
+/*
+* 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: BtDeviceDialogWidget class declaration.
+*
+*/
+
+
+#include "btdevicedialogrecvquerywidget.h"
+#include "bluetoothdevicedialogs.h"
+#include <btuiiconutil.h>
+
+const char* DOCML_BT_RECV_QUERY_DIALOG = ":/docml/bt-receive-auth-dialog.docml";
+
+
+BTRecvQueryDialogWidget::BTRecvQueryDialogWidget(const QVariantMap ¶meters)
+{
+ mLoader = 0;
+ constructDialog(parameters);
+}
+
+BTRecvQueryDialogWidget::~BTRecvQueryDialogWidget()
+{
+ if(mLoader)
+ {
+ delete mLoader;
+ mLoader = NULL;
+ }
+}
+
+bool BTRecvQueryDialogWidget::setDeviceDialogParameters(const QVariantMap ¶meters)
+{
+ Q_UNUSED(parameters);
+ return true;
+}
+
+int BTRecvQueryDialogWidget::deviceDialogError() const
+{
+ return 0;
+}
+
+void BTRecvQueryDialogWidget::closeDeviceDialog(bool byClient)
+{
+ Q_UNUSED(byClient);
+ mDialog->close();
+}
+
+HbPopup* BTRecvQueryDialogWidget::deviceDialogWidget() const
+{
+ return mDialog;
+}
+
+QObject* BTRecvQueryDialogWidget::signalSender() const
+{
+ return const_cast<BTRecvQueryDialogWidget*>(this);
+}
+
+bool BTRecvQueryDialogWidget::constructDialog(const QVariantMap ¶meters)
+{
+ mLoader = new HbDocumentLoader();
+ bool ok = false;
+
+ mLoader->load(DOCML_BT_RECV_QUERY_DIALOG, &ok);
+ if(ok)
+ {
+ mDialog = qobject_cast<HbDialog*>(mLoader->findWidget("senddialog"));
+ mHeading = qobject_cast<HbLabel*>(mLoader->findWidget("heading"));
+
+ mDeviceName = qobject_cast<HbLabel*>(mLoader->findWidget("deviceName"));
+ mDeviceType = qobject_cast<HbLabel*>(mLoader->findWidget("deviceType"));
+ mDeviceIcon = qobject_cast<HbLabel*>(mLoader->findWidget("deviceIcon"));
+
+ int classOfDevice = parameters.value(QString::number(TBluetoothDeviceDialog::EDeviceClass)).toDouble();
+ HbIcon icon = getBadgedDeviceTypeIcon(classOfDevice);
+ mDeviceIcon->setIcon(icon);
+
+ mDeviceName->setPlainText(parameters.value(QString::number(TBluetoothDeviceDialog::EDeviceName)).toString());
+ mDeviceType->setPlainText(getDeviceTypeString(classOfDevice));
+
+ mYes = qobject_cast<HbAction*>(mLoader->findObject("yesaction"));
+ mNo = qobject_cast<HbAction*>(mLoader->findObject("noaction"));
+
+ mCheckBox = qobject_cast<HbCheckBox*>(mLoader->findWidget("checkbox"));
+
+ int dialogType = parameters.value(QString::number(TBluetoothDialogParams::EDialogTitle)).toInt();
+ switch(dialogType)
+ {
+ case TBluetoothDialogParams::EReceive:
+ {
+ mHeading->setPlainText(hbTrId("txt_bt_title_receive_messages_from"));
+ }break;
+
+ case TBluetoothDialogParams::EReceiveFromPairedDevice:
+ {
+ mHeading->setPlainText(hbTrId("txt_bt_title_receive_messages_from_paired_device"));
+ mCheckBox->setCheckState(Qt::Checked);
+ }break;
+
+ case TBluetoothDialogParams::EConnect:
+ {
+ mHeading->setPlainText(hbTrId("txt_bt_title_connect_to"));
+ mCheckBox->setCheckState(Qt::Checked);
+ }break;
+ case TBluetoothDialogParams::EPairingRequest:
+ mHeading->setPlainText(hbTrId("txt_bt_title_pair_with"));
+ mCheckBox->setCheckState(Qt::Checked);
+ break;
+ default:
+ break;
+
+ }
+ mDialog->setHeadingWidget(mHeading);
+ }
+
+ mDialog->setBackgroundFaded(false);
+ mDialog->setDismissPolicy(HbPopup::NoDismiss);
+ mDialog->setTimeout(HbPopup::NoTimeout);
+
+ connect(mYes, SIGNAL(triggered()), this, SLOT(yesClicked()));
+ connect(mNo, SIGNAL(triggered()), this, SLOT(noClicked()));
+ connect(mCheckBox, SIGNAL(clicked(bool)), this, SLOT(checkBoxStateChanged(bool)));
+
+ return true;
+}
+
+void BTRecvQueryDialogWidget::yesClicked()
+{
+ QVariantMap data;
+ data.insert(QString("actionResult"), QVariant(true));
+ emit deviceDialogData(data);
+ emit deviceDialogClosed();
+}
+
+void BTRecvQueryDialogWidget::noClicked()
+{
+ QVariantMap data;
+ data.insert(QString("actionResult"), QVariant(false));
+ emit deviceDialogData(data);
+ emit deviceDialogClosed();
+}
+
+void BTRecvQueryDialogWidget::checkBoxStateChanged(bool checked)
+{
+ QVariantMap data;
+ data.insert(QString("checkBoxState"), QVariant(checked));
+ emit deviceDialogData(data);
+}
+
+
+
--- a/bluetoothengine/btnotif/btdevicedialogplugin/src/btdevicesearchdialogwidget.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/src/btdevicesearchdialogwidget.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -24,32 +24,36 @@
#include <qstandarditemmodel.h>
#include <hbaction.h>
+#include <xqconversions.h>
+#include <qtranslator.h>
+#include <qcoreapplication.h>
const char* DOCML_BTDEV_SEARCH_DIALOG = ":/docml/bt-device-search-dialog.docml";
+#define LOC_SEARCHING_DEVICE hbTrId("txt_bt_subhead_searching")
+#define LOC_SEARCH_DONE hbTrId("txt_bt_subhead_search_done")
+#define LOC_SEARCH_STOP hbTrId("txt_common_button_stop")
+#define LOC_SEARCH_RETRY hbTrId("txt_common_button_retry")
+
+
BTDeviceSearchDialogWidget::BTDeviceSearchDialogWidget(const QVariantMap ¶meters)
-:HbDialog()
{
mDeviceLstIdx = 0;
mViewByChosen = false;
mSelectedType = 0;
mDeviceDialogData = 0;
+ mLoader = 0;
+ mContentItemModel = 0;
+ mStopRetryFlag = 0; // Stop
constructDialog(parameters);
}
BTDeviceSearchDialogWidget::~BTDeviceSearchDialogWidget()
{
- if(mLoader)
- {
- delete mLoader;
- mLoader = NULL;
- }
- if(mContentItemModel)
- {
- delete mContentItemModel;
- mContentItemModel = NULL;
- }
+ delete mLoader;
+ delete mContentItemModel;
+
// delete mRbl;
// delete mViewByDialog;
}
@@ -65,9 +69,9 @@
mSearchDoneLabel->show();
mSearchDoneLabel->setTextWrapping(Hb::TextWordWrap);
mSearchDoneLabel->setAlignment(Qt::AlignLeft);
- mSearchDoneLabel->setPlainText("Search Done");
+ mSearchDoneLabel->setPlainText(LOC_SEARCH_DONE);
- mStopRetryBtn->setText("Retry");
+ mStopRetryAction->setText(LOC_SEARCH_RETRY);
}
else
{
@@ -121,33 +125,47 @@
void BTDeviceSearchDialogWidget::closeDeviceDialog(bool byClient)
{
Q_UNUSED(byClient);
- this->close();
+ mSearchDevicesDialog->close();
+ //@ TODO to check below code is required which is written based on the documentation of closeDeviceDialog API
+
+ /* QVariantMap val;
+ QVariant index(-1);
+ val.insert("selectedindex",index);
+ emit deviceDialogData(val);
+ emit deviceDialogClosed();*/
}
HbPopup* BTDeviceSearchDialogWidget::deviceDialogWidget() const
{
+ return mSearchDevicesDialog;
+ }
+
+QObject* BTDeviceSearchDialogWidget::signalSender() const
+ {
return const_cast<BTDeviceSearchDialogWidget*>(this);
}
bool BTDeviceSearchDialogWidget::constructDialog(const QVariantMap ¶meters)
{
(void) parameters;
- mLoader = new HbDocumentLoader();
bool ok = false;
+ mLoader = new HbDocumentLoader();
mLoader->load(DOCML_BTDEV_SEARCH_DIALOG, &ok);
if(ok)
{
- HbLabel* heading = qobject_cast<HbLabel*>(mLoader->findWidget("heading"));
+ mSearchDevicesDialog = qobject_cast<HbDialog*>(mLoader->findWidget("searchdialog"));
+
+ /* HbLabel* heading = qobject_cast<HbLabel*>(mLoader->findWidget("heading"));
heading->setTextWrapping(Hb::TextWordWrap);
heading->setAlignment(Qt::AlignHCenter);
heading->setPlainText("Bluetooth - Found devices");
- setHeadingWidget(heading);
+ setHeadingWidget(heading);*/
mSearchLabel = qobject_cast<HbLabel*>(mLoader->findWidget("searchLabel"));
mSearchLabel->setTextWrapping(Hb::TextWordWrap);
mSearchLabel->setAlignment(Qt::AlignHCenter);
- mSearchLabel->setPlainText("Searching...");
+ mSearchLabel->setPlainText(LOC_SEARCHING_DEVICE);
mSearchIconLabel = qobject_cast<HbLabel*>(mLoader->findWidget("iconLabel"));
mSearchIconLabel->setIcon(icon());
@@ -155,11 +173,12 @@
mSearchDoneLabel = qobject_cast<HbLabel*>(mLoader->findWidget("searchDoneLabel"));
mSearchDoneLabel->hide();
- setFrameType(HbDialog::Strong);
- setBackgroundFaded(false);
+
+ mSearchDevicesDialog->setFrameType(HbDialog::Strong);
+ mSearchDevicesDialog->setBackgroundFaded(false);
- mViewByBtn = qobject_cast<HbPushButton*>(mLoader->findWidget("viewby"));
- mStopRetryBtn = qobject_cast<HbPushButton*>(mLoader->findWidget("stop"));
+ // mViewByBtn = qobject_cast<HbPushButton*>(mLoader->findWidget("viewby"));
+ // mStopRetryBtn = qobject_cast<HbPushButton*>(mLoader->findWidget("stop"));
mListView = qobject_cast<HbListView*>(mLoader->findWidget("listView"));
mListView->setSelectionMode(HbAbstractItemView::SingleSelection);
@@ -168,15 +187,26 @@
mListView->setModel(mContentItemModel);//, prototype);
connect(mListView, SIGNAL(activated(QModelIndex)), this, SLOT(deviceSelected(QModelIndex)));
- connect(mStopRetryBtn, SIGNAL(clicked()), this, SLOT(stopRetryClicked()));
- connect(mViewByBtn, SIGNAL(clicked()), this, SLOT(viewByClicked()));
+ // connect(mStopRetryBtn, SIGNAL(clicked()), this, SLOT(stopRetryClicked()));
+ // connect(mViewByBtn, SIGNAL(clicked()), this, SLOT(viewByClicked()));
+
+ mViewByAction = static_cast<HbAction*>( mLoader->findObject( "viewaction" ) );
+ mViewByAction->disconnect(mSearchDevicesDialog);
+
+ mStopRetryAction = static_cast<HbAction*>( mLoader->findObject( "stopretryaction" ) );
+ mStopRetryAction->disconnect(mSearchDevicesDialog);
- QGraphicsWidget *widget = mLoader->findWidget(QString("container"));
- setContentWidget(widget);
+ connect(mViewByAction, SIGNAL(triggered()), this, SLOT(viewByClicked()));
+ connect(mStopRetryAction, SIGNAL(triggered()), this, SLOT(stopRetryClicked()));
+
+ connect(mSearchDevicesDialog, SIGNAL(finished(HbAction*)), this, SLOT(searchDialogClosed(HbAction*)));
+
+// QGraphicsWidget *widget = mLoader->findWidget(QString("container"));
+ //setContentWidget(widget);
}
- setBackgroundFaded(false);
- setDismissPolicy(HbPopup::TapOutside);
- setTimeout(HbPopup::NoTimeout);
+ mSearchDevicesDialog->setBackgroundFaded(false);
+ mSearchDevicesDialog->setDismissPolicy(HbPopup::TapOutside);
+ mSearchDevicesDialog->setTimeout(HbPopup::NoTimeout);
/* mViewByDialog = new HbDialog();
mRbl = new HbRadioButtonList(mViewByDialog);
@@ -185,9 +215,9 @@
return true;
}
-void BTDeviceSearchDialogWidget::hideEvent(QHideEvent *event)
+/*void BTDeviceSearchDialogWidget::hideEvent(QHideEvent *event)
{
- HbDialog::hideEvent(event);
+ // HbDialog::hideEvent(event);
QVariantMap val;
QVariant index(-1);
val.insert("selectedindex",index);
@@ -197,25 +227,26 @@
void BTDeviceSearchDialogWidget::showEvent(QShowEvent *event)
{
- HbDialog::showEvent(event);
- }
+ // HbDialog::showEvent(event);
+ }*/
void BTDeviceSearchDialogWidget::stopRetryClicked()
{
QVariantMap val;
- if(mStopRetryBtn->text().compare("Retry")==0)
+ if(mStopRetryFlag == 1)//mStopRetryAction->text().compare(LOC_SEARCH_RETRY)==0
{
+ mStopRetryFlag = 0; // Stop
QVariant index("Retry");
val.insert("Retry",index);
emit deviceDialogData(val);
delete mContentItemModel;
mContentItemModel = new QStandardItemModel(this);
mListView->setModel(mContentItemModel);
- mStopRetryBtn->setText("Stop");
+ mStopRetryAction->setText(LOC_SEARCH_STOP);
mSearchLabel->setTextWrapping(Hb::TextWordWrap);
mSearchLabel->setAlignment(Qt::AlignHCenter);
- mSearchLabel->setPlainText("Searching...");
+ mSearchLabel->setPlainText(LOC_SEARCHING_DEVICE);
mSearchIconLabel->setIcon(icon());
mSearchLabel->show();
@@ -226,7 +257,8 @@
}
else
{
- mStopRetryBtn->setText("Retry");
+ mStopRetryFlag = 1; //Retry
+ mStopRetryAction->setText(LOC_SEARCH_RETRY);
mSearchLabel->hide();
@@ -235,7 +267,7 @@
mSearchDoneLabel->show();
mSearchDoneLabel->setTextWrapping(Hb::TextWordWrap);
mSearchDoneLabel->setAlignment(Qt::AlignLeft);
- mSearchDoneLabel->setPlainText("Search Done");
+ mSearchDoneLabel->setPlainText(LOC_SEARCH_DONE);
QVariantMap val;
QVariant index("Stop");
@@ -313,6 +345,23 @@
mViewByDialog->show();*/
}
+void BTDeviceSearchDialogWidget::searchDialogClosed(HbAction* action)
+ {
+ HbDialog *dlg=static_cast<HbDialog*>(sender());
+ if(dlg->actions().first() == action) {
+ }
+ else if(dlg->actions().at(1) == action) {
+ }
+ else
+ {
+ QVariantMap val;
+ QVariant index(-1);
+ val.insert("selectedindex",index);
+ emit deviceDialogData(val);
+ emit deviceDialogClosed();
+ }
+ }
+
void BTDeviceSearchDialogWidget::selectionDialogClosed(HbAction* action)
{
Q_UNUSED(action);
--- a/bluetoothengine/btnotif/btdevicedialogplugin/src/btmoredevicesdialogwidget.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/src/btmoredevicesdialogwidget.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -29,24 +29,28 @@
BTMoreDevicesDialogWidget::BTMoreDevicesDialogWidget(const QVariantMap ¶meters)
-:HbDialog()
{
mDeviceDialogData = 0;
+ mLoader = 0;
+ mContentItemModel = 0;
constructDialog(parameters);
+/* try
+ {
+ //May throws badAlloc on exception
+ constructDialog(parameters);
+ }
+ catch(std::bad_alloc &badAlloc)
+ {
+ //Failure to allocate memory
+ Q_UNUSED(badAlloc);
+ // = UnknownDeviceDialogError;
+ }*/
}
BTMoreDevicesDialogWidget::~BTMoreDevicesDialogWidget()
{
- if(mLoader)
- {
- delete mLoader;
- mLoader = NULL;
- }
- if(mContentItemModel)
- {
- delete mContentItemModel;
- mContentItemModel =NULL;
- }
+ delete mLoader;
+ delete mContentItemModel;
}
bool BTMoreDevicesDialogWidget::setDeviceDialogParameters(const QVariantMap ¶meters)
@@ -75,11 +79,23 @@
void BTMoreDevicesDialogWidget::closeDeviceDialog(bool byClient)
{
Q_UNUSED(byClient);
- this->close();
+ // below code is required and written based on the documentation of closeDeviceDialog API
+ mMoreDeviceDialog->close();
+ QVariantMap val;
+ QVariant index(-1);
+ val.insert("selectedindex",index);
+ emit deviceDialogData(val);
+ //below signal is emitted to make dialog server aware that our dialog is closed
+ emit deviceDialogClosed();
}
HbPopup* BTMoreDevicesDialogWidget::deviceDialogWidget() const
{
+ return mMoreDeviceDialog;
+ }
+
+QObject* BTMoreDevicesDialogWidget::signalSender() const
+ {
return const_cast<BTMoreDevicesDialogWidget*>(this);
}
@@ -91,15 +107,18 @@
mLoader->load(DOCML_BT_MORE_DEV_DIALOG, &ok);
if(ok)
{
- HbLabel* label = qobject_cast<HbLabel*>(mLoader->findWidget("label"));
+ mMoreDeviceDialog = qobject_cast<HbDialog*>(mLoader->findWidget("lastuseddialog"));
+ mMoreDeviceDialog->setFrameType(HbDialog::Strong);
+ mMoreDeviceDialog->setBackgroundFaded(false);
+/* HbLabel* label = qobject_cast<HbLabel*>(mLoader->findWidget("label"));
if(label)
{
label->setTextWrapping(Hb::TextWordWrap);
label->setPlainText("Send to:");
}
- this->setHeadingWidget(label);
- HbPushButton* moreDevices = qobject_cast<HbPushButton*>(mLoader->findWidget("moreDevices"));
- HbPushButton* cancel = qobject_cast<HbPushButton*>(mLoader->findWidget("cancel"));
+ this->setHeadingWidget(label);*/
+ // HbPushButton* moreDevices = qobject_cast<HbPushButton*>(mLoader->findWidget("moreDevices"));
+ // HbPushButton* cancel = qobject_cast<HbPushButton*>(mLoader->findWidget("cancel"));
HbListView* listView = qobject_cast<HbListView*>(mLoader->findWidget("listView"));
listView->setSelectionMode(HbAbstractItemView::SingleSelection);
@@ -125,23 +144,32 @@
}*/
connect(listView, SIGNAL(activated(QModelIndex)), this, SLOT(deviceSelected(QModelIndex)));
- connect(moreDevices, SIGNAL(clicked()), this, SLOT(moreDevicesClicked()));
- connect(cancel, SIGNAL(clicked()), this, SLOT(cancelClicked()));
+ // connect(moreDevices, SIGNAL(clicked()), this, SLOT(moreDevicesClicked()));
+ // connect(cancel, SIGNAL(clicked()), this, SLOT(cancelClicked()));
+ mMoreAction = static_cast<HbAction*>( mLoader->findObject( "moreaction" ) );
+ mMoreAction->disconnect(mMoreDeviceDialog);
- QGraphicsWidget *widget = mLoader->findWidget(QString("container"));
- this->setContentWidget(widget);
+ mCancelAction = static_cast<HbAction*>( mLoader->findObject( "cancelaction" ) );
+ mCancelAction->disconnect(mMoreDeviceDialog);
+// QGraphicsWidget *widget = mLoader->findWidget(QString("container"));
+ // mMoreDeviceDialog->setContentWidget(widget);
+
+ connect(mMoreAction, SIGNAL(triggered()), this, SLOT(moreDevicesClicked()));
+ connect(mCancelAction, SIGNAL(triggered()), this, SLOT(cancelClicked()));
+
}
- this->setBackgroundFaded(false);
- setDismissPolicy(HbPopup::NoDismiss);
- setTimeout(HbPopup::NoTimeout);
+ mMoreDeviceDialog->setBackgroundFaded(false);
+ mMoreDeviceDialog->setDismissPolicy(HbPopup::NoDismiss);
+ mMoreDeviceDialog->setTimeout(HbPopup::NoTimeout);
return true;
}
-void BTMoreDevicesDialogWidget::hideEvent(QHideEvent *event)
+/*void BTMoreDevicesDialogWidget::hideEvent(QHideEvent *event)
{
- HbDialog::hideEvent(event);
+ //HbDialog::hideEvent(event);
+ mMoreDeviceDialog->hideEvent(event);
// if(mDeviceDialogData == 0)
{
QVariantMap val;
@@ -149,14 +177,14 @@
val.insert("selectedindex",index);
emit deviceDialogData(val);
emit deviceDialogClosed();
- }
+ }*/
//
- }
+ // }
-void BTMoreDevicesDialogWidget::showEvent(QShowEvent *event)
+/*void BTMoreDevicesDialogWidget::showEvent(QShowEvent *event)
{
- HbDialog::showEvent(event);
- }
+ //HbDialog::showEvent(event);
+ }*/
void BTMoreDevicesDialogWidget::moreDevicesClicked()
{
@@ -172,7 +200,12 @@
void BTMoreDevicesDialogWidget::cancelClicked()
{
// TODO
- this->close();
+ mMoreDeviceDialog->close();
+ QVariantMap val;
+ QVariant index(-1);
+ val.insert("selectedindex",index);
+ emit deviceDialogData(val);
+ emit deviceDialogClosed();
}
void BTMoreDevicesDialogWidget::deviceSelected(const QModelIndex& modelIndex)
@@ -181,10 +214,6 @@
QVariantMap val;
QVariant index(row);
val.insert("selectedindex",index);
-
-
-
-
emit deviceDialogData(val);
// mDeviceDialogData = 1;//flag is to say that device dialog data is emitted required when we cancel the dialog
// this->close();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/src/btrecvprgrsdialogwidget.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,177 @@
+/*
+* 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: BtDeviceDialogWidget class declaration.
+*
+*/
+
+
+#include "btrecvprgrsdialogwidget.h"
+#include "bluetoothdevicedialogs.h"
+
+const char* DOCML_BT_RECV_PRGRS_DIALOG = ":/docml/bt-recv-progress-dialog.docml";
+
+
+BTRecvPrgrsDialogWidget::BTRecvPrgrsDialogWidget(const QVariantMap ¶meters)
+{
+ mLoader = 0;
+ constructDialog(parameters);
+}
+
+BTRecvPrgrsDialogWidget::~BTRecvPrgrsDialogWidget()
+{
+ if(mLoader)
+ {
+ delete mLoader;
+ mLoader = NULL;
+ }
+}
+
+bool BTRecvPrgrsDialogWidget::setDeviceDialogParameters(const QVariantMap ¶meters)
+{
+ mProgressBar->setMinimum(0);
+ mProgressBar->setMaximum(mFileSz);
+ mProgressBar->setProgressValue(parameters.value("progress").toInt());
+ return true;
+}
+
+int BTRecvPrgrsDialogWidget::deviceDialogError() const
+{
+ return 0;
+}
+
+void BTRecvPrgrsDialogWidget::closeDeviceDialog(bool byClient)
+{
+ Q_UNUSED(byClient);
+ mDialog->close();
+}
+
+HbPopup* BTRecvPrgrsDialogWidget::deviceDialogWidget() const
+{
+ return mDialog;
+}
+
+QObject* BTRecvPrgrsDialogWidget::signalSender() const
+{
+ return const_cast<BTRecvPrgrsDialogWidget*>(this);
+}
+
+bool BTRecvPrgrsDialogWidget::constructDialog(const QVariantMap ¶meters)
+{
+ mLoader = new HbDocumentLoader();
+ bool ok = false;
+
+ mLoader->load(DOCML_BT_RECV_PRGRS_DIALOG, &ok);
+ if(ok)
+ {
+ mDialog = qobject_cast<HbDialog*>(mLoader->findWidget("senddialog"));
+ mHeading = qobject_cast<HbLabel*>(mLoader->findWidget("heading"));
+
+ mFileName = qobject_cast<HbLabel*>(mLoader->findWidget("fileName"));
+ mFileSize = qobject_cast<HbLabel*>(mLoader->findWidget("fileSize"));
+ mFileCount = qobject_cast<HbLabel*>(mLoader->findWidget("fileCount"));
+
+ //TODO - set icon based on the file icon.
+
+ mHide = qobject_cast<HbAction*>(mLoader->findObject("hideaction"));
+ mCancel = qobject_cast<HbAction*>(mLoader->findObject("cancelaction"));
+
+ mProgressBar = qobject_cast<HbProgressBar*>(mLoader->findWidget("horizontalProgressBar"));
+
+ int dialogType = parameters.value(QString::number(TBluetoothDialogParams::EDialogTitle)).toInt();
+ switch(dialogType)
+ {
+ case TBluetoothDialogParams::EReceive:
+ {
+ //TODO - Localization
+ QString headingStr(hbTrId("txt_bt_title_receiving_files_from_1"));
+ QString senderName(parameters.value(QString::number(TBluetoothDeviceDialog::EDeviceName)).toString());
+ mHeading->setPlainText(headingStr.arg(senderName));
+ }break;
+
+ default:
+ break;
+ }
+ mDialog->setHeadingWidget(mHeading);
+
+ mFileName->setPlainText(parameters.value(QString::number(TBluetoothDeviceDialog::EReceivingFileName)).toString());
+
+ mFileSz = parameters.value(QString::number(TBluetoothDeviceDialog::EReceivingFileSize)).toInt();
+ mProgressBar->setMinimum(0);
+ mProgressBar->setMaximum(mFileSz);
+ mProgressBar->setProgressValue(0);
+
+ //Format the file size into a more readable format
+ if ( mFileSz >> 20 ) // size in MB
+ {
+ float sizeInMB = 0;
+ sizeInMB = ((float)mFileSz ) / (1024*1024);
+ QString fileSzMb;
+ fileSzMb.setNum(sizeInMB);
+ fileSzMb.append(QString(" Mb"));
+ mFileSize->setPlainText(fileSzMb);
+ }
+
+ else if( mFileSz >> 10 ) // size in KB
+ {
+ TInt64 sizeInKB = 0;
+ sizeInKB = mFileSz >> 10;
+ QString fileSzKb;
+ fileSzKb.setNum(sizeInKB);
+ fileSzKb.append(QString(" Kb"));
+ mFileSize->setPlainText(fileSzKb);
+ }
+
+ else // size is unknown or less than 1K
+ {
+ QString fileSzB;
+ fileSzB.setNum(mFileSz);
+ fileSzB.append(QString(" Bytes"));
+ mFileSize->setPlainText(fileSzB);
+ }
+
+ //TODO - Set the received file count
+/*
+ int count = parameters.value(QString::number(TBluetoothDeviceDialog::EReceivedFileCount)).toInt();
+ QString fileCntStr;
+ fileCntStr.setNum(count);
+ mFileCount->setPlainText(fileCntStr);
+*/
+ }
+
+ mDialog->setBackgroundFaded(false);
+ mDialog->setDismissPolicy(HbPopup::NoDismiss);
+ mDialog->setTimeout(HbPopup::NoTimeout);
+
+ connect(mHide, SIGNAL(triggered()), this, SLOT(hideClicked()));
+ connect(mCancel, SIGNAL(triggered()), this, SLOT(cancelClicked()));
+
+ return true;
+}
+
+void BTRecvPrgrsDialogWidget::hideClicked()
+{
+ QVariantMap data;
+ data.insert(QString("actionResult"), QVariant(true));
+ emit deviceDialogData(data);
+ emit deviceDialogClosed();
+}
+
+void BTRecvPrgrsDialogWidget::cancelClicked()
+{
+ QVariantMap data;
+ data.insert(QString("actionResult"), QVariant(false));
+ emit deviceDialogData(data);
+ emit deviceDialogClosed();
+}
+
--- a/bluetoothengine/btnotif/btdevicedialogplugin/src/btsenddialogwidget.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/src/btsenddialogwidget.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -25,51 +25,46 @@
#include "btsenddialogwidget.h"
+#define LOC_SENDING_FILES_TO_DEVICE hbTrId("txt_bt_title_sending_file_l1l2_to_3")
const char* DOCML_BT_SEND_DIALOG = ":/docml/bt-send-dialog.docml";
BTSendDialogWidget::BTSendDialogWidget(const QVariantMap ¶meters)
-:HbDialog()
{
- // LOG(ELevel1,_L("BTSendDialogWidget::BTSendDialogWidget"));
+ mLoader = 0;
constructDialog(parameters);
-
}
BTSendDialogWidget::~BTSendDialogWidget()
{
- if(mLoader)
- {
- delete mLoader;
- mLoader = NULL;
- }
- if(mContentItemModel)
+ delete mLoader;
+ /* if(mContentItemModel)
{
delete mContentItemModel;
mContentItemModel = NULL;
- }
+ }*/
}
bool BTSendDialogWidget::setDeviceDialogParameters(const QVariantMap ¶meters)
{
- // LOG(ELevel1,_L("BTSendDialogWidget::setDeviceDialogParameters "));
-
if(mFileIndex != parameters.value("currentFileIdx").toString().toInt() )
{
- mLabel->setTextWrapping(Hb::TextWordWrap);
- mLabel->setAlignment(Qt::AlignHCenter);
+ mDialogHeading->setTextWrapping(Hb::TextWordWrap);
+ mDialogHeading->setAlignment(Qt::AlignHCenter);
//Todo - replace this with the actual text from parameters
- QString headLabel;
- headLabel.append(QString("Sending file "));
+ QString headLabel = QString(LOC_SENDING_FILES_TO_DEVICE).arg(parameters.value("currentFileIdx").toInt())
+ .arg(parameters.value("totalFilesCnt").toInt())
+ .arg(parameters.value("destinationName").toString());
+ /* headLabel.append(QString("Sending file "));
headLabel.append(parameters.value("currentFileIdx").toString());
headLabel.append('/');
headLabel.append(parameters.value("totalFilesCnt").toString());
headLabel.append(QString(" to "));
- headLabel.append(parameters.value("destinationName").toString());
- mLabel->setPlainText(headLabel);
+ headLabel.append(parameters.value("destinationName").toString());*/
+ mDialogHeading->setPlainText(headLabel);
- QStringList info;
+ /* QStringList info;
info.append(parameters.value("fileName").toString());
info.append(parameters.value("fileSzTxt").toString());
@@ -77,7 +72,7 @@
// parameters.
listitem->setData(info, Qt::DisplayRole);
- //Todo - Insert icons based on the device class
+ //Todo - Insert file icons here thumbnail icon
QIcon icon(QString(":/icons/qtg_large_bluetooth.svg"));
listitem->setIcon(icon);
@@ -85,8 +80,12 @@
mContentItemModel = new QStandardItemModel(this);
mListView->setModel(mContentItemModel);//, prototype);
- mContentItemModel->appendRow(listitem);
-
+ mContentItemModel->appendRow(listitem);*/
+ //Todo - Insert file icons here thumbnail icon
+ QIcon icon(QString(":/icons/qtg_large_bluetooth.svg"));
+ mFileIconLabel->setIcon(icon);
+ mFileNameLabel->setPlainText(parameters.value("fileName").toString());
+ mFileSizeLabel->setPlainText(parameters.value("fileSzTxt").toString());
mProgressBar->setMinimum(0);
mProgressBar->setProgressValue(0);
mProgressBar->setMaximum(parameters.value("fileSz").toInt());
@@ -96,7 +95,6 @@
{
mProgressBar->setProgressValue(parameters.value("progressValue").toInt());
}
- // LOG(ELevel1,_L("BTSendDialogWidget::setDeviceDialogParameters Completed"));
return true;
}
@@ -108,12 +106,14 @@
void BTSendDialogWidget::closeDeviceDialog(bool byClient)
{
Q_UNUSED(byClient);
- this->close();
+ mSendDialog->close();
+// below redundant call is required because of the api documentation.
+ emit deviceDialogClosed();
}
HbPopup* BTSendDialogWidget::deviceDialogWidget() const
{
- return const_cast<BTSendDialogWidget*>(this);
+ return mSendDialog;
}
QObject *BTSendDialogWidget::signalSender() const
@@ -123,46 +123,53 @@
bool BTSendDialogWidget::constructDialog(const QVariantMap&/*parameters*/)
{
- // LOG(ELevel1,_L("BTSendDialogWidget::constructDialog "));
mLoader = new HbDocumentLoader();
bool ok = false;
mLoader->load(DOCML_BT_SEND_DIALOG, &ok);
if(ok)
{
- mLabel = qobject_cast<HbLabel*>(mLoader->findWidget("heading"));
- this->setHeadingWidget(mLabel);
- mListView = qobject_cast<HbListView*>(mLoader->findWidget("listView"));
+ mSendDialog = qobject_cast<HbDialog*>(mLoader->findWidget("senddialog"));
+ mDialogHeading = qobject_cast<HbLabel*>(mLoader->findWidget("heading"));
+ mFileIconLabel = qobject_cast<HbLabel*>(mLoader->findWidget("fileiconlabel"));
+ mFileNameLabel = qobject_cast<HbLabel*>(mLoader->findWidget("filenamelabel"));
+ mFileSizeLabel = qobject_cast<HbLabel*>(mLoader->findWidget("filesizelabel"));
+ // mSendDialog->setHeadingWidget(mLabel);
+ /* mListView = qobject_cast<HbListView*>(mLoader->findWidget("listView"));
if(mListView)
{
- //Todo - replace this with the actual text from parameters
mContentItemModel = new QStandardItemModel(this);
mListView->setModel(mContentItemModel);//, prototype);
- }
+ }*/
mProgressBar = qobject_cast<HbProgressBar*>(mLoader->findWidget("horizontalProgressBar"));
- HbAction* hide = new HbAction("Hide");
- HbAction* cancel = new HbAction("Cancel");
+ // HbAction* hide = new HbAction("Hide");
+ // HbAction* cancel = new HbAction("Cancel");
- this->addAction(hide);
- this->addAction(cancel);
+ // this->addAction(hide);
+ // this->addAction(cancel);
- QGraphicsWidget *widget = mLoader->findWidget(QString("container"));
- this->setContentWidget(widget);
+ // QGraphicsWidget *widget = mLoader->findWidget(QString("container"));
+ // this->setContentWidget(widget);
}
- this->setBackgroundFaded(false);
- setDismissPolicy(HbPopup::NoDismiss);
- setTimeout(HbPopup::NoTimeout);
-
- this->actions().first()->disconnect(this);
- connect(this, SIGNAL(finished(HbAction*)), this, SLOT(inputClosed(HbAction*)));
+ mSendDialog->setBackgroundFaded(false);
+ mSendDialog->setDismissPolicy(HbPopup::NoDismiss);
+ mSendDialog->setTimeout(HbPopup::NoTimeout);
+ mHideAction = static_cast<HbAction*>( mLoader->findObject( "hideaction" ) );
+ mHideAction->disconnect(mSendDialog);
+
+ mCancelAction = static_cast<HbAction*>( mLoader->findObject( "cancelaction" ) );
+ mCancelAction->disconnect(mSendDialog);
+
+ connect(mCancelAction, SIGNAL(triggered()), this, SLOT(cancelClicked()));
+
return true;
}
-void BTSendDialogWidget::hideEvent(QHideEvent *event)
+/*void BTSendDialogWidget::hideEvent(QHideEvent *event)
{
HbDialog::hideEvent(event);
emit deviceDialogClosed();
@@ -171,23 +178,22 @@
void BTSendDialogWidget::showEvent(QShowEvent *event)
{
HbDialog::showEvent(event);
- }
+ }*/
/*void BTSendDialogWidget::hideClicked()
{
// TODO
this->close();
emit deviceDialogClosed();
- }
+ }*/
void BTSendDialogWidget::cancelClicked()
{
- // TODO
- this->close();
+ mSendDialog->close();
emit deviceDialogClosed();
- }*/
+ }
-void BTSendDialogWidget::inputClosed(HbAction* action)
+/*void BTSendDialogWidget::inputClosed(HbAction* action)
{
QVariantMap data;
@@ -196,5 +202,5 @@
}
else if(dlg->actions().at(1) == action) {
}
- }
+ }*/
--- a/bluetoothengine/btnotif/btnotifsrv/inc/btnotifbasepairinghandler.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btnotifsrv/inc/btnotifbasepairinghandler.h Wed Jun 23 18:23:52 2010 +0300
@@ -24,7 +24,7 @@
#include <btengconstants.h>
#include <btservices/btsimpleactive.h>
-class CBTNotifPairingManager;
+class CBTNotifSecurityManager;
/**
* Class CBTNotifBasePairingHandler
@@ -94,6 +94,12 @@
* @param the required minimum length of a pin code.
*/
virtual void GetPinCode( TBTPinCode& aPin, const TBTDevAddr& aAddr, TInt aMinPinLength );
+
+ /**
+ * Show a dialog for pairing success or failure
+ * @param aResult The result of the pairing
+ */
+ void ShowPairingResultNoteL(TInt aResult);
protected:
@@ -118,7 +124,7 @@
/**
* C++ default constructor
*/
- CBTNotifBasePairingHandler(CBTNotifPairingManager& aParent, const TBTDevAddr& aAddr);
+ CBTNotifBasePairingHandler(CBTNotifSecurityManager& aParent, const TBTDevAddr& aAddr);
/**
* Symbian 2nd-phase constructor
@@ -161,7 +167,7 @@
/**
* Reference to the owner of this object.
*/
- CBTNotifPairingManager& iParent;
+ CBTNotifSecurityManager& iParent;
/**
* Active object helper for asynchronous operations.
--- a/bluetoothengine/btnotif/btnotifsrv/inc/btnotifconnectiontracker.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btnotifsrv/inc/btnotifconnectiontracker.h Wed Jun 23 18:23:52 2010 +0300
@@ -26,7 +26,7 @@
class CBTNotificationManager;
class CbtnotifConnectionTrackerTest;
-class CBTNotifPairingManager;
+class CBTNotifSecurityManager;
@@ -91,14 +91,14 @@
{ return iSockServ; }
/**
- * Processes a message for notifiers related to pairings.
+ * Processes a message for notifiers related to remote devices.
* ( These are usually issued by BT stack. However, any application
* is not restricted to do so (e.g., for testing purpose).
*
* @since Symbian^4
* @param aMessage The message containing the details of the client request.
*/
- void HandlePairingNotifierRequestL( const RMessage2& aMessage );
+ void HandleNotifierRequestL( const RMessage2& aMessage );
/**
* Handle a request related to pairing.
@@ -167,7 +167,7 @@
* Object for managing the application pairing.
* Own.
*/
- CBTNotifPairingManager* iPairingManager;
+ CBTNotifSecurityManager* iPairingManager;
BTUNITTESTHOOK
--- a/bluetoothengine/btnotif/btnotifsrv/inc/btnotifincomingpairinghandler.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btnotifsrv/inc/btnotifincomingpairinghandler.h Wed Jun 23 18:23:52 2010 +0300
@@ -38,7 +38,7 @@
* @param aParent the owner of this observer
* @param aAddr the remote device this observer is targeted to
*/
- static CBTNotifBasePairingHandler* NewL( CBTNotifPairingManager& aParent,
+ static CBTNotifBasePairingHandler* NewL( CBTNotifSecurityManager& aParent,
const TBTDevAddr& aAddr);
/**
@@ -120,7 +120,7 @@
/**
* C++ default constructor
*/
- CBTNotifIncomingPairingHandler(CBTNotifPairingManager& aParent, const TBTDevAddr& aAddr);
+ CBTNotifIncomingPairingHandler(CBTNotifSecurityManager& aParent, const TBTDevAddr& aAddr);
/**
* 2nd phase constructor.
--- a/bluetoothengine/btnotif/btnotifsrv/inc/btnotifoutgoingpairinghandler.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btnotifsrv/inc/btnotifoutgoingpairinghandler.h Wed Jun 23 18:23:52 2010 +0300
@@ -63,7 +63,7 @@
* @param aParent the owner of this object
* @param aAddr the remote device this observer is targeted to
*/
- static CBTNotifBasePairingHandler* NewL( CBTNotifPairingManager& aParent,
+ static CBTNotifBasePairingHandler* NewL( CBTNotifSecurityManager& aParent,
const TBTDevAddr& aAddr );
/**
@@ -157,7 +157,7 @@
/**
* C++ default constructor
*/
- CBTNotifOutgoingPairingHandler( CBTNotifPairingManager& aParent, const TBTDevAddr& aAddr );
+ CBTNotifOutgoingPairingHandler( CBTNotifSecurityManager& aParent, const TBTDevAddr& aAddr );
/**
* Symbian 2nd-phase constructor
--- a/bluetoothengine/btnotif/btnotifsrv/inc/btnotifpairingmanager.h Fri Jun 11 13:48:51 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,400 +0,0 @@
-/*
-* 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:
-*
-*/
-
-#ifndef BTNOTIFPAIRINGMANAGER_H
-#define BTNOTIFPAIRINGMANAGER_H
-
-#include <bttypes.h>
-#include <bt_sock.h>
-#include <bluetooth/pairing.h>
-#include <btservices/btsimpleactive.h>
-#include <btservices/btdevrepository.h>
-#include <btengconstants.h>
-
-class CBTNotifBasePairingHandler;
-class CBTNotifPairNotifier;
-class CBTNotifConnectionTracker;
-class CBtDevRepository;
-
-/**
- * Class CBTNotifPairingManager
- *
- * This class manages pairing with BT devices.
- * The responsibility of handling incoming and outgoing pairings is
- * delegated to CBTNotifIncomingPairingHandler and CBTNotifOutgoingPairingHandler
- * respectively.
- *
- * @since Symbian^4
- */
-NONSHARABLE_CLASS( CBTNotifPairingManager ) :
- public CBase,
- public MBtSimpleActiveObserver,
- public MBtDevRepositoryObserver
- {
-public:
-
- /**
- * Two-phase constructor
- */
- static CBTNotifPairingManager* NewL(
- CBTNotifConnectionTracker& aParent,
- CBtDevRepository& aDevRepository );
-
- /**
- * Destructor
- */
- ~CBTNotifPairingManager();
-
- /**
- * Cancels an outstanding pairing request.
- */
- void CancelOutgoingPair();
-
- /**
- * Process commands relevant to pairing
- */
- void HandleBondingRequestL( const RMessage2& aMessage );
-
- void HandlePairingNotifierRequestL( const RMessage2& aMessage );
-
- /**
- * Gets the instance of pairing server.
- * @return the server instance. NULL if dedicated bonding is unavailable.
- */
- RBluetoothPairingServer* PairingServer();
-
- /**
- * gets the reference of socket server session
- */
- RSocketServ& SocketServ();
-
- /**
- * gets the reference of devrepository.
- */
- CBtDevRepository& BTDevRepository();
-
- /**
- * gets the reference of connection tracker.
- */
- CBTNotifConnectionTracker& ConnectionTracker();
-
- /**
- * Transfer responsiblity to the specified object.
- * @param aPairer the object whose the responsibility is transfered.
- */
- void RenewPairingHandler( CBTNotifBasePairingHandler* aPairingHandler );
-
- /**
- * Be notified when handling of an outgoing pair has been completed.
- * @param aErr the result of pairing
- *
- */
- void OutgoingPairCompleted( TInt aErr );
-
- /**
- * Be informed that a session will be closed.
- *
- * @since Symbian^4
- * @param aSession the session to be cloased.
- */
- void SessionClosed(CSession2* aSession );
-
- /**
- * Unpair a device via registry
- */
- void UnpairDevice( const TBTDevAddr& aAddr );
-
- /**
- * Add the bit indicating the device is user-aware Just worked paired to
- * UI cookie.
- */
- TInt AddUiCookieJustWorksPaired( const TBTNamelessDevice& aDev );
-
- /**
- * Update a nameless device in registry
- */
- TInt UpdateRegDevice( const TBTNamelessDevice& aDev );
-
- /**
- * Gets the pin code to be used for pairing a device.
- * @param aPin contains the pin code if it is not empty
- * @param aAddr the device to which pairing is performed.
- * @param the required minimum length of a pin code.
- */
- void GetPinCode( TBTPinCode& aPin, const TBTDevAddr& aAddr, TInt aMinPinLength );
-
- /**
- * Returns the service (limited to services managed in bteng scope)
- * level connection status of the specified device.
- *
- * @param aAddr the address of the device
- * @return one of TBTEngConnectionStatus enums
- */
- TBTEngConnectionStatus ConnectStatus( const TBTDevAddr& aAddr );
-
-private:
-
- // from base class MBtSimpleActiveObserver
-
- /**
- *
- * Callback to notify that an outstanding request has completed.
- *
- * @since Symbian^4
- * @param aActive Pointer to the active object that completed.
- * @param aId The ID that identifies the outstanding request.
- * @param aStatus The status of the completed request.
- */
- virtual void RequestCompletedL( CBtSimpleActive* aActive, TInt aStatus );
-
- /**
- * Callback from Docancel() for handling cancelation of an outstanding request.
- *
- * @since Symbian^4
- * @param aId The ID that identifies the outstanding request.
- */
- virtual void CancelRequest( TInt aRequestId );
-
- /**
- * Callback to notify that an error has occurred in RunL.
- *
- * @since Symbian^4
- * @param aActive Pointer to the active object that completed.
- * @param aId The ID that identifies the outstanding request.
- * @param aStatus The status of the completed request.
- */
- virtual void HandleError( CBtSimpleActive* aActive, TInt aError );
-
- // From base class MBtDevRepositoryObserver
-
- /**
- * Callback to notify that the repository has finished initialization.
- * Initialization completion means the repository has retieved all
- * Bluetooth devices from BT registry, and it is subscribing to
- * registry update events.
- */
- virtual void RepositoryInitialized();
-
- /**
- * Callback to notify that a device has been deleted from BT registry.
- *
- *
- * @param aAddr the bd_addr of the deleted device
- */
- virtual void DeletedFromRegistry( const TBTDevAddr& aAddr );
-
- /**
- * Callback to notify that the device has been added to BT registry.
- *
- * @param aDevice the device that has been added to registry
- */
- virtual void AddedToRegistry( const CBtDevExtension& aDevice );
-
- /**
- * Callback to notify that the property of a device in BT registry has been
- * changed.
- *
- * @param aDevice the device that possesses the latest properties.
- * @param aSimilarity the similarity of the properties comparing to the ones
- * prior to this change.
- * Refer CBTDevice::TBTDeviceNameSelector and
- * TBTNamelessDevice::TBTDeviceSet for the meanings of the bits
- * in this parameter.
- */
- virtual void ChangedInRegistry(
- const CBtDevExtension& aDevice, TUint aSimilarity );
-
- /**
- * Callback to notify that the status of service (limited to
- * services maintained in btengsrv scope) connections with
- * a device has changed.
- *
- * @param aDevice the device to which the status change refers
- * @param aConnected ETrue if at least one service is currently connected.
- * EFalse if no service is currently connected.
- */
- virtual void ServiceConnectionChanged(
- const CBtDevExtension& aDevice, TBool aConnected );
-
-
-private:
-
- /**
- * C++ default constructor
- */
- CBTNotifPairingManager(
- CBTNotifConnectionTracker& aParent,
- CBtDevRepository& aDevRepository );
-
- /**
- * Symbian 2nd-phase constructor
- */
- void ConstructL();
-
- /**
- * Subscribe local device address for determining
- * Bluetooth HW power status
- */
- void SubscribeLocalAddress();
-
- TBool IsLocalAddressAvailable();
-
- /**
- * Activate / deactivate a pair observer
- */
- TInt SetPairObserver(const TBTDevAddr& aAddr, TBool aActivate);
-
- /**
- * Pair a BT device.
- */
- void PairDeviceL( const TBTDevAddr& aAddr, TUint32 aCod );
-
- /**
- * Cancel all subscribes to pairng server
- */
- void CancelSubscribePairingAuthenticate();
-
- /**
- * subscribe to receive SSP pairing result from pairing server
- */
- void SubscribeSspPairingResult();
-
- /**
- * Subscribe to receive authentication result from pairing server
- */
- void SubscribeAuthenticateResult();
-
- /**
- * Handle a pairing result from the pairing server.
- *
- * @since Symbian^4
- * @param aResult The status code of the authentication result.
- */
- void HandlePairingResultL( const TBTDevAddr& aAddr, TInt aResult );
-
- /**
- * Copy the paired devices to internal array storage.
- */
- void UpdatePairedDeviceListL();
-
- /**
- * Handles a new bonding event from Registry.
- */
- void HandleRegistryBondingL( const TBTNamelessDevice& aNameless );
-
-
-private:
-
- /**
- * Owner of this class.
- * Not owned.
- */
- CBTNotifConnectionTracker& iParent;
-
- /**
- * Reference to repository.
- * Not owned.
- */
- CBtDevRepository& iDevRepository;
-
- /**
- * The session with BT registry.
- * own.
- */
- RBTRegistry iRegistry;
-
- /**
- * contains the list of all paired devices.
- */
- RArray<TBTNamelessDevice> iPairedDevices;
-
- /**
- * Session with the pairing server.
- * Allocate it in heap to ease the handling for
- * situation of unavailable dedicated pairing service.
- *
- * own.
- */
- RBluetoothPairingServer* iPairingServ;
-
- /**
- * Subsession with the pairing server for
- * getting the simple pairing result.
- * own
- */
- RBluetoothPairingResult iPairingResult;
-
- /**
- * Subsession with the pairing server for
- * getting the authentication result.
- * own
- */
- RBluetoothAuthenticationResult iAuthenResult;
-
- /**
- * the address with which a simple pairing has been performed
- */
- TBTDevAddr iSimplePairingRemote;
-
- /**
- * the address with which an authentication has been performed
- */
- TBTDevAddr iAuthenticateRemote;
-
- /**
- * Active object helper for receiving simple pairing results.
- * Own.
- */
- CBtSimpleActive* iSSPResultActive;
-
- /**
- * Active object helper for receiving authentication results.
- * Own.
- */
- CBtSimpleActive* iAuthenResultActive;
-
- /**
- * pairing hanlder at the time.
- * Own.
- */
- CBTNotifBasePairingHandler* iPairingHandler;
-
- /**
- * The handler for pairing notifiers
- */
- CBTNotifPairNotifier* iPairNotifier;
-
- /**
- * Client-server message for power change requests.
- */
- RMessage2 iMessage;
-
- /**
- * AO for local address updates.
- */
- CBtSimpleActive* iLocalAddrActive;
-
- /**
- * Provides access to the BT local device address.
- */
- RProperty iPropertyLocalAddr;
- };
-
-#endif /*BTNOTIFPAIRINGMANAGER_H*/
-
-
-
--- a/bluetoothengine/btnotif/btnotifsrv/inc/btnotifpairnotifier.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btnotifsrv/inc/btnotifpairnotifier.h Wed Jun 23 18:23:52 2010 +0300
@@ -20,16 +20,17 @@
#include <e32base.h>
#include <btmanclient.h>
+#include <hb/hbcore/hbsymbianvariant.h>
#include "bluetoothdevicedialogs.h"
#include "btnotificationresult.h"
#include "bluetoothtrace.h"
-class CBTNotifPairingManager;
+class CBTNotifSecurityManager;
class CBTNotifConnectionTracker;
class CBluetoothNotification;
/**
- * Helper class for performing user prompt for pairing and authorization.
+ * Helper class for performing user prompt for pairing.
*
* The design of this class is focussed on structure and maintainability first.
* Duplicate (state) information is kept to a minimum. And memory usage comes
@@ -37,8 +38,6 @@
* only instantiated when there is pairing-related processing, so extreme
* focus on memory or processing efficiency would have relatively little effect.
*
- * Auth represents Authenticate and Authorize
- *
* @since Symbian^4
*/
NONSHARABLE_CLASS( CBTNotifPairNotifier ) : public CBase,
@@ -53,7 +52,7 @@
* @param aDevice Pointer to information of the remote device.
* aParam The owner of this object
*/
- static CBTNotifPairNotifier* NewL( CBTNotifPairingManager& aParent );
+ static CBTNotifPairNotifier* NewL( CBTNotifSecurityManager& aParent );
/**
* Destructor.
@@ -118,7 +117,7 @@
/**
* C++ default constructor.
*/
- CBTNotifPairNotifier( CBTNotifPairingManager& aParent );
+ CBTNotifPairNotifier( CBTNotifSecurityManager& aParent );
/**
* Symbian 2nd-phase constructor.
@@ -154,7 +153,7 @@
* @param aResult The user response; ETrue if the user accepted the query,
* otherwise EFalse.
*/
- void CompleteAcceptPairingQueryL( TInt aError, TBool aResult );
+ void CompleteAcceptPairingQueryL( TInt aError);
/**
* Parse the parameters of a request for pairing.
@@ -231,13 +230,6 @@
*/
void NotificationClosedL( TInt aError, const TDesC8& aData );
- /**
- * Ask the user if he/she wants to block future connection requests.
- *
- * @since Symbian^4
- */
- void LaunchBlockingQueryL();
-
private: // data
enum TNotifierState
@@ -246,7 +238,7 @@
EPairingInputConfirm,
};
- CBTNotifPairingManager& iParent;
+ CBTNotifSecurityManager& iParent;
/**
* The client request.
@@ -290,6 +282,11 @@
TNotifierState iState;
+ // Defines if the check box in the dialog is checked or not.
+ TBool iCheckBoxState;
+
+ TBool iAcceptPairingResult;
+
BTUNITTESTHOOK
};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btnotif/btnotifsrv/inc/btnotifsecuritymanager.h Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,413 @@
+/*
+* 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:
+*
+*/
+
+#ifndef BTNOTIFSECURITYMANAGER_H
+#define BTNOTIFSECURITYMANAGER_H
+
+#include <bttypes.h>
+#include <bt_sock.h>
+#include <bluetooth/pairing.h>
+#include <btservices/btsimpleactive.h>
+#include <btservices/btdevrepository.h>
+#include <btengconstants.h>
+
+class CBTNotifBasePairingHandler;
+class CBTNotifPairNotifier;
+class CBTNotifConnectionTracker;
+class CBtDevRepository;
+class CBTNotifServiceAuthorizer;
+
+/**
+ * Class CBTNotifSecurityManager
+ *
+ * This class manages pairing with BT devices.
+ * The responsibility of handling incoming and outgoing pairings is
+ * delegated to CBTNotifIncomingPairingHandler and CBTNotifOutgoingPairingHandler
+ * respectively.
+ *
+ * @since Symbian^4
+ */
+NONSHARABLE_CLASS( CBTNotifSecurityManager ) :
+ public CBase,
+ public MBtSimpleActiveObserver,
+ public MBtDevRepositoryObserver
+ {
+public:
+
+ /**
+ * Two-phase constructor
+ */
+ static CBTNotifSecurityManager* NewL(
+ CBTNotifConnectionTracker& aParent,
+ CBtDevRepository& aDevRepository );
+
+ /**
+ * Destructor
+ */
+ ~CBTNotifSecurityManager();
+
+ /**
+ * Cancels an outstanding pairing request.
+ */
+ void CancelOutgoingPair();
+
+ /**
+ * Process commands relevant to pairing
+ */
+ void HandleBondingRequestL( const RMessage2& aMessage );
+
+ void HandleNotifierRequestL( const RMessage2& aMessage );
+
+ /**
+ * Gets the instance of pairing server.
+ * @return the server instance. NULL if dedicated bonding is unavailable.
+ */
+ RBluetoothPairingServer* PairingServer();
+
+ /**
+ * gets the reference of socket server session
+ */
+ RSocketServ& SocketServ();
+
+ /**
+ * gets the reference of devrepository.
+ */
+ CBtDevRepository& BTDevRepository();
+
+ /**
+ * gets the reference of connection tracker.
+ */
+ CBTNotifConnectionTracker& ConnectionTracker();
+
+ /**
+ * Transfer responsiblity to the specified object.
+ * @param aPairer the object whose the responsibility is transfered.
+ */
+ void RenewPairingHandler( CBTNotifBasePairingHandler* aPairingHandler );
+
+ /**
+ * Be notified when handling of an outgoing pair has been completed.
+ * @param aErr the result of pairing
+ *
+ */
+ void OutgoingPairCompleted( TInt aErr );
+
+ /**
+ * Be informed that a session will be closed.
+ *
+ * @since Symbian^4
+ * @param aSession the session to be cloased.
+ */
+ void SessionClosed(CSession2* aSession );
+
+ /**
+ * Unpair a device via registry
+ */
+ void UnpairDevice( const TBTDevAddr& aAddr );
+
+ /**
+ * Block a device via registry
+ */
+ void BlockDevice( const TBTDevAddr& aAddr , TBool aBanned);
+
+ /**
+ * Add the bit indicating the device is user-aware Just worked paired to
+ * UI cookie.
+ */
+ TInt AddUiCookieJustWorksPaired( const TBTNamelessDevice& aDev );
+
+ /**
+ * Update a nameless device in registry
+ */
+ TInt UpdateRegDevice( const TBTNamelessDevice& aDev );
+
+ /**
+ * Gets the pin code to be used for pairing a device.
+ * @param aPin contains the pin code if it is not empty
+ * @param aAddr the device to which pairing is performed.
+ * @param the required minimum length of a pin code.
+ */
+ void GetPinCode( TBTPinCode& aPin, const TBTDevAddr& aAddr, TInt aMinPinLength );
+
+ /**
+ * Returns the service (limited to services managed in bteng scope)
+ * level connection status of the specified device.
+ *
+ * @param aAddr the address of the device
+ * @return one of TBTEngConnectionStatus enums
+ */
+ TBTEngConnectionStatus ConnectStatus( const TBTDevAddr& aAddr );
+
+ /**
+ * Activate / deactivate a pair observer
+ */
+ TInt SetPairObserver(const TBTDevAddr& aAddr, TBool aActivate);
+
+ /**
+ * Trust a device via the registry
+ */
+ void TrustDevice( const TBTDevAddr& aAddr );
+
+private:
+
+ // from base class MBtSimpleActiveObserver
+
+ /**
+ *
+ * Callback to notify that an outstanding request has completed.
+ *
+ * @since Symbian^4
+ * @param aActive Pointer to the active object that completed.
+ * @param aId The ID that identifies the outstanding request.
+ * @param aStatus The status of the completed request.
+ */
+ virtual void RequestCompletedL( CBtSimpleActive* aActive, TInt aStatus );
+
+ /**
+ * Callback from Docancel() for handling cancelation of an outstanding request.
+ *
+ * @since Symbian^4
+ * @param aId The ID that identifies the outstanding request.
+ */
+ virtual void CancelRequest( TInt aRequestId );
+
+ /**
+ * Callback to notify that an error has occurred in RunL.
+ *
+ * @since Symbian^4
+ * @param aActive Pointer to the active object that completed.
+ * @param aId The ID that identifies the outstanding request.
+ * @param aStatus The status of the completed request.
+ */
+ virtual void HandleError( CBtSimpleActive* aActive, TInt aError );
+
+ // From base class MBtDevRepositoryObserver
+
+ /**
+ * Callback to notify that the repository has finished initialization.
+ * Initialization completion means the repository has retieved all
+ * Bluetooth devices from BT registry, and it is subscribing to
+ * registry update events.
+ */
+ virtual void RepositoryInitialized();
+
+ /**
+ * Callback to notify that a device has been deleted from BT registry.
+ *
+ *
+ * @param aAddr the bd_addr of the deleted device
+ */
+ virtual void DeletedFromRegistry( const TBTDevAddr& aAddr );
+
+ /**
+ * Callback to notify that the device has been added to BT registry.
+ *
+ * @param aDevice the device that has been added to registry
+ */
+ virtual void AddedToRegistry( const CBtDevExtension& aDevice );
+
+ /**
+ * Callback to notify that the property of a device in BT registry has been
+ * changed.
+ *
+ * @param aDevice the device that possesses the latest properties.
+ * @param aSimilarity the similarity of the properties comparing to the ones
+ * prior to this change.
+ * Refer CBTDevice::TBTDeviceNameSelector and
+ * TBTNamelessDevice::TBTDeviceSet for the meanings of the bits
+ * in this parameter.
+ */
+ virtual void ChangedInRegistry(
+ const CBtDevExtension& aDevice, TUint aSimilarity );
+
+ /**
+ * Callback to notify that the status of service (limited to
+ * services maintained in btengsrv scope) connections with
+ * a device has changed.
+ *
+ * @param aDevice the device to which the status change refers
+ * @param aConnected ETrue if at least one service is currently connected.
+ * EFalse if no service is currently connected.
+ */
+ virtual void ServiceConnectionChanged(
+ const CBtDevExtension& aDevice, TBool aConnected );
+
+
+private:
+
+ /**
+ * C++ default constructor
+ */
+ CBTNotifSecurityManager(
+ CBTNotifConnectionTracker& aParent,
+ CBtDevRepository& aDevRepository );
+
+ /**
+ * Symbian 2nd-phase constructor
+ */
+ void ConstructL();
+
+ /**
+ * Subscribe local device address for determining
+ * Bluetooth HW power status
+ */
+ void SubscribeLocalAddress();
+
+ TBool IsLocalAddressAvailable();
+
+ /**
+ * Pair a BT device.
+ */
+ void PairDeviceL( const TBTDevAddr& aAddr, TUint32 aCod );
+
+ /**
+ * Cancel all subscribes to pairng server
+ */
+ void CancelSubscribePairingAuthenticate();
+
+ /**
+ * subscribe to receive SSP pairing result from pairing server
+ */
+ void SubscribeSspPairingResult();
+
+ /**
+ * Subscribe to receive authentication result from pairing server
+ */
+ void SubscribeAuthenticateResult();
+
+ /**
+ * Handle a pairing result from the pairing server.
+ *
+ * @since Symbian^4
+ * @param aResult The status code of the authentication result.
+ */
+ void HandlePairingResultL( const TBTDevAddr& aAddr, TInt aResult );
+
+ /**
+ * Copy the paired devices to internal array storage.
+ */
+ void UpdatePairedDeviceListL();
+
+ /**
+ * Handles a new bonding event from Registry.
+ */
+ void HandleRegistryBondingL( const TBTNamelessDevice& aNameless );
+
+
+private:
+
+ /**
+ * Owner of this class.
+ * Not owned.
+ */
+ CBTNotifConnectionTracker& iParent;
+
+ /**
+ * Reference to repository.
+ * Not owned.
+ */
+ CBtDevRepository& iDevRepository;
+
+ /**
+ * The session with BT registry.
+ * own.
+ */
+ RBTRegistry iRegistry;
+
+ /**
+ * contains the list of all paired devices.
+ */
+ RArray<TBTNamelessDevice> iPairedDevices;
+
+ /**
+ * Session with the pairing server.
+ * Allocate it in heap to ease the handling for
+ * situation of unavailable dedicated pairing service.
+ *
+ * own.
+ */
+ RBluetoothPairingServer* iPairingServ;
+
+ /**
+ * Subsession with the pairing server for
+ * getting the simple pairing result.
+ * own
+ */
+ RBluetoothPairingResult iPairingResult;
+
+ /**
+ * Subsession with the pairing server for
+ * getting the authentication result.
+ * own
+ */
+ RBluetoothAuthenticationResult iAuthenResult;
+
+ /**
+ * the address with which a simple pairing has been performed
+ */
+ TBTDevAddr iSimplePairingRemote;
+
+ /**
+ * the address with which an authentication has been performed
+ */
+ TBTDevAddr iAuthenticateRemote;
+
+ /**
+ * Active object helper for receiving simple pairing results.
+ * Own.
+ */
+ CBtSimpleActive* iSSPResultActive;
+
+ /**
+ * Active object helper for receiving authentication results.
+ * Own.
+ */
+ CBtSimpleActive* iAuthenResultActive;
+
+ /**
+ * pairing hanlder at the time.
+ * Own.
+ */
+ CBTNotifBasePairingHandler* iPairingHandler;
+
+ /**
+ * The handler for pairing notifiers
+ */
+ CBTNotifPairNotifier* iPairNotifier;
+
+ /**
+ * Client-server message for power change requests.
+ */
+ RMessage2 iMessage;
+
+ /**
+ * AO for local address updates.
+ */
+ CBtSimpleActive* iLocalAddrActive;
+
+ /**
+ * Provides access to the BT local device address.
+ */
+ RProperty iPropertyLocalAddr;
+
+ CBTNotifServiceAuthorizer* iServiceAuthorizer;
+ };
+
+#endif /*BTNOTIFSECURITYMANAGER_H*/
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btnotif/btnotifsrv/inc/btnotifserviceauthorizer.h Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,90 @@
+/*
+* 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: class for prompting user to authorize a service
+* connection request.
+*
+*/
+
+#ifndef BTNOTIFSERVICEAUTHORIZER_H
+#define BTNOTIFSERVICEAUTHORIZER_H
+
+#include <e32base.h>
+#include "btnotificationresult.h"
+#include "bluetoothdevicedialogs.h"
+
+class CBTNotifSecurityManager;
+class CBluetoothNotification;
+
+
+NONSHARABLE_CLASS(CBTNotifServiceAuthorizer)
+ : public CBase, public MBTNotificationResult
+ {
+public:
+ static CBTNotifServiceAuthorizer* NewL(CBTNotifSecurityManager& aParent);
+ ~CBTNotifServiceAuthorizer();
+
+private:
+ CBTNotifServiceAuthorizer(CBTNotifSecurityManager& aParent);
+ void ConstructL();
+
+public:
+ void StartNotifierL(const RMessage2& aMessage);
+
+private: // From MBTNotificationResult
+ void MBRDataReceived(CHbSymbianVariantMap& aData);
+ void MBRNotificationClosed(TInt aError, const TDesC8& aData);
+
+private:
+ void PrepareNotificationL(TBluetoothDialogParams::TBTDialogType aType,
+ TBTDialogResourceId aResourceId, TBool aPaired);
+ TBool IsExistingConnectionToAudioL(const TBTDevAddr& aDevAddr);
+
+private:
+ CBTNotifSecurityManager& iParent;
+
+ /**
+ * Buffer containing the parameters of the client message.
+ * Own.
+ */
+ RBuf8 iParams;
+
+ /**
+ * Pointer to an outstanding user interaction.
+ * Not owned.
+ */
+ CBluetoothNotification* iNotification;
+
+ // Contains the device name provided in params
+ TBTDeviceName iCurrentDeviceName;
+
+ // The client request.
+ RMessage2 iNotifierMessage;
+
+ // The bluetooth SDP Id of the connecting device.
+ TUint iServiceId;
+
+ // Variable that defines if the connecting device is to be trusted or not.
+ TBool iSetTrusted;
+
+ // Defines if the check box in the dialog is checked or not.
+ TBool iCheckBoxState;
+
+ // Defines if the connecting device is paired or not.
+ TBool iPairedDevice;
+
+ // Defines the class of the connecting device.
+ TInt iDeviceClass;
+ };
+
+#endif /* BTNOTIFSERVICEAUTHORIZER_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btnotif/btnotifsrv/inc/btnotifutil.h Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,49 @@
+/*
+* 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:
+*
+*/
+
+#ifndef BTNOTIFUTIL_H
+#define BTNOTIFUTIL_H
+
+#include <e32base.h>
+#include <bttypes.h>
+
+class CBtDevExtension;
+
+/**
+ * Utility class providing common functions required by various classes within
+ * btnotifsrv.
+ *
+ * @since Symbian^4
+ */
+NONSHARABLE_CLASS( TBTNotifUtil )
+ {
+public:
+
+ /**
+ * Gets the name of a device for displaying in UI.
+ *
+ * @param aNameBuf The buffer that will contain the name at return.
+ * @param aDevExt the DevExt instance representing the remote device.
+ * @param aNameInParam the given name from the parameter of a notifier request.
+ * @param aAddr the address of the device. Used only when aDevExt is null.
+ */
+ static void GetDeviceUiNameL( TDes& aNameBuf,
+ const CBtDevExtension* aDevExt,
+ const TDesC& aNameInParam, const TBTDevAddr& aAddr );
+ };
+
+#endif // BTNOTIFUTIL_H
--- a/bluetoothengine/btnotif/btnotifsrv/src/bluetoothnotification.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btnotifsrv/src/bluetoothnotification.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -161,7 +161,6 @@
{
BOstraceFunctionEntryExt( DUMMY_DEVLIST, this, aType );
TBuf16<6> key;
- TInt err = 0;
CHbSymbianVariant* value = NULL;
switch( aType )
{
@@ -191,12 +190,7 @@
TPtrC16 *ptr = (TPtrC16 *)value->Data();
BOstraceExt2( TRACE_DEBUG, DUMMY_DEVLIST, "SetData [%S] = [%S]", &p, ptr);
);
- err = iNotificationData->Add( key, value ); // Takes ownership of value
- if ( err )
- {
- // Note: need a proper exception handling.
- // NOTIF_NOTHANDLED( err )
- }
+ User::LeaveIfError(iNotificationData->Add( key, value )); // Takes ownership of value
break;
case TBluetoothDialogParams::EResource:
case TBluetoothDeviceDialog::EDeviceClass:
@@ -220,7 +214,6 @@
{
BOstraceFunctionEntryExt( DUMMY_DEVLIST, this, aType );
TBuf<6> key;
- TInt err = 0;
CHbSymbianVariant* value = NULL;
switch( aType )
{
@@ -251,13 +244,7 @@
TInt *intPtr = (TInt *)value->Data();
BOstraceExt2( TRACE_DEBUG, DUMMY_DEVLIST, "SetData [%S] = [%d]", &p, *intPtr);
);
- err = iNotificationData->Add( key, value ); // Takes ownership of value
- if ( err )
- {
- // need a proper exception handling.
- //NOTIF_NOTHANDLED( !err )
- }
-
+ User::LeaveIfError(iNotificationData->Add( key, value )); // Takes ownership of value
break;
case TBluetoothDialogParams::EAddress:
case TBluetoothDeviceDialog::EDeviceName:
@@ -297,7 +284,10 @@
}
}
}
- iObserver->MBRDataReceived( aData );
+ if( iObserver )
+ {
+ iObserver->MBRDataReceived( aData );
+ }
BOstraceFunctionExit1( DUMMY_DEVLIST, this );
}
--- a/bluetoothengine/btnotif/btnotifsrv/src/btnotifbasepairinghandler.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btnotifsrv/src/btnotifbasepairinghandler.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -15,8 +15,12 @@
*
*/
-#include "btnotifpairingmanager.h"
+#include "btnotifsecuritymanager.h"
#include "btnotifbasepairinghandler.h"
+#include "btnotificationmanager.h"
+#include "bluetoothnotification.h"
+#include "btnotifconnectiontracker.h"
+#include "bluetoothtrace.h"
// ======== MEMBER FUNCTIONS ========
@@ -24,7 +28,7 @@
// C++ default constructor
// ---------------------------------------------------------------------------
//
-CBTNotifBasePairingHandler::CBTNotifBasePairingHandler( CBTNotifPairingManager& aParent, const TBTDevAddr& aAddr)
+CBTNotifBasePairingHandler::CBTNotifBasePairingHandler( CBTNotifSecurityManager& aParent, const TBTDevAddr& aAddr)
: iAddr( aAddr ), iParent( aParent )
{
}
@@ -121,6 +125,38 @@
return iPairResultSet;
}
+// ---------------------------------------------------------------------------
+// Invalidate iPairResultSet
+// ---------------------------------------------------------------------------
+//
+void CBTNotifBasePairingHandler::ShowPairingResultNoteL(TInt aResult)
+ {
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
+ CBluetoothNotification* notification =
+ iParent.ConnectionTracker().NotificationManager()->GetNotification();
+ User::LeaveIfNull( notification ); // For OOM exception, leaves with KErrNoMemory
+ TBTDialogResourceId resourceId = EPairingSuccess;
+ if(KErrNone != aResult)
+ {
+ resourceId = EPairingFailure;
+ }
+ notification->SetNotificationType( TBluetoothDialogParams::ENote, resourceId );
+ const CBtDevExtension* dev = iParent.BTDevRepository().Device(iAddr);
+ if(dev)
+ {
+ User::LeaveIfError(notification->SetData( TBluetoothDeviceDialog::EDeviceName, dev->Alias()));
+ User::LeaveIfError(notification->SetData( TBluetoothDeviceDialog::EDeviceClass, dev->Device().DeviceClass().DeviceClass()));
+ }
+ else
+ {
+ TBTDeviceName name;
+ iAddr.GetReadable(name);
+ User::LeaveIfError(notification->SetData( TBluetoothDialogParams::EAddress, name ));
+ User::LeaveIfError(notification->SetData( TBluetoothDeviceDialog::EDeviceClass, 0)); // No device class
+ }
+ iParent.ConnectionTracker().NotificationManager()->QueueNotificationL( notification);
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
+ }
--- a/bluetoothengine/btnotif/btnotifsrv/src/btnotifconnectiontracker.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btnotifsrv/src/btnotifconnectiontracker.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -27,7 +27,7 @@
#include "btnotifsession.h"
#include "btnotifclientserver.h"
#include "bluetoothtrace.h"
-#include "btnotifpairingmanager.h"
+#include "btnotifsecuritymanager.h"
/** Time window for determining if there are too many requests. */
#ifndef __WINS__
@@ -62,7 +62,7 @@
User::LeaveIfError( iBTRegistrySession.Connect() );
// Open a handle to the socket server
User::LeaveIfError( iSockServ.Connect() );
- iPairingManager = CBTNotifPairingManager::NewL(*this, iServer->DevRepository() );
+ iPairingManager = CBTNotifSecurityManager::NewL(*this, iServer->DevRepository() );
BOstraceFunctionExit0( DUMMY_DEVLIST );
}
@@ -99,10 +99,10 @@
// Process notifier message related to pairing notifiers.
// ---------------------------------------------------------------------------
//
-void CBTNotifConnectionTracker::HandlePairingNotifierRequestL( const RMessage2& aMessage )
+void CBTNotifConnectionTracker::HandleNotifierRequestL( const RMessage2& aMessage )
{
BOstraceFunctionEntryExt ( DUMMY_LIST, this, aMessage.Function() );
- iPairingManager->HandlePairingNotifierRequestL(aMessage);
+ iPairingManager->HandleNotifierRequestL(aMessage);
BOstraceFunctionExit1( DUMMY_DEVLIST, this );
}
--- a/bluetoothengine/btnotif/btnotifsrv/src/btnotifdeviceselector.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btnotifsrv/src/btnotifdeviceselector.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -26,6 +26,8 @@
#include "btnotifserver.h"
#include "btnotificationmanager.h"
#include "btnotifclientserver.h"
+// Key description length
+const TInt KMaxKeyDesCLength = 20;
// ======== MEMBER FUNCTIONS ========
@@ -187,8 +189,8 @@
devParams().SetDeviceClass(iDevices[val]->Device().DeviceClass());
devParams().SetDeviceName(iDevices[val]->Alias());
err = iMessage.Write( EBTNotifSrvReplySlot, devParams );
+ iNotification->RemoveObserver();
iNotification->Close(); // Also dequeues the notification from the queue.
- iNotification->RemoveObserver();
iNotification = NULL;
}
iMessage.Complete( err );
@@ -208,8 +210,8 @@
}
else if(aData.Keys().MdcaPoint(0).Compare(_L("MoreDevices"))==KErrNone)
{
+ iNotification->RemoveObserver();
iNotification->Close(); // Also dequeues the notification from the queue.
- iNotification->RemoveObserver();
iNotification = NULL;
iDevices.ResetAndDestroy();
TRAP_IGNORE( {
@@ -243,8 +245,13 @@
CBtDevExtension* devext = CBtDevExtension::NewLC( aAddr, aName );
iDevices.AppendL( devext );
CleanupStack::Pop( devext );
+
+ if(iNotification)
+ {// conditional check required as CAdvanceDevDiscoverer sends discovered devices at times
+ // even after canceldiscovery is issued and notification is set to NULL
+ // this causes EExcDataAbort
CHbSymbianVariantMap* map = iNotification->Data();
- TBuf<8> keyStr;
+ TBuf<KMaxKeyDesCLength> keyStr;
CHbSymbianVariant* devEntry;
keyStr.Num( TBluetoothDialogParams::EDialogExt + iDevices.Count() - 1 );
@@ -252,6 +259,7 @@
CHbSymbianVariant::EDes );
map->Add( keyStr, devEntry );
iNotification->Update();
+ }
}
// ---------------------------------------------------------------------------
@@ -262,7 +270,7 @@
{
(void) aErr;
CHbSymbianVariantMap* map = iNotification->Data();
- TBuf<25> keyStr;
+ TBuf<KMaxKeyDesCLength> keyStr;
//TODO compile fail here we need to send the discovery completed text to the dialog
@@ -345,6 +353,11 @@
TBTDialogResourceId aResourceId )
{
BOstraceFunctionEntry0( DUMMY_DEVLIST );
+ if(iNotification)
+ {
+ iNotification->RemoveObserver();
+ iNotification = NULL;
+ }
iNotification = iServer.NotificationManager()->GetNotification();
User::LeaveIfNull( iNotification ); // For OOM exception, leaves with KErrNoMemory
iNotification->SetObserver( this );
@@ -367,7 +380,7 @@
{
iDevices.AppendL( devArray[i]->CopyL() );
CHbSymbianVariantMap* map = iNotification->Data();
- TBuf<8> keyStr;
+ TBuf<KMaxKeyDesCLength> keyStr;
CHbSymbianVariant* devEntry;
keyStr.Num( TBluetoothDialogParams::EDialogExt + iDevices.Count() - 1 );
--- a/bluetoothengine/btnotif/btnotifsrv/src/btnotificationmanager.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btnotifsrv/src/btnotificationmanager.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -63,8 +63,10 @@
//
CBTNotificationManager::~CBTNotificationManager()
{
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
iNotificationQ.ResetAndDestroy();
iNotificationQ.Close();
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
}
@@ -74,6 +76,7 @@
//
CBluetoothNotification* CBTNotificationManager::GetNotification()
{
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
CBluetoothNotification* notification = NULL;
TRAP_IGNORE( notification = CBluetoothNotification::NewL( this ) );
if( notification )
@@ -86,6 +89,7 @@
notification = NULL;
}
}
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
return notification;
}
@@ -96,17 +100,14 @@
//
void CBTNotificationManager::ReleaseNotification( CBluetoothNotification* aNotification )
{
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
__ASSERT_ALWAYS( aNotification, PanicServer( EBTNotifPanicBadArgument ) );
TInt pos = iNotificationQ.Find( aNotification );
__ASSERT_ALWAYS( pos > KErrNotFound, PanicServer( EBTNotifPanicMissing ) );
+ delete iNotificationQ[pos];
iNotificationQ.Remove( pos );
- // Just delete the notification.
- delete aNotification;
- if(!iNotificationQ.Count() )
- {
- // the queue is empty, reset it.
- iNotificationQ.Compress();
- }
+ iNotificationQ.Compress();
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
}
@@ -118,10 +119,12 @@
CBluetoothNotification* aNotification,
TNotificationPriority aPriority )
{
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
(void) aPriority;
TInt pos = iNotificationQ.Find( aNotification );
__ASSERT_ALWAYS( pos > KErrNotFound, PanicServer( EBTNotifPanicMissing ) );
- if( /*aPriority == EPriorityHigh &&*/ pos != 0 )
+ // Always move the newly added notification on top
+ if(pos != 0 )
{
CBluetoothNotification* notification = NULL;
notification = iNotificationQ[pos];
@@ -129,6 +132,7 @@
iNotificationQ.InsertL(notification,0);
}
ProcessNotificationQueueL();
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
}
// ---------------------------------------------------------------------------
@@ -137,6 +141,7 @@
//
void CBTNotificationManager::ProcessNotificationQueueL()
{
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
if( iNotificationQ.Count() )
{
iNotificationQ[0]->ShowL();
@@ -146,5 +151,6 @@
// No outstanding notifications
iNotificationQ.Compress(); // the queue is empty, reset it.
}
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
}
--- a/bluetoothengine/btnotif/btnotifsrv/src/btnotifincomingpairinghandler.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btnotifsrv/src/btnotifincomingpairinghandler.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -16,9 +16,10 @@
*/
#include "btnotifincomingpairinghandler.h"
-#include "btnotifpairingmanager.h"
+#include "btnotifsecuritymanager.h"
#include "btnotifoutgoingpairinghandler.h"
#include <btengconstants.h>
+#include "bluetoothtrace.h"
const TInt KBTNotifWaitingForPairingOkDelay = 500000; // 0.5s
@@ -37,7 +38,7 @@
// C++ default constructor
// ---------------------------------------------------------------------------
//
-CBTNotifIncomingPairingHandler::CBTNotifIncomingPairingHandler( CBTNotifPairingManager& aParent,
+CBTNotifIncomingPairingHandler::CBTNotifIncomingPairingHandler( CBTNotifSecurityManager& aParent,
const TBTDevAddr& aAddr) : CBTNotifBasePairingHandler( aParent, aAddr )
{
}
@@ -48,22 +49,26 @@
//
void CBTNotifIncomingPairingHandler::ConstructL()
{
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
BaseConstructL();
iActivePairingOk = CBtSimpleActive::NewL(*this, EWaitingForPairingOk );
User::LeaveIfError( iPairingOkTimer.CreateLocal() );
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
}
// ---------------------------------------------------------------------------
// NewL
// ---------------------------------------------------------------------------
//
-CBTNotifBasePairingHandler* CBTNotifIncomingPairingHandler::NewL( CBTNotifPairingManager& aParent,
+CBTNotifBasePairingHandler* CBTNotifIncomingPairingHandler::NewL( CBTNotifSecurityManager& aParent,
const TBTDevAddr& aAddr)
{
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
CBTNotifIncomingPairingHandler* self = new (ELeave) CBTNotifIncomingPairingHandler(aParent, aAddr);
CleanupStack::PushL( self );
self->ConstructL();
CleanupStack::Pop( self );
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
return self;
}
@@ -73,13 +78,13 @@
//
CBTNotifIncomingPairingHandler::~CBTNotifIncomingPairingHandler()
{
- // TRACE_FUNC_ENTRY
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
// Cancel all outstanding requests
CancelPlaNotification();
iPla.Close();
delete iActivePairingOk;
iPairingOkTimer.Close();
- // TRACE_FUNC_EXIT
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
}
// ---------------------------------------------------------------------------
@@ -89,13 +94,15 @@
//
TInt CBTNotifIncomingPairingHandler::ObserveIncomingPair( const TBTDevAddr& aAddr )
{
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
TInt err( KErrServerBusy );
if ( iAddr == aAddr )
{
err = KErrNone;
- iUserAwarePairing = ETrue; // This function is called by a notifier, which means the UI has been involved
+ // This function is called by a notifier, which means the UI has been involved
// Therefore we can display it in the paired devices list
- if ( !iActive->IsActive() && !OpenPhysicalLinkAdaptor() )
+ iUserAwarePairing = ETrue;
+ if ( !iActive->IsActive() && !OpenPhysicalLinkAdaptor() )
{
// If we are observing physical link, or showing user a note,
// we won't interrupt it.
@@ -103,6 +110,7 @@
MonitorPhysicalLink();
}
}
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
return err;
}
@@ -112,12 +120,12 @@
//
void CBTNotifIncomingPairingHandler::HandleOutgoingPairL( const TBTDevAddr& aAddr, TUint aCod )
{
- // TRACE_FUNC_ENTRY
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
// Outgoing pairing always takes highest priority:
CBTNotifBasePairingHandler* pairinghandler = CBTNotifOutgoingPairingHandler::NewL( iParent, aAddr );
pairinghandler->HandleOutgoingPairL( aAddr, aCod );
iParent.RenewPairingHandler( pairinghandler );
- // TRACE_FUNC_EXIT
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
}
// ---------------------------------------------------------------------------
@@ -127,12 +135,12 @@
//
void CBTNotifIncomingPairingHandler::StopPairHandling( const TBTDevAddr& aAddr )
{
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
if ( aAddr == iAddr )
{
- // TRACE_FUNC_ENTRY
iParent.RenewPairingHandler( NULL );
- // TRACE_FUNC_EXIT
}
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
}
// ---------------------------------------------------------------------------
@@ -141,14 +149,15 @@
//
void CBTNotifIncomingPairingHandler::DoHandlePairServerResult( TInt aResult )
{
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
CancelPlaNotification();
// For a successful pairing, we need wait for registry table change.
if( aResult != KErrNone && aResult != KHCIErrorBase )
{
// Pair failure situation.
SetPairResult( aResult );
- // todo: show pairing failure note.
}
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
}
// ---------------------------------------------------------------------------
@@ -158,7 +167,7 @@
//
void CBTNotifIncomingPairingHandler::DoHandleRegistryNewPairedEvent( const TBTNamelessDevice& aDev )
{
- // TRACE_FUNC_ENTRY
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
// First of all cancel the iPairingOkTimer timer, if active
if (iActivePairingOk->IsActive())
@@ -176,7 +185,7 @@
// a service connection with phone. We won't take any action (e.g. remove
// link key) in this case. As the result, this device can't be seen in our UI,
// however other applications are still freely to use its services.
- // TRACE_INFO(_L("[BTEng]: CBTEngIncPair: JW pairing with no IO device" ) )
+ BOstrace0(TRACE_DEBUG,DUMMY_DEVLIST,"[BTNotif]: JW pairing with no IO device");
TBTEngConnectionStatus status = iParent.ConnectStatus( aDev.Address() );
if ( status == EBTEngConnecting || status == EBTEngConnected )
{
@@ -184,14 +193,15 @@
// exception handling option:
(void) iParent.AddUiCookieJustWorksPaired( aDev );
}
+ TRAP_IGNORE(ShowPairingResultNoteL(KErrNone));
iParent.RenewPairingHandler( NULL );
}
else if (aDev.LinkKeyType() == ELinkKeyUnauthenticatedUpgradable && !iUserAwarePairing)
{
// The linkkey has been created by an incoming OBEX service request
// which resulted a pairing event received from pair server.
- // TRACE_INFO(_L("[BTEng]: CBTEngIncPair: JW pairing with IO device" ) )
- iParent.RenewPairingHandler( NULL );
+ BOstrace0(TRACE_DEBUG,DUMMY_DEVLIST,"[BTNotif]: JW pairing with IO device");
+ iParent.RenewPairingHandler( NULL );
}
else
{
@@ -200,13 +210,14 @@
// The user was involved in the pairing, so display in the paired devices list
(void) iParent.AddUiCookieJustWorksPaired(aDev);
}
- // TRACE_INFO(_L("[BTEng]: CBTEngIncPair: Non-JW pairing"))
+ BOstrace0(TRACE_DEBUG,DUMMY_DEVLIST,"[BTNotif]: Non-JW pairing");
// Other pairing model than Just Works:
CancelPlaNotification();
SetPairResult( KErrNone );
+ TRAP_IGNORE(ShowPairingResultNoteL(KErrNone));
iParent.RenewPairingHandler( NULL );
}
- // TRACE_FUNC_EXIT
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
}
// ---------------------------------------------------------------------------
@@ -215,13 +226,13 @@
//
void CBTNotifIncomingPairingHandler::RequestCompletedL( CBtSimpleActive* aActive, TInt aStatus )
{
- // TRACE_FUNC_ARG( ( _L( "aId: %d, aStatus: %d"), aId, aStatus ) )
- // Check which request completed.
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
+ // Check which request completed.
switch( aActive->RequestId() )
{
case EPhysicalLinkNotify:
{
- // Check if the link has disconnected.
+ // Check if the link has disconnected.
HandlePhysicalLinkResultL( aStatus );
break;
}
@@ -239,20 +250,21 @@
break;
}
default:
- // Should not be possible, but no need for handling.
+ // Should not be possible, but no need for handling.
break;
}
- // TRACE_FUNC_EXIT
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
}
// ---------------------------------------------------------------------------
-// From class MBTEngActiveObserver.
+// From class MBTNotifPairingAOObserver.
// cancels an outstanding request according to the given id.
// ---------------------------------------------------------------------------
//
void CBTNotifIncomingPairingHandler::CancelRequest( TInt aRequestId )
{
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
switch ( aRequestId )
{
case EPhysicalLinkNotify:
@@ -264,6 +276,7 @@
iPairingOkTimer.Cancel();
}
}
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
}
// ---------------------------------------------------------------------------
@@ -273,13 +286,14 @@
//
void CBTNotifIncomingPairingHandler::HandleError( CBtSimpleActive* aActive, TInt aError )
{
- // TRACE_FUNC_ARG( ( _L( "request id: %d, error: %d" ), aId, aError ) )
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
(void) aActive;
(void) aError;
- // Our error handling is to just stop observing.
- // Nothing critical to be preserved here, the user
- // just won't get any notification of pairing result.
+ // Our error handling is to just stop observing.
+ // Nothing critical to be preserved here, the user
+ // just won't get any notification of pairing result.
iParent.RenewPairingHandler( NULL );
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
}
// ---------------------------------------------------------------------------
@@ -289,14 +303,14 @@
//
void CBTNotifIncomingPairingHandler::MonitorPhysicalLink()
{
- // TRACE_FUNC_ENTRY
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
iActive->SetRequestId( EPhysicalLinkNotify );
- // Subscribe to disconnect and error events.
+ // Subscribe to disconnect and error events.
iPla.NotifyNextBasebandChangeEvent( iBbEvent,
iActive->RequestStatus(),
ENotifyPhysicalLinkDown | ENotifyPhysicalLinkError );
iActive->GoActive();
- // TRACE_FUNC_EXIT
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
}
// ---------------------------------------------------------------------------
@@ -305,17 +319,18 @@
//
TInt CBTNotifIncomingPairingHandler::OpenPhysicalLinkAdaptor()
{
- // TRACE_FUNC_ENTRY
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
TInt err ( KErrNone );
if( !iPla.IsOpen() )
{
- // Try to open the adapter in case it failed earlier.
- // This can happen for outgoing dedicated bonding with
- // non-SSP device, as the PIN dialog can be kept open even
- // though the link has dropped because of a time-out.
+ // Try to open the adapter in case it failed earlier.
+ // This can happen for outgoing dedicated bonding with
+ // non-SSP device, as the PIN dialog can be kept open even
+ // though the link has dropped because of a time-out.
err = iPla.Open( iParent.SocketServ(), iAddr );
}
- // TRACE_INFO( (_L("[BTEng]: CBTEngIncPair::HasPhysicalLink ? %d"), iPla.IsOpen() ) )
+ BOstrace1(TRACE_DEBUG,DUMMY_DEVLIST,"[BTNotif]:HasPhysicalLink ? %d", iPla.IsOpen() );
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
return err;
}
@@ -325,13 +340,13 @@
//
void CBTNotifIncomingPairingHandler::CancelPlaNotification()
{
- // TRACE_FUNC_ENTRY
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
if( iActive && iActive->RequestId() == EPhysicalLinkNotify )
{
// cancel Baseband monitor
iActive->Cancel();
}
- // TRACE_FUNC_EXIT
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
}
// ---------------------------------------------------------------------------
@@ -340,9 +355,8 @@
//
void CBTNotifIncomingPairingHandler::HandlePhysicalLinkResultL( TInt aResult )
{
- // TRACE_FUNC_ARG( ( _L( " BBEvent 0x%08X, code %d"),
- // iBbEvent().EventType(), iBbEvent().SymbianErrorCode() ) )
- // Check if the connection is still alive.
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
+ // Check if the connection is still alive.
TBool physicalLinkDown =
( iBbEvent().EventType() == ENotifyPhysicalLinkDown | ENotifyPhysicalLinkError );
@@ -361,7 +375,7 @@
// Uninteresting event, re-subscribe.
MonitorPhysicalLink();
}
- // TRACE_FUNC_EXIT
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
}
--- a/bluetoothengine/btnotif/btnotifsrv/src/btnotifoutgoingpairinghandler.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btnotifsrv/src/btnotifoutgoingpairinghandler.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -18,7 +18,8 @@
#include "btnotifoutgoingpairinghandler.h"
#include <btengconstants.h>
#include <btservices/btdevextension.h>
-#include "btnotifpairingmanager.h"
+#include "btnotifsecuritymanager.h"
+#include "bluetoothtrace.h"
/** Length of the default PIN. */
const TInt KDefaultHeadsetPinLength = 4;
@@ -70,7 +71,7 @@
// C++ default constructor
// ---------------------------------------------------------------------------
//
-CBTNotifOutgoingPairingHandler::CBTNotifOutgoingPairingHandler( CBTNotifPairingManager& aParent, const TBTDevAddr& aAddr)
+CBTNotifOutgoingPairingHandler::CBTNotifOutgoingPairingHandler( CBTNotifSecurityManager& aParent, const TBTDevAddr& aAddr)
: CBTNotifBasePairingHandler( aParent, aAddr )
{
}
@@ -89,7 +90,7 @@
// NewL
// ---------------------------------------------------------------------------
//
-CBTNotifBasePairingHandler* CBTNotifOutgoingPairingHandler::NewL( CBTNotifPairingManager& aParent,
+CBTNotifBasePairingHandler* CBTNotifOutgoingPairingHandler::NewL( CBTNotifSecurityManager& aParent,
const TBTDevAddr& aAddr )
{
CBTNotifOutgoingPairingHandler* self = new( ELeave ) CBTNotifOutgoingPairingHandler( aParent, aAddr );
@@ -129,7 +130,7 @@
//
void CBTNotifOutgoingPairingHandler::HandleOutgoingPairL( const TBTDevAddr& aAddr, TUint aCod )
{
- // TRACE_FUNC_ARG( ( _L(" cod 0x%08x"), aCod ) )
+ BOstrace1(TRACE_DEBUG,DUMMY_DEVLIST," cod 0x%08x", aCod );
if ( iActive->IsActive() || aAddr != iAddr )
{
// we don't allow another pairing request.
@@ -149,7 +150,6 @@
{
iPairMode = EBTOutgoingNoneHeadsetPairing;
}
- // SetOutgoPairProperty( iOutgoProperty, iAddr, iPairMode );
DoPairingL();
}
@@ -159,6 +159,7 @@
//
void CBTNotifOutgoingPairingHandler::CancelOutgoingPair()
{
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
iParent.RenewPairingHandler( NULL );
}
@@ -171,6 +172,7 @@
void CBTNotifOutgoingPairingHandler::GetPinCode(
TBTPinCode& aPin, const TBTDevAddr& aAddr, TInt aMinPinLength )
{
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
aPin().iLength = 0;
if ( aMinPinLength <= KDefaultHeadsetPinLength
&& aAddr == iAddr
@@ -195,6 +197,7 @@
//
void CBTNotifOutgoingPairingHandler::StopPairHandling( const TBTDevAddr& aAddr )
{
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
if ( aAddr == iAddr )
{
iParent.OutgoingPairCompleted( KErrCancel );
@@ -208,6 +211,7 @@
//
void CBTNotifOutgoingPairingHandler::DoHandlePairServerResult( TInt aResult )
{
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
if (aResult == (KHCIErrorBase-EPairingNotAllowed))
{
// if EPairingNotAllowed is recieved then any further pairing attempts will fail
@@ -223,6 +227,7 @@
void CBTNotifOutgoingPairingHandler::DoHandleRegistryNewPairedEvent(
const TBTNamelessDevice& aDev )
{
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
TInt err( KErrNone );
// If pairing was performed using Just Works mode, we set a
// UICookie to indicate that the device is successfully
@@ -230,11 +235,14 @@
// bluetooth application:
if ( aDev.LinkKeyType() == ELinkKeyUnauthenticatedNonUpgradable )
{
- // TRACE_INFO( ( _L( "[BTENG] CBTEngOtgPair, Just Works pairing" ) ) );
+ BOstrace0(TRACE_DEBUG,DUMMY_DEVLIST,"[BTNOTIF] Outgoing Pairing, Just Works pairing");
err = iParent.AddUiCookieJustWorksPaired( aDev );
}
iActive->Cancel();
SetPairResult( err ? err : KErrNone );
+ if(err == KErrNone){
+ TRAP_IGNORE(ShowPairingResultNoteL(err));
+ }
iParent.OutgoingPairCompleted( err );
iParent.RenewPairingHandler( NULL );
}
@@ -248,7 +256,8 @@
void CBTNotifOutgoingPairingHandler::RequestCompletedL(
CBtSimpleActive* aActive, TInt aStatus )
{
- // TRACE_FUNC_ARG( ( _L( "reqid %d, status: %d, pair mode %d " ), aId, aStatus, iPairMode ) )
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
+ BOstraceExt3(TRACE_DEBUG,DUMMY_DEVLIST,"reqid %d, status: %d, pair mode %d ", aActive->RequestId(), aStatus, iPairMode);
if( aActive->RequestId() == EDedicatedBonding &&
( aStatus == KErrRemoteDeviceIndicatedNoBonding ||
( aStatus && iPairMode != EBTOutgoingNoneHeadsetPairing && iPairMode != EBTOutgoingPairNone ) ) )
@@ -261,8 +270,7 @@
{
iPairMode = EBTOutgoingHeadsetManualPairing;
// auto pairing with headset failed, try to pair again with manual pin:
- // ( void ) SetOutgoPairProperty( iOutgoProperty, iAddr, iPairMode );
- // TRACE_INFO( _L( " auto pairing failed, switch to manual pairing") );
+ BOstrace0(TRACE_DEBUG,DUMMY_DEVLIST," auto pairing failed, switch to manual pairing");
DoPairingL();
}
else if ( aStatus && aActive->RequestId() == EGeneralBonding &&
@@ -288,7 +296,6 @@
}
if ( aStatus )
{
- // todo: show error note?
iParent.OutgoingPairCompleted( aStatus );
}
}
@@ -301,6 +308,7 @@
//
void CBTNotifOutgoingPairingHandler::CancelRequest( TInt aRequestId )
{
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
switch ( aRequestId )
{
case EDedicatedBonding:
@@ -328,7 +336,7 @@
void CBTNotifOutgoingPairingHandler::HandleError(
CBtSimpleActive* aActive, TInt aError )
{
- // TRACE_FUNC_ARG( ( _L( "error: %d" ), aError ) )
+ BOstrace1(TRACE_DEBUG,DUMMY_DEVLIST,"error: %d", aError );
// Our RunL can actually not leave, so we should never reach here.
(void) aActive;
iParent.OutgoingPairCompleted( aError );
@@ -341,7 +349,7 @@
//
void CBTNotifOutgoingPairingHandler::DoPairingL()
{
- // TRACE_FUNC_ENTRY
+ BOstraceFunctionEntry0( DUMMY_DEVLIST );
TPairingStageId currentMode = ( TPairingStageId ) iActive->RequestId();
ASSERT( !iActive->IsActive() );
TPairingStageId nextMode( EGeneralBonding );
@@ -357,7 +365,7 @@
nextMode = EGeneralBondingRetry;
}
- // TRACE_INFO( ( _L( "[BTENG] CBTEngOtgPair::DoPairingL: bonding mode: pre %d, next %d"), currentMode, nextMode ) );
+ BOstraceExt2(TRACE_DEBUG,DUMMY_DEVLIST,"[BTENG] CBTEngOtgPair::DoPairingL: bonding mode: pre %d, next %d", currentMode, nextMode);
iActive->SetRequestId( nextMode );
if ( nextMode == EDedicatedBonding )
@@ -376,6 +384,6 @@
iSocket.Connect( iSockAddr, iActive->RequestStatus() );
}
iActive->GoActive();
- // TRACE_FUNC_EXIT
+ BOstraceFunctionExit0( DUMMY_DEVLIST );
}
--- a/bluetoothengine/btnotif/btnotifsrv/src/btnotifpairingmanager.cpp Fri Jun 11 13:48:51 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,809 +0,0 @@
-/*
-* 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:
-*
-*/
-
-#include "btnotifpairingmanager.h"
-#include "btnotifoutgoingpairinghandler.h"
-#include "btnotifincomingpairinghandler.h"
-#include "btnotifpairnotifier.h"
-#include "btnotifclientserver.h"
-#include <e32property.h>
-#include "btnotifconnectiontracker.h"
-
-/** Identification for active object */
-enum TPairManActiveRequestId
- {
- ESimplePairingResult,
- EAuthenticationResult,
- ERegistryGetLocalAddress,
- };
-
-// ---------------------------------------------------------------------------
-// Tells if two TBTNamelessDevice instances are for the same remote device
-// ---------------------------------------------------------------------------
-//
-TBool CompareDeviceByAddress( const TBTNamelessDevice& aDevA, const TBTNamelessDevice& aDevB )
- {
- return aDevA.Address() == aDevB.Address();
- }
-
-// ---------------------------------------------------------------------------
-// Tells if these two instances are for the same remote device
-// ---------------------------------------------------------------------------
-//
-TBool MatchDeviceAddress(const TBTDevAddr* aAddr, const TBTNamelessDevice& aDev)
- {
- return *aAddr == aDev.Address();
- }
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// C++ default constructor
-// ---------------------------------------------------------------------------
-//
-CBTNotifPairingManager::CBTNotifPairingManager(
- CBTNotifConnectionTracker& aParent,
- CBtDevRepository& aDevRepository)
- : iParent( aParent ), iDevRepository( aDevRepository )
- {
- }
-
-// ---------------------------------------------------------------------------
-// Symbian 2nd-phase constructor
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::ConstructL()
- {
- // Connect to pairing server for authentication & simple pairing
- // results directly from the BT stack.
- // Pairing server doesn't exist if we run BT 2.0 stack:
- iPairingServ = new (ELeave) RBluetoothPairingServer;
- TInt err = iPairingServ->Connect();
- if ( err)
- {
- delete iPairingServ;
- iPairingServ = NULL;
- }
- else
- {
- User::LeaveIfError( iPairingResult.Open( *iPairingServ ) );
- User::LeaveIfError( iAuthenResult.Open( *iPairingServ ) );
- iSSPResultActive = CBtSimpleActive::NewL( *this, ESimplePairingResult );
- iAuthenResultActive = CBtSimpleActive::NewL( *this, EAuthenticationResult );
- SubscribeSspPairingResult();
- SubscribeAuthenticateResult();
- }
- User::LeaveIfError( iRegistry.Open( iParent.RegistryServerSession() ) );
- // RProperty for accessing the local device address
- User::LeaveIfError( iPropertyLocalAddr.Attach(
- KPropertyUidBluetoothCategory, KPropertyKeyBluetoothGetLocalDeviceAddress) );
- // Initialise paired devices list
- iLocalAddrActive = CBtSimpleActive::NewL( *this, ERegistryGetLocalAddress );
- SubscribeLocalAddress();
- iPairNotifier = CBTNotifPairNotifier::NewL( *this );
- iDevRepository.AddObserverL( this );
- }
-
-// ---------------------------------------------------------------------------
-// NewL
-// ---------------------------------------------------------------------------
-//
-CBTNotifPairingManager* CBTNotifPairingManager::NewL(
- CBTNotifConnectionTracker& aParent,
- CBtDevRepository& aDevRepository )
- {
- CBTNotifPairingManager* self = NULL;
- self = new CBTNotifPairingManager( aParent, aDevRepository );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CBTNotifPairingManager::~CBTNotifPairingManager()
- {
- delete iSSPResultActive;
- delete iAuthenResultActive;
- delete iPairNotifier;
- delete iPairingHandler;
- iPairedDevices.Close();
- iPairingResult.Close();
- iAuthenResult.Close();
- if ( iPairingServ )
- {
- iPairingServ->Close();
- delete iPairingServ;
- }
- iRegistry.Close();
- delete iLocalAddrActive;
- iPropertyLocalAddr.Close();
- if ( !iMessage.IsNull() )
- {
- iMessage.Complete( KErrCancel );
- }
- }
-
-// ---------------------------------------------------------------------------
-// Initialises the paired devices list.
-// If the local address is not available from the P&S key
-// KPropertyKeyBluetoothGetLocalDeviceAddress, then the list may need to be
-// updated once the H/W is switched on. This is so that any registry update
-// from a restore operation can be included in the list, without mistaking the
-// new devices for new pairings.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::SubscribeLocalAddress()
- {
- // Check that we have the Bluetooth local address. If we don't then initialise anyway, but subscribe for an update.
- // This allows us to refresh our paired devices list to include updates made to the remote devices table of the
- // Bluetooth registry from a restore operation. We need to include these devices without mistaking them for new
- // pairings. We look solely at the P&S key for the address to avoid the condition whereby the address has been
- // entered into the reigstry but the Bluetooth Manager server has not begun the restore process yet. The signalling
- // of the P&S key will cause Bluetooth Manager to update the registry with any restored devices before fulfilling
- // any further requests.
-
- // Subscribe to local address property in case we need an update.
- iPropertyLocalAddr.Subscribe( iLocalAddrActive->iStatus );
- iLocalAddrActive->SetRequestId( ERegistryGetLocalAddress );
- iLocalAddrActive->GoActive();
- }
-
-// ---------------------------------------------------------------------------
-// Tells whether the local address is available from the P&S key
-// KPropertyKeyBluetoothGetLocalDeviceAddress.
-// ---------------------------------------------------------------------------
-//
-TBool CBTNotifPairingManager::IsLocalAddressAvailable()
- {
- // Attempt to read address from P&S key.
- TBuf8<KBTDevAddrSize> btAddrDes;
- TInt err = iPropertyLocalAddr.Get( btAddrDes );
-
- // Is the P&S key defined yet? (if not, stack not up yet)
- if ( err == KErrNone )
- {
- // P&S key defined, is local address set? (if not, H/W not initialised yet)
- if ( btAddrDes.Length() == KBTDevAddrSize )
- {
- TBTDevAddr btAddr = btAddrDes;
- if ( btAddr != TBTDevAddr() )
- {
- return ETrue;
- }
- }
- }
- return EFalse;
- }
-
-// ---------------------------------------------------------------------------
-// Handles pairing related requests from BTNotif clients.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::HandleBondingRequestL( const RMessage2& aMessage )
- {
- TInt opcode = aMessage.Function();
- TBTDevAddrPckgBuf addrPkg;
- switch( opcode )
- {
- case EBTNotifPairDevice:
- {
- if ( !iMessage.IsNull() )
- {
- User::Leave( KErrServerBusy );
- }
- TBTDevAddrPckgBuf addrPkg;
- aMessage.ReadL( EBTNotifSrvParamSlot, addrPkg );
- UnpairDevice( addrPkg() );
- PairDeviceL( addrPkg(), aMessage.Int2() );
- iMessage = RMessage2( aMessage );
- break;
- }
- case EBTNotifCancelPairDevice:
- {
- // Only the client who requested pairing can cancel it:
- if ( !iMessage.IsNull() && aMessage.Session() == iMessage.Session() )
- {
- iPairingHandler->CancelOutgoingPair();
- iMessage.Complete( KErrCancel );
- }
- aMessage.Complete( KErrNone );
- break;
- }
- default:
- {
- User::Leave( KErrArgument );
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// Process a client message related to notifiers.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::HandlePairingNotifierRequestL( const RMessage2& aMessage )
- {
- iPairNotifier->StartPairingNotifierL( aMessage );
- BOstraceFunctionExit1( DUMMY_DEVLIST, this );
- }
-
-// ---------------------------------------------------------------------------
-// Returns the RBluetoothPairingServer instance.
-// ---------------------------------------------------------------------------
-//
-RBluetoothPairingServer* CBTNotifPairingManager::PairingServer()
- {
- return iPairingServ;
- }
-
-// ---------------------------------------------------------------------------
-// Access the reference of RSockServ
-// ---------------------------------------------------------------------------
-//
-RSocketServ& CBTNotifPairingManager::SocketServ()
- {
- return iParent.SocketServerSession();
- }
-
-// ---------------------------------------------------------------------------
-// Access the reference of RBTRegSrv
-// ---------------------------------------------------------------------------
-//
-CBtDevRepository& CBTNotifPairingManager::BTDevRepository()
- {
- return iDevRepository;
- }
-
-// ---------------------------------------------------------------------------
-// Access the reference of CBTNotifConnectionTracker
-// ---------------------------------------------------------------------------
-//
-CBTNotifConnectionTracker& CBTNotifPairingManager::ConnectionTracker()
- {
- return iParent;
- }
-
-// ---------------------------------------------------------------------------
-// Deletes the current pairing handler and transfer the responsibility
-// to the specified.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::RenewPairingHandler(
- CBTNotifBasePairingHandler* aPairingHandler )
- {
- delete iPairingHandler;
- iPairingHandler = aPairingHandler;
- }
-
-// ---------------------------------------------------------------------------
-// Find the session who requested this and completes its request.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::OutgoingPairCompleted( TInt aErr )
- {
- // the meaning of KHCIErrorBase equals KErrNone. Hide this specific BT stack
- // detail from clients:
- if ( !iMessage.IsNull() )
- {
- iMessage.Complete( (aErr == KHCIErrorBase) ? KErrNone : aErr );
- }
- }
-
-// ---------------------------------------------------------------------------
-// A session will be ended, completes the pending request for this session.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::SessionClosed( CSession2* aSession )
- {
- // TRACE_FUNC_ARG( ( _L( " session %x"), aSession ) )
- if ( !iMessage.IsNull() && iMessage.Session() == aSession )
- {
- iMessage.Complete( KErrCancel );
- }
- }
-
-// ---------------------------------------------------------------------------
-// Unpair the device from registry
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::UnpairDevice( const TBTDevAddr& aAddr )
- {
- TIdentityRelation<TBTNamelessDevice> addrComp( CompareDeviceByAddress );
- TBTNamelessDevice dev;
- dev.SetAddress( aAddr );
- // only do unpairing if the we have a link key with it.
- TInt index = iPairedDevices.Find( dev, addrComp );
- if ( index > KErrNotFound )
- {
- dev = iPairedDevices[index];
- TRequestStatus status( KRequestPending );
- // Unpair the device in registry (synchronously)
- iRegistry.UnpairDevice( dev.Address(), status );
- User::WaitForRequest( status );
- // TRACE_INFO( ( _L( "Delete link key, res %d"), status.Int() ) )
- if ( status == KErrNone )
- {
- TBTDeviceSecurity security = dev.GlobalSecurity();
- // Clear trust setting so that correct icon will be shown in ui applications.
- security.SetNoAuthenticate(EFalse );
- security.SetNoAuthorise(EFalse );
- dev.SetGlobalSecurity(security);
- dev.DeleteLinkKey();
- if ( dev.IsValidUiCookie() &&
- ( dev.UiCookie() & EBTUiCookieJustWorksPaired ) )
- {
- // Remove the UI cookie bit for Just Works pairing.
- TInt32 cookie = dev.UiCookie() & ~EBTUiCookieJustWorksPaired;
- dev.SetUiCookie( cookie );
- // TRACE_INFO( ( _L( "UI cookie %x cleared"), EBTUiCookieJustWorksPaired ) );
- }
- // modify the device in registry synchronously
- // status.Int() could be -1 if the device is not in registry
- // which is totally fine for us.
- (void) UpdateRegDevice( dev );
- }
- }
- }
-
-TInt CBTNotifPairingManager::AddUiCookieJustWorksPaired( const TBTNamelessDevice& aDev )
- {
- TInt err( KErrNone );
- // There might be UI cookies used by other applications,
- // we should not overwrite them.
- TInt32 cookie = aDev.IsValidUiCookie() ? aDev.UiCookie() : EBTUiCookieUndefined;
- if ( !( cookie & EBTUiCookieJustWorksPaired ) )
- {
- // Only update the cookie if the wanted one is not in registry yet
- // to keep minimal operations with registry.
- TBTNamelessDevice dev = aDev;
- cookie |= EBTUiCookieJustWorksPaired;
- dev.SetUiCookie( cookie );
- err = UpdateRegDevice( dev );
- // TRACE_INFO( ( _L( "[BTENG] CBTEngOtgPair write Ui cookie ret %d"), err ) );
- }
- return err;
- }
-
-// ---------------------------------------------------------------------------
-// update a nameless device in registry
-// ---------------------------------------------------------------------------
-//
-TInt CBTNotifPairingManager::UpdateRegDevice( const TBTNamelessDevice& aDev )
- {
- TRequestStatus status( KRequestPending );
- // update the device in registry synchronously
- iRegistry.ModifyDevice( aDev, status );
- User::WaitForRequest( status );
- // TRACE_INFO( ( _L( "UpdateRegDevice, ret %d"), status.Int() ) )
- return status.Int();
- }
-
-// ---------------------------------------------------------------------------
-// 0000 for outgoing pairing with a headset.
-// The placeholder for future extension (pin code passed in for pairing)
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::GetPinCode(
- TBTPinCode& aPin, const TBTDevAddr& aAddr, TInt aMinPinLength )
- {
- if ( iPairingHandler )
- {
- iPairingHandler->GetPinCode( aPin, aAddr, aMinPinLength );
- }
- else
- {
- // make sure not to leave any text as PIN.
- aPin.Zero();
- }
- }
-
-// ---------------------------------------------------------------------------
-// Ask server class the connection status of the specified device
-// ---------------------------------------------------------------------------
-//
-TBTEngConnectionStatus CBTNotifPairingManager::ConnectStatus( const TBTDevAddr& aAddr )
- {
- const CBtDevExtension* devExt = iDevRepository.Device(aAddr);
- TBTEngConnectionStatus status = EBTEngNotConnected;
- if ( devExt )
- {
- status = devExt->ServiceConnectionStatus();
- }
- return status;
- }
-
-// ---------------------------------------------------------------------------
-// From class MBTNotifPairingAOObserver.
-// Checks if there is an authentication result.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::RequestCompletedL( CBtSimpleActive* aActive, TInt aStatus )
- {
- // TRACE_FUNC_ARG( ( _L( "aId: %d, aStatus: %d"), aId, aStatus ) )
- // Check which request is completed.
- switch( aActive->RequestId() )
- {
- case ESimplePairingResult:
- {
- TBTDevAddr tmpAddr = iSimplePairingRemote;
- if (aStatus != KErrServerTerminated)
- {
- SubscribeSspPairingResult();
- }
- HandlePairingResultL( tmpAddr, aStatus );
- break;
- }
- case EAuthenticationResult:
- {
- TBTDevAddr tmpAddr = iAuthenticateRemote;
- if (aStatus != KErrServerTerminated)
- {
- SubscribeAuthenticateResult();
- }
- HandlePairingResultL( tmpAddr, aStatus );
- break;
- }
- case ERegistryGetLocalAddress:
- {
- TBool value = IsLocalAddressAvailable();
- SubscribeLocalAddress();
- if ( value )
- {
- // Refresh paired devices list to include any restored devices.
- iDevRepository.ReInitialize();
- }
- break;
- }
- default:
- // Should not be possible, but no need for handling.
- break;
- }
- }
-
-// ---------------------------------------------------------------------------
-// From class MBTEngActiveObserver.
-// cancels an outstanding request according to the given id.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::CancelRequest( TInt aRequestId )
- {
- switch ( aRequestId )
- {
- case ESimplePairingResult:
- {
- // Cancel listening Simple pairing result
- iPairingResult.CancelSimplePairingResult();
- break;
- }
- case EAuthenticationResult:
- {
- // Cancel listening authentication result
- iAuthenResult.CancelAuthenticationResult();
- break;
- }
- case ERegistryGetLocalAddress:
- {
- // cancel listening local address status change
- iPropertyLocalAddr.Cancel();
- break;
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// From class MBtSimpleActiveObserver.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::HandleError( CBtSimpleActive* aActive, TInt aError )
- {
- // TRACE_FUNC_ARG( ( _L( "request id: %d, error: %d" ), aId, aError ) )
- (void) aActive;
- (void) aError;
- }
-
-// ---------------------------------------------------------------------------
-// From class MBtDevRepositoryObserver.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::RepositoryInitialized()
- {
- TRAPD(err, UpdatePairedDeviceListL() );
- if ( !err && iPairingHandler )
- {
- // non-null pairing handler means we are involved in a
- // pairing operation already.
- // todo: is some handling for above case needed?
- }
- }
-
-// ---------------------------------------------------------------------------
-// From class MBtDevRepositoryObserver.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::DeletedFromRegistry( const TBTDevAddr& aAddr )
- {
- // We are only interested in the removal of a paired device.
- // thus check whether it is in our local paired list:
- TInt i = iPairedDevices.Find( aAddr, MatchDeviceAddress);
- if ( i > KErrNotFound )
- {
- iPairedDevices.Remove( i );
- }
- }
-
-// ---------------------------------------------------------------------------
-// From class MBtDevRepositoryObserver.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::AddedToRegistry( const CBtDevExtension& aDevice )
- {
- // We are only interested in paired device.
- if ( CBtDevExtension::IsBonded( aDevice.Device().AsNamelessDevice() ) )
- {
- TRAP_IGNORE(
- HandleRegistryBondingL( aDevice.Device().AsNamelessDevice() ) );
- }
- }
-
-
-// ---------------------------------------------------------------------------
-// From class MBtDevRepositoryObserver.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::ChangedInRegistry(
- const CBtDevExtension& aDevice, TUint aSimilarity )
- {
- // We are only interested in paired device.
- // thus check whether it is in our local paired list:
- TInt i = iPairedDevices.Find( aDevice.Addr(), MatchDeviceAddress);
- TBool bonded = CBtDevExtension::IsBonded( aDevice.Device().AsNamelessDevice() );
- if ( i == KErrNotFound )
- {
- if ( bonded )
- {
- TRAP_IGNORE(
- HandleRegistryBondingL(
- aDevice.Device().AsNamelessDevice() ) );
- }
- return;
- }
- // Device was inregistry before, but we need to evaluate its bonding
- // status.
- // The given similarity will tell if the linkkey and paired is changed
- // or not.
- TInt pairingProperty = TBTNamelessDevice::EIsPaired
- | TBTNamelessDevice::ELinkKey;
- if ( ( pairingProperty & aSimilarity) == pairingProperty )
- {
- // no pairing or linkkey change. Nothing to do for pairing handling.
- // but we'd better update local copy just in case other data
- // of this device is needed by someone:
- iPairedDevices[i] = aDevice.Device().AsNamelessDevice();
- return;
- }
- if ( !CBtDevExtension::IsBonded( aDevice.Device().AsNamelessDevice() ) )
- {
- // device is not user-bonded.
- iPairedDevices.Remove( i );
- return;
- }
- // it is a new paired device if its link-key has been upgraded
- if ( aDevice.Device().LinkKeyType() != ELinkKeyUnauthenticatedUpgradable )
- {
- iPairedDevices.Remove( i );
- TRAP_IGNORE(
- HandleRegistryBondingL(
- aDevice.Device().AsNamelessDevice() ) );
- }
- }
-
-// ---------------------------------------------------------------------------
-// From class MBtDevRepositoryObserver.
-// This class is not interested in such events.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::ServiceConnectionChanged(
- const CBtDevExtension& aDevice, TBool aConnected )
- {
- (void) aDevice;
- (void) aConnected;
- }
-
-// ---------------------------------------------------------------------------
-// Activate or deactivate a pairing handler
-// ---------------------------------------------------------------------------
-//
-TInt CBTNotifPairingManager::SetPairObserver(const TBTDevAddr& aAddr, TBool aActivate)
- {
- // TRACE_FUNC_ARG( ( _L( "%d" ), aActivate ) )
- // TRACE_BDADDR( aAddr )
- TInt err( KErrNone );
- if ( !aActivate )
- {
- if ( iPairingHandler )
- {
- iPairingHandler->StopPairHandling( aAddr );
- }
- return err;
- }
-
- if ( !iPairingHandler)
- {
- // This is an incoming pair, unpair it from registry and
- // create the handler:
- UnpairDevice( aAddr );
- TRAP( err, iPairingHandler = CBTNotifIncomingPairingHandler::NewL( *this, aAddr ));
- }
- if ( iPairingHandler)
- {
- // let the handler decide what to do:
- err = iPairingHandler->ObserveIncomingPair( aAddr );
- }
- return err;
- }
-
-// ---------------------------------------------------------------------------
-// Delegates the request to current pair handler
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::PairDeviceL( const TBTDevAddr& aAddr, TUint32 aCod )
- {
- if ( !iPairingHandler)
- {
- // no existing pair handling, create one:
- iPairingHandler = CBTNotifOutgoingPairingHandler::NewL( *this, aAddr );
- }
- // let pair handler decide what to do:
- iPairingHandler->HandleOutgoingPairL( aAddr, aCod );
- }
-
-// ---------------------------------------------------------------------------
-// cancel Subscribings to simple pairing result and authentication result from
-// Pairing Server
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::CancelSubscribePairingAuthenticate()
- {
- if( iSSPResultActive )
- {
- // Cancel listening Simple pairing result
- iSSPResultActive->Cancel();
- }
- if( iAuthenResultActive )
- {
- iAuthenResultActive->Cancel();
- }
- }
-
-// ---------------------------------------------------------------------------
-// Subscribes to simple pairing result from Pairing Server (if not already
-// subscribed).
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::SubscribeSspPairingResult()
- {
- if ( !iSSPResultActive->IsActive() )
- {
- iPairingResult.SimplePairingResult( iSimplePairingRemote, iSSPResultActive->RequestStatus() );
- iSSPResultActive->GoActive();
- }
- }
-
-// ---------------------------------------------------------------------------
-// Subscribes to authentication result from Pairing Server (if not already
-// subscribed).
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::SubscribeAuthenticateResult()
- {
- if ( !iAuthenResultActive->IsActive() )
- {
- // Subscribe authentication result (which requires pairing for unpaired devices)
- iAuthenResult.AuthenticationResult( iAuthenticateRemote, iAuthenResultActive->RequestStatus() );
- iAuthenResultActive->GoActive();
- }
- }
-
-// ---------------------------------------------------------------------------
-// Handle a pairing result from the pairing server.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::HandlePairingResultL( const TBTDevAddr& aAddr, TInt aResult )
- {
- // TRACE_FUNC_ARG( (_L("result %d"), aResult ) )
- // TRACE_BDADDR( aAddr );
- if ( !iPairingHandler && ( aResult == KErrNone || aResult == KHCIErrorBase ) )
- {
- // we only create new handler if incoming pairing succeeds.
- // Pairing failure could be caused by user local cancellation, as the
- // result, the handler was destroyed by notifier. We shall not
- // instantiate the handler again.
- // If a pairing failed due to other reasons than user local cancelling,
- // it will be catched by the already started handler
- // (except Just Works pairing - no handler for it at all until we receive
- // registry change event. Thus if incoming JWs pairing failed, no user
- // notification will be shown.)
- iPairedDevices.Find( aAddr, MatchDeviceAddress);
- TInt index = iPairedDevices.Find( aAddr, MatchDeviceAddress);
- // If the device is not found in the old paired device list, it is a new
- // paired device:
- if ( index == KErrNotFound)
- {
- // No handler yet, create incoming pairing handler:
- iPairingHandler = CBTNotifIncomingPairingHandler::NewL( *this, aAddr );
- }
- }
- if ( iPairingHandler )
- {
- iPairingHandler->HandlePairServerResult( aAddr, aResult );
- }
- }
-
-// ---------------------------------------------------------------------------
-// copy the nameless devices to local array
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::UpdatePairedDeviceListL()
- {
- iPairedDevices.Reset();
- const RDevExtensionArray& alldevs = iDevRepository.AllDevices();
- for ( TInt i = 0; i < alldevs.Count(); i++ )
- {
- // TRACE_BDADDR( iPairedDevicesResp->Results()[i]->BDAddr() );
- // TRACE_INFO((_L("[BTENG]\t linkkeytype %d"),
- // iPairedDevicesResp->Results()[i]->LinkKeyType()))
- if ( CBtDevExtension::IsBonded( alldevs[i]->Device().AsNamelessDevice() ) )
- {
- iPairedDevices.AppendL( alldevs[i]->Device().AsNamelessDevice() );
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// Create incoming pairing handler if no one exists yet.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairingManager::HandleRegistryBondingL(
- const TBTNamelessDevice& aNameless)
- {
- TInt err = iPairedDevices.Append( aNameless );
- if ( !err && !iPairingHandler)
- {
- // New paired device, but no pairing handler yet.
- // this means an incoming pairing has occured:
- TRAP( err, iPairingHandler =
- CBTNotifIncomingPairingHandler::NewL( *this, aNameless.Address() ) );
- }
- if ( !err )
- {
- // We have a pairing handler now.
- // Ask pair handler to decide what to do:
- iPairingHandler->HandleRegistryNewPairedEvent(
- aNameless );
- }
- else if ( iPairingHandler )
- {
- // error could occur due to no memory,
- // let us try aborting pairing handling
- iPairingHandler->StopPairHandling( aNameless.Address() );
- }
- }
-
-
--- a/bluetoothengine/btnotif/btnotifsrv/src/btnotifpairnotifier.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btnotifsrv/src/btnotifpairnotifier.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -22,7 +22,7 @@
#include <btextnotifierspartner.h>
#endif
#include "btnotifconnectiontracker.h"
-#include "btnotifpairingmanager.h"
+#include "btnotifsecuritymanager.h"
#include "btnotificationmanager.h"
#include "bluetoothnotification.h"
#include "btnotifserver.h"
@@ -42,7 +42,7 @@
// ---------------------------------------------------------------------------
//
CBTNotifPairNotifier::CBTNotifPairNotifier(
- CBTNotifPairingManager& aParent )
+ CBTNotifSecurityManager& aParent )
: iParent( aParent )
{
}
@@ -60,7 +60,7 @@
// ---------------------------------------------------------------------------
//
CBTNotifPairNotifier* CBTNotifPairNotifier::NewL(
- CBTNotifPairingManager& aParent )
+ CBTNotifSecurityManager& aParent )
{
BOstraceFunctionEntry0( DUMMY_DEVLIST );
CBTNotifPairNotifier* self = new( ELeave ) CBTNotifPairNotifier( aParent );
@@ -102,23 +102,23 @@
{
BOstraceFunctionEntry0( DUMMY_DEVLIST );
- // todo: move Authorize notifier to a separate class
TInt uid = aMessage.Int0();
- if ( KBTManAuthNotifierUid.iUid == uid )
+ TInt opCode = aMessage.Function();
+ BOstrace1(TRACE_DEBUG,DUMMY_DEVLIST,"[BTNotif]:Opcode: %d",opCode);
+
+ if ( (!iNotifierMessage.IsNull()) &&
+ (opCode != EBTNotifCancelNotifier )&&(opCode != EBTNotifUpdateNotifier))
{
- TPckgBuf<TBool> answer;
- answer() = ETrue;
- TInt err = aMessage.Write( EBTNotifSrvReplySlot, answer);
- aMessage.Complete( KErrNone );
- return;
+ // todo: do we allow concurrent pairing?
+ BOstrace0(TRACE_DEBUG,DUMMY_DEVLIST,"[BTNotif]:We are busy");
+ User::Leave(KErrServerBusy );
}
- //BOstraceFunctionEntryExt( DUMMY_DEVLIST, this, aUid );
- if ( !iNotifierMessage.IsNull() )
- {
- // todo: do we allow concurrent pairing?
- User::Leave(KErrServerBusy );
- }
+ if(opCode == EBTNotifCancelNotifier){
+ CancelPairingNotifierL(uid);
+ aMessage.Complete(KErrNone);
+ return;
+ }
// Store the parameters locally, we need them later again.
iParams.CreateL( aMessage.GetDesLengthL( EBTNotifSrvParamSlot ) );
@@ -127,6 +127,12 @@
// Read the notifier parameters
ParseNotifierReqParamsL();
+
+ if(opCode ==EBTNotifUpdateNotifier ){
+ UpdatePairingNotifierL(uid,iParams);
+ aMessage.Complete(KErrNone);
+ return;
+ }
const CBtDevExtension* dev = iParent.BTDevRepository().Device(iRemote);
if(dev)
@@ -134,13 +140,16 @@
if (!iLocallyInitiated && dev->Device().GlobalSecurity().Banned() )
{
// If the device is banned and pairing is not locally initiated
- // then we ignore.
- aMessage.Complete( KErrNone );
+ // then we reject.
+ BOstrace0(TRACE_DEBUG,DUMMY_DEVLIST,"[BTNotif]:Device is banned");
+ iNotifierMessage.Complete( KErrCancel );
+ return;
}
if (iLocallyInitiated && dev->Device().GlobalSecurity().Banned())
{
// Remove the banned device from the blocking history
iParent.ConnectionTracker().UpdateBlockingHistoryL(&dev->Device(),ETrue);
+ iParent.BlockDevice(dev->Addr(),EFalse);
}
if(0 != dev->Device().FriendlyName().Length()&& dev->Device().IsValidFriendlyName())
{
@@ -168,6 +177,7 @@
// If this is an incoming pairing, we first ask the user to accept it.
if( !iLocallyInitiated )
{
+ User::LeaveIfError(iParent.SetPairObserver(iRemote,ETrue));
StartAcceptPairingQueryL();
}
else
@@ -304,8 +314,22 @@
void CBTNotifPairNotifier::MBRDataReceived( CHbSymbianVariantMap& aData )
{
BOstraceFunctionEntry0( DUMMY_DEVLIST );
- (void) aData;
- NOTIF_NOTIMPL
+ if(aData.Keys().MdcaPoint(0).Compare(_L("actionResult")) == 0)
+ {
+ TInt val = *(static_cast<TInt*>(aData.Get(_L("actionResult"))->Data()));
+ if(val)
+ {
+ iAcceptPairingResult = ETrue;
+ }
+ else
+ {
+ iAcceptPairingResult = EFalse;
+ }
+ }
+ else if(aData.Keys().MdcaPoint(0).Compare(_L("checkBoxState")) == 0)
+ {
+ iCheckBoxState = *(static_cast<TInt*>(aData.Get(_L("checkBoxState"))->Data()));
+ }
BOstraceFunctionExit0( DUMMY_DEVLIST );
}
@@ -318,10 +342,9 @@
{
BOstraceFunctionEntryExt( DUMMY_DEVLIST, this, aError );
// First unregister from the notification, so we can already get the next one.
- //iNotification->RemoveObserver();
- //iNotification = NULL;
+ iNotification->RemoveObserver();
+ iNotification = NULL;
TRAP_IGNORE( NotificationClosedL( aError, aData ) );
- iNotification = NULL;
BOstraceFunctionExit1( DUMMY_DEVLIST, this );
}
@@ -354,13 +377,17 @@
TPtrC8 resultData(KNullDesC8);
TBTPinCode pinCode;
TPckgBuf<TBool> userAcceptance;
+ TInt uid = iNotifierMessage.Int0();
+
if( !err )
{
- TInt uid = iNotifierMessage.Int0();
// The returned data is the entered passkey.
- // const CBtDevExtension* dev = iParent.BTDevRepository().Device(iRemote);
- // TBool proceed = iParent.ConnectionTracker().UpdateBlockingHistoryL(&dev->Device(),aResult);
- if( uid == KBTNumericComparisonNotifierUid.iUid )
+ const CBtDevExtension* dev = iParent.BTDevRepository().Device(iRemote);
+ if(dev)
+ {
+ iParent.ConnectionTracker().UpdateBlockingHistoryL(&dev->Device(),aResult);
+ }
+ if( uid == KBTNumericComparisonNotifierUid.iUid )
{
// Numeric comparison needs the boolean result passed back.
userAcceptance() = aResult;
@@ -374,12 +401,18 @@
// Check the passkey entered by the user.
// The length of the returned data equals the number of characters
// entered by the user.
- pinCode().iLength = aData.Length();
+ // Check that the passkey length do not exceed the maximum allowed size
+ TInt pinCodeLength = aData.Length();
+ if(pinCodeLength > KHCIPINCodeSize)
+ {
+ pinCodeLength = KHCIPINCodeSize;
+ }
+ pinCode().iLength = pinCodeLength;
// Check that the length of the passkey meets the minimum
// required pin code length
- if( aData.Length() >= iMinPinLength )
+ if( pinCodeLength >= iMinPinLength )
{
- for( TInt i = 0; i < aData.Length(); i++ )
+ for( TInt i = 0; i < pinCodeLength; i++ )
{
pinCode().iPIN[i] = aData[i];
}
@@ -387,7 +420,7 @@
}
else
{
- // todo: PIN wasn't long enough. This should be handled by the dialog though.
+ // shouldn't happen since the length is checked in the dialog
err = KErrCompletion;
}
}
@@ -395,21 +428,6 @@
else
{
err = KErrCancel;
- if( iLocallyInitiated )
- {
- // The user denied the connection, ask to block the device.
- // This is only for pairing (and not bonding) initiated by us,
- // as the user already gets the opportunity to block when
- // rejecting an incoming pairing request.
- // This case may be for someone requesting to access a service
- // which requires authentication by us, but not by the remote device.
- // if(proceed)
- // {
- // LaunchBlockingQueryL();
- // }
- // For incoming pairing, blocking is asked after rejecting the
- // pairing request. This is done in CompleteAcceptPairingQueryL
- }
}
}
// Complete the message with the result, and result data if any.
@@ -417,6 +435,14 @@
{
err = iNotifierMessage.Write( EBTNotifSrvReplySlot, resultData );
}
+ if(err && (uid == KBTNumericComparisonNotifierUid.iUid))
+ {
+ // We need to reject the numeric comparaison otherwise
+ // the link will remain active
+ userAcceptance() = aResult;
+ resultData.Set( userAcceptance );
+ err = iNotifierMessage.Write( EBTNotifSrvReplySlot, resultData );
+ }
iNotifierMessage.Complete( err );
BOstraceFunctionExit1( DUMMY_DEVLIST, this );
}
@@ -428,7 +454,7 @@
void CBTNotifPairNotifier::StartAcceptPairingQueryL()
{
BOstraceFunctionEntry0( DUMMY_DEVLIST );
- PrepareNotificationL( TBluetoothDialogParams::EQuery, EIncomingPairing );
+ PrepareNotificationL( TBluetoothDialogParams::EUserAuthorization, EAuthorization );
iState = EIncomingPairingAcceptconfirm;
// if rejected, the client message is completed in CompleteAcceptPairingQueryL
BOstraceFunctionExit0( DUMMY_DEVLIST );
@@ -438,32 +464,37 @@
// The user was asked to accept an incoming pairing. Process and proceed.
// ---------------------------------------------------------------------------
//
-void CBTNotifPairNotifier::CompleteAcceptPairingQueryL( TInt aError, TBool aResult )
+void CBTNotifPairNotifier::CompleteAcceptPairingQueryL( TInt aError)
{
BOstraceFunctionEntry0( DUMMY_DEVLIST );
TInt err = aError;
+ TBool proceed = EFalse;
+
if( !err )
{
- // const CBtDevExtension* dev = iParent.BTDevRepository().Device(iRemote);
- // TBool proceed = iParent.ConnectionTracker().UpdateBlockingHistoryL(&dev->Device(),aResult);
- if( aResult )
+ const CBtDevExtension* dev = iParent.BTDevRepository().Device(iRemote);
+ if(dev)
+ {
+ proceed = iParent.ConnectionTracker().UpdateBlockingHistoryL(&dev->Device(),iAcceptPairingResult);
+ }
+ if( iAcceptPairingResult )
{
// User accepted, continue to show pairing query.
+ // Trust the device
+ if(iCheckBoxState){
+ iParent.TrustDevice(iRemote);
+ }
StartPairingUserInputL();
- if( iDialogNumeric.Length() )
- {
- err = iNotification->SetData(
- TBluetoothDeviceDialog::EAdditionalDesc, iDialogNumeric );
- }
- }
+ }
else
{
- err = KErrCancel;
- // if( proceed )
- // {
- // //ask to block the device.
- // LaunchBlockingQueryL();
- // }
+ if( proceed && iCheckBoxState )
+ {
+ //ask to block the device.
+ iParent.BlockDevice(iRemote,proceed);
+ }
+ err = iParent.SetPairObserver(iRemote,EFalse);
+ err = KErrCancel; // We need to complete the pairing request here
}
}
if( err )
@@ -571,6 +602,7 @@
TBTNumericComparisonParams::TComparisonScenario scenario =
paramsPckg().ComparisonScenario();
aNumVal.Format( KNumCompFormat, paramsPckg().NumericalValue() );
+ aNumVal.Insert(3,_L(" "));
aAddr = paramsPckg().DeviceAddress();
iCurrentDeviceName = paramsPckg().DeviceName();
BOstraceFunctionExit0( DUMMY_DEVLIST );
@@ -624,6 +656,14 @@
}
err = iNotification->SetData( (TInt) TBluetoothDeviceDialog::EDeviceClass,
classofdevice );
+ if( iDialogNumeric.Length() )
+ {
+ err = iNotification->SetData(
+ TBluetoothDeviceDialog::EAdditionalDesc, iDialogNumeric );
+ }
+ err = iNotification->SetData( TBluetoothDialogParams::EDialogTitle, TBluetoothDialogParams::EPairingRequest);
+ iCheckBoxState = ETrue;
+ iAcceptPairingResult = EFalse;
iParent.ConnectionTracker().NotificationManager()->QueueNotificationL( iNotification);
NOTIF_NOTHANDLED( !err )
BOstraceFunctionExit0( DUMMY_DEVLIST );
@@ -641,9 +681,10 @@
result.Set( aData.Ptr(), result.Length() ); // Read the part containing the result
// Set a pointer descriptor to capture the remaining data, if any.
TPtrC8 dataPtr( aData.Mid( result.Length() ) );
+
if ( iState == EIncomingPairingAcceptconfirm )
{
- CompleteAcceptPairingQueryL(aError, result());
+ CompleteAcceptPairingQueryL(aError);
}
else
{
@@ -652,25 +693,6 @@
BOstraceFunctionExit1( DUMMY_DEVLIST, this );
}
-// ---------------------------------------------------------------------------
-// Ask the user if he/she wants to block future connection requests.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifPairNotifier::LaunchBlockingQueryL()
- {
- BOstraceFunctionEntry0( DUMMY_DEVLIST );
- TBTDialogResourceId resourceId = EBlockUnpairedDevice;
- const CBtDevExtension* dev = iParent.BTDevRepository().Device(iRemote);
- if(dev->Device().IsValidPaired() && dev->Device().IsPaired() &&
- dev->Device().LinkKeyType() != ELinkKeyUnauthenticatedUpgradable )
- {
- resourceId = EBlockPairedDevice;
- }
- PrepareNotificationL( TBluetoothDialogParams::EQuery, resourceId );
- BOstraceFunctionExit0( DUMMY_DEVLIST );
- }
-
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btnotif/btnotifsrv/src/btnotifsecuritymanager.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,859 @@
+/*
+* 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:
+*
+*/
+
+#include "btnotifsecuritymanager.h"
+#include "btnotifoutgoingpairinghandler.h"
+#include "btnotifincomingpairinghandler.h"
+#include "btnotifpairnotifier.h"
+#include "btnotifclientserver.h"
+#include <e32property.h>
+#include "btnotifconnectiontracker.h"
+#include "btnotifserviceauthorizer.h"
+
+/** Identification for active object */
+enum TPairManActiveRequestId
+ {
+ ESimplePairingResult,
+ EAuthenticationResult,
+ ERegistryGetLocalAddress,
+ };
+
+// ---------------------------------------------------------------------------
+// Tells if two TBTNamelessDevice instances are for the same remote device
+// ---------------------------------------------------------------------------
+//
+TBool CompareDeviceByAddress( const TBTNamelessDevice& aDevA, const TBTNamelessDevice& aDevB )
+ {
+ return aDevA.Address() == aDevB.Address();
+ }
+
+// ---------------------------------------------------------------------------
+// Tells if these two instances are for the same remote device
+// ---------------------------------------------------------------------------
+//
+TBool MatchDeviceAddress(const TBTDevAddr* aAddr, const TBTNamelessDevice& aDev)
+ {
+ return *aAddr == aDev.Address();
+ }
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// C++ default constructor
+// ---------------------------------------------------------------------------
+//
+CBTNotifSecurityManager::CBTNotifSecurityManager(
+ CBTNotifConnectionTracker& aParent,
+ CBtDevRepository& aDevRepository)
+ : iParent( aParent ), iDevRepository( aDevRepository )
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// Symbian 2nd-phase constructor
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::ConstructL()
+ {
+ // Connect to pairing server for authentication & simple pairing
+ // results directly from the BT stack.
+ // Pairing server doesn't exist if we run BT 2.0 stack:
+ iPairingServ = new (ELeave) RBluetoothPairingServer;
+ TInt err = iPairingServ->Connect();
+ if ( err)
+ {
+ delete iPairingServ;
+ iPairingServ = NULL;
+ }
+ else
+ {
+ User::LeaveIfError( iPairingResult.Open( *iPairingServ ) );
+ User::LeaveIfError( iAuthenResult.Open( *iPairingServ ) );
+ iSSPResultActive = CBtSimpleActive::NewL( *this, ESimplePairingResult );
+ iAuthenResultActive = CBtSimpleActive::NewL( *this, EAuthenticationResult );
+ SubscribeSspPairingResult();
+ SubscribeAuthenticateResult();
+ }
+ User::LeaveIfError( iRegistry.Open( iParent.RegistryServerSession() ) );
+ // RProperty for accessing the local device address
+ User::LeaveIfError( iPropertyLocalAddr.Attach(
+ KPropertyUidBluetoothCategory, KPropertyKeyBluetoothGetLocalDeviceAddress) );
+ // Initialise paired devices list
+ iLocalAddrActive = CBtSimpleActive::NewL( *this, ERegistryGetLocalAddress );
+ SubscribeLocalAddress();
+ iPairNotifier = CBTNotifPairNotifier::NewL( *this );
+ iDevRepository.AddObserverL( this );
+ iServiceAuthorizer = CBTNotifServiceAuthorizer::NewL(*this);
+ }
+
+// ---------------------------------------------------------------------------
+// NewL
+// ---------------------------------------------------------------------------
+//
+CBTNotifSecurityManager* CBTNotifSecurityManager::NewL(
+ CBTNotifConnectionTracker& aParent,
+ CBtDevRepository& aDevRepository )
+ {
+ CBTNotifSecurityManager* self = NULL;
+ self = new CBTNotifSecurityManager( aParent, aDevRepository );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CBTNotifSecurityManager::~CBTNotifSecurityManager()
+ {
+ delete iSSPResultActive;
+ delete iAuthenResultActive;
+ delete iPairNotifier;
+ delete iPairingHandler;
+ iPairedDevices.Close();
+ iPairingResult.Close();
+ iAuthenResult.Close();
+ if ( iPairingServ )
+ {
+ iPairingServ->Close();
+ delete iPairingServ;
+ }
+ iRegistry.Close();
+ delete iLocalAddrActive;
+ iPropertyLocalAddr.Close();
+ if ( !iMessage.IsNull() )
+ {
+ iMessage.Complete( KErrCancel );
+ }
+ delete iServiceAuthorizer;
+ }
+
+// ---------------------------------------------------------------------------
+// Initialises the paired devices list.
+// If the local address is not available from the P&S key
+// KPropertyKeyBluetoothGetLocalDeviceAddress, then the list may need to be
+// updated once the H/W is switched on. This is so that any registry update
+// from a restore operation can be included in the list, without mistaking the
+// new devices for new pairings.
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::SubscribeLocalAddress()
+ {
+ // Check that we have the Bluetooth local address. If we don't then initialise anyway, but subscribe for an update.
+ // This allows us to refresh our paired devices list to include updates made to the remote devices table of the
+ // Bluetooth registry from a restore operation. We need to include these devices without mistaking them for new
+ // pairings. We look solely at the P&S key for the address to avoid the condition whereby the address has been
+ // entered into the reigstry but the Bluetooth Manager server has not begun the restore process yet. The signalling
+ // of the P&S key will cause Bluetooth Manager to update the registry with any restored devices before fulfilling
+ // any further requests.
+
+ // Subscribe to local address property in case we need an update.
+ iPropertyLocalAddr.Subscribe( iLocalAddrActive->iStatus );
+ iLocalAddrActive->SetRequestId( ERegistryGetLocalAddress );
+ iLocalAddrActive->GoActive();
+ }
+
+// ---------------------------------------------------------------------------
+// Tells whether the local address is available from the P&S key
+// KPropertyKeyBluetoothGetLocalDeviceAddress.
+// ---------------------------------------------------------------------------
+//
+TBool CBTNotifSecurityManager::IsLocalAddressAvailable()
+ {
+ // Attempt to read address from P&S key.
+ TBuf8<KBTDevAddrSize> btAddrDes;
+ TInt err = iPropertyLocalAddr.Get( btAddrDes );
+
+ // Is the P&S key defined yet? (if not, stack not up yet)
+ if ( err == KErrNone )
+ {
+ // P&S key defined, is local address set? (if not, H/W not initialised yet)
+ if ( btAddrDes.Length() == KBTDevAddrSize )
+ {
+ TBTDevAddr btAddr = btAddrDes;
+ if ( btAddr != TBTDevAddr() )
+ {
+ return ETrue;
+ }
+ }
+ }
+ return EFalse;
+ }
+
+// ---------------------------------------------------------------------------
+// Handles pairing related requests from BTNotif clients.
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::HandleBondingRequestL( const RMessage2& aMessage )
+ {
+ TInt opcode = aMessage.Function();
+ TBTDevAddrPckgBuf addrPkg;
+ switch( opcode )
+ {
+ case EBTNotifPairDevice:
+ {
+ if ( !iMessage.IsNull() )
+ {
+ User::Leave( KErrServerBusy );
+ }
+ TBTDevAddrPckgBuf addrPkg;
+ aMessage.ReadL( EBTNotifSrvParamSlot, addrPkg );
+ BlockDevice(addrPkg(),EFalse);
+ UnpairDevice( addrPkg() );
+ PairDeviceL( addrPkg(), aMessage.Int2() );
+ iMessage = RMessage2( aMessage );
+ break;
+ }
+ case EBTNotifCancelPairDevice:
+ {
+ // Only the client who requested pairing can cancel it:
+ if ( !iMessage.IsNull() && aMessage.Session() == iMessage.Session() )
+ {
+ iPairingHandler->CancelOutgoingPair();
+ iMessage.Complete( KErrCancel );
+ }
+ aMessage.Complete( KErrNone );
+ break;
+ }
+ default:
+ {
+ User::Leave( KErrArgument );
+ }
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Process a client message related to notifiers.
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::HandleNotifierRequestL( const RMessage2& aMessage )
+ {
+ if(aMessage.Int0() == KBTManAuthNotifierUid.iUid)
+ {
+ iServiceAuthorizer->StartNotifierL( aMessage );
+ }
+ else
+ {
+ iPairNotifier->StartPairingNotifierL( aMessage );
+ }
+
+ BOstraceFunctionExit0( DUMMY_DEVLIST);
+ }
+
+// ---------------------------------------------------------------------------
+// Returns the RBluetoothPairingServer instance.
+// ---------------------------------------------------------------------------
+//
+RBluetoothPairingServer* CBTNotifSecurityManager::PairingServer()
+ {
+ return iPairingServ;
+ }
+
+// ---------------------------------------------------------------------------
+// Access the reference of RSockServ
+// ---------------------------------------------------------------------------
+//
+RSocketServ& CBTNotifSecurityManager::SocketServ()
+ {
+ return iParent.SocketServerSession();
+ }
+
+// ---------------------------------------------------------------------------
+// Access the reference of RBTRegSrv
+// ---------------------------------------------------------------------------
+//
+CBtDevRepository& CBTNotifSecurityManager::BTDevRepository()
+ {
+ return iDevRepository;
+ }
+
+// ---------------------------------------------------------------------------
+// Access the reference of CBTNotifConnectionTracker
+// ---------------------------------------------------------------------------
+//
+CBTNotifConnectionTracker& CBTNotifSecurityManager::ConnectionTracker()
+ {
+ return iParent;
+ }
+
+// ---------------------------------------------------------------------------
+// Deletes the current pairing handler and transfer the responsibility
+// to the specified.
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::RenewPairingHandler(
+ CBTNotifBasePairingHandler* aPairingHandler )
+ {
+ delete iPairingHandler;
+ iPairingHandler = aPairingHandler;
+ }
+
+// ---------------------------------------------------------------------------
+// Find the session who requested this and completes its request.
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::OutgoingPairCompleted( TInt aErr )
+ {
+ // the meaning of KHCIErrorBase equals KErrNone. Hide this specific BT stack
+ // detail from clients:
+ if ( !iMessage.IsNull() )
+ {
+ iMessage.Complete( (aErr == KHCIErrorBase) ? KErrNone : aErr );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// A session will be ended, completes the pending request for this session.
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::SessionClosed( CSession2* aSession )
+ {
+ BOstrace1(TRACE_DEBUG,DUMMY_DEVLIST," session %x", aSession);
+ if ( !iMessage.IsNull() && iMessage.Session() == aSession )
+ {
+ iMessage.Complete( KErrCancel );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Unpair the device from registry
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::UnpairDevice( const TBTDevAddr& aAddr )
+ {
+ TIdentityRelation<TBTNamelessDevice> addrComp( CompareDeviceByAddress );
+ TBTNamelessDevice dev;
+ dev.SetAddress( aAddr );
+ // only do unpairing if the we have a link key with it.
+ TInt index = iPairedDevices.Find( dev, addrComp );
+ if ( index > KErrNotFound )
+ {
+ dev = iPairedDevices[index];
+ TRequestStatus status( KRequestPending );
+ // Unpair the device in registry (synchronously)
+ iRegistry.UnpairDevice( dev.Address(), status );
+ User::WaitForRequest( status );
+ BOstrace1(TRACE_DEBUG,DUMMY_DEVLIST,"Delete link key, res %d", status.Int());
+ if ( status == KErrNone )
+ {
+ TBTDeviceSecurity security = dev.GlobalSecurity();
+ // Clear trust setting so that correct icon will be shown in ui applications.
+ security.SetNoAuthenticate(EFalse );
+ security.SetNoAuthorise(EFalse );
+ dev.SetGlobalSecurity(security);
+ dev.DeleteLinkKey();
+ if ( dev.IsValidUiCookie() &&
+ ( dev.UiCookie() & EBTUiCookieJustWorksPaired ) )
+ {
+ // Remove the UI cookie bit for Just Works pairing.
+ TInt32 cookie = dev.UiCookie() & ~EBTUiCookieJustWorksPaired;
+ dev.SetUiCookie( cookie );
+ BOstrace1(TRACE_DEBUG,DUMMY_DEVLIST,"UI cookie %x cleared", EBTUiCookieJustWorksPaired );
+ }
+ // modify the device in registry synchronously
+ // status.Int() could be -1 if the device is not in registry
+ // which is totally fine for us.
+ (void) UpdateRegDevice( dev );
+ }
+ }
+ }
+
+void CBTNotifSecurityManager::BlockDevice( const TBTDevAddr& aAddr , TBool aBanned)
+ {
+ TIdentityRelation<TBTNamelessDevice> addrComp( CompareDeviceByAddress );
+ TBTNamelessDevice dev;
+ dev.SetAddress( aAddr );
+ TRequestStatus status( KRequestPending );
+ // Unpair the device in registry (synchronously)
+ iRegistry.GetDevice(dev,status);
+ User::WaitForRequest( status );
+ if(status == KErrNone)
+ {
+ TBTDeviceSecurity security = dev.GlobalSecurity();
+ security.SetBanned(aBanned);
+ if ( aBanned )
+ {
+ security.SetNoAuthorise(EFalse);
+ }
+ dev.SetGlobalSecurity(security);
+ (void)UpdateRegDevice(dev);
+ }
+ }
+
+TInt CBTNotifSecurityManager::AddUiCookieJustWorksPaired( const TBTNamelessDevice& aDev )
+ {
+ TInt err( KErrNone );
+ // There might be UI cookies used by other applications,
+ // we should not overwrite them.
+ TInt32 cookie = aDev.IsValidUiCookie() ? aDev.UiCookie() : EBTUiCookieUndefined;
+ if ( !( cookie & EBTUiCookieJustWorksPaired ) )
+ {
+ // Only update the cookie if the wanted one is not in registry yet
+ // to keep minimal operations with registry.
+ TBTNamelessDevice dev = aDev;
+ cookie |= EBTUiCookieJustWorksPaired;
+ dev.SetUiCookie( cookie );
+ err = UpdateRegDevice( dev );
+ BOstrace1(TRACE_DEBUG,DUMMY_DEVLIST,"Outgoing Pairing write Ui cookie ret %d", err );
+ }
+ return err;
+ }
+
+// ---------------------------------------------------------------------------
+// update a nameless device in registry
+// ---------------------------------------------------------------------------
+//
+TInt CBTNotifSecurityManager::UpdateRegDevice( const TBTNamelessDevice& aDev )
+ {
+ TRequestStatus status( KRequestPending );
+ // update the device in registry synchronously
+ iRegistry.ModifyDevice( aDev, status );
+ User::WaitForRequest( status );
+ BOstrace1(TRACE_DEBUG,DUMMY_DEVLIST,"UpdateRegDevice, ret %d", status.Int());
+ return status.Int();
+ }
+
+// ---------------------------------------------------------------------------
+// 0000 for outgoing pairing with a headset.
+// The placeholder for future extension (pin code passed in for pairing)
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::GetPinCode(
+ TBTPinCode& aPin, const TBTDevAddr& aAddr, TInt aMinPinLength )
+ {
+ if ( iPairingHandler )
+ {
+ iPairingHandler->GetPinCode( aPin, aAddr, aMinPinLength );
+ }
+ else
+ {
+ // make sure not to leave any text as PIN.
+ aPin.Zero();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Ask server class the connection status of the specified device
+// ---------------------------------------------------------------------------
+//
+TBTEngConnectionStatus CBTNotifSecurityManager::ConnectStatus( const TBTDevAddr& aAddr )
+ {
+ const CBtDevExtension* devExt = iDevRepository.Device(aAddr);
+ TBTEngConnectionStatus status = EBTEngNotConnected;
+ if ( devExt )
+ {
+ status = devExt->ServiceConnectionStatus();
+ }
+ return status;
+ }
+
+// ---------------------------------------------------------------------------
+// From class MBTNotifPairingAOObserver.
+// Checks if there is an authentication result.
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::RequestCompletedL( CBtSimpleActive* aActive, TInt aStatus )
+ {
+ BOstraceExt2(TRACE_DEBUG,DUMMY_DEVLIST,"aId: %d, aStatus: %d", aActive->RequestId(), aStatus);
+ // Check which request is completed.
+ switch( aActive->RequestId() )
+ {
+ case ESimplePairingResult:
+ {
+ TBTDevAddr tmpAddr = iSimplePairingRemote;
+ if (aStatus != KErrServerTerminated)
+ {
+ SubscribeSspPairingResult();
+ }
+ HandlePairingResultL( tmpAddr, aStatus );
+ break;
+ }
+ case EAuthenticationResult:
+ {
+ TBTDevAddr tmpAddr = iAuthenticateRemote;
+ if (aStatus != KErrServerTerminated)
+ {
+ SubscribeAuthenticateResult();
+ }
+ HandlePairingResultL( tmpAddr, aStatus );
+ break;
+ }
+ case ERegistryGetLocalAddress:
+ {
+ TBool value = IsLocalAddressAvailable();
+ SubscribeLocalAddress();
+ if ( value )
+ {
+ // Refresh paired devices list to include any restored devices.
+ iDevRepository.ReInitialize();
+ }
+ break;
+ }
+ default:
+ // Should not be possible, but no need for handling.
+ break;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// From class MBTEngActiveObserver.
+// cancels an outstanding request according to the given id.
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::CancelRequest( TInt aRequestId )
+ {
+ switch ( aRequestId )
+ {
+ case ESimplePairingResult:
+ {
+ // Cancel listening Simple pairing result
+ iPairingResult.CancelSimplePairingResult();
+ break;
+ }
+ case EAuthenticationResult:
+ {
+ // Cancel listening authentication result
+ iAuthenResult.CancelAuthenticationResult();
+ break;
+ }
+ case ERegistryGetLocalAddress:
+ {
+ // cancel listening local address status change
+ iPropertyLocalAddr.Cancel();
+ break;
+ }
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// From class MBtSimpleActiveObserver.
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::HandleError( CBtSimpleActive* aActive, TInt aError )
+ {
+ BOstraceExt2(TRACE_DEBUG,DUMMY_DEVLIST,"request id: %d, error: %d", aActive->RequestId(), aError);
+ (void) aActive;
+ (void) aError;
+ }
+
+// ---------------------------------------------------------------------------
+// From class MBtDevRepositoryObserver.
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::RepositoryInitialized()
+ {
+ TRAPD(err, UpdatePairedDeviceListL() );
+ if ( !err && iPairingHandler )
+ {
+ // non-null pairing handler means we are involved in a
+ // pairing operation already.
+ // todo: is some handling for above case needed?
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// From class MBtDevRepositoryObserver.
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::DeletedFromRegistry( const TBTDevAddr& aAddr )
+ {
+ // We are only interested in the removal of a paired device.
+ // thus check whether it is in our local paired list:
+ TInt i = iPairedDevices.Find( aAddr, MatchDeviceAddress);
+ if ( i > KErrNotFound )
+ {
+ iPairedDevices.Remove( i );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// From class MBtDevRepositoryObserver.
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::AddedToRegistry( const CBtDevExtension& aDevice )
+ {
+ // We are only interested in paired device.
+ if ( CBtDevExtension::IsBonded( aDevice.Device().AsNamelessDevice() ) )
+ {
+ TRAP_IGNORE(
+ HandleRegistryBondingL( aDevice.Device().AsNamelessDevice() ) );
+ }
+ }
+
+
+// ---------------------------------------------------------------------------
+// From class MBtDevRepositoryObserver.
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::ChangedInRegistry(
+ const CBtDevExtension& aDevice, TUint aSimilarity )
+ {
+ // We are only interested in paired device.
+ // thus check whether it is in our local paired list:
+ TInt i = iPairedDevices.Find( aDevice.Addr(), MatchDeviceAddress);
+ TBool bonded = CBtDevExtension::IsBonded( aDevice.Device().AsNamelessDevice() );
+ if ( i == KErrNotFound )
+ {
+ if ( bonded )
+ {
+ TRAP_IGNORE(
+ HandleRegistryBondingL(
+ aDevice.Device().AsNamelessDevice() ) );
+ }
+ return;
+ }
+ // Device was inregistry before, but we need to evaluate its bonding
+ // status.
+ // The given similarity will tell if the linkkey and paired is changed
+ // or not.
+ TInt pairingProperty = TBTNamelessDevice::EIsPaired
+ | TBTNamelessDevice::ELinkKey;
+ if ( ( pairingProperty & aSimilarity) == pairingProperty )
+ {
+ // no pairing or linkkey change. Nothing to do for pairing handling.
+ // but we'd better update local copy just in case other data
+ // of this device is needed by someone:
+ iPairedDevices[i] = aDevice.Device().AsNamelessDevice();
+ return;
+ }
+ if ( !CBtDevExtension::IsBonded( aDevice.Device().AsNamelessDevice() ) )
+ {
+ // device is not user-bonded.
+ iPairedDevices.Remove( i );
+ return;
+ }
+ // it is a new paired device if its link-key has been upgraded
+ if ( aDevice.Device().LinkKeyType() != ELinkKeyUnauthenticatedUpgradable )
+ {
+ iPairedDevices.Remove( i );
+ TRAP_IGNORE(
+ HandleRegistryBondingL(
+ aDevice.Device().AsNamelessDevice() ) );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// From class MBtDevRepositoryObserver.
+// This class is not interested in such events.
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::ServiceConnectionChanged(
+ const CBtDevExtension& aDevice, TBool aConnected )
+ {
+ (void) aDevice;
+ (void) aConnected;
+ }
+
+// ---------------------------------------------------------------------------
+// Activate or deactivate a pairing handler
+// ---------------------------------------------------------------------------
+//
+TInt CBTNotifSecurityManager::SetPairObserver(const TBTDevAddr& aAddr, TBool aActivate)
+ {
+ BOstrace1(TRACE_DEBUG,DUMMY_DEVLIST,"%d", aActivate);
+ BtTraceBtAddr0(TRACE_DEBUG,DUMMY_DEVLIST, aAddr );
+ TInt err( KErrNone );
+ if ( !aActivate )
+ {
+ if ( iPairingHandler )
+ {
+ iPairingHandler->StopPairHandling( aAddr );
+ }
+ return err;
+ }
+
+ if ( !iPairingHandler)
+ {
+ // This is an incoming pair, unpair it from registry and
+ // create the handler:
+ UnpairDevice( aAddr );
+ TRAP( err, iPairingHandler = CBTNotifIncomingPairingHandler::NewL( *this, aAddr ));
+ }
+ if ( iPairingHandler)
+ {
+ // let the handler decide what to do:
+ err = iPairingHandler->ObserveIncomingPair( aAddr );
+ }
+ return err;
+ }
+
+// ---------------------------------------------------------------------------
+// Delegates the request to current pair handler
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::PairDeviceL( const TBTDevAddr& aAddr, TUint32 aCod )
+ {
+ if ( !iPairingHandler)
+ {
+ // no existing pair handling, create one:
+ iPairingHandler = CBTNotifOutgoingPairingHandler::NewL( *this, aAddr );
+ }
+ // let pair handler decide what to do:
+ iPairingHandler->HandleOutgoingPairL( aAddr, aCod );
+ }
+
+// ---------------------------------------------------------------------------
+// cancel Subscribings to simple pairing result and authentication result from
+// Pairing Server
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::CancelSubscribePairingAuthenticate()
+ {
+ if( iSSPResultActive )
+ {
+ // Cancel listening Simple pairing result
+ iSSPResultActive->Cancel();
+ }
+ if( iAuthenResultActive )
+ {
+ iAuthenResultActive->Cancel();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Subscribes to simple pairing result from Pairing Server (if not already
+// subscribed).
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::SubscribeSspPairingResult()
+ {
+ if ( !iSSPResultActive->IsActive() )
+ {
+ iPairingResult.SimplePairingResult( iSimplePairingRemote, iSSPResultActive->RequestStatus() );
+ iSSPResultActive->GoActive();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Subscribes to authentication result from Pairing Server (if not already
+// subscribed).
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::SubscribeAuthenticateResult()
+ {
+ if ( !iAuthenResultActive->IsActive() )
+ {
+ // Subscribe authentication result (which requires pairing for unpaired devices)
+ iAuthenResult.AuthenticationResult( iAuthenticateRemote, iAuthenResultActive->RequestStatus() );
+ iAuthenResultActive->GoActive();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Handle a pairing result from the pairing server.
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::HandlePairingResultL( const TBTDevAddr& aAddr, TInt aResult )
+ {
+ BOstrace1(TRACE_DEBUG,DUMMY_DEVLIST,"result %d", aResult);
+ BtTraceBtAddr0(TRACE_DEBUG,DUMMY_DEVLIST, aAddr );
+
+ if ( !iPairingHandler && ( aResult == KErrNone || aResult == KHCIErrorBase ) )
+ {
+ // we only create new handler if incoming pairing succeeds.
+ // Pairing failure could be caused by user local cancellation, as the
+ // result, the handler was destroyed by notifier. We shall not
+ // instantiate the handler again.
+ // If a pairing failed due to other reasons than user local cancelling,
+ // it will be catched by the already started handler
+ // (except Just Works pairing - no handler for it at all until we receive
+ // registry change event. Thus if incoming JWs pairing failed, no user
+ // notification will be shown.)
+ iPairedDevices.Find( aAddr, MatchDeviceAddress);
+ TInt index = iPairedDevices.Find( aAddr, MatchDeviceAddress);
+ // If the device is not found in the old paired device list, it is a new
+ // paired device:
+ if ( index == KErrNotFound)
+ {
+ // No handler yet, create incoming pairing handler:
+ iPairingHandler = CBTNotifIncomingPairingHandler::NewL( *this, aAddr );
+ }
+ }
+ if ( iPairingHandler )
+ {
+ iPairingHandler->HandlePairServerResult( aAddr, aResult );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// copy the nameless devices to local array
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::UpdatePairedDeviceListL()
+ {
+ iPairedDevices.Reset();
+ const RDevExtensionArray& alldevs = iDevRepository.AllDevices();
+ for ( TInt i = 0; i < alldevs.Count(); i++ )
+ {
+ if ( CBtDevExtension::IsBonded( alldevs[i]->Device().AsNamelessDevice() ) )
+ {
+ iPairedDevices.AppendL( alldevs[i]->Device().AsNamelessDevice() );
+ }
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Create incoming pairing handler if no one exists yet.
+// ---------------------------------------------------------------------------
+//
+void CBTNotifSecurityManager::HandleRegistryBondingL(
+ const TBTNamelessDevice& aNameless)
+ {
+ TInt err = iPairedDevices.Append( aNameless );
+ if ( !err && !iPairingHandler)
+ {
+ // New paired device, but no pairing handler yet.
+ // this means an incoming pairing has occured:
+ TRAP( err, iPairingHandler =
+ CBTNotifIncomingPairingHandler::NewL( *this, aNameless.Address() ) );
+ }
+ if ( !err )
+ {
+ // We have a pairing handler now.
+ // Ask pair handler to decide what to do:
+ iPairingHandler->HandleRegistryNewPairedEvent(
+ aNameless );
+ }
+ else if ( iPairingHandler )
+ {
+ // error could occur due to no memory,
+ // let us try aborting pairing handling
+ iPairingHandler->StopPairHandling( aNameless.Address() );
+ }
+ }
+
+void CBTNotifSecurityManager::TrustDevice( const TBTDevAddr& aAddr )
+ {
+ TIdentityRelation<TBTNamelessDevice> addrComp( CompareDeviceByAddress );
+ TBTNamelessDevice dev;
+ dev.SetAddress( aAddr );
+ TRequestStatus status( KRequestPending );
+
+ iRegistry.GetDevice(dev,status);
+ User::WaitForRequest( status );
+ if(status == KErrNone)
+ {
+ TBTDeviceSecurity security = dev.GlobalSecurity();
+ security.SetNoAuthorise(ETrue);
+ security.SetBanned(EFalse);
+ dev.SetGlobalSecurity(security);
+ (void)UpdateRegDevice(dev);
+ }
+ }
+
--- a/bluetoothengine/btnotif/btnotifsrv/src/btnotifserver.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btnotifsrv/src/btnotifserver.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -272,7 +272,8 @@
//
GLDEF_C TInt E32Main()
{
- __UHEAP_MARK;
+ // Disabled until memory leak in QT/Open C are fixed
+ // __UHEAP_MARK;
CTrapCleanup* cleanup = CTrapCleanup::New();
TInt err = KErrNoMemory;
if ( cleanup )
@@ -280,7 +281,8 @@
TRAP( err, RunServerL() );
delete cleanup;
}
- __UHEAP_MARKEND;
+ // Disabled until memory leak in QT/Open C are fixed
+ // __UHEAP_MARKEND;
return err;
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btnotif/btnotifsrv/src/btnotifserviceauthorizer.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,275 @@
+/*
+* 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: class for prompting user to authorize a service
+* connection request.
+*
+*/
+
+#include <hb/hbcore/hbsymbianvariant.h>
+#include <btengconnman.h>
+#include "btnotifserviceauthorizer.h"
+#include "btnotifsecuritymanager.h"
+#include "bluetoothtrace.h"
+#include "btnotifclientserver.h"
+#include "bluetoothnotification.h"
+#include "btnotifconnectiontracker.h"
+#include "btnotificationmanager.h"
+#include "bluetoothnotification.h"
+#include "btnotifserver.h"
+#include "btnotifutil.h"
+
+//
+// SDP UUID Constants - Short form
+// Taken from Bluetooth Profile specification v1.1
+// These are used when registering the service to
+// local SDP database and when searching the service
+// information from remote device.
+const TUint KBTSdpDun = 0x1103;
+const TUint KBTSdpGenericTelephony = 0x1204;
+const TUint KBTSdpFax = 0x1111;
+const TUint KBTSdpObjectPush = 0x1105;
+const TUint KBTSdpFileTransfer = 0x1106;
+const TUint KBTSdpHeadSet = 0x1108;
+const TUint KBTSdpGenericNetworking = 0x1201;
+const TUint KBTSdpBasicImaging = 0x111b;
+
+
+CBTNotifServiceAuthorizer* CBTNotifServiceAuthorizer::NewL(
+ CBTNotifSecurityManager& aParent)
+ {
+ CBTNotifServiceAuthorizer* me = new (ELeave) CBTNotifServiceAuthorizer(aParent);
+ CleanupStack::PushL(me);
+ me->ConstructL();
+ CleanupStack::Pop(me);
+ return me;
+ }
+
+CBTNotifServiceAuthorizer::~CBTNotifServiceAuthorizer()
+ {
+ iParams.Close();
+ if( iNotification )
+ {
+ // Clear the notification callback, we cannot receive them anymore.
+ iNotification->RemoveObserver();
+ iNotification->Close(); // Also dequeues the notification from the queue.
+ iNotification = NULL;
+ }
+ }
+
+CBTNotifServiceAuthorizer::CBTNotifServiceAuthorizer(
+ CBTNotifSecurityManager& aParent)
+:iParent(aParent)
+ {
+ }
+
+void CBTNotifServiceAuthorizer::ConstructL()
+ {
+ }
+
+void CBTNotifServiceAuthorizer::StartNotifierL(const RMessage2& aMessage)
+ {
+ if (!iNotifierMessage.IsNull())
+ {
+ if(aMessage.Function() == EBTNotifCancelNotifier)
+ {
+ TInt err = iNotification->Close();
+ iNotifierMessage.Complete(KErrCancel);
+ aMessage.Complete(err);
+ return;
+ }
+ BOstrace0(TRACE_DEBUG,DUMMY_DEVLIST,"[BTNotif]:We are busy");
+ User::Leave(KErrServerBusy );
+ }
+
+ iParams.CreateL( aMessage.GetDesLengthL( EBTNotifSrvParamSlot ) );
+ aMessage.ReadL( EBTNotifSrvParamSlot, iParams );
+
+ TBTAuthorisationParams params;
+ TPckgC<TBTAuthorisationParams> paramsPckg( params );
+ paramsPckg.Set( iParams );
+
+ iServiceId = paramsPckg().iUid.iUid;
+
+ const CBtDevExtension* dev = NULL;
+ dev = iParent.BTDevRepository().Device(paramsPckg().iBDAddr);
+
+ if(dev && dev->Device().GlobalSecurity().Banned() )
+ {
+ // If the device is banned, service connection from
+ // this device is not allowed:
+ BOstrace0(TRACE_DEBUG,DUMMY_DEVLIST,"[BTNotif]:Device is banned");
+ aMessage.Complete( KErrCancel);
+ return;
+ }
+
+ if(dev && dev->Device().GlobalSecurity().NoAuthorise())
+ {
+ // If the device is a trusted one, no need to pop up query messages.
+ TPckgBuf<TBool> answer;
+ answer() = ETrue;
+ aMessage.Write(EBTNotifSrvReplySlot, answer);
+ aMessage.Complete(KErrNone);
+ return;
+ }
+
+ // User must namually authorize this request.
+ // Get needed info for the dialog:
+ iPairedDevice = (dev == NULL ) ? EFalse : dev->IsUserAwareBonded();
+ iDeviceClass = (dev == NULL ) ? 0 : dev->Device().DeviceClass().DeviceClass();
+ TBTNotifUtil::GetDeviceUiNameL(iCurrentDeviceName,
+ dev, paramsPckg().iName, paramsPckg().iBDAddr );
+
+ PrepareNotificationL(TBluetoothDialogParams::EUserAuthorization, EAuthorization, iPairedDevice);
+ iNotification->ShowL();
+ // we do not save the message until all leavable functions have executed successfully.
+ // This makes sure the iNotifierMessage has a valid handle.
+ iNotifierMessage = aMessage;
+ }
+
+void CBTNotifServiceAuthorizer::MBRDataReceived( CHbSymbianVariantMap& aData )
+ {
+ // "actionResult" will be true if the user clicks 'Yes' on the dialog and false, if he/she clicks 'No'
+ // "iCheckBoxState" will be set to true of the checkbox is checked, else false.
+ if(aData.Keys().MdcaPoint(0).Compare(_L("actionResult")) == 0)
+ {
+ TBTAuthorisationParams params;
+ TPckgC<TBTAuthorisationParams> paramsPckg(params);
+ paramsPckg.Set(iParams);
+
+ TPckgBuf<TBool> answer;
+ TInt val = *(static_cast<TInt*>(aData.Get(_L("actionResult"))->Data()));
+ if(val)
+ {
+ answer() = ETrue;
+ if(iCheckBoxState)
+ {
+ // Set the device "Trusted" property
+ iParent.TrustDevice(paramsPckg().iBDAddr);
+ }
+ }
+ else
+ {
+ answer() = EFalse;
+ if(iCheckBoxState)
+ {
+ // If the device is paried, unpair it as well.
+ if(iPairedDevice)
+ {
+ iParent.UnpairDevice(paramsPckg().iBDAddr);
+ }
+
+ //Set the device "Blocked" property
+ iParent.BlockDevice(paramsPckg().iBDAddr,ETrue);
+ }
+ }
+ iNotifierMessage.Write(EBTNotifSrvReplySlot, answer);
+ iNotifierMessage.Complete(KErrNone);
+ }
+ else if(aData.Keys().MdcaPoint(0).Compare(_L("checkBoxState")) == 0)
+ {
+ iCheckBoxState = *(static_cast<TInt*>(aData.Get(_L("checkBoxState"))->Data()));
+ }
+ }
+
+void CBTNotifServiceAuthorizer::MBRNotificationClosed( TInt /*aError*/, const TDesC8& /*aData*/ )
+ {
+ }
+
+void CBTNotifServiceAuthorizer::PrepareNotificationL(TBluetoothDialogParams::TBTDialogType aType,
+ TBTDialogResourceId aResourceId, TBool aPaired)
+ {
+ iNotification = iParent.ConnectionTracker().NotificationManager()->GetNotification();
+ User::LeaveIfNull( iNotification ); // For OOM exception, leaves with KErrNoMemory
+ iNotification->SetObserver( this );
+ iNotification->SetNotificationType( aType, aResourceId );
+ TInt err = KErrNone;
+
+ //Set the dialog title based on the service IDs
+ switch(iServiceId)
+ {
+ case KBTSdpObjectPush:
+ case KBTSdpBasicImaging:
+ {
+ if(aPaired)
+ {
+ err = iNotification->SetData( TBluetoothDialogParams::EDialogTitle, TBluetoothDialogParams::EReceiveFromPairedDevice);
+ // In case of receiving a msg from a paired deivce, the checkbox is checked by default.
+ iCheckBoxState = ETrue;
+ User::LeaveIfError(err);
+ }
+ else
+ {
+ err = iNotification->SetData( TBluetoothDialogParams::EDialogTitle, TBluetoothDialogParams::EReceive);
+ iCheckBoxState = EFalse;
+ User::LeaveIfError(err);
+ }
+ }break;
+
+ case KBTSdpFax:
+ case KBTSdpDun:
+ case KBTSdpFileTransfer:
+ case KBTSdpHeadSet:
+ case KBTSdpGenericTelephony:
+ case KBTSdpGenericNetworking:
+ {
+ err = iNotification->SetData( TBluetoothDialogParams::EDialogTitle, TBluetoothDialogParams::EConnect);
+ // In case of an incoming connection, the checkbox is checked by default.
+ iCheckBoxState = ETrue;
+ User::LeaveIfError(err);
+ }break;
+
+ default:
+ {
+ TBTAuthorisationParams params;
+ TPckgC<TBTAuthorisationParams> paramsPckg(params);
+ paramsPckg.Set(iParams);
+
+ // In this case, if there already exists a connection to an audio device, then we simply accept
+ // the incoming connection without querying the user.
+ // If there is no existing connection, then we pop up a query message.
+ if(IsExistingConnectionToAudioL(paramsPckg().iBDAddr))
+ {
+ TPckgBuf<TBool> answer;
+ answer() = ETrue;
+ iNotifierMessage.Write(EBTNotifSrvReplySlot, answer);
+ iNotifierMessage.Complete(KErrNone);
+ return;
+ }
+ else
+ {
+ err = iNotification->SetData( TBluetoothDialogParams::EDialogTitle, TBluetoothDialogParams::EConnect);
+ // In case of an incoming connection, the checkbox is checked by default.
+ iCheckBoxState = ETrue;
+ User::LeaveIfError(err);
+ }
+ }break;
+ }
+
+ //Add the device name
+ err = iNotification->SetData( TBluetoothDeviceDialog::EDeviceName, iCurrentDeviceName );
+ User::LeaveIfError(err);
+ //Add the device class
+ err = iNotification->SetData( TBluetoothDeviceDialog::EDeviceClass, iDeviceClass );
+ User::LeaveIfError(err);
+ }
+
+TBool CBTNotifServiceAuthorizer::IsExistingConnectionToAudioL(const TBTDevAddr& aDevAddr)
+ {
+ CBTEngConnMan* connMan = CBTEngConnMan::NewL();
+ TBTEngConnectionStatus conntatus(EBTEngNotConnected);
+ (void) connMan->IsConnected(aDevAddr,conntatus);
+ delete connMan;
+ return (conntatus==EBTEngConnected || conntatus==EBTEngConnecting);
+ }
+
--- a/bluetoothengine/btnotif/btnotifsrv/src/btnotifsession.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btnotifsrv/src/btnotifsession.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -128,7 +128,7 @@
{
// Pass it to the connection tracker.
TRAP( err,
- connTracker->HandlePairingNotifierRequestL( aMessage ) );
+ connTracker->HandleNotifierRequestL( aMessage ) );
}
if ( err )
{
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btnotif/btnotifsrv/src/btnotifutil.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,68 @@
+/*
+* 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:
+*
+*/
+#include "btnotifutil.h"
+#include <btservices/btdevrepository.h>
+#include <btmanclient.h>
+#include "bluetoothtrace.h"
+
+// ---------------------------------------------------------------------------
+// If aDevExt contains a valid friendly name, the friendly name will be displayed;
+// Otherwise, if the given name from the parameter of a notifier request is valid,
+// the given name will be displayed;
+// Otherwise, If aDevExt contains a valid device name, the name will be displayed;
+// Otherwise, the a name will be created by this function.
+// ---------------------------------------------------------------------------
+//
+void TBTNotifUtil::GetDeviceUiNameL( TDes& aNameBuf,
+ const CBtDevExtension* aDevExt,
+ const TDesC& aNameInParam,
+ const TBTDevAddr& aAddr)
+ {
+ CBtDevExtension* tempDev( NULL );
+ TPtrC namePtr;
+ if ( aDevExt &&
+ aDevExt->Device().IsValidFriendlyName() &&
+ aDevExt->Device().FriendlyName().Length() != 0 )
+ {
+ // We always use the friendly name regardless of
+ // the device-name of the device is available or not.
+ namePtr.Set( aDevExt->Device().FriendlyName() );
+ }
+ else
+ {
+ // this will take care of name formating. Either the
+ // name from iNameInParam or the address will be
+ // the alias:
+ tempDev = CBtDevExtension::NewLC( aAddr, aNameInParam );
+ namePtr.Set( tempDev->Alias() );
+ }
+ // Make sure no overflow:
+ if ( aNameBuf.MaxLength() < namePtr.Length() )
+ {
+ aNameBuf.Copy( namePtr.Left( aNameBuf.MaxLength() ) );
+ }
+ else
+ {
+ aNameBuf.Copy( namePtr );
+ }
+ if ( tempDev )
+ {
+ CleanupStack::PopAndDestroy( tempDev );
+ }
+ }
+
+
--- a/bluetoothengine/btnotif/group/btnotifsrv.mmp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/group/btnotifsrv.mmp Wed Jun 23 18:23:52 2010 +0300
@@ -42,7 +42,9 @@
SOURCE btnotifbasepairinghandler.cpp
SOURCE btnotifincomingpairinghandler.cpp
SOURCE btnotifoutgoingpairinghandler.cpp
-SOURCE btnotifpairingmanager.cpp
+SOURCE btnotifsecuritymanager.cpp
+SOURCE btnotifserviceauthorizer.cpp
+SOURCE btnotifutil.cpp
USERINCLUDE ../btnotifsrv/inc ../inc
@@ -65,3 +67,4 @@
LIBRARY commonengine.lib
LIBRARY flogger.lib
LIBRARY charconv.lib
+
--- a/bluetoothengine/btnotif/inc/bluetoothdevicedialogs.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/inc/bluetoothdevicedialogs.h Wed Jun 23 18:23:52 2010 +0300
@@ -41,6 +41,7 @@
EPairingSuccess,
EPairingFailure,
EVisibilityTimeout,
+ EUnpairedDevice,
EUnusedResource // The last ID
};
@@ -65,7 +66,9 @@
EMoreDevice,
EDeviceSearch,
ESend,
- EGlobalNotif
+ EGlobalNotif,
+ EUserAuthorization,
+ EReceiveProgress
};
/** Enumeration for the notification parameters data type to be configured. */
@@ -78,6 +81,15 @@
EDialogTitle,
EDialogExt // Id for first data type of derived class.
};
+
+ /** Enumeration for the notification dialog heading type. */
+ enum TDialogTitleDataType
+ {
+ EReceive,
+ EReceiveFromPairedDevice,
+ EConnect,
+ EPairingRequest
+ };
inline TBluetoothDialogParams();
@@ -123,7 +135,10 @@
EDeviceName,
EDeviceClass,
EAdditionalInt,
- EAdditionalDesc
+ EAdditionalDesc,
+ EReceivingFileName,
+ EReceivingFileSize,
+ EReceivedFileCount
};
inline TBluetoothDeviceDialog();
--- a/bluetoothengine/btserviceutil/bwins/btserviceutilu.def Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btserviceutil/bwins/btserviceutilu.def Wed Jun 23 18:23:52 2010 +0300
@@ -32,4 +32,5 @@
?Device@CBtDevRepository@@QBEPBVCBtDevExtension@@ABVTBTDevAddr@@@Z @ 31 NONAME ; class CBtDevExtension const * CBtDevRepository::Device(class TBTDevAddr const &) const
?ReInitialize@CBtDevRepository@@QAEXXZ @ 32 NONAME ; void CBtDevRepository::ReInitialize(void)
?IsHeadset@CBtDevExtension@@SAHABVTBTDeviceClass@@@Z @ 33 NONAME ; int CBtDevExtension::IsHeadset(class TBTDeviceClass const &)
+ ?NewLC@CBtDevExtension@@SAPAV1@ABVTBTDevAddr@@ABVTDesC16@@W4TDefaultDevNameOption@@@Z @ 34 NONAME ; class CBtDevExtension * CBtDevExtension::NewLC(class TBTDevAddr const &, class TDesC16 const &, enum TDefaultDevNameOption)
--- a/bluetoothengine/btserviceutil/eabi/btserviceutilu.def Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btserviceutil/eabi/btserviceutilu.def Wed Jun 23 18:23:52 2010 +0300
@@ -40,4 +40,5 @@
_ZN15CBtDevExtension17IsUserAwareBondedERK17TBTNamelessDevice @ 39 NONAME
_ZN15CBtDevExtension8IsBondedERK17TBTNamelessDevice @ 40 NONAME
_ZN15CBtDevExtension9IsHeadsetERK14TBTDeviceClass @ 41 NONAME
+ _ZN15CBtDevExtension5NewLCERK10TBTDevAddrRK7TDesC1621TDefaultDevNameOption @ 42 NONAME
--- a/bluetoothengine/btserviceutil/export/btdevextension.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btserviceutil/export/btdevextension.h Wed Jun 23 18:23:52 2010 +0300
@@ -77,14 +77,27 @@
/**
* Two-phase constructor
- * @param aDev a CBTDevice instance. The ownership is transferred.
+ * @param aAddr the inquiry socket address of the device.
+ * @param aName the device-name of the device.
* @param aNameOption the option for formating the default device
- * name when the given aDev instance has no valid name.
+ * name when the given name is empty.
*/
IMPORT_C static CBtDevExtension* NewLC(
const TInquirySockAddr& aAddr,
const TDesC& aName = KNullDesC,
TDefaultDevNameOption aNameOption = EColonSeperatedBDAddr );
+
+ /**
+ * Two-phase constructor
+ * @param aAddr the bd_addr of the device.
+ * @param aName the device-name of the device.
+ * @param aNameOption the option for formating the default device
+ * name when the given name is empty.
+ */
+ IMPORT_C static CBtDevExtension* NewLC(
+ const TBTDevAddr& aAddr,
+ const TDesC& aName = KNullDesC,
+ TDefaultDevNameOption aNameOption = EColonSeperatedBDAddr );
/**
* Destructor
--- a/bluetoothengine/btserviceutil/src/btdevextension.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btserviceutil/src/btdevextension.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -77,6 +77,27 @@
}
// ---------------------------------------------------------------------------
+// NewLC
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CBtDevExtension* CBtDevExtension::NewLC(
+ const TBTDevAddr& aAddr,
+ const TDesC& aName,
+ TDefaultDevNameOption aNameOption )
+ {
+ CBtDevExtension* self = new (ELeave) CBtDevExtension( aNameOption );
+ CleanupStack::PushL( self );
+ CBTDevice* dev = CBTDevice::NewLC( aAddr );
+ if ( aName.Length() )
+ {
+ dev->SetDeviceNameL( BTDeviceNameConverter::ToUTF8L( aName ) );
+ }
+ self->ConstructL( dev );
+ CleanupStack::Pop( dev );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
// Destructor
// ---------------------------------------------------------------------------
//
@@ -248,12 +269,15 @@
iAlias.Zero();
if ( iDev->IsValidFriendlyName() && iDev->FriendlyName().Length() != 0 )
{
- iAlias.CreateL( iDev->FriendlyName() );
+ iAlias.ReAllocL(iDev->FriendlyName().Length());
+ iAlias.Append(iDev->FriendlyName());
}
// otherwise, device name, if it is available, will be displayed
else if ( iDev->IsValidDeviceName() && iDev->DeviceName().Length() != 0 )
{
- iAlias.CreateL( BTDeviceNameConverter::ToUnicodeL(iDev->DeviceName() ) );
+ TBTDeviceName name = BTDeviceNameConverter::ToUnicodeL(iDev->DeviceName());
+ iAlias.ReAllocL(name.Length());
+ iAlias.Append(name);
}
if ( iAlias.Length() == 0 &&
( iNameOption == EColonSeperatedBDAddr || iNameOption == EPlainBDAddr ) )
--- a/bluetoothengine/btui/btcpplugin/btcpplugin.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btcpplugin/btcpplugin.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * 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"
@@ -18,7 +18,6 @@
#include <cpsettingformentryitemdataimpl.h>
#include "btcpplugin.h"
-#include "btcpuimainview.h"
#include "btcpuisettingitem.h"
/*!
@@ -42,7 +41,7 @@
{
return QList<CpSettingFormItemData*> () << new BtCpUiSettingItem(
- itemDataHelper, tr("Bluetooth"));
+ itemDataHelper);
}
--- a/bluetoothengine/btui/btcpplugin/btcpplugin.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btcpplugin/btcpplugin.h Wed Jun 23 18:23:52 2010 +0300
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * 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"
--- a/bluetoothengine/btui/btcpplugin/btcpplugin.pro Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btcpplugin/btcpplugin.pro Wed Jun 23 18:23:52 2010 +0300
@@ -19,39 +19,43 @@
DEPENDPATH += .
INCLUDEPATH += . ../inc/
-
CONFIG += qt hb plugin
LIBS += -lcpframework -lbtuimodel -lbtuidelegate
MOC_DIR = moc
OBJECTS_DIR = obj
-#TRANSLATIONS = telephone_cp.ts
+TRANSLATIONS += btviews.ts \
+ btdialogs.ts
RESOURCES += btcpplugin.qrc
# Input
-HEADERS += btcpplugin.h \
- btcpuibaseview.h \
- btcpuimainview.h \
- btcpuisearchview.h \
- btcpuideviceview.h \
- btcpuisettingitem.h \
- btuiviewutil.h
-
-SOURCES += btcpplugin.cpp \
- btcpuibaseview.cpp \
- btcpuimainview.cpp \
- btcpuisearchview.cpp \
- btcpuideviceview.cpp \
- btcpuisettingitem.cpp
-
-symbian: {
+HEADERS += btcpuimainlistviewitem.h \
+ btcpuisearchlistviewitem.h \
+ btcpplugin.h \
+ btcpuibaseview.h \
+ btcpuimainview.h \
+ btcpuisearchview.h \
+ btcpuideviceview.h \
+ btcpuisettingitem.h \
+ btuiviewutil.h
+SOURCES += btcpuimainlistviewitem.cpp \
+ btcpuisearchlistviewitem.cpp \
+ btcpplugin.cpp \
+ btcpuibaseview.cpp \
+ btcpuimainview.cpp \
+ btcpuisearchview.cpp \
+ btcpuideviceview.cpp \
+ btcpuisettingitem.cpp
+symbian: {
DEFINES += PLUGINUID3=0x2002434E
TARGET.UID3 = 0x2002434E
TARGET.CAPABILITY = ALL -TCB
TARGET.EPOCALLOWDLLDATA = 1
INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+
+ LIBS += -lbtdevice
PLUGIN_STUB_PATH = /resource/qt/plugins/controlpanel
--- a/bluetoothengine/btui/btcpplugin/btcpplugin.qrc Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btcpplugin/btcpplugin.qrc Wed Jun 23 18:23:52 2010 +0300
@@ -18,8 +18,6 @@
<file>icons/qgn_prop_bt_printer.svg</file>
<file>icons/qgn_prop_bt_unknown.svg</file>
<file>icons/qgn_frwidget_add_friend_photo.svg</file>
- </qresource>
- <qresource prefix="/" >
<file>docml/bt-main-view.docml</file>
<file>docml/bt-search-view.docml</file>
<file>docml/bt-device-view.docml</file>
--- a/bluetoothengine/btui/btcpplugin/btcpuibaseview.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btcpplugin/btcpuibaseview.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -1,24 +1,19 @@
/*
-* ============================================================================
-* Name : btcpuibaseclass.cpp
-* Part of : BluetoothUI / btapplication *** Info from the SWAD
-* Description : Implements the baseclass for all views in btapplication.
-*
-* Copyright © 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:
-* Nokia Corporation
-* ============================================================================
-* Template version: 4.1
-*/
+ * 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:
+ *
+ */
#include "btcpuibaseview.h"
#include <hbaction.h>
--- a/bluetoothengine/btui/btcpplugin/btcpuibaseview.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btcpplugin/btcpuibaseview.h Wed Jun 23 18:23:52 2010 +0300
@@ -1,24 +1,19 @@
/*
-* ============================================================================
-* Name : btcpuibaseview.h
-* Part of : BluetoothUI / btapplication *** Info from the SWAD
-* Description : Declaration of the baseclass for all views in btapplication.
-*
-* Copyright © 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:
-* Nokia Corporation
-* ============================================================================
-* Template version: 4.2
-*/
+ * 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:
+ *
+ */
#ifndef BTCPUIBASEVIEW_H
#define BTCPUIBASEVIEW_H
@@ -60,10 +55,10 @@
protected:
- // do not owned
+ // not owned
BtSettingModel *mSettingModel;
- //do not owned
+ // not owned
BtDeviceModel *mDeviceModel;
QGraphicsItem *mParent;
--- a/bluetoothengine/btui/btcpplugin/btcpuideviceview.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btcpplugin/btcpuideviceview.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * 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""
@@ -21,10 +21,13 @@
#include <HbInstance>
#include <hbdocumentloader.h>
#include <hbdataform.h>
+#include <hbdataformmodel.h>
+#include <hbdataformmodelitem.h>
#include <hbgroupbox.h>
#include <hbpushbutton.h>
#include <hblabel.h>
-#include <hbtextedit.h>
+#include <hbicon.h>
+#include <hblineedit.h>
#include <hblistview.h>
#include <hbmenu.h>
#include <qstring>
@@ -35,6 +38,8 @@
#include <btabstractdelegate.h>
#include <btdelegatefactory.h>
#include <QModelIndex>
+#include "btuiiconutil.h"
+#include "btuidevtypemap.h"
// docml to load
const char* BTUI_DEVICEVIEW_DOCML = ":/docml/bt-device-view.docml";
@@ -45,7 +50,8 @@
BtDeviceModel &deviceModel,
QGraphicsItem *parent) :
BtCpUiBaseView(settingModel,deviceModel,parent),
- mPairStatus(false), mConnectStatus(false), mConnectable(false), mAbstractDelegate(0)
+ mPairedStatus(false), mConnectedStatus(false), mTrustedStatus(false), mBlockedStatus(false),
+ mConnectable(false), mAbstractDelegate(0)
{
mDeviceIndex = QModelIndex();//is it needed to initialize mIndex???
@@ -63,11 +69,11 @@
// name in docml.
setObjectName("bt_device_view");
+ mLoader = new HbDocumentLoader();
+ // Pass the view to documentloader. Document loader uses this view
+ // when docml is parsed, instead of creating new view.
QObjectList objectList;
objectList.append(this);
- // Pass the view to documentloader. Document loader uses this view
- // when docml is parsed, instead of creating new view.
- mLoader = new HbDocumentLoader();
mLoader->setObjectTree(objectList);
bool ret = false;
@@ -77,23 +83,36 @@
// Exit if the file format is invalid
BTUI_ASSERT_X( ok, "bt-device-view", "Invalid docml file" );
- // Set title for the control panel
- // ToDo: check if deprecated API
- setTitle("Control Panel");
+ mOrientation = mMainWindow->orientation();
+
+ if (mOrientation == Qt::Horizontal) {
+ mLoader->load(BTUI_DEVICEVIEW_DOCML, "landscape", &ok);
+ BTUI_ASSERT_X( ok, "bt-device-view", "Invalid docml file: landscape section problem" );
+ }
+ else {
+ mLoader->load(BTUI_DEVICEVIEW_DOCML, "portrait", &ok);
+ BTUI_ASSERT_X( ok, "bt-device-view", "Invalid docml file: landscape section problem" );
+ }
+
+ // listen for orientation changes
+ ret = connect(mMainWindow, SIGNAL(orientationChanged(Qt::Orientation)),
+ this, SLOT(changeOrientation(Qt::Orientation)));
+ BTUI_ASSERT_X( ret, "BtCpUiDeviceView::BtCpUiDeviceView()", "connect orientationChanged() failed");
+
// assign automatically created widgets to local variables
-
+ /*
mGroupBox = 0;
mGroupBox = qobject_cast<HbGroupBox *>( mLoader->findWidget( "groupBox_deviceView" ) );
BTUI_ASSERT_X( mGroupBox != 0, "bt-device-view", "Device groupbox not found" );
-
+ */
mDeviceIcon=0;
//can't use qobject_cast since HbIcon is not derived from QObject!
mDeviceIcon = qobject_cast<HbLabel *>( mLoader->findWidget( "deviceIcon" ) );
BTUI_ASSERT_X( mDeviceIcon != 0, "bt-device-view", "Device Icon not found" );
mDeviceName=0;
- mDeviceName = qobject_cast<HbTextEdit *>( mLoader->findWidget( "deviceName" ) );
+ mDeviceName = qobject_cast<HbLineEdit *>( mLoader->findWidget( "deviceName" ) );
BTUI_ASSERT_X( mDeviceName != 0, "bt-device-view", "Device Name not found" );
ret = connect(mDeviceName, SIGNAL(editingFinished ()), this, SLOT(changeBtDeviceName()));
@@ -105,6 +124,13 @@
mDeviceStatus = qobject_cast<HbLabel *>( mLoader->findWidget( "deviceStatus" ) );
BTUI_ASSERT_X( mDeviceStatus != 0, "bt-device-view", "Device status not found" );
+
+ mConnectionCombobox = 0;
+ mConnectionCombobox = qobject_cast<HbDataForm *>( mLoader->findWidget( "connectionCombobox" ) );
+ BTUI_ASSERT_X( mConnectionCombobox != 0, "bt-device-view", "connection combobox not found" );
+
+ mConnectionComboboxModel = new HbDataFormModel();
+
mPair_Unpair=0;
mPair_Unpair = qobject_cast<HbPushButton *>( mLoader->findWidget( "pushButton_0" ) );
BTUI_ASSERT_X( mPair_Unpair != 0, "bt-device-view", "pair/unpair button not found" );
@@ -121,18 +147,17 @@
mDeviceSetting = qobject_cast<HbPushButton *>( mLoader->findWidget( "pushButton_2" ) );
BTUI_ASSERT_X( mDeviceSetting != 0, "bt-device-view", "settings button not found" );
- // read landscape orientation section from docml file if needed
- // mOrientation = ((BTUIViewManager*)parent)->orientation();
- mOrientation = Qt::Vertical;
- if (mOrientation == Qt::Horizontal) {
- mLoader->load(BTUI_DEVICEVIEW_DOCML, "landscape", &ok);
- BTUI_ASSERT_X( ok, "bt-device-view", "Invalid docml file: landscape section problem" );
- }
+ setConnectionCombobox();
+
}
BtCpUiDeviceView::~BtCpUiDeviceView()
{
+ delete mLoader; // Also deletes all widgets that it constructed.
+
+ delete mConnectionComboboxModel;
+
setNavigationAction(0);
delete mSoftKeyBackAction;
if(mAbstractDelegate)
@@ -167,7 +192,7 @@
mDeviceBdAddr = (mDeviceModel->data(index, BtDeviceModel::ReadableBdaddrRole));
//activate view is called when device is selected
- clearViewData();
+ //clearViewData();
updateDeviceData();
bool ret(false);
@@ -180,23 +205,46 @@
{
}
+// called due to real orientation change event coming from main window
+void BtCpUiDeviceView::changeOrientation( Qt::Orientation orientation )
+{
+ bool ok = false;
+ mOrientation = orientation;
+ if( orientation == Qt::Vertical ) {
+ // load "portrait" section
+ mLoader->load( BTUI_DEVICEVIEW_DOCML, "portrait", &ok );
+ BTUI_ASSERT_X( ok, "bt-device-view", "Invalid docml file: portrait section problem" );
+ } else {
+ // load "landscape" section
+ mLoader->load( BTUI_DEVICEVIEW_DOCML, "landscape", &ok );
+ BTUI_ASSERT_X( ok, "bt-device-view", "Invalid docml file: landscape section problem" );
+ }
+}
+
void BtCpUiDeviceView::clearViewData()
{
mDeviceIcon->clear();
mDeviceCategory->clear();
mDeviceStatus->clear();
- mPairStatus = false;
- mConnectStatus = false;
+ mPairedStatus = false;
+ mConnectedStatus = false;
+ mTrustedStatus = false;
+ mBlockedStatus = false;
+
mConnectable = false;
}
void BtCpUiDeviceView::updateDeviceData()
{
- QModelIndex localIndex = mSettingModel->index( BtSettingModel::LocalBtNameRow, 0);
+ clearViewData();
+ // ToDo: the groupbox header should only say "Bluetooth", ie. without device name;
+ // check new TextMap file for the right TextId
+ /*QModelIndex localIndex = mSettingModel->index( BtSettingModel::LocalBtNameRow, 0);
QString localName = (mSettingModel->data(localIndex,BtSettingModel::settingDisplayRole)).toString();
- QString groupBoxTitle (tr("Bluetooth-"));
- mGroupBox->setHeading(groupBoxTitle.append(localName));
+ QString groupBoxTitle (hbTrId("txt_bt_subhead_bluetooth_1").arg(localName));
+ mGroupBox->setHeading(groupBoxTitle);
+ */
//Get the QModelIndex of the device using the device BDAddres
QModelIndex start = mDeviceModel->index(0,0);
QModelIndexList indexList = mDeviceModel->match(start,BtDeviceModel::ReadableBdaddrRole, mDeviceBdAddr);
@@ -205,7 +253,7 @@
//populate device view with device data fetched from UiModel
QString deviceName = (mDeviceModel->data(mDeviceIndex,
BtDeviceModel::NameAliasRole)).toString();
- mDeviceName->setPlainText(deviceName);
+ mDeviceName->setText(deviceName);
int cod = (mDeviceModel->data(mDeviceIndex,BtDeviceModel::CoDRole)).toInt();
@@ -219,90 +267,135 @@
void BtCpUiDeviceView::setDeviceCategory(int cod,int majorRole, int minorRole)
{
- //TODO: change the hardcoded numeric value to enumerations
- if (cod)
- {
- if (majorRole & 0x00020000)
- {
- //this is a phone
- mDeviceCategory->setPlainText(tr("Phone"));
- }
- else if (majorRole & 0x00010000)
- {
- //this is a computer
- mDeviceCategory->setPlainText(tr("Computer"));
-
+ mDeviceCategory->setPlainText( getDeviceTypeString( cod ));
+ HbIcon icon =
+ getBadgedDeviceTypeIcon(cod, majorRole,
+ BtuiBottomLeft | BtuiBottomRight | BtuiTopLeft | BtuiTopRight );
+ mDeviceIcon->setIcon(icon);
+
+ if (majorRole & BtuiDevProperty::AVDev) {
+ if ( minorRole & BtuiDevProperty::Headset){
+ // this is a Headset, it is possible to connect
+ mConnectable = true;
}
- else if (majorRole & 0x00080000)
- {
- //this is a A/V device
- //int minorRole = (mDeviceModel->data(mIndex,BtDeviceModel::MinorPropertyRole)).toInt();
- if ( minorRole & 0x00000002)
- {
- //this is a Headset, it is possible to connect
- mConnectable = true;
- mDeviceCategory->setPlainText(tr("Headset"));
- }
- }
- else
- {
- mDeviceCategory->setPlainText(tr("Uncategorized Dev"));
- }
-
}
-
-
}
+
void BtCpUiDeviceView::setDeviceStatus(int majorRole)
{
- //TODO: change the hardcoded numeric value to enumerations
QString deviceStatus;
- if (majorRole & 0x00000001)
- {
- deviceStatus = deviceStatus.append(tr("Paired"));
- mPairStatus = true;
+
+ updateStatusVariables(majorRole); // should we use bitmap instead??
+
+ if (majorRole & BtuiDevProperty::Bonded &&
+ majorRole & BtuiDevProperty::Trusted &&
+ majorRole & BtuiDevProperty::Connected ) {
+ mDeviceStatus->setPlainText(hbTrId("txt_bt_info_paired_trused_connected"));
+ }
+ else if (majorRole & BtuiDevProperty::Bonded &&
+ majorRole & BtuiDevProperty::Connected ) {
+ mDeviceStatus->setPlainText(hbTrId("txt_bt_info_paired_connected"));
}
- else
- {
- mPairStatus = false;
+ else if (majorRole & BtuiDevProperty::Bonded &&
+ majorRole & BtuiDevProperty::Trusted ) {
+ mDeviceStatus->setPlainText(hbTrId("txt_bt_info_paired_trusted"));
+ }
+ else if (majorRole & BtuiDevProperty::Bonded) {
+ mDeviceStatus->setPlainText(hbTrId("txt_bt_info_paired"));
+ }
+ else if (majorRole & BtuiDevProperty::Connected) {
+ mDeviceStatus->setPlainText(hbTrId("txt_bt_info_connected"));
}
+ else if (majorRole & BtuiDevProperty::Blocked) {
+ mDeviceStatus->setPlainText(hbTrId("txt_bt_info_blocked"));
+ }
+ else {
+ // device not paired, connected, trusted or blocked. is this ok?
+ }
+
+}
+
+void BtCpUiDeviceView::setConnectionCombobox(){
+
+ //create a model class
- if ((majorRole & 0x00000020)&& (mConnectable))
- {
- //if the device is connected and it is a headset NOTE! two phone can be paired but not be connected
- deviceStatus = deviceStatus.append(tr(", connected"));
- mConnectStatus = true;
+ mConnectionComboboxModel->appendDataFormItem(
+ HbDataFormModelItem::ComboBoxItem, QString("Connection"), mConnectionComboboxModel->invisibleRootItem());
+
+ //set the model to the view, once model and data class are created
+ mConnectionCombobox->setModel(mConnectionComboboxModel);
+
+
+
+}
+
+
+/*!
+ * instead of using separate boolean variables we could use bitmap in single variable
+ */
+void BtCpUiDeviceView::updateStatusVariables(int majorRole)
+{
+ if (majorRole & BtuiDevProperty::Trusted ) {
+ mTrustedStatus = true;
+ }
+ else {
+ mTrustedStatus = false;
}
- else
- {
- mConnectStatus = false;
+ if (majorRole & BtuiDevProperty::Bonded) {
+ mPairedStatus = true;
+ }
+ else {
+ mPairedStatus = false;
+ }
+ if (majorRole & BtuiDevProperty::Connected) {
+ mConnectedStatus = true;
}
- mDeviceStatus->setPlainText(deviceStatus);
-
-
-
+ else {
+ mConnectedStatus = false;
+ }
+ if (majorRole & BtuiDevProperty::Blocked) {
+ mBlockedStatus = true;
+ }
+ else {
+ mBlockedStatus = false;
+ }
}
void BtCpUiDeviceView::setTextAndVisibilityOfButtons()
{
- if (mPairStatus)
+ mPair_Unpair->setStretched(true);
+ if (mPairedStatus)
{
- mPair_Unpair->setText(tr("Unpair"));
+ HbIcon icon("qtg_mono_bt_unpair");
+ icon.setIconName("qtg_mono_bt_unpair");
+ mPair_Unpair->setIcon(icon);
+ mPair_Unpair->setText(hbTrId("txt_bt_button_unpair"));
+
}
else
{
- mPair_Unpair->setText(tr("Pair"));
+ HbIcon icon("qtg_mono_bt_pair");
+ icon.setIconName("qtg_mono_bt_pair");
+ mPair_Unpair->setIcon(icon);
+ mPair_Unpair->setText(hbTrId("txt_bt_button_pair"));
}
if (mConnectable)
{
- if (mConnectStatus)
+ mConnect_Disconnect->setStretched(true);
+ if (mConnectedStatus)
{
- mConnect_Disconnect->setText(tr("Disconnect"));
+ HbIcon icon("qtg_mono_speaker_off");
+ icon.setIconName("qtg_mono_speaker_off");
+ mConnect_Disconnect->setIcon(icon);
+ mConnect_Disconnect->setText(hbTrId("txt_bt_button_disconnect"));
}
else
{
- mConnect_Disconnect->setText(tr("Connect"));
+ HbIcon icon("qtg_mono_speaker");
+ icon.setIconName("qtg_mono_speaker");
+ mConnect_Disconnect->setIcon(icon);
+ mConnect_Disconnect->setText(hbTrId("txt_bt_button_connect"));
}
}
@@ -316,22 +409,10 @@
}
-void BtCpUiDeviceView::changeBtDeviceName()
-{
- /*
- if (!mAbstractDelegate)
- {
- mAbstractDelegate = BtDelegateFactory::newDelegate(BtDelegate::DeviceName, mModel);
- connect( mAbstractDelegate, SIGNAL(commandCompleted(int,QVariant)), this, SLOT(btNameDelegateCompleted(int,QVariant)) );
- mAbstractDelegate->exec(mDeviceNameEdit->text ());
- }
- */
-
-}
void BtCpUiDeviceView::pairUnpair()
{
- if (mPairStatus)
+ if (mPairedStatus)
{
//if the device is paired, call unpairDevice() when the button is tabbed
unpairDevice();
@@ -348,7 +429,7 @@
void BtCpUiDeviceView::connectDisconnect()
{
- if (mConnectStatus)
+ if (mConnectedStatus)
{
//if the device is connected, call disconnectDevice() when the button is tabbed
disconnectDevice();
@@ -448,8 +529,25 @@
{
if (!mAbstractDelegate)//if there is no other delegate running
{
+
+
+ DisconnectOption discoOpt = ServiceLevel;
+
+ QList<QVariant>list;
+ QVariant paramFirst;
+ paramFirst.setValue(mDeviceIndex);
+
+ QVariant paramSecond;
+ paramSecond.setValue((int)discoOpt);
+
+ list.append(paramFirst);
+ list.append(paramSecond);
+
QVariant params;
- params.setValue(mDeviceIndex);
+ params.setValue(list);
+
+
+ //params.setValue(mDeviceIndex);
mAbstractDelegate = BtDelegateFactory::newDelegate(
BtDelegate::Disconnect, mSettingModel, mDeviceModel);
connect( mAbstractDelegate, SIGNAL(commandCompleted(int)), this, SLOT(disconnectDelegateCompleted(int)) );
@@ -471,3 +569,48 @@
}
+void BtCpUiDeviceView::changeBtDeviceName(){
+ if (!mAbstractDelegate)//if there is no other delegate running
+ {
+ QList<QVariant>list;
+
+ QVariant index;
+ index.setValue(mDeviceIndex);
+
+ QVariant name;
+ name.setValue(mDeviceName->text());
+
+ list.append(index);
+ list.append(name);
+
+ QVariant params;
+ params.setValue(list);
+
+ mAbstractDelegate = BtDelegateFactory::newDelegate(
+ BtDelegate::RemoteDevName, mSettingModel, mDeviceModel);
+ connect( mAbstractDelegate, SIGNAL(commandCompleted(int, QVariant)), this, SLOT(changeDevNameDelegateCompleted(int, QVariant)) );
+ mAbstractDelegate->exec(params);
+ }
+
+}
+
+void BtCpUiDeviceView::changeDevNameDelegateCompleted(int status, QVariant param)
+{
+
+
+ if(KErrNone == status) {
+ mDeviceName->setText(param.toString());
+ }
+ else {
+ //setPrevBtLocalName();
+ }
+ //TODO:Error handling has to be done.
+ if (mAbstractDelegate)
+ {
+ disconnect(mAbstractDelegate);
+ delete mAbstractDelegate;
+ mAbstractDelegate = 0;
+ }
+
+
+}
--- a/bluetoothengine/btui/btcpplugin/btcpuideviceview.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btcpplugin/btcpuideviceview.h Wed Jun 23 18:23:52 2010 +0300
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * 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""
@@ -25,13 +25,14 @@
class HbGroupBox;
class HbLabel;
-class HbTextEdit;
+class HbLineEdit;
class HbPushButton;
class HbIcon;
class HbDocumentLoader;
-class HbListView;
+class HbDataForm;
+
class HbDataFormModel;
-class HbDataFormModelItem;
+//class HbDataFormModelItem;
class CpSettingFormItemData;
class BtAbstractDelegate;
@@ -53,6 +54,7 @@
public slots:
virtual void switchToPreviousView();
+ void changeOrientation( Qt::Orientation orientation );
void updateDeviceData();
void changeBtDeviceName();
void pairUnpair();
@@ -61,6 +63,7 @@
void unpairDelegateCompleted(int status);
void connectDelegateCompleted(int status);
void disconnectDelegateCompleted(int status);
+ void changeDevNameDelegateCompleted(int status, QVariant param);
private:
void clearViewData();
@@ -70,16 +73,21 @@
void disconnectDevice();
void setDeviceCategory(int cod, int majorRole, int minorRole);//cod:class of device
void setDeviceStatus(int majorRole);
+ void setConnectionCombobox();
void setTextAndVisibilityOfButtons();
+ void updateStatusVariables(int majorRole);
private:
HbDocumentLoader *mLoader;
- HbGroupBox *mGroupBox;
+ //HbGroupBox *mGroupBox;
HbLabel *mDeviceIcon;
- HbTextEdit *mDeviceName;
+ HbLineEdit *mDeviceName;
HbLabel *mDeviceCategory;
HbLabel *mDeviceStatus;
+ HbDataForm *mConnectionCombobox;
+ HbDataFormModel *mConnectionComboboxModel;
+
HbPushButton *mPair_Unpair;
HbPushButton *mConnect_Disconnect;
HbPushButton *mDeviceSetting;
@@ -99,12 +107,14 @@
QVariant mDeviceBdAddr;
//true -> device is paired; false -> device is unpaired
- bool mPairStatus;
+ bool mPairedStatus;
//true-> device is connected; false -> device is disconnected
- bool mConnectStatus;
-
- //true -> device is connectable
+ bool mConnectedStatus;
+ bool mTrustedStatus;
+ bool mBlockedStatus;
+
+ //true -> device is connectable
//e.g. not possible to connect to a phone, but possible to connect to a headset
bool mConnectable;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btui/btcpplugin/btcpuimainlistviewitem.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,114 @@
+/*
+* Copyright (c) 2008-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: BTUISearchListViewItem implementation
+*
+*/
+
+
+#include "btcpuimainlistviewitem.h"
+#include "btdevicemodel.h"
+#include "btuiiconutil.h"
+#include <QGraphicsGridLayout>
+
+BtCpUiMainListViewItem::BtCpUiMainListViewItem(QGraphicsItem * parent) :
+ HbListViewItem(parent), mParent(parent)
+{
+ mDeviceNameLabel = 0;
+ mDevTypeIconLabel = 0;
+ mDevTypeTextLabel = 0;
+ mBtuiModelSortFilter = ((BtCpUiMainListViewItem *)parent)->mBtuiModelSortFilter;
+
+ mRow = 0;
+}
+
+BtCpUiMainListViewItem::~BtCpUiMainListViewItem()
+{
+ delete mDeviceNameLabel;
+ delete mDevTypeIconLabel;
+ delete mDevTypeTextLabel;
+}
+
+/*
+ * This method is called by the HbListView when it needs a new
+ * view item element.
+ *
+ */
+HbAbstractViewItem * BtCpUiMainListViewItem::createItem()
+{
+ return new BtCpUiMainListViewItem(*this);
+}
+
+/*!
+ UpdateChildItem updates the item graphics.
+ Screen elements are created once if not already done. This may increase the overall memory
+ consumption of the application, however, this is deemed inconsequential. There might be a small
+ performance improvement with current style.
+ */
+void BtCpUiMainListViewItem::updateChildItems()
+{
+ QModelIndex index;
+
+ // Get device name from model
+ if (mBtuiModelSortFilter)
+ index = mBtuiModelSortFilter->mapToSource(modelIndex());
+ else
+ index = modelIndex();
+
+ // create new icon label if needed
+ if (!mDevTypeIconLabel) {
+ mDevTypeIconLabel = new HbLabel();
+ mDevTypeIconLabel->setPreferredSize(53.5260, 53.5260); //8un x 8un
+ mDevTypeIconLabel->setMinimumWidth(53.5260);
+ }
+ // create new label if needed
+ if (!mDeviceNameLabel) {
+ mDeviceNameLabel = new HbLabel();
+ mDeviceNameLabel->setPreferredSize(250, 26.763);
+ }
+ // create new label if needed
+ if (!mDevTypeTextLabel) {
+ mDevTypeTextLabel = new HbLabel();
+ mDevTypeTextLabel->setPreferredSize(250, 26.763);
+ }
+ // create layout if needed
+ if ( !mRow ) {
+ // Still need to create the actual layout
+ mRow = new QGraphicsGridLayout();
+ mRow->addItem(mDevTypeIconLabel,0,0,2,1);
+ mRow->addItem(mDeviceNameLabel,0,1,1,1);
+ mRow->addItem(mDevTypeTextLabel,1,1,1,1);
+ setLayout(mRow);
+ }
+
+ QString data = index.data(Qt::DisplayRole).toString();
+ int cod = (index.data(BtDeviceModel::CoDRole)).toInt();
+ int majorProperty = (index.data(BtDeviceModel::MajorPropertyRole)).toInt();
+
+ // ToDo: remove clear() once Orbit bug is fixed
+ mDeviceNameLabel->clear();
+ mDeviceNameLabel->setPlainText(data);
+ mDevTypeIconLabel->clear();
+ mDevTypeTextLabel->clear();
+ mDevTypeTextLabel->setPlainText( getDeviceTypeString( cod ));
+ HbIcon icon =
+ getBadgedDeviceTypeIcon( cod, majorProperty,
+ BtuiBottomLeft | BtuiBottomRight | BtuiTopLeft | BtuiTopRight );
+ mDevTypeIconLabel->setIcon(icon);
+}
+
+
+void BtCpUiMainListViewItem::setModelSortFilter(BtuiModelSortFilter *filter)
+{
+ mBtuiModelSortFilter = filter;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btui/btcpplugin/btcpuimainlistviewitem.h Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,51 @@
+/*
+* Copyright (c) 2008-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: device view item
+*
+*/
+
+
+#ifndef BTCPUIMAINLISTVIEWITEM_H
+#define BTCPUIMAINLISTVIEWITEM_H
+
+#include <hblistviewitem.h>
+#include <hblabel.h>
+#include <hbpushbutton.h>
+#include <QtGui/QGraphicsGridLayout>
+#include "btuimodelsortfilter.h"
+
+class BtCpUiMainListViewItem : public HbListViewItem
+{
+ Q_OBJECT
+
+public:
+ BtCpUiMainListViewItem(QGraphicsItem * parent = 0);
+ ~BtCpUiMainListViewItem();
+
+ HbAbstractViewItem * createItem();
+ void updateChildItems();
+
+ void setModelSortFilter(BtuiModelSortFilter *filter);
+
+private:
+ QGraphicsItem *mParent;
+ HbLabel *mDevTypeIconLabel;
+ HbLabel *mDeviceNameLabel;
+ HbLabel *mDevTypeTextLabel;
+ BtuiModelSortFilter* mBtuiModelSortFilter;
+
+ QGraphicsGridLayout *mRow;
+};
+
+#endif /* BTCPUIMAINLISTVIEWITEM_H */
--- a/bluetoothengine/btui/btcpplugin/btcpuimainview.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btcpplugin/btcpuimainview.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* 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"
@@ -33,13 +33,15 @@
#include <hbmenu.h>
#include <hbaction.h>
#include <hbcombobox.h>
+#include <hbgroupbox.h>
#include "btcpuisearchview.h"
#include "btcpuideviceview.h"
#include <bluetoothuitrace.h>
#include <btdelegatefactory.h>
#include <btabstractdelegate.h>
#include "btqtconstants.h"
-
+#include "btcpuimainlistviewitem.h"
+#include "btuidevtypemap.h"
// docml to load
const char* BTUI_MAINVIEW_DOCML = ":/docml/bt-main-view.docml";
@@ -57,7 +59,7 @@
mAbstractDelegate(0), mMainFilterModel(0)
{
bool ret(false);
-
+
mMainWindow = hbInstance->allMainWindows().first();
mMainView = this;
@@ -66,11 +68,11 @@
// name in docml.
setObjectName("view");
+ mLoader = new HbDocumentLoader();
+ // Pass the view to documentloader. Document loader uses this view
+ // when docml is parsed, instead of creating new view.
QObjectList objectList;
objectList.append(this);
- // Pass the view to documentloader. Document loader uses this view
- // when docml is parsed, instead of creating new view.
- mLoader = new HbDocumentLoader();
mLoader->setObjectTree(objectList);
bool ok = false;
@@ -103,6 +105,14 @@
mVisibilityMode=0;
mVisibilityMode = qobject_cast<HbComboBox *>( mLoader->findWidget( "combobox" ) );
BTUI_ASSERT_X( mVisibilityMode != 0, "bt-main-view", "visibility combobox not found" );
+ // add new item for temporary visibility
+ // NOTE: translation (at least default english) gives string "(p)Visible for 5 min",
+ // if setting 1 min --> "(s)Visible for 1 min", ie p=plural, s=singular, but these should
+ // not be shown to the user!
+ // ToDo: change this to use translation once it starts working
+// QString tempVis(hbTrId("txt_bt_setlabel_visibility_val_visible_for_l1_min", TEMP_VISIBILITY_DEFAULT));
+ QString tempVis(hbTrId("Visible for 5 min"));
+ mVisibilityMode->addItem(tempVis, Qt::DisplayRole);
mDeviceList=0;
mDeviceList = qobject_cast<HbListView *>( mLoader->findWidget( "listView" ) );
@@ -120,7 +130,22 @@
HbAction *discoverAction = static_cast<HbAction*>( mLoader->findObject( "discoverAction" ) );
BTUI_ASSERT_X( discoverAction, "bt-main-view", "discover action missing" );
ret = connect(discoverAction, SIGNAL(triggered()), this, SLOT(goToDiscoveryView()));
- BTUI_ASSERT_X( ret, "bt-main-view", "orientation toggle can't connect" );
+ BTUI_ASSERT_X( ret, "bt-main-view", "discover action can't connect" );
+
+ // load tool bar actions
+ mAllAction = static_cast<HbAction*>( mLoader->findObject( "allAction" ) );
+ BTUI_ASSERT_X( mAllAction, "bt-main-view", "All action missing" );
+ ret = connect(mAllAction, SIGNAL(triggered()), this, SLOT(allActionTriggered()));
+ BTUI_ASSERT_X( ret, "bt-main-view", "all action can't connect" );
+
+ // load tool bar actions
+ mPairAction = static_cast<HbAction*>( mLoader->findObject( "pairedAction" ) );
+ BTUI_ASSERT_X( mPairAction, "bt-main-view", "Pair action missing" );
+ ret = connect(mPairAction, SIGNAL(triggered()), this, SLOT(pairActiontriggered()));
+ BTUI_ASSERT_X( ret, "bt-main-view", "pair action can't connect" );
+
+ mGroupBox = qobject_cast<HbGroupBox *>( mLoader->findWidget( "groupBox" ) );
+ BTUI_ASSERT_X( mGroupBox != 0, "bt-main-view", "Group Box not found" );
//*********************Testing device view START****************************//
HbAction *removePairedDevices = static_cast<HbAction*>( mLoader->findObject( "removePairedDevices" ) );
@@ -158,14 +183,14 @@
mMainFilterModel = new BtuiModelSortFilter(this);
mMainFilterModel->setSourceModel( mDeviceModel );
- // filter to match only InRegistry devices
- mMainFilterModel->addDeviceMajorFilter(
- BtDeviceModel::InRegistry,
- BtuiModelSortFilter::AtLeastMatch);
+ updateDeviceListFilter(BtuiPaired);
+ // List view item
+ BtCpUiMainListViewItem *prototype = new BtCpUiMainListViewItem(mDeviceList);
+ prototype->setModelSortFilter(mMainFilterModel);
+ mDeviceList->setItemPrototype(prototype);
mDeviceList->setModel(mMainFilterModel);
-
}
/*!
@@ -174,13 +199,8 @@
BtCpUiMainView::~BtCpUiMainView()
{
delete mLoader; // Also deletes all widgets that it constructed.
-
mMainWindow->removeView(mSearchView);
- delete mSearchView;
-
mMainWindow->removeView(mDeviceView);
- delete mDeviceView;
-
if (mAbstractDelegate) {
delete mAbstractDelegate;
}
@@ -204,11 +224,6 @@
}
-void BtCpUiMainView::itemActivated(QModelIndex index)
-{
- Q_UNUSED(index);
-}
-
void BtCpUiMainView::goToDiscoveryView()
{
changeView( SearchView, false, 0 );
@@ -244,7 +259,7 @@
void BtCpUiMainView::setPrevBtLocalName()
{
//Should we notify user this as Error...?
- HbNotificationDialog::launchDialog(hbTrId("Error"));
+ HbNotificationDialog::launchDialog(hbTrId("Error")); // ToDo: missing text id
QModelIndex index = mSettingModel->index( BtSettingModel::LocalBtNameRow,0 );
mDeviceNameEdit->setText( mSettingModel->data(
@@ -276,12 +291,12 @@
VisibilityMode mode = indexToVisibilityMode(index);
list.append(QVariant((int)mode));
- if(BtTemporary == VisibilityMode(mode)) {
+ if( BtTemporary == VisibilityMode(mode) ) {
//Right now hardcoded to 5 Mins.
list.append(QVariant(5));
}
//Error handling has to be done.
- if (!mAbstractDelegate) {
+ if ( !mAbstractDelegate ) {
mAbstractDelegate = BtDelegateFactory::newDelegate(BtDelegate::Visibility,
mSettingModel, mDeviceModel);
connect( mAbstractDelegate, SIGNAL(commandCompleted(int)), this, SLOT(visibilityDelegateCompleted(int)) );
@@ -295,24 +310,49 @@
void BtCpUiMainView::setPrevVisibilityMode()
{
- bool ret(false);
-
- //Should we notify this error to user..?
- HbNotificationDialog::launchDialog(hbTrId("Error"));
+
QModelIndex index = mSettingModel->index( BtSettingModel::VisibilityRow, 0 );
- ret = disconnect(mVisibilityMode, SIGNAL(currentIndexChanged (int)),
- this, SLOT(visibilityChanged (int)));
- BTUI_ASSERT_X( ret, "BtCpUiMainView::setPrevVisibilityMode", "can't disconnect signal" );
-
mVisibilityMode->setCurrentIndex ( visibilityModeToIndex((VisibilityMode)
mSettingModel->data(index,BtSettingModel::SettingValueRole).toInt()) );
- //Handle Visibility Change User Interaction
- ret = connect(mVisibilityMode, SIGNAL(currentIndexChanged (int)),
- this, SLOT(visibilityChanged (int)));
- BTUI_ASSERT_X( ret, "BtCpUiMainView::setPrevVisibilityMode", "can't connect signal" );
+}
+
+
+void BtCpUiMainView::allActionTriggered()
+{
+ updateDeviceListFilter(BtuiAll);
+}
+
+void BtCpUiMainView::pairActiontriggered()
+{
+ updateDeviceListFilter(BtuiPaired);
+}
+void BtCpUiMainView::updateDeviceListFilter(BtCpUiMainView::filterType filter)
+{
+ mMainFilterModel->clearDeviceMajorFilters();
+
+ switch (filter) {
+ case BtuiAll:
+ mGroupBox->setHeading(hbTrId("txt_bt_subhead_bluetooth_all_devices"));
+ mPairAction->setEnabled(true);
+ mAllAction->setEnabled(false);
+ mMainFilterModel->addDeviceMajorFilter(
+ BtuiDevProperty::InRegistry,
+ BtuiModelSortFilter::AtLeastMatch);
+
+ break;
+ case BtuiPaired:
+ mGroupBox->setHeading(hbTrId("txt_bt_subhead_bluetooth_paired_devices"));
+ mPairAction->setEnabled(false);
+ mAllAction->setEnabled(true);
+ mMainFilterModel->addDeviceMajorFilter(
+ BtuiDevProperty::InRegistry | BtuiDevProperty::Bonded,
+ BtuiModelSortFilter::AtLeastMatch);
+
+ break;
+ }
}
@@ -351,21 +391,14 @@
}
}
-void BtCpUiMainView::commandCompleted( int cmdId, int err, const QString &diagnostic )
-{
- Q_UNUSED(cmdId);
- Q_UNUSED(err);
- Q_UNUSED(diagnostic);
-
-}
-
/*!
Slot for receiving notification of local setting changes from the model.
Identify the setting changed and update the corresponding UI item.
*/
void BtCpUiMainView::updateSettingItems(const QModelIndex &topLeft, const QModelIndex &bottomRight)
{
-
+ bool val(false);
+
// update only the part of the view specified by the model's row(s)
for (int i=topLeft.row(); i <= bottomRight.row(); i++) {
QModelIndex index = mSettingModel->index( i, 0);
@@ -376,8 +409,17 @@
mSettingModel->data(index,BtSettingModel::settingDisplayRole).toString() );
break;
case BtSettingModel::PowerStateRow:
- mPowerButton->setText( mSettingModel->data(index,
- BtSettingModel::settingDisplayRole).toString() );
+ val = mSettingModel->data(index, BtSettingModel::SettingValueRole).toBool();
+ if (val) {
+ HbIcon icon("qtg_mono_bluetooth");
+ icon.setIconName("qtg_mono_bluetooth");
+ mPowerButton->setIcon(icon);
+ }
+ else {
+ HbIcon icon("qtg_mono_bluetooth_off");
+ icon.setIconName("qtg_mono_bluetooth_off");
+ mPowerButton->setIcon(icon);
+ }
break;
case BtSettingModel::VisibilityRow:
mVisibilityMode->setCurrentIndex ( visibilityModeToIndex((VisibilityMode)
@@ -393,15 +435,24 @@
*/
void BtCpUiMainView::changePowerState()
{
+ QModelIndex index = mSettingModel->index(BtSettingModel::PowerStateRow, 0);
+ PowerStateQtValue powerState = (PowerStateQtValue)mSettingModel->data(index, Qt::EditRole).toInt();
+ BTUI_ASSERT_X(((powerState == BtPowerOn) || (powerState == BtPowerOff)),
+ "BtCpUiMainView::changePowerState()", "incorrect qt power state");
+
+ if (powerState == BtPowerOff) {
+ powerState = BtPowerOn;
+ }
+ else {
+ powerState = BtPowerOff;
+ }
- QModelIndex index = mSettingModel->index(BtSettingModel::PowerStateRow, 0);
- QVariant powerState = mSettingModel->data(index, Qt::EditRole);
if (!mAbstractDelegate)//if there is no other delegate running
{
mAbstractDelegate = BtDelegateFactory::newDelegate(BtDelegate::ManagePower,
mSettingModel, mDeviceModel );
connect( mAbstractDelegate, SIGNAL(commandCompleted(int)), this, SLOT(powerDelegateCompleted(int)) );
- mAbstractDelegate->exec(powerState);
+ mAbstractDelegate->exec(QVariant((int)powerState));
}
}
@@ -424,7 +475,7 @@
*/
VisibilityMode BtCpUiMainView::indexToVisibilityMode(int index)
{
- VisibilityMode mode;
+ VisibilityMode mode = BtVisibilityUnknown;
switch(index) {
case UiRowBtHidden:
mode = BtHidden;
@@ -436,7 +487,7 @@
mode = BtTemporary;
break;
default:
- mode = BtUnknown;
+ BTUI_ASSERT_X(false, "BtCpUiMainView::indexToVisibilityMode", "invalid mode");
}
return mode;
}
@@ -446,7 +497,7 @@
*/
int BtCpUiMainView::visibilityModeToIndex(VisibilityMode mode)
{
- int uiRow;
+ int uiRow = UiRowBtUnknown;
switch(mode) {
case BtHidden:
uiRow = UiRowBtHidden;
@@ -458,15 +509,12 @@
uiRow = UiRowBtTemporary;
break;
default:
- uiRow = -1; // error
+ BTUI_ASSERT_X(false, "BtCpUiMainView::visibilityModeToIndex", "invalid mode");
}
return uiRow;
}
-//////////////////////
-//
-// from view manager
-//
-//////////////////////
+
+
/*!
Create views(main view, device view and search view).
@@ -554,21 +602,6 @@
return 0;
}
-/*
- Jump to previous view. This function is used when back button is pressed.
- */
-void BtCpUiMainView::switchToPreviousViewReally()
-{
-// // jump to previous view of current view.
-// if( (mCurrentViewId >= 0) && (mCurrentViewId < LastView)) {
-// changeView( mPreviousViewIds[mCurrentViewId], true, 0 );
-// }
-// else {
-// BTUI_ASSERT_X(false, "BtCpUiMainView::switchToPreviousViewReally", "invalid view id");
-// }
-}
-
-
void BtCpUiMainView::setSoftkeyBack()
{
--- a/bluetoothengine/btui/btcpplugin/btcpuimainview.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btcpplugin/btcpuimainview.h Wed Jun 23 18:23:52 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* 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"
@@ -31,18 +31,13 @@
class HbGridView;
class BtAbstractDelegate;
class HbListView;
+class HbGroupBox;
class BtCpUiMainView : public BtCpUiBaseView
{
Q_OBJECT
public:
-// enum ViewIndex {
-// MainView,
-// SearchView,
-// DeviceView,
-// LastView
-// };
explicit BtCpUiMainView(
BtSettingModel &settingModel,
BtDeviceModel &deviceModel,
@@ -59,9 +54,7 @@
virtual void deactivateView();
public slots:
- void commandCompleted( int cmdId, int err, const QString &diagnostic );
void changeOrientation( Qt::Orientation orientation );
- void itemActivated(QModelIndex index);
void changePowerState();
void updateSettingItems(const QModelIndex &topLeft, const QModelIndex &bottomRight);
@@ -71,7 +64,6 @@
// from view manager
void changeView(int targetViewId, bool fromBackButton, int cmdId, const QVariant& value = 0 );
- void switchToPreviousViewReally();
virtual void switchToPreviousView();
void visibilityChanged (int index);
@@ -81,9 +73,16 @@
void powerDelegateCompleted(int status);
void visibilityDelegateCompleted(int status);
void btNameDelegateCompleted(int status, QVariant param);
+ void allActionTriggered();
+ void pairActiontriggered();
protected:
+private:
+ enum filterType {
+ BtuiAll = 0,
+ BtuiPaired
+ };
private:
VisibilityMode indexToVisibilityMode(int index);
@@ -94,17 +93,17 @@
void setPrevBtLocalName();
void setPrevVisibilityMode();
+ void updateDeviceListFilter(BtCpUiMainView::filterType filter);
+
private:
- QAbstractItemModel* mSubModel;
+
HbDocumentLoader *mLoader;
+
HbLineEdit *mDeviceNameEdit;
HbPushButton *mPowerButton;
HbComboBox *mVisibilityMode;
HbListView *mDeviceList;
-
- // data structures for switching between views
- bool mEventFilterInstalled;
- int mAutoCmdId;
+
Qt::Orientation mOrientation;
// from view manager
@@ -114,12 +113,14 @@
BtCpUiBaseView* mSearchView;
BtCpUiBaseView* mCurrentView;
int mCurrentViewId;
- HbAction *mBackAction;
QList<int> mPreviousViewIds;
//poiter to abstract delegate, and it is instantiated at runtime
BtAbstractDelegate* mAbstractDelegate;
BtuiModelSortFilter *mMainFilterModel;
+ HbAction *mAllAction;
+ HbAction *mPairAction;
+ HbGroupBox *mGroupBox;
};
#endif // BTCPUIMAINVIEW_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btui/btcpplugin/btcpuisearchlistviewitem.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,115 @@
+/*
+* 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: BTUISearchListViewItem implementation
+*
+*/
+
+
+#include "btcpuisearchlistviewitem.h"
+#include "btdevicemodel.h"
+#include "btuiiconutil.h"
+#include <QGraphicsGridLayout>
+
+BtCpUiSearchListViewItem::BtCpUiSearchListViewItem(QGraphicsItem * parent) :
+ HbListViewItem(parent), mParent(parent)
+{
+ mDeviceNameLabel = 0;
+ mDevTypeIconLabel = 0;
+ mDevTypeTextLabel = 0;
+ mBtuiModelSortFilter = ((BtCpUiSearchListViewItem *)parent)->mBtuiModelSortFilter;
+
+ mRow = 0;
+}
+
+BtCpUiSearchListViewItem::~BtCpUiSearchListViewItem()
+{
+ delete mDeviceNameLabel;
+ delete mDevTypeIconLabel;
+ delete mDevTypeTextLabel;
+}
+
+/*
+ * This method is called by the HbListView when it needs a new
+ * view item element.
+ *
+ */
+HbAbstractViewItem * BtCpUiSearchListViewItem::createItem()
+{
+ return new BtCpUiSearchListViewItem(*this);
+}
+
+/*!
+ UpdateChildItem updates the item graphics.
+ Screen elements are created once if not already done. This may increase the overall memory
+ consumption of the application, however, this is deemed inconsequential. There might be a small
+ performance improvement with current style.
+ */
+void BtCpUiSearchListViewItem::updateChildItems()
+{
+ QModelIndex index;
+
+ // Get device name from model
+ if (mBtuiModelSortFilter)
+ index = mBtuiModelSortFilter->mapToSource(modelIndex());
+ else
+ index = modelIndex();
+
+
+ // create new icon label if needed
+ if (!mDevTypeIconLabel) {
+ mDevTypeIconLabel = new HbLabel();
+ mDevTypeIconLabel->setPreferredSize(53.5260, 53.5260); //8un x 8un
+ mDevTypeIconLabel->setMinimumWidth(53.5260);
+ }
+ // create new label if needed
+ if (!mDeviceNameLabel) {
+ mDeviceNameLabel = new HbLabel();
+ mDeviceNameLabel->setPreferredSize(250, 26.763);
+ }
+ // create new label if needed
+ if (!mDevTypeTextLabel) {
+ mDevTypeTextLabel = new HbLabel();
+ mDevTypeTextLabel->setPreferredSize(250, 26.763);
+ }
+ // create layout if needed
+ if ( !mRow ) {
+ // Still need to create the actual layout
+ mRow = new QGraphicsGridLayout();
+ mRow->addItem(mDevTypeIconLabel,0,0,2,1);
+ mRow->addItem(mDeviceNameLabel,0,1,1,1);
+ mRow->addItem(mDevTypeTextLabel,1,1,1,1);
+ setLayout(mRow);
+ }
+
+ QString data = index.data(Qt::DisplayRole).toString();
+ int cod = (index.data(BtDeviceModel::CoDRole)).toInt();
+ int majorProperty = (index.data(BtDeviceModel::MajorPropertyRole)).toInt();
+
+ // ToDo: remove clear() once Orbit bug is fixed
+ mDeviceNameLabel->clear();
+ mDeviceNameLabel->setPlainText(data);
+ mDevTypeIconLabel->clear();
+ mDevTypeTextLabel->clear();
+ mDevTypeTextLabel->setPlainText( getDeviceTypeString( cod ));
+ HbIcon icon =
+ getBadgedDeviceTypeIcon(cod, majorProperty,
+ BtuiBottomLeft | BtuiBottomRight | BtuiTopLeft | BtuiTopRight );
+ mDevTypeIconLabel->setIcon(icon);
+}
+
+
+void BtCpUiSearchListViewItem::setModelSortFilter(BtuiModelSortFilter *filter)
+{
+ mBtuiModelSortFilter = filter;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btui/btcpplugin/btcpuisearchlistviewitem.h Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,51 @@
+/*
+* 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: device view item
+*
+*/
+
+
+#ifndef BTCPUISEARCHLISTVIEWITEM_H
+#define BTCPUISEARCHLISTVIEWITEM_H
+
+#include <hblistviewitem.h>
+#include <hblabel.h>
+#include <hbpushbutton.h>
+#include <QtGui/QGraphicsGridLayout>
+#include "btuimodelsortfilter.h"
+
+class BtCpUiSearchListViewItem : public HbListViewItem
+{
+ Q_OBJECT
+
+public:
+ BtCpUiSearchListViewItem(QGraphicsItem * parent = 0);
+ ~BtCpUiSearchListViewItem();
+
+ HbAbstractViewItem * createItem();
+ void updateChildItems();
+
+ void setModelSortFilter(BtuiModelSortFilter *filter);
+
+private:
+ QGraphicsItem *mParent;
+ HbLabel *mDevTypeIconLabel;
+ HbLabel *mDeviceNameLabel;
+ HbLabel *mDevTypeTextLabel;
+ BtuiModelSortFilter* mBtuiModelSortFilter;
+
+ QGraphicsGridLayout *mRow;
+};
+
+#endif /* BTCPUISEARCHLISTVIEWITEM_H */
--- a/bluetoothengine/btui/btcpplugin/btcpuisearchview.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btcpplugin/btcpuisearchview.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+ * 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""
@@ -25,6 +25,7 @@
#include <HbLabel>
#include <HbListView>
#include <HbMenu>
+#include <HbSelectionDialog>
#include <QString>
#include <QStringList>
#include <QDebug>
@@ -32,7 +33,8 @@
#include "btcpuimainview.h"
#include "btdelegatefactory.h"
#include "btabstractdelegate.h"
-
+#include "btcpuisearchlistviewitem.h"
+#include "btuidevtypemap.h"
// docml to load
@@ -46,6 +48,7 @@
{
bool ret(false);
+ mLastSelectionIndex = 0;
mMainView = (BtCpUiMainView *) parent;
mMainWindow = hbInstance->allMainWindows().first();
@@ -58,11 +61,11 @@
// name in docml.
setObjectName("bt_search_view");
+ mLoader = new HbDocumentLoader();
+ // Pass the view to documentloader. Document loader uses this view
+ // when docml is parsed, instead of creating new view.
QObjectList objectList;
objectList.append(this);
- // Pass the view to documentloader. Document loader uses this view
- // when docml is parsed, instead of creating new view.
- mLoader = new HbDocumentLoader();
mLoader->setObjectTree(objectList);
// read view info from docml file
@@ -119,8 +122,8 @@
mViewBy = static_cast<HbAction*>( mLoader->findObject( "viewByAction" ) );
BTUI_ASSERT_X( mViewBy, "bt-search-view", "view by action missing" );
// TODO - Need to implement the View by
-// ret = connect(viewByAction, SIGNAL(triggered()), this, SLOT(noOp()));
-// BTUI_ASSERT_X( ret, "bt-search-view", "viewByAction can't connect" );
+ ret = connect(mViewBy, SIGNAL(triggered()), this, SLOT(viewByDeviceTypeDialog()));
+ BTUI_ASSERT_X( ret, "bt-search-view", "viewByAction can't connect" );
mStop = static_cast<HbAction*>( mLoader->findObject( "stopAction" ) );
BTUI_ASSERT_X( mStop, "bt-search-view", "stopAction missing" );
@@ -150,21 +153,30 @@
ret = connect(mDeviceList, SIGNAL(activated(QModelIndex)), this, SLOT(deviceSelected(QModelIndex)));
BTUI_ASSERT_X( ret, "bt-search-view", "deviceSelected can't connect" );
+
+ // initialize device type list for "view by" option
+ // Note: this list needs to be in the same order as enum devTypeSelectionList
+ mDevTypeList << hbTrId("txt_bt_list_audio_devices")
+ << hbTrId("txt_bt_list_computers")
+ << hbTrId("txt_bt_list_input_devices")
+ << hbTrId("txt_bt_list_phones")
+ << hbTrId("txt_bt_list_other_devices");
}
BtCpUiSearchView::~BtCpUiSearchView()
{
+ delete mLoader; // Also deletes all widgets that it constructed.
+
setNavigationAction(0);
+ disconnect( mSoftKeyBackAction );
delete mSoftKeyBackAction;
if(mAbstractDelegate) {
delete mAbstractDelegate;
- mAbstractDelegate = 0;
}
if(mBtuiModelSortFilter) {
delete mBtuiModelSortFilter;
- mBtuiModelSortFilter = 0;
}
}
@@ -183,6 +195,88 @@
}
}
+
+void BtCpUiSearchView::viewByDeviceTypeDialog()
+{
+ HbSelectionDialog *query = new HbSelectionDialog;
+ query->setStringItems(mDevTypeList, mLastSelectionIndex);
+ query->setSelectionMode(HbAbstractItemView::MultiSelection);
+
+ QList<QVariant> current;
+ current.append(QVariant(0));
+ query->setSelectedItems(current);
+
+ query->setAttribute(Qt::WA_DeleteOnClose);
+
+ // Set the heading for the dialog.
+ HbLabel *headingLabel = new HbLabel(hbTrId("txt_bt_title_show"), query);
+ query->setHeadingWidget(headingLabel);
+
+
+ query->open(this,SLOT(viewByDialogClosed(HbAction*)));
+}
+/*!
+ Callback for dialog closing
+ ToDo: this API might change in the future, see e-mails in Orbit-dev list,
+ e.g. 27.4.2010 Raju Abhilash
+ */
+void BtCpUiSearchView::viewByDialogClosed(HbAction* action)
+{
+ HbSelectionDialog *dlg = (HbSelectionDialog*)(sender());
+ bool first = true;
+
+ if (action == dlg->actions().first()) { // user pressed "Ok"
+ // Get selected items.
+ QList<QVariant> selections;
+ selections = dlg->selectedItems();
+// QString result;
+ int devTypesWanted = 0;
+ for (int i=0; i < selections.count(); i++) {
+// result += mDevTypeList.at(selections.at(i).toInt()) + " ";
+ if (first) {
+ // this will be used as default value when opening dialog again
+ // there is no way to specify multiple default values with HbSelectionDialog
+ mLastSelectionIndex = selections.at(i).toInt();
+ first = false;
+ }
+ switch (selections.at(i).toInt()) {
+ case BtUiDevAudioDevice:
+ devTypesWanted |= BtuiDevProperty::AVDev;
+ break;
+ case BtUiDevComputer:
+ devTypesWanted |= BtuiDevProperty::Computer;
+ break;
+ case BtUiDevInputDevice:
+ devTypesWanted |= BtuiDevProperty::Peripheral;
+ break;
+ case BtUiDevPhone:
+ devTypesWanted |= BtuiDevProperty::Phone;
+ break;
+ case BtUiDevOtherDevice:
+ devTypesWanted |= (BtuiDevProperty::LANAccessDev |
+ BtuiDevProperty::Toy |
+ BtuiDevProperty::WearableDev |
+ BtuiDevProperty::ImagingDev |
+ BtuiDevProperty::HealthDev |
+ BtuiDevProperty::UncategorizedDev);
+ break;
+ default:
+ // should never get here
+ BTUI_ASSERT_X(false, "BtCpUiSearchView::viewByDialogClosed()",
+ "wrong device type in viewBy dialog!");
+ }
+ }
+// qDebug() << result << "bits " << devTypesWanted;
+ if (devTypesWanted) {
+ mBtuiModelSortFilter->clearDeviceMajorFilters();
+ mBtuiModelSortFilter->addDeviceMajorFilter(BtuiDevProperty::InRange,
+ BtuiModelSortFilter::AtLeastMatch); // device must be in range
+ mBtuiModelSortFilter->addDeviceMajorFilter(devTypesWanted,
+ BtuiModelSortFilter::RoughMatch); // device can be any one of selected ones
+ }
+ }
+}
+
void BtCpUiSearchView::stopSearching()
{
// Stop delegate
@@ -196,6 +290,30 @@
mAbstractDelegate->cancel();
}
+void BtCpUiSearchView::startSearchDelegate ()
+{
+ bool ret(false);
+
+ if(mAbstractDelegate) {
+ mAbstractDelegate->cancel();
+ disconnect( mAbstractDelegate );
+ delete mAbstractDelegate;
+ mAbstractDelegate = 0;
+ }
+ // Create the inquiry delegate.
+ mAbstractDelegate = BtDelegateFactory::newDelegate(BtDelegate::Inquiry, mSettingModel, mDeviceModel );
+
+ // Connect to the signal from the BtDelegateInquiry for completion of the search request
+ ret = connect(mAbstractDelegate, SIGNAL(commandCompleted(int)), this, SLOT(searchDelegateCompleted(int)));
+ BTUI_ASSERT_X( ret, "bt-search-view", "searchDelegateCompleted can't connect" );
+
+ // Connect to the signal from the BtuiModel when the search has been completed.
+ ret = connect(mDeviceModel, SIGNAL(deviceSearchCompleted(int)), this, SLOT(deviceSearchCompleted(int)));
+ BTUI_ASSERT_X( ret, "bt-search-view", "deviceSearchCompleted can't connect" );
+
+ mAbstractDelegate->exec(QVariant());
+}
+
void BtCpUiSearchView::retrySearch()
{
// Retry delegate
@@ -205,10 +323,12 @@
mRetry->setEnabled(false);
mStop->setEnabled(true);
+ BtCpUiSearchListViewItem *prototype = new BtCpUiSearchListViewItem(mDeviceList);
+ prototype->setModelSortFilter(mBtuiModelSortFilter);
+ mDeviceList->setItemPrototype(prototype);
+
// Make use of the delegate and start the search.
- mAbstractDelegate->cancel();
- mDeviceList->setModel(mBtuiModelSortFilter);
- mAbstractDelegate->exec(QVariant());
+ startSearchDelegate ();
}
void BtCpUiSearchView::setSoftkeyBack()
@@ -231,36 +351,29 @@
Q_UNUSED(cmdId);
setSoftkeyBack();
-
- bool ret(false);
-
- if(!mAbstractDelegate) {
- // Create the inquiry delegate.
- mAbstractDelegate = BtDelegateFactory::newDelegate(
- BtDelegate::Inquiry, mSettingModel, mDeviceModel );
- }
-
- // Connect to the signal from the BtDelegateInquiry for completion of the search request
- ret = connect(mAbstractDelegate, SIGNAL(commandCompleted(int)), this, SLOT(searchDelegateCompleted(int)));
- BTUI_ASSERT_X( ret, "bt-search-view", "searchDelegateCompleted can't connect" );
-
- // Connect to the signal from the BtuiModel when the search has been completed.
- ret = connect(mDeviceModel, SIGNAL(deviceSearchCompleted(int)), this, SLOT(deviceSearchCompleted(int)));
- BTUI_ASSERT_X( ret, "bt-search-view", "deviceSearchCompleted can't connect" );
-
+
if(!mBtuiModelSortFilter) {
mBtuiModelSortFilter = new BtuiModelSortFilter(this);
}
mBtuiModelSortFilter->setSourceModel(mDeviceModel);
- mBtuiModelSortFilter->addDeviceMajorFilter(BtDeviceModel::InRange, BtuiModelSortFilter::AtLeastMatch);
+ mBtuiModelSortFilter->addDeviceMajorFilter(
+ BtuiDevProperty::InRange, BtuiModelSortFilter::AtLeastMatch);
mDeviceList->setModel(mBtuiModelSortFilter);
+ BtCpUiSearchListViewItem *prototype = new BtCpUiSearchListViewItem(mDeviceList);
+ prototype->setModelSortFilter(mBtuiModelSortFilter);
+ mDeviceList->setItemPrototype(prototype);
+
// Make use of the delegate and start the search.
- mAbstractDelegate->exec(QVariant());
+ startSearchDelegate ();
}
void BtCpUiSearchView::deactivateView()
{
+ if( mAbstractDelegate ) {
+ disconnect( mAbstractDelegate );
+ }
+ disconnect( mDeviceModel );
}
void BtCpUiSearchView::searchDelegateCompleted(int error)
--- a/bluetoothengine/btui/btcpplugin/btcpuisearchview.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btcpplugin/btcpuisearchview.h Wed Jun 23 18:23:52 2010 +0300
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * 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""
@@ -36,6 +36,7 @@
Q_OBJECT
public:
+
explicit BtCpUiSearchView(
BtSettingModel &settingModel,
BtDeviceModel &deviceModel,
@@ -50,16 +51,31 @@
void changeOrientation( Qt::Orientation orientation );
void stopSearching();
void retrySearch();
+ void viewByDeviceTypeDialog();
+ void viewByDialogClosed(HbAction* action);
void searchDelegateCompleted(int error);
void deviceSearchCompleted(int error);
void deviceSelected(const QModelIndex& modelIndex);
-
+
+private:
+ void startSearchDelegate();
+
+private:
+ enum devTypeSelectionList {
+ BtUiDevAudioDevice = 0,
+ BtUiDevComputer,
+ BtUiDevInputDevice,
+ BtUiDevPhone,
+ BtUiDevOtherDevice
+ };
private:
HbDocumentLoader *mLoader;
HbLabel *mDeviceIcon;
HbLabel *mLabelFoundDevices;
HbLabel *mLabelSearching;
HbListView *mDeviceList;
+ QStringList mDevTypeList;
+ int mLastSelectionIndex;
// data structures for switching between views
bool mEventFilterInstalled;
--- a/bluetoothengine/btui/btcpplugin/btcpuisettingitem.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btcpplugin/btcpuisettingitem.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * 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""
@@ -17,36 +17,49 @@
#include "btcpuisettingitem.h"
#include <cpitemdatahelper.h>
+#include <bluetoothuitrace.h>
#include <HbInstance>
+#include <HbTranslator>
-BtCpUiSettingItem::BtCpUiSettingItem(CpItemDataHelper &itemDataHelper,
- const QString &text /*= QString()*/,
- const QString &description /*= QString()*/,
- const HbIcon &icon /*= HbIcon()*/,
- const HbDataFormModelItem *parent /*= 0*/)
- : CpSettingFormEntryItemData(itemDataHelper,
- text,
- description,
- icon,
- parent)
+BtCpUiSettingItem::BtCpUiSettingItem(CpItemDataHelper &itemDataHelper) :
+ CpSettingFormEntryItemData(itemDataHelper)
{
+ bool ret(false);
+ loadTranslators();
+ mSettingModel = new BtSettingModel();
+ mDeviceModel = new BtDeviceModel();
+
+ ret = connect(mSettingModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
+ this, SLOT(handleDataChanged(QModelIndex,QModelIndex)));
+ BTUI_ASSERT_X( ret, "BtCpUiSettingItem::BtCpUiSettingItem", "can't connect dataChanged" );
+
+ this->setDescription(hbTrId("txt_cp_dblist_bluetooth"));
+ updateStatus();
}
BtCpUiSettingItem::~BtCpUiSettingItem()
{
+ delete mSettingModel;
+ delete mDeviceModel;
+
+ delete mViewTranslator;
+ delete mDialogTranslator;
+}
+void BtCpUiSettingItem::loadTranslators()
+{
+ mViewTranslator = new HbTranslator("btviews");
+ mDialogTranslator = new HbTranslator("btdialogs");
}
void BtCpUiSettingItem::onLaunchView()
{
- mSettingModel = new BtSettingModel(this);
- mDeviceModel = new BtDeviceModel(this);
-
+
mMainWindow = hbInstance->allMainWindows().first();
mBtMainView = new BtCpUiMainView(*mSettingModel, *mDeviceModel);
-
+
mCpView = mMainWindow->currentView();
mMainWindow->addView(mBtMainView);
@@ -60,8 +73,69 @@
{
mBtMainView->deactivateView();
mMainWindow->setCurrentView(mCpView);
+
+ mMainWindow->removeView(mBtMainView);
+ delete mBtMainView;
+ mBtMainView = 0;
+
+}
+
+/*!
+ Slot for receiving notification of local setting changes from the model.
+ Identify the setting changed and update the corresponding UI item.
+ */
+void BtCpUiSettingItem::handleDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)
+{
+ // update only the part of the view specified by the model's row(s)
+ for (int i=topLeft.row(); i <= bottomRight.row(); i++) {
+ QModelIndex index = mSettingModel->index( i, 0);
+ // Distinguish which setting value is changed.
+ switch ( i ) {
+ case BtSettingModel::PowerStateRow:
+ case BtSettingModel::VisibilityRow:
+ updateStatus();
+ break;
+ }
+ }
}
+void BtCpUiSettingItem::updateStatus()
+{
+ QString btStatusText;
+ HbIcon btStatusIcon;
+
+ //todo: Connection status is not updated right now, which is also required as per UI Spec.
+ PowerStateQtValue btPower = (PowerStateQtValue)mSettingModel->data(mSettingModel->index(
+ BtSettingModel::PowerStateRow, 0),
+ BtSettingModel::SettingValueRole).toInt();
+
+ if(BtPowerOn == btPower) {
+ VisibilityMode visibilityMode = (VisibilityMode) mSettingModel->data(
+ mSettingModel->index(BtSettingModel::VisibilityRow, 0),
+ BtSettingModel::SettingValueRole).toInt();
+ switch(visibilityMode) {
+ case BtHidden:
+ btStatusText = hbTrId("txt_cp_dblist_bluetooth_val_on_and_hidden");
+ btStatusIcon.setIconName("qtg_large_bluetooth_hide");
+ break;
+ case BtVisible:
+ case BtTemporary:
+ btStatusText = hbTrId("txt_cp_dblist_bluetooth_val_on_and_visible");
+ btStatusIcon.setIconName("qtg_large_bluetooth");
+ break;
+ default:
+ BTUI_ASSERT_X(false, "BtCpUiSettingItem::updateStatus", "invalid visibility mode");
+ }
+ }
+ else {
+ //Bt is off.
+ btStatusText = hbTrId("txt_cp_dblist_bluetooth_val_off");
+ btStatusIcon.setIconName("qtg_large_bluetooth_off");
+ }
+
+ this->setDescription(btStatusText);
+ this->setEntryItemIcon(btStatusIcon);
+}
CpBaseSettingView *BtCpUiSettingItem::createSettingView() const
{
--- a/bluetoothengine/btui/btcpplugin/btcpuisettingitem.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btcpplugin/btcpuisettingitem.h Wed Jun 23 18:23:52 2010 +0300
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * 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""
@@ -24,22 +24,22 @@
#include "btcpuimainview.h"
+class HbTranslator;
+
class BtCpUiSettingItem : public CpSettingFormEntryItemData
{
Q_OBJECT
public:
- explicit BtCpUiSettingItem(CpItemDataHelper &itemDataHelper,
- const QString &text = QString(),
- const QString &description = QString(),
- const HbIcon &icon = HbIcon(),
- const HbDataFormModelItem *parent = 0);
+ explicit BtCpUiSettingItem(CpItemDataHelper &itemDataHelper);
virtual ~BtCpUiSettingItem();
private slots:
void onLaunchView();
void handleCloseView();
+ void handleDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
private:
virtual CpBaseSettingView *createSettingView() const;
-
+ void updateStatus();
+ void loadTranslators();
private:
HbMainWindow* mMainWindow;
@@ -51,6 +51,9 @@
HbView *mCpView;
+ HbTranslator *mViewTranslator;
+ HbTranslator *mDialogTranslator;
+
};
#endif //BTCPUISETTINGITEM_H
--- a/bluetoothengine/btui/btcpplugin/btuiviewutil.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btcpplugin/btuiviewutil.h Wed Jun 23 18:23:52 2010 +0300
@@ -1,23 +1,19 @@
/*
-* ============================================================================
-* Name : btuiviewutil.h
-* Description : utilities in the view for some often used functions,
-*
-* Copyright © 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:
-* Nokia Corporation
-* ============================================================================
-* Template version: 4.2
-*/
+ * 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:
+ *
+ */
#ifndef BTUIVIEWUTIL_H
#define BTUIVIEWUTIL_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btui/btcpplugin/docml/bt-advanced-view.docml Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument version="1.1">
+ <object name="exitAction" type="HbAction">
+ <string locid="txt_common_opt_exit" name="text" value="Exit"/>
+ </object>
+ <widget name="bt_advanced_settings_view" type="HbView">
+ <widget name="viewMenu" role="HbView:menu" type="HbMenu">
+ <ref object="exitAction" role="HbWidget:addAction"/>
+ </widget>
+ <widget name="advancedSettingsContainer" role="HbView:widget" type="HbWidget">
+ <widget name="groupBox" type="HbGroupBox">
+ <sizehint type="PREFERRED" width="25un"/>
+ <bool name="collapsable" value="FALSE"/>
+ <string locid="txt_bt_subhead_bluetooth_advanced_settings" name="heading" value="Bluetooth - Advanced settings"/>
+ </widget>
+ <widget name="visibilityContainer" type="HbWidget">
+ <widget name="visibilityLabel" type="HbLabel">
+ <string locid="txt_bt_setlabel_change_visibility_time" name="plainText" value="Change visibility time"/>
+ </widget>
+ <widget name="visibilitySlider" type="HbSlider">
+ <integer name="majorTickInterval" value="5"/>
+ <sizehint height="expr(var(hb-param-touch-area-gene-primary-medium) )" type="PREFERRED" width="var(hb-param-widget-dialog-width)"/>
+ <enums name="orientation" value="Horizontal"/>
+ <integer name="minorTickInterval" value="2"/>
+ <integer name="value" value="15"/>
+ <integer name="minimum" value="1"/>
+ <integer name="maximum" value="60"/>
+ </widget>
+ <real name="z" value="0"/>
+ <sizepolicy horizontalPolicy="Ignored" horizontalStretch="0" verticalPolicy="Ignored" verticalStretch="0"/>
+ <sizehint height="23.8806un" type="PREFERRED" width="11.9403un"/>
+ <layout orientation="Vertical" spacing="0un" type="linear">
+ <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+ <linearitem itemname="visibilityLabel"/>
+ <linearitem itemname="visibilitySlider"/>
+ </layout>
+ </widget>
+ <widget name="sapContainer" type="HbWidget">
+ <widget name="sapLabel" type="HbLabel">
+ <string locid="txt_bt_setlabel_sim_access_profile" name="plainText" value="SIM access profile"/>
+ </widget>
+ <widget name="sapButton" type="HbPushButton">
+ <sizehint type="PREFERRED" width="expr(var(hb-param-widget-dialog-width) )"/>
+ <string locid="txt_bt_setlabel_sim_access_profile_val_disabled" name="text" value="Disabled"/>
+ <enums name="textAlignment" value="AlignLeft|AlignLeading"/>
+ </widget>
+ <real name="z" value="0"/>
+ <sizepolicy horizontalPolicy="Ignored" horizontalStretch="0" verticalPolicy="Ignored" verticalStretch="0"/>
+ <sizehint height="23.8806un" type="PREFERRED" width="11.9403un"/>
+ <layout orientation="Vertical" spacing="0un" type="linear">
+ <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+ <linearitem itemname="sapLabel"/>
+ <linearitem itemname="sapButton"/>
+ </layout>
+ </widget>
+ <widget name="container" type="HbWidget">
+ <sizehint height="23.8806un" type="PREFERRED" width="23.8806un"/>
+ </widget>
+ <real name="z" value="0"/>
+ <layout orientation="Vertical" spacing="0un" type="linear">
+ <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+ <linearitem itemname="groupBox"/>
+ <linearitem itemname="visibilityContainer"/>
+ <linearitem itemname="sapContainer"/>
+ <linearitem itemname="container"/>
+ </layout>
+ </widget>
+ <string locid="Control Panel" name="title" value="Control Panel"/>
+ </widget>
+ <section name="landscape">
+ <widget name="visibilityContainer" type="HbWidget">
+ <sizepolicy horizontalPolicy="Ignored" horizontalStretch="0" verticalPolicy="Ignored" verticalStretch="0"/>
+ <layout orientation="Horizontal" spacing="0un" type="linear">
+ <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+ <linearitem itemname="visibilityLabel"/>
+ <linearitem itemname="visibilitySlider"/>
+ </layout>
+ </widget>
+ <widget name="visibilityLabel" type="HbLabel">
+ <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+ </widget>
+ <widget name="sapContainer" type="HbWidget">
+ <sizepolicy horizontalPolicy="Ignored" horizontalStretch="0" verticalPolicy="Ignored" verticalStretch="0"/>
+ <layout orientation="Horizontal" spacing="0un" type="linear">
+ <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+ <linearitem itemname="sapLabel"/>
+ <linearitem itemname="sapButton"/>
+ </layout>
+ </widget>
+ <widget name="sapLabel" type="HbLabel">
+ <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+ </widget>
+ <widget name="visibilitySlider" type="HbSlider">
+ <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+ </widget>
+ </section>
+ <metadata activeUIState="landscape_ui" display="NHD-3.2-inch_landscape" unit="un">
+ <uistate name="Common ui state" sections="#common"/>
+ <uistate name="landscape_ui" sections="#common landscape"/>
+ <uistate name="portrait_ui" sections="#common"/>
+ <uistate name="landscape" sections="#common landscape"/>
+ </metadata>
+</hbdocument>
--- a/bluetoothengine/btui/btcpplugin/docml/bt-device-view.docml Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btcpplugin/docml/bt-device-view.docml Wed Jun 23 18:23:52 2010 +0300
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="1.0">
+<hbdocument version="1.1">
<object name="Menu_item_exit" type="HbAction">
<string name="text" value="Exit"/>
</object>
@@ -10,7 +10,7 @@
<sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
<sizehint height="4.92537un" type="PREFERRED" width="53.73134un"/>
<bool name="collapsable" value="FALSE"/>
- <string name="heading" value="Di's Vasco"/>
+ <string locid="txt_bt_subhead_bluetooth_device" name="heading" value="Bluetooth device"/>
</widget>
<widget name="deviceCategory" type="HbLabel">
<real name="z" value="3"/>
@@ -21,46 +21,48 @@
<widget name="deviceStatus" type="HbLabel">
<real name="z" value="4"/>
<sizehint height="var(hb-param-text-height-secondary)" type="PREFERRED" width="39.70149un"/>
- <string name="plainText" value="Connected"/>
+ <string name="plainText" value="Paired Connected"/>
</widget>
- <widget name="deviceName" type="HbTextEdit">
+ <widget name="deviceName" type="HbLineEdit">
<real name="z" value="2"/>
- <sizehint height="var(hb-param-text-height-primary)" type="PREFERRED" width="39.70149un"/>
- <string name="plainText" value="Wang's N97"/>
+ <sizehint height="expr(var(hb-param-graphic-size-primary-large) )" type="PREFERRED" width="39.70149un"/>
+ <string name="text" value="Wang's N97"/>
</widget>
<widget name="deviceIcon" type="HbLabel">
<enums name="alignment" value="AlignVCenter|AlignHCenter"/>
- <icon iconName="note_warning" name="icon"/>
+ <icon iconName="qtg_large_mobile" name="icon"/>
<real name="z" value="1"/>
<sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
<sizehint height="var(hb-param-graphic-size-primary-large)" type="PREFERRED" width="var(hb-param-graphic-size-primary-large)"/>
<contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
</widget>
- <widget name="combo_label" type="HbLabel">
- <real name="z" value="1"/>
- <sizehint height="var(hb-param-text-height-primary)" type="PREFERRED" width="49.70149un"/>
- <string name="plainText" value="Connection:"/>
- </widget>
- <widget name="combobox" type="HbComboBox">
- <container name="items" type="stringlist">
- <string value="Combobox"/>
- </container>
+ <widget name="connectionCombobox" type="HbDataForm">
+ <enums name="verticalScrollBarPolicy" value="ScrollBarAlwaysOff"/>
+ <enums name="horizontalScrollBarPolicy" value="ScrollBarAlwaysOff"/>
+ <enums name="selectionMode" value="NoSelection"/>
<real name="z" value="2"/>
- <sizehint height="7.46269un" type="PREFERRED" width="45.67164un"/>
+ <sizehint height="16.41791un" type="PREFERRED" width="53.73134un"/>
+ <string name="description"/>
</widget>
<widget name="pushButton_0" type="HbPushButton">
- <real name="z" value="2"/>
- <sizehint height="7.46269un" type="PREFERRED" width="49.70149un"/>
+ <icon iconName="qtg_mono_bt_unpair" name="icon"/>
+ <real name="z" value="5"/>
+ <sizehint height="9un" type="PREFERRED"/>
+ <enums name="orientation" value="Horizontal"/>
<string name="text" value="Unpair"/>
</widget>
<widget name="pushButton_1" type="HbPushButton">
- <real name="z" value="5"/>
- <sizehint height="7.46269un" type="PREFERRED"/>
+ <icon iconName="qtg_mono_disconnect" name="icon"/>
+ <real name="z" value="6"/>
+ <sizehint height="9un" type="PREFERRED"/>
+ <enums name="orientation" value="Horizontal"/>
<string name="text" value="Disconnect"/>
</widget>
<widget name="pushButton_2" type="HbPushButton">
- <real name="z" value="6"/>
- <sizehint height="7.46269un" type="PREFERRED"/>
+ <icon iconName="qtg_mono_settings" name="icon"/>
+ <real name="z" value="7"/>
+ <sizehint height="9un" type="PREFERRED"/>
+ <enums name="orientation" value="Horizontal"/>
<string name="text" value="Settings"/>
</widget>
<layout type="anchor">
@@ -72,31 +74,28 @@
<anchoritem dst="deviceName" dstEdge="LEFT" spacing="2un" src="deviceIcon" srcEdge="RIGHT"/>
<anchoritem dst="deviceName" dstEdge="TOP" spacing="var(hb-param-margin-gene-top)" src="groupBox_deviceView" srcEdge="BOTTOM"/>
<anchoritem dst="deviceName" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-right)" src="" srcEdge="RIGHT"/>
- <anchoritem dst="combobox" dstEdge="LEFT" spacing="6un" src="" srcEdge="LEFT"/>
- <anchoritem dst="combobox" dstEdge="TOP" spacing="var(hb-param-margin-gene-middle-vertical)" src="combo_label" srcEdge="BOTTOM"/>
- <anchoritem dst="combobox" dstEdge="RIGHT" spacing="-2un" src="" srcEdge="RIGHT"/>
<anchoritem dst="deviceStatus" dstEdge="LEFT" spacing="12un" src="" srcEdge="LEFT"/>
<anchoritem dst="deviceStatus" dstEdge="TOP" spacing="var(hb-param-margin-gene-bottom)" src="deviceCategory" srcEdge="BOTTOM"/>
<anchoritem dst="deviceStatus" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-right)" src="" srcEdge="RIGHT"/>
<anchoritem dst="deviceCategory" dstEdge="LEFT" spacing="2un" src="deviceIcon" srcEdge="RIGHT"/>
<anchoritem dst="deviceCategory" dstEdge="TOP" spacing="var(hb-param-margin-gene-middle-vertical)" src="deviceName" srcEdge="BOTTOM"/>
<anchoritem dst="deviceCategory" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-right)" src="" srcEdge="RIGHT"/>
- <anchoritem dst="combo_label" dstEdge="LEFT" spacing="var(hb-param-margin-gene-left)" src="" srcEdge="LEFT"/>
- <anchoritem dst="combo_label" dstEdge="TOP" spacing="var(hb-param-margin-gene-top)" src="deviceStatus" srcEdge="BOTTOM"/>
- <anchoritem dst="combo_label" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-right)" src="" srcEdge="RIGHT"/>
- <anchoritem dst="pushButton_0" dstEdge="LEFT" spacing="var(hb-param-margin-gene-left)" src="" srcEdge="LEFT"/>
- <anchoritem dst="pushButton_0" dstEdge="TOP" spacing="var(hb-param-margin-gene-top)" src="combobox" srcEdge="BOTTOM"/>
- <anchoritem dst="pushButton_0" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-right)" src="" srcEdge="RIGHT"/>
- <anchoritem dst="pushButton_1" dstEdge="LEFT" spacing="var(hb-param-margin-gene-left)" src="" srcEdge="LEFT"/>
- <anchoritem dst="pushButton_1" dstEdge="TOP" spacing="var(hb-param-margin-gene-middle-vertical)" src="pushButton_0" srcEdge="BOTTOM"/>
- <anchoritem dst="pushButton_1" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-right)" src="" srcEdge="RIGHT"/>
- <anchoritem dst="pushButton_2" dstEdge="LEFT" spacing="var(hb-param-margin-gene-left)" src="" srcEdge="LEFT"/>
- <anchoritem dst="pushButton_2" dstEdge="TOP" spacing="var(hb-param-margin-gene-top)" src="pushButton_1" srcEdge="BOTTOM"/>
- <anchoritem dst="pushButton_2" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-right)" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="pushButton_2" dstEdge="LEFT" spacing="expr(var(hb-param-margin-gene-left) )" src="" srcEdge="LEFT"/>
+ <anchoritem dst="pushButton_2" dstEdge="TOP" spacing="expr(var(hb-param-margin-gene-bottom) )" src="pushButton_1" srcEdge="BOTTOM"/>
+ <anchoritem dst="pushButton_2" dstEdge="RIGHT" spacing="expr(-var(hb-param-margin-gene-right) )" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="connectionCombobox" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="connectionCombobox" dstEdge="TOP" spacing="expr(var(hb-param-margin-gene-top) )" src="deviceStatus" srcEdge="BOTTOM"/>
+ <anchoritem dst="connectionCombobox" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="pushButton_1" dstEdge="LEFT" spacing="expr(var(hb-param-margin-gene-left) )" src="" srcEdge="LEFT"/>
+ <anchoritem dst="pushButton_1" dstEdge="TOP" spacing="expr(var(hb-param-margin-gene-middle-vertical) )" src="pushButton_0" srcEdge="BOTTOM"/>
+ <anchoritem dst="pushButton_1" dstEdge="RIGHT" spacing="expr(-var(hb-param-margin-gene-right) )" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="pushButton_0" dstEdge="LEFT" spacing="expr(var(hb-param-margin-gene-left) )" src="" srcEdge="LEFT"/>
+ <anchoritem dst="pushButton_0" dstEdge="TOP" spacing="expr(var(hb-param-margin-gene-top) )" src="connectionCombobox" srcEdge="BOTTOM"/>
+ <anchoritem dst="pushButton_0" dstEdge="RIGHT" spacing="expr(-var(hb-param-margin-gene-right) )" src="" srcEdge="RIGHT"/>
</layout>
</widget>
<widget name="viewMenu" role="HbView:menu" type="HbMenu">
- <ref object="Menu_item_exit" role="HbMenu:addAction"/>
+ <ref object="Menu_item_exit" role="HbWidget:addAction"/>
</widget>
<string name="title" value="Control Panel"/>
</widget>
@@ -113,31 +112,30 @@
<anchoritem dst="deviceName" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-right)" src="" srcEdge="RIGHT"/>
<anchoritem dst="deviceCategory" dstEdge="LEFT" spacing="2un" src="deviceIcon" srcEdge="RIGHT"/>
<anchoritem dst="deviceCategory" dstEdge="TOP" spacing="var(hb-param-margin-gene-middle-vertical)" src="deviceName" srcEdge="BOTTOM"/>
- <anchoritem dst="deviceStatus" dstEdge="LEFT" spacing="var(hb-param-margin-gene-middle-horizontal)" src="deviceCategory" srcEdge="RIGHT"/>
- <anchoritem dst="deviceStatus" dstEdge="TOP" spacing="var(hb-param-margin-gene-middle-vertical)" src="deviceName" srcEdge="BOTTOM"/>
+ <anchoritem dst="deviceStatus" dstEdge="LEFT" spacing="expr(var(hb-param-margin-gene-middle-horizontal) )" src="deviceCategory" srcEdge="RIGHT"/>
+ <anchoritem dst="deviceStatus" dstEdge="TOP" spacing="expr(var(hb-param-margin-gene-middle-vertical) )" src="deviceName" srcEdge="BOTTOM"/>
<anchoritem dst="deviceStatus" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-right)" src="" srcEdge="RIGHT"/>
- <anchoritem dst="combo_label" dstEdge="LEFT" spacing="var(hb-param-margin-gene-left)" src="" srcEdge="LEFT"/>
- <anchoritem dst="combo_label" dstEdge="TOP" spacing="var(hb-param-margin-gene-top)" src="deviceStatus" srcEdge="BOTTOM"/>
- <anchoritem dst="combobox" dstEdge="LEFT" spacing="var(hb-param-margin-gene-middle-horizontal)" src="combo_label" srcEdge="RIGHT"/>
- <anchoritem dst="combobox" dstEdge="TOP" spacing="var(hb-param-margin-gene-bottom)" src="deviceStatus" srcEdge="BOTTOM"/>
- <anchoritem dst="combobox" dstEdge="RIGHT" spacing="-2un" src="" srcEdge="RIGHT"/>
- <anchoritem dst="pushButton_0" dstEdge="LEFT" spacing="var(hb-param-margin-gene-left)" src="" srcEdge="LEFT"/>
- <anchoritem dst="pushButton_0" dstEdge="TOP" spacing="var(hb-param-margin-gene-top)" src="combobox" srcEdge="BOTTOM"/>
+ <anchoritem dst="connectionCombobox" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="connectionCombobox" dstEdge="TOP" spacing="expr(var(hb-param-margin-gene-bottom) )" src="deviceStatus" srcEdge="BOTTOM"/>
+ <anchoritem dst="connectionCombobox" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="pushButton_0" dstEdge="LEFT" spacing="expr(var(hb-param-margin-gene-left) )" src="" srcEdge="LEFT"/>
+ <anchoritem dst="pushButton_0" dstEdge="TOP" spacing="expr(var(hb-param-margin-gene-top) )" src="connectionCombobox" srcEdge="BOTTOM"/>
<anchoritem dst="pushButton_0" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-right)" src="" srcEdge="CENTERH"/>
<anchoritem dst="pushButton_1" dstEdge="LEFT" spacing="var(hb-param-margin-gene-middle-horizontal)" src="pushButton_0" srcEdge="RIGHT"/>
- <anchoritem dst="pushButton_1" dstEdge="TOP" spacing="var(hb-param-margin-gene-top)" src="combobox" srcEdge="BOTTOM"/>
- <anchoritem dst="pushButton_1" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-right)" src="" srcEdge="RIGHT"/>
- <anchoritem dst="pushButton_2" dstEdge="LEFT" spacing="var(hb-param-margin-gene-left)" src="" srcEdge="LEFT"/>
+ <anchoritem dst="pushButton_1" dstEdge="TOP" spacing="expr(var(hb-param-margin-gene-top) )" src="connectionCombobox" srcEdge="BOTTOM"/>
+ <anchoritem dst="pushButton_1" dstEdge="RIGHT" spacing="expr(-var(hb-param-margin-gene-right) )" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="pushButton_2" dstEdge="LEFT" spacing="expr(var(hb-param-margin-gene-left) )" src="" srcEdge="LEFT"/>
<anchoritem dst="pushButton_2" dstEdge="TOP" spacing="var(hb-param-margin-gene-middle-vertical)" src="pushButton_1" srcEdge="BOTTOM"/>
- <anchoritem dst="pushButton_2" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-right)" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="pushButton_2" dstEdge="RIGHT" spacing="expr(-var(hb-param-margin-gene-right) )" src="" srcEdge="RIGHT"/>
</layout>
</widget>
- <widget name="deviceCategory" type="HbLabel">
- <sizehint height="var(hb-param-text-height-secondary)" type="PREFERRED" width="39.70149un"/>
+ </section>
+ <section name="portrait">
+ <widget name="connectionCombobox" type="HbDataForm">
+ <enums name="selectionMode" value="NoSelection"/>
</widget>
</section>
- <section name="portrait"/>
- <metadata activeUIState="portrait" display="NHD portrait" unit="un">
+ <metadata activeUIState="Common ui state" display="NHD-3.2-inch_portrait" unit="un">
<uistate name="Common ui state" sections="#common"/>
<uistate name="landscape" sections="#common landscape"/>
<uistate name="portrait" sections="#common portrait"/>
--- a/bluetoothengine/btui/btcpplugin/docml/bt-main-view.docml Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btcpplugin/docml/bt-main-view.docml Wed Jun 23 18:23:52 2010 +0300
@@ -1,50 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="1.0">
+<hbdocument version="1.1">
<object name="allAction" type="HbAction">
- <string name="text" value="All"/>
+ <icon iconName="qtg_mono_bt_show_all" name="icon"/>
+ <string name="text"/>
</object>
<object name="pairedAction" type="HbAction">
- <string name="text" value="Paired"/>
+ <icon iconName="qtg_mono_bt_show_pair" name="icon"/>
+ <string name="text"/>
</object>
<object name="discoverAction" type="HbAction">
- <string name="text" value="Discover"/>
+ <icon iconName="qtg_mono_search" name="icon"/>
+ <string name="text"/>
</object>
<object name="advanceSettings" type="HbAction">
- <string name="text" value="Advanced Settings"/>
+ <string locid="txt_bt_opt_advanced_settings" name="text" value="Advanced Settings"/>
</object>
<object name="audioDevices" type="HbAction">
- <string name="text" value="Audio Devices"/>
+ <string locid="txt_bt_list_audio_device" name="text" value="Audio Devices"/>
</object>
<object name="computers" type="HbAction">
- <string name="text" value="Computers"/>
+ <string locid="txt_bt_list_computer" name="text" value="Computers"/>
</object>
<object name="inputDevices" type="HbAction">
- <string name="text" value="Input Devices"/>
+ <string locid="txt_bt_list_input_device" name="text" value="Input Devices"/>
</object>
<object name="otherDevices" type="HbAction">
- <string name="text" value="Other Devices"/>
+ <string locid="txt_bt_list_other" name="text" value="Other Devices"/>
</object>
<object name="removePairedDevices" type="HbAction">
- <string name="text" value="Remove Paired Devices"/>
+ <string locid="txt_bt_opt_remove_paired_devices" name="text" value="Remove Paired Devices"/>
</object>
<object name="exit" type="HbAction">
- <string name="text" value="Exit"/>
+ <string locid="txt_common_opt_exit" name="text" value="Exit"/>
</object>
<object name="phones" type="HbAction">
- <string name="text" value="Phones"/>
+ <string locid="txt_bt_list_phone" name="text" value="Phones"/>
</object>
<widget name="view" type="HbView">
<widget name="content" role="HbView:widget" type="HbWidget">
<widget name="toolBar" type="HbToolBar">
<sizehint height="7.46269un" type="PREFERRED" width="22.38806un"/>
- <ref object="allAction" role="HbToolBar:addAction"/>
- <ref object="pairedAction" role="HbToolBar:addAction"/>
- <ref object="discoverAction" role="HbToolBar:addAction"/>
+ <ref object="allAction" role="HbWidget:addAction"/>
+ <ref object="pairedAction" role="HbWidget:addAction"/>
+ <ref object="discoverAction" role="HbWidget:addAction"/>
</widget>
<widget name="container_1" type="HbWidget">
<widget name="groupBox" type="HbGroupBox">
<bool name="collapsable" value="FALSE"/>
- <string name="heading" value="Bluetooth"/>
+ <string locid="txt_bt_subhead_bluetooth_paired_devices" name="heading" value="Bluetooth"/>
</widget>
<widget name="container" type="HbWidget">
<widget name="icon" type="HbLabel">
@@ -59,13 +62,12 @@
<real name="z" value="2"/>
<sizehint height="var(hb-param-graphic-size-primary-large)" type="PREFERRED" width="var(hb-param-graphic-size-primary-large)"/>
<sizehint height="var(hb-param-graphic-size-primary-large)" type="MAXIMUM" width="var(hb-param-graphic-size-primary-large)"/>
- <string name="text" value="On"/>
+ <string name="text"/>
</widget>
<widget name="combobox" type="HbComboBox">
<container name="items" type="stringlist">
- <string value="Hidden"/>
- <string value="Visible"/>
- <string value="Visible for 5 Min"/>
+ <string locid="txt_bt_setlabel_visibility_val_hidden" value="Hidden"/>
+ <string locid="txt_bt_setlabel_visibility_val_visible" value="Visible"/>
</container>
<real name="z" value="4"/>
<sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
@@ -73,10 +75,10 @@
</widget>
<widget name="lineEdit" type="HbLineEdit">
<real name="z" value="3"/>
+ <sizehint height="var(hb-param-graphic-size-primary-large)" type="PREFERRED" width="34un"/>
+ <string name="text" value="Text"/>
<integer name="maxLength" value="30"/>
<sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
- <sizehint height="var(hb-param-graphic-size-primary-large)" type="PREFERRED" width="34un"/>
- <string name="text" value="Text"/>
</widget>
<real name="z" value="0"/>
<sizehint height="23.8806un" type="PREFERRED" width="23.8806un"/>
@@ -105,10 +107,11 @@
</widget>
<widget name="listView" type="HbListView">
<widget name="listItemPrototype" role="HbAbstractView:prototype" type="HbListViewItem"/>
+ <enums name="selectionMode" value="NoSelection"/>
<sizehint height="47.7612un" type="PREFERRED" width="35.8209un"/>
- <enums name="selectionMode" value="NoSelection"/>
</widget>
- <layout orientation="Vertical" type="linear">
+ <layout orientation="Vertical" spacing="var(hb-param-margin-gene-middle-vertical)" type="linear">
+ <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
<linearitem itemname="container_1"/>
<linearitem itemname="listView"/>
<linearitem itemname="toolBar"/>
@@ -116,34 +119,20 @@
</widget>
<widget name="viewMenu" role="HbView:menu" type="HbMenu">
<widget name="subMenu" role="HbMenu:menu" type="HbMenu">
- <ref object="audioDevices" role="HbMenu:addAction"/>
- <ref object="computers" role="HbMenu:addAction"/>
- <ref object="phones" role="HbMenu:addAction"/>
- <ref object="inputDevices" role="HbMenu:addAction"/>
- <ref object="otherDevices" role="HbMenu:addAction"/>
- <string name="title" value="Show Only"/>
+ <ref object="audioDevices" role="HbWidget:addAction"/>
+ <ref object="computers" role="HbWidget:addAction"/>
+ <ref object="phones" role="HbWidget:addAction"/>
+ <ref object="inputDevices" role="HbWidget:addAction"/>
+ <ref object="otherDevices" role="HbWidget:addAction"/>
+ <string locid="txt_bt_opt_show" name="title" value="Show Only"/>
</widget>
- <ref object="advanceSettings" role="HbMenu:addAction"/>
- <ref object="removePairedDevices" role="HbMenu:addAction"/>
- <ref object="exit" role="HbMenu:addAction"/>
+ <ref object="advanceSettings" role="HbWidget:addAction"/>
+ <ref object="removePairedDevices" role="HbWidget:addAction"/>
+ <ref object="exit" role="HbWidget:addAction"/>
</widget>
- <string name="title" value="Control Panel"/>
+ <string locid="txt_tsw_caption" name="title" value="Control Panel"/>
</widget>
<section name="portrait">
- <widget name="lineEdit" type="HbLineEdit">
- <sizehint type="PREFERRED" width="29.25373un"/>
- </widget>
- <widget name="pushButton" type="HbPushButton">
- <sizehint height="var(hb-param-graphic-size-primary-large)" type="PREFERRED" width="var(hb-param-graphic-size-primary-large)"/>
- <sizehint height="var(hb-param-graphic-size-primary-large)" type="MAXIMUM" width="var(hb-param-graphic-size-primary-large)"/>
- </widget>
- <widget name="combobox" type="HbComboBox">
- <sizehint height="var(hb-param-graphic-size-primary-large)" type="PREFERRED" width="31.34328un"/>
- </widget>
- <widget name="icon" type="HbLabel">
- <sizehint height="var(hb-param-graphic-size-primary-large)" type="PREFERRED" width="var(hb-param-graphic-size-primary-large)"/>
- <sizehint height="var(hb-param-graphic-size-primary-large)" type="MAXIMUM" width="var(hb-param-graphic-size-primary-large)"/>
- </widget>
<widget name="container" type="HbWidget">
<layout type="anchor">
<anchoritem dst="icon" dstEdge="LEFT" spacing="var(hb-param-margin-gene-left)" src="" srcEdge="LEFT"/>
@@ -160,6 +149,10 @@
<anchoritem dst="pushButton" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
</layout>
</widget>
+ <widget name="pushButton" type="HbPushButton">
+ <sizehint height="var(hb-param-graphic-size-primary-large)" type="PREFERRED" width="var(hb-param-graphic-size-primary-large)"/>
+ <sizehint height="var(hb-param-graphic-size-primary-large)" type="MAXIMUM" width="var(hb-param-graphic-size-primary-large)"/>
+ </widget>
<widget name="content" role="HbView:widget" type="HbWidget">
<layout orientation="Vertical" spacing="var(hb-param-margin-gene-middle-vertical)" type="linear">
<linearitem itemname="groupBox"/>
@@ -168,17 +161,18 @@
<linearitem itemname="toolBar"/>
</layout>
</widget>
- </section>
- <section name="landscape">
+ <widget name="icon" type="HbLabel">
+ <sizehint height="var(hb-param-graphic-size-primary-large)" type="PREFERRED" width="var(hb-param-graphic-size-primary-large)"/>
+ <sizehint height="var(hb-param-graphic-size-primary-large)" type="MAXIMUM" width="var(hb-param-graphic-size-primary-large)"/>
+ </widget>
<widget name="lineEdit" type="HbLineEdit">
- <sizehint height="var(hb-param-graphic-size-primary-large)" type="PREFERRED" width="33un"/>
+ <sizehint type="PREFERRED" width="29.25373un"/>
</widget>
<widget name="combobox" type="HbComboBox">
- <sizehint height="var(hb-param-graphic-size-primary-large)" type="PREFERRED" width="34.92537un"/>
+ <sizehint height="var(hb-param-graphic-size-primary-large)" type="PREFERRED" width="31.34328un"/>
</widget>
- <widget name="icon" type="HbLabel">
- <sizehint height="var(hb-param-graphic-size-primary-large)" type="PREFERRED" width="var(hb-param-graphic-size-primary-large)"/>
- </widget>
+ </section>
+ <section name="landscape">
<widget name="container" type="HbWidget">
<layout type="anchor">
<anchoritem dst="icon" dstEdge="LEFT" spacing="var(hb-param-margin-gene-left)" src="" srcEdge="LEFT"/>
@@ -192,8 +186,17 @@
<anchoritem dst="pushButton" dstEdge="TOP" spacing="expr(var(hb-param-margin-gene-top) )" src="" srcEdge="TOP"/>
</layout>
</widget>
+ <widget name="icon" type="HbLabel">
+ <sizehint height="var(hb-param-graphic-size-primary-large)" type="PREFERRED" width="var(hb-param-graphic-size-primary-large)"/>
+ </widget>
+ <widget name="lineEdit" type="HbLineEdit">
+ <sizehint height="var(hb-param-graphic-size-primary-large)" type="PREFERRED" width="33un"/>
+ </widget>
+ <widget name="combobox" type="HbComboBox">
+ <sizehint height="var(hb-param-graphic-size-primary-large)" type="PREFERRED" width="34.92537un"/>
+ </widget>
</section>
- <metadata activeUIState="landscape" display="NHD landscape" unit="un">
+ <metadata activeUIState="Common ui state" display="NHD-3.2-inch_portrait" unit="un">
<uistate name="Common ui state" sections="#common"/>
<uistate name="portrait" sections="#common"/>
<uistate name="portrait_UI" sections="#common portrait"/>
--- a/bluetoothengine/btui/btcpplugin/docml/bt-search-view.docml Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btcpplugin/docml/bt-search-view.docml Wed Jun 23 18:23:52 2010 +0300
@@ -1,20 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<hbdocument version="1.1">
<object name="viewByAction" type="HbAction">
- <string name="text" value="View by"/>
+ <icon iconName="qtg_mono_filter" name="icon"/>
+ <string name="text"/>
<bool name="visible" value="TRUE"/>
</object>
<object name="stopAction" type="HbAction">
- <string name="text" value="Stop"/>
+ <icon iconName="qtg_mono_search_stop" name="icon"/>
+ <string name="text"/>
</object>
<object name="retryAction" type="HbAction">
- <string name="text" value="Retry"/>
+ <icon iconName="qtg_mono_search" name="icon"/>
+ <string name="text"/>
</object>
<object name="exitAction" type="HbAction">
- <string name="text" value="Exit"/>
+ <string locid="txt_common_opt_exit" name="text" value="Exit"/>
</object>
<object name="connectAction" type="HbAction">
- <string name="text" value="Connect"/>
+ <string locid="txt_bt_menu_connect" name="text" value="Connect"/>
</object>
<object name="disconnectAction" type="HbAction">
<string name="text" value="Disconnect"/>
@@ -26,7 +29,7 @@
<real name="z" value="3"/>
<sizehint height="var(hb-param-graphic-size-primary-large)" type="PREFERRED" width="38.20896un"/>
<bool name="visible" value="TRUE"/>
- <string name="plainText" value="Bluetooth - Found devices"/>
+ <string locid="txt_bt_subhead_bluetooth_found_devices" name="plainText" value="Bluetooth - Found devices"/>
</widget>
<widget name="icon" type="HbLabel">
<enums name="alignment" value="AlignVCenter|AlignHCenter"/>
@@ -40,7 +43,7 @@
<real name="z" value="3"/>
<sizehint height="var(hb-param-graphic-size-primary-large)" type="PREFERRED" width="38.20896un"/>
<bool name="visible" value="TRUE"/>
- <string name="plainText" value="Searching..."/>
+ <string locid="txt_bt_subhead_searching" name="plainText" value="Searching..."/>
</widget>
<real name="z" value="0"/>
<sizehint height="21un" type="PREFERRED" width="51.19403un"/>
@@ -59,9 +62,7 @@
</layout>
</widget>
<widget name="toolBar" type="HbToolBar">
- <real name="z" value="2"/>
- <sizehint height="7.46269un" type="PREFERRED" width="52.98508un"/>
- <bool name="visible" value="TRUE"/>
+ <sizehint height="7.46269un" type="PREFERRED" width="22.38806un"/>
<ref object="viewByAction" role="HbWidget:addAction"/>
<ref object="stopAction" role="HbWidget:addAction"/>
<ref object="retryAction" role="HbWidget:addAction"/>
@@ -72,7 +73,6 @@
</widget>
<real name="z" value="0"/>
<layout orientation="Vertical" type="linear">
- <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
<linearitem itemname="search_container"/>
<linearitem itemname="deviceList"/>
<linearitem itemname="toolBar"/>
@@ -106,6 +106,7 @@
<uistate name="Common ui state" sections="#common"/>
<uistate name="landscape_ui" sections="#common landscape"/>
<uistate name="portrait_ui" sections="#common"/>
- <dummydata objectName="deviceList" section="#common" value="app_list_template5"/>
+ <uistate name="landscape" sections="#common landscape"/>
+ <dummydata objectName="deviceList" section="#common" value="0"/>
</metadata>
</hbdocument>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btui/btdevsettingframework/btdevsettingframework.pro Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,53 @@
+#
+# 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:
+#
+
+TEMPLATE = lib
+TARGET = btdevsettingframework
+
+MOC_DIR = moc
+DEFINES += BUILD_BTDEVSETTINGFRAMEWORK
+
+INCLUDEPATH += inc
+
+CONFIG += qt \
+ hb \
+ dll
+
+HEADERS += inc/btdevsettinginterface.h \
+ inc/btabstractdevsetting.h \
+ inc/btdevsettingpluginloader.h
+
+SOURCES += src/btabstractdevsetting.cpp \
+ src/btdevsettingpluginloader.cpp
+
+symbian: {
+ SYMBIAN_PLATFORMS = WINSCW \
+ ARMV5
+
+ BLD_INF_RULES.prj_exports += \
+ "$${LITERAL_HASH}include<platform_paths.hrh>" \
+ "inc/btdevsettingglobal.h MW_LAYER_PLATFORM_EXPORT_PATH(btdevsettingglobal.h)" \
+ "inc/btdevsettinginterface.h MW_LAYER_PLATFORM_EXPORT_PATH(btdevsettinginterface.h)" \
+ "inc/btabstractdevsetting.h MW_LAYER_PLATFORM_EXPORT_PATH(btabstractdevsetting.h)" \
+ "inc/btdevsettingpluginloader.h MW_LAYER_PLATFORM_EXPORT_PATH(btdevsettingpluginloader.h)" \
+ "rom/btdevsettingframework.iby CORE_MW_LAYER_IBY_EXPORT_PATH(btdevsettingframework.iby)"
+
+ TARGET.EPOCALLOWDLLDATA = 1
+ TARGET.UID3 = 0xEEEEEEEE
+ TARGET.CAPABILITY = CAP_GENERAL_DLL
+
+ INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btui/btdevsettingframework/inc/btabstractdevsetting.h Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,139 @@
+/*
+* 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: The plugin interface of Bluetooth device setting ui
+*
+*/
+
+#ifndef BTABSTRACTDEVSETTING_H
+#define BTABSTRACTDEVSETTING_H
+
+#include <hbwidget.h>
+#include <btdevsettingglobal.h>
+
+/*!
+ \class BtAbstractDevSetting
+ \brief The class BtAbstractDevSetting is the base class
+ for offering a UI to manage certain settings of
+ a remote Bluetooth device, e.g., accessory and keyboard settings.
+ */
+class BTDEVSETTINGINTERFACE_EXPORT BtAbstractDevSetting : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ /*!
+ Constructs a device setting plugin entry.
+
+ \param address the BD_ADDR of the remote device which this setting
+ plugin is provided for. Its format is XXXXXXXXXXXX, where X is a
+ hexadecimal digit. Case is insensitive.
+ \parent the parent of this object.
+ */
+ explicit BtAbstractDevSetting(const QString &address, QObject *parent = 0 );
+
+ /*!
+ Destructor of BtAbstractDeviceSetting.
+ */
+ virtual ~BtAbstractDevSetting();
+
+ /*!
+ Gets the BD_ADDR of the remote device which this setting
+ plugin is provided for.
+
+ \return the device address of the remote device in hex string
+ */
+ const QString &getRemote() const;
+
+ /*!
+ Tells if this setting plugin can provide a setting UI
+ for the target device. If the answer is true, this plugin may be
+ requested to create a setting widget by function
+ \code createSettingWidget() \endcode.
+
+ \return true if a setting is currently available. false, otherwise.
+
+ The default implementation returns false.
+ */
+ virtual bool isSettingAvailable();
+
+ /*!
+ Gets a \code HbWidget \endcode instance which consists of the
+ setting UI from this specific plugin. The loader of this plugin will
+ add this widget into its setting view if its setting is available at
+ a time.
+
+ The ownership of this widget is not transferred. That is, the plugin
+ is responsible to free it at plugin destruction.
+
+ The default implementation returns 0.
+
+ \return an \code HbWidget \endcode instance.
+ */
+ virtual HbWidget *getSettingWidget();
+
+ /*!
+ Informs that device setting is going to foreground. This
+ implies that the \code HbWidget \endcode from function
+ \code createSettingWidget \endcode will be shown if the setting
+ from this plugin is available.
+
+ The default implementation does nothing.
+ */
+ virtual void aboutToForeground();
+
+ /*!
+ Informs that device setting is going to background.
+
+ The default implementation does nothing.
+ */
+ virtual void aboutToBackground();
+
+ /*!
+ Informs that device setting is going to close.
+
+ The default implementation does nothing.
+ */
+ virtual void aboutToClose();
+
+signals:
+
+ /*!
+ The signal the plugin should emit for informing that the
+ availability of this setting is changed.
+
+ If the setting becomes available, the owner of this plugin may
+ request the plugin to create a setting widget.
+
+ If the setting becomes unavailable, the owner of this plugin may close and
+ destroy the setting widget.
+
+ \param setting the pointer of the setting whose status has changed.
+
+ \param available true if the setting is available; false otherwise.
+
+ \sa isSettingAvailable().
+ */
+ void settingAvailabilityChanged(BtAbstractDevSetting *setting, bool available);
+
+private:
+
+ /*!
+ The remote device address in format XXXXXXXXXXXX where X is a
+ hexadecimal digit.
+ */
+ QString mRemote;
+};
+
+#endif /* BTABSTRACTDEVSETTING_H */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btui/btdevsettingframework/inc/btdevsettingglobal.h Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,31 @@
+/*
+* 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:
+*
+*/
+
+#ifndef BTDEVSETTINGGLOBAL_H
+#define BTDEVSETTINGGLOBAL_H
+
+#include <QtGlobal>
+
+#ifdef BUILD_BTDEVSETTINGFRAMEWORK
+#define BTDEVSETTINGINTERFACE_EXPORT Q_DECL_EXPORT
+#else
+#define BTDEVSETTINGINTERFACE_EXPORT Q_DECL_IMPORT
+#endif
+
+#define BTDEVSETTING_PLUGIN_PATH QLatin1String("/resource/qt/plugins/btdevsetting")
+
+#endif /* BTDEVSETTINGGLOBAL_H */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btui/btdevsettingframework/inc/btdevsettinginterface.h Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,58 @@
+/*
+* 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: The plugin interface of Bluetooth device setting ui
+*
+*/
+
+#ifndef BTDEVSETTINGINTERFACE_H
+#define BTDEVSETTINGINTERFACE_H
+
+#include <QtPlugin>
+#include <btdevsettingglobal.h>
+#include <btabstractdevsetting.h>
+
+/*!
+ \class BtDeviceSettingInterface
+ \brief The class BtDeviceSettingInterface is an interface
+ for creating a BT device setting plugin instance.
+ */
+class BTDEVSETTINGINTERFACE_EXPORT BtDevSettingInterface
+{
+public:
+
+ /*!
+ Destructor of BtDeviceSettingPlugin.
+ */
+ virtual ~BtDevSettingInterface() {}
+
+ /*!
+ Creates a \code BtDeviceSettingPlugin \endcode instance from a
+ specific plugin.
+
+ \param address the BD_ADDR of the remote device which this setting
+ plugin is provided for. Its format is XXXXXXXXXXXX, where X is a
+ hexadecimal digit. Case is insensitive.
+
+ \parent the parent of this object.
+
+ \return an \code BtDeviceSettingPlugin \endcode instance the ownership of which is
+ transferred to the plugin loader.
+ */
+ virtual BtAbstractDevSetting *createDevSetting(
+ const QString &address, QObject *parent = 0) = 0;
+};
+
+Q_DECLARE_INTERFACE(BtDevSettingInterface, "com.nokia.bt.devsettinginterface/1.0");
+
+#endif /* BTDEVSETTINGINTERFACE_H */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btui/btdevsettingframework/inc/btdevsettingpluginloader.h Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,42 @@
+/*
+* 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:
+*
+*/
+
+#ifndef BTDEVSETTINGPLUGINLOADER_H
+#define BTDEVSETTINGPLUGINLOADER_H
+
+#include <QtGlobal>
+#include <btdevsettingglobal.h>
+#include <QList>
+
+class QString;
+class QStringList;
+class BtDevSettingInterface;
+
+class BTDEVSETTINGINTERFACE_EXPORT BtDevSettingPluginLoader
+{
+public:
+
+ /*!
+ Load all setting interfaces.
+
+ \return the list of plugin interface.
+ */
+ static QList<BtDevSettingInterface*> loadDevSettingInterfaces();
+
+};
+
+#endif /* BTDEVSETTINGPLUGINLOADER_H */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btui/btdevsettingframework/rom/btdevsettingframework.iby Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* 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:
+*
+*/
+#ifndef BTDEVSETTINGFRAMEWORK_IBY
+#define BTDEVSETTINGFRAMEWORK_IBY
+
+#include <data_caging_paths_for_iby.hrh>
+#include <bldvariant.hrh>
+#ifdef __BT
+
+file=ABI_DIR/BUILD_DIR/btdevsettingframework.dll SHARED_LIB_DIR/btdevsettingframework.dll
+
+#endif //__BT
+
+#endif // BTDEVSETTINGFRAMEWORK_IBY
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btui/btdevsettingframework/src/btabstractdevsetting.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,106 @@
+/*
+* 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: The plugin interface of Bluetooth device setting ui
+*
+*/
+
+#include <btabstractdevsetting.h>
+
+BtAbstractDevSetting::BtAbstractDevSetting(
+ const QString &address, QObject *parent)
+ : QObject( parent )
+{
+ mRemote = address;
+}
+
+/*!
+ Destructor of BtAbstractDevSetting.
+ */
+BtAbstractDevSetting::~BtAbstractDevSetting()
+{
+}
+
+/*!
+ Gets the BD_ADDR of the remote device which this setting
+ plugin is provided for.
+
+ \return the device address of the remote device in hex string
+ */
+const QString &BtAbstractDevSetting::getRemote() const
+{
+ return mRemote;
+}
+
+/*!
+ Tells if this setting plugin can provide a setting UI
+ for the target device. If the answer is true, this plugin may be
+ requested to create a setting widget by function
+ \code createSettingWidget() \endcode.
+
+ \return true if a setting is currently available. false, otherwise.
+
+ The default implementation returns false.
+ */
+bool BtAbstractDevSetting::isSettingAvailable()
+{
+ return false;
+}
+
+/*!
+ Gets a \code HbWidget \endcode instance which consists of the
+ setting UI from this specific plugin. The loader of this plugin will
+ add this widget into its setting view if its setting is available at
+ a time.
+
+ The ownership of this widget is not transferred. That is, the plugin
+ is responsible to free it at plugin destruction.
+
+ The default implementation returns 0.
+
+ \return an \code HbWidget \endcode instance.
+ */
+HbWidget *BtAbstractDevSetting::getSettingWidget()
+{
+ return 0;
+}
+
+/*!
+ Informs that device setting is going to foreground. This
+ implies that the \code HbWidget \endcode from function
+ \code createSettingWidget \endcode will be shown if the setting
+ from this plugin is available.
+
+ The default implementation does nothing.
+ */
+void BtAbstractDevSetting::aboutToForeground()
+{
+}
+
+/*!
+ Informs that device setting is going to background.
+
+ The default implementation does nothing.
+ */
+void BtAbstractDevSetting::aboutToBackground()
+{
+}
+
+/*!
+ Informs that device setting is going to close.
+
+ The default implementation does nothing.
+ */
+void BtAbstractDevSetting::aboutToClose()
+{
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btui/btdevsettingframework/src/btdevsettingpluginloader.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,110 @@
+/*
+* 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:
+*
+*/
+#include <btdevsettingpluginloader.h>
+#include <QString>
+#include <QDir>
+#include <QFileInfo>
+#include <QPluginLoader>
+#include <btdevsettinginterface.h>
+#include <btdevsettingglobal.h>
+
+/*!
+ \class BtDevSettingPluginLoader
+ \brief The BtDevSettingPluginLoader class loads BT device setting plugins.
+ */
+
+#ifdef WIN32
+ #define PLUGINFILE_SUFFIX "dll"
+#else
+ #define PLUGINFILE_SUFFIX "qtplugin"
+#endif
+
+
+static QStringList getDrives()
+{
+ static QStringList drives;
+ if (drives.empty()) {
+#ifdef WIN32
+ drives.append("C:");
+#else
+ QFileInfoList fileInfoList = QDir::drives();
+ foreach(const QFileInfo &fileInfo,fileInfoList) {
+ QString str = fileInfo.filePath();
+ if (str.length() > 2) {
+ str = str.left(2);
+ }
+ drives.append(str);
+ }
+#endif
+ }
+ return drives;
+}
+
+static QStringList directoriesFromAllDrives(const QString &baseDir)
+{
+ QStringList dirs;
+ QStringList drives = getDrives();
+ foreach(const QString &drive,drives) {
+ QString dir = drive + baseDir + QDir::separator();
+ if (QFileInfo(dir).exists()) {
+ dirs.append(dir);
+ }
+ }
+ return dirs;
+}
+
+static BtDevSettingInterface* loadPluginInterface(const QFileInfo &pluginFile)
+{
+ QPluginLoader loader(pluginFile.absoluteFilePath());
+ BtDevSettingInterface *plugin =
+ qobject_cast<BtDevSettingInterface*> (loader.instance());
+ if (!plugin) {
+ loader.unload();
+ }
+ return plugin;
+}
+
+/*!
+ Load all setting interfaces.
+
+ \return the list of plugin interface.
+ */
+QList<BtDevSettingInterface*> BtDevSettingPluginLoader::loadDevSettingInterfaces()
+{
+ QList<BtDevSettingInterface*> interfaces;
+
+ static QStringList pluginDirs;
+ if (pluginDirs.empty()) {
+ pluginDirs = directoriesFromAllDrives(BTDEVSETTING_PLUGIN_PATH);
+ }
+ foreach(const QString &dirStr,pluginDirs) {
+ QDir pluginDir( dirStr );
+ QFileInfoList fileInfoList = pluginDir.entryInfoList( QDir::Files );
+ foreach(const QFileInfo &fileInfo,fileInfoList) {
+ int diff = fileInfo.suffix().compare(PLUGINFILE_SUFFIX,Qt::CaseInsensitive);
+ if (!diff) {
+ BtDevSettingInterface* settingIf = loadPluginInterface(fileInfo);
+ if ( settingIf ) {
+ interfaces.append( settingIf );
+ }
+ }
+ }
+ }
+
+ return interfaces;
+}
+
--- a/bluetoothengine/btui/btui.pro Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btui.pro Wed Jun 23 18:23:52 2010 +0300
@@ -19,16 +19,19 @@
# Directories
SUBDIRS += btuimodel \
+btdevsettingframework \
btuidelegate \
-btcpplugin \
-tsrc
+btcpplugin
CONFIG += ordered
symbian: {
SYMBIAN_PLATFORMS = WINSCW \
ARMV5
- BLD_INF_RULES.prj_exports += \
+ BLD_INF_RULES.PRJ_EXPORTS += \
"$${LITERAL_HASH}include<platform_paths.hrh>" \
- "rom/btui.iby CORE_MW_LAYER_IBY_EXPORT_PATH(btui.iby)"
+ "rom/btui.iby CORE_MW_LAYER_IBY_EXPORT_PATH(btui.iby)" \
+ "rom/btui_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(btui_resources.iby)" \
+ "inc/btuiiconutil.h MW_LAYER_PLATFORM_EXPORT_PATH(btservices/btuiiconutil.h)" \
+ "inc/btuidevtypemap.h MW_LAYER_PLATFORM_EXPORT_PATH(btservices/btuidevtypemap.h)"
}
\ No newline at end of file
--- a/bluetoothengine/btui/btuidelegate/btabstractdelegate.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuidelegate/btabstractdelegate.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -17,6 +17,8 @@
#include "btabstractdelegate.h"
+#include "btqtconstants.h"
+
#include <btsettingmodel.h>
#include <btdevicemodel.h>
@@ -51,3 +53,13 @@
}
+bool BtAbstractDelegate::isBtPowerOn()
+{
+ QModelIndex powerIndex = getSettingModel()->index(BtSettingModel::PowerStateRow, 0);
+ PowerStateQtValue powerState = (PowerStateQtValue)getSettingModel()->data(powerIndex, BtSettingModel::SettingValueRole).toInt();
+
+ return (BtPowerOn == powerState);
+}
+
+
+
--- a/bluetoothengine/btui/btuidelegate/btabstractdelegate.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuidelegate/btabstractdelegate.h Wed Jun 23 18:23:52 2010 +0300
@@ -61,6 +61,8 @@
BtSettingModel *getSettingModel();
BtDeviceModel *getDeviceModel();
+ bool isBtPowerOn();
+
public slots:
private:
--- a/bluetoothengine/btui/btuidelegate/btdelegateInquiry.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuidelegate/btdelegateInquiry.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -17,6 +17,9 @@
#include "btdelegateinquiry.h"
+#include "btdelegatefactory.h"
+#include "btqtconstants.h"
+
#include <btsettingmodel.h>
#include <btdevicemodel.h>
#include <bluetoothuitrace.h>
@@ -27,6 +30,7 @@
BtDeviceModel* deviceModel, QObject* parent )
:BtAbstractDelegate( settingModel, deviceModel, parent )
{
+ mAbstractDelegate = NULL;
}
BtDelegateInquiry::~BtDelegateInquiry()
@@ -38,6 +42,39 @@
{
Q_UNUSED(params);
+ if(isBtPowerOn()) {
+ exec_inquiry();
+ }
+ else {
+ //If Bt Power is off, switch it on and then perform pairing.
+ //todo: Do we ask for user confirmation here..?
+ if (!mAbstractDelegate) {
+ mAbstractDelegate = BtDelegateFactory::newDelegate(BtDelegate::ManagePower,
+ getSettingModel(), getDeviceModel() );
+ connect( mAbstractDelegate, SIGNAL(commandCompleted(int)), this, SLOT(powerDelegateCompleted(int)) );
+ mAbstractDelegate->exec(QVariant(BtPowerOn));
+ }
+ }
+}
+
+void BtDelegateInquiry::powerDelegateCompleted(int error)
+{
+ if (mAbstractDelegate) {
+ disconnect(mAbstractDelegate);
+ delete mAbstractDelegate;
+ mAbstractDelegate = 0;
+ }
+ if ( error == KErrNone ) {
+ exec_inquiry();
+ }
+ else {
+ // error
+ emit commandCompleted(error);
+ }
+}
+
+void BtDelegateInquiry::exec_inquiry()
+{
bool err = getDeviceModel()->searchDevice();
if (!err) {
// TODO - Verify the error code to be used.
--- a/bluetoothengine/btui/btuidelegate/btdelegateInquiry.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuidelegate/btdelegateInquiry.h Wed Jun 23 18:23:52 2010 +0300
@@ -42,7 +42,15 @@
virtual void cancel();
+public slots:
+ void powerDelegateCompleted(int error);
+
private:
+ void exec_inquiry();
+
+private:
+ BtAbstractDelegate* mAbstractDelegate;
+
};
#endif /* BTDELEGATEINQUIRY_H_ */
--- a/bluetoothengine/btui/btuidelegate/btdelegateconnect.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuidelegate/btdelegateconnect.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -16,15 +16,25 @@
*/
#include "btdelegateconnect.h"
+#include "btuiutil.h"
+#include "btqtconstants.h"
#include <QModelIndex>
+#include <hblabel.h>
#include <btsettingmodel.h>
#include <btdevicemodel.h>
#include <hbnotificationdialog.h>
+#include <hbmessagebox.h>
+#include "btuiiconutil.h"
+#include "btdelegatefactory.h"
+#include <bluetoothuitrace.h>
+#include <e32property.h>
+#include <ctsydomainpskeys.h>
BtDelegateConnect::BtDelegateConnect(
BtSettingModel* settingModel,
BtDeviceModel* deviceModel, QObject *parent) :
- BtAbstractDelegate(settingModel, deviceModel, parent), mBtengConnMan(0)
+ BtAbstractDelegate(settingModel, deviceModel, parent), mBtengConnMan(0),
+ mAbstractDelegate(0), mActiveHandling(false)
{
}
@@ -36,46 +46,179 @@
void BtDelegateConnect::exec( const QVariant ¶ms )
{
- int error = KErrNone;
- QModelIndex index = params.value<QModelIndex>();
+ if ( mActiveHandling ) {
+ emit commandCompleted( KErrAlreadyExists );
+ return;
+ }
+ mIndex = params.value<QModelIndex>();
+ mActiveHandling = true;
+ // save needed values from model
+ mDeviceName = (mIndex.data(BtDeviceModel::NameAliasRole)).toString();
+ QString addrStr = (mIndex.data(BtDeviceModel::ReadableBdaddrRole)).toString();
+ addrReadbleStringToSymbian( addrStr, mAddr );
+
+ mCod = (mIndex.data(BtDeviceModel::CoDRole)).toInt();
+ mMajorProperty = (mIndex.data(BtDeviceModel::MajorPropertyRole)).toInt();
- mdeviceName = getDeviceModel()->data(index,BtDeviceModel::NameAliasRole).toString();
-
- QString strBtAddr = getDeviceModel()->data(index,
- BtDeviceModel::ReadableBdaddrRole).toString();
- int cod = getDeviceModel()->data(index,BtDeviceModel::CoDRole).toInt();
+ // first turn on power if needed
+ QModelIndex powerIndex = getSettingModel()->index(BtSettingModel::PowerStateRow, 0);
+ PowerStateQtValue powerState = (PowerStateQtValue)getSettingModel()->data(powerIndex, Qt::EditRole).toInt();
+ if (powerState == BtPowerOff) {
+ if (!mAbstractDelegate) //if there is no other delegate running
+ {
+ mAbstractDelegate = BtDelegateFactory::newDelegate(BtDelegate::ManagePower,
+ getSettingModel(), getDeviceModel() );
+ connect( mAbstractDelegate, SIGNAL(commandCompleted(int)), this, SLOT(powerDelegateCompleted(int)) );
+ mAbstractDelegate->exec(QVariant(BtPowerOn));
+ }
+ }
+ else {
+ // power is already on
+ exec_connect();
+ }
+}
+
+void BtDelegateConnect::powerDelegateCompleted(int status)
+{
+ //ToDo: Error handling here
+ if (mAbstractDelegate)
+ {
+ disconnect(mAbstractDelegate);
+ delete mAbstractDelegate;
+ mAbstractDelegate = 0;
+ }
+ if ( status == KErrNone ) {
+ // continue connecting
+ exec_connect();
+ }
+ else {
+ // error
+ emitCommandComplete(status);
+ }
+}
+
+void BtDelegateConnect::exec_connect()
+{
+ int error = KErrNone;
if ( ! mBtengConnMan ){
- TRAP_IGNORE( mBtengConnMan = CBTEngConnMan::NewL(this) );
+ TRAP( error, mBtengConnMan = CBTEngConnMan::NewL(this) );
}
- Q_CHECK_PTR( mBtengConnMan );
-
- TBTDeviceClass btEngDeviceClass(cod);
- TPtrC ptrName(reinterpret_cast<const TText*>(strBtAddr.constData()));
-
- RBuf16 btName;
- error = btName.Create(ptrName.Length());
-
- if(error == KErrNone) {
- btName.Copy(ptrName);
- mBtEngddr.SetReadable(btName);
- error = mBtengConnMan->Connect(mBtEngddr, btEngDeviceClass);
- btName.Close();
+
+ if ( !error ) {
+ TBTDeviceClass btEngDeviceClass(mCod);
+ error = mBtengConnMan->Connect(mAddr, btEngDeviceClass);
}
-
- if(error) {
+ if( error ) {
emitCommandComplete(error);
}
-
}
void BtDelegateConnect::ConnectComplete( TBTDevAddr& aAddr, TInt aErr,
RBTDevAddrArray* aConflicts )
{
- Q_UNUSED(aAddr);
- Q_UNUSED(aConflicts);
- emitCommandComplete(aErr);
+ // It is possible that another audio device has just connected to phone when we are
+ // connecting to this audio device. Or a device is connected while this command
+ // is idle. No handling for these cases.
+ if ( mAddr != aAddr || !mActiveHandling ) {
+ return;
+ }
+
+ // bteng calls ConnectComplete even if cancelConnect is called,
+ // we won't signal the interested party in this case.
+ // ToDo: is this needed?
+ if ( aErr == KErrCancel ) {
+ mActiveHandling = false;
+ return;
+ }
+
+ // conflict could occur as well if another audio device is already connected
+ // since currently we don't support multiple audio device connections.
+ if ( aErr && aConflicts && aConflicts->Count() ) {
+ // get the display name of the device that is
+ // causing the conflict
+ QString conflictDevAddr;
+ addrSymbianToReadbleString(conflictDevAddr, (*aConflicts)[0] );
+ QModelIndex start = getDeviceModel()->index(0,0);
+ QModelIndexList indexList = getDeviceModel()->match(start, BtDeviceModel::ReadableBdaddrRole, conflictDevAddr);
+ BTUI_ASSERT_X(indexList.count(), "BtDelegateConnect::ConnectComplete()", "device missing from model!");
+ mConflictDevIndex = indexList.at(0);
+
+ // check if conflict device is being used in a call
+ // Note: actually only checking if *any* audio device is involved in a call, not necessarily the
+ // one we are concerned with here. Btaudioman does not currently support finding out the actual
+ // device involved in a call.
+ if (callOngoing()) {
+ HbMessageBox::warning(hbTrId("txt_bt_info_not_possible_during_a_call"));
+ emitCommandComplete(KErrCancel);
+ }
+ else {
+ // no call, check if user wants to disconnect conflict device
+ QString conflictDevName = (mConflictDevIndex.data(BtDeviceModel::NameAliasRole)).toString();
+
+ QString questionText(hbTrId("txt_bt_info_to_connect_1_2_needs_to_be_disconnec")
+ .arg(mDeviceName).arg(conflictDevName));
+
+ HbMessageBox::question( questionText, this, SLOT(handleUserAnswer(HbAction*)),
+ hbTrId("txt_common_button_continue"), hbTrId("txt_common_button_cancel") );
+ }
+ }
+ else {
+ // command is finished
+ emitCommandComplete(aErr);
+ }
+}
+
+void BtDelegateConnect::handleUserAnswer( HbAction* answer )
+{
+ HbMessageBox* dlg = static_cast<HbMessageBox*>( sender() );
+ if( dlg->actions().first() == answer ) {
+ // Continue, ie. disconnect conflict device and then try reconnecting again
+ if (!mAbstractDelegate) //if there is no other delegate running
+ {
+ QList<QVariant>list;
+ QVariant paramFirst;
+ paramFirst.setValue(mConflictDevIndex);
+ QVariant paramSecond(ServiceLevel);
+ list.append(paramFirst);
+ list.append(paramSecond);
+ QVariant paramsList(list);
+ mAbstractDelegate = BtDelegateFactory::newDelegate(BtDelegate::Disconnect,
+ getSettingModel(), getDeviceModel() );
+ connect( mAbstractDelegate, SIGNAL(commandCompleted(int)), this, SLOT(disconnectDelegateCompleted(int)) );
+ mAbstractDelegate->exec(paramsList);
+ }
+ }
+ else {
+ // Cancel
+ emitCommandComplete(KErrCancel);
+ }
+}
+/*!
+ * returns true if call is ongoing
+ */
+bool BtDelegateConnect::callOngoing()
+{
+ int callState;
+ int err = RProperty::Get(KPSUidCtsyCallInformation, KCTsyCallState, callState);
+ if (!err && (callState == EPSCTsyCallStateNone || callState == EPSCTsyCallStateUninitialized)) {
+ return false;
+ }
+ else {
+ return true;
+ }
+}
+void BtDelegateConnect::disconnectDelegateCompleted(int status)
+{
+ // finished disconnecting conflict device, now reconnect to original device
+ if ( status == KErrNone ) {
+ exec_connect();
+ }
+ else {
+ // disconnect failed, abort
+ emitCommandComplete( status );
+ }
}
void BtDelegateConnect::DisconnectComplete( TBTDevAddr& aAddr, TInt aErr )
@@ -84,29 +227,35 @@
Q_UNUSED(aErr);
}
-void BtDelegateConnect::PairingComplete( TBTDevAddr& aAddr, TInt aErr )
-{
- Q_UNUSED(aAddr);
- Q_UNUSED(aErr);
-}
void BtDelegateConnect::cancel()
{
- mBtengConnMan->CancelConnect(mBtEngddr);
+ if ( mBtengConnMan ) {
+ mBtengConnMan->CancelConnect(mAddr);
+ }
}
void BtDelegateConnect::emitCommandComplete(int error)
{
- QString str(hbTrId("Connected to %1"));
- QString err(hbTrId("Connecting with %1 Failed"));
-
- if(error != KErrNone) {
- HbNotificationDialog::launchDialog(err.arg(mdeviceName));
+ if ( error == KErrNone ) {
+ // success, show indicator with connection status
+
+ HbIcon icon = getBadgedDeviceTypeIcon( mCod, mMajorProperty, 0); // no badging required, only icon
+ QString str(hbTrId("txt_bt_dpopinfo_connected_to_1"));
+ HbNotificationDialog::launchDialog( icon, hbTrId("txt_bt_dpophead_connected"),
+ str.arg(mDeviceName) );
+ }
+ else if ( error == KErrCancel ) {
+ // no user note, return success
+ error = KErrNone;
}
else {
- HbNotificationDialog::launchDialog(str.arg(mdeviceName));
+ // failure to connect, show user note
+ QString err(hbTrId("txt_bt_info_unable_to_connect_with_bluetooth"));
+ HbMessageBox::warning(err.arg(mDeviceName));
}
-
+ mActiveHandling = false;
+
emit commandCompleted(error);
}
--- a/bluetoothengine/btui/btuidelegate/btdelegateconnect.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuidelegate/btdelegateconnect.h Wed Jun 23 18:23:52 2010 +0300
@@ -15,12 +15,13 @@
*
*/
-#ifndef BTDELEGATECONNECT_H_
-#define BTDELEGATECONNECT_H_
+#ifndef BTDELEGATECONNECT_H
+#define BTDELEGATECONNECT_H
#include <e32base.h>
#include <btengconnman.h>
#include "btabstractdelegate.h"
+#include <hbaction.h>
class BtuiModel;
@@ -40,33 +41,42 @@
QObject *parent = 0 );
virtual ~BtDelegateConnect();
-
virtual void exec( const QVariant ¶ms );
-
virtual void cancel();
public slots:
+
protected:
//From MBTEngConnObserver
virtual void ConnectComplete( TBTDevAddr& aAddr, TInt aErr,
RBTDevAddrArray* aConflicts );
virtual void DisconnectComplete( TBTDevAddr& aAddr, TInt aErr );
- virtual void PairingComplete( TBTDevAddr& aAddr, TInt aErr );
-
- void emitCommandComplete(int error);
+
+private slots:
+ void handleUserAnswer( HbAction* answer );
+ void powerDelegateCompleted(int status);
+ void disconnectDelegateCompleted(int status);
private:
-
+ void exec_connect();
+ void emitCommandComplete(int error);
+ bool callOngoing();
+
+private:
+ QModelIndex mIndex;
+ QModelIndex mConflictDevIndex;
CBTEngConnMan *mBtengConnMan;
-
- TBTDevAddr mBtEngddr;
-
- QString mdeviceName;
+ QString mDeviceName;
+ int mMajorProperty;
+ int mCod;
+ BtAbstractDelegate* mAbstractDelegate;
+ bool mActiveHandling;
+ TBTDevAddr mAddr;
Q_DISABLE_COPY(BtDelegateConnect)
};
-#endif /* BTDELEGATECONNECT_H_ */
+#endif /* BTDELEGATECONNECT_H */
--- a/bluetoothengine/btui/btuidelegate/btdelegateconsts.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuidelegate/btdelegateconsts.h Wed Jun 23 18:23:52 2010 +0300
@@ -33,6 +33,7 @@
Pair,
Disconnect,
Unpair,
+ RemoteDevName
};
}
--- a/bluetoothengine/btui/btuidelegate/btdelegatedevsecurity.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuidelegate/btdelegatedevsecurity.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -17,16 +17,18 @@
#include <QModelIndex>
+#include "btqtconstants.h"
#include "btdelegatedevsecurity.h"
#include <btsettingmodel.h>
#include <btdevicemodel.h>
+#include <btdelegatefactory.h>
#include <hbnotificationdialog.h>
BtDelegateDevSecurity::BtDelegateDevSecurity(
BtSettingModel* settingModel,
BtDeviceModel* deviceModel,
QObject *parent) :
- BtAbstractDelegate(settingModel, deviceModel, parent), mBtEngDevMan(0)
+ BtAbstractDelegate(settingModel, deviceModel, parent), mBtEngDevMan(0), mBtengConnMan(0), mDisconnectDelegate(0)
{
}
@@ -34,6 +36,8 @@
BtDelegateDevSecurity::~BtDelegateDevSecurity()
{
delete mBtEngDevMan;
+ delete mBtengConnMan;
+ delete mDisconnectDelegate;
}
@@ -50,7 +54,35 @@
TBTDevAddr symaddr;
TBuf<KBTDevAddrSize * 2> buffer(strBtAddr.utf16());
symaddr.SetReadable( buffer );
+
+ // Disconnect if paired device was connected
+ if ( ! mBtengConnMan ){
+ TRAP( error, mBtengConnMan = CBTEngConnMan::NewL(this) );
+ }
+ TBTEngConnectionStatus connstatus;
+ if ( !error && mBtengConnMan->IsConnected(symaddr, connstatus ) == KErrNone) {
+ if ( connstatus == EBTEngConnected) {
+ if (! mDisconnectDelegate){
+ mDisconnectDelegate = BtDelegateFactory::newDelegate(
+ BtDelegate::Disconnect, getSettingModel(), getDeviceModel());
+ connect( mDisconnectDelegate, SIGNAL(commandCompleted(int)), this, SLOT(disconnectDelegateCompleted(int)) );
+
+ }
+ QList<QVariant>list;
+ QVariant paramFirst;
+ paramFirst.setValue(index);
+ QVariant paramSecond;
+ DisconnectOption discoOpt = ServiceLevel;
+ paramSecond.setValue((int)discoOpt);
+ list.append(paramFirst);
+ list.append(paramSecond);
+ QVariant paramsList;
+ paramsList.setValue(list);
+ mDisconnectDelegate->exec(paramsList);
+ }
+ }
+ // Set device as unpaired
CBTDevice *symBtDevice = 0;
TRAP( error, {
symBtDevice = CBTDevice::NewL( symaddr );
@@ -78,6 +110,11 @@
}
+void BtDelegateDevSecurity::disconnectDelegateCompleted( int err )
+{
+ Q_UNUSED(err);
+}
+
void BtDelegateDevSecurity::HandleDevManComplete( TInt aErr )
{
emitCommandComplete(aErr);
@@ -104,6 +141,19 @@
emit commandCompleted(error);
}
+void BtDelegateDevSecurity::ConnectComplete( TBTDevAddr& aAddr, TInt aErr,
+ RBTDevAddrArray* aConflicts )
+{
+ Q_UNUSED(aAddr);
+ Q_UNUSED(aErr);
+ Q_UNUSED(aConflicts);
+}
+
+void BtDelegateDevSecurity::DisconnectComplete( TBTDevAddr& aAddr, TInt aErr )
+{
+ Q_UNUSED(aAddr);
+ Q_UNUSED(aErr);
+}
--- a/bluetoothengine/btui/btuidelegate/btdelegatedevsecurity.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuidelegate/btdelegatedevsecurity.h Wed Jun 23 18:23:52 2010 +0300
@@ -21,16 +21,17 @@
#include <e32base.h>
#include <btengconnman.h>
#include <btengdevman.h>
+#include <btengconnman.h>
#include "btabstractdelegate.h"
class BtuiModel;
/*!
- \class BtDelegateDisconnect
- \brief the base class for Disconnecting Bluetooth Connection.
+ \class BtDelegateDevSecurity
+ \brief the base class for Unpairing Bluetooth Connection.
*/
class BtDelegateDevSecurity : public BtAbstractDelegate,
- public MBTEngDevManObserver
+ public MBTEngDevManObserver, public MBTEngConnObserver
{
Q_OBJECT
@@ -47,19 +48,25 @@
virtual void cancel();
public slots:
+ void disconnectDelegateCompleted(int err);
protected:
//From MBTEngDevManObserver
virtual void HandleDevManComplete( TInt aErr );
virtual void HandleGetDevicesComplete( TInt aErr, CBTDeviceArray* aDeviceArray );
-
+ //From MBTEngConnObserver
+ virtual void ConnectComplete( TBTDevAddr& aAddr, TInt aErr,
+ RBTDevAddrArray* aConflicts );
+ virtual void DisconnectComplete( TBTDevAddr& aAddr, TInt aErr );
+
void emitCommandComplete(int error);
private:
CBTEngDevMan *mBtEngDevMan;
-
QString mdeviceName;
+ CBTEngConnMan *mBtengConnMan;
+ BtAbstractDelegate* mDisconnectDelegate;
Q_DISABLE_COPY(BtDelegateDevSecurity)
--- a/bluetoothengine/btui/btuidelegate/btdelegatedisconnect.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuidelegate/btdelegatedisconnect.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -15,7 +15,10 @@
*
*/
#include "btdelegatedisconnect.h"
+#include "btuiutil.h"
+#include "btuiiconutil.h"
#include <QModelIndex>
+#include <hblabel.h>
#include <btsettingmodel.h>
#include <btdevicemodel.h>
#include <hbnotificationdialog.h>
@@ -23,7 +26,8 @@
BtDelegateDisconnect::BtDelegateDisconnect(
BtSettingModel* settingModel,
BtDeviceModel* deviceModel, QObject *parent) :
- BtAbstractDelegate(settingModel, deviceModel, parent), mBtengConnMan(0)
+ BtAbstractDelegate(settingModel, deviceModel, parent), mBtengConnMan(0), mPhyLinks(0),
+ mMajorRole(0), mActiveHandling(false), mAddrArrayIndex(0), mDisconOpt(DisconUnknown)
{
}
@@ -31,41 +35,174 @@
BtDelegateDisconnect::~BtDelegateDisconnect()
{
delete mBtengConnMan;
+ delete mPhyLinks;
+ mSocketServ.Close();
}
void BtDelegateDisconnect::exec( const QVariant ¶ms )
{
- int error = KErrNone;
- QModelIndex index = params.value<QModelIndex>();
-
- mdeviceName = getDeviceModel()->data(index,BtDeviceModel::NameAliasRole).toString();
-
- QString strBtAddr = getDeviceModel()->data(index,BtDeviceModel::ReadableBdaddrRole).toString();
-
+ int err;
if ( ! mBtengConnMan ){
- TRAP_IGNORE( mBtengConnMan = CBTEngConnMan::NewL(this) );
+ TRAP( err, mBtengConnMan = CBTEngConnMan::NewL(this) );
+ }
+ if (params.canConvert<int>()){
+ mDisconOpt = (DisconnectOption)params.toInt();
+ mActiveHandling = true;
+
+ if (mDisconOpt == AllOngoingConnections){
+ err = mBtengConnMan->GetConnectedAddresses(mDevAddrArray);
+ disconnectAllConnections_service();
+ }
+ if(err) {
+ emit commandCompleted(err);
+ }
}
- Q_CHECK_PTR( mBtengConnMan );
-
- TPtrC ptrName(reinterpret_cast<const TText*>(strBtAddr.constData()));
+ else{
+ QList<QVariant> paramList = params.value< QList<QVariant> >();
+ QVariant indexVariant = paramList.at(0);
+ QModelIndex index = indexVariant.value<QModelIndex>();
+ QVariant optionVariant = paramList.at(1);
+ mDisconOpt = (DisconnectOption)optionVariant.toInt();
+ int error = KErrNone;
+
+ mActiveHandling = true;
+ mDeviceName = getDeviceModel()->data(index,BtDeviceModel::NameAliasRole).toString();
+ mMajorRole = (index.data(BtDeviceModel::MajorPropertyRole)).toInt();
+
+ QString strBtAddr = getDeviceModel()->data(index,BtDeviceModel::ReadableBdaddrRole).toString();
+
+ // todo: address converting should be simplified. check other delegates for example.
+
+ TPtrC ptrName(reinterpret_cast<const TText*>(strBtAddr.constData()));
+
+ RBuf16 btName;
+ error = btName.Create(ptrName.Length());
+
+ if(error == KErrNone) {
+ btName.Copy(ptrName);
+ mBtEngAddr.SetReadable(btName);
+ if (mDisconOpt == ServiceLevel){
+ disconnectSeviceLevel();
+ }
+ else if (mDisconOpt == PhysicalLink){
+ disconnectPhysicalLink();
+ }
+ }
+ btName.Close();
- RBuf16 btName;
- error = btName.Create(ptrName.Length());
+ if(error) {
+ emit commandCompleted(error);
+ }
+ }
+}
+
+
+void BtDelegateDisconnect::disconnectAllConnections_service(){
+
+ TBuf<KBTDevAddrSize*3> addrBuf;
+ mDevAddrArray[mAddrArrayIndex].GetReadable(addrBuf);
+ QString btStringAddr= QString::fromUtf16( addrBuf.Ptr(), addrBuf.Length());
+ QModelIndex start = getDeviceModel()->index(0,0);
+ QModelIndexList indexList = getDeviceModel()->match(start,BtDeviceModel::ReadableBdaddrRole, btStringAddr);
+ QModelIndex index = indexList.at(0);
+
+ mDeviceName = getDeviceModel()->data(index,BtDeviceModel::NameAliasRole).toString();
+ mBtEngAddr = mDevAddrArray[mAddrArrayIndex];
+ mMajorRole = (index.data(BtDeviceModel::MajorPropertyRole)).toInt();
+
+ disconnectSeviceLevel();
+}
+
+void BtDelegateDisconnect::disconnectAllConnections_physical(){
- if(error == KErrNone) {
- btName.Copy(ptrName);
- mBtEngddr.SetReadable(btName);
- error = mBtengConnMan->Disconnect(mBtEngddr, EBTDiscGraceful);
- btName.Close();
+ TBuf<KBTDevAddrSize*3> addrBuf;
+ mDevAddrArray[mAddrArrayIndex].GetReadable(addrBuf);
+ QString btStringAddr= QString::fromUtf16( addrBuf.Ptr(), addrBuf.Length());
+ QModelIndex start = getDeviceModel()->index(0,0);
+ QModelIndexList indexList = getDeviceModel()->match(start,BtDeviceModel::ReadableBdaddrRole, btStringAddr);
+ QModelIndex index = indexList.at(0);
+
+ mDeviceName = getDeviceModel()->data(index,BtDeviceModel::NameAliasRole).toString();
+ mBtEngAddr = mDevAddrArray[mAddrArrayIndex];
+
+ disconnectPhysicalLink();
+
+}
+void BtDelegateDisconnect::disconnectSeviceLevel(){
+ int err;
+ TBTEngConnectionStatus connStatus;
+ err = mBtengConnMan->IsConnected(mBtEngAddr, connStatus);
+ if (connStatus == EBTEngConnected){
+ err = mBtengConnMan->Disconnect(mBtEngAddr, EBTDiscGraceful);
}
-
-
- if(error) {
- emitCommandComplete(error);
+ if(err) {
+ emit commandCompleted(err);
+ }
+}
+
+void BtDelegateDisconnect::disconnectPhysicalLink(){
+ int err;
+ if ( !mSocketServ.Handle() ) {
+ err = mSocketServ.Connect();
+ }
+ if ( !err && !mPhyLinks ) {
+ TRAP( err,
+ mPhyLinks = CBluetoothPhysicalLinks::NewL( *this, mSocketServ ) );
+ Q_CHECK_PTR( mPhyLinks );
+ }
+ err = mPhyLinks->Disconnect( mBtEngAddr );
+ if(err) {
+ emit commandCompleted(err);
}
}
+void BtDelegateDisconnect::disconnectServiceLevelCompleted(int err){
+ if (mDisconOpt == ServiceLevel){
+ //emitCommandComplete(err);
+ mActiveHandling = false;
+ emit commandCompleted(err);
+ }
+ else if (mDisconOpt == AllOngoingConnections){
+
+ mAddrArrayIndex++;
+ if ( mAddrArrayIndex < mDevAddrArray.Count()){
+ disconnectAllConnections_service();
+ }
+ else{
+ mDevAddrArray.Reset();
+ err = mBtengConnMan->GetConnectedAddresses(mDevAddrArray);
+ mAddrArrayIndex = 0;
+ //connect( mDisconnectDelegate, SIGNAL(commandCompleted(int)), this, SLOT(disconnectPhysicalLinkCompleted(int)) );
+ disconnectAllConnections_physical();
+ if(err) {
+ emit commandCompleted(err);
+ }
+
+ }
+ }
+}
+
+void BtDelegateDisconnect::disconnectPhysicalLinkCompleted(int err){
+ if (mDisconOpt == PhysicalLink){
+ //emitCommandComplete(err);
+ mActiveHandling = false;
+ emit commandCompleted(err);
+ }
+ else if (mDisconOpt == AllOngoingConnections){
+ mAddrArrayIndex++;
+ if ( mAddrArrayIndex < mDevAddrArray.Count()){
+ disconnectAllConnections_physical();
+ }
+ else{
+ //TODO: check if there is still ongoing connection from BTEngVonnMan. and close them again if there is any new
+ mActiveHandling = false;
+ emit commandCompleted(err);
+ }
+
+ }
+
+}
void BtDelegateDisconnect::ConnectComplete( TBTDevAddr& aAddr, TInt aErr,
RBTDevAddrArray* aConflicts )
{
@@ -76,34 +213,61 @@
void BtDelegateDisconnect::DisconnectComplete( TBTDevAddr& aAddr, TInt aErr )
{
- Q_UNUSED(aAddr);
- emitCommandComplete(aErr);
+ if ( mBtEngAddr != aAddr || !mActiveHandling ) {
+ return;
+ }
+ DisplayCommandCompleteNotif(aErr);
+ if(aErr) {
+ emit commandCompleted(aErr);
+ }
+ else{
+ disconnectServiceLevelCompleted(aErr);
+ }
}
-void BtDelegateDisconnect::PairingComplete( TBTDevAddr& aAddr, TInt aErr )
-{
- Q_UNUSED(aAddr);
- Q_UNUSED(aErr);
-}
void BtDelegateDisconnect::cancel()
{
}
-void BtDelegateDisconnect::emitCommandComplete(int error)
+void BtDelegateDisconnect::HandleCreateConnectionCompleteL( TInt err ){
+ Q_UNUSED( err );
+}
+
+void BtDelegateDisconnect::HandleDisconnectCompleteL( TInt err ){
+ if ( !mActiveHandling ) {
+ return;
+ }
+ if(err) {
+ emit commandCompleted(err);
+ }
+ else{
+ disconnectPhysicalLinkCompleted(err);
+ }
+
+}
+
+void BtDelegateDisconnect::HandleDisconnectAllCompleteL( TInt err ){
+ Q_UNUSED( err );
+}
+
+void BtDelegateDisconnect::DisplayCommandCompleteNotif(int error)
{
QString str(hbTrId("Disconnected to %1"));
QString err(hbTrId("Disconnecting with %1 Failed"));
if(error != KErrNone) {
- HbNotificationDialog::launchDialog(err.arg(mdeviceName));
+ HbNotificationDialog::launchDialog(err.arg(mDeviceName));
}
else {
- HbNotificationDialog::launchDialog(str.arg(mdeviceName));
+ // success, show indicator with connection status
+ HbIcon icon = getBadgedDeviceTypeIcon( mCod, mMajorRole, 0 ); // no badging required, only icon
+ QString str( hbTrId("txt_bt_dpopinfo_disconnected_from_1") );
+ HbNotificationDialog::launchDialog( icon, hbTrId("txt_bt_dpophead_disconnected"),
+ str.arg(mDeviceName) );
}
-
- emit commandCompleted(error);
+
}
--- a/bluetoothengine/btui/btuidelegate/btdelegatedisconnect.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuidelegate/btdelegatedisconnect.h Wed Jun 23 18:23:52 2010 +0300
@@ -20,6 +20,7 @@
#include <e32base.h>
#include <btengconnman.h>
+#include "btqtconstants.h"
#include "btabstractdelegate.h"
class BtuiModel;
@@ -29,7 +30,7 @@
\brief the base class for Disconnecting Bluetooth Connection.
*/
class BtDelegateDisconnect : public BtAbstractDelegate,
- public MBTEngConnObserver
+ public MBTEngConnObserver, public MBluetoothPhysicalLinksNotifier
{
Q_OBJECT
@@ -44,25 +45,59 @@
virtual void cancel();
-public slots:
+
protected:
//From MBTEngConnObserver
virtual void ConnectComplete( TBTDevAddr& aAddr, TInt aErr,
RBTDevAddrArray* aConflicts );
virtual void DisconnectComplete( TBTDevAddr& aAddr, TInt aErr );
- virtual void PairingComplete( TBTDevAddr& aAddr, TInt aErr );
+
+ // from MBluetoothPhysicalLinksNotifier
+ virtual void HandleCreateConnectionCompleteL( TInt err );
+
+ virtual void HandleDisconnectCompleteL( TInt err );
+
+ virtual void HandleDisconnectAllCompleteL( TInt err );
- void emitCommandComplete(int error);
+ void DisplayCommandCompleteNotif(int error);
+
+private:
+
+ void disconnectAllConnections_service();
+
+ void disconnectAllConnections_physical();
+
+ void disconnectSeviceLevel();
+
+ void disconnectPhysicalLink();
+
+ void disconnectServiceLevelCompleted(int err);
+
+ void disconnectPhysicalLinkCompleted(int err);
+
+
private:
CBTEngConnMan *mBtengConnMan;
- TBTDevAddr mBtEngddr;
+ CBluetoothPhysicalLinks *mPhyLinks;
+
+ int mMajorRole;
+ bool mActiveHandling;
+
+ int mAddrArrayIndex;
+ DisconnectOption mDisconOpt;
+
+ RBTDevAddrArray mDevAddrArray;
+ TBTDevAddr mBtEngAddr;
- QString mdeviceName;
-
+ QString mDeviceName;
+ int mCod;
+
+ RSocketServ mSocketServ;
+
Q_DISABLE_COPY(BtDelegateDisconnect)
};
--- a/bluetoothengine/btui/btuidelegate/btdelegatefactory.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuidelegate/btdelegatefactory.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -21,6 +21,7 @@
#include <btdevicemodel.h>
#include "btdelegatepower.h"
#include "btdelegatedevname.h"
+#include "btdelegateremotedevname.h"
#include "btdelegatevisibility.h"
#include "btdelegateinquiry.h"
#include "btdelegateconnect.h"
@@ -54,6 +55,8 @@
return new BtDelegateDisconnect( settingModel, deviceModel, parent );
case BtDelegate::Unpair:
return new BtDelegateDevSecurity( settingModel, deviceModel, parent );
+ case BtDelegate::RemoteDevName:
+ return new BtDelegateRemoteDevName( settingModel, deviceModel, parent );
}
return 0;
}
--- a/bluetoothengine/btui/btuidelegate/btdelegatepair.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuidelegate/btdelegatepair.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -17,6 +17,8 @@
#include "btdelegatepair.h"
#include "btuiutil.h"
+#include "btdelegatefactory.h"
+#include "btqtconstants.h"
#include <QModelIndex>
#include <btsettingmodel.h>
@@ -36,6 +38,7 @@
BtAbstractDelegate(settingModel, deviceModel, parent), mBtengConnMan(0)
{
mLoader = new HbDocumentLoader();
+ mAbstractDelegate = NULL;
}
BtDelegatePair::~BtDelegatePair()
@@ -46,13 +49,48 @@
void BtDelegatePair::exec( const QVariant ¶ms )
{
- int error = KErrNone;
- QModelIndex index = params.value<QModelIndex>();
+
+ deviceIndex = params.value<QModelIndex>();
+
+ if(isBtPowerOn()) {
+ exec_pair();
+ }
+ else {
+ //If Bt Power is off, switch it on and then perform pairing.
+ //todo: Do we ask for user confirmation here..?
+ if (!mAbstractDelegate) {
+ mAbstractDelegate = BtDelegateFactory::newDelegate(BtDelegate::ManagePower,
+ getSettingModel(), getDeviceModel() );
+ connect( mAbstractDelegate, SIGNAL(commandCompleted(int)), this, SLOT(powerDelegateCompleted(int)) );
+ mAbstractDelegate->exec(QVariant(BtPowerOn));
+ }
+ }
- mdeviceName = getDeviceModel()->data(index,BtDeviceModel::NameAliasRole).toString();
+}
+
+void BtDelegatePair::powerDelegateCompleted(int error)
+{
+ if (mAbstractDelegate) {
+ disconnect(mAbstractDelegate);
+ delete mAbstractDelegate;
+ mAbstractDelegate = 0;
+ }
+ if ( error == KErrNone ) {
+ exec_pair();
+ }
+ else {
+ // error
+ emitCommandComplete(error);
+ }
+}
+
+void BtDelegatePair::exec_pair()
+{
+ int error = KErrNone;
+ mdeviceName = getDeviceModel()->data(deviceIndex,BtDeviceModel::NameAliasRole).toString();
- QString strBtAddr = getDeviceModel()->data(index,BtDeviceModel::ReadableBdaddrRole).toString();
- int cod = getDeviceModel()->data(index,BtDeviceModel::CoDRole).toInt();
+ QString strBtAddr = getDeviceModel()->data(deviceIndex,BtDeviceModel::ReadableBdaddrRole).toString();
+ int cod = getDeviceModel()->data(deviceIndex,BtDeviceModel::CoDRole).toInt();
if ( ! mBtengConnMan ){
TRAP( error, mBtengConnMan = CBTEngConnMan::NewL(this) );
@@ -69,9 +107,10 @@
if(error) {
emitCommandComplete(error);
}
-
+
}
+
void BtDelegatePair::launchWaitDialog()
{
QString headingText(hbTrId("Pairing with %1"));
@@ -126,15 +165,15 @@
void BtDelegatePair::emitCommandComplete(int error)
{
- QString str(hbTrId("Paired to %1"));
- QString err(hbTrId("Pairing with %1 Failed"));
-
- if(error != KErrNone) {
- HbNotificationDialog::launchDialog(err.arg(mdeviceName));
- }
- else {
- HbNotificationDialog::launchDialog(str.arg(mdeviceName));
- }
+// QString str(hbTrId("Paired to %1"));
+// QString err(hbTrId("Pairing with %1 Failed"));
+//
+// if(error != KErrNone) {
+// HbNotificationDialog::launchDialog(err.arg(mdeviceName));
+// }
+// else {
+// HbNotificationDialog::launchDialog(str.arg(mdeviceName));
+// }
emit commandCompleted(error);
}
--- a/bluetoothengine/btui/btuidelegate/btdelegatepair.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuidelegate/btdelegatepair.h Wed Jun 23 18:23:52 2010 +0300
@@ -47,7 +47,7 @@
virtual void cancel();
public slots:
-
+ void powerDelegateCompleted(int error);
protected:
//From MBTEngConnObserver
virtual void ConnectComplete( TBTDevAddr& aAddr, TInt aErr,
@@ -58,6 +58,7 @@
private:
void launchWaitDialog();
void emitCommandComplete(int error);
+ void exec_pair();
private:
@@ -66,6 +67,8 @@
QString mdeviceName;
HbDocumentLoader *mLoader;
+ BtAbstractDelegate* mAbstractDelegate;
+ QModelIndex deviceIndex;
Q_DISABLE_COPY(BtDelegatePair)
--- a/bluetoothengine/btui/btuidelegate/btdelegatepower.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuidelegate/btdelegatepower.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -17,6 +17,9 @@
#include "btdelegatepower.h"
+#include "btqtconstants.h"
+#include <btabstractdelegate.h>
+#include <btdelegatefactory.h>
#include <btsettingmodel.h>
#include <btdevicemodel.h>
#include <hbmessagebox.h>
@@ -29,11 +32,12 @@
BtDelegatePower::BtDelegatePower(
BtSettingModel* settingModel,
BtDeviceModel* deviceModel, QObject *parent )
- : BtAbstractDelegate( settingModel, deviceModel, parent )
+ : BtAbstractDelegate( settingModel, deviceModel, parent ),
+ mDisconnectDelegate(0)
{
TRAP_IGNORE( mBtengSettings = CBTEngSettings::NewL(this) );
Q_CHECK_PTR( mBtengSettings );
-
+ mActiveHandling = false;
}
/*!
@@ -41,18 +45,35 @@
*/
BtDelegatePower::~BtDelegatePower()
{
+ delete mDisconnectDelegate;
delete mBtengSettings;
-
}
-void BtDelegatePower::exec( const QVariant ¶ms )
+/*!
+ Turns BT power on/off
+ param powerState is the desired power state and is of type PowerStateQtValue
+ */
+void BtDelegatePower::exec( const QVariant &powerState )
{
- if (params.toInt()){//turn power OFF
-
+ mReqPowerState = BtEngPowerState((PowerStateQtValue)powerState.toInt());
+ BTUI_ASSERT_X( (mReqPowerState == EBTPowerOff) || (mReqPowerState == EBTPowerOn),
+ "BtDelegatePower::exec()", "wrong power state value" );
+
+ // get current power status
+ TBTPowerStateValue curPowerState(EBTPowerOff);
+ mBtengSettings->GetPowerState( curPowerState );
+
+ // verify requested power is not the same as current status
+ if ( mReqPowerState == curPowerState ) {
+ // no need to do anything
+ emit commandCompleted( KErrNone );
+ }
+
+ // perform power on/off operation
+ if ( mReqPowerState == EBTPowerOff ){
switchBTOff();
}
- else{//turn power ON
-
+ else if ( mReqPowerState == EBTPowerOn ) {
switchBTOn();
}
}
@@ -64,30 +85,28 @@
int err = 0;
//check if device is in OFFLINE mode first
- TBTEnabledInOfflineMode enabledInOffline = EBTDisabledInOfflineMode;
- if (checkOfflineMode(enabledInOffline)){
- //if (1){
- if (enabledInOffline){
- //if (1){
+ bool btEnabledInOffline = false;
+ if (checkOfflineMode(btEnabledInOffline)){ // offline mode is active
+ if (btEnabledInOffline){
// BT is allowed to be enabled in offline mode, show query.
- HbMessageBox::question( tr("Turn Bluetooth on in offline mode?"),this,
+ HbMessageBox::question( hbTrId("txt_bt_info_trun_bluetooth_on_ini_offline_mode" ),this,
SLOT(btOnQuestionClose(HbAction*)));
}
else{
//if BT is not allowed to be enabled in offline mode, show message and complete
- HbMessageBox::warning(tr("Bluetooth not allowed to be turned on in offline mode"),this,
+ HbMessageBox::warning( hbTrId("txt_bt_info_bluetooth_not_allowed_to_be_turned_on" ),this,
SLOT(btOnWarningClose()));
}
}
- else{
- //set BT on if the not in offline mode
- err = mBtengSettings->SetPowerState((TBTPowerStateValue)(1));
+ else { // offline mode is not active
+ mActiveHandling = true;
+ err = mBtengSettings->SetPowerState(EBTPowerOn);
}
if ( err ) {
- QString info = "Unable to switch BT power ON" ;
+ //TODO: handle the error here
emit commandCompleted(KErrGeneral);
}
@@ -100,7 +119,8 @@
if(action == dlg->actions().at(0))
{
//user chooses "yes" for using BT in offline
- err = mBtengSettings->SetPowerState((TBTPowerStateValue)(1));
+ mActiveHandling = true;
+ err = mBtengSettings->SetPowerState(EBTPowerOn);
}
else
{
@@ -109,7 +129,7 @@
}
if ( err ) {
- QString info = "Unable to switch BT power ON" ;
+ //TODO: handle the error here
emit commandCompleted(KErrGeneral);
}
}
@@ -124,25 +144,98 @@
void BtDelegatePower::switchBTOff()
{
int err = 0;
- err = mBtengSettings->SetPowerState((TBTPowerStateValue)(0));
- if ( err ) {
- QString info = "Unable to switch BT power OFF" ;
- emit commandCompleted(KErrGeneral);
- }
+ CBTEngConnMan *btengConnMan = 0;
+ TRAP(err, btengConnMan = CBTEngConnMan::NewL(this));
+ Q_CHECK_PTR( btengConnMan );
+ RBTDevAddrArray devAddrArray;
+ err = btengConnMan->GetConnectedAddresses(devAddrArray);
+ int count = devAddrArray.Count();
+ //int count =3;
+ devAddrArray.Close();
+ delete btengConnMan;
+ if( !err && count> 0 ){
+ HbMessageBox::question( hbTrId("Turn Bluetooth off? There is an active connection." ),this,
+ SLOT(btOffDialogClose(HbAction*)));
+
+ }
+ else{
+ mActiveHandling = true;
+ err = mBtengSettings->SetPowerState(EBTPowerOff);
+
+ if ( err ) {
+ //TODO: handle the error here
+ emit commandCompleted(KErrGeneral);
+ }
+ }
}
void BtDelegatePower::btOffDialogClose(HbAction *action)
{
- Q_UNUSED( action );
+ HbMessageBox *dlg = static_cast<HbMessageBox*>(sender());
+ if(action == dlg->actions().at(0))
+ {
+ //user chooses "yes" for closing active connection before power off
+ mActiveHandling = true;
+ disconnectOngoingConnections();
+ }
+ else
+ {
+ //if user chooses "NO", emits the signal
+ emit commandCompleted(KErrNone);
+
+ }
}
-void BtDelegatePower::PowerStateChanged( TBTPowerStateValue aState )
+void BtDelegatePower::disconnectOngoingConnections(){
+ if (! mDisconnectDelegate){
+ mDisconnectDelegate = BtDelegateFactory::newDelegate(
+ BtDelegate::Disconnect, getSettingModel(), getDeviceModel());
+ connect( mDisconnectDelegate, SIGNAL(commandCompleted(int)), this, SLOT(disconnectDelegateCompleted(int)) );
+
+
+ DisconnectOption discoOpt = AllOngoingConnections;
+ QVariant param;
+ param.setValue((int)discoOpt);
+ mDisconnectDelegate->exec(param);
+ }
+}
+
+void BtDelegatePower::disconnectDelegateCompleted(int err)
{
- Q_UNUSED( aState );
- emit commandCompleted(KErrNone);
+ Q_UNUSED( err );
+ //TODO: handle the return error here
+
+ int error = mBtengSettings->SetPowerState(EBTPowerOff);
+ if ( error ) {
+ //TODO: handle the error here
+ emit commandCompleted(KErrGeneral);
+ }
+
+
+}
+
+
+void BtDelegatePower::PowerStateChanged( TBTPowerStateValue aPowerState )
+{
+ // It is possible that others change power: no handling for these cases.
+ if ( !mActiveHandling ) {
+ return;
+ }
+ mActiveHandling = false;
+
+ if ( mReqPowerState == aPowerState ) {
+ // power state changed successfully
+ emit commandCompleted( KErrNone );
+ }
+ else {
+ // the actual power state is not the same as we requested,
+ // command failed:
+ // ToDo: show error note?
+ emit commandCompleted( KErrGeneral );
+ }
}
//Method derived from MBTEngSettingsObserver, no need to be implemented here
@@ -151,78 +244,38 @@
Q_UNUSED( aState );
}
-bool BtDelegatePower::checkOfflineMode(TBTEnabledInOfflineMode& aEnabledInOffline)
+void BtDelegatePower::ConnectComplete( TBTDevAddr& aAddr, TInt aErr,
+ RBTDevAddrArray* aConflicts )
{
- TCoreAppUIsNetworkConnectionAllowed offline = ECoreAppUIsNetworkConnectionAllowed;
-
- mBtengSettings->GetOfflineModeSettings(offline, aEnabledInOffline);
- return (!offline);
-
+ Q_UNUSED(aAddr);
+ Q_UNUSED(aErr);
+ Q_UNUSED(aConflicts);
+ /*
+ if ( mBtEngAddr != aAddr ) { // callback coming for some other device
+ return;
+ }
+ emitCommandComplete(aErr);
+ */
}
-/*if (params.toBool()) { // turning power on
-
- // find out if local device is in offline mode
- QModelIndex idx = mModel->index( Btuim::OfflineMode, 0);
- QVariant var = mModel->data( idx, Qt::EditRole );
- bool offlineMode = var.toBool();
-
- // find out whether BT is allowed in offline mode
- var = mModel->data( idx, Btuim::SettingAdditionalParam );
- bool activationAllowed = var.toBool();
-
- if (offlineMode) {
- // in offline mode
- if (activationAllowed) {
- HbMessageBox *messageBox = new HbMessageBox();
- // BT is allowed to be enabled in offline mode, show query.
- if (messageBox->question( tr("Activate Bluetooth in offline mode?") )) {
- ret = mModel->setData(index, value, role);
- }
- delete messageBox;
- }
- else {
- // BT is not allowed to be activated in offline mode, show note.
+void BtDelegatePower::DisconnectComplete( TBTDevAddr& aAddr, TInt aErr )
+{
+ Q_UNUSED(aAddr);
+ Q_UNUSED(aErr);
+}
- HbDialog *mShowOnlyPopup = new HbDialog();
- mShowOnlyPopup->setAttribute(Qt::WA_DeleteOnClose);
- mShowOnlyPopup->setModal(false);
- mShowOnlyPopup->setBackgroundFaded(false);
- mShowOnlyPopup->setDismissPolicy( HbPopup::NoDismiss );
- mShowOnlyPopup->setTimeout( 5000 ); // 5 sec
- HbLabel *label = new HbLabel( tr("Bluetooth is not allowed in offline mode") );
- label->setAlignment(Qt::AlignCenter);
- QSizeF popupSize(350,100);
- mShowOnlyPopup->setMinimumSize(popupSize);
- mShowOnlyPopup->setContentWidget(label);
- mShowOnlyPopup->show();
- }
- }
- else {
- // not in offline mode, forward the request to model.
- ret = mModel->setData(index, value, role);
- }
- }
- else { // turning power off
- // first check if existing connections
- QModelIndex idx = mModel->index(Btuim::BtConnections, 0);
- QVariant var = mModel->data(idx, Qt::EditRole);
- bool ok;
- TInt connNum = var.toInt( &ok );
- BTUI_ASSERT_X( ok, "BtUiSettingsDelegate::setData", "wrong qvariant type");
- if (connNum) {
- // there is at least 1 active connection, show query.
- HbMessageBox *messageBox = new HbMessageBox();
- if (messageBox->question( tr("Turn Bluetooth off even though connections exist?") )) {
- ret = mModel->setData(index, value, role);
- }
- delete messageBox;
- }
- else {
- // no active connections exist, forward the request to model.
- ret = mModel->setData(index, value, role);
- }
- }*/
- //emit commandCompleted(err);
- //return ret;
- //return false;
+/*!
+ Returns true if offline mode is on, parameter returns true if BT is allowed
+ in offline mode
+ */
+bool BtDelegatePower::checkOfflineMode(bool& btEnabledInOffline)
+{
+ TCoreAppUIsNetworkConnectionAllowed offLineMode;
+ TBTEnabledInOfflineMode btEnabled;
+
+ mBtengSettings->GetOfflineModeSettings(offLineMode, btEnabled);
+
+ btEnabledInOffline = (btEnabled == EBTEnabledInOfflineMode);
+ return (offLineMode == ECoreAppUIsNetworkConnectionNotAllowed);
+}
+
--- a/bluetoothengine/btui/btuidelegate/btdelegatepower.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuidelegate/btdelegatepower.h Wed Jun 23 18:23:52 2010 +0300
@@ -20,6 +20,7 @@
#include <e32base.h>
#include <btengsettings.h>
+#include <btengconnman.h>
#include "btabstractdelegate.h"
class BtuiModel;
@@ -31,7 +32,8 @@
\\sa btuidelegate
*/
-class BtDelegatePower : public BtAbstractDelegate, public MBTEngSettingsObserver
+class BtDelegatePower : public BtAbstractDelegate, public MBTEngSettingsObserver,
+ public MBTEngConnObserver
{
Q_OBJECT
@@ -44,6 +46,8 @@
virtual void exec( const QVariant ¶ms );
+ //from MBTEngSettingsObserver
+
virtual void PowerStateChanged( TBTPowerStateValue aState );
virtual void VisibilityModeChanged( TBTVisibilityMode aState );
@@ -55,18 +59,34 @@
void btOffDialogClose(HbAction *action);
+ void disconnectDelegateCompleted(int err);
+
+
+protected:
+ //From MBTEngConnObserver
+ virtual void ConnectComplete( TBTDevAddr& aAddr, TInt aErr,
+ RBTDevAddrArray* aConflicts );
+ virtual void DisconnectComplete( TBTDevAddr& aAddr, TInt aErr );
+
+
private:
void switchBTOn();
void switchBTOff();
- bool checkOfflineMode(TBTEnabledInOfflineMode& aEnabledInOffline);
+ bool checkOfflineMode(bool& btEnabledInOffline);
-public slots:
+ void disconnectOngoingConnections();
+
private:
CBTEngSettings* mBtengSettings;
-
+ bool mActiveHandling;
+ TBTPowerStateValue mReqPowerState;
+
+ BtAbstractDelegate* mDisconnectDelegate;
+
+
private:
Q_DISABLE_COPY(BtDelegatePower)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btui/btuidelegate/btdelegateremotedevname.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,184 @@
+/*
+* 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:
+*
+*/
+
+#include "btdelegateremotedevname.h"
+#include <btsettingmodel.h>
+#include <btdevicemodel.h>
+#include <e32base.h>
+#include <bluetoothuitrace.h>
+#include <QRegExp>
+#include "btuidevtypemap.h"
+
+
+BtDelegateRemoteDevName::BtDelegateRemoteDevName(BtSettingModel* settingModel,
+ BtDeviceModel* deviceModel,QObject *parent )
+ :BtAbstractDelegate( settingModel, deviceModel, parent ), mRegistryActive(0)
+{
+
+}
+
+BtDelegateRemoteDevName::~BtDelegateRemoteDevName()
+{
+ delete mRegistryActive;
+ mSymName.Close();
+ mBtRegistry.Close();
+ mBtRegServ.Close();
+}
+
+/*!
+ Validate the bluetooth device name given by the user:
+ Extra spaces (' ', '\n', '\t' and '\r') from the beginning,
+ middle and the end of the name are always removed;
+ the maximum lengthof a name is 30.
+
+ TODO:Add duplicate name checking. If the new name duplicates
+ existing name in registry, prompt user to change the name
+ */
+
+bool BtDelegateRemoteDevName::validateName(QString &name )
+{
+ // remove spaces at the beginning and end:
+ name = name.trimmed();
+ // regular expression of one or more consecutive spaces:
+ QRegExp rx("[ \n\t\r]+");
+ name.replace( rx, " ");
+ if (name.length() > 30 ) {
+ name.resize( 30 );
+ }
+ return name.length() > 0;
+}
+
+void BtDelegateRemoteDevName::exec( const QVariant ¶ms )
+{
+ QList<QVariant> paramList = params.value< QList<QVariant> >();
+ QVariant indexVariant = paramList.at(0);
+ QModelIndex index = indexVariant.value<QModelIndex>();
+ QVariant nameVariant = paramList.at(1);
+ QString btRemoteDevName = nameVariant.toString();
+
+ int error = KErrNone;
+
+ validateName(btRemoteDevName);
+ mNewName = btRemoteDevName;
+
+ TPtrC ptrName(reinterpret_cast<const TText*>(btRemoteDevName.constData()));
+
+ error = mSymName.Create(ptrName.Length());
+
+ // todo (review comment): missing proper exception handling.
+ if(error == KErrNone) {
+ mSymName.Copy(ptrName);
+ }
+ else{
+ emit commandCompleted(error,mNewName);
+ return;
+ }
+
+ QString strBtAddr = getDeviceModel()->data(index,
+ BtDeviceModel::ReadableBdaddrRole).toString();
+
+ TBuf<KBTDevAddrSize * 2> buffer(strBtAddr.utf16());
+ mSymaddr.SetReadable( buffer );
+
+ error = mBtRegServ.Connect();
+ if ( error != KErrNone && error != KErrAlreadyExists) {
+ emit commandCompleted(error,mNewName);
+ return;
+ }
+
+ error = mBtRegistry.Open( mBtRegServ ) ;
+ if ( error != KErrNone && error != KErrAlreadyExists) {
+ emit commandCompleted(error,mNewName);
+ return;
+ }
+ if (!mRegistryActive){
+ RequestIdentifiers requestId = Unknown;
+ TRAP(error, mRegistryActive = CBtSimpleActive::NewL(
+ *this, requestId));
+ if(error!=KErrNone) {
+ emit commandCompleted(KErrGeneral);
+ return;
+ }
+ }
+ //first check if this device is already in the registry
+
+ int majorRole = (getDeviceModel()->data(index,BtDeviceModel::MajorPropertyRole)).toInt();
+ int cod = (getDeviceModel()->data(index,BtDeviceModel::CoDRole)).toInt();
+ if (!(majorRole & BtuiDevProperty::InRegistry)) {
+ CBTDevice *symBtDevice;
+ TRAP( error, {
+ symBtDevice = CBTDevice::NewL( mSymaddr );
+ symBtDevice->SetDeviceClass(cod);
+ RequestIdentifiers requestId = AddDevice;
+ mRegistryActive->SetRequestId(requestId);
+ mBtRegistry.AddDeviceL(*symBtDevice, mRegistryActive->iStatus);
+ mRegistryActive->GoActive();
+ });
+
+ }
+ else{
+ RequestIdentifiers requestId = ModifyFriendlyName;
+ mRegistryActive->SetRequestId(requestId);
+ TRAP( error, {
+ mBtRegistry.ModifyFriendlyDeviceNameL(mSymaddr, mSymName, mRegistryActive->iStatus);
+ mRegistryActive->GoActive();
+ });
+ }
+ if ( error != KErrNone ) {
+ emit commandCompleted(error,mNewName);
+ }
+
+}
+
+void BtDelegateRemoteDevName::RequestCompletedL( CBtSimpleActive* aActive, TInt aStatus ){
+
+ if(aStatus != KErrNone){
+ emit commandCompleted(aStatus, mNewName);
+ return;
+ }
+ int error = KErrNone;
+ if ( aActive->RequestId() == AddDevice ){
+ RequestIdentifiers requestId = ModifyFriendlyName;
+ mRegistryActive->SetRequestId(requestId);
+ TRAP( error, {
+ mBtRegistry.ModifyFriendlyDeviceNameL(mSymaddr, mSymName, mRegistryActive->iStatus);
+ mRegistryActive->GoActive();
+ });
+ if(error != KErrNone){
+ emit commandCompleted(error, mNewName);
+ }
+ }
+ else if ( aActive->RequestId() == ModifyFriendlyName ){
+ emit commandCompleted(error, mNewName);
+ }
+
+}
+
+void BtDelegateRemoteDevName::CancelRequest( TInt aRequestId ){
+ if ( aRequestId == 1 ){
+ mBtRegistry.CancelRequest(mRegistryActive->RequestStatus());
+ emit commandCompleted(KErrCancel, mNewName);
+ }
+
+}
+
+void BtDelegateRemoteDevName::HandleError( CBtSimpleActive* aActive, TInt aError ){
+ //TODO: handle the error here
+ Q_UNUSED( aActive );
+ Q_UNUSED( aError );
+ emit commandCompleted(KErrGeneral,mNewName);
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btui/btuidelegate/btdelegateremotedevname.h Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,82 @@
+/*
+* 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:
+*
+*/
+
+#ifndef BTDELEGATEREMOTEDEVNAME_H
+#define BTDELEGATEREMOTEDEVNAME_H
+
+#include <e32base.h>
+#include <btmanclient.h>
+//#include <btengconnman.h>
+//#include <btengdevman.h>
+#include <btservices/btsimpleactive.h>
+#include "btabstractdelegate.h"
+
+class BtuiModel;
+
+enum RequestIdentifiers {
+ Unknown = 0, // using a different number space than TBTVisibilityMode
+ AddDevice,
+ ModifyFriendlyName
+};
+
+/*!
+ \class BtDelegateRemoteDevName
+ \brief the base class for handling Bluetooth Local Name.
+ */
+class BtDelegateRemoteDevName : public BtAbstractDelegate, public MBtSimpleActiveObserver
+{
+ Q_OBJECT
+
+public:
+ explicit BtDelegateRemoteDevName( BtSettingModel* settingModel,
+ BtDeviceModel* deviceModel, QObject *parent = 0 );
+
+ virtual ~BtDelegateRemoteDevName();
+
+ virtual void exec( const QVariant ¶ms );
+
+ // from MBtSimpleActiveObserver
+ virtual void RequestCompletedL( CBtSimpleActive* aActive, TInt aStatus );
+
+ virtual void CancelRequest( TInt aRequestId );
+
+ virtual void HandleError( CBtSimpleActive* aActive, TInt aError );
+
+
+private:
+ bool validateName(QString &name );
+
+ RBTRegistry mBtRegistry;
+
+ RBTRegServ mBtRegServ;
+
+ CBtSimpleActive* mRegistryActive;
+
+ QString mNewName;
+
+ RBuf16 mSymName;
+
+ TBTDevAddr mSymaddr;
+
+
+private:
+
+ Q_DISABLE_COPY(BtDelegateRemoteDevName)
+
+};
+
+#endif // BTDELEGATEREMOTEDEVNAME_H
--- a/bluetoothengine/btui/btuidelegate/btdelegatevisibility.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuidelegate/btdelegatevisibility.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -34,7 +34,7 @@
{
TRAP_IGNORE( mBtengSettings = CBTEngSettings::NewL(this) );
Q_CHECK_PTR( mBtengSettings );
- mOperationOngoing = false;
+ mActiveHandling = false;
}
/*!
@@ -54,12 +54,12 @@
{
int minutes, err = 0;
- if (mOperationOngoing) {
+ if (mActiveHandling) {
// complete command with error
emit commandCompleted(KErrInUse);
return;
}
- mOperationOngoing = true;
+ mActiveHandling = true;
// read 1st parameter
BTUI_ASSERT_X(params.toList().at(0).isValid(), "BtDelegateVisibility::exec", "invalid parameter");
@@ -70,12 +70,12 @@
TBTVisibilityMode visibilityMode( EBTVisibilityModeNoScans );
err = mBtengSettings->GetVisibilityMode( visibilityMode );
if (err) {
- mOperationOngoing = false;
+ mActiveHandling = false;
emit commandCompleted(err);
return;
}
if (visibilityMode == mOperation) {
- mOperationOngoing = false;
+ mActiveHandling = false;
emit commandCompleted(KErrNone);
return;
}
@@ -100,7 +100,7 @@
}
if (err) {
// complete command with error
- mOperationOngoing = false;
+ mActiveHandling = false;
emit commandCompleted(err);
}
}
@@ -118,9 +118,9 @@
*/
void BtDelegateVisibility::VisibilityModeChanged( TBTVisibilityMode aState )
{
- if (mOperationOngoing) {
+ if (mActiveHandling) {
//Error handling has to be done, if value is not set properly.
- mOperationOngoing = false;
+ mActiveHandling = false;
if (mOperation == aState) {
emit commandCompleted(KErrNone);
}
--- a/bluetoothengine/btui/btuidelegate/btdelegatevisibility.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuidelegate/btdelegatevisibility.h Wed Jun 23 18:23:52 2010 +0300
@@ -52,7 +52,7 @@
private:
CBTEngSettings* mBtengSettings;
- bool mOperationOngoing;
+ bool mActiveHandling;
TBTVisibilityMode mOperation;
private:
--- a/bluetoothengine/btui/btuidelegate/btuidelegate.pro Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuidelegate/btuidelegate.pro Wed Jun 23 18:23:52 2010 +0300
@@ -36,7 +36,8 @@
btdelegateconnect.h \
btdelegatepair.h \
btdelegatedisconnect.h \
- btdelegatedevsecurity.h
+ btdelegatedevsecurity.h \
+ btdelegateremotedevname.h
SOURCES += btdelegatepower.cpp \
btdelegatefactory.cpp \
@@ -47,7 +48,8 @@
btdelegateconnect.cpp \
btdelegatepair.cpp \
btdelegatedisconnect.cpp \
- btdelegatedevsecurity.cpp
+ btdelegatedevsecurity.cpp \
+ btdelegateremotedevname.cpp
symbian: {
SYMBIAN_PLATFORMS = WINSCW \
--- a/bluetoothengine/btui/btuimodel/btdevicedata.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuimodel/btdevicedata.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -19,46 +19,9 @@
#include <QDateTime>
#include <btservices/advancedevdiscoverer.h>
#include "btuiutil.h"
+#include "btuidevtypemap.h"
#include "btqtconstants.h"
-class DevTypeIconMapping {
-public:
- int majorDevClass; // major device class value from CoD
- int minorDevClass; // minor device class value from CoD
- int majorProperty; // one of major properties defined in BtDeviceModel
- int minorProperty; // one of minor properties defined in BtDeviceModel
- char* connectedIcon; // the icon name for connected device
- char* unconnectedIcon; // the icon name for not connected device.
-};
-
-// mapping table from major and minor Device Classes to device types and icons
-// which are specifically defined in btapplication namespace.
-// (Note audio device mapping is not in this table due to its complex logic)
-static const DevTypeIconMapping DeviceTypeIconMappingTable[] =
-{
-{EMajorDeviceComputer, 0, BtDeviceModel::Computer, 0,
- ":/icons/qgn_prop_bt_computer_connect.svg", ":/icons/qgn_prop_bt_computer.svg" },
-{EMajorDevicePhone, 0, BtDeviceModel::Phone, 0,
- ":/icons/qgn_prop_bt_phone_connect.svg", ":/icons/qgn_prop_bt_phone.svg"},
-{EMajorDeviceLanAccessPoint, 0, BtDeviceModel::LANAccessDev, 0,
- ":/icons/qgn_prop_bt_misc.svg", ":/icons/qgn_prop_bt_misc.svg" },
-{EMajorDevicePeripheral, EMinorDevicePeripheralKeyboard,
- BtDeviceModel::Peripheral, BtDeviceModel::Keyboard,
- ":/icons/qgn_prop_bt_keyboard_connect.svg", ":/icons/qgn_prop_bt_keyboard.svg"},
-{EMajorDevicePeripheral, EMinorDevicePeripheralPointer,
- BtDeviceModel::Peripheral, BtDeviceModel::Mouse,
- ":/icons/qgn_prop_bt_mouse_connect.svg", ":/icons/qgn_prop_bt_mouse.svg"},
-{EMajorDeviceImaging, 0, BtDeviceModel::ImagingDev, 0,
- ":/icons/qgn_prop_bt_printer_connect.svg", ":/icons/qgn_prop_bt_printer.svg"},
-{EMajorDeviceWearable, 0, BtDeviceModel::WearableDev, 0,
- ":/icons/qgn_prop_bt_misc.svg", ":/icons/qgn_prop_bt_misc.svg"},
-{EMajorDeviceToy, 0, BtDeviceModel::Toy, 0,
- ":/icons/qgn_prop_bt_misc.svg", ":/icons/qgn_prop_bt_misc.svg"},
-};
-
-static const int DeviceTypeIconMappingTableSize =
- sizeof( DeviceTypeIconMappingTable ) / sizeof( DevTypeIconMapping );
-
/*!
Constructor.
*/
@@ -124,7 +87,7 @@
\param val contains the value at return.
\param row the row number which the value is from
\param col the column number which the value is from
- \param role the role idenfier of the value.
+ \param role the role identifier of the value.
*/
void BtDeviceData::data(QVariant& val, int row, int col, int role ) const
{
@@ -195,7 +158,7 @@
if(isDeviceInRegistry(qtdev)) {
// we cannot remove this device as it is in registry.
// remove it in-range property.
- setMajorProperty(mData[i], BtDeviceModel::InRange, false);
+ setMajorProperty(mData[i], BtuiDevProperty::InRange, false);
updateRssi(mData[i], RssiInvalid);
mModel.emitDataChanged( i, 0, this );
}
@@ -232,7 +195,7 @@
// remore it from model now.
// clear-registry related properties, so that
// we get a chance to clean it after device searching later.
- setMajorProperty(mData[i], BtDeviceModel::RegistryProperties, false);
+ setMajorProperty(mData[i], BtuiDevProperty::RegistryProperties, false);
mModel.emitDataChanged( i, 0, this );
}
else {
@@ -268,7 +231,7 @@
updateRssi(devData, RssiInvalid);
}
// add device-in-registry property:
- setMajorProperty(devData, BtDeviceModel::InRegistry, true);
+ setMajorProperty(devData, BtuiDevProperty::InRegistry, true);
updateDeviceProperty(devData, dev, 0 );
mModel.beginInsertRows( QModelIndex(), mData.count(), mData.count() );
mData.append( devData );
@@ -276,7 +239,7 @@
}
else {
updateDeviceProperty(mData[i], dev, similarity );
- setMajorProperty(mData[i], BtDeviceModel::InRegistry, true);
+ setMajorProperty(mData[i], BtuiDevProperty::InRegistry, true);
mModel.emitDataChanged( i, 0, this );
}
}
@@ -290,13 +253,13 @@
{
int i = indexOf( dev.Addr() );
if ( i > -1 ) {
- int preconn = BtDeviceModel::Connected
+ int preconn = BtuiDevProperty::Connected
& mData[i][BtDeviceModel::MajorPropertyRole].toInt();
// we only update and signal if connection status is really
// changed:
if ( ( preconn != 0 && !connected )
|| ( preconn == 0 && connected ) ) {
- setMajorProperty(mData[i], BtDeviceModel::Connected, connected );
+ setMajorProperty(mData[i], BtuiDevProperty::Connected, connected );
mModel.emitDataChanged( i, 0, this );
}
}
@@ -323,7 +286,7 @@
if ( pos == -1 ) {
BtuiModelDataItem devData;
- setMajorProperty(devData, BtDeviceModel::InRange, true);
+ setMajorProperty(devData, BtuiDevProperty::InRange, true);
updateRssi(devData, rssi);
CBtDevExtension* devExt(NULL);
TRAP_IGNORE( {
@@ -336,7 +299,7 @@
mModel.endInsertRows();
}
else {
- setMajorProperty(mData[pos], BtDeviceModel::InRange, true);
+ setMajorProperty(mData[pos], BtuiDevProperty::InRange, true);
updateRssi(mData[pos], rssi);
mModel.emitDataChanged( pos, 0, this );
}
@@ -360,7 +323,7 @@
// If the device store is not empty, we clear
// registry property from these devices first.
for (int i = 0; i < mData.count(); ++i) {
- setMajorProperty(mData[i], BtDeviceModel::RegistryProperties, false);
+ setMajorProperty(mData[i], BtuiDevProperty::RegistryProperties, false);
}
if ( mData.count() ) {
// need to update view because we have changed device properties.
@@ -374,14 +337,14 @@
int pos = indexOf( devs[i]->Addr() );
if ( pos > -1 ) {
// add device-in-registry property:
- setMajorProperty(mData[pos], BtDeviceModel::InRegistry, true);
+ setMajorProperty(mData[pos], BtuiDevProperty::InRegistry, true);
updateDeviceProperty(mData[pos], *(devs[i]), 0);
mModel.emitDataChanged( pos, 0, this );
}
else {
BtuiModelDataItem devData;
// add device-in-registry property:
- setMajorProperty(devData, BtDeviceModel::InRegistry, true);
+ setMajorProperty(devData, BtuiDevProperty::InRegistry, true);
updateDeviceProperty(devData, *( devs[i] ), 0 );
mModel.beginInsertRows(QModelIndex(), mData.count(), mData.count() );
mData.append( devData );
@@ -416,65 +379,28 @@
qtdev[BtDeviceModel::LastUsedTimeRole] = QVariant(qdt);
// set paired status:
- setMajorProperty(qtdev, BtDeviceModel::Bonded, isBonded( dev.Device() ));
+ setMajorProperty(qtdev, BtuiDevProperty::Bonded, isBonded( dev.Device() ));
// set blocked status:
- setMajorProperty(qtdev, BtDeviceModel::Blocked,
+ setMajorProperty(qtdev, BtuiDevProperty::Blocked,
dev.Device().GlobalSecurity().Banned() );
// set trusted status:
- setMajorProperty(qtdev, BtDeviceModel::Trusted,
+ setMajorProperty(qtdev, BtuiDevProperty::Trusted,
dev.Device().GlobalSecurity().NoAuthorise() );
//CoDRole
//MinorPropertyRole
int cod = static_cast<int>( dev.Device().DeviceClass().DeviceClass() );
qtdev[BtDeviceModel::CoDRole] = QVariant(cod);
-
- // Initially, clear CoD related properties:
- int majorProperty = qtdev[BtDeviceModel::MajorPropertyRole].toInt() &
- ~BtDeviceModel::CodProperties;
-
- int minorProperty = BtDeviceModel::NullProperty;
-
- // device type must be mapped according to CoD:
- int majorDevCls = dev.Device().DeviceClass().MajorDeviceClass();
- int minorDevCls = dev.Device().DeviceClass().MinorDeviceClass();
- int i;
- for (i = 0; i < DeviceTypeIconMappingTableSize; ++i ) {
- if ( DeviceTypeIconMappingTable[i].majorDevClass == majorDevCls &&
- ( DeviceTypeIconMappingTable[i].minorDevClass == 0 ||
- DeviceTypeIconMappingTable[i].minorDevClass == minorDevCls ) ) {
- // device classes match a item in table, get the mapping:
- majorProperty |= DeviceTypeIconMappingTable[i].majorProperty;
- minorProperty |= DeviceTypeIconMappingTable[i].minorProperty;
- break;
- }
- }
-
- // AV device mapping are not defined in the table, do mapping here if no device
- // type mapped so far:
- if ( i == DeviceTypeIconMappingTableSize) {
- // audio device, carkit, headset or speaker:
- if( ( majorDevCls == EMajorDeviceAV)
- || (dev.Device().DeviceClass().MajorServiceClass() == EMajorServiceRendering
- && majorDevCls != EMajorDeviceImaging) ) {
-
- majorProperty |= BtDeviceModel::AVDev;
-
- if( minorDevCls == EMinorDeviceAVCarAudio ) {
- // carkit:
- minorProperty |= BtDeviceModel::Carkit;
- }
- else {
- // headset:
- minorProperty |= BtDeviceModel::Headset;
- }
- }
- }
-
- qtdev[BtDeviceModel::MajorPropertyRole] = QVariant( majorProperty );
- qtdev[BtDeviceModel::MinorPropertyRole] = QVariant( minorProperty );
+ int majorDeviceType;
+ int minorDeviceType;
+ // device type is mapped according to CoD:
+ BtuiDevProperty::mapDeiveType(majorDeviceType, minorDeviceType, cod);
+
+ qtdev[BtDeviceModel::MajorPropertyRole] =
+ QVariant( qtdev[BtDeviceModel::MajorPropertyRole].toInt() | majorDeviceType );
+ qtdev[BtDeviceModel::MinorPropertyRole] = QVariant( minorDeviceType );
}
int BtDeviceData::indexOf( const TBTDevAddr& addr ) const
@@ -514,10 +440,10 @@
bool BtDeviceData::isDeviceInRange( const BtuiModelDataItem& qtdev )
{
- return BtDeviceModel::InRange & qtdev[BtDeviceModel::MajorPropertyRole].toInt();
+ return BtuiDevProperty::InRange & qtdev[BtDeviceModel::MajorPropertyRole].toInt();
}
bool BtDeviceData::isDeviceInRegistry( const BtuiModelDataItem& qtdev )
{
- return BtDeviceModel::InRegistry & qtdev[BtDeviceModel::MajorPropertyRole].toInt();
+ return BtuiDevProperty::InRegistry & qtdev[BtDeviceModel::MajorPropertyRole].toInt();
}
--- a/bluetoothengine/btui/btuimodel/btlocalsetting.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuimodel/btlocalsetting.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -18,11 +18,8 @@
#include "btlocalsetting.h"
#include <btdevice.h>
-//#include <QStringList>
#include <btmanclient.h>
#include <bt_subscribe.h>
-//#include <centralrepository.h>
-//#include <coreapplicationuissdkcrkeys.h>
#include "btqtconstants.h"
const int KLocalDeviceNameWatcher = 10;
@@ -211,18 +208,12 @@
BtuiModelDataItem& item =
mData[ BtSettingModel::LocalBtNameRow ];
- if ( item.isEmpty() ) {
- // Initialize with additional information on the setting
- item[ BtSettingModel::SettingNameRole ] = QVariant( tr( "Local Bluetooth name" ) );
- }
-
bool setByUser = !name.isEmpty();
// The additional parameter is the flag indicating whether the
// Bluetooth name has been set by the user.
// The flag is set to true if the name has been set.
- // requirement does not
- //nitem[ BtSettingModel::SettingValueParamRole ] = QVariant( setByUser );
+ // item[ BtSettingModel::SettingValueParamRole ] = QVariant( setByUser );
QString resolvedName( name );
if ( resolvedName.isEmpty() ) {
@@ -240,38 +231,14 @@
{
BtuiModelDataItem& item =
mData[ BtSettingModel::PowerStateRow ];
- if ( item.isEmpty() ) {
- // Initialize with additional information on the setting
- item[ BtSettingModel::SettingNameRole ] = QVariant( tr( "Bluetooth power" ) );
- }
- bool powerOn = ( state == EBTPowerOn );
-
- item[ BtSettingModel::settingDisplayRole ] =
- powerOn ? QVariant( tr( "On" ) ) : QVariant( tr( "Off" ) );
- item[ BtSettingModel::SettingValueRole ] = QVariant( powerOn );
+ item[ BtSettingModel::SettingValueRole ] = QVariant( QtPowerMode(state) );
}
void BtLocalSetting::setVisibilityMode( TBTVisibilityMode state )
{
BtuiModelDataItem& item = mData[ BtSettingModel::VisibilityRow ];
- if ( item.isEmpty() ) {
- item[ BtSettingModel::SettingNameRole ] = QVariant( tr( "Phone visibility" ) );
- }
-
- if ( state == EBTVisibilityModeHidden )
- {
- item [ BtSettingModel::settingDisplayRole ] = QVariant( tr( "Hidden" ) );
- }
- else if ( state == EBTVisibilityModeGeneral )
- {
- item [ BtSettingModel::settingDisplayRole ] = QVariant( tr( "Visible" ) );
- }
- else
- {
- item [ BtSettingModel::settingDisplayRole ] = QVariant( tr( "Temporarily visible" ) );
- }
item [ BtSettingModel::SettingValueRole ] = QVariant( QtVisibilityMode(state) );
}
--- a/bluetoothengine/btui/btuimodel/btlocalsetting.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuimodel/btlocalsetting.h Wed Jun 23 18:23:52 2010 +0300
@@ -1,25 +1,19 @@
/*
-* ============================================================================
-* Name : btuimsettings.h
-* Part of : BluetoothUI / bluetoothuimodel *** Info from the SWAD
-* Description : Declaration of the class representing the Bluetooth
-* settings source data.
-*
-* Copyright © 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:
-* Nokia Corporation
-* ============================================================================
-* Template version: 4.2
-*/
+ * 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:
+ *
+ */
#ifndef BTLOCALSETTING_H
#define BTLOCALSETTING_H
--- a/bluetoothengine/btui/btuimodel/btuimodelsortfilter.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuimodel/btuimodelsortfilter.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -17,7 +17,7 @@
#include <btuimodelsortfilter.h>
#include <btdevicemodel.h>
-
+#include "btuidevtypemap.h"
/*!
Constructor.
*/
@@ -36,8 +36,7 @@
/*!
Replace current filter values for filtering on major device class with
- the specified. This Model will not reset itself for performance reason,
- the caller shall call reset after all filters have been set.
+ the specified.
*/
void BtuiModelSortFilter::setDeviceMajorFilter( int filter, FilterMode mode )
{
@@ -48,21 +47,18 @@
/*!
Add the specified filter value for filtering on major device class
if the specified filter doesn't exist when this function is called.
- This Model will not reset itself for performance reason,
- the caller shall call reset after all filters have been set.
*/
void BtuiModelSortFilter::addDeviceMajorFilter( int filter, FilterMode mode )
{
FilterItem f(filter, mode);
if ( mFilters.indexOf(f) == -1 ) {
mFilters.append( f );
+ invalidateFilter();
}
}
/*!
Clear the specified filter value for filtering on major device class from this model.
- This Model will not reset itself for performance reason,
- the caller shall call reset after all filters have been set.
*/
void BtuiModelSortFilter::clearDeviceMajorFilter( int filter, FilterMode mode )
{
@@ -70,23 +66,21 @@
int i = mFilters.indexOf(f);
if ( i > -1 ) {
mFilters.removeAt( i );
+ invalidateFilter();
}
}
/*!
clear all filters for filtering on major device class.
- This Model will not reset itself for performance reason,
- the caller shall call reset after all filters have been set.
+ This Model will reset itself.
*/
void BtuiModelSortFilter::clearDeviceMajorFilters()
{
// model reset is needed if there are filters :
- bool shReset = ( mFilters.size() > 0 );
-
- if ( shReset ) {
- reset();
+ if ( mFilters.size() > 0 ) {
+ mFilters.clear();
+ invalidateFilter();
}
- mFilters.clear();
}
/*!
@@ -110,7 +104,7 @@
// the row shall pass all filters:
for (int i = 0; i < mFilters.size(); i++ ) {
- if ( mFilters.at(i).mFilter == BtDeviceModel::NullProperty ) {
+ if ( mFilters.at(i).mFilter == BtuiDevProperty::NullProperty ) {
accepted = true; // There is no filter, we accept all
}
else {
@@ -122,12 +116,12 @@
accepted = majorProperty == mFilters.at(i).mFilter ;
break;
case AtLeastMatch:
- // accept if it matches all specified filters:
+ // accept if it matches all specified properties:
accepted = ( mFilters.at(i).mFilter ==
( majorProperty & mFilters.at(i).mFilter ) );
break;
case RoughMatch:
- // Accept if it matches one of specified filters:
+ // Accept if it matches one of specified properties:
accepted = (majorProperty & mFilters.at(i).mFilter) != 0;
break;
case Exclusive:
@@ -138,6 +132,9 @@
accepted = false;
}
}
+ // Break out of the loop at first non-accepted condition
+ if (!accepted)
+ break;
}
if (accepted) {
// emit signal to inform a row has been accepted by fitler,
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btui/bwins/btdevsettingframeworku.def Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,24 @@
+EXPORTS
+ ?aboutToClose@BtAbstractDevSetting@@UAEXXZ @ 1 NONAME ; void BtAbstractDevSetting::aboutToClose(void)
+ ??0BtAbstractDevSetting@@QAE@ABVQString@@PAVQObject@@@Z @ 2 NONAME ; BtAbstractDevSetting::BtAbstractDevSetting(class QString const &, class QObject *)
+ ?tr@BtAbstractDevSetting@@SA?AVQString@@PBD0H@Z @ 3 NONAME ; class QString BtAbstractDevSetting::tr(char const *, char const *, int)
+ ?staticMetaObject@BtAbstractDevSetting@@2UQMetaObject@@B @ 4 NONAME ; struct QMetaObject const BtAbstractDevSetting::staticMetaObject
+ ?tr@BtAbstractDevSetting@@SA?AVQString@@PBD0@Z @ 5 NONAME ; class QString BtAbstractDevSetting::tr(char const *, char const *)
+ ?isSettingAvailable@BtAbstractDevSetting@@UAE_NXZ @ 6 NONAME ; bool BtAbstractDevSetting::isSettingAvailable(void)
+ ?trUtf8@BtAbstractDevSetting@@SA?AVQString@@PBD0@Z @ 7 NONAME ; class QString BtAbstractDevSetting::trUtf8(char const *, char const *)
+ ?getStaticMetaObject@BtAbstractDevSetting@@SAABUQMetaObject@@XZ @ 8 NONAME ; struct QMetaObject const & BtAbstractDevSetting::getStaticMetaObject(void)
+ ??_EBtDevSettingInterface@@UAE@I@Z @ 9 NONAME ; BtDevSettingInterface::~BtDevSettingInterface(unsigned int)
+ ?trUtf8@BtAbstractDevSetting@@SA?AVQString@@PBD0H@Z @ 10 NONAME ; class QString BtAbstractDevSetting::trUtf8(char const *, char const *, int)
+ ?aboutToBackground@BtAbstractDevSetting@@UAEXXZ @ 11 NONAME ; void BtAbstractDevSetting::aboutToBackground(void)
+ ??_EBtAbstractDevSetting@@UAE@I@Z @ 12 NONAME ; BtAbstractDevSetting::~BtAbstractDevSetting(unsigned int)
+ ?aboutToForeground@BtAbstractDevSetting@@UAEXXZ @ 13 NONAME ; void BtAbstractDevSetting::aboutToForeground(void)
+ ?metaObject@BtAbstractDevSetting@@UBEPBUQMetaObject@@XZ @ 14 NONAME ; struct QMetaObject const * BtAbstractDevSetting::metaObject(void) const
+ ?qt_metacast@BtAbstractDevSetting@@UAEPAXPBD@Z @ 15 NONAME ; void * BtAbstractDevSetting::qt_metacast(char const *)
+ ??1BtAbstractDevSetting@@UAE@XZ @ 16 NONAME ; BtAbstractDevSetting::~BtAbstractDevSetting(void)
+ ?qt_metacall@BtAbstractDevSetting@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 17 NONAME ; int BtAbstractDevSetting::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?getRemote@BtAbstractDevSetting@@QBEABVQString@@XZ @ 18 NONAME ; class QString const & BtAbstractDevSetting::getRemote(void) const
+ ?loadDevSettingInterfaces@BtDevSettingPluginLoader@@SA?AV?$QList@PAVBtDevSettingInterface@@@@XZ @ 19 NONAME ; class QList<class BtDevSettingInterface *> BtDevSettingPluginLoader::loadDevSettingInterfaces(void)
+ ?settingAvailabilityChanged@BtAbstractDevSetting@@IAEXPAV1@_N@Z @ 20 NONAME ; void BtAbstractDevSetting::settingAvailabilityChanged(class BtAbstractDevSetting *, bool)
+ ?getSettingWidget@BtAbstractDevSetting@@UAEPAVHbWidget@@XZ @ 21 NONAME ; class HbWidget * BtAbstractDevSetting::getSettingWidget(void)
+ ??1BtDevSettingInterface@@UAE@XZ @ 22 NONAME ; BtDevSettingInterface::~BtDevSettingInterface(void)
+
--- a/bluetoothengine/btui/bwins/btuidelegateu.def Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/bwins/btuidelegateu.def Wed Jun 23 18:23:52 2010 +0300
@@ -16,4 +16,5 @@
?getSettingModel@BtAbstractDelegate@@IAEPAVBtSettingModel@@XZ @ 15 NONAME ; class BtSettingModel * BtAbstractDelegate::getSettingModel(void)
?getDeviceModel@BtAbstractDelegate@@IAEPAVBtDeviceModel@@XZ @ 16 NONAME ; class BtDeviceModel * BtAbstractDelegate::getDeviceModel(void)
?trUtf8@BtAbstractDelegate@@SA?AVQString@@PBD0H@Z @ 17 NONAME ; class QString BtAbstractDelegate::trUtf8(char const *, char const *, int)
+ ?isBtPowerOn@BtAbstractDelegate@@IAE_NXZ @ 18 NONAME ; bool BtAbstractDelegate::isBtPowerOn(void)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btui/eabi/btdevsettingframeworku.def Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,22 @@
+EXPORTS
+ _ZN20BtAbstractDevSetting11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME
+ _ZN20BtAbstractDevSetting11qt_metacastEPKc @ 2 NONAME
+ _ZN20BtAbstractDevSetting12aboutToCloseEv @ 3 NONAME
+ _ZN20BtAbstractDevSetting16getSettingWidgetEv @ 4 NONAME
+ _ZN20BtAbstractDevSetting16staticMetaObjectE @ 5 NONAME DATA 16
+ _ZN20BtAbstractDevSetting17aboutToBackgroundEv @ 6 NONAME
+ _ZN20BtAbstractDevSetting17aboutToForegroundEv @ 7 NONAME
+ _ZN20BtAbstractDevSetting18isSettingAvailableEv @ 8 NONAME
+ _ZN20BtAbstractDevSetting19getStaticMetaObjectEv @ 9 NONAME
+ _ZN20BtAbstractDevSetting26settingAvailabilityChangedEPS_b @ 10 NONAME
+ _ZN20BtAbstractDevSettingC1ERK7QStringP7QObject @ 11 NONAME
+ _ZN20BtAbstractDevSettingC2ERK7QStringP7QObject @ 12 NONAME
+ _ZN20BtAbstractDevSettingD0Ev @ 13 NONAME
+ _ZN20BtAbstractDevSettingD1Ev @ 14 NONAME
+ _ZN20BtAbstractDevSettingD2Ev @ 15 NONAME
+ _ZN24BtDevSettingPluginLoader24loadDevSettingInterfacesEv @ 16 NONAME
+ _ZNK20BtAbstractDevSetting10metaObjectEv @ 17 NONAME
+ _ZNK20BtAbstractDevSetting9getRemoteEv @ 18 NONAME
+ _ZTI20BtAbstractDevSetting @ 19 NONAME
+ _ZTV20BtAbstractDevSetting @ 20 NONAME
+
--- a/bluetoothengine/btui/eabi/btuidelegateu.def Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/eabi/btuidelegateu.def Wed Jun 23 18:23:52 2010 +0300
@@ -15,4 +15,5 @@
_ZNK18BtAbstractDelegate10metaObjectEv @ 14 NONAME
_ZTI18BtAbstractDelegate @ 15 NONAME
_ZTV18BtAbstractDelegate @ 16 NONAME
+ _ZN18BtAbstractDelegate11isBtPowerOnEv @ 17 NONAME
--- a/bluetoothengine/btui/inc/bluetoothtrace.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/inc/bluetoothtrace.h Wed Jun 23 18:23:52 2010 +0300
@@ -1,24 +1,19 @@
/*
-* ============================================================================
-* Name : bluetoothtrace.h
-* Part of : BluetoothUI / bluetoothuimodel *** Info from the SWAD
-* Description : API declaration of run-time debug tracing
-*
-* Copyright © 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:
-* Nokia Corporation
-* ============================================================================
-* Template version: 4.2
-*/
+ * 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:
+ *
+ */
#ifndef BLUETOOTHTRACE_H
#define BLUETOOTHTRACE_H
--- a/bluetoothengine/btui/inc/bluetoothuitrace.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/inc/bluetoothuitrace.h Wed Jun 23 18:23:52 2010 +0300
@@ -1,24 +1,19 @@
/*
-* ============================================================================
-* Name : bluetoothuitrace.h
-* Part of : BluetoothUI / bluetoothuimodel *** Info from the SWAD
-* Description : API declaration of run-time debug tracing in bluetoothui project
-*
-* Copyright © 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:
-* Nokia Corporation
-* ============================================================================
-* Template version: 4.2
-*/
+ * 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:
+ *
+ */
#ifndef BLUETOOTHUITRACE_H
#define BLUETOOTHUITRACE_H
--- a/bluetoothengine/btui/inc/btdevicemodel.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/inc/btdevicemodel.h Wed Jun 23 18:23:52 2010 +0300
@@ -67,65 +67,10 @@
LastUsedTimeRole, // QDateTime
RssiRole, // QVariant::Int
MajorPropertyRole, // QVariant::Int, bits of DevMajorProperty
- MinorPropertyRole, // QVariant::Int, bits according to an item from DevMajorProperty
+ MinorPropertyRole, // QVariant::Int, bits of DevMinorProperty
CoDRole, // QVariant::Int, the value of Class of Device
};
- /*
- * Major device property values.
- */
- enum DevMajorProperty {
- NullProperty = 0x00000000, // device without any specific filter.
- Bonded = 0x00000001, // device is in registry and bonded with phone
- Blocked = 0x00000002, // device is in registry and blocked by user
- RecentlyUsed = 0x00000004, // device is in registry and was used in last 30 days.
- Trusted = 0x00000008, // device is in registry and authorized by user.
- InRegistry = 0x00000010, // device exists in registry.
-
- Connected = 0x00000020, // device is currently connected to one or more
- // services managed by Bluetooth Engine.
- Connectable = 0x00000040, // device is connectable to one or more
- // services managed by Bluetooth Engine.
- InRange = 0x00000100, // device is in range
-
- // bits re-defined according to Class of Device:
- Computer = 0x00010000, // a computer
- Phone = 0x00020000, // a phone
- LANAccessDev = 0x00040000, // a LAN access point
- AVDev = 0x00080000, // an A/V device
- Peripheral = 0x00100000, // a peripheral
- ImagingDev = 0x00200000, // an imaging device
- WearableDev = 0x00400000, // a wearable device
- Toy = 0x00800000, // a toy
- HealthDev = 0x01000000, // a health device
- UncategorizedDev = 0x02000000, // a generic device that is uncategorized
-
- // all properties derived from BT registry
- RegistryProperties = Bonded |
- Blocked | RecentlyUsed | Trusted | InRegistry,
-
- // all properties derived from CoD
- CodProperties = Computer | Phone | LANAccessDev |
- AVDev | Peripheral | ImagingDev | WearableDev |
- Toy | HealthDev | UncategorizedDev,
- };
-
- /*
- * Minor device filters for major property \code AVDev \endcode
- */
- enum AVDevMinorProperty {
- Carkit = 0x00000001,
- Headset = 0x00000002,
- };
-
- /*
- * Minor device filters for major property \code Peripheral \endcode
- */
- enum PeripheralMinorProperty {
- Mouse = 0x00000001,
- Keyboard = 0x00000002,
- };
-
public:
explicit BtDeviceModel( QObject *parent = 0 );
--- a/bluetoothengine/btui/inc/btqtconstants.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/inc/btqtconstants.h Wed Jun 23 18:23:52 2010 +0300
@@ -19,6 +19,7 @@
#define BTQTCONSTANTS_H
#include <btengconstants.h>
+#include <btserversdkcrkeys.h>
// RSSI value range: -127dB ~ +20dB
@@ -32,21 +33,35 @@
const int RssiInvalid = RssiMinRange - 1;
+enum PowerStateQtValue {
+ BtPowerOff = 0,
+ BtPowerOn,
+ BtPowerUnknown // only for error situations
+};
+
+enum DisconnectOption {
+ ServiceLevel = 0,
+ PhysicalLink,
+ AllOngoingConnections,
+ DisconUnknown
+};
+
enum VisibilityMode {
BtHidden = 0x10, // using a different number space than TBTVisibilityMode
BtVisible,
BtTemporary,
- BtUnknown
-
+ BtVisibilityUnknown
};
// used for mapping between UI row and VisibilityMode item
enum VisibilityModeUiRowMapping {
UiRowBtHidden = 0,
UiRowBtVisible,
- UiRowBtTemporary
+ UiRowBtTemporary,
+ UiRowBtUnknown
};
+
inline VisibilityMode QtVisibilityMode(TBTVisibilityMode btEngMode)
{
VisibilityMode mode;
@@ -61,7 +76,7 @@
mode = BtTemporary;
break;
default:
- mode = BtUnknown;
+ mode = BtVisibilityUnknown;
}
return mode;
}
@@ -85,5 +100,36 @@
return mode;
}
+inline PowerStateQtValue QtPowerMode(TBTPowerStateValue btEngMode)
+{
+ PowerStateQtValue mode;
+ switch(btEngMode) {
+ case EBTPowerOff:
+ mode = BtPowerOff;
+ break;
+ case EBTPowerOn:
+ mode = BtPowerOn;
+ break;
+ default:
+ mode = BtPowerUnknown; // error
+ }
+ return mode;
+}
+
+inline TBTPowerStateValue BtEngPowerState(PowerStateQtValue qtPowerState)
+{
+ TBTPowerStateValue btEngPowerState;
+ switch (qtPowerState){
+ case BtPowerOff:
+ btEngPowerState = EBTPowerOff;
+ break;
+ case BtPowerOn:
+ btEngPowerState = EBTPowerOn;
+ break;
+ default:
+ btEngPowerState = (TBTPowerStateValue)KErrUnknown;
+ }
+ return btEngPowerState;
+}
#endif // BTQTCONSTANTS_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btui/inc/btuidevtypemap.h Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,164 @@
+/*
+ * 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:
+ *
+ */
+
+#ifndef BTUIDEVTYPEMAP_H
+#define BTUIDEVTYPEMAP_H
+
+#include <qglobal.h>
+#include <btdevice.h>
+
+class BtuiDevProperty
+{
+public: // type definitions:
+ /*
+ * Major device property values.
+ */
+ enum DevMajorProperty {
+ NullProperty = 0x00000000, // device without any specific filter.
+ Bonded = 0x00000001, // device is in registry and bonded with phone
+ Blocked = 0x00000002, // device is in registry and blocked by user
+ RecentlyUsed = 0x00000004, // device is in registry and was used in last 30 days.
+ Trusted = 0x00000008, // device is in registry and authorized by user.
+ InRegistry = 0x00000010, // device exists in registry.
+
+ Connected = 0x00000020, // device is currently connected to one or more
+ // services managed by Bluetooth Engine.
+ Connectable = 0x00000040, // device is connectable to one or more
+ // services managed by Bluetooth Engine.
+ InRange = 0x00000100, // device is in range
+
+ // bits re-defined according to Class of Device:
+ Computer = 0x00010000, // a computer
+ Phone = 0x00020000, // a phone
+ LANAccessDev = 0x00040000, // a LAN access point
+ AVDev = 0x00080000, // an A/V device
+ Peripheral = 0x00100000, // a peripheral (input device)
+ ImagingDev = 0x00200000, // an imaging device
+ WearableDev = 0x00400000, // a wearable device
+ Toy = 0x00800000, // a toy
+ HealthDev = 0x01000000, // a health device
+ UncategorizedDev = 0x02000000, // a generic device that is uncategorized
+
+ // all properties derived from BT registry
+ RegistryProperties = Bonded |
+ Blocked | RecentlyUsed | Trusted | InRegistry,
+
+ // all properties derived from CoD
+ CodProperties = Computer | Phone | LANAccessDev |
+ AVDev | Peripheral | ImagingDev | WearableDev |
+ Toy | HealthDev | UncategorizedDev,
+ };
+
+ /*
+ * Minor device filters for major property \code AVDev \endcode
+ */
+ enum AVDevMinorProperty {
+ Carkit = 0x00000001,
+ Headset = 0x00000002,
+ };
+
+ /*
+ * Minor device filters for major property \code Peripheral \endcode
+ */
+ enum PeripheralMinorProperty {
+ Mouse = 0x00000001,
+ Keyboard = 0x00000002,
+ };
+
+public:
+ static void mapDeiveType(int &majorProperty, int &minorProperty, int cod );
+
+};
+
+
+class DevTypeMapping
+{
+public:
+ int majorDevClass; // major device class value from CoD
+ int minorDevClass; // minor device class value from CoD
+ int majorProperty; // one of major properties defined in BtDeviceModel
+ int minorProperty; // one of minor properties defined in BtDeviceModel
+};
+
+// mapping table from major and minor Device Classes to device types
+// which are specifically defined in Bluetooth ui namespace.
+// (Note audio device mapping is not in this table due to its complex logic)
+static const DevTypeMapping DeviceTypeMappingTable[] =
+{
+{EMajorDeviceComputer, 0, BtuiDevProperty::Computer, 0 },
+{EMajorDevicePhone, 0, BtuiDevProperty::Phone, 0 },
+{EMajorDeviceLanAccessPoint, 0, BtuiDevProperty::LANAccessDev, 0},
+{EMajorDevicePeripheral, EMinorDevicePeripheralKeyboard,
+ BtuiDevProperty::Peripheral,
+ BtuiDevProperty::Keyboard},
+{EMajorDevicePeripheral, EMinorDevicePeripheralPointer,
+ BtuiDevProperty::Peripheral,
+ BtuiDevProperty::Mouse},
+{EMajorDeviceImaging, 0, BtuiDevProperty::ImagingDev, 0},
+{EMajorDeviceWearable, 0, BtuiDevProperty::WearableDev, 0},
+{EMajorDeviceToy, 0, BtuiDevProperty::Toy, 0}
+};
+
+static const int DeviceTypeMappingTableSize =
+ sizeof( DeviceTypeMappingTable ) / sizeof( DevTypeMapping );
+
+inline void BtuiDevProperty::mapDeiveType(
+ int &majorProperty, int &minorProperty, int cod )
+{
+ // remove garbage value.
+ majorProperty = 0;
+ minorProperty = 0;
+ TBTDeviceClass codClass = TBTDeviceClass( cod );
+
+ // device type must be mapped according to CoD:
+ int majorServiceCls = codClass.MajorServiceClass();
+ int majorDevCls = codClass.MajorDeviceClass();
+ int minorDevCls = codClass.MinorDeviceClass();
+
+ int i;
+ for (i = 0; i < DeviceTypeMappingTableSize; ++i ) {
+ if ( DeviceTypeMappingTable[i].majorDevClass == majorDevCls &&
+ ( DeviceTypeMappingTable[i].minorDevClass == 0 ||
+ DeviceTypeMappingTable[i].minorDevClass == minorDevCls ) ) {
+ // device classes match a item in table, get the mapping:
+ majorProperty |= DeviceTypeMappingTable[i].majorProperty;
+ minorProperty |= DeviceTypeMappingTable[i].minorProperty;
+ break;
+ }
+ }
+
+ // AV device mapping are not defined in the table,
+ // do mapping here if no device type has been mapped so far.
+ // This part is not reliably working with all AV devices.
+ if ( i == DeviceTypeMappingTableSize) {
+ // audio device, carkit, headset or speaker:
+ if( ( majorDevCls == EMajorDeviceAV)
+ || (majorServiceCls == EMajorServiceRendering
+ && majorDevCls != EMajorDeviceImaging) ) {
+ majorProperty |= BtuiDevProperty::AVDev;
+ if( minorDevCls == EMinorDeviceAVCarAudio ) {
+ // carkit:
+ minorProperty |= BtuiDevProperty::Carkit;
+ }
+ else {
+ // headset:
+ minorProperty |= BtuiDevProperty::Headset;
+ }
+ }
+ }
+}
+#endif // BTUIDEVTYPEMAP_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btui/inc/btuiiconutil.h Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,152 @@
+/*
+ * 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:
+ *
+ */
+
+#ifndef BTUIICONUTIL_H
+#define BTUIICONUTIL_H
+
+#include <qglobal.h>
+#include <bt_sock.h>
+#include <HbIcon>
+#include "btdevicemodel.h"
+#include "btuidevtypemap.h"
+
+enum BtuiIconCorner {
+ BtuiNoCorners = 0x00, // No badge needed
+ BtuiBottomLeft = 0x01, // Badge for : Paired, Paired & Authorized, Blocked
+ BtuiBottomRight = 0x02, // Badge for : Connected
+ BtuiTopLeft = 0x04, // Badge for : Signal strength
+ BtuiTopRight = 0x08 // Badge for : Battery low
+};
+
+/*!
+ Creates a HbIcon according to the type of the CBTDevice dev,
+ Creates badges in the icon's 4 corners according to the parameters
+ passed to the function
+ bottom left corner: Paired, Paired & Authorized, Blocked
+ bottom right corner: Connected
+ top right corner: Battery low
+ top left corner: signal strength
+*/
+
+inline void setBadging(HbIcon &deviceIcon, int majorProperty, int corners)
+{
+ if (corners & BtuiBottomLeft) {
+ if (majorProperty & BtuiDevProperty::Trusted ) {
+ HbIcon badge("qtg_small_authorised");
+ badge.setIconName("qtg_small_authorised");
+ deviceIcon.addBadge(Qt::AlignLeft|Qt::AlignBottom, badge);
+ }
+ else if (majorProperty & BtuiDevProperty::Bonded) {
+ HbIcon badge("qtg_small_pair");
+ badge.setIconName("qtg_small_pair");
+ deviceIcon.addBadge(Qt::AlignLeft|Qt::AlignBottom, badge);
+ }
+ else if (majorProperty & BtuiDevProperty::Blocked) {
+ HbIcon badge("qtg_small_blocked");
+ badge.setIconName("qtg_small_blocked");
+ deviceIcon.addBadge(Qt::AlignLeft|Qt::AlignBottom, badge);
+ }
+ }
+ if (corners & BtuiBottomRight) {
+ if (majorProperty & BtuiDevProperty::Connected) {
+ HbIcon badge("qtg_small_connection");
+ badge.setIconName("qtg_small_connection");
+ deviceIcon.addBadge(Qt::AlignRight|Qt::AlignBottom, badge);
+ }
+ }
+ if (corners & BtuiTopRight) {
+ //ToDo: when power level added to model
+ }
+ if (corners & BtuiTopLeft) {
+ //ToDo: add signal strength.
+ }
+}
+
+
+/*!
+ * builds device icon based on device type, including badging with connection info, etc.
+ *
+ * \param cod the integer value of the CoD.
+ * \param majorProperty the major property consisting of BtuiDevProperty::DevMajorProperty bits
+ * \param corners specifies which corners of primary icon
+ * should be badged with connectivity, pairing, trust, etc information
+ * \return an HbIcon
+ *
+ */
+inline HbIcon getBadgedDeviceTypeIcon(int cod, int majorProperty = 0, int corners = BtuiNoCorners)
+{
+ int uiMajorDevice;
+ int uiMinorDevice;
+ // device type is mapped according to CoD:
+ BtuiDevProperty::mapDeiveType(uiMajorDevice, uiMinorDevice, cod);
+
+ // Set icon according to the device category
+ QString name;
+ if (uiMajorDevice & BtuiDevProperty::Phone) {
+ name = QString("qtg_large_mobile");
+ }
+ else if (uiMajorDevice & BtuiDevProperty::Computer) {
+ name = QString("qtg_large_computer");
+ }
+ else if (uiMajorDevice & BtuiDevProperty::AVDev) {
+ name = QString("qtg_large_generic_audio");
+ }
+ else if (uiMajorDevice & BtuiDevProperty::Peripheral) {
+ // todo: map to keyboard & mouse from uiMinorDevice
+ name = QString("qtg_large_input_device");
+ }
+ else {
+ name = QString("qtg_large_generic_bluetooth");
+ }
+ HbIcon icon(name);
+ if (corners > BtuiNoCorners) {
+ setBadging(icon, majorProperty, corners);
+ }
+ return icon;
+}
+
+/*
+ * returns device type as a translated string based on
+ * Class of Device (CoD) parameter
+ */
+inline QString getDeviceTypeString( int cod )
+{
+ int uiMajorDevice;
+ int uiMinorDevice;
+ // device type is mapped according to CoD:
+ BtuiDevProperty::mapDeiveType(uiMajorDevice, uiMinorDevice, cod);
+
+ // Set icon according to the device category
+ if (uiMajorDevice & BtuiDevProperty::Phone) {
+ return hbTrId("txt_bt_list_phone");
+ }
+ else if (uiMajorDevice & BtuiDevProperty::Computer) {
+ return hbTrId("txt_bt_list_computer");
+ }
+ else if (uiMajorDevice & BtuiDevProperty::AVDev) {
+ return hbTrId("txt_bt_list_audio_device");
+ }
+ else if (uiMajorDevice & BtuiDevProperty::Peripheral) {
+ // todo: map to keyboard & mouse
+ return hbTrId("txt_bt_list_input_device");
+ }
+ else {
+ return hbTrId("txt_bt_list_other");
+ }
+}
+
+#endif // BTUIMODELUTIL_H
--- a/bluetoothengine/btui/inc/btuiutil.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/inc/btuiutil.h Wed Jun 23 18:23:52 2010 +0300
@@ -1,25 +1,19 @@
/*
-* ============================================================================
-* Name : btuiutil.h
-* Part of : BluetoothUI / bluetoothuimodel *** Info from the SWAD
-* Description : utilities in the model for some often used functions,
-* e.g. conversions between Qt and Symbian types.
-*
-* Copyright © 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:
-* Nokia Corporation
-* ============================================================================
-* Template version: 4.2
-*/
+ * 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:
+ *
+ */
#ifndef BTUIUTIL_H
#define BTUIUTIL_H
--- a/bluetoothengine/btui/inc/traceconfig.h Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/inc/traceconfig.h Wed Jun 23 18:23:52 2010 +0300
@@ -1,24 +1,19 @@
/*
-* ============================================================================
-* Name : traceconfig_template.h
-* Part of : BluetoothUI / bluetoothuimodel *** Info from the SWAD
-* Description : Configuration of debug tracing in bluetoothuimodel
-*
-* Copyright © 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:
-* Nokia Corporation
-* ============================================================================
-* Template version: 4.2
-*/
+ * 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:
+ *
+ */
#ifndef BLUETOOTHTRACECONFIG_H
#define BLUETOOTHTRACECONFIG_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btui/rom/btui_resources.iby Wed Jun 23 18:23:52 2010 +0300
@@ -0,0 +1,30 @@
+/*
+* 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:
+*
+*/
+
+#ifndef __BTCPPLUGIN_RESOURCES_IBY__
+#define __BTCPPLUGIN_RESOURCES_IBY__
+
+#include <data_caging_paths_for_iby.hrh>
+#include <bldvariant.hrh>
+#ifdef __BT
+
+//For localization resource
+data=DATAZ_/QT_TRANSLATIONS_DIR/btviews.qm QT_TRANSLATIONS_DIR/btviews.qm
+data=DATAZ_/QT_TRANSLATIONS_DIR/btdialogs.qm QT_TRANSLATIONS_DIR/btdialogs.qm
+
+#endif //__BT
+#endif // __BTCPPLUGIN_RESOURCES_IBY__
--- a/btobexprofiles/obexreceiveservices/bip/group/obexservicebip.mmp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexreceiveservices/bip/group/obexservicebip.mmp Wed Jun 23 18:23:52 2010 +0300
@@ -41,6 +41,9 @@
USERINCLUDE ../inc
SYSTEMINCLUDE ../../../inc ../../../../inc
MW_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE /epoc32/include/mw/hb/hbcore
+SYSTEMINCLUDE /epoc32/include/mw/hb/hbwidgets
+SYSTEMINCLUDE /epoc32/include/platform/mw/btservices
LIBRARY euser.lib // Base library
LIBRARY irobex.lib // For Object exchange
@@ -62,7 +65,8 @@
LIBRARY btengdevman.lib //btengdevman.dll
LIBRARY btengsettings.lib //btengsettings.dll
LIBRARY btengconnman.lib //btengconnman.dll
-
+LIBRARY HbCore.lib
+LIBRARY HbWidgets.lib
DEBUGLIBRARY flogger.lib // For logging
--- a/btobexprofiles/obexreceiveservices/bip/inc/BIPController.h Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexreceiveservices/bip/inc/BIPController.h Wed Jun 23 18:23:52 2010 +0300
@@ -24,22 +24,33 @@
#include <e32base.h>
#include <obex.h>
#include <obexutilsmessagehandler.h>
-#include <obexutilsuilayer.h>
-#include <obexutilsdialog.h>
#include "obexutilspropertynotifier.h"
#include "debug.h"
#include <SrcsInterface.h>
#include <obexutilspropertynotifier.h>
-#include <obexutilsglobalprogressdialog.h>
#include <btengsettings.h>
#include "btengdevman.h"
#include <obexutilsdialog.h>
+#include <hbdevicedialogsymbian.h>
+#include <hbsymbianvariant.h>
// FORWARD DECLARATIONS
class CBIPCapabilityHandler;
class CBIPImageHandler;
+/**
+* Backup status.
+* The value is controlled by FileManager
+*/
+enum TFileManagerBkupStatusType
+ {
+ EFileManagerBkupStatusUnset = 0x00000000,
+ EFileManagerBkupStatusBackup = 0x00000001,
+ EFileManagerBkupStatusRestore = 0x00000002
+ };
+
+const TUid KUidMsgTypeBt = {0x10009ED5};
// CLASS DECLARATION
@@ -48,8 +59,9 @@
*/
NONSHARABLE_CLASS (CBIPController): public CSrcsInterface, public MObexServerNotify,
public MObexUtilsPropertyNotifyHandler,
- public MGlobalProgressCallback, public MGlobalNoteCallback,
- public MBTEngDevManObserver
+ public MObexUtilsDialogObserver,
+ public MBTEngDevManObserver,
+ public MHbDeviceDialogObserver
{
public:
static CBIPController* NewL();
@@ -78,15 +90,13 @@
private: // from MObexUtilsPropertyNotifyHandler
void HandleNotifyL(TMemoryPropertyCheckType aCheckType);
-private: // from MGlobalProgressCallback
- void HandleGlobalProgressDialogL(TInt aSoftkey);
-
-private: // from MGlobalNoteCallback
- void HandleGlobalNoteDialogL(TInt aSoftkey);
private: // from MBTEngDevManObserver
void HandleGetDevicesComplete(TInt aErr, CBTDeviceArray* aDeviceArray);
+private: //from MObexUtilsDialogObserver
+ void DialogDismissed(TInt aButtonId);
+
private:
CBIPController();
void ConstructL();
@@ -101,10 +111,16 @@
TBool CheckCapacityL();
void LaunchReceivingIndicatorL();
- inline TBool ReceivingIndicatorActive() const { return (iProgressDialog || iWaitDialog); }
- void UpdateReceivingIndicator();
+ inline TBool ReceivingIndicatorActive() const { return (iDialogActive); }
+ void UpdateReceivingIndicatorL();
void CloseReceivingIndicator(TBool aResetDisplayedState = ETrue);
TInt GetDriveWithMaximumFreeSpaceL();
+ TBool IsBackupRunning();
+ TBool ProcessExists( const TSecureId& aSecureId );
+
+private:
+ void DataReceived(CHbSymbianVariantMap& aData);
+ void DeviceDialogClosed(TInt aCompletionCode);
private:
enum TBipTransferState
@@ -117,6 +133,7 @@
ETransferPutCancel,
};
+
private: // Data
CBIPCapabilityHandler* iBIPCapabilityHandler;
CObexBufObject* iBTObject;
@@ -138,14 +155,15 @@
CBufFlat *iBuf;
TBool iLengthHeaderReceived;
TInt iTotalSizeByte;
- CGlobalProgressDialog* iProgressDialog;
- CGlobalDialog* iWaitDialog;
TBool iNoteDisplayed;
CBTEngDevMan* iDevMan;
CBTDeviceArray* iResultArray;
TBTDeviceName iRemoteDeviceName;
TFileName iReceivingFileName;
TFileName iCenRepFolder;
+ CObexUtilsDialog* iDialog;
+ CHbDeviceDialogSymbian* iProgressDialog;
+ TBool iDialogActive;
};
_LIT(KBipPanicCategory, "BIP");
--- a/btobexprofiles/obexreceiveservices/bip/inc/BIPXMLWriter.h Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexreceiveservices/bip/inc/BIPXMLWriter.h Wed Jun 23 18:23:52 2010 +0300
@@ -22,7 +22,6 @@
//INCLUDES
#include <e32base.h>
#include <f32file.h>
-#include <obexutilsuilayer.h>
#include "debug.h"
// CONSTANTS
--- a/btobexprofiles/obexreceiveservices/bip/src/BIPController.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexreceiveservices/bip/src/BIPController.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -17,35 +17,33 @@
// INCLUDE FILES
-#include <avkon.hrh> // AVKON components
#include "BIPController.h"
#include "BIPCapabilityHandler.h"
#include "BIPImageHandler.h"
#include <e32base.h>
-#include <StringLoader.h> // Series 60 localisation stringloader
#include <obexutilsmessagehandler.h>
-#include <obexutilsuilayer.h>
-#include <obexutilsdialog.h>
-#include <UiklafInternalCRKeys.h>
-#include <Obexutils.rsg>
#include <sysutil.h>
#include <bautils.h>
#include <driveinfo.h>
-#include <AknWaitDialog.h>
#include <btengdomaincrkeys.h>
#include <e32math.h>
#include <es_sock.h>
#include <bt_sock.h>
#include <msvids.h>
#include "debug.h"
+#include <bluetoothdevicedialogs.h>
+#include <hbtextresolversymbian.h>
// CONSTANTS
_LIT8(KBipCapabilityType, "x-bt/img-capabilities\0");
-
+const TInt KFileManagerUID3 = 0x101F84EB; /// File Manager application UID3
+const TInt KBufferSize = 0x10000; // 64 kB
+_LIT( KBTDevDialogId, "com.nokia.hb.btdevicedialog/1.0" );
+_LIT(KLocFileName, "btdialogs_");
+_LIT(KPath, "z:/resource/qt/translations/");
-const TInt KBufferSize = 0x10000; // 64 kB
// ================= MEMBER FUNCTIONS =======================
@@ -80,6 +78,12 @@
iResultArray = new(ELeave) CBTDeviceArray(1);
// Get default folder from CenRep
TObexUtilsMessageHandler::GetCenRepKeyStringValueL(KCRUidBluetoothEngine, KLCReceiveFolder, iCenRepFolder);
+ iDialog = CObexUtilsDialog::NewL(this);
+ TBool ok = HbTextResolverSymbian::Init(KLocFileName, KPath);
+ if (!ok)
+ {
+ User::Leave( KErrNotFound );
+ }
TRACE_FUNC_EXIT
}
@@ -96,8 +100,6 @@
delete iLowMemoryActiveCDrive;
delete iLowMemoryActiveMMC;
delete iBuf;
- delete iProgressDialog;
- delete iWaitDialog;
delete iBTObject;
delete iDevMan;
if (iResultArray)
@@ -106,6 +108,8 @@
delete iResultArray;
}
iFs.Close();
+ delete iDialog;
+ delete iProgressDialog;
TRACE_FUNC_EXIT
}
@@ -143,8 +147,13 @@
iBTObject->Reset();
}
CancelTransfer();
- TRAP_IGNORE(TObexUtilsUiLayer::ShowGlobalConfirmationQueryL( R_BT_FAILED_TO_RECEIVE));
- }
+
+ TRAP_IGNORE(
+ HBufC* note = HbTextResolverSymbian::LoadLC(_L("txt_bt_dpophead_receiving_failed"));
+ iDialog->ShowErrorNoteL(note->Des());
+ CleanupStack::PopAndDestroy(note);
+ );
+ }
delete iBuf;
iBuf = NULL;
@@ -197,10 +206,13 @@
// ObexConnectIndication()
// ---------------------------------------------------------
//
-TInt CBIPController::ObexConnectIndication( const TObexConnectInfo& /*aRemoteInfo*/, const TDesC8& /*aInfo*/ )
+TInt CBIPController::ObexConnectIndication( const TObexConnectInfo& aRemoteInfo, const TDesC8& aInfo )
{
TRACE_FUNC
+ (void) aRemoteInfo;
+ (void) aInfo;
+
// Get remote device socket address and bluetooth name
// Remote bluetooth name will be displayed in the new message in inbox.
//
@@ -223,9 +235,10 @@
// ObexDisconnectIndication()
// ---------------------------------------------------------
//
-void CBIPController::ObexDisconnectIndication(const TDesC8& /*aInfo*/)
+void CBIPController::ObexDisconnectIndication(const TDesC8& aInfo)
{
TRACE_FUNC
+ (void) aInfo;
}
// ---------------------------------------------------------
@@ -256,7 +269,7 @@
// Checking if backup is running now - if backup process is active, then we
// need to cancel transfer - otherwise phone will freeze during receiving
// data
- if ( TObexUtilsUiLayer::IsBackupRunning() )
+ if ( IsBackupRunning() )
{
TRACE_INFO ( _L ("Backup in progress! Canceling incoming transfer."));
iBTTransferState = ETransferPutInitError;
@@ -308,7 +321,11 @@
}
if(!capacity)
{
- TRAP_IGNORE(TObexUtilsUiLayer::ShowGlobalConfirmationQueryL(R_OUT_OF_MEMORY));
+ //TRAP_IGNORE(TObexUtilsUiLayer::ShowGlobalConfirmationQueryL(R_OUT_OF_MEMORY));
+ //todo: Need to use Localized string.
+ _LIT(KText, "Not enough memory to execute operation. Delete some documents and try again.");
+ TRAP_IGNORE(iDialog->ShowErrorNoteL(KText));
+
return KErrDiskFull;
}
}
@@ -326,7 +343,11 @@
// Now we need to either create (in the first instance) or update the dialog on the UI.
if(ReceivingIndicatorActive())
{
- UpdateReceivingIndicator();
+ TRAPD(err, UpdateReceivingIndicatorL());
+ if(err < KErrNone)
+ {
+ return err;
+ }
}
else if(!iNoteDisplayed)
{
@@ -420,12 +441,15 @@
// SetPathIndication()
// ---------------------------------------------------------
//
-TInt CBIPController::SetPathIndication( const CObex::TSetPathInfo& /*aPathInfo*/,
- const TDesC8& /*aInfo*/)
+TInt CBIPController::SetPathIndication( const CObex::TSetPathInfo& aPathInfo,
+ const TDesC8& aInfo)
{
TRACE_FUNC
// SetPath is not implemented in BIP - so following IrOBEX guidance, return
// the Forbidden response code.
+ (void) aPathInfo;
+ (void) aInfo;
+
return KErrIrObexRespForbidden;
}
@@ -504,7 +528,11 @@
//
if (SysUtil::DiskSpaceBelowCriticalLevelL(&iFs, 0, iDrive))
{
- TRAP_IGNORE(TObexUtilsUiLayer::ShowGlobalConfirmationQueryL(R_OUT_OF_MEMORY));
+ //TRAP_IGNORE(TObexUtilsUiLayer::ShowGlobalConfirmationQueryL(R_OUT_OF_MEMORY));
+ //todo: Need to use Localized string.
+ _LIT(KText, "Not enough memory to execute operation. Delete some documents and try again.");
+ TRAP_IGNORE(iDialog->ShowErrorNoteL(KText));
+
User::Leave(KErrGeneral);
}
@@ -739,57 +767,83 @@
if(iTotalSizeByte > 0)
{
- iProgressDialog = CGlobalProgressDialog::NewL(this);
if(iReceivingFileName.Length() > 0)
{
- iProgressDialog->ShowProgressDialogNameSizeL(iReceivingFileName, iTotalSizeByte);
+ iProgressDialog = CHbDeviceDialogSymbian::NewL();
+ iProgressDialog->SetObserver(this);
+
+ CHbSymbianVariantMap* variantMap = CHbSymbianVariantMap::NewL();
+ CleanupStack::PushL(variantMap);
+
+ TInt dialogIdx = TBluetoothDialogParams::EReceiveProgress;
+ CHbSymbianVariant* dialogType = CHbSymbianVariant::NewL( (TAny*) &(dialogIdx),
+ CHbSymbianVariant::EInt );
+ CleanupStack::PushL(dialogType);
+ TBuf16<6> dialogTypeKey;
+ dialogTypeKey.Num(TBluetoothDialogParams::EDialogType);
+ User::LeaveIfError(variantMap->Add(dialogTypeKey, dialogType));
+ CleanupStack::Pop(dialogType);
+
+ CHbSymbianVariant* deviceName = CHbSymbianVariant::NewL( (TAny*) (&iRemoteDeviceName),
+ CHbSymbianVariant::EDes );
+ CleanupStack::PushL(deviceName);
+ TBuf16<6> deviceNameKey;
+ deviceNameKey.Num(TBluetoothDeviceDialog::EDeviceName);
+ User::LeaveIfError(variantMap->Add(deviceNameKey, deviceName));
+ CleanupStack::Pop(deviceName);
+
+ CHbSymbianVariant* fileName = CHbSymbianVariant::NewL( (TAny*) (&iReceivingFileName),
+ CHbSymbianVariant::EDes );
+ CleanupStack::PushL(fileName);
+ TBuf16<6> fileNameKey;
+ fileNameKey.Num(TBluetoothDeviceDialog::EReceivingFileName);
+ User::LeaveIfError(variantMap->Add(fileNameKey, fileName));
+ CleanupStack::Pop(fileName);
+
+ CHbSymbianVariant* fileSz = CHbSymbianVariant::NewL( (TAny*) &iTotalSizeByte,
+ CHbSymbianVariant::EInt );
+ CleanupStack::PushL(fileSz);
+ TBuf16<6> fileSzKey;
+ fileSzKey.Num(TBluetoothDeviceDialog::EReceivingFileSize);
+ User::LeaveIfError(variantMap->Add(fileSzKey, fileSz));
+ CleanupStack::Pop(fileSz);
+
+ iDialogActive = ETrue;
+ iProgressDialog->Show( KBTDevDialogId(), *variantMap, this );
+ CleanupStack::PopAndDestroy(variantMap);
}
else
{
- iProgressDialog->ShowProgressDialogL(R_BT_RECEIVING_DATA);
+ // TODO
+ iDialogActive = ETrue;
}
}
else
{
- iWaitDialog = CGlobalDialog::NewL(this);
- iWaitDialog->ShowNoteDialogL(R_BT_RECEIVING_DATA, ETrue);
+ iDialogActive = ETrue;
+ /*
+ * TODO - The functionality provided by CGlobalDialog will be removed
+ * TODO - and this will be provided by CGlobalProgressDialog.
+ */
+
}
}
-void CBIPController::UpdateReceivingIndicator()
+void CBIPController::UpdateReceivingIndicatorL()
{
if(iProgressDialog)
{
- iProgressDialog->UpdateProgressDialog(iBTObject->BytesReceived(), iTotalSizeByte);
- }
- // else we are using a wait note, so no "need" to update
- }
-
-void CBIPController::HandleGlobalProgressDialogL( TInt aSoftkey )
- {
- TRACE_FUNC
-
- if(aSoftkey == EAknSoftkeyCancel)
- {
- CancelTransfer();
- }
- else if(aSoftkey == EAknSoftkeyHide)
- {
- CloseReceivingIndicator(EFalse); // Don't reset state as only hiding
- }
- }
-
-void CBIPController::HandleGlobalNoteDialogL( TInt aSoftkey )
- {
- TRACE_FUNC
-
- if( aSoftkey == EAknSoftkeyCancel )
- {
- CancelTransfer();
- }
- else if( aSoftkey == EAknSoftkeyHide)
- {
- CloseReceivingIndicator(EFalse); // Don't reset state as only hiding
+ CHbSymbianVariantMap* variantMap = CHbSymbianVariantMap::NewL();
+ CleanupStack::PushL(variantMap);
+
+ TInt bytesReceived = iBTObject->BytesReceived();
+ CHbSymbianVariant* progress = CHbSymbianVariant::NewL( (TAny*) &bytesReceived, CHbSymbianVariant::EInt );
+ CleanupStack::PushL(progress);
+ User::LeaveIfError(variantMap->Add(_L("progress"), progress));
+ CleanupStack::Pop(progress);
+
+ iProgressDialog->Update(*variantMap);
+ CleanupStack::PopAndDestroy(variantMap);
}
}
@@ -802,16 +856,11 @@
}
if(iProgressDialog)
{
- iProgressDialog->ProcessFinished();
+ iProgressDialog->Cancel();
+ iDialogActive = EFalse;
delete iProgressDialog;
iProgressDialog = NULL;
}
- if(iWaitDialog)
- {
- iWaitDialog->ProcessFinished();
- delete iWaitDialog;
- iWaitDialog = NULL;
- }
}
// ---------------------------------------------------------
@@ -869,8 +918,10 @@
// ----------------------------------------------------------
//
//
- void CBIPController::HandleGetDevicesComplete(TInt aErr, CBTDeviceArray* /*aDeviceArray*/)
+ void CBIPController::HandleGetDevicesComplete(TInt aErr, CBTDeviceArray* aDeviceArray)
{
+ (void) aDeviceArray;
+
if ( aErr == KErrNone )
{
if ( iResultArray->Count())
@@ -890,6 +941,78 @@
}
}
+ TBool CBIPController::IsBackupRunning()
+ {
+ const TUint32 KFileManagerBkupStatus = 0x00000001;
+
+ TInt status = EFileManagerBkupStatusUnset;
+ TBool retValue = EFalse;
+ TInt err = RProperty::Get( TUid::Uid(KFileManagerUID3), KFileManagerBkupStatus,
+ status );
+ if ( err == KErrNone )
+ {
+ if ( status == EFileManagerBkupStatusBackup ||
+ status == EFileManagerBkupStatusRestore )
+ {
+ TSecureId fileManagerSecureId( KFileManagerUID3 );
+ //only returning ETrue if backup process is still active
+ retValue = ProcessExists( fileManagerSecureId );
+ }
+ }
+
+ return retValue;
+ }
+
+ TBool CBIPController::ProcessExists( const TSecureId& aSecureId )
+ {
+ _LIT( KFindPattern, "*" );
+ TFindProcess finder(KFindPattern);
+ TFullName processName;
+ while( finder.Next( processName ) == KErrNone )
+ {
+ RProcess process;
+ if ( process.Open( processName ) == KErrNone )
+ {
+ TSecureId processId( process.SecureId() );
+ process.Close();
+ if( processId == aSecureId )
+ {
+ return ETrue;
+ }
+ }
+ }
+ return EFalse;
+ }
+
+ void CBIPController::DialogDismissed(TInt aButtonId)
+ {
+ (void) aButtonId;
+ }
+
+ void CBIPController::DataReceived(CHbSymbianVariantMap& aData)
+ {
+ if(aData.Keys().MdcaPoint(0).Compare(_L("actionResult")) == 0)
+ {
+ TInt val = *(static_cast<TInt*>(aData.Get(_L("actionResult"))->Data()));
+ if(!val)
+ {
+ //Cancel has been clicked
+ CancelTransfer();
+ }
+ else
+ {
+ //Hide has been clicked
+ CloseReceivingIndicator(EFalse);
+ }
+ }
+ }
+
+ void CBIPController::DeviceDialogClosed(TInt aCompletionCode)
+ {
+ (void) aCompletionCode;
+ }
+
+
//////////////////////////// Global part ////////////////////////////
// End of File
--- a/btobexprofiles/obexreceiveservices/mtmuibluetooth/data/btmtmui.rss Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexreceiveservices/mtmuibluetooth/data/btmtmui.rss Wed Jun 23 18:23:52 2010 +0300
@@ -20,7 +20,6 @@
// INCLUDES
#include <mtmconfig.rh>
-#include <avkon.loc>
// RESOURCE DEFINITIONS
// ---------------------------------------------------------
@@ -43,7 +42,8 @@
{
MTM_COMPONENT_V2
{
- human_readable_name = qtn_query_send_via_bt;
+ //todo: Need to use localized string.
+ human_readable_name = "Via Bluetooth";
component_uid = KUidMtmServerComponentVal;
entry_point = 1;
version = VERSION_V2 {};
@@ -51,7 +51,8 @@
},
MTM_COMPONENT_V2
{
- human_readable_name = qtn_query_send_via_bt;
+ //todo: Need to use localized string.
+ human_readable_name = "Via Bluetooth";
component_uid = KUidMtmClientComponentVal;
entry_point = 1;
version = VERSION_V2 {};
@@ -59,7 +60,8 @@
},
MTM_COMPONENT_V2
{
- human_readable_name = qtn_query_send_via_bt;
+ //todo: Need to use localized string.
+ human_readable_name = "Via Bluetooth";
component_uid = KUidMtmUiComponentVal;
entry_point = 2;
version = VERSION_V2 {};
@@ -67,7 +69,8 @@
},
MTM_COMPONENT_V2
{
- human_readable_name = qtn_query_send_via_bt;
+ //todo: Need to use localized string.
+ human_readable_name = "Via Bluetooth";
component_uid = KUidMtmUiDataComponentVal;
entry_point = 1;
version = VERSION_V2 {};
--- a/btobexprofiles/obexreceiveservices/mtmuibluetooth/group/btmtmui.mmp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexreceiveservices/mtmuibluetooth/group/btmtmui.mmp Wed Jun 23 18:23:52 2010 +0300
@@ -38,6 +38,9 @@
SOURCEPATH ../src
USERINCLUDE ../inc
SYSTEMINCLUDE ../../../inc ../../../../inc
+SYSTEMINCLUDE /epoc32/include/mw/hb/hbwidgets
+SYSTEMINCLUDE /epoc32/include/mw/hb/hbcore
+
#ifdef NO101APPDEPFIXES
APP_LAYER_SYSTEMINCLUDE
#else //NO101APPDEPFIXES
--- a/btobexprofiles/obexreceiveservices/mtmuibluetooth/inc/btmtmui.h Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexreceiveservices/mtmuibluetooth/inc/btmtmui.h Wed Jun 23 18:23:52 2010 +0300
@@ -25,8 +25,7 @@
#include <btdevice.h>
#include <mtmuibas.h>
#include <btengdiscovery.h>
-
-#include <obexutilsuilayer.h>
+#include <obexutilsdialog.h>
const TUint KBTSdpObjectPush = 0x1105;
@@ -37,7 +36,8 @@
* CBtMtmUi
* Bluetooth messaging UI Module.
*/
-class CBtMtmUi : public CBaseMtmUi, public MBTEngSdpResultReceiver
+class CBtMtmUi : public CBaseMtmUi, public MBTEngSdpResultReceiver,
+ public MObexUtilsDialogObserver
{
public: // Constructors and destructor
/**
@@ -381,6 +381,11 @@
* was called; otherwise one of the system-wide error codes.
*/
void DeviceSearchComplete( CBTDevice* aDevice, TInt aErr );
+
+ /**
+ * Callback function from base class MObexUtilsDialogObserver.
+ */
+ void DialogDismissed(TInt aButtonId);
protected:
@@ -440,7 +445,7 @@
CActiveSchedulerWait iWaiter;
TInt iClientChannel;
TInt iState;
-
+ CObexUtilsDialog* iDialog;
};
#endif // CBTMTMUI_H
--- a/btobexprofiles/obexreceiveservices/mtmuibluetooth/inc/btmtmuidata.h Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexreceiveservices/mtmuibluetooth/inc/btmtmuidata.h Wed Jun 23 18:23:52 2010 +0300
@@ -23,7 +23,6 @@
// INCLUDES
#include <mtudcbas.h>
-#include <obexutilsuilayer.h>
// FORWARD DECLARATIONS
--- a/btobexprofiles/obexreceiveservices/mtmuibluetooth/src/btmtmui.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexreceiveservices/mtmuibluetooth/src/btmtmui.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -32,8 +32,6 @@
#include <mtmuidef.hrh>
#include <mtclreg.h>
-#include <obexutilsuilayer.h>
-#include <Obexutils.rsg>
#include <msvuids.h>
#include <msvids.h>
#include <obexconstants.h>
@@ -81,6 +79,7 @@
{
FLOG( _L( "[CBtMtmUi] CBtMtmUi: ~CBtMtmUi\t" ) );
delete iClientRegistry;
+ delete iDialog;
}
// Symbian OS default constructor can leave.
@@ -88,6 +87,7 @@
{
FLOG( _L( "[CBtMtmUi] CBtMtmUi: ConstructL\t" ) );
CBaseMtmUi::ConstructL();
+ iDialog = CObexUtilsDialog::NewL(this);
}
// ---------------------------------------------------------
@@ -98,9 +98,8 @@
void CBtMtmUi::GetResourceFileName( TFileName& aFileName ) const
{
FLOG( _L( "[CBtMtmUi] CBtMtmUi: GetResourceFileName\t" ) );
- aFileName = KObexUtilsFileDrive;
- aFileName += KDC_RESOURCE_FILES_DIR;
- aFileName += KObexUtilsResourceFileName;
+ (void)aFileName;
+ //todo: This function should be removed it is using avkon resource file.
}
// ---------------------------------------------------------
@@ -278,8 +277,11 @@
}
if ( retVal != KErrNone ||iState != KErrNone )
{
- resourceId = R_BT_DEV_NOT_AVAIL;
- TObexUtilsUiLayer::ShowInformationNoteL( resourceId );
+ //resourceId = R_BT_DEV_NOT_AVAIL;
+ //TObexUtilsUiLayer::ShowInformationNoteL( resourceId );
+ //todo: Need to use Localized string.
+ _LIT(KText, "Cannot establish Bluetooth connection");
+ iDialog->ShowInformationNoteL(KText);
CleanupStack::PopAndDestroy(3); // BtDevice, BtConnection, password
return CMsvCompletedOperation::NewL(
Session(),
@@ -515,8 +517,12 @@
const TInt error = progress.iError;
if ( error == KErrInUse )
{
- resourceId = R_BT_DEV_NOT_AVAIL;
- TObexUtilsUiLayer::ShowInformationNoteL( resourceId );
+ //resourceId = R_BT_DEV_NOT_AVAIL;
+ //TObexUtilsUiLayer::ShowInformationNoteL( resourceId );
+ //todo: Need to use Localized string.
+ _LIT(KText, "Cannot establish Bluetooth connection");
+ iDialog->ShowInformationNoteL(KText);
+
return KErrNone;
}
@@ -526,8 +532,12 @@
{
FLOG( _L( "[CBtMtmUi] CBtMtmUi:DisplayProgressSummaryL: EDisconnected\t" ) );
// Allowed to send again.
- resourceId = R_BT_DATA_SENT;
- TObexUtilsUiLayer::ShowInformationNoteL( resourceId );
+ //resourceId = R_BT_DATA_SENT;
+ //TObexUtilsUiLayer::ShowInformationNoteL( resourceId );
+ //todo: Need to use Localized string.
+ _LIT(KText, "Message sent!");
+ iDialog->ShowInformationNoteL(KText);
+
break;
}
case TObexMtmProgress::ESendError:
@@ -535,13 +545,21 @@
FLOG( _L( "[CBtMtmUi] CBtMtmUi:DisplayProgressSummaryL: ESendError\t" ) );
if( error == KErrIrObexClientNoDevicesFound )
{
- resourceId = R_BT_DEV_NOT_AVAIL;
- TObexUtilsUiLayer::ShowInformationNoteL( resourceId );
+ //resourceId = R_BT_DEV_NOT_AVAIL;
+ //TObexUtilsUiLayer::ShowInformationNoteL( resourceId );
+ //todo: Need to use Localized string.
+ _LIT(KText, "Cannot establish Bluetooth connection");
+ iDialog->ShowInformationNoteL(KText);
+
}
else
{
- resourceId = R_BT_FAILED_TO_SEND;
- TObexUtilsUiLayer::ShowErrorNoteL( resourceId );
+ //resourceId = R_BT_FAILED_TO_SEND;
+ //TObexUtilsUiLayer::ShowErrorNoteL( resourceId );
+ //todo: Need to use Localized string.
+ _LIT(KText, "Failed to send message");
+ iDialog->ShowErrorNoteL(KText);
+
}
break;
}
@@ -666,9 +684,13 @@
CMsvSession& aSession)
{
FLOG( _L( "[CommonMtmUi] CBtMtmUi: LaunchEditorApplicationL\t" ) );
- CMsvEntry* message;
- message = &iBaseMtm.Entry();
- return TObexUtilsUiLayer::LaunchEditorApplicationOperationL( aSession, message, aStatus );
+ (void)aStatus;
+ (void)aSession;
+ //CMsvEntry* message;
+ //message = &iBaseMtm.Entry();
+ //todo: need to replace this
+ //return TObexUtilsUiLayer::LaunchEditorApplicationOperationL( aSession, message, aStatus );
+ return NULL;
}
// ---------------------------------------------------------
@@ -805,4 +827,9 @@
iWaiter.AsyncStop();
}
+void CBtMtmUi::DialogDismissed(TInt /*aButtonId*/)
+ {
+
+ }
+
// End of File
--- a/btobexprofiles/obexreceiveservices/mtmuibluetooth/src/btmtmuidata.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexreceiveservices/mtmuibluetooth/src/btmtmuidata.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -27,11 +27,11 @@
#include <mtmuidsdef.hrh> //kuidmtmquerymaxbodysizevalue etc
#endif
#include <msvuids.h>
-#include <Obexutils.rsg>
#include <obexutilsmessagehandler.h>
-const TInt KBtMtmUiNfcContext = 2;
+// todo @ QT migration: take official definition from Messaging at app layer (btmsgtypeuid.h)
+const TUid KUidMsgTypeBt = {0x10009ED5};
// ================= MEMBER FUNCTIONS =======================
@@ -78,8 +78,10 @@
TInt CBtMtmUiData::OperationSupportedL( TInt /*aOperationId*/,
const TMsvEntry& /*aContext*/) const
{
- FLOG( _L( " CBtMtmUiData: OperationSupportedL\t" ) );
- return TObexUtilsUiLayer::OperationNotSupported();
+ FLOG( _L( " CBtMtmUiData: OperationSupportedL\t" ) );
+
+ //todo: This was returning avkon resource Id of sting "This item is not available".
+ return 0;
}
// ---------------------------------------------------------
@@ -128,21 +130,13 @@
// Handles received msg icon.
// ---------------------------------------------------------
//
-const CBaseMtmUiData::CBitmapArray& CBtMtmUiData::ContextIcon( const TMsvEntry& aContext,
+const CBaseMtmUiData::CBitmapArray& CBtMtmUiData::ContextIcon( const TMsvEntry& /*aContext*/,
TInt /*aStateFlags*/) const
{
// Check if NFC context
TInt icon = 0;
- if ( aContext.MtmData1() == KBtMtmUiNfcContext )
- {
- icon = TObexUtilsUiLayer::ContextIcon( aContext, ENfc );
- }
- else
- {
- icon = TObexUtilsUiLayer::ContextIcon( aContext, EBluetooth );
- }
-
- return *iIconArrays->At( icon/2 );
+ //todo: This function will not work as iIconArrays is not populated might cause panic.
+ return *iIconArrays->At(icon);
}
// ---------------------------------------------------------
@@ -153,7 +147,7 @@
void CBtMtmUiData::PopulateArraysL()
{
FLOG( _L( " CBtMtmUiData: PopulateArraysL\t" ) );
- TObexUtilsUiLayer::CreateIconsL( KUidMsgTypeBt, iIconArrays );
+ //todo: Was populating iIconArrays which should be removed.
}
// ---------------------------------------------------------
@@ -161,12 +155,10 @@
// Gives resource filename.
// ---------------------------------------------------------
//
-void CBtMtmUiData::GetResourceFileName( TFileName& aFileName ) const
+void CBtMtmUiData::GetResourceFileName( TFileName& /*aFileName*/ ) const
{
FLOG( _L( " CBtMtmUiData: GetResourceFileName\t" ) );
- aFileName = KObexUtilsFileDrive;
- aFileName += KDC_RESOURCE_FILES_DIR;
- aFileName += KObexUtilsResourceFileName;
+ //todo: This was returning avkon resource file, which is not required now.
}
// ---------------------------------------------------------
@@ -186,7 +178,8 @@
return ( aParent.iMtm.iUid == KMsvLocalServiceIndexEntryIdValue );
}
// --- Can't create other types ---
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse;
}
@@ -207,7 +200,8 @@
return ETrue;
}
}
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse;
}
@@ -228,7 +222,8 @@
return ETrue;
}
}
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse;
}
@@ -248,8 +243,9 @@
aReasonResourceId = 0;
return ETrue;
}
- }
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ }
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse;
}
@@ -262,7 +258,8 @@
TInt& aReasonResourceId ) const
{
FLOG( _L( " CBtMtmUiData: CanEditEntryL\t" ) );
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
if( CheckEntry( aContext ) )
{
if ( ( aContext.iType.iUid == KUidMsvMessageEntryValue ) ||
@@ -283,8 +280,9 @@
TBool CBtMtmUiData::CanDeleteServiceL( const TMsvEntry& /*aService*/,
TInt& aReasonResourceId ) const
{
- FLOG( _L( " CBtMtmUiData: CanDeleteServiceL\t" ) );
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ FLOG( _L( " CBtMtmUiData: CanDeleteServiceL\t" ) );
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse;
}
@@ -296,7 +294,8 @@
TBool CBtMtmUiData::CanDeleteFromEntryL( const TMsvEntry& /*aContext*/,
TInt& aReasonResourceId ) const
{
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse;
}
@@ -308,7 +307,8 @@
TBool CBtMtmUiData::CanCopyMoveToEntryL( const TMsvEntry& /*aContext*/,
TInt& aReasonResourceId ) const
{
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse;
}
@@ -320,7 +320,8 @@
TBool CBtMtmUiData::CanCopyMoveFromEntryL( const TMsvEntry& /*aContext*/,
TInt& aReasonResourceId ) const
{
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse;
}
@@ -332,7 +333,8 @@
TBool CBtMtmUiData::CanReplyToEntryL( const TMsvEntry& /*aContext*/,
TInt& aReasonResourceId ) const
{
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse; // Not Ok to do
}
@@ -344,7 +346,8 @@
TBool CBtMtmUiData::CanForwardEntryL( const TMsvEntry& /*aContext*/,
TInt& aReasonResourceId ) const
{
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse; // Not Ok to do
}
@@ -368,7 +371,8 @@
TInt& aReasonResourceId ) const
{
// No way of sending a message from the outbox, so no need to cancel.
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse;
}
@@ -381,8 +385,9 @@
{
FLOG( _L( " CBtMtmUiData: StatusTextL\t" ) );
TBuf<80> buffer;
- TInt resourceId = R_BT_SEND_PROGRESS_SENDING;
- TObexUtilsUiLayer::ReadResourceL( buffer, resourceId );
+ //todo: Need to use localised string.
+ _LIT(KText, "Sending");
+ buffer.Copy(KText);
return buffer.AllocL();
}
--- a/btobexprofiles/obexreceiveservices/mtmuiinfrared/data/irmtmui.rss Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexreceiveservices/mtmuiinfrared/data/irmtmui.rss Wed Jun 23 18:23:52 2010 +0300
@@ -20,8 +20,6 @@
// INCLUDES
#include <mtmconfig.rh>
-#include <avkon.loc>
-
#include <e32capability.h>
@@ -34,7 +32,8 @@
{
MTM_COMPONENT_V2
{
- human_readable_name = qtn_query_send_via_ir;
+ //todo: Need to use localized string.
+ human_readable_name = "Via Infrared ";
component_uid = KUidMtmServerComponentVal;
entry_point = 1;
version = VERSION_V2 {};
@@ -42,7 +41,8 @@
},
MTM_COMPONENT_V2
{
- human_readable_name = qtn_query_send_via_ir;
+ //todo: Need to use localized string.
+ human_readable_name = "Via Infrared ";
component_uid = KUidMtmClientComponentVal;
entry_point = 1;
version = VERSION_V2 {};
@@ -50,7 +50,8 @@
},
MTM_COMPONENT_V2
{
- human_readable_name = qtn_query_send_via_ir;
+ //todo: Need to use localized string.
+ human_readable_name = "Via Infrared ";
component_uid = KUidMtmUiComponentVal;
entry_point = 2;
version = VERSION_V2 {};
@@ -58,7 +59,8 @@
},
MTM_COMPONENT_V2
{
- human_readable_name = qtn_query_send_via_ir;
+ //todo: Need to use localized string.
+ human_readable_name = "Via Infrared ";
component_uid = KUidMtmUiDataComponentVal;
entry_point = 1;
version = VERSION_V2 {};
--- a/btobexprofiles/obexreceiveservices/mtmuiinfrared/inc/irmtmui.h Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexreceiveservices/mtmuiinfrared/inc/irmtmui.h Wed Jun 23 18:23:52 2010 +0300
@@ -23,7 +23,6 @@
// INCLUDES
#include <mtmuibas.h>
-#include <obexutilsuilayer.h>
// CLASS DECLARATION
// FORWARD DECLARATIONS
--- a/btobexprofiles/obexreceiveservices/mtmuiinfrared/inc/irmtmuidata.h Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexreceiveservices/mtmuiinfrared/inc/irmtmuidata.h Wed Jun 23 18:23:52 2010 +0300
@@ -23,7 +23,6 @@
// INCLUDES
#include <mtudcbas.h>
-#include <obexutilsuilayer.h>
// FORWARD DECLARATIONS
--- a/btobexprofiles/obexreceiveservices/mtmuiinfrared/src/irmtmui.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexreceiveservices/mtmuiinfrared/src/irmtmui.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -28,15 +28,12 @@
#include <mtmuidef.hrh>
#include <mtclreg.h>
-#include <obexutilsuilayer.h>
-#include <Obexutils.rsg>
#include <msvuids.h>
#include <msvids.h>
#include <obexconstants.h>
#include <btnotif.h> // Notifier UID's
-#include <aknnotewrappers.h> //For notifier
#include <featmgr.h>
-#include <secondarydisplay/obexutilssecondarydisplayapi.h>
+#include <SecondaryDisplay/obexutilssecondarydisplayapi.h>
// ================= MEMBER FUNCTIONS =======================
@@ -72,8 +69,12 @@
{
// --- Make sure base class correctly constructed ---
CBaseMtmUi::ConstructL();
- TObexUtilsUiLayer::ReadResourceL( iConnectingText, R_IR_CONNECTING );
- TObexUtilsUiLayer::ReadResourceL( iSendingText, R_IR_SENDING_DATA );
+ //todo: Need to use localised string.
+ _LIT(KConnectText, "Connecting via Infrared..");
+ _LIT(KSendText, "Sending message via Infrared...");
+ iConnectingText.Copy(KConnectText);
+ iSendingText.Copy(KSendText);
+
iCurrentlySending = EFalse;
}
@@ -82,12 +83,11 @@
// return progress status.
// ---------------------------------------------------------
//
-void CIrMtmUi::GetResourceFileName( TFileName& aFileName ) const
+void CIrMtmUi::GetResourceFileName( TFileName& /*aFileName*/ ) const
{
FLOG( _L( "[CIrMtmUi] CIrMtmUi: GetResourceFileName\t" ) );
- aFileName = KObexUtilsFileDrive;
- aFileName += KDC_RESOURCE_FILES_DIR;
- aFileName += KObexUtilsResourceFileName;
+ //todo: This function should be removed it is using avkon resource file.
+
}
// ---------------------------------------------------------
@@ -601,13 +601,14 @@
// recognition(document handler).
// ---------------------------------------------------------
//
-CMsvOperation* CIrMtmUi::LaunchEditorApplicationL( TRequestStatus& aStatus,
- CMsvSession& aSession)
+CMsvOperation* CIrMtmUi::LaunchEditorApplicationL( TRequestStatus& /*aStatus*/,
+ CMsvSession& /*aSession*/)
{
FLOG( _L( "[CIrMtmUi] CIrMtmUi: LaunchEditorApplicationL\t" ) );
- CMsvEntry* message;
- message = &iBaseMtm.Entry();
- return TObexUtilsUiLayer::LaunchEditorApplicationOperationL( aSession, message, aStatus );
+ //CMsvEntry* message;
+ //message = &iBaseMtm.Entry();
+ //todo: Need to use proper API for launching editor application, now returning NULL.
+ return NULL;
}
--- a/btobexprofiles/obexreceiveservices/mtmuiinfrared/src/irmtmuidata.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexreceiveservices/mtmuiinfrared/src/irmtmuidata.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -29,7 +29,6 @@
#include <mtmdef.hrh> //kuidmtmquerymaxbodysizevalue etc
#include <mtmuidsdef.hrh> //kuidmtmquerymaxbodysizevalue etc
#endif
-#include <Obexutils.rsg>
#include <obexutilsmessagehandler.h>
#include "debug.h"
@@ -84,7 +83,8 @@
const TMsvEntry& /*aContext*/) const
{
FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: OperationSupportedL\t" ) );
- return TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was returning avkon resource Id of sting "This item is not available".
+ return 0;
}
// ---------------------------------------------------------
@@ -147,12 +147,13 @@
// ---------------------------------------------------------
//
const CBaseMtmUiData::CBitmapArray& CIrMtmUiData::ContextIcon(
- const TMsvEntry& aContext,
+ const TMsvEntry& /*aContext*/,
TInt /*aStateFlags*/) const
{
- TInt icon = TObexUtilsUiLayer::ContextIcon( aContext, EInfrared );
- return *iIconArrays->At( icon/2 );
+ TInt icon = 0;
+ //todo: This function will not work as iIconArrays is not populated might cause panic.
+ return *iIconArrays->At( icon );
}
// ---------------------------------------------------------
@@ -164,7 +165,7 @@
{
FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: PopulateArraysL\t" ) );
- TObexUtilsUiLayer::CreateIconsL( KUidMsgTypeIrUID, iIconArrays );
+ //todo: Was populating iIconArrays which should be removed.
}
// ---------------------------------------------------------
@@ -172,12 +173,10 @@
// Gives resource filename.
// ---------------------------------------------------------
//
-void CIrMtmUiData::GetResourceFileName(TFileName& aFileName) const
+void CIrMtmUiData::GetResourceFileName(TFileName& /*aFileName*/) const
{
FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: GetResourceFileName\t" ) );
- aFileName = KObexUtilsFileDrive;
- aFileName += KDC_RESOURCE_FILES_DIR;
- aFileName += KObexUtilsResourceFileName;
+ //todo: This was returning avkon resource file, which is not required now.
}
// ---------------------------------------------------------
@@ -198,7 +197,8 @@
return ( aParent.iMtm.iUid == KMsvLocalServiceIndexEntryIdValue );
}
// --- Can't create other types ---
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse;
}
@@ -220,7 +220,8 @@
return ETrue;
}
}
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse;
}
@@ -242,7 +243,8 @@
return ETrue;
}
}
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse;
}
@@ -264,7 +266,8 @@
return ETrue;
}
}
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse;
}
@@ -278,7 +281,8 @@
TInt& aReasonResourceId ) const
{
FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: CanEditEntryL\t" ) );
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
if( CheckEntry( aContext ) )
{
if ( ( aContext.iType.iUid == KUidMsvMessageEntryValue ) ||
@@ -301,7 +305,8 @@
TInt& aReasonResourceId ) const
{
FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: CanDeleteServiceL\t" ) );
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse;
}
@@ -314,7 +319,8 @@
const TMsvEntry& /*aContext*/,
TInt& aReasonResourceId ) const
{
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse;
}
@@ -327,7 +333,8 @@
const TMsvEntry& /*aContext*/,
TInt& aReasonResourceId ) const
{
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse;
}
@@ -340,7 +347,8 @@
const TMsvEntry& /*aContext*/,
TInt& aReasonResourceId ) const
{
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse;
}
@@ -353,7 +361,8 @@
const TMsvEntry& /*aContext*/,
TInt& aReasonResourceId ) const
{
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse; // Not Ok to do
}
@@ -366,7 +375,8 @@
const TMsvEntry& /*aContext*/,
TInt& aReasonResourceId ) const
{
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse; // Not Ok to do
}
@@ -391,7 +401,8 @@
const TMsvEntry& /*aContext*/, TInt& aReasonResourceId ) const
{
// No way of sending a message from the outbox, so no need to cancel.
- aReasonResourceId = TObexUtilsUiLayer::OperationNotSupported();
+ //todo: This was using avkon resource Id of sting "This item is not available".
+ aReasonResourceId = 0;
return EFalse;
}
@@ -404,8 +415,9 @@
{
FLOG( _L( "[CIrMtmUiData] CIrMtmUiData: StatusTextL\t" ) );
TBuf<80> buffer;
- TInt resourceId = R_IR_SEND_PROGRESS_SENDING;
- TObexUtilsUiLayer::ReadResourceL( buffer, resourceId );
+ //todo: Need to use localised string.
+ _LIT(KText, "Sending");
+ buffer.Copy(KText);
HBufC* ptr;
ptr = buffer.AllocL();
return ptr;
--- a/btobexprofiles/obexreceiveservices/opp/group/obexserviceopp.mmp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexreceiveservices/opp/group/obexserviceopp.mmp Wed Jun 23 18:23:52 2010 +0300
@@ -38,19 +38,21 @@
USERINCLUDE ../inc
SYSTEMINCLUDE ../../../inc ../../../../inc /epoc32/include/ecom
MW_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE /epoc32/include/mw/hb/hbcore
+SYSTEMINCLUDE /epoc32/include/mw/hb/hbwidgets
+SYSTEMINCLUDE /epoc32/include/platform/mw/btservices
LIBRARY obexutils.lib
LIBRARY euser.lib
LIBRARY efsrv.lib
LIBRARY servicehandler.lib
-LIBRARY avkon.lib
LIBRARY irobex.lib // For Object exchange
LIBRARY imageconversion.lib
LIBRARY bafl.lib
LIBRARY ecom.lib
LIBRARY sysutil.lib
LIBRARY esock.lib
-LIBRARY charconv.lib aknnotify.lib eiksrv.lib
+LIBRARY charconv.lib
LIBRARY platformenv.lib
LIBRARY bluetooth.lib // Bluetooth libraries
LIBRARY btdevice.lib // Bluetooth library
@@ -60,5 +62,7 @@
LIBRARY btengdevman.lib //btengdevman.dll
LIBRARY btengsettings.lib //btengsettings.dll
LIBRARY btengconnman.lib //btengconnman.dll
+LIBRARY HbCore.lib
+LIBRARY HbWidgets.lib
DEBUGLIBRARY flogger.lib
--- a/btobexprofiles/obexreceiveservices/opp/inc/oppcontroller.h Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexreceiveservices/opp/inc/oppcontroller.h Wed Jun 23 18:23:52 2010 +0300
@@ -26,28 +26,41 @@
#include <e32base.h>
#include <obexutilsmessagehandler.h>
-#include <obexutilsuilayer.h>
#include "obexutilspropertynotifier.h"
#include <SrcsInterface.h>
#include "btengdevman.h"
#include <obexutilspropertynotifier.h>
-#include <obexutilsglobalprogressdialog.h>
-#include <AiwServiceHandler.h> // The AIW service handler
+#include <obexutilsdialog.h>
+#include <hbdevicedialogsymbian.h>
+#include <hbsymbianvariant.h>
-_LIT( KUniqueTransportName, "RFCOMM" );
+
const TInt KBtStartReserveChannel = 9;
const TInt KBtEndReserveChannel = 30;
+// todo @ QT migration: take official definition from Messaging at app layer (btmsgtypeuid.h)
+const TUid KUidMsgTypeBt = {0x10009ED5};
+/**
+* Backup status.
+* The value is controlled by FileManager
+*/
+enum TFileManagerBkupStatusType
+ {
+ EFileManagerBkupStatusUnset = 0x00000000,
+ EFileManagerBkupStatusBackup = 0x00000001,
+ EFileManagerBkupStatusRestore = 0x00000002
+ };
/**
* CBtListenActive
* Class to implement IrObex permanent listen
*/
class COPPController : public CSrcsInterface, public MObexServerNotify,
public MObexUtilsPropertyNotifyHandler,
- public MGlobalProgressCallback, public MGlobalNoteCallback,
- public MBTEngDevManObserver
+ public MObexUtilsDialogObserver,
+ public MBTEngDevManObserver,
+ public MHbDeviceDialogObserver
{
public:
static COPPController* NewL();
@@ -76,15 +89,13 @@
private: // from MObexUtilsPropertyNotifyHandler
void HandleNotifyL(TMemoryPropertyCheckType aCheckType);
-private: // from MGlobalProgressCallback
- void HandleGlobalProgressDialogL(TInt aSoftkey);
-
-private: // from MGlobalNoteCallback
- void HandleGlobalNoteDialogL(TInt aSoftkey);
private: // from MBTEngDevManObserver
void HandleGetDevicesComplete(TInt aErr, CBTDeviceArray* aDeviceArray);
+private: //from MObexUtilsDialogObserver
+ void DialogDismissed(TInt aButtonId);
+
private:
COPPController();
void ConstructL();
@@ -96,10 +107,16 @@
TBool CheckCapacityL();
void LaunchReceivingIndicatorL();
- inline TBool ReceivingIndicatorActive() const { return (iProgressDialog || iWaitDialog); }
- void UpdateReceivingIndicator();
+ inline TBool ReceivingIndicatorActive() const { return (iDialogActive); }
+ void UpdateReceivingIndicatorL();
void CloseReceivingIndicator(TBool aResetDisplayedState = ETrue);
- TInt GetDriveWithMaximumFreeSpaceL();
+ TInt GetDriveWithMaximumFreeSpaceL();
+ TBool IsBackupRunning();
+ TBool ProcessExists( const TSecureId& aSecureId );
+
+private:
+ void DataReceived(CHbSymbianVariantMap& aData);
+ void DeviceDialogClosed(TInt aCompletionCode);
private:
enum TObexTransferState
@@ -132,12 +149,13 @@
TSrcsMediaType iMediaType;
TInt iTotalSizeByte;
TFileName iReceivingFileName;
- CGlobalProgressDialog* iProgressDialog;
- CGlobalDialog* iWaitDialog;
TBool iNoteDisplayed;
CBTEngDevMan* iDevMan;
CBTDeviceArray* iResultArray;
TBTDeviceName iRemoteDeviceName;
+ CObexUtilsDialog* iDialog;
+ CHbDeviceDialogSymbian* iProgressDialog;
+ TBool iDialogActive;
};
#endif // OPPCONTROLLER_H
--- a/btobexprofiles/obexreceiveservices/opp/src/oppcontroller.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexreceiveservices/opp/src/oppcontroller.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -17,27 +17,28 @@
// INCLUDE FILES
-#include <avkon.hrh> // AVKON components
#include "oppcontroller.h"
#include "btengdevman.h"
#include <obexutilsmessagehandler.h>
#include "debug.h"
-#include <Obexutils.rsg>
#include <bautils.h>
-#include <UiklafInternalCRKeys.h>
-#include <obexutilsuilayer.h>
#include <btengdomaincrkeys.h>
-#include <AiwServiceHandler.h> // The AIW service handler
#include <sysutil.h>
#include <btengdomaincrkeys.h>
#include <msvids.h>
-#include <driveinfo.h>
+#include <driveinfo.h>
#include <es_sock.h>
#include <bt_sock.h>
+#include <bluetoothdevicedialogs.h>
+#include <hbtextresolversymbian.h>
// CONSTANTS
const TInt KBufferSize = 0x10000; // 64 kB
+const TInt KFileManagerUID3 = 0x101F84EB; /// File Manager application UID3
+_LIT( KBTDevDialogId, "com.nokia.hb.btdevicedialog/1.0" );
+_LIT(KLocFileName, "btdialogs_");
+_LIT(KPath, "z:/resource/qt/translations/");
// ================= MEMBER FUNCTIONS =======================
@@ -68,6 +69,12 @@
TObexUtilsMessageHandler::GetCenRepKeyStringValueL(KCRUidBluetoothEngine,
KLCReceiveFolder,
iCenRepFolder);
+ iDialog = CObexUtilsDialog::NewL(this);
+ TBool ok = HbTextResolverSymbian::Init(KLocFileName, KPath);
+ if (!ok)
+ {
+ User::Leave( KErrNotFound );
+ }
}
COPPController::~COPPController()
@@ -77,8 +84,6 @@
delete iBuf;
delete iLowMemoryActiveCDrive;
delete iLowMemoryActiveMMC;
- delete iProgressDialog;
- delete iWaitDialog;
delete iDevMan;
if (iResultArray)
{
@@ -86,6 +91,8 @@
delete iResultArray;
}
iFs.Close();
+ delete iDialog;
+ delete iProgressDialog;
}
// ---------------------------------------------------------
@@ -123,7 +130,11 @@
{
if(iMediaType == ESrcsMediaBT)
{
- TRAP_IGNORE( TObexUtilsUiLayer::ShowGlobalConfirmationQueryL( R_BT_FAILED_TO_RECEIVE ) );
+ TRAP_IGNORE(
+ HBufC* note = HbTextResolverSymbian::LoadLC(_L("txt_bt_dpophead_receiving_failed"));
+ iDialog->ShowErrorNoteL(note->Des());
+ CleanupStack::PopAndDestroy(note);
+ );
}
TRACE_ASSERT(iMediaType != ESrcsMediaIrDA, KErrNotSupported)
}
@@ -161,10 +172,13 @@
// ObexConnectIndication()
// ---------------------------------------------------------
//
-TInt COPPController::ObexConnectIndication( const TObexConnectInfo& /*aRemoteInfo*/,
- const TDesC8& /*aInfo*/)
+TInt COPPController::ObexConnectIndication( const TObexConnectInfo& aRemoteInfo,
+ const TDesC8& aInfo)
{
- TRACE_FUNC
+ TRACE_FUNC
+ (void) aRemoteInfo;
+ (void) aInfo;
+
if ( iMediaType == ESrcsMediaBT )
{
TRACE_INFO( _L( "[oppreceiveservice] ObexConnectIndication: BT media \t" ) );
@@ -191,10 +205,10 @@
// ObexDisconnectIndication(
// ---------------------------------------------------------
//
-void COPPController::ObexDisconnectIndication(const TDesC8& /*aInfo*/)
+void COPPController::ObexDisconnectIndication(const TDesC8& aInfo)
{
TRACE_FUNC
-
+ (void) aInfo;
}
// ---------------------------------------------------------
@@ -225,7 +239,7 @@
// Checking if backup is running now - if backup process is active, then we
// need to cancel transfer - otherwise phone will freeze during receiving
// data
- if ( TObexUtilsUiLayer::IsBackupRunning() )
+ if ( IsBackupRunning() )
{
TRACE_INFO ( _L ("Backup in progress! Canceling incoming transfer."));
iObexTransferState = ETransferPutInitError;
@@ -275,7 +289,11 @@
}
if(!capacity)
{
- TRAP_IGNORE(TObexUtilsUiLayer::ShowGlobalConfirmationQueryL(R_OUT_OF_MEMORY));
+ //TRAP_IGNORE(TObexUtilsUiLayer::ShowGlobalConfirmationQueryL(R_OUT_OF_MEMORY));
+ //todo: Need to use Localized string.
+ _LIT(KText, "Not enough memory to execute operation. Delete some documents and try again.");
+ TRAP_IGNORE(iDialog->ShowErrorNoteL(KText));
+
return KErrDiskFull;
}
}
@@ -293,7 +311,11 @@
// Now we need to either create (in the first instance) or update the dialog on the UI.
if(ReceivingIndicatorActive())
{
- UpdateReceivingIndicator();
+ TRAPD(err, UpdateReceivingIndicatorL());
+ if(err < KErrNone)
+ {
+ return err;
+ }
}
else if(!iNoteDisplayed)
{
@@ -332,9 +354,10 @@
// GetRequestIndication()
// ---------------------------------------------------------
//
-CObexBufObject* COPPController::GetRequestIndication( CObexBaseObject* /*aRequiredObject*/)
+CObexBufObject* COPPController::GetRequestIndication( CObexBaseObject* aRequiredObject)
{
TRACE_FUNC
+ (void) aRequiredObject;
return NULL;
}
@@ -362,10 +385,13 @@
// SetPathIndication()
// ---------------------------------------------------------
//
-TInt COPPController::SetPathIndication( const CObex::TSetPathInfo& /*aPathInfo*/,
- const TDesC8& /*aInfo*/)
+TInt COPPController::SetPathIndication( const CObex::TSetPathInfo& aPathInfo,
+ const TDesC8& aInfo)
{
TRACE_FUNC
+
+ (void) aPathInfo;
+ (void) aInfo;
// SetPath is not implemented in OPP - so following IrOBEX guidance, return
// the Forbidden response code.
return KErrIrObexRespForbidden;
@@ -429,7 +455,11 @@
//
if (SysUtil::DiskSpaceBelowCriticalLevelL( &iFs, 0, iDrive ))
{
- TRAP_IGNORE(TObexUtilsUiLayer::ShowGlobalConfirmationQueryL(R_OUT_OF_MEMORY));
+ //TRAP_IGNORE(TObexUtilsUiLayer::ShowGlobalConfirmationQueryL(R_OUT_OF_MEMORY));
+ //todo: Need to use Localized string.
+ _LIT(KText, "Not enough memory to execute operation. Delete some documents and try again.");
+ TRAP_IGNORE(iDialog->ShowErrorNoteL(KText));
+
User::Leave(KErrGeneral);
}
@@ -692,65 +722,91 @@
if(iTotalSizeByte > 0)
{
- iProgressDialog = CGlobalProgressDialog::NewL(this);
if(iReceivingFileName.Length() > 0)
{
- iProgressDialog->ShowProgressDialogNameSizeL(iReceivingFileName, iTotalSizeByte);
+ iProgressDialog = CHbDeviceDialogSymbian::NewL();
+ iProgressDialog->SetObserver(this);
+
+ CHbSymbianVariantMap* variantMap = CHbSymbianVariantMap::NewL();
+ CleanupStack::PushL(variantMap);
+
+ TInt dialogIdx = TBluetoothDialogParams::EReceiveProgress;
+ CHbSymbianVariant* dialogType = CHbSymbianVariant::NewL( (TAny*) &(dialogIdx),
+ CHbSymbianVariant::EInt );
+ CleanupStack::PushL(dialogType);
+ TBuf16<6> dialogTypeKey;
+ dialogTypeKey.Num(TBluetoothDialogParams::EDialogType);
+ User::LeaveIfError(variantMap->Add(dialogTypeKey, dialogType));
+ CleanupStack::Pop(dialogType);
+
+ CHbSymbianVariant* deviceName = CHbSymbianVariant::NewL( (TAny*) (&iRemoteDeviceName),
+ CHbSymbianVariant::EDes );
+ CleanupStack::PushL(deviceName);
+ TBuf16<6> deviceNameKey;
+ deviceNameKey.Num(TBluetoothDeviceDialog::EDeviceName);
+ User::LeaveIfError(variantMap->Add(deviceNameKey, deviceName));
+ CleanupStack::Pop(deviceName);
+
+ CHbSymbianVariant* fileName = CHbSymbianVariant::NewL( (TAny*) (&iReceivingFileName),
+ CHbSymbianVariant::EDes );
+ CleanupStack::PushL(fileName);
+ TBuf16<6> fileNameKey;
+ fileNameKey.Num(TBluetoothDeviceDialog::EReceivingFileName);
+ User::LeaveIfError(variantMap->Add(fileNameKey, fileName));
+ CleanupStack::Pop(fileName);
+
+ CHbSymbianVariant* fileSz = CHbSymbianVariant::NewL( (TAny*) &iTotalSizeByte,
+ CHbSymbianVariant::EInt );
+ CleanupStack::PushL(fileSz);
+ TBuf16<6> fileSzKey;
+ fileSzKey.Num(TBluetoothDeviceDialog::EReceivingFileSize);
+ User::LeaveIfError(variantMap->Add(fileSzKey, fileSz));
+ CleanupStack::Pop(fileSz);
+
+ iDialogActive = ETrue;
+ iProgressDialog->Show( KBTDevDialogId(), *variantMap, this );
+ CleanupStack::PopAndDestroy(variantMap);
}
else
{
if(iMediaType == ESrcsMediaBT)
{
- iProgressDialog->ShowProgressDialogL(R_BT_RECEIVING_DATA);
+ //TODO - Remove the usage of the resources.
+ //iProgressDialog->ShowProgressDialogL(R_BT_RECEIVING_DATA);
}
TRACE_ASSERT(iMediaType != ESrcsMediaIrDA, KErrNotSupported);
}
}
else
{
- iWaitDialog = CGlobalDialog::NewL(this);
+
+ /*
+ * TODO - The functionality provided by CGlobalDialog will be removed
+ * TODO - and this will be provided by CGlobalProgressDialog.
+ */
if(iMediaType == ESrcsMediaBT)
{
- iWaitDialog->ShowNoteDialogL(R_BT_RECEIVING_DATA, ETrue);
+ // TODO
}
TRACE_ASSERT(iMediaType != ESrcsMediaIrDA, KErrNotSupported);
}
}
-void COPPController::UpdateReceivingIndicator()
+void COPPController::UpdateReceivingIndicatorL()
{
if(iProgressDialog)
{
- iProgressDialog->UpdateProgressDialog(iObexObject->BytesReceived(), iTotalSizeByte);
- }
- // else we are using a wait note, so no "need" to update
- }
-
-void COPPController::HandleGlobalProgressDialogL( TInt aSoftkey )
- {
- TRACE_FUNC
-
- if(aSoftkey == EAknSoftkeyCancel)
- {
- CancelTransfer();
- }
- else if(aSoftkey == EAknSoftkeyHide)
- {
- CloseReceivingIndicator(EFalse); // Don't reset state as only hiding
- }
- }
-
-void COPPController::HandleGlobalNoteDialogL( TInt aSoftkey )
- {
- TRACE_FUNC
-
- if(aSoftkey == EAknSoftkeyCancel)
- {
- CancelTransfer();
- }
- else if(aSoftkey == EAknSoftkeyHide)
- {
- CloseReceivingIndicator(EFalse); // Don't reset state as only hiding
+ CHbSymbianVariantMap* variantMap = CHbSymbianVariantMap::NewL();
+ CleanupStack::PushL(variantMap);
+
+ TInt bytesReceived = iObexObject->BytesReceived();
+ CHbSymbianVariant* progress = CHbSymbianVariant::NewL( (TAny*) &bytesReceived, CHbSymbianVariant::EInt );
+ CleanupStack::PushL(progress);
+ User::LeaveIfError(variantMap->Add(_L("progress"), progress));
+ CleanupStack::Pop(progress);
+
+ iProgressDialog->Update(*variantMap);
+ CleanupStack::PopAndDestroy(variantMap);
}
}
@@ -761,18 +817,14 @@
{
iNoteDisplayed = EFalse;
}
+
if(iProgressDialog)
{
- iProgressDialog->ProcessFinished();
+ iProgressDialog->Cancel();
+ iDialogActive = EFalse;
delete iProgressDialog;
iProgressDialog = NULL;
}
- if(iWaitDialog)
- {
- iWaitDialog->ProcessFinished();
- delete iWaitDialog;
- iWaitDialog = NULL;
- }
}
// ---------------------------------------------------------
@@ -830,9 +882,12 @@
// Callback from devman
// ----------------------------------------------------------
//
- void COPPController::HandleGetDevicesComplete(TInt aErr, CBTDeviceArray* /*aDeviceArray*/)
+ void COPPController::HandleGetDevicesComplete(TInt aErr, CBTDeviceArray* aDeviceArray)
{
TRACE_INFO( _L( "[oppreceiveservice] HandleGetDevicesComplete: enter \t" ) );
+
+ (void) aDeviceArray;
+
if ( aErr == KErrNone )
{
if ( iResultArray->Count())
@@ -851,7 +906,77 @@
}
}
}
+ TBool COPPController::IsBackupRunning()
+ {
+ const TUint32 KFileManagerBkupStatus = 0x00000001;
+
+ TInt status = EFileManagerBkupStatusUnset;
+ TBool retValue = EFalse;
+ TInt err = RProperty::Get( TUid::Uid(KFileManagerUID3), KFileManagerBkupStatus,
+ status );
+ if ( err == KErrNone )
+ {
+ if ( status == EFileManagerBkupStatusBackup ||
+ status == EFileManagerBkupStatusRestore )
+ {
+ TSecureId fileManagerSecureId( KFileManagerUID3 );
+ //only returning ETrue if backup process is still active
+ retValue = ProcessExists( fileManagerSecureId );
+ }
+ }
+
+ return retValue;
+ }
+ TBool COPPController::ProcessExists( const TSecureId& aSecureId )
+ {
+ _LIT( KFindPattern, "*" );
+ TFindProcess finder(KFindPattern);
+ TFullName processName;
+ while( finder.Next( processName ) == KErrNone )
+ {
+ RProcess process;
+ if ( process.Open( processName ) == KErrNone )
+ {
+ TSecureId processId( process.SecureId() );
+ process.Close();
+ if( processId == aSecureId )
+ {
+ return ETrue;
+ }
+ }
+ }
+ return EFalse;
+ }
+
+ void COPPController::DialogDismissed(TInt aButtonId)
+ {
+ (void) aButtonId;
+ }
+
+ void COPPController::DataReceived(CHbSymbianVariantMap& aData)
+ {
+ if(aData.Keys().MdcaPoint(0).Compare(_L("actionResult")) == 0)
+ {
+ TInt val = *(static_cast<TInt*>(aData.Get(_L("actionResult"))->Data()));
+ if(!val)
+ {
+ //Cancel has been clicked
+ CancelTransfer();
+ }
+ else
+ {
+ //Hide has been clicked
+ CloseReceivingIndicator(EFalse);
+ }
+ }
+ }
+
+ void COPPController::DeviceDialogClosed(TInt aCompletionCode)
+ {
+ (void) aCompletionCode;
+ }
+
//////////////////////////// Global part ////////////////////////////
// End of File
--- a/btobexprofiles/obexsendservices/group/sendutils.mmp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexsendservices/group/sendutils.mmp Wed Jun 23 18:23:52 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-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"
@@ -46,10 +46,9 @@
SOURCE BTSUXmlParser.cpp
SOURCE BTConnectionTimer.cpp
SOURCE BTSController.cpp
-SOURCE BTSProgresstimer.cpp
USERINCLUDE ../obexservicesendutils/inc
-SYSTEMINCLUDE ../../inc ../../../inc /epoc32/include/libc
+SYSTEMINCLUDE ../../inc /epoc32/include/libc
SYSTEMINCLUDE /epoc32/include/mw/hb/hbcore
SYSTEMINCLUDE /epoc32/include/mw/hb/hbwidgets
MW_LAYER_SYSTEMINCLUDE
--- a/btobexprofiles/obexsendservices/obexservicesendutils/inc/BTSBIPController.h Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexsendservices/obexservicesendutils/inc/BTSBIPController.h Wed Jun 23 18:23:52 2010 +0300
@@ -48,6 +48,8 @@
* Destructor.
*/
virtual ~CBTSBIPController();
+
+ void SendUnSupportedFiles();
private: // Functions from base classes
--- a/btobexprofiles/obexsendservices/obexservicesendutils/inc/BTSBPPController.h Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexsendservices/obexservicesendutils/inc/BTSBPPController.h Wed Jun 23 18:23:52 2010 +0300
@@ -21,7 +21,6 @@
#define BT_SERVICE_BPP_CONTROLLER_H
// INCLUDES
-#include <obexutilsdialog.h>
#include "BTServiceStarter.h"
#include "BTServiceParameterList.h"
#include "BTServiceClient.h"
--- a/btobexprofiles/obexsendservices/obexservicesendutils/inc/BTSController.h Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexsendservices/obexservicesendutils/inc/BTSController.h Wed Jun 23 18:23:52 2010 +0300
@@ -54,6 +54,9 @@
* @return None
*/
void Abort( );
+
+
+ virtual void SendUnSupportedFiles();
protected:
--- a/btobexprofiles/obexsendservices/obexservicesendutils/inc/BTServiceStarter.h Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexsendservices/obexservicesendutils/inc/BTServiceStarter.h Wed Jun 23 18:23:52 2010 +0300
@@ -29,9 +29,6 @@
#include <btengsettings.h>
#include <obexutilsdialog.h>
#include <msvapi.h>
-#include <hbdevicedialogsymbian.h>
-#include <hb/hbwidgets/hbdeviceprogressdialogsymbian.h>
-#include <hbsymbianvariant.h>
// DATA TYPES
@@ -54,7 +51,6 @@
class CObexUtilsUiLayer;
class MBTServiceProgressGetter;
class CBTSController;
-class CBTSProgressTimer;
const TUint KBTSdpObjectPush = 0x1105;
@@ -83,7 +79,8 @@
* @param aGetter A pointer to a progess status getter object.
* @return None.
*/
- virtual void LaunchProgressNoteL( MBTServiceProgressGetter* aGetter, TInt aTotalSize, TInt aFileCount ) = 0;
+ //todo reusing the second param aTotalsize to aFileCount as it wass no longer used check it being used in other places
+ virtual void LaunchProgressNoteL( MBTServiceProgressGetter* aGetter, TInt aFileCount) = 0;
/**
@@ -93,21 +90,12 @@
*/
virtual void UpdateProgressNoteL(TInt aFileSize,TInt aFileIndex, const TDesC& aFileName ) = 0;
-
- /**
- * Informs the observer that a progress note should be shown.
- * @param aGetter A pointer to a progess status getter object.
- * @return None.
- */
- virtual void UpdateProgressInfoL() = 0;
-
-
/**
* Informs the observer that a confirmation query for sending
- * should be shouwn for BIP sendign
+ * should be shouwn for BIP sending
* @return
*/
- virtual TInt LaunchConfirmationQuery(TInt aResouceId)=0;
+ virtual void LaunchConfirmationQuery(const TDesC& aConfirmText)=0;
/**
* Informs the observer that a connect is timedout
@@ -126,9 +114,7 @@
public MObexUtilsDialogObserver,
public MObexUtilsProgressObserver,
public MBTEngSdpResultReceiver,
- public MBTEngSettingsObserver,
- public MHbDeviceProgressDialogObserver,
- public MHbDeviceDialogObserver
+ public MBTEngSettingsObserver
{
public: // Constructors and destructor
@@ -170,9 +156,11 @@
* From MBTServiceObserver A progress note should be shown.
* @param aGetter A pointer to a progess status getter object.
* @param aTotalSize Max size of the progress bar.
+ * @param aFileCount Total Number of files to be sent
* @return None.
*/
- void LaunchProgressNoteL( MBTServiceProgressGetter* aGetter, TInt aTotalSize, TInt aFileCount );
+ //todo reuse the second param as it is no longer used check it being used in other places
+ void LaunchProgressNoteL( MBTServiceProgressGetter* aGetter, TInt aFileCount);
/**
@@ -184,32 +172,15 @@
*/
void UpdateProgressNoteL(TInt aFileSize,TInt aFileIndex, const TDesC& aFileName );
- /**
- * From MBTServiceObserver Updating progress note info about the progress percentage
- * @return None.
- */
- void UpdateProgressInfoL();
/**
* From MObexUtilsWaitDialogObserver The wait note has been dismissed.
* @param aButtonId The button id that was used to dismiss the dialog.
* @return None.
*/
- void DialogDismissed( TInt aButtonId );
+ void DialogDismissed(TInt aButtonId);
/**
- * From MHbDeviceProgressDialogObserver
- *
- */
- void ProgressDialogCancelled(const CHbDeviceProgressDialogSymbian * aDialog);
-
- /**
- * From MHbDeviceProgressDialogObserver
- *
- */
- void ProgressDialogClosed(const CHbDeviceProgressDialogSymbian * aDialog ) ;
-
- /**
* From MObexUtilsProgressObserver request for number of bytes sent
* @Param None.
* @return Number of bytes sent.
@@ -223,6 +194,13 @@
*/
TInt LaunchConfirmationQuery(TInt aResourceId);
+
+ /**
+ * From MBTServiceObserver A confirmation query for BIP
+ * profile should be shown.
+ */
+ void LaunchConfirmationQuery(const TDesC& aConfirmText);
+
/**
* From MBTServiceObserver a connect request is timedout
* @return
@@ -449,9 +427,6 @@
*/
void TurnBTPowerOnL( const TBTPowerStateValue aState );
- void DataReceived(CHbSymbianVariantMap& aData);
-
- void DeviceDialogClosed(TInt aCompletionCode);
private: // Data definitions
enum TBTServiceStarterState
@@ -468,7 +443,7 @@
CBTDevice* iDevice;
CBTEngDiscovery* iBTEngDiscovery;
CBTServiceParameterList* iList;
- // CObexUtilsDialog* iDialog;
+ CObexUtilsDialog* iDialog;
CBTSController* iController;
TBTServiceType iService;
@@ -493,11 +468,6 @@
TBool iFeatureManagerInitialized;
TBool iTriedBIP;
TBool iTriedOPP;
- CHbDeviceDialogSymbian *iDeviceDialog;
- CHbDeviceProgressDialogSymbian *iProgressDialog;
- TInt iFileCount;
- TInt iFileIndex;
- CBTSProgressTimer *iProgressTimer;
};
#endif // BT_SERVICE_CONTROLLER_H
--- a/btobexprofiles/obexsendservices/obexservicesendutils/src/BTSBIPController.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexsendservices/obexservicesendutils/src/BTSBIPController.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-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"
@@ -22,7 +22,7 @@
#include "BTSUDebug.h"
#include "BTSUImageConverter.h"
#include "BTSUXmlParser.h"
-#include <Obexutils.rsg>
+#include <hbtextresolversymbian.h>
@@ -49,6 +49,10 @@
const TInt KBTSUMaxPathLenght=256;
const TInt KBTSUMaxPrivatePathLenght=20;
+_LIT(KBTNotSendSomeText,"txt_bt_info_receiving_device_does_not_support_all");
+_LIT(KBTNotSendOneText,"txt_bt_info_receiving_device_does_not_support_this");
+
+
// ============================ MEMBER FUNCTIONS ===============================
@@ -235,7 +239,7 @@
}
else if( aStatus != KErrAbort && aGetResponse->BytesReceived()==0 )
{
- TRAPD( error,iObserverPtr->LaunchProgressNoteL( iClient, iListPtr->ImageListSize(),iListPtr->ImageCount() ) );
+ TRAPD( error,iObserverPtr->LaunchProgressNoteL( iClient,iListPtr->ImageCount() ) );
error=KErrNone;
TRAP(error, SendL() );
if ( error != KErrNone )
@@ -291,7 +295,7 @@
TBTSUImageParam imageparam = iListPtr->ImageAtL( iFileIndex );
RBuf filename;
- filename.CreateL(256);
+ filename.CreateL(KMaxFileName);
CleanupClosePushL(filename);
imageparam.iFile.Name(filename);
@@ -557,7 +561,6 @@
TBool found;
TBool allSupported;
TInt picindex,capindex;
- TInt confirm=0;
CBTSUXmlParser* xmlParser = CBTSUXmlParser::NewL();
CleanupStack::PushL( xmlParser );
GenerateTempFileNameL( iTempFileName );
@@ -631,42 +634,20 @@
if(!allSupported && iListPtr->ImageCount() > 1)
{
-
- confirm=iObserverPtr->LaunchConfirmationQuery(R_BT_NOT_SEND_ALL_QUERY_MIXED);
-
- if(confirm==EAknSoftkeyYes)
- {
- // Everything went ok. Start sending images
- //
- iObserverPtr->LaunchProgressNoteL( iClient, iListPtr->ImageListSize(),iListPtr->ImageCount() );
-
- // Start sending images
- //
- SendL();
- }
-
-
+ HBufC* sendText = HbTextResolverSymbian::LoadLC(KBTNotSendSomeText);
+ iObserverPtr->LaunchConfirmationQuery(sendText->Des());
+ CleanupStack::PopAndDestroy( sendText );
}
else if ( !allSupported && iListPtr->ImageCount() == 1)
{
// We allow user to choose wheather to send the image file which is not supported on target device
- // Original codeline: iObserverPtr->ControllerComplete( EBTSBIPOneNotSend );
- confirm=iObserverPtr->LaunchConfirmationQuery(R_BT_NOT_SEND_ALL_QUERY_SINGLE);
-
- if(confirm==EAknSoftkeyYes)
- {
- // Everything went ok. Start sending the images
- //
- iObserverPtr->LaunchProgressNoteL( iClient, iListPtr->ImageListSize(),iListPtr->ImageCount() );
-
- // Start sending images
- //
- SendL();
- }
+ HBufC* sendText = HbTextResolverSymbian::LoadLC(KBTNotSendOneText);
+ iObserverPtr->LaunchConfirmationQuery(sendText->Des());
+ CleanupStack::PopAndDestroy( sendText );
}
else if( allSupported )
{
- iObserverPtr->LaunchProgressNoteL( iClient, iListPtr->ImageListSize() + iListPtr->ObjectListSizeL(),iListPtr->ImageCount() + iListPtr->ObjectCount());
+ iObserverPtr->LaunchProgressNoteL( iClient, iListPtr->ImageCount() + iListPtr->ObjectCount());
// Start sending images
//
@@ -688,4 +669,23 @@
}
+
+void CBTSBIPController::SendUnSupportedFiles()
+ {
+ // Everything went ok. Start sending images
+
+ // group leaving functions in one trap for better performance:
+ TRAPD(err, {
+ iObserverPtr->LaunchProgressNoteL( iClient, iListPtr->ImageCount() );
+ SendL(); } );
+
+ if ( err != KErrNone )
+ {
+ DeleteTempFile( iTempFileName );
+ // Error on capability handling
+ //
+ iObserverPtr->ControllerComplete( EBTSGettingFailed );
+ }
+ }
+
// End of File
--- a/btobexprofiles/obexsendservices/obexservicesendutils/src/BTSBPPController.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexsendservices/obexservicesendutils/src/BTSBPPController.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-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"
@@ -23,8 +23,6 @@
#include "BTSUDebug.h"
#include <obexheaders.h>
-#include <Obexutils.rsg>
-#include <obexutilsuilayer.h>
// CONSTANTS
_LIT8( KBTSDirectPrintingUUID, "\x00\x00\x11\x18\x00\x00\x10\x00\x80\x00\x00\x80\x5F\x9B\x34\xFB" );
--- a/btobexprofiles/obexsendservices/obexservicesendutils/src/BTSController.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexsendservices/obexservicesendutils/src/BTSController.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -58,6 +58,11 @@
FLOG(_L("[BTSU]\t CBTSController::Abort"));
}
+void CBTSController::SendUnSupportedFiles()
+ {
+
+ }
+
// ---------------------------------------------------------------------------
// CBTSController::Abort
// ---------------------------------------------------------------------------
--- a/btobexprofiles/obexsendservices/obexservicesendutils/src/BTSOPPController.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexsendservices/obexservicesendutils/src/BTSOPPController.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -218,7 +218,7 @@
}
}
}
- iObserverPtr->LaunchProgressNoteL( iClient, iListPtr->ObjectListSizeL(),iListPtr->ObjectCount() );
+ iObserverPtr->LaunchProgressNoteL( iClient, iListPtr->ObjectCount() );
iFileIndex = 0;
UpdateProgressNoteL();
Send();
@@ -230,7 +230,7 @@
TInt size;
RBuf filename;
iListPtr->ObjectAtL( iFileIndex ).Size(size);
- filename.CreateL(255);
+ filename.CreateL(KMaxFileName);
iListPtr->ObjectAtL( iFileIndex ).Name(filename);
iObserverPtr->UpdateProgressNoteL(size,iFileIndex,filename);
filename.Close();
--- a/btobexprofiles/obexsendservices/obexservicesendutils/src/BTSProgresstimer.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexsendservices/obexservicesendutils/src/BTSProgresstimer.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -95,7 +95,7 @@
FLOG(_L("[OBEXUTILS]\t CBTSProgressTimer::RunL()"));
if (iProgressObserverPtr)
{
- iProgressObserverPtr->UpdateProgressInfoL();
+ // iProgressObserverPtr->UpdateProgressInfoL();
}
FLOG(_L("[OBEXUTILS]\t CBTSProgressTimer::RunL() completed"));
--- a/btobexprofiles/obexsendservices/obexservicesendutils/src/BTServiceStarter.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexsendservices/obexservicesendutils/src/BTServiceStarter.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -24,14 +24,10 @@
#include "BTSBIPController.h"
#include "BTSBPPController.h"
-#include <Obexutils.rsg>
-#include <obexutilsuilayer.h>
#include <obexutilsmessagehandler.h>
-#include <btnotif.h>
#include <featmgr.h>
-#include "BTSProgresstimer.h"
#include <hbdevicenotificationdialogsymbian.h>
-#include <btservices/bluetoothdevicedialogs.h>
+#include <hbtextresolversymbian.h>
// CONSTANTS
@@ -42,8 +38,21 @@
const TUint KBTProgressInterval = 1000000;
+const TUid KUidMsgTypeBt = {0x10009ED5};
+//todo need to find a suitable header to include. This is from obexutilslayer.h
-_LIT(KSendingDialog,"com.nokia.hb.btdevicedialog/1.0");
+const TInt KMaxDesCLength = 256;
+
+
+//_LIT(KSendingDialog,"com.nokia.hb.btdevicedialog/1.0");
+
+_LIT(KLocFileName, "btdialogs_");
+_LIT(KPath, "z:/resource/qt/translations/");
+
+_LIT(KFilesSentText, "txt_bt_dpophead_all_files_sent");//All files sent
+_LIT(KDeviceText,"txt_bt_dpopinfo_sent_to_1");
+//_LIT(KNotConnectedText,"txt_bt_info_unable_to_connect_with_bluetooth");
+_LIT(KSendingFailedText,"txt_bt_dpophead_sending_failed");
// ============================ MEMBER FUNCTIONS ===============================
@@ -78,12 +87,15 @@
{
FLOG(_L("[BTSU]\t CBTServiceStarter::ConstructL()"));
iDevice = CBTDevice::NewL();
-// iDialog = CObexUtilsDialog::NewL( this );
- iDeviceDialog = CHbDeviceDialogSymbian::NewL();
- iProgressDialog = CHbDeviceProgressDialogSymbian::NewL(CHbDeviceProgressDialogSymbian::EWaitDialog,this);
+ iDialog = CObexUtilsDialog::NewL( this );
FeatureManager::InitializeLibL();
iFeatureManagerInitialized = ETrue;
+ TBool ok = HbTextResolverSymbian::Init(KLocFileName, KPath);
+ if (!ok)
+ {
+ User::Leave( KErrNotFound );
+ }
FLOG(_L("[BTSU]\t CBTServiceStarter::ConstructL() completed"));
}
@@ -117,13 +129,7 @@
delete iController;
delete iBTEngDiscovery;
- // delete iDialog;
- delete iDeviceDialog;
- delete iProgressDialog;
- if(iProgressTimer)
- {
- delete iProgressTimer;
- }
+ delete iDialog;
if(iWaiter && iWaiter->IsStarted() )
{
@@ -262,41 +268,6 @@
}
}
-void CBTServiceStarter::UpdateProgressInfoL()
- {
- HBufC* key = HBufC::NewL(50);
- CleanupStack::PushL(key);
-
- HBufC* value = HBufC::NewL(50);
- CleanupStack::PushL(value);
-
- CHbSymbianVariantMap* map = CHbSymbianVariantMap::NewL();
- CleanupStack::PushL(map);
-
- TInt progress = GetProgressStatus();
-
- key->Des().Copy(_L("progressValue"));
- CHbSymbianVariant* progressvalue = CHbSymbianVariant::NewL(&progress, CHbSymbianVariant::EInt);
- map->Add(*key,progressvalue);
-
- key->Des().Copy(_L("currentFileIdx"));
- value->Des().AppendNum(iFileIndex);
- CHbSymbianVariant* currentFileIdx = CHbSymbianVariant::NewL(value, CHbSymbianVariant::EDes);
- map->Add(*key,currentFileIdx);
-
-
- TInt ret = iDeviceDialog->Update(*map);
-
- CleanupStack::PopAndDestroy(map);
- CleanupStack::PopAndDestroy(value);
- CleanupStack::PopAndDestroy(key);
-
-
- if ( iProgressTimer )
- {
- iProgressTimer->Tickle();
- }
- }
// -----------------------------------------------------------------------------
// CBTServiceStarter::ValidParameters
@@ -480,10 +451,9 @@
}
else
{
- // iDialog->LaunchWaitDialogL( R_BT_CONNECTING_WAIT_NOTE );
+ //todo need to do the localisation here
_LIT(KConnectText, "Connecting...");
- iProgressDialog->SetTextL(KConnectText);
- iProgressDialog->ShowL();
+ iDialog->LaunchWaitDialogL(KConnectText);
}
FLOG(_L("[BTSU]\t CBTServiceStarter::LaunchWaitNoteL() completed"));
@@ -497,15 +467,10 @@
{
FLOG(_L("[BTSU]\t CBTServiceStarter::CancelWaitNote()"));
- // if ( iDialog )
- // {
- // TRAP_IGNORE( iDialog->CancelWaitDialogL() );
- if(iProgressDialog)
- {
- //This has to be tested
- iProgressDialog->Close();
- }
- // }
+ if ( iDialog )
+ {
+ iDialog->CancelWaitDialog();
+ }
FLOG(_L("[BTSU]\t CBTServiceStarter::CancelWaitNote() completed"));
}
@@ -515,12 +480,12 @@
// CBTServiceStarter::LaunchProgressNoteL
// -----------------------------------------------------------------------------
//
+//todo reusing the second param aTotalSize to aFileCount as it is no longer used check it being used in other places
void CBTServiceStarter::LaunchProgressNoteL( MBTServiceProgressGetter* aGetter,
- TInt aTotalSize, TInt aFileCount)
+ TInt aFileCount)
{
FLOG(_L("[BTSU]\t CBTServiceStarter::LaunchProgressNoteL()"));
- (void) aTotalSize;
-
+ RBuf deviceName;
if ( iService != EBTPrintingService )
{
iProgressGetter = aGetter;
@@ -528,33 +493,24 @@
if ( !iProgressDialogActive )
{
- iFileCount = aFileCount;
+ // todo need to change the last parameter because we are now using the textmap id which is a string
+ // whether we replace it with that or remove the parameter is to be decided
iMessageServerIndex = TObexUtilsMessageHandler::CreateOutboxEntryL(
- KUidMsgTypeBt, R_BT_SEND_OUTBOX_SENDING );
- // iDialog->LaunchProgressDialogL( this, aTotalSize,
- // R_BT_SENDING_DATA, KBTProgressInterval );
- CHbSymbianVariantMap* map = CHbSymbianVariantMap::NewL();
- CleanupStack::PushL(map);
- if ( iProgressTimer )
- {
- iProgressTimer->Cancel();
- delete iProgressTimer;
- iProgressTimer = NULL;
- }
+ KUidMsgTypeBt, 0 );
- iProgressTimer = CBTSProgressTimer::NewL( this );
- iProgressTimer->SetTimeout( KBTProgressInterval );
+ deviceName.CreateL(KMaxDesCLength);
- iProgressTimer->Tickle();
-
- CHbSymbianVariant* value = NULL;
- TBuf<6> key;
- TInt data = TBluetoothDialogParams::ESend;
- key.Num(TBluetoothDialogParams::EDialogType);
- value = CHbSymbianVariant::NewL( (TAny*) &data, CHbSymbianVariant::EInt );
- User::LeaveIfError(map->Add( key, value )); // Takes ownership of value
- iDeviceDialog->Show(KSendingDialog(),*map,this);
- CleanupStack::PopAndDestroy(map);
+ if ( iDevice->IsValidFriendlyName() )
+ {
+ deviceName.Copy( iDevice->FriendlyName() );
+ }
+ else
+ {
+ deviceName.Copy( BTDeviceNameConverter::ToUnicodeL(iDevice->DeviceName()));
+ }
+ iDialog->LaunchProgressDialogL( this, aFileCount,
+ deviceName, KBTProgressInterval );
+ deviceName.Close();
}
iProgressDialogActive=ETrue;
}
@@ -564,74 +520,8 @@
void CBTServiceStarter::UpdateProgressNoteL(TInt aFileSize,TInt aFileIndex, const TDesC& aFileName )
{
- HBufC* key = HBufC::NewL(50);
- CleanupStack::PushL(key);
-
- HBufC* value = HBufC::NewL(50);
- CleanupStack::PushL(value);
- CHbSymbianVariantMap* map = CHbSymbianVariantMap::NewL();
- CleanupStack::PushL(map);
-
- iFileIndex = aFileIndex+1;
- key->Des().Copy(_L("currentFileIdx"));
- value->Des().AppendNum(aFileIndex+1);
- CHbSymbianVariant* currentFileIdx = CHbSymbianVariant::NewL(value, CHbSymbianVariant::EDes);
- map->Add(*key,currentFileIdx);
-
- key->Des().Copy(_L("totalFilesCnt"));
- value->Des().Zero();
- value->Des().AppendNum(iFileCount);
- CHbSymbianVariant* totalFilesCnt = CHbSymbianVariant::NewL(value, CHbSymbianVariant::EDes);
- map->Add(*key,totalFilesCnt);
-
-
- key->Des().Copy(_L("destinationName"));
- if ( iDevice->IsValidFriendlyName() )
- {
- value->Des().Copy( iDevice->FriendlyName() );
- }
- else
- {
- value->Des().Copy( BTDeviceNameConverter::ToUnicodeL(iDevice->DeviceName()));
- }
-
- CHbSymbianVariant* destinationName = CHbSymbianVariant::NewL(value, CHbSymbianVariant::EDes);
- map->Add(*key,destinationName);
-
- key->Des().Copy(_L("fileName"));
- value->Des().Copy(aFileName);
- CHbSymbianVariant* fileName = CHbSymbianVariant::NewL(value, CHbSymbianVariant::EDes);
- map->Add(*key,fileName);
-
- key->Des().Copy(_L("fileSzTxt"));
- value->Des().Zero();
- if(aFileSize < 1024)
- {
- value->Des().AppendNum(aFileSize);
- value->Des().Append(_L(" Bytes"));
- }
- else
- {
- TInt filesize = aFileSize/1024;
- value->Des().AppendNum(filesize);
- value->Des().Append(_L(" KB"));
- }
-
- CHbSymbianVariant* fileSzTxt = CHbSymbianVariant::NewL(value, CHbSymbianVariant::EDes);
- map->Add(*key,fileSzTxt);
-
-
- key->Des().Copy(_L("fileSz"));
- CHbSymbianVariant* fileSz = CHbSymbianVariant::NewL(&aFileSize, CHbSymbianVariant::EInt);
- map->Add(*key,fileSz);
-
-
-
- TInt ret = iDeviceDialog->Update(*map);
- CleanupStack::PopAndDestroy(map);
- CleanupStack::PopAndDestroy(value);
- CleanupStack::PopAndDestroy(key);
+ iDialog->UpdateProgressNoteL(aFileSize,aFileIndex,aFileName);
}
// -----------------------------------------------------------------------------
// CBTServiceStarter::CancelProgressNote
@@ -641,31 +531,21 @@
{
FLOG(_L("[BTSU]\t CBTServiceStarter::CancelProgressNote()"));
- // if ( iDialog )
+ if ( iDialog )
{
- // TRAP_IGNORE( iDialog->CancelProgressDialogL() );
- if ( iProgressTimer )
- {
- iProgressTimer->Cancel();
- delete iProgressTimer;
- iProgressTimer = NULL;
- }
+ iDialog->CancelProgressDialog();
}
- if(iDeviceDialog)
- {
- iDeviceDialog->Cancel();
- }
}
// -----------------------------------------------------------------------------
// CBTServiceStarter::DialogDismissed
// -----------------------------------------------------------------------------
//
-void CBTServiceStarter::DialogDismissed( TInt aButtonId )
+void CBTServiceStarter::DialogDismissed(TInt aButtonId )
{
FLOG(_L("[BTSU]\t CBTServiceStarter::DialogDismissed()"));
- if( aButtonId == EAknSoftkeyCancel )
- {
+ if( aButtonId == ECancelButton )
+ { // this condition is hit for the progress dialog and connecting dialog cancel
FLOG(_L("[BTSU]\t CBTServiceStarter::DialogDissmissed(), cancelled by user"));
iUserCancel=ETrue;
if ( iController )
@@ -677,12 +557,17 @@
StopTransfer(KErrCancel);
}
}
- else if ( aButtonId == EAknSoftkeyNo )
+ else if ( aButtonId == ENoButton )
{
// user abortion
//
iUserCancel = ETrue;
StopTransfer( KErrCancel );
+ CancelWaitNote();
+ }
+ else //EYesButton
+ {// this condition is hit when user is ok with sending the unsupported images
+ iController->SendUnSupportedFiles();
}
FLOG(_L("[BTSU]\t CBTServiceStarter::DialogDismissed() completed"));
}
@@ -695,130 +580,63 @@
{
FLOG(_L("[BTSU]\t CBTServiceStarter::ShowNote()"));
-// TInt resource = 0;
- TBuf<255> buf;
+ TBuf<KMaxDesCLength> buf;
+ TPtrC sendTextMapId;
+
+ if ( iDevice->IsValidFriendlyName() )
+ {
+ buf.Copy( iDevice->FriendlyName() );
+ }
+ else
+ {
+ TRAP_IGNORE( buf.Copy( BTDeviceNameConverter::ToUnicodeL(iDevice->DeviceName())));
+ }
+
switch ( aReason )
{
case EBTSNoError:
{
- /* if ( iService == EBTPrintingService )
- {
- // resource = R_BT_DATA_SENT2;
-
- _LIT(KText, "Data Sent");
- buf.Copy(KText);
- }
- else
- {
- //resource = R_BT_DATA_SENT;*/
- _LIT(KText, "All files Sent to ");
- buf.Copy(KText);
- if ( iDevice->IsValidFriendlyName() )
- {
- buf.Append( iDevice->FriendlyName() );
- }
- else
- {
- TRAP_IGNORE( buf.Append( BTDeviceNameConverter::ToUnicodeL(iDevice->DeviceName())));
- }
-
-
-// }
+ sendTextMapId.Set(KFilesSentText());
break;
}
case EBTSConnectingFailed:
- {
- //resource = R_BT_DEV_NOT_AVAIL;
- _LIT(KText, "Cannot establish Bluetooth connection");
- buf.Copy(KText);
- break;
- }
case EBTSGettingFailed:
case EBTSPuttingFailed:
+ case EBTSNoSuitableProfiles:
+// case EBTSBIPSomeSend:
+// case EBTSBIPOneNotSend:
+// case EBTSBIPNoneSend:
+ default:
{
- if ( iService == EBTPrintingService )
- {
- _LIT(KText, "Sending failed");
- //resource = R_BT_FAILED_TO_SEND2;
- buf.Copy(KText);
- }
- else
- {
- _LIT(KText, "Failed to send Data");
- //resource = R_BT_FAILED_TO_SEND;
- buf.Copy(KText);
- }
+ sendTextMapId.Set(KSendingFailedText());
break;
}
- case EBTSNoSuitableProfiles:
- {
- if ( iService == EBTPrintingService )
- {
- _LIT(KText, "Printer not supported");
- buf.Copy(KText);
- // resource = R_BT_PRINTING_NOT_SUPPORTED;
- }
- else
- {
- _LIT(KText, "Failed to send Data");
- buf.Copy(KText);
- // resource = R_BT_FAILED_TO_SEND;
- }
- break;
- }
- case EBTSBIPSomeSend:
- {
- _LIT(KText, "Failed to send Data");
- buf.Copy(KText);
- //resource = R_BT_FAILED_TO_SEND;
- break;
- }
- case EBTSBIPOneNotSend:
- {
- _LIT(KText, "Receiving device does not support this image format.");
- buf.Copy(KText);
- //resource = R_BT_NOT_RECEIVE_ONE;
- break;
- }
- case EBTSBIPNoneSend:
- {
- _LIT(KText, "Receiving device does not support the needed image formats.");
- buf.Copy(KText);
- //resource = R_BT_NOT_RECEIVE_ANY;
- break;
- }
- default:
- {
- // resource = R_BT_DEV_NOT_AVAIL;
- _LIT(KText, "Cannot establish Bluetooth connection");
- buf.Copy(KText);
- break;
- }
+ //todo below three enums are not valid and it is not being used at anywhere do we need to have it
+
}
-// TRAP_IGNORE(TObexUtilsUiLayer::ShowInformationNoteL( resource ) );
-// CHbDeviceMessageBoxSymbian::InformationL(buf);
- TRAP_IGNORE(CHbDeviceNotificationDialogSymbian::NotificationL(KNullDesC, buf, KNullDesC));
+ TRAP_IGNORE(
+ HBufC* sendText = HbTextResolverSymbian::LoadLC(sendTextMapId);
+ HBufC* deviceName = HbTextResolverSymbian::LoadLC(KDeviceText,buf);
+ CHbDeviceNotificationDialogSymbian::NotificationL(KNullDesC, deviceName->Des(), sendText->Des());
+ CleanupStack::PopAndDestroy( deviceName );
+ CleanupStack::PopAndDestroy( sendText );
+ );
+
FLOG(_L("[BTSU]\t CBTServiceStarter::ShowNote() completed"));
}
+
+
// -----------------------------------------------------------------------------
// CBTServiceStarter::LaunchConfirmationQuery
// -----------------------------------------------------------------------------
//
-TInt CBTServiceStarter::LaunchConfirmationQuery(TInt /*aResourceId*/)
- {
- TInt keypress=0;
-// TRAP_IGNORE( keypress = iDialog->LaunchQueryDialogL( aResourceId ));
- if ( !keypress )
- {
- FLOG(_L("[BTSU]\t CBTServiceStarter::LaunchConfirmationQuery(), cancelled by user"));
- DialogDismissed(EAknSoftkeyNo);
- CancelWaitNote();
- }
- return keypress;
- }
+void CBTServiceStarter::LaunchConfirmationQuery(const TDesC& aConfirmText)
+ {
+ TRAP_IGNORE(iDialog->LaunchQueryDialogL(aConfirmText ));
+ }
// -----------------------------------------------------------------------------
// CBTServiceStarter::StopTransfer
@@ -1220,61 +1038,3 @@
-void CBTServiceStarter::ProgressDialogCancelled(const CHbDeviceProgressDialogSymbian*/* aDialog*/)
- {
- FLOG(_L("[BTSU]\t CBTServiceStarter::ProgressDialogCancelled(), cancelled by user"));
- iUserCancel=ETrue;
- if ( iController )
- {
- iController->Abort();
- }
- else
- {
- StopTransfer(KErrCancel);
- }
- }
-
-
-void CBTServiceStarter::ProgressDialogClosed(const CHbDeviceProgressDialogSymbian* /* aDialog*/)
- {
- }
-
-
-void CBTServiceStarter::DataReceived(CHbSymbianVariantMap& /*aData*/)
- {
-
- }
-
-
-void CBTServiceStarter::DeviceDialogClosed(TInt /* aCompletionCode*/)
- {
- TBuf<255> buf;
- _LIT(KText, "Sending Cancelled to ");
- buf.Copy(KText);
- if ( iDevice->IsValidFriendlyName() )
- {
- buf.Append( iDevice->FriendlyName() );
- }
- else
- {
- TRAP_IGNORE(buf.Append( BTDeviceNameConverter::ToUnicodeL(iDevice->DeviceName())));
- }
-
- iUserCancel=ETrue;
- if ( iController )
- {
- iController->Abort();
- }
- else
- {
- StopTransfer(KErrCancel);
- }
-
- if ( iProgressTimer )
- {
- iProgressTimer->Cancel();
- delete iProgressTimer;
- iProgressTimer = NULL;
- }
- TRAP_IGNORE(CHbDeviceNotificationDialogSymbian::NotificationL(KNullDesC, buf, KNullDesC));
- }
--- a/btobexprofiles/obexserviceman/group/bld.inf Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexserviceman/group/bld.inf Wed Jun 23 18:23:52 2010 +0300
@@ -48,7 +48,6 @@
../rom/obexservicemanirda.iby CORE_MW_LAYER_IBY_EXPORT_PATH(obexservicemanirda.iby)
../rom/obexservicemanusb.iby CORE_MW_LAYER_IBY_EXPORT_PATH(obexservicemanusb.iby)
../rom/ObexUtils.iby CORE_MW_LAYER_IBY_EXPORT_PATH(ObexUtils.iby)
-../rom/ObexUtilsResources.iby LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(ObexUtilsResources.iby)
#include "../utils/group/bld.inf"
--- a/btobexprofiles/obexserviceman/obexservicemanserver/inc/SrcsServiceManager.h Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexserviceman/obexservicemanserver/inc/SrcsServiceManager.h Wed Jun 23 18:23:52 2010 +0300
@@ -138,7 +138,7 @@
* Handling of Service array
*
*/
- void ServiceArray(CArrayPtr<CSrcsTransport> &aTransport, TBool aState);
+ void ServiceArrayL(CArrayPtr<CSrcsTransport> &aTransport, TBool aState);
private:
--- a/btobexprofiles/obexserviceman/obexservicemanserver/src/SrcsServiceManager.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexserviceman/obexservicemanserver/src/SrcsServiceManager.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -228,17 +228,17 @@
case ESrcsTransportBT:
FLOG(_L("[SRCS]\tserver\tCSrcsServiceManager: ManageServicesL(Bluetooth)"));
iTransportName.Set(KSrcsTransportBT);
- ServiceArray(*iBTConnectionArray, aState);
+ ServiceArrayL(*iBTConnectionArray, aState);
break;
case ESrcsTransportUSB:
FLOG(_L("[SRCS]\tserver\tCSrcsServiceManager: ManageServicesL(USB)"));
iTransportName.Set(KSrcsTransportUSB);
- ServiceArray(*iUSBConnectionArray, aState);
+ ServiceArrayL(*iUSBConnectionArray, aState);
break;
case ESrcsTransportIrDA:
FLOG(_L("[SRCS]\tserver\tCSrcsServiceManager: ManageServicesL(IrDA)"));
iTransportName.Set(KSrcsTransportIrDA);
- ServiceArray(*iIrDAConnectionArray, aState);
+ ServiceArrayL(*iIrDAConnectionArray, aState);
break;
default:
FTRACE(FPrint(_L("[SRCS]\tserver\tCSrcsServiceManager: ManageServicesL. Transport not supported.")));
@@ -252,9 +252,9 @@
// Method to manage Service arrays
// ---------------------------------------------------------
//
-void CSrcsServiceManager::ServiceArray(CArrayPtr<CSrcsTransport> &aTransport, TBool aState)
+void CSrcsServiceManager::ServiceArrayL(CArrayPtr<CSrcsTransport> &aTransport, TBool aState)
{
- FLOG(_L("[SRCS]\tserver\tCSrcsServiceManager: ServiceArray"));
+ FLOG(_L("[SRCS]\tserver\tCSrcsServiceManager: ServiceArrayL"));
// We start and stop services by aState value
if ( aState ) // trun on service
@@ -320,7 +320,7 @@
FTRACE(FPrint(_L("[SRCS]\tserver\tCSrcsServiceManager: ManageServicesL. Transport implementation not found.")));
}
- // Clean up
+ // Clean up. todo (from reviewing): memory leak when some func above leaves. To be fixed
infoArrayTranport.ResetAndDestroy();
infoArrayServiceController.ResetAndDestroy();
CleanupStack::PopAndDestroy(2); //infoArrayServiceController
--- a/btobexprofiles/obexserviceman/rom/ObexUtils.iby Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexserviceman/rom/ObexUtils.iby Wed Jun 23 18:23:52 2010 +0300
@@ -20,5 +20,6 @@
#define __OBEXUTILS_IBY__
file=ABI_DIR\BUILD_DIR\obexutils.dll SHARED_LIB_DIR\obexutils.dll
+data=/epoc32/data/z/resource/qt/translations/btdialogs_en_GB.qm resource/qt/translations/btdialogs_en_GB.qm
#endif
--- a/btobexprofiles/obexserviceman/rom/ObexUtilsResources.iby Fri Jun 11 13:48:51 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
-* Copyright (c) 2002 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: IBY file for localizable elements (resources of ObexUtils
-* library
-*
-*/
-
-
-#ifndef OBEXUTILSRESOURCES_IBY
-#define OBEXUTILSRESOURCES_IBY
-
-data=DATAZ_\RESOURCE_FILES_DIR\obexutils.rsc RESOURCE_FILES_DIR\obexutils.rsc
-
-#endif
-
-// End of File
--- a/btobexprofiles/obexserviceman/utils/bmarm/OBEXUTILSU.DEF Fri Jun 11 13:48:51 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-EXPORTS
- UpdateProgressDialogL__16CObexUtilsDialogii @ 1 NONAME R3UNUSED ; CObexUtilsDialog::UpdateProgressDialogL(int, int)
- CancelWaitDialogL__16CObexUtilsDialog @ 2 NONAME R3UNUSED ; CObexUtilsDialog::CancelWaitDialogL(void)
- ContextIcon__17TObexUtilsUiLayerRC9TMsvEntry13TContextMedia @ 3 NONAME R3UNUSED ; TObexUtilsUiLayer::ContextIcon(TMsvEntry const &, TContextMedia)
- CreateOutboxEntryL__24TObexUtilsMessageHandlerRC4TUidRCi @ 4 NONAME R3UNUSED ; TObexUtilsMessageHandler::CreateOutboxEntryL(TUid const &, int const &)
- DeleteOutboxEntryL__24TObexUtilsMessageHandlerRCl @ 5 NONAME R3UNUSED ; TObexUtilsMessageHandler::DeleteOutboxEntryL(long const &)
- GetFileSystemStatus__24TObexUtilsMessageHandler @ 6 NONAME R3UNUSED ; TObexUtilsMessageHandler::GetFileSystemStatus(void)
- GetMmcFileSystemStatus__24TObexUtilsMessageHandler @ 7 NONAME R3UNUSED ; TObexUtilsMessageHandler::GetMmcFileSystemStatus(void)
- LaunchEditorApplicationL__17TObexUtilsUiLayerP9CMsvEntryR11CMsvSession @ 8 NONAME R3UNUSED ; TObexUtilsUiLayer::LaunchEditorApplicationL(CMsvEntry *, CMsvSession &)
- LaunchProgressDialogL__16CObexUtilsDialogP26MObexUtilsProgressObserveriii @ 9 NONAME ; CObexUtilsDialog::LaunchProgressDialogL(MObexUtilsProgressObserver *, int, int, int)
- LaunchWaitDialogL__16CObexUtilsDialogi @ 10 NONAME R3UNUSED ; CObexUtilsDialog::LaunchWaitDialogL(int)
- NewLC__16CObexUtilsDialogP24MObexUtilsDialogObserver @ 11 NONAME R3UNUSED ; CObexUtilsDialog::NewLC(MObexUtilsDialogObserver *)
- NewL__16CObexUtilsDialogP24MObexUtilsDialogObserver @ 12 NONAME R3UNUSED ; CObexUtilsDialog::NewL(MObexUtilsDialogObserver *)
- OperationNotSupported__17TObexUtilsUiLayer @ 13 NONAME R3UNUSED ; TObexUtilsUiLayer::OperationNotSupported(void)
- ReadResourceL__17TObexUtilsUiLayerR6TDes16RCi @ 14 NONAME R3UNUSED ; TObexUtilsUiLayer::ReadResourceL(TDes16 &, int const &)
- SaveObjToInboxL__24TObexUtilsMessageHandlerP14CObexBufObjectRC7TDesC16G4TUid @ 15 NONAME R3UNUSED ; TObexUtilsMessageHandler::SaveObjToInboxL(CObexBufObject *, TDesC16 const &, TUid)
- ShowErrorNoteL__17TObexUtilsUiLayerRCi @ 16 NONAME R3UNUSED ; TObexUtilsUiLayer::ShowErrorNoteL(int const &)
- ShowInformationNoteL__17TObexUtilsUiLayerRCi @ 17 NONAME R3UNUSED ; TObexUtilsUiLayer::ShowInformationNoteL(int const &)
- UpdateBitmaps__17TObexUtilsUiLayerG4TUidRiRt4TBuf1i256T2T2 @ 18 NONAME ; TObexUtilsUiLayer::UpdateBitmaps(TUid, int &, TBuf<256> &, int &, int &)
- CancelProgressDialogL__16CObexUtilsDialog @ 19 NONAME R3UNUSED ; CObexUtilsDialog::CancelProgressDialogL(void)
- CreateIconsL__17TObexUtilsUiLayerG4TUidPt9CArrayPtr1Zt9CArrayPtr1Z10CFbsBitmap @ 20 NONAME R3UNUSED ; TObexUtilsUiLayer::CreateIconsL(TUid, CArrayPtr<CArrayPtr<CFbsBitmap> > *)
- NewL__26CObexUtilsPropertyNotifierP31MObexUtilsPropertyNotifyHandler24TMemoryPropertyCheckType @ 21 NONAME R3UNUSED ; CObexUtilsPropertyNotifier::NewL(MObexUtilsPropertyNotifyHandler *, TMemoryPropertyCheckType)
- LaunchQueryDialogL__16CObexUtilsDialogRCi @ 22 NONAME R3UNUSED ; CObexUtilsDialog::LaunchQueryDialogL(int const &)
- ShowNumberOfSendFileL__16CObexUtilsDialogii @ 23 NONAME R3UNUSED ; CObexUtilsDialog::ShowNumberOfSendFileL(int, int)
- CreateInboxAttachmentL__24TObexUtilsMessageHandlerP14CObexBufObjectG4TUidRlR5RFile @ 24 NONAME ; TObexUtilsMessageHandler::CreateInboxAttachmentL(CObexBufObject *, TUid, long &, RFile &)
- RemoveInboxEntriesL__24TObexUtilsMessageHandlerRP14CObexBufObjectl @ 25 NONAME R3UNUSED ; TObexUtilsMessageHandler::RemoveInboxEntriesL(CObexBufObject *&, long)
- SaveObjToInboxL__24TObexUtilsMessageHandlerRP14CObexBufObjectR5RFilel @ 26 NONAME R3UNUSED ; TObexUtilsMessageHandler::SaveObjToInboxL(CObexBufObject *&, RFile &, long)
-
--- a/btobexprofiles/obexserviceman/utils/bwins/OBEXUTILSU.DEF Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexserviceman/utils/bwins/OBEXUTILSU.DEF Wed Jun 23 18:23:52 2010 +0300
@@ -1,62 +1,39 @@
EXPORTS
- ?ReadResourceL@TObexUtilsUiLayer@@SAXAAVTDes16@@ABH@Z @ 1 NONAME ; void TObexUtilsUiLayer::ReadResourceL(class TDes16 &, int const &)
+ ?GetCenRepKeyIntValueL@TObexUtilsMessageHandler@@SAHVTUid@@KAAH@Z @ 1 NONAME ; int TObexUtilsMessageHandler::GetCenRepKeyIntValueL(class TUid, unsigned long, int &)
?SaveObjToInboxL@TObexUtilsMessageHandler@@SAXPAVCObexBufObject@@ABVTDesC16@@VTUid@@@Z @ 2 NONAME ; void TObexUtilsMessageHandler::SaveObjToInboxL(class CObexBufObject *, class TDesC16 const &, class TUid)
?RemoveInboxEntriesL@TObexUtilsMessageHandler@@SAXAAPAVCObexBufObject@@J@Z @ 3 NONAME ; void TObexUtilsMessageHandler::RemoveInboxEntriesL(class CObexBufObject * &, long)
- ?GetNumber@CObexUtilsOpaqueData@@QAEHAAI@Z @ 4 NONAME ; int CObexUtilsOpaqueData::GetNumber(unsigned int &)
- ??0CObexUtilsOpaqueData@@QAE@ABVTDesC8@@@Z @ 5 NONAME ; CObexUtilsOpaqueData::CObexUtilsOpaqueData(class TDesC8 const &)
- ?UpdateProgressDialog@CGlobalProgressDialog@@QAEXHH@Z @ 6 NONAME ; void CGlobalProgressDialog::UpdateProgressDialog(int, int)
- ?AddEntryToInboxL@TObexUtilsMessageHandler@@SAXAAJAAV?$TBuf@$0BAA@@@@Z @ 7 NONAME ; void TObexUtilsMessageHandler::AddEntryToInboxL(long &, class TBuf<256> &)
- ?CancelWaitDialogL@CObexUtilsDialog@@QAEXXZ @ 8 NONAME ; void CObexUtilsDialog::CancelWaitDialogL(void)
- ?LaunchFileManagerL@TObexUtilsUiLayer@@SAXAAVTDesC16@@HH@Z @ 9 NONAME ; void TObexUtilsUiLayer::LaunchFileManagerL(class TDesC16 &, int, int)
- ?CreateDefaultMtmServiceL@TObexUtilsMessageHandler@@SAXVTUid@@@Z @ 10 NONAME ; void TObexUtilsMessageHandler::CreateDefaultMtmServiceL(class TUid)
- ?UpdateProgressDialogL@CObexUtilsDialog@@QAEXHH@Z @ 11 NONAME ; void CObexUtilsDialog::UpdateProgressDialogL(int, int)
- ?GetCenRepKeyStringValueL@TObexUtilsMessageHandler@@SAHVTUid@@KAAVTDes16@@@Z @ 12 NONAME ; int TObexUtilsMessageHandler::GetCenRepKeyStringValueL(class TUid, unsigned long, class TDes16 &)
- ?GetMmcFileSystemStatus@TObexUtilsMessageHandler@@SAHXZ @ 13 NONAME ; int TObexUtilsMessageHandler::GetMmcFileSystemStatus(void)
- ?GetPubSubKeyIntValue@TObexUtilsMessageHandler@@SAHVTUid@@IAAH@Z @ 14 NONAME ; int TObexUtilsMessageHandler::GetPubSubKeyIntValue(class TUid, unsigned int, int &)
- ?IsBackupRunning@TObexUtilsUiLayer@@SAHXZ @ 15 NONAME ; int TObexUtilsUiLayer::IsBackupRunning(void)
- ?CancelProgressDialogL@CObexUtilsDialog@@QAEXXZ @ 16 NONAME ; void CObexUtilsDialog::CancelProgressDialogL(void)
- ?ProcessFinished@CGlobalProgressDialog@@QAEXXZ @ 17 NONAME ; void CGlobalProgressDialog::ProcessFinished(void)
- ?AddEntryToInboxL@TObexUtilsMessageHandler@@SAXAAJAAV?$TBuf@$0BAA@@@PAV?$RArray@J@@@Z @ 18 NONAME ; void TObexUtilsMessageHandler::AddEntryToInboxL(long &, class TBuf<256> &, class RArray<long> *)
- ?CreateIconsL@TObexUtilsUiLayer@@SAXVTUid@@PAV?$CArrayPtr@V?$CArrayPtr@VCFbsBitmap@@@@@@@Z @ 19 NONAME ; void TObexUtilsUiLayer::CreateIconsL(class TUid, class CArrayPtr<class CArrayPtr<class CFbsBitmap> > *)
- ?ShowProgressDialogNameSizeL@CGlobalProgressDialog@@QAEXAAVTDesC16@@_J@Z @ 20 NONAME ; void CGlobalProgressDialog::ShowProgressDialogNameSizeL(class TDesC16 &, long long)
- ?GetFileSystemStatus@TObexUtilsMessageHandler@@SAHXZ @ 21 NONAME ; int TObexUtilsMessageHandler::GetFileSystemStatus(void)
- ?NewL@CObexUtilsDialog@@SAPAV1@PAVMObexUtilsDialogObserver@@@Z @ 22 NONAME ; class CObexUtilsDialog * CObexUtilsDialog::NewL(class MObexUtilsDialogObserver *)
- ?LaunchQueryDialogL@CObexUtilsDialog@@QAEHABH@Z @ 23 NONAME ; int CObexUtilsDialog::LaunchQueryDialogL(int const &)
- ?CreateOutboxEntryL@TObexUtilsMessageHandler@@SAJABVTUid@@ABH@Z @ 24 NONAME ; long TObexUtilsMessageHandler::CreateOutboxEntryL(class TUid const &, int const &)
- ?ShowGlobalConfirmationQueryL@TObexUtilsUiLayer@@SAXABH@Z @ 25 NONAME ; void TObexUtilsUiLayer::ShowGlobalConfirmationQueryL(int const &)
- ?CreateInboxAttachmentL@TObexUtilsMessageHandler@@SAXAAPAVCObexBufObject@@VTUid@@AAJAAVRFile@@@Z @ 26 NONAME ; void TObexUtilsMessageHandler::CreateInboxAttachmentL(class CObexBufObject * &, class TUid, long &, class RFile &)
- ?GetMessageCentreDriveL@TObexUtilsMessageHandler@@SAHXZ @ 27 NONAME ; int TObexUtilsMessageHandler::GetMessageCentreDriveL(void)
- ?LaunchEditorApplicationL@TObexUtilsUiLayer@@SAXAAJ@Z @ 28 NONAME ; void TObexUtilsUiLayer::LaunchEditorApplicationL(long &)
- ?GetCenRepKeyIntValueL@TObexUtilsMessageHandler@@SAHVTUid@@KAAH@Z @ 29 NONAME ; int TObexUtilsMessageHandler::GetCenRepKeyIntValueL(class TUid, unsigned long, int &)
- ?LaunchWaitDialogL@CObexUtilsDialog@@QAEXH@Z @ 30 NONAME ; void CObexUtilsDialog::LaunchWaitDialogL(int)
- ?ShowNoteDialogL@CGlobalDialog@@QAEXHH@Z @ 31 NONAME ; void CGlobalDialog::ShowNoteDialogL(int, int)
- ?ShowGlobalConfirmationQueryPlainL@TObexUtilsUiLayer@@SAHABH@Z @ 32 NONAME ; int TObexUtilsUiLayer::ShowGlobalConfirmationQueryPlainL(int const &)
- ?NewLC@CGlobalProgressDialog@@SAPAV1@PAVMGlobalProgressCallback@@@Z @ 33 NONAME ; class CGlobalProgressDialog * CGlobalProgressDialog::NewLC(class MGlobalProgressCallback *)
- ?IsString@CObexUtilsOpaqueData@@QAEHXZ @ 34 NONAME ; int CObexUtilsOpaqueData::IsString(void)
- ?CreateReceiveBufferAndRFileL@TObexUtilsMessageHandler@@SAHAAVRFile@@ABVTDesC16@@AAV?$TBuf@$0BAA@@@AAPAVCBufFlat@@H@Z @ 35 NONAME ; int TObexUtilsMessageHandler::CreateReceiveBufferAndRFileL(class RFile &, class TDesC16 const &, class TBuf<256> &, class CBufFlat * &, int)
- ?LaunchEditorApplicationOperationL@TObexUtilsUiLayer@@SAPAVCMsvOperation@@AAVCMsvSession@@PAVCMsvEntry@@AAVTRequestStatus@@@Z @ 36 NONAME ; class CMsvOperation * TObexUtilsUiLayer::LaunchEditorApplicationOperationL(class CMsvSession &, class CMsvEntry *, class TRequestStatus &)
- ?OperationNotSupported@TObexUtilsUiLayer@@SAHXZ @ 37 NONAME ; int TObexUtilsUiLayer::OperationNotSupported(void)
- ?ProcessFinished@CGlobalDialog@@QAEXXZ @ 38 NONAME ; void CGlobalDialog::ProcessFinished(void)
- ?UpdateBitmaps@TObexUtilsUiLayer@@SAXVTUid@@AAHAAV?$TBuf@$0BAA@@@11@Z @ 39 NONAME ; void TObexUtilsUiLayer::UpdateBitmaps(class TUid, int &, class TBuf<256> &, int &, int &)
- ?ShowErrorDialogL@CGlobalDialog@@QAEXH@Z @ 40 NONAME ; void CGlobalDialog::ShowErrorDialogL(int)
- ?ShowProgressDialogL@CGlobalProgressDialog@@QAEXH@Z @ 41 NONAME ; void CGlobalProgressDialog::ShowProgressDialogL(int)
- ?ShowNumberOfSendFileL@CObexUtilsDialog@@QAEXHH@Z @ 42 NONAME ; void CObexUtilsDialog::ShowNumberOfSendFileL(int, int)
- ?ShowErrorNoteL@TObexUtilsUiLayer@@SAXABH@Z @ 43 NONAME ; void TObexUtilsUiLayer::ShowErrorNoteL(int const &)
- ?NewL@CObexUtilsPropertyNotifier@@SAPAV1@PAVMObexUtilsPropertyNotifyHandler@@W4TMemoryPropertyCheckType@@@Z @ 44 NONAME ; class CObexUtilsPropertyNotifier * CObexUtilsPropertyNotifier::NewL(class MObexUtilsPropertyNotifyHandler *, enum TMemoryPropertyCheckType)
- ?ShowGlobalFileOpenConfirmationQueryL@TObexUtilsUiLayer@@SAHABHABVTDesC16@@@Z @ 45 NONAME ; int TObexUtilsUiLayer::ShowGlobalFileOpenConfirmationQueryL(int const &, class TDesC16 const &)
- ?GetString@CObexUtilsOpaqueData@@QAEHAAV?$TBuf8@$0BAA@@@@Z @ 46 NONAME ; int CObexUtilsOpaqueData::GetString(class TBuf8<256> &)
- ?UpdateEntryAttachmentL@TObexUtilsMessageHandler@@SAXAAV?$TBuf@$0BAA@@@PAVCMsvEntry@@@Z @ 47 NONAME ; void TObexUtilsMessageHandler::UpdateEntryAttachmentL(class TBuf<256> &, class CMsvEntry *)
- ?NewL@CGlobalDialog@@SAPAV1@PAVMGlobalNoteCallback@@@Z @ 48 NONAME ; class CGlobalDialog * CGlobalDialog::NewL(class MGlobalNoteCallback *)
- ?CreateInboxAttachmentL@TObexUtilsMessageHandler@@SAXAAPAVCObexBufObject@@VTUid@@AAJAAVRFile@@ABVTDesC16@@@Z @ 49 NONAME ; void TObexUtilsMessageHandler::CreateInboxAttachmentL(class CObexBufObject * &, class TUid, long &, class RFile &, class TDesC16 const &)
- ?NewL@CGlobalProgressDialog@@SAPAV1@PAVMGlobalProgressCallback@@@Z @ 50 NONAME ; class CGlobalProgressDialog * CGlobalProgressDialog::NewL(class MGlobalProgressCallback *)
- ?RemoveTemporaryRFileL@TObexUtilsMessageHandler@@SAXABV?$TBuf@$0BAA@@@@Z @ 51 NONAME ; void TObexUtilsMessageHandler::RemoveTemporaryRFileL(class TBuf<256> const &)
- ?LaunchProgressDialogL@CObexUtilsDialog@@QAEXPAVMObexUtilsProgressObserver@@HHH@Z @ 52 NONAME ; void CObexUtilsDialog::LaunchProgressDialogL(class MObexUtilsProgressObserver *, int, int, int)
- ?DeleteOutboxEntryL@TObexUtilsMessageHandler@@SAXABJ@Z @ 53 NONAME ; void TObexUtilsMessageHandler::DeleteOutboxEntryL(long const &)
- ?ContextIcon@TObexUtilsUiLayer@@SAHABVTMsvEntry@@W4TContextMedia@@@Z @ 54 NONAME ; int TObexUtilsUiLayer::ContextIcon(class TMsvEntry const &, enum TContextMedia)
- ?SaveFileToFileSystemL@TObexUtilsMessageHandler@@SAXAAPAVCObexBufObject@@VTUid@@AAJAAV?$TBuf@$0BAA@@@AAVRFile@@ABVTDesC16@@@Z @ 55 NONAME ; void TObexUtilsMessageHandler::SaveFileToFileSystemL(class CObexBufObject * &, class TUid, long &, class TBuf<256> &, class RFile &, class TDesC16 const &)
- ?ShowInformationNoteL@TObexUtilsUiLayer@@SAXABH@Z @ 56 NONAME ; void TObexUtilsUiLayer::ShowInformationNoteL(int const &)
- ?NewLC@CObexUtilsDialog@@SAPAV1@PAVMObexUtilsDialogObserver@@@Z @ 57 NONAME ; class CObexUtilsDialog * CObexUtilsDialog::NewLC(class MObexUtilsDialogObserver *)
- ?LaunchEditorApplicationL@TObexUtilsUiLayer@@SAHPAVCMsvEntry@@AAVCMsvSession@@@Z @ 58 NONAME ; int TObexUtilsUiLayer::LaunchEditorApplicationL(class CMsvEntry *, class CMsvSession &)
- ?SaveObjToInboxL@TObexUtilsMessageHandler@@SAXAAPAVCObexBufObject@@AAVRFile@@J@Z @ 59 NONAME ; void TObexUtilsMessageHandler::SaveObjToInboxL(class CObexBufObject * &, class RFile &, long)
- ?NewLC@CGlobalDialog@@SAPAV1@PAVMGlobalNoteCallback@@@Z @ 60 NONAME ; class CGlobalDialog * CGlobalDialog::NewLC(class MGlobalNoteCallback *)
+ ?CreateReceiveBufferAndRFileL@TObexUtilsMessageHandler@@SAHAAVRFile@@ABVTDesC16@@AAV?$TBuf@$0BAA@@@AAPAVCBufFlat@@H@Z @ 4 NONAME ; int TObexUtilsMessageHandler::CreateReceiveBufferAndRFileL(class RFile &, class TDesC16 const &, class TBuf<256> &, class CBufFlat * &, int)
+ ?AddEntryToInboxL@TObexUtilsMessageHandler@@SAXAAJAAV?$TBuf@$0BAA@@@@Z @ 5 NONAME ; void TObexUtilsMessageHandler::AddEntryToInboxL(long &, class TBuf<256> &)
+ ?CreateDefaultMtmServiceL@TObexUtilsMessageHandler@@SAXVTUid@@@Z @ 6 NONAME ; void TObexUtilsMessageHandler::CreateDefaultMtmServiceL(class TUid)
+ ?GetCenRepKeyStringValueL@TObexUtilsMessageHandler@@SAHVTUid@@KAAVTDes16@@@Z @ 7 NONAME ; int TObexUtilsMessageHandler::GetCenRepKeyStringValueL(class TUid, unsigned long, class TDes16 &)
+ ?GetMmcFileSystemStatus@TObexUtilsMessageHandler@@SAHXZ @ 8 NONAME ; int TObexUtilsMessageHandler::GetMmcFileSystemStatus(void)
+ ?GetPubSubKeyIntValue@TObexUtilsMessageHandler@@SAHVTUid@@IAAH@Z @ 9 NONAME ; int TObexUtilsMessageHandler::GetPubSubKeyIntValue(class TUid, unsigned int, int &)
+ ?UpdateEntryAttachmentL@TObexUtilsMessageHandler@@SAXAAV?$TBuf@$0BAA@@@PAVCMsvEntry@@@Z @ 10 NONAME ; void TObexUtilsMessageHandler::UpdateEntryAttachmentL(class TBuf<256> &, class CMsvEntry *)
+ ?CreateInboxAttachmentL@TObexUtilsMessageHandler@@SAXAAPAVCObexBufObject@@VTUid@@AAJAAVRFile@@ABVTDesC16@@@Z @ 11 NONAME ; void TObexUtilsMessageHandler::CreateInboxAttachmentL(class CObexBufObject * &, class TUid, long &, class RFile &, class TDesC16 const &)
+ ?AddEntryToInboxL@TObexUtilsMessageHandler@@SAXAAJAAV?$TBuf@$0BAA@@@PAV?$RArray@J@@@Z @ 12 NONAME ; void TObexUtilsMessageHandler::AddEntryToInboxL(long &, class TBuf<256> &, class RArray<long> *)
+ ?RemoveTemporaryRFileL@TObexUtilsMessageHandler@@SAXABV?$TBuf@$0BAA@@@@Z @ 13 NONAME ; void TObexUtilsMessageHandler::RemoveTemporaryRFileL(class TBuf<256> const &)
+ ?GetFileSystemStatus@TObexUtilsMessageHandler@@SAHXZ @ 14 NONAME ; int TObexUtilsMessageHandler::GetFileSystemStatus(void)
+ ?DeleteOutboxEntryL@TObexUtilsMessageHandler@@SAXABJ@Z @ 15 NONAME ; void TObexUtilsMessageHandler::DeleteOutboxEntryL(long const &)
+ ?SaveFileToFileSystemL@TObexUtilsMessageHandler@@SAXAAPAVCObexBufObject@@VTUid@@AAJAAV?$TBuf@$0BAA@@@AAVRFile@@ABVTDesC16@@@Z @ 16 NONAME ; void TObexUtilsMessageHandler::SaveFileToFileSystemL(class CObexBufObject * &, class TUid, long &, class TBuf<256> &, class RFile &, class TDesC16 const &)
+ ?CreateOutboxEntryL@TObexUtilsMessageHandler@@SAJABVTUid@@ABH@Z @ 17 NONAME ; long TObexUtilsMessageHandler::CreateOutboxEntryL(class TUid const &, int const &)
+ ?CreateInboxAttachmentL@TObexUtilsMessageHandler@@SAXAAPAVCObexBufObject@@VTUid@@AAJAAVRFile@@@Z @ 18 NONAME ; void TObexUtilsMessageHandler::CreateInboxAttachmentL(class CObexBufObject * &, class TUid, long &, class RFile &)
+ ?GetMessageCentreDriveL@TObexUtilsMessageHandler@@SAHXZ @ 19 NONAME ; int TObexUtilsMessageHandler::GetMessageCentreDriveL(void)
+ ?SaveObjToInboxL@TObexUtilsMessageHandler@@SAXAAPAVCObexBufObject@@AAVRFile@@J@Z @ 20 NONAME ; void TObexUtilsMessageHandler::SaveObjToInboxL(class CObexBufObject * &, class RFile &, long)
+ ?NewL@CObexUtilsPropertyNotifier@@SAPAV1@PAVMObexUtilsPropertyNotifyHandler@@W4TMemoryPropertyCheckType@@@Z @ 21 NONAME ; class CObexUtilsPropertyNotifier * CObexUtilsPropertyNotifier::NewL(class MObexUtilsPropertyNotifyHandler *, enum TMemoryPropertyCheckType)
+ ?IsString@CObexUtilsOpaqueData@@QAEHXZ @ 22 NONAME ; int CObexUtilsOpaqueData::IsString(void)
+ ?GetNumber@CObexUtilsOpaqueData@@QAEHAAI@Z @ 23 NONAME ; int CObexUtilsOpaqueData::GetNumber(unsigned int &)
+ ??0CObexUtilsOpaqueData@@QAE@ABVTDesC8@@@Z @ 24 NONAME ; CObexUtilsOpaqueData::CObexUtilsOpaqueData(class TDesC8 const &)
+ ?GetString@CObexUtilsOpaqueData@@QAEHAAV?$TBuf8@$0BAA@@@@Z @ 25 NONAME ; int CObexUtilsOpaqueData::GetString(class TBuf8<256> &)
+ ?LaunchQueryDialogL@CObexUtilsDialog@@QAEXABVTDesC16@@@Z @ 26 NONAME ; void CObexUtilsDialog::LaunchQueryDialogL(class TDesC16 const &)
+ ?ShowErrorNoteL@CObexUtilsDialog@@QAEXABVTDesC16@@@Z @ 27 NONAME ; void CObexUtilsDialog::ShowErrorNoteL(class TDesC16 const &)
+ ?NewL@CObexUtilsDialog@@SAPAV1@PAVMObexUtilsDialogObserver@@@Z @ 28 NONAME ; class CObexUtilsDialog * CObexUtilsDialog::NewL(class MObexUtilsDialogObserver *)
+ ?UpdateProgressNoteL@CObexUtilsDialog@@QAEXHHABVTDesC16@@@Z @ 29 NONAME ; void CObexUtilsDialog::UpdateProgressNoteL(int, int, class TDesC16 const &)
+ ?CancelWaitDialog@CObexUtilsDialog@@QAEXXZ @ 30 NONAME ; void CObexUtilsDialog::CancelWaitDialog(void)
+ ?LaunchWaitDialogL@CObexUtilsDialog@@QAEXABVTDesC16@@@Z @ 31 NONAME ; void CObexUtilsDialog::LaunchWaitDialogL(class TDesC16 const &)
+ ?CancelProgressDialog@CObexUtilsDialog@@QAEXXZ @ 32 NONAME ; void CObexUtilsDialog::CancelProgressDialog(void)
+ ?LaunchProgressDialogL@CObexUtilsDialog@@QAEXPAVMObexUtilsProgressObserver@@HABVTDesC16@@H@Z @ 33 NONAME ; void CObexUtilsDialog::LaunchProgressDialogL(class MObexUtilsProgressObserver *, int, class TDesC16 const &, int)
+ ??1CObexUtilsDialog@@UAE@XZ @ 34 NONAME ; CObexUtilsDialog::~CObexUtilsDialog(void)
+ ?UpdateProgressDialogL@CObexUtilsDialog@@QAEXH@Z @ 35 NONAME ; void CObexUtilsDialog::UpdateProgressDialogL(int)
+ ?ShowInformationNoteL@CObexUtilsDialog@@QAEXABVTDesC16@@@Z @ 36 NONAME ; void CObexUtilsDialog::ShowInformationNoteL(class TDesC16 const &)
+ ?NewLC@CObexUtilsDialog@@SAPAV1@PAVMObexUtilsDialogObserver@@@Z @ 37 NONAME ; class CObexUtilsDialog * CObexUtilsDialog::NewLC(class MObexUtilsDialogObserver *)
--- a/btobexprofiles/obexserviceman/utils/data/Obexutils.hrh Fri Jun 11 13:48:51 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* Copyright (c) 2002, 2003 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:
-*
-*/
-
-
-enum
-{
- ESendingProgressNote = 1,
- EConnectingWaitNote,
- EPrintingWaitNote
-};
-
-// End of File
--- a/btobexprofiles/obexserviceman/utils/data/Obexutils.rss Fri Jun 11 13:48:51 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,532 +0,0 @@
-/*
-* Copyright (c) 2002 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:
-* This file contains all the resources for the obexutils.
-*
-*
-*/
-
-
-// RESOURCE IDENTIFIER
-NAME OBUT
-
-// INCLUDES
-#include <obexutils.loc>
-#include "Obexutils.hrh"
-#include <eikon.rh>
-#include <avkon.rsg>
-#include <avkon.rh>
-#include <avkon.loc>
-#include <avkon.mbg>
-
-RESOURCE RSS_SIGNATURE { }
-
-// RESOURCE DEFINITIONS
-
-// Popup texts (information notes and error notes)
-
-// ---------------------------------------------------------
-//
-// r_ir_connecting
-// this is the first shown when the user tries connect to other
-// remote device.
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_ir_connecting {buf= qtn_ir_connecting;}
-
-// ---------------------------------------------------------
-//
-// r_ir_cannot_establish
-// This informs that the IR connection cannot made to other remote device
-// for some reason.
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_ir_cannot_establish {buf= qtn_ir_cant_establish_conn;}
-
-// ---------------------------------------------------------
-//
-// r_ir_sending_data
-// This is shown after the IR connection is made succesfully and we are
-// sending message over IR.
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_ir_sending_data {buf= qtn_ir_sending_data;}
-
-// ---------------------------------------------------------
-//
-// r_ir_sending_failed
-// This is shown when the IR connection is made and some thing goes wrong
-// during connection.
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_ir_sending_failed {buf= qtn_ir_sending_failed;}
-
-// ---------------------------------------------------------
-//
-// r_ir_data_sent
-// This is shown to the user when the message is sended succesfully.
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_ir_data_sent {buf= qtn_ir_data_sent;}
-
-// ---------------------------------------------------------
-//
-// r_bt_connecting
-// Informs state of Bluetooth connection.
-// this is the first shown when the user tries connect to other
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_bt_connecting {buf= qtn_bt_connecting;}
-
-// ---------------------------------------------------------
-//
-// r_bt_sending_data
-// This is shown after the Bluetooth connection is made succesfully
-// and we are sending message over Bluetooth.
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_bt_sending_data {buf= qtn_bt_sending_data;}
-
-// ---------------------------------------------------------
-//
-// r_bt_dev_not_avail
-// This informs that the Bluetooth connection cannot made to other
-// remote device for some reason.
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_bt_dev_not_avail {buf= qtn_bt_dev_not_avail;}
-
-// ---------------------------------------------------------
-//
-// r_bt_failed_to_send
-// This is shown when the BT connection is made and some thing goes wrong
-// during connection.
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_bt_failed_to_send {buf= qtn_bt_failed_to_send;}
-
-// ---------------------------------------------------------
-//
-// r_bt_data_sent
-// This is shown to the user when the message is sended succesfully via BT.
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_bt_data_sent {buf= qtn_bt_data_sent;}
-
-// ---------------------------------------------------------
-//
-// r_bt_not_receive_one
-// This is shown when one image could not be sent
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_bt_not_receive_one {buf= qtn_bt_bip_format_not_supported;}
-
-// ---------------------------------------------------------
-//
-// r_out_of_memory
-// This is shown when not enough memory
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_out_of_memory {buf= qtn_memlo_not_enough_memory;}
-
-// ---------------------------------------------------------
-//
-// r_bt_not_receive_all
-// This is shown when no images could be sent
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_bt_sent_image_number {buf= qtn_bt_bip_some_files_sent;}
-RESOURCE TBUF r_bt_not_receive_any {buf= qtn_bt_bip_no_formats_supported;}
-
-// Confirmation queries
-
-// ---------------------------------------------------------
-//
-// Confirmation query
-// __RD_BT_MSG_RENOVATION not flagged
-// This is shown when some images could not be sent
-//
-// ---------------------------------------------------------
-//
-RESOURCE DIALOG r_bt_not_send_all_query
- {
- flags = EGeneralQueryFlags;
- buttons = R_AVKON_SOFTKEYS_YES_NO;
- items =
- {
- DLG_LINE
- {
- type = EAknCtQuery;
- id = EGeneralQuery;
- control = AVKON_CONFIRMATION_QUERY
- {
- layout = EConfirmationLayout;
- label = qtn_bt_bip_not_all_formats_supported;
- animation = R_QGN_NOTE_QUERY_ANIM;
- };
- }
- };
- }
-
-// ---------------------------------------------------------
-//
-// Confirmation query
-// This is shown when some images are not supported
-//
-// ---------------------------------------------------------
-//
-RESOURCE DIALOG r_bt_not_all_supported_query
- {
- flags = EGeneralQueryFlags;
- buttons = R_AVKON_SOFTKEYS_YES_NO;
- items =
- {
- DLG_LINE
- {
- type = EAknCtQuery;
- id = EGeneralQuery;
- control = AVKON_CONFIRMATION_QUERY
- {
- layout = EConfirmationLayout;
- label = qtn_bt_bip_not_all_formats_supported;
- animation = R_QGN_NOTE_QUERY_ANIM;
- };
- }
- };
- }
-
-// ---------------------------------------------------------
-//
-// Confirmation query for mixed list
-// __RD_BT_MSG_RENOVATION flagged
-// This is shown when some images could not be sent
-//
-// ---------------------------------------------------------
-//
-RESOURCE DIALOG r_bt_not_send_all_query_mixed
- {
- flags = EGeneralQueryFlags;
- buttons = R_AVKON_SOFTKEYS_YES_NO;
- items =
- {
- DLG_LINE
- {
- type = EAknCtQuery;
- id = EGeneralQuery;
- control = AVKON_CONFIRMATION_QUERY
- {
- layout = EConfirmationLayout;
- label = qtn_bt_bip_mixed_list;
- animation = R_QGN_NOTE_QUERY_ANIM;
- };
- }
- };
- }
-
-
-
-// Notes
-
-// -----------------------------------------------------------------------------
-//
-// r_bt_connecting_wait_note
-//
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE DIALOG r_bt_connecting_wait_note
- {
- flags = EAknProgressNoteFlags;
- buttons = R_AVKON_SOFTKEYS_CANCEL;
- items =
- {
- DLG_LINE
- {
- type = EAknCtNote;
- id = EConnectingWaitNote;
- control = AVKON_NOTE
- {
- layout = EProgressLayout;
- singular_label = qtn_bt_connecting;
- imageid = EMbmAvkonQgn_note_progress;
- imagemask = EMbmAvkonQgn_note_progress_mask;
- animation = R_QGN_GRAF_WAIT_BAR_ANIM;
- };
- }
- };
- }
-// -----------------------------------------------------------------------------
-//
-// r_ir_connecting_wait_note
-//
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE DIALOG r_ir_connecting_wait_note
- {
- flags = EAknProgressNoteFlags;
- buttons = R_AVKON_SOFTKEYS_CANCEL;
- items =
- {
- DLG_LINE
- {
- type = EAknCtNote;
- id = EConnectingWaitNote;
- control = AVKON_NOTE
- {
- layout = EProgressLayout;
- singular_label = qtn_ir_connecting;
- imageid = EMbmAvkonQgn_note_progress;
- imagemask = EMbmAvkonQgn_note_progress_mask;
- };
- }
- };
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// r_bt_printing_wait_note
-//
-//
-// -----------------------------------------------------------------------------
-//
-
-// NOTE! The strings in the following resources need to be added into
-// localization file, once the UI specification is approved.
-//
-
-RESOURCE DIALOG r_bt_printing_wait_note
- {
- flags = EAknWaitNoteFlags;
- buttons = R_AVKON_SOFTKEYS_CANCEL;
- items =
- {
- DLG_LINE
- {
- type = EAknCtNote;
- id = EPrintingWaitNote;
- control = AVKON_NOTE
- {
- layout = EWaitLayout;
- singular_label = "Sending data...";
- animation = R_QGN_GRAF_WAIT_BAR_ANIM;
- };
- }
- };
- }
-
-// Skeletons (resources with changing text)
-
-// -----------------------------------------------------------------------------
-//
-// r_sending_progress_note
-//
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE DIALOG r_sending_progress_note
- {
- flags = EAknProgressNoteFlags;
- buttons = R_AVKON_SOFTKEYS_CANCEL;
- items =
- {
- DLG_LINE
- {
- type = EAknCtNote;
- id = ESendingProgressNote;
- control = AVKON_NOTE
- {
- layout = EProgressLayout;
- singular_label = qtn_bt_sending_data;
- imageid = EMbmAvkonQgn_note_progress;
- imagemask = EMbmAvkonQgn_note_progress_mask;
- };
- }
- };
- }
-
-// ---------------------------------------------------------
-//
-// r_ir_failed_to_receive
-// This is shown to the user when failing receive file via infrared.
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_ir_failed_to_receive {buf=qtn_ir_failed_to_receive;}
-
-// ---------------------------------------------------------
-//
-// qtn_ir_receiving_data
-// This is shown to the user when receiving data via IR.
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_ir_receiving_data {buf=qtn_ir_receiving_data;}
-
-// ---------------------------------------------------------
-//
-// r_bt_receiving_data
-// This is shown after the Bluetooth connection is made succesfully
-// and we are receiving message over Bluetooth.
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_bt_receiving_data {buf= qtn_bt_receiving_data;}
-
-// ---------------------------------------------------------
-//
-// qtn_bt_failed_to_receive
-// This is shown when the BT connection is made and some thing goes wrong
-// when receiving data.
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_bt_failed_to_receive {buf= qtn_bt_failed_to_receive;}
-
-// Other resource texts
-
-// ---------------------------------------------------------
-//
-// r_ir_send_progress_sending
-// descripes status of item that is currently sending state in the outbox.
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_ir_send_progress_sending {buf= qtn_mce_outbox_status_sending;}
-
-// ---------------------------------------------------------
-//
-// r_ir_send_progress_sending
-// descripes status of item that is currently sending state in the outbox.
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_bt_send_progress_sending {buf= qtn_mce_outbox_status_sending;}
-
-// ---------------------------------------------------------
-//
-// r_ir_send_outbox_sending
-// Displayed in the "To/From" section for Ir objects in message centre.
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_ir_send_outbox_sending {buf= qtn_mce_ir_message;}
-
-// ---------------------------------------------------------
-//
-// r_bt_send_outbox_sending
-// Displayed in the "To/From" section for Ir objects in message centre.
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_bt_send_outbox_sending {buf= qtn_mce_bt_message;}
-
-// ---------------------------------------------------------
-//
-// r_message_not_opened
-// This is shown, when the user tries open a message that is not
-// supported type.
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_message_not_opened {buf= qtn_mce_info_message_not_opened;}
-
-// ---------------------------------------------------------
-//
-// r_name_for_invalid_file
-// Default invalid filename
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_name_for_invalid_file { buf=qtn_fldr_default_doc_name; }
-
-// ---------------------------------------------------------
-//
-// r_bt_to_from_in_inbox
-// Displayed in the "To/From" section for Bluetooth objects.
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_bt_to_from_in_inbox { buf=qtn_mce_bt_message; }
-
-// ---------------------------------------------------------
-//
-// r_ir_to_from_in_inbox
-// Displayed in the "To/From" section for Ir objects.
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_ir_to_from_in_inbox { buf=qtn_mce_ir_message; }
-
-RESOURCE TBUF r_bt_data_sent2 { buf= "Data sent"; }
-RESOURCE TBUF r_bt_failed_to_send2 { buf= "Sending failed"; }
-RESOURCE TBUF r_bt_printing_not_supported { buf = "Printer not supported"; }
-RESOURCE TBUF r_bt_sending_not_supported {buf = "Unsupported device";}
-
-RESOURCE TBUF r_bt_saved_single { buf = qtn_bt_saved_single; }
-RESOURCE TBUF r_bt_saved_multiple { buf = qtn_bt_saved_multiple; }
-RESOURCE TBUF r_bt_saved_search { buf = qtn_bt_saved_search; }
-RESOURCE TBUF r_bt_saved_no_memory_card { buf = qtn_bt_saved_no_memory_card; }
-RESOURCE TBUF r_bt_saved_link_updated { buf = qtn_bt_saved_link_updated; }
-RESOURCE TBUF r_bt_saved_search_update { buf = qtn_bt_saved_search_update; }
-
-RESOURCE TBUF r_bt_ir_receiving_data_size_kb { buf = qtn_bt_ir_receiving_data_size_kb ; }
-RESOURCE TBUF r_bt_ir_receiving_data_size_mb { buf = qtn_bt_ir_receiving_data_size_mb ; }
-
-RESOURCE TBUF r_bt_ir_receiving_data_no_size { buf = qtn_bt_ir_receiving_data_no_size ; }
-
-// ---------------------------------------------------------
-//
-// Confirmation query for mixed list
-// __RD_BT_MSG_RENOVATION flagged
-// This is shown when some images could not be sent
-//
-// ---------------------------------------------------------
-//
-RESOURCE DIALOG r_bt_not_send_all_query_single
- {
- flags = EGeneralQueryFlags;
- buttons = R_AVKON_SOFTKEYS_YES_NO;
- items =
- {
- DLG_LINE
- {
- type = EAknCtQuery;
- id = EGeneralQuery;
- control = AVKON_CONFIRMATION_QUERY
- {
- layout = EConfirmationLayout;
- label = qtn_bt_bip_format_not_supported_send;
- animation = R_QGN_NOTE_QUERY_ANIM;
- };
- }
- };
- }
-
-
-// End of File
--- a/btobexprofiles/obexserviceman/utils/eabi/obexutilsu.DEF Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexserviceman/utils/eabi/obexutilsu.DEF Wed Jun 23 18:23:52 2010 +0300
@@ -1,63 +1,42 @@
EXPORTS
- _ZN13CGlobalDialog15ProcessFinishedEv @ 1 NONAME
- _ZN13CGlobalDialog15ShowNoteDialogLEii @ 2 NONAME
- _ZN13CGlobalDialog16ShowErrorDialogLEi @ 3 NONAME
- _ZN13CGlobalDialog4NewLEP19MGlobalNoteCallback @ 4 NONAME
- _ZN13CGlobalDialog5NewLCEP19MGlobalNoteCallback @ 5 NONAME
- _ZN16CObexUtilsDialog17CancelWaitDialogLEv @ 6 NONAME
- _ZN16CObexUtilsDialog17LaunchWaitDialogLEi @ 7 NONAME
- _ZN16CObexUtilsDialog18LaunchQueryDialogLERKi @ 8 NONAME
- _ZN16CObexUtilsDialog21CancelProgressDialogLEv @ 9 NONAME
- _ZN16CObexUtilsDialog21LaunchProgressDialogLEP26MObexUtilsProgressObserveriii @ 10 NONAME
- _ZN16CObexUtilsDialog21ShowNumberOfSendFileLEii @ 11 NONAME
- _ZN16CObexUtilsDialog21UpdateProgressDialogLEii @ 12 NONAME
- _ZN16CObexUtilsDialog4NewLEP24MObexUtilsDialogObserver @ 13 NONAME
- _ZN16CObexUtilsDialog5NewLCEP24MObexUtilsDialogObserver @ 14 NONAME
- _ZN17TObexUtilsUiLayer11ContextIconERK9TMsvEntry13TContextMedia @ 15 NONAME
- _ZN17TObexUtilsUiLayer12CreateIconsLE4TUidP9CArrayPtrIS1_I10CFbsBitmapEE @ 16 NONAME
- _ZN17TObexUtilsUiLayer13ReadResourceLER6TDes16RKi @ 17 NONAME
- _ZN17TObexUtilsUiLayer13UpdateBitmapsE4TUidRiR4TBufILi256EES1_S1_ @ 18 NONAME
- _ZN17TObexUtilsUiLayer14ShowErrorNoteLERKi @ 19 NONAME
- _ZN17TObexUtilsUiLayer15IsBackupRunningEv @ 20 NONAME
- _ZN17TObexUtilsUiLayer18LaunchFileManagerLER7TDesC16ii @ 21 NONAME
- _ZN17TObexUtilsUiLayer20ShowInformationNoteLERKi @ 22 NONAME
- _ZN17TObexUtilsUiLayer21OperationNotSupportedEv @ 23 NONAME
- _ZN17TObexUtilsUiLayer24LaunchEditorApplicationLEP9CMsvEntryR11CMsvSession @ 24 NONAME
- _ZN17TObexUtilsUiLayer24LaunchEditorApplicationLERl @ 25 NONAME
- _ZN17TObexUtilsUiLayer28ShowGlobalConfirmationQueryLERKi @ 26 NONAME
- _ZN17TObexUtilsUiLayer33LaunchEditorApplicationOperationLER11CMsvSessionP9CMsvEntryR14TRequestStatus @ 27 NONAME
- _ZN17TObexUtilsUiLayer33ShowGlobalConfirmationQueryPlainLERKi @ 28 NONAME
- _ZN17TObexUtilsUiLayer36ShowGlobalFileOpenConfirmationQueryLERKiRK7TDesC16 @ 29 NONAME
- _ZN20CObexUtilsOpaqueData8IsStringEv @ 30 NONAME
- _ZN20CObexUtilsOpaqueData9GetNumberERj @ 31 NONAME
- _ZN20CObexUtilsOpaqueData9GetStringER5TBuf8ILi256EE @ 32 NONAME
- _ZN20CObexUtilsOpaqueDataC1ERK6TDesC8 @ 33 NONAME
- _ZN20CObexUtilsOpaqueDataC2ERK6TDesC8 @ 34 NONAME
- _ZN21CGlobalProgressDialog15ProcessFinishedEv @ 35 NONAME
- _ZN21CGlobalProgressDialog19ShowProgressDialogLEi @ 36 NONAME
- _ZN21CGlobalProgressDialog20UpdateProgressDialogEii @ 37 NONAME
- _ZN21CGlobalProgressDialog27ShowProgressDialogNameSizeLER7TDesC16x @ 38 NONAME
- _ZN21CGlobalProgressDialog4NewLEP23MGlobalProgressCallback @ 39 NONAME
- _ZN21CGlobalProgressDialog5NewLCEP23MGlobalProgressCallback @ 40 NONAME
- _ZN24TObexUtilsMessageHandler15SaveObjToInboxLEP14CObexBufObjectRK7TDesC164TUid @ 41 NONAME
- _ZN24TObexUtilsMessageHandler15SaveObjToInboxLERP14CObexBufObjectR5RFilel @ 42 NONAME
- _ZN24TObexUtilsMessageHandler16AddEntryToInboxLERlR4TBufILi256EE @ 43 NONAME
- _ZN24TObexUtilsMessageHandler16AddEntryToInboxLERlR4TBufILi256EEP6RArrayIlE @ 44 NONAME
- _ZN24TObexUtilsMessageHandler18CreateOutboxEntryLERK4TUidRKi @ 45 NONAME
- _ZN24TObexUtilsMessageHandler18DeleteOutboxEntryLERKl @ 46 NONAME
- _ZN24TObexUtilsMessageHandler19GetFileSystemStatusEv @ 47 NONAME
- _ZN24TObexUtilsMessageHandler19RemoveInboxEntriesLERP14CObexBufObjectl @ 48 NONAME
- _ZN24TObexUtilsMessageHandler20GetPubSubKeyIntValueE4TUidjRi @ 49 NONAME
- _ZN24TObexUtilsMessageHandler21GetCenRepKeyIntValueLE4TUidmRi @ 50 NONAME
- _ZN24TObexUtilsMessageHandler21RemoveTemporaryRFileLERK4TBufILi256EE @ 51 NONAME
- _ZN24TObexUtilsMessageHandler21SaveFileToFileSystemLERP14CObexBufObject4TUidRlR4TBufILi256EER5RFileRK7TDesC16 @ 52 NONAME
- _ZN24TObexUtilsMessageHandler22CreateInboxAttachmentLERP14CObexBufObject4TUidRlR5RFile @ 53 NONAME
- _ZN24TObexUtilsMessageHandler22CreateInboxAttachmentLERP14CObexBufObject4TUidRlR5RFileRK7TDesC16 @ 54 NONAME
- _ZN24TObexUtilsMessageHandler22GetMessageCentreDriveLEv @ 55 NONAME
- _ZN24TObexUtilsMessageHandler22GetMmcFileSystemStatusEv @ 56 NONAME
- _ZN24TObexUtilsMessageHandler22UpdateEntryAttachmentLER4TBufILi256EEP9CMsvEntry @ 57 NONAME
- _ZN24TObexUtilsMessageHandler24CreateDefaultMtmServiceLE4TUid @ 58 NONAME
- _ZN24TObexUtilsMessageHandler24GetCenRepKeyStringValueLE4TUidmR6TDes16 @ 59 NONAME
- _ZN24TObexUtilsMessageHandler28CreateReceiveBufferAndRFileLER5RFileRK7TDesC16R4TBufILi256EERP8CBufFlati @ 60 NONAME
- _ZN26CObexUtilsPropertyNotifier4NewLEP31MObexUtilsPropertyNotifyHandler24TMemoryPropertyCheckType @ 61 NONAME
+ _ZN24TObexUtilsMessageHandler15SaveObjToInboxLEP14CObexBufObjectRK7TDesC164TUid @ 1 NONAME
+ _ZN24TObexUtilsMessageHandler15SaveObjToInboxLERP14CObexBufObjectR5RFilel @ 2 NONAME
+ _ZN24TObexUtilsMessageHandler16AddEntryToInboxLERlR4TBufILi256EE @ 3 NONAME
+ _ZN24TObexUtilsMessageHandler16AddEntryToInboxLERlR4TBufILi256EEP6RArrayIlE @ 4 NONAME
+ _ZN24TObexUtilsMessageHandler18CreateOutboxEntryLERK4TUidRKi @ 5 NONAME
+ _ZN24TObexUtilsMessageHandler18DeleteOutboxEntryLERKl @ 6 NONAME
+ _ZN24TObexUtilsMessageHandler19GetFileSystemStatusEv @ 7 NONAME
+ _ZN24TObexUtilsMessageHandler19RemoveInboxEntriesLERP14CObexBufObjectl @ 8 NONAME
+ _ZN24TObexUtilsMessageHandler20GetPubSubKeyIntValueE4TUidjRi @ 9 NONAME
+ _ZN24TObexUtilsMessageHandler21GetCenRepKeyIntValueLE4TUidmRi @ 10 NONAME
+ _ZN24TObexUtilsMessageHandler21RemoveTemporaryRFileLERK4TBufILi256EE @ 11 NONAME
+ _ZN24TObexUtilsMessageHandler21SaveFileToFileSystemLERP14CObexBufObject4TUidRlR4TBufILi256EER5RFileRK7TDesC16 @ 12 NONAME
+ _ZN24TObexUtilsMessageHandler22CreateInboxAttachmentLERP14CObexBufObject4TUidRlR5RFile @ 13 NONAME
+ _ZN24TObexUtilsMessageHandler22CreateInboxAttachmentLERP14CObexBufObject4TUidRlR5RFileRK7TDesC16 @ 14 NONAME
+ _ZN24TObexUtilsMessageHandler22GetMessageCentreDriveLEv @ 15 NONAME
+ _ZN24TObexUtilsMessageHandler22GetMmcFileSystemStatusEv @ 16 NONAME
+ _ZN24TObexUtilsMessageHandler22UpdateEntryAttachmentLER4TBufILi256EEP9CMsvEntry @ 17 NONAME
+ _ZN24TObexUtilsMessageHandler24CreateDefaultMtmServiceLE4TUid @ 18 NONAME
+ _ZN24TObexUtilsMessageHandler24GetCenRepKeyStringValueLE4TUidmR6TDes16 @ 19 NONAME
+ _ZN24TObexUtilsMessageHandler28CreateReceiveBufferAndRFileLER5RFileRK7TDesC16R4TBufILi256EERP8CBufFlati @ 20 NONAME
+ _ZN26CObexUtilsPropertyNotifier4NewLEP31MObexUtilsPropertyNotifyHandler24TMemoryPropertyCheckType @ 21 NONAME
+ _ZN20CObexUtilsOpaqueData8IsStringEv @ 22 NONAME
+ _ZN20CObexUtilsOpaqueData9GetNumberERj @ 23 NONAME
+ _ZN20CObexUtilsOpaqueData9GetStringER5TBuf8ILi256EE @ 24 NONAME
+ _ZN20CObexUtilsOpaqueDataC1ERK6TDesC8 @ 25 NONAME
+ _ZN20CObexUtilsOpaqueDataC2ERK6TDesC8 @ 26 NONAME
+ _ZN16CObexUtilsDialog14ShowErrorNoteLERK7TDesC16 @ 27 NONAME
+ _ZN16CObexUtilsDialog16CancelWaitDialogEv @ 28 NONAME
+ _ZN16CObexUtilsDialog17LaunchWaitDialogLERK7TDesC16 @ 29 NONAME
+ _ZN16CObexUtilsDialog18LaunchQueryDialogLERK7TDesC16 @ 30 NONAME
+ _ZN16CObexUtilsDialog19UpdateProgressNoteLEiiRK7TDesC16 @ 31 NONAME
+ _ZN16CObexUtilsDialog20CancelProgressDialogEv @ 32 NONAME
+ _ZN16CObexUtilsDialog20ShowInformationNoteLERK7TDesC16 @ 33 NONAME
+ _ZN16CObexUtilsDialog21LaunchProgressDialogLEP26MObexUtilsProgressObserveriRK7TDesC16i @ 34 NONAME
+ _ZN16CObexUtilsDialog21UpdateProgressDialogLEi @ 35 NONAME
+ _ZN16CObexUtilsDialog4NewLEP24MObexUtilsDialogObserver @ 36 NONAME
+ _ZN16CObexUtilsDialog5NewLCEP24MObexUtilsDialogObserver @ 37 NONAME
+ _ZN16CObexUtilsDialogD0Ev @ 38 NONAME
+ _ZN16CObexUtilsDialogD1Ev @ 39 NONAME
+ _ZN16CObexUtilsDialogD2Ev @ 40 NONAME
--- a/btobexprofiles/obexserviceman/utils/group/bld.inf Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexserviceman/utils/group/bld.inf Wed Jun 23 18:23:52 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* 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"
@@ -24,16 +24,15 @@
PRJ_EXPORTS
-../inc/obexutilsuilayer.h |../../../inc/obexutilsuilayer.h
../inc/obexutilsdialog.h |../../../inc/obexutilsdialog.h
../inc/obexutilspropertynotifier.h |../../../inc/obexutilspropertynotifier.h
-../inc/obexutilsglobalprogressdialog.h |../../../inc/obexutilsglobalprogressdialog.h
-../loc/Obexutils.loc MW_LAYER_LOC_EXPORT_PATH(obexutils.loc)
+// todo need to remove below line of code and also the loc folder
+// once the localisation files are avaialble and in place in epoc32
+../loc/btdialogs_en_GB.qm /epoc32/data/z/resource/qt/translations/btdialogs_en_GB.qm
PRJ_MMPFILES
obexutils.mmp
-
// End of File
--- a/btobexprofiles/obexserviceman/utils/group/obexutils.mmp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexserviceman/utils/group/obexutils.mmp Wed Jun 23 18:23:52 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* 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"
@@ -26,34 +26,25 @@
UID 0x10004262 0x101F86AF
VENDORID VID_DEFAULT
-START RESOURCE ../data/Obexutils.rss
-TARGETPATH RESOURCE_FILES_DIR
-HEADER
-LANGUAGE_IDS
-END
-
OS_LAYER_SYSTEMINCLUDE
USERINCLUDE ../inc
NON_FOUNDATION_ADAPT_LAYER_SYSTEMINCLUDE
-
SOURCEPATH ../src
-SOURCE obexutilsuilayer.cpp
-SOURCE obexutilslaunchwaiter.cpp
SOURCE obexutilsdialogtimer.cpp
SOURCE obexutilsdialog.cpp
SOURCE obexutilsmessagehandler.cpp
SOURCE obexutilspropertynotifier.cpp
SOURCE obexutilsopaquedata.cpp
-SOURCE obexutilsglobalprogressdialog.cpp
-SOURCE obexutilsglobaldialog.cpp
SOURCE obexutilsentryhandler.cpp
SOURCE updatemusiccollection.cpp
#ifdef __BT_SAP
- SOURCE vMessageHandler.cpp
+SOURCE vMessageHandler.cpp
#endif
SYSTEMINCLUDE ../../../inc ../../../../inc
+SYSTEMINCLUDE /epoc32/include/mw/hb/hbwidgets
+SYSTEMINCLUDE /epoc32/include/mw/hb/hbcore
#ifdef NO101APPDEPFIXES
APP_LAYER_SYSTEMINCLUDE
#else //NO101APPDEPFIXES
@@ -66,37 +57,27 @@
LIBRARY apgrfx.lib
LIBRARY apmime.lib
-LIBRARY avkon.lib
LIBRARY bafl.lib
LIBRARY bifu.lib
LIBRARY biodb.lib
LIBRARY charconv.lib
-LIBRARY cone.lib
-LIBRARY commonengine.lib
-LIBRARY commonui.lib
LIBRARY efsrv.lib
-LIBRARY eikctl.lib
LIBRARY etext.lib
LIBRARY euser.lib
LIBRARY irobex.lib
LIBRARY msgs.lib
-LIBRARY aknskins.lib
LIBRARY centralrepository.lib
-LIBRARY apparc.lib
-LIBRARY servicehandler.lib
-LIBRARY eikdlg.lib
-LIBRARY featmgr.lib
-LIBRARY aknnotify.lib
-LIBRARY commondialogs.lib
LIBRARY platformenv.lib
LIBRARY mpxcollectionhelper.lib
LIBRARY mpxplaybackutility.lib
+LIBRARY hbcore.lib
+LIBRARY HbWidgets.lib
#ifdef __BT_SAP
- LIBRARY smcm.lib
- LIBRARY gsmu.lib
+LIBRARY smcm.lib
+LIBRARY gsmu.lib
// SMUT Unbranch
- LIBRARY ecom.lib
+LIBRARY ecom.lib
#endif
DEBUGLIBRARY flogger.lib
--- a/btobexprofiles/obexserviceman/utils/inc/obexutilsdialog.h Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexserviceman/utils/inc/obexutilsdialog.h Wed Jun 23 18:23:52 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* 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"
@@ -19,16 +19,21 @@
#ifndef COBEXUTILSDIALOG_H
#define COBEXUTILSDIALOG_H
-// INCLUDES
#include <e32base.h>
-#include <AknWaitDialog.h>
-// FORWARD DECLARATIONS
-class CAknWaitDialog;
+#include <hbdeviceprogressdialogsymbian.h>
+#include <hbdevicedialogsymbian.h>
+#include <hbdevicemessageboxsymbian.h>
+#include <hbsymbianvariant.h>
+
class CObexUtilsDialogTimer;
-// CLASS DECLARATION
-
+enum TButtonId
+ {
+ ECancelButton = -1,
+ EYesButton,
+ ENoButton
+ };
/**
* An observer interface for asking progress status of an operation using
* a progress dialog.
@@ -57,10 +62,10 @@
/**
* Informs the observer that a dialog has been dismissed.
* @since 2.6
+ * todo check whether the parameter is required
* @param aButtonId The button that was used to dismiss the dialog.
- * @return None.
*/
- virtual void DialogDismissed( TInt aButtonId ) = 0;
+ virtual void DialogDismissed(TInt aButtonId) = 0; //TInt aButtonId
};
@@ -69,7 +74,10 @@
/**
* A class for launching and managing dialogs.
*/
-NONSHARABLE_CLASS( CObexUtilsDialog ) : public CBase, public MProgressDialogCallback
+NONSHARABLE_CLASS( CObexUtilsDialog ) : public CBase,
+ public MHbDeviceProgressDialogObserver,
+ public MHbDeviceDialogObserver,
+ public MHbDeviceMessageBoxObserver
{
public:// Constructors and destructor
@@ -89,81 +97,75 @@
public: // New functions
+
/**
* Launches a progress dialog.
- * @since 2.6
* @param aObserverPtr A pointer to progress observer. A NULL pointer if
the progress dialog is updated manually.
- * @param aFinalValue The final value of the operation (progress=100%).
- * @param aResId A resource id for the string to be shown in the dialog.
+ * @param aFileCount Total number of files to be sent.
+ * @param aDeviceName Device Name to which files to be sent.
* @param aTimeoutValue A value telling how often should the dialog be
- updated. Relevant only if observer given.
- * @return None.
+ updated. Relevant only if observer is given.
*/
IMPORT_C void LaunchProgressDialogL(
- MObexUtilsProgressObserver* aObserverPtr, TInt aFinalValue,
- TInt aResId, TInt aTimeoutValue );
+ MObexUtilsProgressObserver* aObserverPtr, TInt aFileCount,
+ const TDesC& aDeviceName, TInt aTimeoutValue );
+
+ /**
+ * Updates the progress dialog with new file information when multiples files are sent.
+ * @param aFileSize Size of the file to be sent
+ * @param aFileIndex Index of the file to be sent
+ * @param aFileName Name of the file to be sent.
+ */
+ IMPORT_C void UpdateProgressNoteL( TInt aFileSize,TInt aFileIndex, const TDesC& aFileName );
/**
* Launches a wait dialog.
- * @since 2.6
- * @param aResId A resource id for the string to be shown in the dialog.
- * @return None.
+ * @param aDisplayText Text that needs to be displayed.
*/
- IMPORT_C void LaunchWaitDialogL( TInt aResId );
+ IMPORT_C void LaunchWaitDialogL( const TDesC& aDisplayText );
/**
* Cancels a wait dialog if one exists.
* @since 2.6
* @return None.
*/
- IMPORT_C void CancelWaitDialogL();
+ IMPORT_C void CancelWaitDialog();
/**
* Cancels a wait progress dialog if one exists.
* @since 2.6
* @return None.
*/
- IMPORT_C void CancelProgressDialogL();
+ IMPORT_C void CancelProgressDialog();
/**
- * Updates a progress dialog. Should not be used if the
- * MObexUtilsDialogObserver pointer was given.
- * @since 2.6
+ * Updates a progress dialog with the latest progress value
* @param aValue A progress value relative to final value.
- * @param aResId A resource id for the string to be shown in the dialog.
* @return None
*/
- IMPORT_C void UpdateProgressDialogL( TInt aValue, TInt aResId );
+ IMPORT_C void UpdateProgressDialogL( TInt aProgressValue );
/**
* Show a query note
- * @param aResourceID A resource id for the note.
- * @return User's input - Yes/No
+ * @param aConfirmText text for the note.
+ * @return None
*/
- IMPORT_C TInt LaunchQueryDialogL( const TInt& aResourceID );
-
- /**
- * Show how many files are sent in case not all images are supported
- * @param aSentNum Number of sent files
- * @param aTotlNum Number of total files
- * return None.
- */
-
- IMPORT_C void ShowNumberOfSendFileL( TInt aSentNum, TInt aTotalNum );
+ IMPORT_C void LaunchQueryDialogL( const TDesC& aConfirmText );
/**
- * Prepares dialog for execution
- * @param aResourceID Resource ID of the dialog
- * @param aDialog Dialog
+ * Shows an error note.
+ * @param aTextId A resource id for the note.
+ * @return None.
*/
- void PrepareDialogExecuteL( const TInt& aResourceID, CEikDialog* aDialog );
+ IMPORT_C void ShowErrorNoteL( const TDesC& aErrorText );
/**
- * Check if cover display is enabled
- * return True if enabled
+ * Shows an information note.
+ * @param aTextId A resource id for the note.
+ * @return None.
*/
- TBool IsCoverDisplayL();
+ IMPORT_C void ShowInformationNoteL( const TDesC& aInfoText );
public: // New functions (not exported)
@@ -174,16 +176,42 @@
void UpdateProgressDialog();
private: // Functions from base classes
-
+
/**
- * From MProgressDialogCallback A dialog has been dismissed.
- * @param aButtonId The button that was used to dismiss the dialog.
+ * From MHbDeviceProgressDialogObserver called when dialog is closed by pressing the "cancel" button
+ * @param aDialog Pointer to dialog that was cancelled.
+ * @return None.
+ */
+ void ProgressDialogCancelled(const CHbDeviceProgressDialogSymbian* aDialog);
+
+ /**
+ * From MHbDeviceProgressDialogObserver called when a device progress dialog is has closed
+ * @param aDialog Pointer to dialog instance that has closed.
* @return None.
*/
- void DialogDismissedL( TInt aButtonId );
-
- private:
- TInt ExecuteDialogL( const TInt& aResourceID, CEikDialog* aDialog );
+ void ProgressDialogClosed(const CHbDeviceProgressDialogSymbian* aDialog ) ;
+
+ /**
+ * From MHbDeviceDialogObserver called when data is received from a device dialog
+ * @param aDialog Pointer to dialog instance that has closed.
+ * @return None.
+ */
+ void DataReceived(CHbSymbianVariantMap& aData);
+
+ /**
+ * From MHbDeviceDialogObserver called when a device dialog is closed
+ * @param aData contains data from the dialog plugin.
+ * @return None.
+ */
+ void DeviceDialogClosed(TInt aCompletionCode);
+
+ /**
+ * from base class MHbDeviceMessageBoxObserver
+ * @param aMessageBox Pointer to dialog instance that has closed.
+ * @param aButton the id of the button the user pressed
+ */
+ void MessageBoxClosed(const CHbDeviceMessageBoxSymbian *aMessageBox,
+ CHbDeviceMessageBoxSymbian::TButtonId aButton);
private:
@@ -197,14 +225,40 @@
*/
void ConstructL();
+ /**
+ * Add a data item into the given CHbSymbianVariantMap.
+ * @param aMap the instance to which the data item will be added.
+ * @param aKey the key of the data item.
+ * @param aData the value of the data item
+ * @param aDataType the data-type of the data item
+ */
+ void AddDataL(CHbSymbianVariantMap* aMap, const TDesC& aKey,
+ const TAny* aData, CHbSymbianVariant::TType aDataType);
+
+ /**
+ * Creates and shows a message box.
+ * @param aType the type of the message box to create.
+ * @param aText the text to be shown in the message box
+ * @param aObserver the observer that receives the events from the
+ * message box
+ * @param aTimeout the timeout value of the message box
+ */
+ CHbDeviceMessageBoxSymbian* CreateAndShowMessageBoxL(
+ CHbDeviceMessageBoxSymbian::TType aType,
+ const TDesC& aText,
+ MHbDeviceMessageBoxObserver* aObserver,
+ TInt aTimeout );
+
private: // Data
- CAknProgressDialog* iProgressDialog;
- CAknWaitDialog* iWaitDialog;
+ CHbDeviceDialogSymbian *iProgressDialog;
+ CHbDeviceProgressDialogSymbian* iWaitDialog;
+ CHbDeviceMessageBoxSymbian* iMessageBox;
+
CObexUtilsDialogTimer* iObexDialogTimer;
- TInt iResourceFileId;
- TInt iProgressDialogResId;
- TBool iCoverDisplayEnabled;
+ TInt iFileIndex;
+ TInt iFileCount;
+ RBuf iDeviceName;
// Not Owned
//
--- a/btobexprofiles/obexserviceman/utils/inc/obexutilsglobalprogressdialog.h Fri Jun 11 13:48:51 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,226 +0,0 @@
-/*
-* Copyright (c) 2002 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: Definition of the global progress dialog class
-*
-*/
-
-
-
-
-#ifndef __OBEXUTILS_GLOBAL_PROGRESS_DIALOG__
-#define __OBEXUTILS_GLOBAL_PROGRESS_DIALOG__
-
-// INCLUDES
-#include <e32base.h>
-#include <stringresourcereader.h>
-#include <Obexutils.rsg>
-#include <avkon.rsg> // R_QGN_GRAF_WAIT_BAR_ANIM
-#include <AknGlobalNote.h>
-
-#include <coecntrl.h>
-
-// FORWARD DECLARATIONS
-class CAknGlobalProgressDialog;
-
-
-// CLASS DECLARATION
-
-// Call back for progress bar
-NONSHARABLE_CLASS( MGlobalProgressCallback )
- {
- public:
- virtual void HandleGlobalProgressDialogL( TInt aSoftkey ) = 0;
- };
-
-
-
-
-
-NONSHARABLE_CLASS( CGlobalProgressDialog ) : public CActive
-{
- public: // Constructors and destructor
-
-
- /**
- * Two-phased constructor.
- */
- IMPORT_C static CGlobalProgressDialog* NewLC(MGlobalProgressCallback* aObserver);
- IMPORT_C static CGlobalProgressDialog* NewL(MGlobalProgressCallback* aObserver);
-
-
- /**
- * Destructor.
- */
- virtual ~CGlobalProgressDialog();
-
- public: // New functions
-
- /**
- * Sets the icon for this dialog
- * @param aIconText Text of the icon
- * @param aIconFile File containing icon
- * @param aIconId Icon ID
- * @param aIconMaskId Icon mask ID
- * @return void
- */
- void SetIconL( const TDesC& aIconText, const TDesC& aIconFile,
- TInt aIconId = 0, TInt aIconMaskId = -1 );
- /**
- * Sets the image for the dialog
- * @param aImageFile Image filename
- * @param aImageId Image ID
- * @param aImageMaskId Image mask ID
- * @return void
- */
- void SetImageL( const TDesC& aImageFile, TInt aImageId = 0,
- TInt aImageMaskId = -1 );
-
- /**
- * Shows the progress dialog
- * @return void
- */
- IMPORT_C void ShowProgressDialogL(TInt aStringId);
- IMPORT_C void ShowProgressDialogNameSizeL( TDesC& aFileName,
- TInt64 aFileSize);
-
-
- /**
- * Updates the progress dialog
- * @param aValue progress bar value
- * @param aFinalValue progress bar final value
- * @return void
- */
- IMPORT_C void UpdateProgressDialog(TInt aValue, TInt aFinalValue);
-
- /**
- * Called to complete the global progress dialog
- * @return void
- */
- IMPORT_C void ProcessFinished();
-
-
- protected: // Functions from base classes
-
- /**
- * From CActive Active Object RunL()
- */
- virtual void RunL();
-
- /**
- * From CActive Active Object DoCancel()
- */
- virtual void DoCancel();
-
-
- private:
-
- /**
- * By default constructor is private.
- */
- void ConstructL(MGlobalProgressCallback* aObserver);
-
- /**
- * C++ default constructor.
- */
- CGlobalProgressDialog();
-
- private: //data
- CAknGlobalProgressDialog* iProgressDialog;
-
- MGlobalProgressCallback* iKeyCallback;
- CStringResourceReader* iStringResourceReader;
-
-};
-
-
-
-// Call back for note with animation and without animation
-NONSHARABLE_CLASS( MGlobalNoteCallback )
- {
- public:
- virtual void HandleGlobalNoteDialogL( TInt aSoftkey ) = 0;
- };
-
-
-
-NONSHARABLE_CLASS( CGlobalDialog ) : public CActive
-{
- public: // Constructors and destructor
-
-
- /**
- * Two-phased constructor.
- */
- IMPORT_C static CGlobalDialog* NewLC(MGlobalNoteCallback* aObserver);
- IMPORT_C static CGlobalDialog* NewL(MGlobalNoteCallback* aObserver);
-
-
- /*
- * public functions
- */
- IMPORT_C void ShowNoteDialogL( TInt aResourceId, TBool anAnimation);
- IMPORT_C void ShowErrorDialogL(TInt aResourceId);
- IMPORT_C void ProcessFinished();
-
- /**
- * Destructor.
- */
- virtual ~CGlobalDialog();
-
-
- protected: // Functions from base classes
-
- /**
- * From CActive Active Object RunL()
- */
- virtual void RunL();
-
- /**
- * From CActive Active Object DoCancel()
- */
- virtual void DoCancel();
-
-
- private:
-
- /**
- * By default constructor is private.
- */
- void ConstructL(MGlobalNoteCallback* aObserver);
-
- /**
- * C++ default constructor.
- */
- CGlobalDialog();
-
- private: //data
-
- MGlobalNoteCallback* iKeyCallback;
- CStringResourceReader* iStringResourceReader;
- CAknGlobalNote* iAknGlobalNote;
- TInt iWaitNoteID;
-
-};
-
-
-
-
-
-
-
-
-
-
-
-#endif // __OBEXUTILS_GLOBAL_PROGRESS_DIALOG__
--- a/btobexprofiles/obexserviceman/utils/inc/obexutilslaunchwaiter.h Fri Jun 11 13:48:51 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,139 +0,0 @@
-/*
-* Copyright (c) 2002 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:
-*
-*/
-
-
-#ifndef COBEXUTILSLAUNCHWAITER_H
-#define COBEXUTILSLAUNCHWAITER_H
-
-// INCLUDES
-#include <e32base.h>
-#include <apparc.h>
-
-#include <AknServerApp.h>
-#include <msvapi.h>
-#include <obexutilsdialog.h>
-
-class CDocumentHandler;
-
-// CLASS DECLARATION
-
-/**
-* A class waiting for editing of an embedded document to complete.
-*/
-
-NONSHARABLE_CLASS( CObexUtilsLaunchWaiter ) : public CMsvOperation, public MAknServerAppExitObserver
- {
- public: // Constructors and destructor
-
- /**
- * Two-phased constructor.
- */
- static CObexUtilsLaunchWaiter* NewLC(
- CMsvSession& aMsvSession,
- CMsvEntry* aMessage,
- TRequestStatus& aObserverRequestStatus );
-
- /**
- * Two-phased constructor.
- */
- static CObexUtilsLaunchWaiter* NewL(
- CMsvSession& aMsvSession,
- CMsvEntry* aMessage,
- TRequestStatus& aObserverRequestStatus );
-
- /**
- * Destructor.
- */
- ~CObexUtilsLaunchWaiter();
-
- public: // Functions from base classes
-
- /**
- * From MAknServerAppExitObserve Editing has completed.
- * @param TInt The exit mode including document state.
- * @return None.
- */
- void HandleServerAppExit(TInt aReason);
-
- /**
- * From CActive A request has been completed.
- * @return None.
- */
- void RunL();
-
- /**
- * From CActive A request has been cancelled.
- * @return None.
- */
- void DoCancel();
-
- /**
- * ProgressL
- * @return TDesC8&, progress
- */
- virtual const TDesC8& ProgressL();
-
- private:
-
- /**
- * C++ default constructor.
- */
- CObexUtilsLaunchWaiter(
- CMsvSession& aMsvSession,
- CMsvEntry* aMessage,
- TRequestStatus& aObserverRequestStatus );
-
- void ConstructL( CMsvEntry* aMessage );
-
- /**
- * Locate the file used to fix the broken link in Inbox
- * @param aFileName the file including full path user selects ( on return )
- * @param anOldFileName old file name including full path saved in attachment.
- * @return TBool
- */
- TBool LocateFileL(TFileName& aFileName, const TFileName& anOldFileName);
-
- /**
- * Launch Selection dialog for user to locate the file
- * @param aFileName the file including full path user selects ( on return )
- * @param anOldFileName old file name excluding full path saved in attachment.
- * @return TBool
- */
- TBool LaunchFileSelectionDialogL(TFileName& aFileName, const TFileName& anOldFileName);
-
- /**
- * Check the drive if available.
- * @param aDriveNumber enum TDriveNumber defined in f32file.h
- * @return Symbian error code
- */
- TInt CheckDriveL(TDriveNumber aDriveNumber);
-
- /**
- * Check if the file is saved in memory card.
- * @param aFileName full path and name of the file
- * @return TDriveNumber if saved in E or F drive;
- * otherwise KErrNotFound.
- */
- TInt CheckIfSaveInMMC(const TFileName& aFileName);
-
- private:
- CDocumentHandler* iDocumentHandler;
- };
-
-#endif // COBEXUTILSLAUNCHWAITER_H
-
-// End of File
--- a/btobexprofiles/obexserviceman/utils/inc/obexutilsuilayer.h Fri Jun 11 13:48:51 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,246 +0,0 @@
-/*
-* Copyright (c) 2002 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:
-*
-*/
-
-
-#ifndef COBEXUTILSUILAYER_H
-#define COBEXUTILSUILAYER_H
-
-// INCLUDES
-#include <e32base.h>
-#include <msvapi.h>
-#include <data_caging_path_literals.hrh>
-#include <AknsUtils.h>
-#include <eikdialg.h>
-#include <Obexutils.rsg>
-
-// CONSTANTS
-
-const TUid KUidMsgTypeBt = {0x10009ED5};
-const TInt KObexUtilsMaxChar = 80;
-const TInt KObexUtilsMaxCharToFromField = 256;
-
-// Literals for resource location (drive, directory, file)
-_LIT( KObexUtilsFileDrive, "z:");
-_LIT( KObexUtilsResourceFileName, "obexutils.rsc" );
-
-// Icon file
-_LIT( KCommonUiBitmapFile, "MUIU.MBM" );
-
-// Cover display
-const TInt KEnumStart = 1; // start of enumerations; start after ECmdNone
-const TInt KResourceNumberMask = 0x00000FFF;
-const TInt KFirstResourceOffset = (R_IR_CONNECTING & KResourceNumberMask);
-
-class CMsvOperation;
-
-// DATA TYPES
-
-enum TContextMedia
- {
- EBluetooth,
- EInfrared,
- ENfc
- };
-
-/**
-* Backup status.
-* The value is controlled by FileManager
-*/
-enum TFileManagerBkupStatusType
- {
- EFileManagerBkupStatusUnset = 0x00000000,
- EFileManagerBkupStatusBackup = 0x00000001,
- EFileManagerBkupStatusRestore = 0x00000002
- };
-
-// CLASS DECLARATION
-
-/**
-* Utility methods for UI related functionality.
-*
-*/
-NONSHARABLE_CLASS( TObexUtilsUiLayer )
- {
- public: // New functions
-
- typedef CArrayPtr<CFbsBitmap> CBitmapArray;
-
- /**
- * Launches an editor application for the given message.
- * @param aMessage The message to be launched in an application.
- * @param aSession A message server session.
- * @param aObserverRequestStatus Request status of the observer.
- * @return MSV operation
- */
- IMPORT_C static CMsvOperation* LaunchEditorApplicationOperationL(
- CMsvSession& aMsvSession,
- CMsvEntry* aMessage,
- TRequestStatus& aObserverRequestStatus );
-
- /**
- * Launches an editor application for the given message.
- * @param aMessage The message to be launched in an application.
- * @param aSession A message server session.
- * @return Symbian OS errorcode.
- */
- IMPORT_C static TInt LaunchEditorApplicationL( CMsvEntry* aMessage,
- CMsvSession& aSession );
-
- /**
- * LaunchFileManager by specific path and sort method
- * @Since S60 v5.0
- * @param aPath The directory where file manager should open
- * @param aSortMethod sort method to sort the files in aPath
- * @param isEmbeddedMode indicates start mode for file manager or standalone mode
- * @return None
- */
- IMPORT_C static void LaunchFileManagerL( TDesC& aPath, TInt aSortMethod, TBool isEmbeddedMode);
-
-
- /**
- * Open the file by Launching the suitable S60 application
- * @Since S60 v5.0
- * @return None
- */
- IMPORT_C static void LaunchEditorApplicationL (TMsvId& aMsvIdParent);
-
- /**
- * Shows an error note.
- * @param aResourceID A resource id for the note.
- * @return None.
- */
- IMPORT_C static void ShowErrorNoteL( const TInt& aResourceID );
-
- /**
- * Shows an information note.
- * @param aResourceID A resource id for the note.
- * @return None.
- */
- IMPORT_C static void ShowInformationNoteL( const TInt& aResourceID );
-
- /**
- * Reads contents of a resource into a buffer.
- * @parma aBuf The buffer.
- * @param aResourceID The id of the resource
- * @return None.
- */
- IMPORT_C static void ReadResourceL( TDes& aBuf,
- const TInt& aResourceID );
-
- /**
- * Shows an global information note.
- * @param aResourceID A resource id for the note.
- * @return None.
- */
- IMPORT_C static void ShowGlobalConfirmationQueryL( const TInt& aResourceID );
-
- /**
- * Show global conformation query without animations or tones.
- * @Since S60 5.0
- * @aResourceID aREsourceID for loc string
- * @return TBool
- */
- IMPORT_C static TBool ShowGlobalConfirmationQueryPlainL( const TInt& aResourceID);
-
- /**
- * Show global conformation query
- * @Since S60 5.0
- * @aResourceID aREsourceID for loc string
- * @aFilePath location for those files received.
- * @return TBool
- */
- IMPORT_C static TBool ShowGlobalFileOpenConfirmationQueryL( const TInt& aResourceID, const TDesC& aFilePath);
-
-
-
- /**
- * Returns a resource id for a not supported operation.
- * @return The resource id.
- */
- IMPORT_C static TInt OperationNotSupported();
-
- /**
- * Returns an icon for the given context.
- * @param aContext The context.
- * @param aMedia The used media.
- * @return The resource id of the icon.
- */
- IMPORT_C static TInt ContextIcon( const TMsvEntry& aContext,
- TContextMedia aMedia );
-
- /**
- * Updates bitmaps accoding to given media.
- * @param aMedia The used media.
- * @param aNumberOfZoomStates The media.
- * @param aBitmapFile The bitmap file.
- * @param aStartBitmap The resource id of the start bitmap.
- * @param aEndBitmap The resource id of the start bitmap.
- * @return None.
- */
- IMPORT_C static void UpdateBitmaps( TUid aMedia,
- TInt& aNumberOfZoomStates,
- TFileName& aBitmapFile,
- TInt& aStartBitmap,
- TInt& aEndBitmap );
-
- /**
- * Create icons according to given media
- * @param aMedia The used media.
- * @param aIconArray The IconArray used by the caller
- */
- IMPORT_C static void CreateIconsL( TUid aMedia, CArrayPtr<CBitmapArray>* aIconArrays);
-
- /**
- * Checks if backup process is running
- */
- IMPORT_C TBool static IsBackupRunning();
-
- /**
- * Prepares dialog for execution
- * @param aResourceID Resource ID of the dialog
- * @param aDialog Dialog
- */
- void static PrepareDialogExecuteL( const TInt& aResourceID, CEikDialog* aDialog );
-
- /**
- * Check if cover display is enabled
- * return True if enabled
- */
- TBool static IsCoverDisplayL();
-
- /**
- * Check if process with given id is active now
- * return True if is active
- */
- TBool static ProcessExists( const TSecureId& aSecureId );
-
- /**
- * A dummy class for opening CMsvSession.
- */
- class CDummySessionObserver : public CBase , public MMsvSessionObserver
- {
- public:
- void HandleSessionEventL( TMsvSessionEvent/*aEvent*/,
- TAny* /*aArg1*/,
- TAny* /*aArg2*/,
- TAny* /*aArg3*/ ) {};
- };
- };
-
-#endif // COBEXUTILSUILAYER_H
-
-// End of File
--- a/btobexprofiles/obexserviceman/utils/loc/Obexutils.loc Fri Jun 11 13:48:51 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,200 +0,0 @@
-/*
-* Copyright (c) 2002 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:
-* This file contains the localised strings for obexutils.
-*
-*
-*
-*/
-
-
-// LOCALISATION STRINGS
-
-// d: descripes status of item that is currently sending state in the outbox.
-// l: list_double_graphic_pane_t2
-//
-#define qtn_mce_outbox_status_sending "Sending"
-
-// d: Informs state of IR connection.
-// d: this is the first shown when the user tries connect to other
-// d: remote device.
-// l: popup_note_wait_window
-#define qtn_ir_connecting "Connecting via Infrared.."
-
-// d: This informs that the IR connection cannot made to other remote device
-// d: for some reason.
-// l: popup_note_window
-#define qtn_ir_cant_establish_conn "Cannot establish Infrared connection."
-
-// d: This is shown after the IR connection is made succesfully and we are
-// d: sending message over IR.
-// l: popup_note_wait_window
-#define qtn_ir_sending_data "Sending message via Infrared..."
-
-// d: This is shown when the IR connection is made and some thing goes wrong
-// d: during connection.
-// l: popup_note_window
-#define qtn_ir_sending_failed "Failed to send message via Infrared."
-
-// d: This error note is shown when the Infrared receiving fails for some reason
-// l: popup_note_window
-#define qtn_ir_failed_to_receive "Receiving failed"
-
-// d: This is shown to the user when the message is sended succesfully.
-// l: popup_note_window
-#define qtn_ir_data_sent "Message sent via Infrared!"
-
-// d: Displayed in the "To/From" section for Ir objects in message centre.
-// l: msg_header_pane_t2
-#define qtn_mce_ir_message "Infrared message"
-
-// d: This is shown, when the user tries open a message that is not
-// d: supported type.
-// l: popup_note_window
-#define qtn_mce_info_message_not_opened "Invalid message, can't be opened"
-
-// d: Informs state of Bluetooth connection.
-// d: this is the first shown when the user tries connect to other
-// d: remote device.
-// l: popup_note_wait_window
-#define qtn_bt_connecting "Connecting..."
-
-// d: This is shown after the Bluetooth connection is made succesfully
-// d: and we are sending message over Bluetooth.
-// l: popup_note_wait_window
-#define qtn_bt_sending_data "Sending message..."
-
-// d: This is shown after the Bluetooth connection is made succesfully
-// d: and we are receiving message over Bluetooth.
-// l: popup_note_wait_window
-#define qtn_bt_receiving_data "Receiving message via Bluetooth"
-
-// d: This wait note is shown when the device is receiving something over the Infrared
-// l: popup_note_wait_window
-#define qtn_ir_receiving_data "Receiving message via Infrared"
-
-// d: This informs that the Bluetooth connection cannot made to other
-// d: remote device for some reason.
-// l: popup_note_window
-#define qtn_bt_dev_not_avail "Cannot establish Bluetooth connection"
-
-// d: This is shown to the user when the message is sended succesfully via BT.
-// l: popup_note_window
-#define qtn_bt_data_sent "Message sent!"
-
-// d: This is shown when the BT connection is made and some thing goes wrong
-// d: during connection.
-// l: popup_note_window
-#define qtn_bt_failed_to_send "Failed to send message"
-
-// d: This error note is shown when the BT receiving fails for some reason
-// l: popup_note_window
-#define qtn_bt_failed_to_receive "Receiving failed"
-
-// d: Displayed in the filename section for Ir objects in message centre in
-// d: case of the name is corrupted.
-// l: list_double_pane_t2_cp2
-//
-#define qtn_fldr_default_doc_name "Document"
-
-// BIP usability improvement
-
-// d: This is shown when one could not be sent
-// l: popup_note_window
-#define qtn_bt_bip_format_not_supported "Receiving device does not support this image format."
-
-// d: This is shown when some images could not be sent
-// l: popup_note_window
-#define qtn_bt_bip_not_all_formats_supported "Receiving device does not support all needed image formats, Continue?"
-
-// d: This is shown when sending is finished in case some images are not supported.
-// l: popup_note_window
-#define qtn_bt_bip_some_files_sent "%0N of %1N images sent!"
-
-// d: This is shown when no images could be sent
-// l: popup_note_window
-#define qtn_bt_bip_no_formats_supported "Receiving device does not support the needed image formats."
-
-//d: This is shown when one could not be sent
-//l: popup_note_window
-//r: 3.1
-//w:
-#define qtn_bt_bip_mixed_list "Receiving device does not support all needed image formats. Send anyway?"
-
-
-// New loc strings for Req. saving file directly to file system.
-
-//d: This is shown after a single file received.
-//l: popup_note_window
-//r: 5.0
-#define qtn_bt_saved_single "File saved in %U. Open now?"
-
-//d: This is shown after a single file received.
-//l: popup_note_window
-//r: 5.0
-#define qtn_bt_saved_multiple "Files saved in %U. Open now?"
-
-//d: This is shown when user opens the broken link in inbox.
-//l: popup_note_window
-//r: 5.0
-#define qtn_bt_saved_search "File not found, would you like to locate it?"
-
-//d: This is shown when file is originally saved on MMC but mmc is not available.
-//l: popup_note_window
-//r: 5.0
-#define qtn_bt_saved_no_memory_card "File not found as memory card is not present. Locate file?"
-
-//d: This is shown when file link is updated.
-//l: popup_note_window
-//r: 5.0
-#define qtn_bt_saved_link_updated "File link updated"
-
-//d: This is shown when new selected filename does not match the orignal filename.
-//l: popup_note_window
-//r: 5.0
-#define qtn_bt_saved_search_update "File names don't match, update link anyway?"
-
-
-
-// -- New string added for CR 403-9991 show filename and size while receiving --
-
-
-//d: This is shown while receiving files via either bluetooth or infrared
-//d: and the receiving file size is smaller than a defined limit
-//l: popup_note_wait_window
-//r: 5.0
-#define qtn_bt_ir_receiving_data_size_kb "Receiving \n%U\n%N kB"
-
-//d: This is shown while receiving files via either bluetooth or infrared
-//d: and the receiving file size is larger than a defined limit
-//l: popup_note_wait_window
-//r: 5.0
-#define qtn_bt_ir_receiving_data_size_mb "Receiving \n%U\n%N MB"
-
-
-//d: This is shown while receiving files via either bluetooth or infrared
-//d: and the receiving file size is unknown
-//l: popup_note_wait_window
-//r: 5.0
-#define qtn_bt_ir_receiving_data_no_size "Receiving \n%U"
-
-
-// -- New string added for CR 404-4716 Allow sending unsupported image over BT BIP --
-
-// d: This is shown when one could not be sent
-// l: popup_note_window
-// r: 5.0
-#define qtn_bt_bip_format_not_supported_send "Receiving device does not support this image format. Send anyway?"
-
-// End of File
Binary file btobexprofiles/obexserviceman/utils/loc/btdialogs_en_GB.qm has changed
--- a/btobexprofiles/obexserviceman/utils/src/obexutilsdialog.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexserviceman/utils/src/obexutilsdialog.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* 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"
@@ -17,18 +17,31 @@
// INCLUDE FILES
-#include "obexutilsdialog.h"
-#include "obexutilsdialogtimer.h"
-#include "obexutilsuilayer.h"
-#include <secondarydisplay/obexutilssecondarydisplayapi.h>
-#include <aknnotewrappers.h>
-#include <eikprogi.h>
-#include <Obexutils.rsg>
-#include <e32def.h>
-#include <bautils.h>
-#include <StringLoader.h>
-#include <featmgr.h>
-#include "obexutilsdebug.h"
+#include "obexutilsdialog.h"
+#include "obexutilsdialogtimer.h"
+#include "obexutilsdebug.h"
+#include <hbdevicenotificationdialogsymbian.h>
+#include <btservices/bluetoothdevicedialogs.h>
+#include <hbtextresolversymbian.h>
+
+_LIT(KSendingDialog, "com.nokia.hb.btdevicedialog/1.0");
+_LIT(KCurrentFileIndex,"currentFileIdx" );
+_LIT(KTotalFileCount, "totalFilesCnt");
+_LIT(KDestinationName, "destinationName");
+_LIT(KFileName,"fileName");
+_LIT(KFileSizeTxt,"fileSzTxt");
+_LIT(KFileSize,"fileSz");
+_LIT(KProgressValue,"progressValue");
+
+_LIT(KSendingCancelledText, "txt_bt_dpophead_sending_cancelled");
+_LIT(KDeviceText,"txt_bt_dpopinfo_sent_to_1");
+
+const TInt KMaxDescriptionLength = 256;
+const TInt KMinStringSize = 10;
+const TInt KMinFileSize = 1024;
+
+_LIT(KLocFileName, "btdialogs_");
+_LIT(KPath, "z:/resource/qt/translations/");
// ============================ MEMBER FUNCTIONS ===============================
@@ -78,38 +91,29 @@
//
User::Leave(KErrArgument);
}
-
- TFileName fileName;
- fileName += KObexUtilsFileDrive;
- fileName += KDC_RESOURCE_FILES_DIR;
- fileName += KObexUtilsResourceFileName;
- BaflUtils::NearestLanguageFile( CCoeEnv::Static()->FsSession(), fileName );
- iResourceFileId = CCoeEnv::Static()->AddResourceFileL( fileName );
-
- iCoverDisplayEnabled = IsCoverDisplayL();
-
FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::ConstructL() completed"));
}
// -----------------------------------------------------------------------------
// Destructor
// -----------------------------------------------------------------------------
-CObexUtilsDialog::~CObexUtilsDialog()
+EXPORT_C CObexUtilsDialog::~CObexUtilsDialog()
{
FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::~CObexUtilsDialog()"));
-
- CCoeEnv::Static()->DeleteResourceFile( iResourceFileId );
+ iDeviceName.Close();
+ delete iWaitDialog;
+ delete iProgressDialog;
delete iObexDialogTimer;
-
+ delete iMessageBox;
FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::~CObexUtilsDialog() completed"));
}
// -----------------------------------------------------------------------------
// CObexUtilsDialog::LaunchProgressDialogL
// -----------------------------------------------------------------------------
-EXPORT_C void CObexUtilsDialog::LaunchProgressDialogL(
- MObexUtilsProgressObserver* aObserverPtr, TInt aFinalValue,
- TInt aResId, TInt aTimeoutValue )
+EXPORT_C void CObexUtilsDialog::LaunchProgressDialogL(
+ MObexUtilsProgressObserver* aObserverPtr, TInt aFileCount,
+ const TDesC& aDeviceName, TInt aTimeoutValue )
{
FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::LaunchProgressDialogL()"));
@@ -119,42 +123,90 @@
//
iProgressObserverPtr = aObserverPtr;
- if ( iObexDialogTimer )
+ if ( !iObexDialogTimer )
{
- iObexDialogTimer->Cancel();
- delete iObexDialogTimer;
- iObexDialogTimer = NULL;
+ iObexDialogTimer = CObexUtilsDialogTimer::NewL( this );
}
-
- iObexDialogTimer = CObexUtilsDialogTimer::NewL( this );
+ iObexDialogTimer->Cancel();
iObexDialogTimer->SetTimeout( aTimeoutValue );
}
- iProgressDialogResId = aResId;
-
- iProgressDialog = new( ELeave ) CAknProgressDialog(
- ( reinterpret_cast<CEikDialog**>( &iProgressDialog ) ), ETrue );
- PrepareDialogExecuteL( aResId, iProgressDialog );
- iProgressDialog->ExecuteLD( R_SENDING_PROGRESS_NOTE );
+ iFileCount = aFileCount;
+ iDeviceName.Close();
+ iDeviceName.CreateL(aDeviceName);
+ iProgressDialog = CHbDeviceDialogSymbian::NewL();
- HBufC* buf = StringLoader::LoadLC( aResId );
- iProgressDialog->SetTextL( buf->Des() );
- CleanupStack::PopAndDestroy( buf );
+ CHbSymbianVariantMap* map = CHbSymbianVariantMap::NewL();
+ CleanupStack::PushL(map);
+ TBuf<KMinStringSize> key;
+ TInt data = TBluetoothDialogParams::ESend;
+ key.Num(TBluetoothDialogParams::EDialogType);
+ AddDataL( map, key, &data, CHbSymbianVariant::EInt );
+ iProgressDialog->Show(KSendingDialog(),*map,this);
+ CleanupStack::PopAndDestroy(map);
- iProgressDialog->GetProgressInfoL()->SetFinalValue( aFinalValue );
- iProgressDialog->SetCallback( this );
if ( iProgressObserverPtr )
{
iObexDialogTimer->Tickle();
}
- FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::LaunchProgressDialogL() completed"));
+ FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::LaunchProgressDialogL() completed"));
+ }
+
+
+EXPORT_C void CObexUtilsDialog::UpdateProgressNoteL( TInt aFileSize,TInt aFileIndex, const TDesC& aFileName )
+ {
+ FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::UpdateProgressNoteL()"));
+ HBufC* key = HBufC::NewL(KMaxDescriptionLength);
+ CleanupStack::PushL(key);
+
+ CHbSymbianVariantMap* map = CHbSymbianVariantMap::NewL();
+ CleanupStack::PushL(map);
+
+ iFileIndex = aFileIndex+1;
+ key->Des().Copy(KCurrentFileIndex());
+ AddDataL( map, *key, &iFileIndex, CHbSymbianVariant::EInt );
+
+ key->Des().Copy(KTotalFileCount());
+ AddDataL( map, *key, &iFileCount, CHbSymbianVariant::EInt );
+
+ key->Des().Copy(KDestinationName());
+ AddDataL( map, *key, &iDeviceName, CHbSymbianVariant::EDes );
+
+ key->Des().Copy(KFileName());
+ AddDataL( map, *key, &aFileName, CHbSymbianVariant::EDes );
+
+ // todo: localiation is needed for code below:
+ HBufC* value = HBufC::NewL(KMaxDescriptionLength);
+ CleanupStack::PushL(value);
+ key->Des().Copy(KFileSizeTxt());
+ value->Des().Zero();
+ if(aFileSize < KMinFileSize)
+ {
+ value->Des().AppendNum(aFileSize);
+ value->Des().Append(_L(" Bytes"));
+ }
+ else
+ {
+ TInt filesize = aFileSize/KMinFileSize;
+ value->Des().AppendNum(filesize);
+ value->Des().Append(_L(" KB"));
+ }
+ AddDataL( map, *key, value, CHbSymbianVariant::EDes );
+ CleanupStack::PopAndDestroy( value );
+
+ key->Des().Copy(KFileSize());
+ AddDataL( map, *key, &aFileSize, CHbSymbianVariant::EInt );
+ TInt ret = iProgressDialog->Update(*map);
+ CleanupStack::PopAndDestroy(map);
+ CleanupStack::PopAndDestroy(key);
+ FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::UpdateProgressNoteL()Completed"));
}
// -----------------------------------------------------------------------------
// CObexUtilsDialog::LaunchWaitDialogL
// -----------------------------------------------------------------------------
-EXPORT_C void CObexUtilsDialog::LaunchWaitDialogL( TInt aResId )
+EXPORT_C void CObexUtilsDialog::LaunchWaitDialogL( const TDesC& aDisplayText )
{
FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::LaunchWaitDialogL()"));
@@ -164,13 +216,9 @@
//
User::Leave( KErrInUse );
}
-
- iWaitDialog = new( ELeave ) CAknWaitDialog(
- ( reinterpret_cast<CEikDialog**>( &iWaitDialog ) ), EFalse );
-
- iWaitDialog->SetCallback( this );
- PrepareDialogExecuteL( aResId, iWaitDialog );
- iWaitDialog->ExecuteLD( aResId );
+ iWaitDialog = CHbDeviceProgressDialogSymbian::NewL(CHbDeviceProgressDialogSymbian::EWaitDialog,this);
+ iWaitDialog->SetTextL(aDisplayText);
+ iWaitDialog->ShowL();
FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::LaunchWaitDialogL() completed"));
}
@@ -178,14 +226,14 @@
// -----------------------------------------------------------------------------
// CObexUtilsDialog::CancelWaitDialogL
// -----------------------------------------------------------------------------
-EXPORT_C void CObexUtilsDialog::CancelWaitDialogL()
+EXPORT_C void CObexUtilsDialog::CancelWaitDialog()
{
FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::CancelWaitDialogL()"));
if( iWaitDialog )
{
- iWaitDialog->SetCallback(NULL);
- iWaitDialog->ProcessFinishedL();
+ iWaitDialog->Close();
+ delete iWaitDialog;
iWaitDialog = NULL;
}
@@ -195,22 +243,17 @@
// -----------------------------------------------------------------------------
// CObexUtilsDialog::CancelProgressDialogL
// -----------------------------------------------------------------------------
-EXPORT_C void CObexUtilsDialog::CancelProgressDialogL()
+EXPORT_C void CObexUtilsDialog::CancelProgressDialog()
{
FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::CancelProgressDialogL()"));
if( iProgressDialog )
{
- iProgressDialog->SetCallback(NULL);
- iProgressDialog->ProcessFinishedL();
+ iProgressDialog->Cancel();
+ delete iProgressDialog;
iProgressDialog = NULL;
-
- if ( iObexDialogTimer )
- {
- iObexDialogTimer->Cancel();
- delete iObexDialogTimer;
- iObexDialogTimer = NULL;
- }
+ delete iObexDialogTimer;
+ iObexDialogTimer = NULL;
}
FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::CancelProgressDialogL() completed"));
@@ -219,51 +262,38 @@
// -----------------------------------------------------------------------------
// CObexUtilsDialog::UpdateProgressDialogL
// -----------------------------------------------------------------------------
-EXPORT_C void CObexUtilsDialog::UpdateProgressDialogL( TInt aValue, TInt aResId )
+EXPORT_C void CObexUtilsDialog::UpdateProgressDialogL( TInt aProgressValue )
{
FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::UpdateProgressDialogL()"));
if ( iProgressDialog )
{
- iProgressDialog->GetProgressInfoL()->SetAndDraw( aValue );
+ HBufC* key = HBufC::NewL(KMaxDescriptionLength);
+ CleanupStack::PushL(key);
+
+ CHbSymbianVariantMap* map = CHbSymbianVariantMap::NewL();
+ CleanupStack::PushL(map);
- HBufC* buf = StringLoader::LoadLC( aResId );
- iProgressDialog->SetTextL( buf->Des() );
- iProgressDialog->LayoutAndDraw();
- CleanupStack::PopAndDestroy( buf );
+ key->Des().Copy(KProgressValue());
+ AddDataL( map, *key, &aProgressValue, CHbSymbianVariant::EInt );
+
+ HBufC* value = HBufC::NewL(KMaxDescriptionLength);
+ CleanupStack::PushL(value);
+ key->Des().Copy(KCurrentFileIndex());
+ value->Des().AppendNum(iFileIndex);
+ AddDataL( map, *key, value, CHbSymbianVariant::EDes );
+ CleanupStack::PopAndDestroy(value);
+
+ TInt ret = iProgressDialog->Update(*map);
+
+ CleanupStack::PopAndDestroy(map);
+ CleanupStack::PopAndDestroy(key);
}
FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::UpdateProgressDialogL() completed"));
}
// -----------------------------------------------------------------------------
-// CObexUtilsDialog::DialogDismissedL
-// -----------------------------------------------------------------------------
-void CObexUtilsDialog::DialogDismissedL( TInt aButtonId )
- {
- FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::DialogDismissedL()"));
-
- // The dialog has already been deleted by UI framework.
- //
- if( aButtonId == EAknSoftkeyCancel )
- {
- if ( iDialogObserverPtr )
- {
- iDialogObserverPtr->DialogDismissed( aButtonId );
- }
-
- if ( iObexDialogTimer )
- {
- iObexDialogTimer->Cancel();
- delete iObexDialogTimer;
- iObexDialogTimer = NULL;
- }
- }
-
- FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::DialogDismissedL() completed"));
- }
-
-// -----------------------------------------------------------------------------
// CObexUtilsDialog::UpdateProgressDialog
// -----------------------------------------------------------------------------
void CObexUtilsDialog::UpdateProgressDialog()
@@ -271,7 +301,7 @@
FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::UpdateProgressDialog()"));
TRAPD( ignoredError, UpdateProgressDialogL(
- iProgressObserverPtr->GetProgressStatus(), iProgressDialogResId ) );
+ iProgressObserverPtr->GetProgressStatus()) );
if (ignoredError != KErrNone)
{
@@ -290,70 +320,150 @@
// CObexUtilsDialog::LaunchQueryDialogL
// -----------------------------------------------------------------------------
//
-EXPORT_C TInt CObexUtilsDialog::LaunchQueryDialogL( const TInt& aResourceID )
+EXPORT_C void CObexUtilsDialog::LaunchQueryDialogL( const TDesC& aConfirmText )
{
FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::LaunchQueryDialogL()"));
-
- CAknQueryDialog* dlg = CAknQueryDialog::NewL();
- CleanupStack::PushL( dlg );
- PrepareDialogExecuteL( aResourceID, dlg );
- CleanupStack::Pop( dlg );
- TInt keypress = dlg->ExecuteLD( aResourceID );
-
- return keypress;
+ if ( iMessageBox )
+ {
+ //todo: Already one dialog is displayed, currently not supported for
+ //multiple dialogs at the same time.
+ User::Leave( KErrGeneral );
+ }
+ iMessageBox = CreateAndShowMessageBoxL( CHbDeviceMessageBoxSymbian::EQuestion,
+ aConfirmText, this, 0 );
}
+
// -----------------------------------------------------------------------------
-// CObexUtilsDialog::ShowNumberOfSendFileL
+// CObexUtilsUiDialog::ShowErrorNoteL
// -----------------------------------------------------------------------------
-//
-
-EXPORT_C void CObexUtilsDialog::ShowNumberOfSendFileL( TInt aSentNum, TInt aTotalNum )
+EXPORT_C void CObexUtilsDialog::ShowErrorNoteL( const TDesC& aTextId )
{
- FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::ShowNumberOfSendFile()"));
-
- CAknInformationNote* myNote = new (ELeave) CAknInformationNote();
+ FLOG(_L("[OBEXUTILS]\t CObexUtilsUiDialog::ShowErrorNoteL"));
+ if ( iMessageBox )
+ {
+ //todo: Already one dialog is displayed, currently not supported for
+ //multiple dialogs at the same time.
+ User::Leave( KErrGeneral );
+ }
+ iMessageBox = CreateAndShowMessageBoxL( CHbDeviceMessageBoxSymbian::EWarning,
+ aTextId, this, 0 );
+ FLOG(_L("[OBEXUTILS]\t CObexUtilsUiDialog::ShowErrorNoteL completed"));
+ }
- CArrayFix<TInt>* nums = new( ELeave ) CArrayFixFlat<TInt>(3);
- CleanupStack::PushL(nums);
- nums->AppendL(aSentNum);
- nums->AppendL(aTotalNum);
- CleanupStack::Pop(nums);
+// -----------------------------------------------------------------------------
+// CObexUtilsUiDialog::ShowInformationNoteL
+// -----------------------------------------------------------------------------
+EXPORT_C void CObexUtilsDialog::ShowInformationNoteL( const TDesC& aTextId )
+ {
+ FLOG(_L("[OBEXUTILS]\t CObexUtilsUiDialog::ShowInformationNoteL"));
+ if ( iMessageBox )
+ {
+ //todo: Already one dialog is displayed, currently not supported for
+ //multiple dialogs at the same time.
+ User::Leave( KErrGeneral );
+ }
+ iMessageBox = CreateAndShowMessageBoxL( CHbDeviceMessageBoxSymbian::EInformation,
+ aTextId, this, 0 );
+ FLOG(_L("[OBEXUTILS]\t CObexUtilsUiDialog::ShowInformationNoteL completed"));
+ }
- HBufC* stringholder = StringLoader::LoadLC( R_BT_SENT_IMAGE_NUMBER, *nums);
- PrepareDialogExecuteL( R_BT_SENT_IMAGE_NUMBER, myNote );
- myNote->ExecuteLD( *stringholder );
- CleanupStack::PopAndDestroy( stringholder );
+void CObexUtilsDialog::ProgressDialogCancelled(const CHbDeviceProgressDialogSymbian* aDialog)
+ {
+ FLOG(_L("[BTSU]\t CObexUtilsDialog::ProgressDialogCancelled(), cancelled by user"));
+ (void) aDialog;
+ if ( iDialogObserverPtr )
+ {
+ iDialogObserverPtr->DialogDismissed(ECancelButton);
+ }
+ delete iWaitDialog;
+ iWaitDialog = NULL;
}
// -----------------------------------------------------------------------------
-// CObexUtilsDialog::PrepareDialogExecuteL
+// CObexUtilsDialog::MessageBoxClosed
// -----------------------------------------------------------------------------
-//
-void CObexUtilsDialog::PrepareDialogExecuteL( const TInt& aResourceID, CEikDialog* aDialog )
+void CObexUtilsDialog::MessageBoxClosed(const CHbDeviceMessageBoxSymbian *aMessageBox,
+ CHbDeviceMessageBoxSymbian::TButtonId aButton)
+ {
+ FLOG(_L("[OBEXUTILS]\t CObexUtilsUiDialog::MessageBoxClosed"));
+ (void)aMessageBox;
+ delete iMessageBox;
+ iMessageBox = NULL;
+ if(iDialogObserverPtr)
+ {
+ //ETrue if user selects Yes, otherwise EFalse.
+ iDialogObserverPtr->DialogDismissed(
+ (aButton == CHbDeviceMessageBoxSymbian::EAcceptButton) ?
+ EYesButton : ENoButton );
+ }
+ FLOG(_L("[OBEXUTILS]\t CObexUtilsUiDialog::MessageBoxClosed completed"));
+ }
+
+void CObexUtilsDialog::ProgressDialogClosed(const CHbDeviceProgressDialogSymbian* aDialog)
+ {
+ (void) aDialog;
+ }
+
+void CObexUtilsDialog::DataReceived(CHbSymbianVariantMap& aData)
{
- if (iCoverDisplayEnabled)
+ (void) aData;
+ }
+
+void CObexUtilsDialog::DeviceDialogClosed(TInt aCompletionCode)
+ {
+ FLOG(_L("[BTSU]\t CObexUtilsDialog::DeviceDialogClosed()"));
+ (void) aCompletionCode;
+
+ delete iObexDialogTimer;
+ iObexDialogTimer = NULL;
+ delete iProgressDialog;
+ iProgressDialog = NULL;
+
+ TRAP_IGNORE(
+ TBool ok = HbTextResolverSymbian::Init(KLocFileName, KPath);
+ if (!ok)
+ {
+ User::Leave( KErrNotFound );
+ }
+ HBufC* deviceName = HbTextResolverSymbian::LoadLC(KDeviceText,iDeviceName);
+ HBufC* sendText = HbTextResolverSymbian::LoadLC(KSendingCancelledText);
+ CHbDeviceNotificationDialogSymbian::NotificationL(
+ KNullDesC, deviceName->Des(), sendText->Des());
+ CleanupStack::PopAndDestroy( sendText );
+ CleanupStack::PopAndDestroy( deviceName );
+ );
+
+ if ( iDialogObserverPtr )
{
- TInt dialogIndex =
- ((aResourceID & KResourceNumberMask) - KFirstResourceOffset) + KEnumStart;
- aDialog->PublishDialogL( dialogIndex, KObexUtilsCategory );
+ iDialogObserverPtr->DialogDismissed(ECancelButton);
}
}
-// -----------------------------------------------------------------------------
-// CObexUtilsDialog::IsCoverDisplayL()
-// -----------------------------------------------------------------------------
-//
-TBool CObexUtilsDialog::IsCoverDisplayL()
+void CObexUtilsDialog::AddDataL(CHbSymbianVariantMap* aMap, const TDesC& aKey,
+ const TAny* aData, CHbSymbianVariant::TType aDataType)
{
- TBool coverDisplay = EFalse;
- FeatureManager::InitializeLibL();
- if ( FeatureManager::FeatureSupported( KFeatureIdCoverDisplay ) )
- {
- coverDisplay = ETrue;
- }
- FeatureManager::UnInitializeLib();
- return coverDisplay;
+ CHbSymbianVariant* value = CHbSymbianVariant::NewL(aData, aDataType);
+ CleanupStack::PushL( value );
+ User::LeaveIfError( aMap->Add( aKey, value ) ); // aMap takes the ownership of value
+ CleanupStack::Pop( value );
+ }
+
+CHbDeviceMessageBoxSymbian* CObexUtilsDialog::CreateAndShowMessageBoxL(
+ CHbDeviceMessageBoxSymbian::TType aType,
+ const TDesC& aText, MHbDeviceMessageBoxObserver* aObserver,
+ TInt aTimeout )
+ {
+ CHbDeviceMessageBoxSymbian* messageBox =
+ CHbDeviceMessageBoxSymbian::NewL( aType );
+ CleanupStack::PushL(messageBox);
+ //ToDo: Need to use localised strings.
+ messageBox->SetTextL(aText);
+ messageBox->SetObserver(aObserver);
+ messageBox->SetTimeout(aTimeout);
+ messageBox->ShowL();
+ CleanupStack::Pop(messageBox);
+ return messageBox;
}
// End of File
--- a/btobexprofiles/obexserviceman/utils/src/obexutilsglobaldialog.cpp Fri Jun 11 13:48:51 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-/*
-* Copyright (c) 2002 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: Handles the global progress dialog for voice recognition
-*
-*/
-
-
-
-
-
-// INCLUDE FILES
-
-#include "obexutilsglobalprogressdialog.h"
-#include "obexutilsuilayer.h"
-#include <AknIconUtils.h>
-#include <avkon.mbg>
-#include <avkon.rsg>
-#include <bautils.h>
-#include "obexutilsdebug.h"
-
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-// C++ default constructor can NOT contain any code, that
-// might leave.
-//
-CGlobalDialog::CGlobalDialog() : CActive(EPriorityNormal)
- {
- CActiveScheduler::Add( this );
- }
-
-// Symbian default constructor can leave.
-void CGlobalDialog::ConstructL(MGlobalNoteCallback* aObserver)
- {
- iKeyCallback = aObserver;
- iAknGlobalNote = CAknGlobalNote::NewL();
- }
-
-
-// Two-phased constructor.
-EXPORT_C CGlobalDialog* CGlobalDialog::NewL(MGlobalNoteCallback* aObserver)
- {
- CGlobalDialog* self = NewLC(aObserver);
- CleanupStack::Pop();
- return self;
- }
-
-// Two-phased constructor.- stack version
-EXPORT_C CGlobalDialog* CGlobalDialog::NewLC(MGlobalNoteCallback* aObserver)
- {
- CGlobalDialog* self=new (ELeave) CGlobalDialog();
- CleanupStack::PushL(self);
- self->ConstructL(aObserver);
- return self;
- }
-
-EXPORT_C void CGlobalDialog::ShowErrorDialogL(TInt aResourceId)
-{
- TFileName fileName;
- fileName += KObexUtilsFileDrive;
- fileName += KDC_RESOURCE_FILES_DIR;
- fileName += KObexUtilsResourceFileName;
-
- if(!iStringResourceReader)
- {
- iStringResourceReader= CStringResourceReader::NewL( fileName );
- }
- TPtrC buf;
- buf.Set(iStringResourceReader-> ReadResourceString(aResourceId));
- iAknGlobalNote->SetSoftkeys(R_AVKON_SOFTKEYS_CLOSE);
- iAknGlobalNote->ShowNoteL(iStatus,EAknGlobalInformationNote, buf);
- FTRACE( FPrint(_L( "[ObexUtils] CGlobalDialog: ShowNoteDialogL buf: \t %S" ), &buf) );
- SetActive();
-
-}
-EXPORT_C void CGlobalDialog::ShowNoteDialogL( TInt aResourceId, TBool anAnimation)
-{
- TFileName fileName;
- fileName += KObexUtilsFileDrive;
- fileName += KDC_RESOURCE_FILES_DIR;
- fileName += KObexUtilsResourceFileName;
-
- if(!iStringResourceReader)
- {
- iStringResourceReader= CStringResourceReader::NewL( fileName );
- }
- TPtrC buf;
- buf.Set(iStringResourceReader-> ReadResourceString(aResourceId));
- iAknGlobalNote->SetSoftkeys(R_AVKON_SOFTKEYS_CANCEL);
- if(anAnimation)
- {
- iAknGlobalNote->SetAnimation(R_QGN_GRAF_WAIT_BAR_ANIM);
- }
- iAknGlobalNote->ShowNoteL(iStatus,EAknGlobalWaitNote, buf);
- FTRACE( FPrint(_L( "[ObexUtils] CGlobalDialog: ShowNoteDialogL buf: \t %S" ), &buf) );
- SetActive();
-
-}
-
-// Destructor
-CGlobalDialog::~CGlobalDialog()
- {
- Cancel();
- if(iAknGlobalNote)
- {
- delete iAknGlobalNote;
- iAknGlobalNote = NULL;
- }
-
- delete iStringResourceReader;
-
- }
-
-
-
-// ---------------------------------------------------------
-// CGlobalDialog::DoCancel
-// Active object cancel
-// ---------------------------------------------------------
-//
-void CGlobalDialog::DoCancel()
- {
- ProcessFinished();
- if(iStringResourceReader)
- {
- delete iStringResourceReader;
- iStringResourceReader = NULL;
- }
- }
-
-// ---------------------------------------------------------
-// CGlobalDialog::RunL
-// Active object RunL
-// ---------------------------------------------------------
-//
-void CGlobalDialog::RunL()
- {
-
- FTRACE( FPrint(_L( "[ObexUtils] CGlobalDialog: RunL iStatus.Int():\t %d" ), iStatus.Int() ) );
- if ( iKeyCallback != NULL )
- {
- iKeyCallback->HandleGlobalNoteDialogL(iStatus.Int());
- }
- }
-
-// ---------------------------------------------------------
-// CGlobalDialog::ProcessFinished
-// Stops the progress dialog
-// ---------------------------------------------------------
-//
-EXPORT_C void CGlobalDialog::ProcessFinished()
- {
- FLOG( _L( "[ObexUtils] CGlobalDialog::ProcessFinished\t" ) );
- delete iAknGlobalNote;
- iAknGlobalNote = NULL;
- }
-
--- a/btobexprofiles/obexserviceman/utils/src/obexutilsglobalprogressdialog.cpp Fri Jun 11 13:48:51 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,272 +0,0 @@
-/*
-* Copyright (c) 2002 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: Handles the global progress dialog
-*
-*/
-
-
-
-
-
-// INCLUDE FILES
-#include <AknGlobalProgressDialog.h>
-#include "obexutilsglobalprogressdialog.h"
-#include "obexutilsuilayer.h"
-#include <StringLoader.h>
-#include <AknIconUtils.h>
-#include <avkon.mbg>
-#include <avkon.rsg>
-#include <bautils.h>
-//#include <BtuiViewResources.rsg> // Compiled resource ids
-#include <e32math.h>
-
-#include <StringLoader.h> // Localisation stringloader
-#include <eikenv.h>
-
-#include "obexutilsdebug.h"
-
-const TInt KMaxDisplayFileName = 17; // used while showing receiving filename.
- // If the filename is longer than 20 bytes, we make it show only 20 bytes.
-
-// ================= MEMBER FUNCTIONS =======================
-
-// C++ default constructor can NOT contain any code, that
-// might leave.
-//
-CGlobalProgressDialog::CGlobalProgressDialog() : CActive(EPriorityNormal)
- {
- CActiveScheduler::Add( this );
- }
-
-
-// Symbian default constructor can leave.
-void CGlobalProgressDialog::ConstructL(MGlobalProgressCallback* aObserver)
- {
- iProgressDialog = CAknGlobalProgressDialog::NewL();
- iKeyCallback = aObserver;
- }
-
-
-// Two-phased constructor.
-EXPORT_C CGlobalProgressDialog* CGlobalProgressDialog::NewL(MGlobalProgressCallback* aObserver)
- {
- CGlobalProgressDialog* self = NewLC(aObserver);
- CleanupStack::Pop();
- return self;
- }
-
-// Two-phased constructor.- stack version
-EXPORT_C CGlobalProgressDialog* CGlobalProgressDialog::NewLC(MGlobalProgressCallback* aObserver)
- {
- CGlobalProgressDialog* self=new (ELeave) CGlobalProgressDialog();
- CleanupStack::PushL(self);
- self->ConstructL(aObserver);
- return self;
- }
-
-
-// Destructor
-CGlobalProgressDialog::~CGlobalProgressDialog()
- {
- Cancel();
- delete iProgressDialog;
- delete iStringResourceReader;
- }
-
-
-
-// ---------------------------------------------------------
-// CGlobalProgressDialog::DoCancel
-// Active object cancel
-// ---------------------------------------------------------
-//
-void CGlobalProgressDialog::DoCancel()
- {
- if ( iProgressDialog )
- {
- iProgressDialog->CancelProgressDialog();
- }
-
- if(iStringResourceReader)
- {
- delete iStringResourceReader;
- iStringResourceReader = NULL;
- }
- }
-
-// ---------------------------------------------------------
-// CGlobalProgressDialog::RunL
-// Active object RunL
-// ---------------------------------------------------------
-//
-void CGlobalProgressDialog::RunL()
- {
- if ( iKeyCallback != NULL )
- {
- iKeyCallback->HandleGlobalProgressDialogL(iStatus.Int());
- }
- }
-
-// ---------------------------------------------------------
-// CGlobalProgressDialog::SetIconL
-// Set icon on the dialog
-// ---------------------------------------------------------
-//
-void CGlobalProgressDialog::SetIconL( const TDesC& aIconText, const TDesC& aIconFile,
- TInt aIconId, TInt aIconMaskId )
- {
- iProgressDialog->SetIconL(aIconText, aIconFile, aIconId, aIconMaskId );
- }
-
-// ---------------------------------------------------------
-// CGlobalProgressDialog::SetImageL
-// Set image on the dialog
-// ---------------------------------------------------------
-//
-void CGlobalProgressDialog::SetImageL( const TDesC& aImageFile, TInt aImageId,
- TInt aImageMaskId )
- {
- iProgressDialog->SetImageL(aImageFile, aImageId, aImageMaskId);
- }
-
-
-// ---------------------------------------------------------
-// CGlobalProgressDialog::ShowProgressDialogL
-// Shows progress dialog and sets active object active
-// ---------------------------------------------------------
-//
-EXPORT_C void CGlobalProgressDialog::ShowProgressDialogL(TInt aStringId)
- {
- TFileName fileName;
- fileName += KObexUtilsFileDrive;
- fileName += KDC_RESOURCE_FILES_DIR;
- fileName += KObexUtilsResourceFileName;
-
- if(!iStringResourceReader)
- {
- iStringResourceReader= CStringResourceReader::NewL( fileName );
- }
- TPtrC buf;
- //buf.Set(iStringResourceReader-> ReadResourceString(R_BT_RECEIVING_DATA));
- buf.Set(iStringResourceReader-> ReadResourceString(aStringId));
- iProgressDialog->ShowProgressDialogL( iStatus, buf, R_AVKON_SOFTKEYS_HIDE_CANCEL__HIDE );
- //iProgressDialog->ShowProgressDialogL( iStatus, buf, R_BTUI_SOFTKEYS_OPTIONS_EXIT__CHANGE ); //R_OBEXUTILS_SOFTKEYS_HIDE_CANCEL );
- SetActive();
- }
-
-// ---------------------------------------------------------
-// CGlobalProgressDialog::ShowProgressDialogNameSizeL
-// Shows progress dialog and sets active object active
-// ---------------------------------------------------------
-//
-EXPORT_C void CGlobalProgressDialog::ShowProgressDialogNameSizeL(
- TDesC& aFileName,
- TInt64 aFileSize)
- {
- TFileName fileName;
- fileName += KObexUtilsFileDrive;
- fileName += KDC_RESOURCE_FILES_DIR;
- fileName += KObexUtilsResourceFileName;
-
- if(!iStringResourceReader)
- {
- iStringResourceReader= CStringResourceReader::NewL( fileName );
- }
- TPtrC buf;
-
-
- TBuf<20> sizeInString;
- sizeInString.Zero();
-
- if ( aFileSize >> 20 ) // size in MB
- {
- TReal sizeInMB = 0;
- sizeInMB = ((TReal)aFileSize ) / (1024*1024);
- _LIT16(KFormatTwoDecimal,"%4.2f"); // keep 2 decimals
- sizeInString.Format(KFormatTwoDecimal,sizeInMB);
- buf.Set(iStringResourceReader-> ReadResourceString(R_BT_IR_RECEIVING_DATA_SIZE_MB));
- }
- else if( aFileSize >> 10 ) // size in KB
- {
- TInt64 sizeInKB = 0;
- sizeInKB = aFileSize >> 10;
- sizeInString.AppendNum(sizeInKB);
- buf.Set(iStringResourceReader-> ReadResourceString(R_BT_IR_RECEIVING_DATA_SIZE_KB));
- }
- else // size is unknown or less than 1K
- {
- buf.Set(iStringResourceReader-> ReadResourceString(R_BT_IR_RECEIVING_DATA_NO_SIZE));
- }
-
-
- TBuf<100> tbuf;
- tbuf.Zero();
- tbuf.Append(buf);
- _LIT(KPrefix,"[");
- _LIT(Ksuffix,"]");
- TInt prefixPos = tbuf.Find(KPrefix);
- if (prefixPos!= KErrNotFound)
- {
- TInt keyLength = 0;
- TInt suffixPos = tbuf.Find(Ksuffix);
- keyLength =(tbuf.Mid(prefixPos)).Length()-(tbuf.Mid(suffixPos)).Length()+1;
- tbuf.Delete(prefixPos, keyLength);
- }
- _LIT(KString,"%U");
-
-
-
- if ( aFileName.Length() > KMaxDisplayFileName )
- {
- // Filename is too long,
- // We make it shorter. Hiding the chars in the middle part of filename.
- //
- TFileName shortname;
- shortname = aFileName.Mid(0,KMaxDisplayFileName/2);
- shortname.Append(_L("..."));
- shortname.Append(aFileName.Mid(aFileName.Length() - KMaxDisplayFileName/2, KMaxDisplayFileName/2));
- tbuf.Replace(tbuf.Find(KString) , 2, shortname);
- }
- else
- {
- tbuf.Replace(tbuf.Find(KString) , 2, aFileName);
- }
- _LIT(KInt, "%N");
- if ( sizeInString.Length() > 0 )
- {
- tbuf.Replace(tbuf.Find(KInt) , 2, sizeInString);
- }
-
- iProgressDialog->ShowProgressDialogL( iStatus, tbuf, R_AVKON_SOFTKEYS_HIDE_CANCEL__HIDE );
- SetActive();
- }
-// ---------------------------------------------------------
-// CGlobalProgressDialog::UpdateProgressDialog
-// Updates the progress dialog
-// ---------------------------------------------------------
-//
-EXPORT_C void CGlobalProgressDialog::UpdateProgressDialog(TInt aValue, TInt aFinalValue)
- {
- iProgressDialog->UpdateProgressDialog(aValue, aFinalValue);
- }
-
-// ---------------------------------------------------------
-// CGlobalProgressDialog::ProcessFinished
-// Stops the progress dialog
-// ---------------------------------------------------------
-//
-EXPORT_C void CGlobalProgressDialog::ProcessFinished()
- {
- iProgressDialog->ProcessFinished();
- }
--- a/btobexprofiles/obexserviceman/utils/src/obexutilslaunchwaiter.cpp Fri Jun 11 13:48:51 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,414 +0,0 @@
-/*
-* Copyright (c) 2002 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 FILES
-#include <eikenv.h>
-#include <DocumentHandler.h>
-#include <mmsvattachmentmanager.h>
-#include <msvids.h>
-#include <bautils.h>
-#include <AknCommonDialogsDynMem.h> // for memory and file selection dialogs
-#include <CommonDialogs.rsg>
-#include <pathinfo.h> // for getting drive root path
-#include <Obexutils.rsg>
-#include <AknGlobalNote.h>
-#include <StringLoader.h>
-#include <AiwGenericParam.h>
-#include "obexutilslaunchwaiter.h"
-#include "obexutilsdebug.h"
-#include "obexutilsuilayer.h" // For launching file manager
-#include "obexutilsmessagehandler.h" // For updating an entry
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CObexUtilsLaunchWaiter::NewLC
-// -----------------------------------------------------------------------------
-CObexUtilsLaunchWaiter* CObexUtilsLaunchWaiter::NewLC(
- CMsvSession& aMsvSession,
- CMsvEntry* aMessage,
- TRequestStatus& aObserverRequestStatus )
- {
- CObexUtilsLaunchWaiter* self = new( ELeave )CObexUtilsLaunchWaiter(
- aMsvSession,
- aMessage,
- aObserverRequestStatus );
- CleanupStack::PushL( self );
- self->ConstructL( aMessage );
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CObexUtilsLaunchWaiter::NewL
-// -----------------------------------------------------------------------------
-CObexUtilsLaunchWaiter* CObexUtilsLaunchWaiter::NewL(
- CMsvSession& aMsvSession,
- CMsvEntry* aMessage,
- TRequestStatus& aObserverRequestStatus )
- {
- CObexUtilsLaunchWaiter* self = CObexUtilsLaunchWaiter::NewLC(
- aMsvSession,
- aMessage,
- aObserverRequestStatus );
- CleanupStack::Pop( self );
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CObexUtilsLaunchWaiter::ConstructL
-// -----------------------------------------------------------------------------
-void CObexUtilsLaunchWaiter::ConstructL( CMsvEntry* aMessage )
- {
- if (aMessage->Count() < 1)
- {
- User::Leave(KErrOverflow);
- }
-
- CMsvEntry* attachEntry = iMsvSession.GetEntryL(((*aMessage)[0]).Id());
- CleanupStack::PushL(attachEntry); // 1st push
- CMsvStore* store = attachEntry->ReadStoreL();
- CleanupStack::PushL(store); // 2nd push
-
- CMsvAttachment* attachInfo = store->AttachmentManagerL().GetAttachmentInfoL(0);
- CleanupStack::PushL(attachInfo); // 3rd push
-
- TDataType dataType = attachInfo->MimeType();
- TFileName filePath;
- filePath = attachInfo->FilePath();
-
- TInt error = KErrNone;
- TBool isCompleteSelf = EFalse;
- CEikonEnv* eikEnv = CEikonEnv::Static();
-
- if ( attachInfo->Type() == CMsvAttachment::EMsvFile )
- {
- RFile attachFile;
- TRAP( error, attachFile = store->AttachmentManagerL().GetAttachmentFileL(0));
- if ( error == KErrNone )
- {
- CleanupClosePushL(attachFile); // 4th push
- CAiwGenericParamList* paramList = CAiwGenericParamList::NewLC(); // 5th push
- TAiwGenericParam paramSave(EGenericParamAllowSave, ETrue);
- paramList->AppendL( paramSave );
-
- if ( eikEnv )
- {
- iDocumentHandler = CDocumentHandler::NewL( eikEnv->Process() );
- iDocumentHandler->SetExitObserver( this );
- TRAP( error, iDocumentHandler->OpenFileEmbeddedL(attachFile, dataType, *paramList));
- }// eikEnv
- CleanupStack::PopAndDestroy(2); // paramList, attachFile
- }
- }// EMsvFile
-
- if ( attachInfo->Type() == CMsvAttachment::EMsvLinkedFile )
- {
- CAiwGenericParamList* paramList = CAiwGenericParamList::NewLC(); // 4th push
- TAiwGenericParam paramSave(EGenericParamFileSaved, ETrue);
- paramList->AppendL( paramSave );
-
- if ( eikEnv )
- {
- iDocumentHandler = CDocumentHandler::NewL( eikEnv->Process() );
- iDocumentHandler->SetExitObserver( this );
- RFs rfs;
- User::LeaveIfError( rfs.Connect() );
- if ( BaflUtils::FileExists( rfs, filePath ) )
- {
- RFile64 shareableFile;
- TRAP( error, iDocumentHandler->OpenTempFileL(filePath,shareableFile));
- if ( error == KErrNone)
- {
- TRAP( error, iDocumentHandler->OpenFileEmbeddedL( shareableFile, dataType, *paramList));
- }
- shareableFile.Close();
-
- if ( error == KErrNotSupported )
- {
- delete iDocumentHandler;
- iDocumentHandler = NULL;
-
- const TInt sortMethod = 2; // 0 = 'By name', 1 = 'By type',
- // 2 = 'Most recent first' and 3 = 'Largest first'
- TRAP (error, TObexUtilsUiLayer::LaunchFileManagerL( filePath,
- sortMethod,
- ETrue )); // ETrue -> launch file manager in embedded mode.
- isCompleteSelf = ETrue;
- } // KErrNotSupported
- }
- else
- {
- error = KErrNone;
- TFileName fileName;
- if (LocateFileL(fileName, filePath))
- {
- // Update the entry
- TRAP(error, TObexUtilsMessageHandler::UpdateEntryAttachmentL(fileName,aMessage));
- if ( error == KErrNone )
- {
- // Show a confirmation note
- CAknGlobalNote* note = CAknGlobalNote::NewLC();
- HBufC* stringholder = StringLoader::LoadLC( R_BT_SAVED_LINK_UPDATED );
- note->ShowNoteL(EAknGlobalConfirmationNote, *stringholder);
- CleanupStack::PopAndDestroy(2); //note and stringholder
- }
- }
- isCompleteSelf = ETrue;
- }
-
- rfs.Close();
- } // eikEnv
-
- CleanupStack::PopAndDestroy(); // paramList
- } // EMsvLinkedFile
-
-
- // Set message to READ
- TMsvEntry entry = aMessage->Entry();
- entry.SetUnread( EFalse );
- aMessage->ChangeL( entry );
-
- User::LeaveIfError ( error );
- CleanupStack::PopAndDestroy(3); // attachInfo, store, attachEntry
-
- iObserverRequestStatus = KRequestPending; // CMsvOperation (observer)
- iStatus = KRequestPending; // CMsvOperation
- SetActive();
-
- if ( isCompleteSelf )
- {
- HandleServerAppExit( error );
- }
- }
-
-// -----------------------------------------------------------------------------
-// Destructor
-// -----------------------------------------------------------------------------
-CObexUtilsLaunchWaiter::~CObexUtilsLaunchWaiter()
- {
- Cancel();
- if (iDocumentHandler)
- {
- delete iDocumentHandler;
- iDocumentHandler = NULL;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CObexUtilsLaunchWaiter::RunL
-// -----------------------------------------------------------------------------
-void CObexUtilsLaunchWaiter::RunL()
- {
- FLOG(_L("[OBEXUTILS]\t CObexUtilsLaunchWaiter::RunL()"));
-
- TRequestStatus* status = &iObserverRequestStatus;
- User::RequestComplete( status, KErrNone );
-
- FLOG(_L("[OBEXUTILS]\t CObexUtilsLaunchWaiter::RunL() completed"));
- }
-
-// -----------------------------------------------------------------------------
-// CObexUtilsLaunchWaiter::DoCancel
-// -----------------------------------------------------------------------------
-void CObexUtilsLaunchWaiter::DoCancel()
- {
- FLOG(_L("[OBEXUTILS]\t CObexUtilsLaunchWaiter::DoCancel()"));
-
- if ( iStatus == KRequestPending )
- {
- TRequestStatus* pstat = &iStatus;
- User::RequestComplete( pstat, KErrCancel );
- }
-
- if( iObserverRequestStatus == KRequestPending )
- {
- TRequestStatus* observerStatus = &iObserverRequestStatus;
- User::RequestComplete( observerStatus, KErrCancel );
- }
-
-
- FLOG(_L("[OBEXUTILS]\t CObexUtilsLaunchWaiter::DoCancel() completed"));
- }
-
-// -----------------------------------------------------------------------------
-// CObexUtilsLaunchWaiter::CObexUtilsLaunchWaiter
-// -----------------------------------------------------------------------------
-CObexUtilsLaunchWaiter::CObexUtilsLaunchWaiter(
- CMsvSession& aMsvSession,
- CMsvEntry* /*aMessage*/,
- TRequestStatus& aObserverRequestStatus )
- :
- CMsvOperation(aMsvSession, EPriorityStandard, aObserverRequestStatus),
- iDocumentHandler(NULL)
- {
- FLOG(_L("[OBEXUTILS]\t CObexUtilsLaunchWaiter::CObexUtilsLaunchWaiter()"));
-
- CActiveScheduler::Add( this );
-
- FLOG(_L("[OBEXUTILS]\t CObexUtilsLaunchWaiter::CObexUtilsLaunchWaiter() completed"));
- }
-
-// -----------------------------------------------------------------------------
-// CObexUtilsLaunchWaiter::HandleServerAppExit
-// -----------------------------------------------------------------------------
-void CObexUtilsLaunchWaiter::HandleServerAppExit(TInt aReason)
- {
- FLOG(_L("[OBEXUTILS]\t CObexUtilsLaunchWaiter::HandleServerAppExit()"));
-
- if( iStatus == KRequestPending )
- {
- // Complete self
- //
- TRequestStatus* status = &iStatus;
- User::RequestComplete( status, aReason );
- }
-
- MAknServerAppExitObserver::HandleServerAppExit( aReason );
- FLOG(_L("[OBEXUTILS]\t CObexUtilsLaunchWaiter::HandleServerAppExit() completed"));
- }
-
-// -----------------------------------------------------------------------------
-// CObexUtilsLaunchWaiter::ProgressL
-// -----------------------------------------------------------------------------
-const TDesC8& CObexUtilsLaunchWaiter::ProgressL()
- {
- return KNullDesC8;
- }
-
-// -----------------------------------------------------------------------------
-// CObexUtilsLaunchWaiter::LocateFile
-// -----------------------------------------------------------------------------
-TBool CObexUtilsLaunchWaiter::LocateFileL(TFileName& aFileName, const TFileName& anOldFileName)
- {
- FLOG(_L("[OBEXUTILS]\t CObexUtilsLaunchWaiter::LocateFile()"));
-
- TBuf<200> buf;
- TRequestStatus status = KRequestPending;
-
- TParse fileParseOld;
- fileParseOld.Set(anOldFileName, NULL, NULL);
- TFileName oldName = fileParseOld.NameAndExt();
-
- // check old link if the file saved in mmc. If so, check if mmc available.
- // if unavailable, show "is File not found as memory card is not present"
- //
- TInt err = CheckIfSaveInMMC( anOldFileName );
- TBool showMMCOut = EFalse;
- if( err == EDriveF)
- {
- if( CheckDriveL(EDriveF) )
- showMMCOut = ETrue;
- }
- else if( err == EDriveE )
- {
- if( CheckDriveL(EDriveE) )
- showMMCOut = ETrue;
- }
-
- TBool answer = EFalse;
- if( showMMCOut )
- {
- answer = TObexUtilsUiLayer::ShowGlobalConfirmationQueryPlainL(R_BT_SAVED_NO_MEMORY_CARD);
- }
- else
- {
- answer = TObexUtilsUiLayer::ShowGlobalConfirmationQueryPlainL(R_BT_SAVED_SEARCH);
- }
-
- TBool updateLink = EFalse;
- if ( answer )
- {
- updateLink = LaunchFileSelectionDialogL(aFileName, oldName);
- }
-
- FLOG(_L("[OBEXUTILS]\t CObexUtilsLaunchWaiter::LocateFile() completed"));
- return updateLink;
- }
-
-// -----------------------------------------------------------------------------
-// CObexUtilsLaunchWaiter::LaunchFileSelectionDialogL
-// -----------------------------------------------------------------------------
-TBool CObexUtilsLaunchWaiter::LaunchFileSelectionDialogL(
- TFileName& aFileName,
- const TFileName& anOldName)
- {
- TBuf<200> buf;
- TParse fileParseNew;
- TFileName nameNew;
- TBool updateLink = EFalse;
-
- while ( !updateLink )
- {
- TBool isSelected = AknCommonDialogsDynMem::RunSelectDlgLD( AknCommonDialogsDynMem::EMemoryTypeMMCExternal|
- AknCommonDialogsDynMem::EMemoryTypeMMC|
- AknCommonDialogsDynMem::EMemoryTypeInternalMassStorage|
- AknCommonDialogsDynMem::EMemoryTypePhone,
- aFileName,
- R_CFD_DEFAULT_SELECT_MEMORY_SELECTION,
- R_CFD_DEFAULT_SELECT_FILE_SELECTION );
-
- if ( isSelected )
- {
- fileParseNew.Set(aFileName, NULL, NULL);
- nameNew = fileParseNew.NameAndExt();
-
- if ( nameNew.Compare(anOldName)) // names do not match
- {
- updateLink = TObexUtilsUiLayer::ShowGlobalConfirmationQueryPlainL(R_BT_SAVED_SEARCH_UPDATE);
- }
- else
- {
- updateLink = ETrue;
- }
- }
- else
- {
- break; // Exit from while loop.
- }
- }
-
- return updateLink;
- }
-
-// -----------------------------------------------------------------------------
-// CObexUtilsLaunchWaiter::CheckDriveL
-// -----------------------------------------------------------------------------
-TInt CObexUtilsLaunchWaiter::CheckDriveL(TDriveNumber aDriveNumber)
- {
- RFs rfs;
- User::LeaveIfError(rfs.Connect());
- CleanupClosePushL( rfs ) ;
- TVolumeInfo volumeInfo;
- TInt err = rfs.Volume(volumeInfo, aDriveNumber);
- CleanupStack::PopAndDestroy(); // rfs
-
- return err;
- }
-// -----------------------------------------------------------------------------
-// CObexUtilsLaunchWaiter::CheckIfSaveInMMC
-// -----------------------------------------------------------------------------
-TInt CObexUtilsLaunchWaiter::CheckIfSaveInMMC(const TFileName& aFileName)
- {
- if(aFileName.Find(_L("F:")) != KErrNotFound)
- return EDriveF;
- if(aFileName.Find(_L("E:")) != KErrNotFound)
- return EDriveE;
-
- return KErrNotFound;
- }
-// End of File
--- a/btobexprofiles/obexserviceman/utils/src/obexutilsmessagehandler.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexserviceman/utils/src/obexutilsmessagehandler.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -18,7 +18,6 @@
// INCLUDE FILES
#include "obexutilsmessagehandler.h"
-#include "obexutilsuilayer.h"
#include "obexutilsdebug.h"
#include "obexutilsentryhandler.h"
@@ -28,7 +27,6 @@
#include <txtrich.h>
#include <biouids.h>
-#include <Obexutils.rsg>
#include <bautils.h>
#include <e32property.h>
@@ -50,6 +48,12 @@
// CONSTANT
const TInt KFFSBelowCritical = -2;
const TInt KRenameOffSet = 4 ;
+
+// todo @ QT migration: take official definition from Messaging at app layer (btmsgtypeuid.h)
+const TUid KUidMsgTypeBt = {0x10009ED5};
+
+const TInt KObexUtilsMaxCharToFromField = 256;
+
// ============================= LOCAL FUNCTIONS ===============================
// -----------------------------------------------------------------------------
@@ -468,18 +472,18 @@
// 1st, 2nd, 3rd push
TBuf<KObexUtilsMaxCharToFromField> toFrom;
- TInt resourceId;
+ // todo @ QT migration: load from string id for localization
if (aMtmId == KUidMsgTypeBt)
{
- resourceId = R_BT_TO_FROM_IN_INBOX;
+ _LIT(KBluetoothMsg, "Bluetooth message");
+ toFrom.Copy(KBluetoothMsg);
}
else
{
- resourceId = R_IR_TO_FROM_IN_INBOX;
+ _LIT(KInfraredMsg, "Infrared message");
+ toFrom.Copy(KInfraredMsg);
}
-
- TObexUtilsUiLayer::ReadResourceL( toFrom, resourceId );
TMsvEntry parentTEntry;
parentTEntry.iMtm = aMtmId;
@@ -835,19 +839,20 @@
// 1st, 2nd, 3rd push
TBuf<KObexUtilsMaxCharToFromField> toFrom;
- TInt resourceId;
+ // todo @ QT migration: load from string id for localization
if (aMtmId == KUidMsgTypeBt)
{
- resourceId = R_BT_TO_FROM_IN_INBOX;
+ _LIT(KBluetoothMsg, "Bluetooth message");
+ toFrom.Copy(KBluetoothMsg);
}
else
{
- resourceId = R_IR_TO_FROM_IN_INBOX;
+ _LIT(KInfraredMsg, "Infrared message");
+ toFrom.Copy(KInfraredMsg);
}
- // NOTE: toFrom will be updated to Bluetooth sender's name
- //
- TObexUtilsUiLayer::ReadResourceL( toFrom, resourceId ); // read the toForm ( will be updated to sender's bt name in the future )
+
+ // NOTE: toFrom will be updated to Bluetooth sender's bt name in the future.
TMsvEntry parentTEntry;
parentTEntry.iMtm = aMtmId;
@@ -1147,11 +1152,9 @@
TParse fileParse;
fileParse.Set(aFileName, NULL, NULL);
- TBool nameempty = ETrue;
if (fileParse.NameOrExtPresent())
{
aFileName = fileParse.NameAndExt();
- nameempty=EFalse;
TText badChar;
TInt nameLength = aFileName.Length();
@@ -1174,18 +1177,6 @@
}
}
}
-
- // Did we delete all the characters? If so then we must have some filename
- if ( aFileName.Length() == 0 || nameempty )
- {
- TInt resourceId = R_NAME_FOR_INVALID_FILE;
- TRAPD( retVal, TObexUtilsUiLayer::ReadResourceL( aFileName, resourceId ) );
- if (retVal != KErrNone)
- {
- FLOG(_L("TObexUtilsMessageHandler::MakeValidFileName failed."));
- }
- }
-
FLOG(_L("[OBEXUTILS]\t MakeValidFileName() completed"));
}
@@ -1195,7 +1186,8 @@
//
EXPORT_C TMsvId TObexUtilsMessageHandler::CreateOutboxEntryL(
const TUid& aMtm, // Message type id
- const TInt& aResourceID ) // Resource id for the message entry text
+ //todo need to check whether to use the textmap id or send as a string here
+ const TInt& /*aResourceID*/ ) // Resource id for the message entry text
{
FLOG(_L("[OBEXUTILS]\t TObexUtilsMessageHandler::CreateOutboxEntryL()"));
@@ -1206,7 +1198,9 @@
// 1st, 2nd, 3rd push
TBuf<KObexUtilsMaxCharToFromField> toFrom;
- TObexUtilsUiLayer::ReadResourceL( toFrom, aResourceID );
+ // TObexUtilsUiLayer::ReadResourceL( toFrom, aResourceID );
+ //todo need to change the string constant to orbit localisation file
+ toFrom.Copy(_L("Bluetooth message"));
// Message entry fields
TMsvEntry newTEntry;
--- a/btobexprofiles/obexserviceman/utils/src/obexutilsuilayer.cpp Fri Jun 11 13:48:51 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,628 +0,0 @@
-/*
-* Copyright (c) 2002 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 FILES
-#include "obexutilsuilayer.h"
-#include "obexutilslaunchwaiter.h"
-#include "obexutilsdebug.h"
-
-#include <secondarydisplay/obexutilssecondarydisplayapi.h>
-#include <Obexutils.rsg>
-#include <aknnotewrappers.h>
-#include <AknGlobalConfirmationQuery.h>
-#include <eikon.rsg>
-#include <avkon.rsg>
-#ifdef NO101APPDEPFIXES
-#include <muiu.mbg>
-#else //NO101APPDEPFIXES
-enum TMuiuConsts
- {
- EMbmMuiuQgn_prop_mce_ir_unread = 16402,
- EMbmMuiuQgn_prop_mce_ir_unread_mask = 16403,
- EMbmMuiuQgn_prop_mce_ir_read = 16404,
- EMbmMuiuQgn_prop_mce_ir_read_mask = 16405,
- EMbmMuiuQgn_prop_mce_bt_unread = 16406,
- EMbmMuiuQgn_prop_mce_bt_unread_mask = 16407,
- EMbmMuiuQgn_prop_mce_bt_read = 16408,
- EMbmMuiuQgn_prop_mce_bt_read_mask = 16409
- };
-#endif //NO101APPDEPFIXES
-#include <bautils.h>
-#include <featmgr.h>
-
-#include <stringresourcereader.h>
-#include <StringLoader.h>
-
-// Launching file manager related header files
-#include <AiwServiceHandler.h> // The AIW service handler
-#include <apgcli.h>
-#include <apacmdln.h>
-#include <AknLaunchAppService.h> // Used to launch file manager in embedded mode.
-#include <e32property.h> //for checking backup status
-
-//Constants
-const TInt KFileManagerUID3 = 0x101F84EB; /// File Manager application UID3
-const TInt KUiNumberOfZoomStates = 2; // second for the mask
-const TInt KSortNumMax = 2;
-const TInt KNfcUnreadIconIndex = 10;
-const TInt KNfcReadIconIndex = 8;
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-
-// -----------------------------------------------------------------------------
-// TObexUtilsUiLayer::LaunchEditorApplicationOperationL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CMsvOperation* TObexUtilsUiLayer::LaunchEditorApplicationOperationL(
- CMsvSession& aMsvSession,
- CMsvEntry* aMessage,
- TRequestStatus& aObserverRequestStatus )
- {
- FLOG(_L("[OBEXUTILS]\t TObexUtilsUiLayer::LaunchEditorApplicationOperationL()"));
- CObexUtilsLaunchWaiter* waiterOperation = CObexUtilsLaunchWaiter::NewL(
- aMsvSession,
- aMessage,
- aObserverRequestStatus );
-
- return waiterOperation;
- }
-
-// -----------------------------------------------------------------------------
-// TObexUtilsUiLayer::LaunchEditorApplication
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt TObexUtilsUiLayer::LaunchEditorApplicationL( CMsvEntry* /*aMessage*/,
- CMsvSession& /*aSession*/ )
- {
- // Obsolete
- return KErrNotSupported;
- }
-
-
-// -----------------------------------------------------------------------------
-// CObexUtilsMessageHandler::LaunchFileManager
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void TObexUtilsUiLayer::LaunchFileManagerL(
- TDesC& aPath,
- TInt aSortMethod,
- TBool isEmbeddedMode )
- {
- if ( isEmbeddedMode )
- {
- FLOG(_L("[OBEXUTILS]\t TObexUtilsMessageHandler::LaunchFileManager() Embedded mode"));
-
- CAiwGenericParamList* inParams = CAiwGenericParamList::NewLC();
- inParams->AppendL(TAiwGenericParam( EGenericParamDir, TAiwVariant( aPath ) ) );
- inParams->AppendL(TAiwGenericParam( EGenericParamDir, TAiwVariant( aSortMethod ) ) );
-
- CAknLaunchAppService* launchService = CAknLaunchAppService::NewL(TUid::Uid( KFileManagerUID3 ), // Use File Manager app UID directly
- NULL,
- inParams );
- CleanupStack::PopAndDestroy( inParams );
- FLOG(_L("[OBEXUTILS]\t TObexUtilsMessageHandler::LaunchFileManager() Embedded mode completed "));
- }
- else
- {
- FLOG(_L("[OBEXUTILS]\t TObexUtilsMessageHandler::LaunchFileManager() "));
- TApaAppInfo appInfo;
- RApaLsSession apaLsSession;
- User::LeaveIfError( apaLsSession.Connect() );
- CleanupClosePushL( apaLsSession );
- User::LeaveIfError( apaLsSession.GetAppInfo( appInfo, TUid::Uid( KFileManagerUID3 ) ) ); // Use File Manager app UID directly
- CApaCommandLine* apaCmdLine = CApaCommandLine::NewLC();
- apaCmdLine->SetExecutableNameL( appInfo.iFullName );
- apaCmdLine->SetCommandL( EApaCommandOpen );
- apaCmdLine->SetDocumentNameL( aPath );
- TBuf8<KSortNumMax> sortMode;
- sortMode.AppendNum( aSortMethod );
- apaCmdLine->SetTailEndL( sortMode );
- TThreadId dummy;
- User::LeaveIfError( apaLsSession.StartApp( *apaCmdLine, dummy ) );
- CleanupStack::PopAndDestroy( apaCmdLine );
- CleanupStack::PopAndDestroy( &apaLsSession );
- FLOG(_L("[OBEXUTILS]\t TObexUtilsMessageHandler::LaunchFileManager() standalone mode completed "));
- }
- }
-
-// -----------------------------------------------------------------------------
-// CObexUtilsMessageHandler::LaunchEditorApplication
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void TObexUtilsUiLayer::LaunchEditorApplicationL (TMsvId& aMsvIdParent)
- {
- FLOG(_L("[OBEXUTILS]\t TObexUtilsMessageHandler::LaunchEditorApplication() "));
- CDummySessionObserver* sessionObs = new( ELeave )CDummySessionObserver;
- CleanupStack::PushL( sessionObs ); //1st push
- CMsvSession* msvSession = CMsvSession::OpenSyncL( *sessionObs );
- CleanupStack::PushL( msvSession ); //2nd push
-
- // 1st, 2nd push?
- CMsvEntry* parentEntry = msvSession->GetEntryL(aMsvIdParent);
- CleanupStack::PushL(parentEntry); // 3th push
-
- TRequestStatus status = KRequestPending;
- CObexUtilsLaunchWaiter* waiterOperation = CObexUtilsLaunchWaiter::NewL(
- *msvSession,
- parentEntry,
- status);
- CleanupStack::PopAndDestroy(3); // parentEntry, sessionObs, msvSession
-
- FLOG(_L("[OBEXUTILS]\t TObexUtilsMessageHandler::LaunchEditorApplication() completed "));
- }
-
-
-// -----------------------------------------------------------------------------
-// TObexUtilsUiLayer::ShowErrorNoteL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void TObexUtilsUiLayer::ShowErrorNoteL( const TInt& aResourceID )
- {
- FLOG(_L("[OBEXUTILS]\t TObexUtilsUiLayer::ShowErrorNoteL()"));
-
- TBuf<KObexUtilsMaxChar> textdata;
- ReadResourceL( textdata, aResourceID );
-
- CAknErrorNote* note = new( ELeave )CAknErrorNote( ETrue );
- CleanupStack::PushL( note );
- PrepareDialogExecuteL( aResourceID, note );
- CleanupStack::Pop( note );
- note->ExecuteLD( textdata );
-
- FLOG(_L("[OBEXUTILS]\t TObexUtilsUiLayer::ShowErrorNoteL() completed"));
-
- }
-
-// -----------------------------------------------------------------------------
-// TObexUtilsUiLayer::ShowInformationNoteL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void TObexUtilsUiLayer::ShowInformationNoteL( const TInt& aResourceID )
- {
- FLOG(_L("[OBEXUTILS]\t TObexUtilsUiLayer::ShowInformationNoteL()"));
-
- TBuf<KObexUtilsMaxChar> textdata;
- ReadResourceL( textdata, aResourceID );
-
- CAknInformationNote* note = new( ELeave )CAknInformationNote;
- CleanupStack::PushL( note );
- PrepareDialogExecuteL( aResourceID, note );
- CleanupStack::Pop( note );
- note->ExecuteLD( textdata );
-
- FLOG(_L("[OBEXUTILS]\t TObexUtilsUiLayer::ShowInformationNoteL() completed"));
- }
-
-// -----------------------------------------------------------------------------
-// TObexUtilsUiLayer::ShowGlobalInformationNoteL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void TObexUtilsUiLayer::ShowGlobalConfirmationQueryL( const TInt& aResourceID )
- {
- FLOG(_L("[OBEXUTILS]\t TObexUtilsUiLayer::ShowGlobalInformationNoteL()"));
-
- TBuf<KObexUtilsMaxChar> textdata;
- TRequestStatus status;
-
- ReadResourceL( textdata, aResourceID );
- CAknGlobalConfirmationQuery* note = CAknGlobalConfirmationQuery::NewLC();
-
- status=KRequestPending;
- note->ShowConfirmationQueryL(status,
- textdata,
- R_AVKON_SOFTKEYS_OK_EMPTY,
- R_QGN_NOTE_ERROR_ANIM,KNullDesC,
- 0,
- 0,
- CAknQueryDialog::EErrorTone
- );
- User::WaitForRequest(status);
-
- CleanupStack::PopAndDestroy(note );
-
- FLOG(_L("[OBEXUTILS]\t TObexUtilsUiLayer::ShowGlobalInformationNoteL() completed"));
- }
-
-// -----------------------------------------------------------------------------
-// TObexUtilsUiLayer::ShowGlobalConfirmationQueryPlainL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool TObexUtilsUiLayer::ShowGlobalConfirmationQueryPlainL( const TInt& aResourceID)
- {
- CAknGlobalConfirmationQuery* pQ = CAknGlobalConfirmationQuery::NewL();
- CleanupStack::PushL(pQ);
- HBufC* stringholder = NULL;
- stringholder = StringLoader::LoadLC( aResourceID);
- TRequestStatus status = KRequestPending;
- pQ->ShowConfirmationQueryL(status,*stringholder,R_AVKON_SOFTKEYS_YES_NO);
- User::WaitForRequest(status);
- CleanupStack::PopAndDestroy(2);//PQ and Stringholder
- return (status.Int() == EAknSoftkeyYes);
- }
-
-
-// -----------------------------------------------------------------------------
-// TObexUtilsUiLayer::ShowGlobalFileOpenConfirmationQueryL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool TObexUtilsUiLayer::ShowGlobalFileOpenConfirmationQueryL( const TInt& aResourceID, const TDesC& aFilePath)
- {
- // Read string from resource file
- TFileName fileName;
- fileName += KObexUtilsFileDrive;
- fileName += KDC_RESOURCE_FILES_DIR;
- fileName += KObexUtilsResourceFileName;
-
- CStringResourceReader* stringResourceReader = CStringResourceReader::NewL(fileName);
- CleanupStack::PushL(stringResourceReader);
- const TDesC& resString = stringResourceReader->ReadResourceString(aResourceID);
- RBuf manipString;
- manipString.Assign(resString.AllocL());
- CleanupStack::PopAndDestroy(stringResourceReader);
- manipString.CleanupClosePushL();
-
- // Remove bracket section
- _LIT(KPrefix, "[");
- _LIT(KSuffix, "]");
- TInt prefixPos = manipString.Find(KPrefix);
- if (prefixPos != KErrNotFound)
- {
- TInt keyLength = 0;
- TInt suffixPos = manipString.Find(KSuffix);
- keyLength = (manipString.Mid(prefixPos)).Length()-(manipString.Mid(suffixPos)).Length()+1;
- manipString.Delete(prefixPos, keyLength);
- }
-
- // Replace "%U" string parameter with file path
- _LIT(KString, "%U");
- TInt replacePos = manipString.Find(KString);
- if( replacePos == KErrNotFound )
- {
- User::Leave(KErrNotFound);
- }
- const TInt minRequiredSize = manipString.Length() - KString().Length() + aFilePath.Length();
- // ensure that the buffer is big enough (otherwise re-alloc)
- if(manipString.MaxLength() < minRequiredSize)
- {
- manipString.ReAllocL(minRequiredSize);
- }
- manipString.Replace(replacePos, KString().Length(), aFilePath);
-
- // Initiate query dialog
- TRequestStatus status = KRequestPending;
-
- CAknGlobalConfirmationQuery* pQ = CAknGlobalConfirmationQuery::NewL();
- CleanupStack::PushL(pQ);
- pQ->ShowConfirmationQueryL(status, manipString, R_AVKON_SOFTKEYS_YES_NO);
- User::WaitForRequest(status);
- CleanupStack::PopAndDestroy(2, &manipString); // pQ, manipString
- return (status.Int() == EAknSoftkeyYes);
- }
-
-
-// -----------------------------------------------------------------------------
-// TObexUtilsUiLayer::ReadResourceL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void TObexUtilsUiLayer::ReadResourceL( TDes& aBuf, const TInt& aResourceID )
- {
- FLOG(_L("[OBEXUTILS]\t TObexUtilsUiLayer::ReadResourceL()"));
-
- RFs fileSession;
- CleanupClosePushL<RFs>( fileSession );
- User::LeaveIfError( fileSession.Connect() );
-
- TFileName fileName;
- fileName += KObexUtilsFileDrive;
- fileName += KDC_RESOURCE_FILES_DIR;
- fileName += KObexUtilsResourceFileName;
-
- BaflUtils::NearestLanguageFile( fileSession, fileName );
-
- RResourceFile resourcefile;
- CleanupClosePushL<RResourceFile>( resourcefile );
- resourcefile.OpenL( fileSession, fileName );
- resourcefile.ConfirmSignatureL( 0 );
- HBufC8* readBuffer = resourcefile.AllocReadLC( aResourceID );
-
- const TPtrC16 ptrReadBuffer( (TText16*) readBuffer->Ptr(),( readBuffer->Length() + 1 ) >> 1 );
- HBufC16* textBuffer=HBufC16::NewLC( ptrReadBuffer.Length() );
- *textBuffer = ptrReadBuffer;
- aBuf.Copy( *textBuffer );
-
- CleanupStack::PopAndDestroy( 4 ); // textBuffer, fileSession, resourcefile, readBuffer
-
- FLOG(_L("[OBEXUTILS]\t TObexUtilsUiLayer::ReadResourceL() completed"));
- }
-
-// -----------------------------------------------------------------------------
-// TObexUtilsUiLayer::OperationNotSupported
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt TObexUtilsUiLayer::OperationNotSupported()
- {
- return R_EIK_TBUF_NOT_AVAILABLE;
- }
-
-// -----------------------------------------------------------------------------
-// TObexUtilsUiLayer::ContextIcon
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt TObexUtilsUiLayer::ContextIcon( const TMsvEntry& aContext, TContextMedia aMedia )
- {
- FLOG(_L("[OBEXUTILS]\t TObexUtilsUiLayer::ContextIcon()"));
-
- TInt icon = 0;
- if( aMedia == EBluetooth )
- {
- if( aContext.Unread() )
- {
- icon = EMbmMuiuQgn_prop_mce_bt_unread - EMbmMuiuQgn_prop_mce_ir_unread;
- }
- else
- {
- icon = EMbmMuiuQgn_prop_mce_bt_read - EMbmMuiuQgn_prop_mce_ir_unread;
- }
- }
- else if( aMedia == EInfrared )
- {
- if( aContext.Unread() )
- {
- icon = 0;
- }
- else
- {
- icon = EMbmMuiuQgn_prop_mce_ir_read - EMbmMuiuQgn_prop_mce_ir_unread;
- }
- }
- else if( aMedia == ENfc )
- {
- if( aContext.Unread() )
- {
- icon = KNfcUnreadIconIndex;
- }
- else
- {
- icon = KNfcReadIconIndex;
- }
- }
-
- FLOG(_L("[OBEXUTILS]\t TObexUtilsUiLayer::ContextIcon() completed"));
-
- return icon;
- }
-
-// -----------------------------------------------------------------------------
-// TObexUtilsUiLayer::UpdateBitmaps
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void TObexUtilsUiLayer::UpdateBitmaps( TUid aMedia,
- TInt& aNumberOfZoomStates, TFileName& aBitmapFile, TInt& aStartBitmap,
- TInt& aEndBitmap )
- {
- FLOG(_L("[OBEXUTILS]\t TObexUtilsUiLayer::UpdateBitmaps()"));
-
- aBitmapFile = KCommonUiBitmapFile;
- aNumberOfZoomStates = KUiNumberOfZoomStates;
- if( aMedia == KUidMsgTypeBt )
- {
- aStartBitmap = EMbmMuiuQgn_prop_mce_ir_unread;
- aEndBitmap = EMbmMuiuQgn_prop_mce_bt_read_mask;
- }
- else
- {
- aStartBitmap = EMbmMuiuQgn_prop_mce_ir_unread;
- aEndBitmap = EMbmMuiuQgn_prop_mce_bt_unread_mask;
- }
-
- FLOG(_L("[OBEXUTILS]\t TObexUtilsUiLayer::UpdateBitmaps() completed"));
- }
-
-// -----------------------------------------------------------------------------
-// TObexUtilsUiLayer::DeleteCBitMapArray
-// -----------------------------------------------------------------------------
-//
-inline void DeleteCBitMapArray(TAny* aPtr)
- {
- if (aPtr)
- {
- TObexUtilsUiLayer::CBitmapArray* array =
- reinterpret_cast<TObexUtilsUiLayer::CBitmapArray*>(aPtr);
- array->ResetAndDestroy();
- delete array;
- }
- }
-
-// -----------------------------------------------------------------------------
-// TObexUtilsUiLayer::CreateAndAppendBitmapL
-// -----------------------------------------------------------------------------
-//
-void CreateAndAppendBitmapL(const TAknsItemID& aID,
- const TInt aFileBitmapId,
- CArrayPtr<TObexUtilsUiLayer::CBitmapArray>* aIconArrays )
- {
- TFileName muiubmpFilename;
- muiubmpFilename += KObexUtilsFileDrive;
- muiubmpFilename += KDC_APP_BITMAP_DIR;
- muiubmpFilename += KCommonUiBitmapFile;
-
- TObexUtilsUiLayer::CBitmapArray* array=NULL;
- array=new(ELeave) CArrayPtrFlat<CFbsBitmap>(KUiNumberOfZoomStates);
- CleanupStack::PushL(TCleanupItem(DeleteCBitMapArray, array));
-
- CFbsBitmap* bitmap=0, *mask=0;
-
- //Can not use CreateIconLC since the order in which bitmap and mask are pushed into Cleanup Stack is undefined.
- AknsUtils::CreateIconL(
- AknsUtils::SkinInstance(),
- aID,
- bitmap,
- mask,
- muiubmpFilename,
- aFileBitmapId,
- aFileBitmapId+1);
- CleanupStack::PushL(mask);
- CleanupStack::PushL(bitmap);
-
- // warning: bmp is deleted by the array CleanupItem. Immediately Pop or risk double deletion upon a Leave.
- array->AppendL(bitmap);
- CleanupStack::Pop(bitmap);
-
- // warning: bmp is deleted by the array CleanupItem. Immediately Pop or risk double deletion upon a Leave.
- array->AppendL(mask);
- CleanupStack::Pop(mask);
-
- aIconArrays->AppendL(array);
- CleanupStack::Pop(array);
- }
-
-// -----------------------------------------------------------------------------
-// TObexUtilsUiLayer::CreateIconsL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void TObexUtilsUiLayer::CreateIconsL(
- TUid aMedia,
- CArrayPtr<TObexUtilsUiLayer::CBitmapArray>* aIconArrays )
- {
- if( aMedia == KUidMsgTypeBt ) //Bluetooth
- {
- CreateAndAppendBitmapL(
- KAknsIIDQgnPropMceIrUnread,
- EMbmMuiuQgn_prop_mce_ir_unread,
- aIconArrays);
- CreateAndAppendBitmapL(
- KAknsIIDQgnPropMceIrRead,
- EMbmMuiuQgn_prop_mce_ir_read,
- aIconArrays);
- CreateAndAppendBitmapL(
- KAknsIIDQgnPropMceBtUnread,
- EMbmMuiuQgn_prop_mce_bt_unread,
- aIconArrays);
- CreateAndAppendBitmapL(
- KAknsIIDQgnPropMceBtRead,
- EMbmMuiuQgn_prop_mce_bt_read,
- aIconArrays);
- CreateAndAppendBitmapL(
- KAknsIIDQgnPropMceNfcRead,
- 0,
- aIconArrays);
- CreateAndAppendBitmapL(
- KAknsIIDQgnPropMceNfcUnread,
- 0,
- aIconArrays);
- }
- else //Infrared
- {
- CreateAndAppendBitmapL(
- KAknsIIDQgnPropMceIrUnread,
- EMbmMuiuQgn_prop_mce_ir_unread,
- aIconArrays);
- CreateAndAppendBitmapL(
- KAknsIIDQgnPropMceIrRead,
- EMbmMuiuQgn_prop_mce_ir_read,
- aIconArrays);
- CreateAndAppendBitmapL(
- KAknsIIDQgnPropMceBtUnread,
- EMbmMuiuQgn_prop_mce_bt_unread,
- aIconArrays);
- }
- }
-
-// -----------------------------------------------------------------------------
-// TObexUtilsUiLayer::IsBackupRunning
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool TObexUtilsUiLayer::IsBackupRunning()
- {
- const TUint32 KFileManagerBkupStatus = 0x00000001;
-
- TInt status = EFileManagerBkupStatusUnset;
- TBool retValue = EFalse;
- TInt err = RProperty::Get( TUid::Uid(KFileManagerUID3), KFileManagerBkupStatus,
- status );
- if ( err == KErrNone )
- {
- if ( status == EFileManagerBkupStatusBackup ||
- status == EFileManagerBkupStatusRestore )
- {
- TSecureId fileManagerSecureId( KFileManagerUID3 );
- //only returning ETrue if backup process is still active
- retValue = ProcessExists( fileManagerSecureId );
- }
- }
-
- return retValue;
- }
-
-// -----------------------------------------------------------------------------
-// TObexUtilsUiLayer::PrepareDialogExecuteL
-// -----------------------------------------------------------------------------
-//
-void TObexUtilsUiLayer::PrepareDialogExecuteL( const TInt& aResourceID, CEikDialog* aDialog )
- {
- if (IsCoverDisplayL())
- {
- TInt dialogIndex =
- ((aResourceID & KResourceNumberMask) - KFirstResourceOffset) + KEnumStart;
- aDialog->PublishDialogL( dialogIndex, KObexUtilsCategory );
- }
- }
-
-// -----------------------------------------------------------------------------
-// TObexUtilsUiLayer::IsCoverDisplayL()
-// -----------------------------------------------------------------------------
-//
-TBool TObexUtilsUiLayer::IsCoverDisplayL()
- {
- TBool coverDisplay = EFalse;
- FeatureManager::InitializeLibL();
- if ( FeatureManager::FeatureSupported( KFeatureIdCoverDisplay ) )
- {
- coverDisplay = ETrue;
- }
- FeatureManager::UnInitializeLib();
- return coverDisplay;
- }
-
-// -----------------------------------------------------------------------------
-// TObexUtilsUiLayer::ProcessExists
-// -----------------------------------------------------------------------------
-//
-TBool TObexUtilsUiLayer::ProcessExists( const TSecureId& aSecureId )
- {
- _LIT( KFindPattern, "*" );
- TFindProcess finder(KFindPattern);
- TFullName processName;
- while( finder.Next( processName ) == KErrNone )
- {
- RProcess process;
- if ( process.Open( processName ) == KErrNone )
- {
- TSecureId processId( process.SecureId() );
- process.Close();
- if( processId == aSecureId )
- {
- return ETrue;
- }
- }
- }
- return EFalse;
- }
-// End of File
--- a/btobexprofiles/obexserviceman/utils/src/vMessageHandler.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/btobexprofiles/obexserviceman/utils/src/vMessageHandler.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -18,7 +18,6 @@
// INCLUDE FILES
#include "vMessageHandler.h"
-#include "obexutilsuilayer.h"
#include "obexutilsdebug.h"
#include "etelmm.h"
#include <BTSapDomainPSKeys.h>
@@ -38,6 +37,9 @@
#include <app/csmsgetdetdescinterface.h>
#endif //NO101APPDEPFIXES_NEW
+// todo @ QT migration: take official definition from Messaging at app layer (btmsgtypeuid.h)
+const TUid KUidMsgTypeBt = {0x10009ED5};
+
// ================= MEMBER FUNCTIONS =======================
TBool CSapVMessageParser::HandleMessageL(CObexBufObject* aReceivedObject, const TUid aMtmID,
RFile& aFile, CMsvSession* aMsvSession, TTime aTime)
--- a/btservices_plat/obex_service_utils_api/tsrc/src/ObexServAPItestBlocks.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/btservices_plat/obex_service_utils_api/tsrc/src/ObexServAPItestBlocks.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -23,7 +23,6 @@
#include <Stiftestinterface.h>
#include <UiklafInternalCRKeys.h>
#include <UikonInternalPSKeys.h>
-#include <Obexutils.rsg>
#include <obex.h>
#include "testlogger.h"
#include "ObexServAPItest.h"
@@ -262,8 +261,10 @@
// -----------------------------------------------------------------------------
//
TInt CObexServAPItest::CreateOutBoxEntryL( CStifItemParser& /*aItem*/ )
- {
- TRAPD(error, iMessageServerIndex = TObexUtilsMessageHandler::CreateOutboxEntryL( KUidMsgTypeBt, R_BT_SEND_OUTBOX_SENDING ));
+ {
+ //todo resource is unavailable at the moment.
+ // need to change the string constant according to the coming new localisation file
+ TRAPD(error, iMessageServerIndex = TObexUtilsMessageHandler::CreateOutboxEntryL( KUidMsgTypeBt, 1 ));
if( error != KErrNone)
{
TestCompleted( error, TLFUNCLOG, _L("CreateOutBoxEntryL leaves"));
--- a/cbsatplugin/atmisccmdplugin/src/clckcommandhandler.cpp Fri Jun 11 13:48:51 2010 +0300
+++ b/cbsatplugin/atmisccmdplugin/src/clckcommandhandler.cpp Wed Jun 23 18:23:52 2010 +0300
@@ -719,11 +719,6 @@
}
break;
}
- default:
- {
- TRACE_FUNC_EXIT
- return KErrArgument;
- }
}
// if phone password is required it needs to be hashed before verification
--- a/layers.sysdef.xml Fri Jun 11 13:48:51 2010 +0300
+++ b/layers.sysdef.xml Wed Jun 23 18:23:52 2010 +0300
@@ -15,6 +15,9 @@
<module name="btdialog">
<unit unitID="lcdo.btservices.btdialog" mrp="" bldFile="&layer_real_source_path;/bluetoothengine/btnotif/btdevicedialogplugin" name="bluetooth_dialogs" proFile="btdevicedialogplugin.pro" qmakeArgs="" />
</module>
+ <module name="obexhighway">
+ <unit unitID="lcdo.btservices.obexhighway" mrp="" bldFile="&layer_real_source_path;/btobexprofiles/obexsendservices/obexhighway" name="localconn_obexhighway" proFile="obexhighway.pro" qmakeArgs="" />
+ </module>
</layer>
<layer name="api_test_layer">
<module name="btservices_test">