/*
   Network State Receiver

   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.application;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;

public class NetworkStateReceiver extends BroadcastReceiver
{

	public static boolean isConnectedTo3G(Context context)
	{
		ConnectivityManager connectivity =
		    (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo info = connectivity.getActiveNetworkInfo();

		// no connection or background data disabled
		if (info == null || !info.isConnected())
			return false;

		return (info.getType() != ConnectivityManager.TYPE_WIFI &&
		        info.getType() != ConnectivityManager.TYPE_WIMAX);
	}

	@Override public void onReceive(Context context, Intent intent)
	{

		// check if we are connected via 3g or wlan
		if (intent.getExtras() != null)
		{
			NetworkInfo info =
			    (NetworkInfo)intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);

			// are we connected at all?
			if (info != null && info.isConnected())
			{
				// see if we are connected through 3G or WiFi
				Log.d("app", "Connected via type " + info.getTypeName());
				GlobalApp.ConnectedTo3G = (info.getType() != ConnectivityManager.TYPE_WIFI &&
				                           info.getType() != ConnectivityManager.TYPE_WIMAX);
			}

			Log.v("NetworkState", info.toString());
		}
	}
}
