Blame client/Android/Studio/freeRDPCore/src/main/java/com/freerdp/freerdpcore/services/FreeRDPSuggestionProvider.java

Packit 1fb8d4
/*
Packit Service 5a9772
   Suggestion Provider for RDP bookmarks
Packit 1fb8d4
Packit 1fb8d4
   Copyright 2013 Thincast Technologies GmbH, Author: Martin Fleisz
Packit 1fb8d4
Packit Service 5a9772
   This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
Packit Service 5a9772
   If a copy of the MPL was not distributed with this file, You can obtain one at
Packit Service 5a9772
   http://mozilla.org/MPL/2.0/.
Packit 1fb8d4
*/
Packit 1fb8d4
Packit 1fb8d4
package com.freerdp.freerdpcore.services;
Packit 1fb8d4
Packit 1fb8d4
import android.app.SearchManager;
Packit 1fb8d4
import android.content.ContentProvider;
Packit 1fb8d4
import android.content.ContentValues;
Packit 1fb8d4
import android.database.Cursor;
Packit 1fb8d4
import android.database.MatrixCursor;
Packit 1fb8d4
import android.net.Uri;
Packit 1fb8d4
Packit 1fb8d4
import com.freerdp.freerdpcore.R;
Packit 1fb8d4
import com.freerdp.freerdpcore.application.GlobalApp;
Packit 1fb8d4
import com.freerdp.freerdpcore.domain.BookmarkBase;
Packit 1fb8d4
import com.freerdp.freerdpcore.domain.ConnectionReference;
Packit 1fb8d4
import com.freerdp.freerdpcore.domain.ManualBookmark;
Packit 1fb8d4
Packit 1fb8d4
import java.util.ArrayList;
Packit 1fb8d4
Packit Service 5a9772
public class FreeRDPSuggestionProvider extends ContentProvider
Packit Service 5a9772
{
Packit Service 5a9772
Packit Service 5a9772
	public static final Uri CONTENT_URI =
Packit Service 5a9772
	    Uri.parse("content://com.freerdp.afreerdp.services.freerdpsuggestionprovider");
Packit Service 5a9772
Packit Service 5a9772
	@Override public int delete(Uri uri, String selection, String[] selectionArgs)
Packit Service 5a9772
	{
Packit Service 5a9772
		// TODO Auto-generated method stub
Packit Service 5a9772
		return 0;
Packit Service 5a9772
	}
Packit Service 5a9772
Packit Service 5a9772
	@Override public String getType(Uri uri)
Packit Service 5a9772
	{
Packit Service 5a9772
		return "vnd.android.cursor.item/vnd.freerdp.remote";
Packit Service 5a9772
	}
Packit Service 5a9772
Packit Service 5a9772
	@Override public Uri insert(Uri uri, ContentValues values)
Packit Service 5a9772
	{
Packit Service 5a9772
		// TODO Auto-generated method stub
Packit Service 5a9772
		return null;
Packit Service 5a9772
	}
Packit Service 5a9772
Packit Service 5a9772
	@Override public boolean onCreate()
Packit Service 5a9772
	{
Packit Service 5a9772
		return true;
Packit Service 5a9772
	}
Packit Service 5a9772
Packit Service 5a9772
	@Override
Packit Service 5a9772
	public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
Packit Service 5a9772
	                    String sortOrder)
Packit Service 5a9772
	{
Packit Service 5a9772
Packit Service 5a9772
		String query = (selectionArgs != null && selectionArgs.length > 0) ? selectionArgs[0] : "";
Packit Service 5a9772
Packit Service 5a9772
		// search history
Packit Service 5a9772
		ArrayList<BookmarkBase> history =
Packit Service 5a9772
		    GlobalApp.getQuickConnectHistoryGateway().findHistory(query);
Packit Service 5a9772
Packit Service 5a9772
		// search bookmarks
Packit Service 5a9772
		ArrayList<BookmarkBase> manualBookmarks;
Packit Service 5a9772
		if (query.length() > 0)
Packit Service 5a9772
			manualBookmarks = GlobalApp.getManualBookmarkGateway().findByLabelOrHostnameLike(query);
Packit Service 5a9772
		else
Packit Service 5a9772
			manualBookmarks = GlobalApp.getManualBookmarkGateway().findAll();
Packit Service 5a9772
Packit Service 5a9772
		return createResultCursor(history, manualBookmarks);
Packit Service 5a9772
	}
