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

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