+ return bookmarksDatabase.rawQuery("SELECT $BOOKMARK_NAME, $FOLDER_ID FROM $BOOKMARKS_TABLE WHERE $PARENT_FOLDER_ID = $currentFolderId AND $IS_FOLDER = 1", null)
+ }
+
+ fun getSubfolderSpacer(folderId: Long): String {
+ // Create a spacer string
+ var spacerString = ""
+
+ // Get the parent folder ID.
+ val parentFolderId = getParentFolderId(folderId)
+
+ // Check to see if the parent folder is not in the home folder.
+ if (parentFolderId != HOME_FOLDER_ID) {
+ // Add two spaces to the spacer string.
+ spacerString += " "
+
+ // Check the parent folder recursively.
+ spacerString += getSubfolderSpacer(parentFolderId)
+ }
+
+ // Return the spacer string.
+ return spacerString
+ }
+
+ private fun getSubfoldersExcept(folderId: Long, exceptFolderIdString: String): ArrayList<Cursor> {
+ // Get a readable database handle.
+ val bookmarksDatabase = this.readableDatabase
+
+ // Create a cursor array list.
+ val cursorArrayList = ArrayList<Cursor>()
+
+ // Create a matrix cursor column names.
+ val matrixCursorColumnNames = arrayOf(ID, BOOKMARK_NAME, FAVORITE_ICON, PARENT_FOLDER_ID, FOLDER_ID)
+
+ // Get a cursor with the subfolders.
+ val subfolderCursor = bookmarksDatabase.rawQuery(
+ "SELECT * FROM $BOOKMARKS_TABLE WHERE $IS_FOLDER = 1 AND $PARENT_FOLDER_ID = $folderId AND $FOLDER_ID NOT IN ($exceptFolderIdString) ORDER BY $DISPLAY_ORDER ASC", null)
+
+ // Get the subfolder cursor column indexes.
+ val idColumnIndex = subfolderCursor.getColumnIndexOrThrow(ID)
+ val nameColumnIndex = subfolderCursor.getColumnIndexOrThrow(BOOKMARK_NAME)
+ val favoriteIconColumnIndex = subfolderCursor.getColumnIndexOrThrow(FAVORITE_ICON)
+ val parentFolderIdColumnIndex = subfolderCursor.getColumnIndexOrThrow(PARENT_FOLDER_ID)
+ val folderIdColumnIndex = subfolderCursor.getColumnIndexOrThrow(FOLDER_ID)
+
+ while (subfolderCursor.moveToNext()) {
+ // Create an array list.
+ val matrixCursor = MatrixCursor(matrixCursorColumnNames)
+
+ // Add the subfolder to the matrix cursor.
+ matrixCursor.addRow(arrayOf<Any>(subfolderCursor.getInt(idColumnIndex), subfolderCursor.getString(nameColumnIndex), subfolderCursor.getBlob(favoriteIconColumnIndex),
+ subfolderCursor.getLong(parentFolderIdColumnIndex), subfolderCursor.getLong(folderIdColumnIndex)))
+
+ // Add the matrix cursor to the array list.
+ cursorArrayList.add(matrixCursor)
+
+ // Get all the sub-subfolders recursively
+ cursorArrayList.addAll(getSubfoldersExcept(subfolderCursor.getLong(folderIdColumnIndex), exceptFolderIdString))
+ }
+
+ // Close the subfolder cursor.
+ subfolderCursor.close()
+
+ // Return the matrix cursor.
+ return cursorArrayList