/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */ /* vim: set ts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "base/basictypes.h" #include "BluetoothMapFolder.h" BEGIN_BLUETOOTH_NAMESPACE BluetoothMapFolder::~BluetoothMapFolder() { } BluetoothMapFolder::BluetoothMapFolder(const nsAString& aFolderName, BluetoothMapFolder* aParent) : mName(aFolderName) , mParent(aParent) { } BluetoothMapFolder* BluetoothMapFolder::AddSubFolder(const nsAString& aFolderName) { nsRefPtr folder = new BluetoothMapFolder(aFolderName, this); mSubFolders.Put(nsString(aFolderName), folder); return folder; } BluetoothMapFolder* BluetoothMapFolder::GetSubFolder(const nsAString& aFolderName) { BluetoothMapFolder* subfolder; mSubFolders.Get(aFolderName, &subfolder); return subfolder; } BluetoothMapFolder* BluetoothMapFolder::GetParentFolder() { return mParent; } int BluetoothMapFolder::GetSubFolderCount() { return mSubFolders.Count(); } void BluetoothMapFolder::GetFolderListingObjectString(nsAString& aString, uint16_t aMaxListCount, uint16_t aStartOffset) { const char* folderListingPrefix = "\n" "\n" "\n"; const char* folderListingSuffix = ""; // Based on Element Specification, 9.1.1, IrObex 1.2 nsAutoCString folderListingObejct(folderListingPrefix); int count = 0; for (auto iter = mSubFolders.Iter(); !iter.Done(); iter.Next()) { if (count < aStartOffset) { continue; } if (count > aMaxListCount) { break; } const nsAString& key = iter.Key(); folderListingObejct.Append(""); count++; } folderListingObejct.Append(folderListingSuffix); aString = NS_ConvertUTF8toUTF16(folderListingObejct); } void BluetoothMapFolder::DumpFolderInfo() { BT_LOGR("Folder name: %s, subfolder counts: %d", NS_ConvertUTF16toUTF8(mName).get(), mSubFolders.Count()); } END_BLUETOOTH_NAMESPACE