package com.bucketdevelopers.uft;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.WriterException;
import com.bucketdevelopers.uft.ServerService;
import com.common.methods.AvailableSpaceHandler;
import com.common.methods.IpAddress;
import com.common.methods.qrcodelibrary.Contents;
import com.common.methods.qrcodelibrary.QRCodeEncoder;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
public class Screen1 extends Fragment {
private Intent uploaddownloadservice;
public static int PORT = 8080;
private String qrData;
private ImageView qrimagesmall;
private TextView sdspaceavail;
public static final Screen1 newInstance(String message)
{
Screen1 f = new Screen1();
Bundle bdl = new Bundle(1);
f.setArguments(bdl);
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.screen1, container, false);
sdspaceavail = (TextView) v.findViewById(R.id.sdspace);
uploaddownloadservice = new Intent(getActivity(), ServerService.class);
// Setting the SD Card Space
updateSDSpace();
// Start\Stop the Server
final TextView transfer_text = (TextView) v.findViewById(R.id.transfer_text);
final ImageButton serverToggle = (ImageButton) v
.findViewById(R.id.ServerEnable);
if(ServerService.serverenabled==true)
{
transfer_text.setText("1.Disable transfer");
}
else
{
transfer_text.setText("1.Enable transfer");
}
serverToggle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Start The service
if (ServerService.serverenabled != true) {
// Bug Fix:
// Just So that App doesnt FORCE CLOSE even for some
// reason the UI is ******
getActivity().stopService(uploaddownloadservice);
// Now the Real Deal
Log.d("tag", "Starting");
uploaddownloadservice.putExtra("Port", PORT);
getActivity().startService(uploaddownloadservice);
transfer_text.setText("1.Disable transfer");
updateIP(true);
} else {
getActivity().stopService(uploaddownloadservice);
transfer_text.setText("1.Enable transfer");
ServerService.serverenabled = false;
updateIP(false);
}
updateSDSpace();
}
});
// Switch to next Fragment (File Selection)
ImageButton fileselect = (ImageButton) v
.findViewById(R.id.fileSelector);
fileselect.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View vw) {
ViewPager pager = (ViewPager) getActivity().findViewById(
R.id.viewpager);
pager.setCurrentItem(1, true);
}
});
// QR Code OnClick Listeners
qrimagesmall = (ImageView) v.findViewById(R.id.qrCode);
// updateIP();
qrimagesmall.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent changetofullScreenqr = new Intent(getActivity(),
FullScreenQRCode.class);
changetofullScreenqr.putExtra("qrvalue", qrData);
startActivity(changetofullScreenqr);
}
});
// End of QR Listeners
return v;
}
//to Update SD CARD space
private void updateSDSpace() {
String sdSpaceTextDisplay = null;
long space = AvailableSpaceHandler.getExternalAvailableSpaceInMB();
if (space < 50) {
sdSpaceTextDisplay = "Warning!:(Low Space) :" + space + "MB";
} else if (space > 1023) {
space = AvailableSpaceHandler.getExternalAvailableSpaceInGB();
sdSpaceTextDisplay = "Available Space: " + space + "GB";
} else {
sdSpaceTextDisplay = "Available Space: " + space + "MB";
}
sdspaceavail.setText(sdSpaceTextDisplay);
}
//To update IP UI
void updateIP(boolean visible) {
if (visible) {
qrimagesmall.setVisibility(View.VISIBLE);
if (IpAddress.getHostIPAddress().length() == 28) // Means Not
// Connected to
// any Network!
{
qrData = "Not Connected to any Network !";
} else {
qrData = "http://" + IpAddress.getHostIPAddress() + ":" + PORT;
}
// Getting Screen Width
DisplayMetrics metrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay()
.getMetrics(metrics);
int width = metrics.widthPixels;
int qrCodeDimention = width / 2;
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(qrData, null,
Contents.Type.TEXT, BarcodeFormat.QR_CODE.toString(),
qrCodeDimention);
try {
Bitmap bitmap = qrCodeEncoder.encodeAsBitmap();
qrimagesmall.setImageBitmap(bitmap);
} catch (WriterException e) {
e.printStackTrace();
}
} else {
qrimagesmall.setVisibility(View.GONE);
}
}
}