--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btnotif/src/btnotifnameutils.cpp Wed Sep 01 12:20:04 2010 +0100
@@ -0,0 +1,106 @@
+/*
+ * 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: Declares Bluetooth notifiers base class.
+ *
+ */
+
+#include <AknUtils.h>
+#include <StringLoader.h>
+#include <utf.h>
+
+#include <BTNotif.rsg>
+
+#include "btNotifDebug.h"
+#include "btnotifnameutils.h"
+
+/**
+ * A function for strip dangerous chars out of BT name
+ * @param a device name. After return, it contains the stripped name.
+ * @return void
+ */
+void BtNotifNameUtils::StripDeviceName(TBTDeviceName& aDeviceNameForStrip)
+ {
+ aDeviceNameForStrip.Trim();
+ // Filter out listbox non-friendly control chars.
+ //
+ AknTextUtils::StripCharacters(aDeviceNameForStrip, KAknStripListControlChars);
+
+ // Filter out sub-string-separator to pretend unexpected text layout.
+ //
+ TChar subStringSeparator = TChar(0x0001);
+ TBuf<1> tempCharBuf;
+ tempCharBuf.Append(subStringSeparator);
+ AknTextUtils::StripCharacters(aDeviceNameForStrip, tempCharBuf);
+ }
+
+/**
+ * Gets the device name to be displayed in note or dialog.
+ * @param aName contains the name to be displayed
+ * @param aDev the device that may have a friendly or device name, or no name at all.
+ */
+void BtNotifNameUtils::GetDeviceDisplayName(TBTDeviceName& aName, const CBTDevice* aDev)
+ {
+ if(aDev && aDev->IsValidFriendlyName() )
+ {
+ aName.Copy( aDev->FriendlyName() );
+ }
+ else
+ {
+ GetDeviceName(aName, aDev);
+ }
+ }
+
+/**
+ * Gets the device name from aDev if its friendly name or device name is valid; otherwise
+ * the predefined default BT name.
+ * @param aName contains the device name as the result
+ * @param aDev the device that may have a device name, or no name at all.
+ */
+void BtNotifNameUtils::GetDeviceName(TBTDeviceName& aName, const CBTDevice* aDev)
+ {
+ aName.Zero();
+ TInt err (CnvUtfConverter::EErrorIllFormedInput);
+ if(aDev && aDev->IsValidDeviceName())
+ {
+ err = CnvUtfConverter::ConvertToUnicodeFromUtf8(aName, aDev->DeviceName());
+ }
+ // if there are illformated chars in the device name, default name should be used for display.
+ if (err == CnvUtfConverter::EErrorIllFormedInput || aName.Length() == 0)
+ {
+ StringLoader::Load(aName, R_BT_DIALOG_DEF_NAME);
+ }
+ StripDeviceName(aName);
+ }
+
+/**
+ * Sets the device name. This handles the conversion from unicode
+ * to UTF8.
+ * @param aDev the device that the name should be set for
+ * @param aName the name to set
+ */
+void BtNotifNameUtils::SetDeviceNameL(const TBTDeviceName& aName, CBTDevice& aDev)
+ {
+ FTRACE(FPrint(_L("[BTNOTIF]\t CBTNotifierBase::SetDeviceNameL - Name: '%S' length: %d"), &aName, aName.Length() ));
+
+ // Rationalise the name to remove whitespace and control characters
+ // then set the name if there's anything left
+ TBTDeviceName devName(aName);
+ StripDeviceName(devName);
+ if (aName.Length())
+ {
+ aDev.SetDeviceNameL(BTDeviceNameConverter::ToUTF8L(devName));
+ }
+ }
+
+