/*
   Activity for handling connection requests

   Copyright 2013 Thincast Technologies GmbH, Author: Martin Fleisz

   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/.
*/

package com.freerdp.freerdpcore.services;

import android.app.Activity;
import android.app.SearchManager;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import com.freerdp.freerdpcore.domain.ConnectionReference;
import com.freerdp.freerdpcore.presentation.BookmarkActivity;
import com.freerdp.freerdpcore.presentation.SessionActivity;

public class SessionRequestHandlerActivity extends AppCompatActivity
{

	@Override public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		handleIntent(getIntent());
	}

	@Override protected void onNewIntent(Intent intent)
	{
		setIntent(intent);
		handleIntent(intent);
	}

	private void startSessionWithConnectionReference(String refStr)
	{

		Bundle bundle = new Bundle();
		bundle.putString(SessionActivity.PARAM_CONNECTION_REFERENCE, refStr);
		Intent sessionIntent = new Intent(this, SessionActivity.class);
		sessionIntent.putExtras(bundle);

		startActivityForResult(sessionIntent, 0);
	}

	private void editBookmarkWithConnectionReference(String refStr)
	{
		Bundle bundle = new Bundle();
		bundle.putString(BookmarkActivity.PARAM_CONNECTION_REFERENCE, refStr);
		Intent bookmarkIntent = new Intent(this.getApplicationContext(), BookmarkActivity.class);
		bookmarkIntent.putExtras(bundle);
		startActivityForResult(bookmarkIntent, 0);
	}

	private void handleIntent(Intent intent)
	{

		String action = intent.getAction();
		if (Intent.ACTION_SEARCH.equals(action))
			startSessionWithConnectionReference(ConnectionReference.getHostnameReference(
			    intent.getStringExtra(SearchManager.QUERY)));
		else if (Intent.ACTION_VIEW.equals(action))
			startSessionWithConnectionReference(intent.getDataString());
		else if (Intent.ACTION_EDIT.equals(action))
			editBookmarkWithConnectionReference(intent.getDataString());
	}

	@Override protected void onActivityResult(int requestCode, int resultCode, Intent data)
	{
		super.onActivityResult(requestCode, resultCode, data);
		this.setResult(resultCode);
		this.finish();
	}
}
