|
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 |
}
|