Packit Service 5a9772
Packit Service 5a9772
	@Override
Packit Service 5a9772
	public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)
Packit Service 5a9772
	{
Packit Service 5a9772
		// TODO Auto-generated method stub
Packit Service 5a9772
		return 0;
Packit Service 5a9772
	}
Packit Service 5a9772
Packit Service 5a9772
	private void addBookmarksToCursor(ArrayList<BookmarkBase> bookmarks, MatrixCursor resultCursor)
Packit Service 5a9772
	{
Packit Service 5a9772
		Object[] row = new Object[5];
Packit Service 5a9772
		for (BookmarkBase bookmark : bookmarks)
Packit Service 5a9772
		{
Packit Service 5a9772
			row[0] = new Long(bookmark.getId());
Packit Service 5a9772
			row[1] = bookmark.getLabel();
Packit Service 5a9772
			row[2] = bookmark.<ManualBookmark>get().getHostname();
Packit Service 5a9772
			row[3] = ConnectionReference.getManualBookmarkReference(bookmark.getId());
Packit Service 5a9772
			row[4] = "android.resource://" + getContext().getPackageName() + "/" +
Packit Service 5a9772
			         R.drawable.icon_star_on;
Packit Service 5a9772
			resultCursor.addRow(row);
Packit Service 5a9772
		}
Packit Service 5a9772
	}
Packit Service 5a9772
Packit Service 5a9772
	private void addHistoryToCursor(ArrayList<BookmarkBase> history, MatrixCursor resultCursor)
Packit Service 5a9772
	{
Packit Service 5a9772
		Object[] row = new Object[5];
Packit Service 5a9772
		for (BookmarkBase bookmark : history)
Packit Service 5a9772
		{
Packit Service 5a9772
			row[0] = new Integer(1);
Packit Service 5a9772
			row[1] = bookmark.getLabel();
Packit Service 5a9772
			row[2] = bookmark.getLabel();
Packit Service 5a9772
			row[3] = ConnectionReference.getHostnameReference(bookmark.getLabel());
Packit Service 5a9772
			row[4] = "android.resource://" + getContext().getPackageName() + "/" +
Packit Service 5a9772
			         R.drawable.icon_star_off;
Packit Service 5a9772
			resultCursor.addRow(row);
Packit Service 5a9772
		}
Packit Service 5a9772
	}
Packit Service 5a9772
Packit Service 5a9772
	private Cursor createResultCursor(ArrayList<BookmarkBase> history,
Packit Service 5a9772
	                                  ArrayList<BookmarkBase> manualBookmarks)
Packit Service 5a9772
	{
Packit Service 5a9772
Packit Service 5a9772
		// create result matrix cursor
Packit Service 5a9772
		int totalCount = history.size() + manualBookmarks.size();
Packit Service 5a9772
		String[] columns = { android.provider.BaseColumns._ID, SearchManager.SUGGEST_COLUMN_TEXT_1,
Packit Service 5a9772
			                 SearchManager.SUGGEST_COLUMN_TEXT_2,
Packit Service 5a9772
			                 SearchManager.SUGGEST_COLUMN_INTENT_DATA,
Packit Service 5a9772
			                 SearchManager.SUGGEST_COLUMN_ICON_2 };
Packit Service 5a9772
		MatrixCursor matrixCursor = new MatrixCursor(columns, totalCount);
Packit Service 5a9772
Packit Service 5a9772
		// populate result matrix
Packit Service 5a9772
		if (totalCount > 0)
Packit Service 5a9772
		{
Packit Service 5a9772
			addHistoryToCursor(history, matrixCursor);
Packit Service 5a9772
			addBookmarksToCursor(manualBookmarks, matrixCursor);
Packit Service 5a9772
		}
Packit Service 5a9772
		return matrixCursor;
Packit Service 5a9772
	}
Packit 1fb8d4
}