package nl.eyefilm.android.schatkamer;

import java.io.File;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.VideoView;
import nl.eyefilm.android.schatkamer.LabClimaxArrayList;
import nl.eyefilm.android.schatkamer.LabClimaxMap;
import nl.eyefilm.android.schatkamer.LabThemeArrayList;
import nl.eyefilm.android.schatkamer.LabLayoutArrayList;

public class LabActivity extends Activity implements OnTouchListener {
    /** Called when the activity is first created. */
	String layoutlanguage = "nl";
	int videolayoutwidth = 1200;
	int videolayoutheight = 800;
	/* er zou een mapping topleft(x,y) bottomright(x,y) moeten zijn */
	int gridnrrow = 5;
	int gridnrcolumn = 5;
	int indexnr = 1;
	int clipcount = 12;
	String clipidref = "Clip id";
	String clipdescription = "Beschrijving";
	SharedPreferences preferences;
    LabClimaxArrayList clxlist = new LabClimaxArrayList();
    LabXmlReaderHandler xmlreader = new LabXmlReaderHandler();
    LabThemeArrayList thmlist = new LabThemeArrayList();
    LabXmlReaderHandler xmlthmreader = new LabXmlReaderHandler();
    LabLayoutArrayList lytlist = new LabLayoutArrayList();
    LabXmlReaderHandler xmllayreader = new LabXmlReaderHandler();
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        preferences = PreferenceManager.getDefaultSharedPreferences(this);
        //String climaxxmlfilename = preferences.getString("climaxxml", "1.3gp");
        clxlist = xmlreader.ReadClimaxArrayListFile("/sdcard/video/clx000000002.xml");
        //String climaxxmlfilename = preferences.getString("climaxxml", "1.3gp");
        thmlist = xmlthmreader.ReadLabThemeArrayListFile("/sdcard/video/thm000000002.xml");
        lytlist = xmlthmreader.ReadLabLayoutArrayListFile("/sdcard/video/lay000000002.xml");
        
        

        /* do read */
        
        /*
         * 
         *         field4.setText(lytlist.get(lytlist.nrrow));
        field5.setText(lytlist.get(lytlist.nrcolumn));
         */
        
        layoutlanguage = "nl";
        gridnrrow = Integer.parseInt(lytlist.get(lytlist.nrrow));
        gridnrcolumn = Integer.parseInt(lytlist.get(lytlist.nrrow));
        
          
	      Button returnbutton = (Button) findViewById(R.id.returntovideolayout);
	      returnbutton.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				ShowVideoLayout();
				
			}
	    	  
	      });
	      

	      
	      ImageButton nllanguagebutton = (ImageButton) findViewById(R.id.videonllanguageswitch);
	      nllanguagebutton.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				layoutlanguage = "nl";
				ShowVideoLayout();
			}
	    	  
	      });
	      
          	
	      ImageButton uklanguagebutton = (ImageButton) findViewById(R.id.videouklanguageswitch);
	      uklanguagebutton.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				layoutlanguage = "uk";
				ShowVideoLayout();
			}
	    	  
	      });
	      
	      ImageButton nextbutton = (ImageButton) findViewById(R.id.next);
	      nextbutton.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if (indexnr < clipcount)
					indexnr++;
				ShowTextLayout();
			}
	    	  
	      });
	      
	      ImageButton prevbutton = (ImageButton) findViewById(R.id.previous);
	      prevbutton.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				if (indexnr > 1)
					indexnr--;
				ShowTextLayout();
			}
	    	  
	      });
	      
		    ImageButton stopbutton = (ImageButton) findViewById(R.id.stop);
		      stopbutton.setOnClickListener(new OnClickListener() {

				@Override
				public void onClick(View v) {
					// TODO Auto-generated method stub
					VideoView view1 = (VideoView) findViewById(R.id.videolayoutgriddisplay);
					if (view1.isPlaying()) {
							view1.pause();
					} else {
						view1.start();
					};
					
				}
		    	  
		      });
	      
			    ImageButton playbutton = (ImageButton) findViewById(R.id.play);
			      playbutton.setOnClickListener(new OnClickListener() {

					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						VideoView view1 = (VideoView) findViewById(R.id.videolayoutgriddisplay);
					    
					    view1.setVideoPath("/sdcard/video/" + clxlist.GridClipId);
						view1.start();
					}
			    	  
			      });
        

        
        
        
	    VideoView view = (VideoView) findViewById(R.id.videolayoutgriddisplay);
	    
	  
	    view.setVideoPath("/sdcard/video/" + clxlist.GridClipId);
	    

	    
	    view.start();
	    

	    videolayoutheight=Integer.parseInt(lytlist.get(lytlist.height));
	    videolayoutwidth=Integer.parseInt(lytlist.get(lytlist.width));

	    view.setOnTouchListener(this);
	    
	    ShowVideoLayout();
	    
    }
    
    
    @Override
	public boolean onCreateOptionsMenu(Menu menu) {
		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.menu.menu, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
			case R.id.preferences:
				Intent i = new Intent(LabActivity.this, labPreferencesActivity.class);
				startActivity(i);
				Toast.makeText(LabActivity.this,
						"Here you can enter the terminal settings.",
						Toast.LENGTH_LONG).show();
				break;
		}
		return true;
	}
    
    @Override
	public boolean onTouch(View v, MotionEvent event) {
    	int xvalue;
    	int xcolumn;
    	int xwidth;
    	int yvalue;
    	int yrow;
    	int yheight;
    	
    	
    	
    	xvalue = 0;
    	yvalue = 0;
    	xwidth = (int) videolayoutwidth / gridnrcolumn;
    	yheight = (int) videolayoutheight / gridnrrow;
		for (int i = 0; i < event.getPointerCount(); i++) {
				xvalue = (int) event.getX(i);
				yvalue = (int) event.getY(i);
		}
		
		xcolumn = (int) xvalue/xwidth;
		yrow = (int) yvalue/yheight;
		//xcolumn = 0;
		//yrow = 0;
		indexnr = 1 + xcolumn + yrow*gridnrcolumn;
		//intent videoplayer movie[indexnr]
		//set second screen according to indexnr
		
		LabClimaxMap readclip = new LabClimaxMap();
        
        readclip = clxlist.get(indexnr-1);
		
		TextView cliptitle = (TextView) findViewById(R.id.textcliptitle);
		cliptitle.setText(layoutlanguage + readclip.get(readclip.title) + indexnr + " " + xvalue + " " + yvalue);
		
		ShowTextLayout();
		
		Intent intent = new Intent();
		intent.setAction(android.content.Intent.ACTION_VIEW);
		File hdmifile = new File("/sdcard/video/" + readclip.get(readclip.clipid));
		intent.setDataAndType(Uri.fromFile(hdmifile), "video/*");
		startActivity(intent); 

		
		
    	return true;
    }
    
	   private void ShowVideoLayout() {
		      RelativeLayout Layout1 = (RelativeLayout)findViewById(R.id.videolayout);
		      RelativeLayout Layout2 = (RelativeLayout)findViewById(R.id.textinfolayout);
		      TextView themetitle = (TextView) findViewById(R.id.videothemetitle);
		      if (layoutlanguage =="nl") {
		    	  themetitle.setText(thmlist.get(thmlist.nltitle));
		      }
		      else {
		    	  themetitle.setText(thmlist.get(thmlist.uktitle));
		      }
		      Layout1.setVisibility(View.VISIBLE);
		      Layout2.setVisibility(View.GONE);
		   }
	   
	   private void ShowTextLayout() {
		      RelativeLayout Layout1 = (RelativeLayout)findViewById(R.id.videolayout);
		      RelativeLayout Layout2 = (RelativeLayout)findViewById(R.id.textinfolayout);
		      Button returnbutton = (Button) findViewById(R.id.returntovideolayout);
		      Button playindbutton = (Button) findViewById(R.id.playind);
		      ImageButton nextbutton = (ImageButton) findViewById(R.id.next);
		      ImageButton prevbutton = (ImageButton) findViewById(R.id.previous);
		      TextView poslabel = (TextView) findViewById(R.id.poslabel);
		      TextView postext = (TextView) findViewById(R.id.pos);
		      TextView clipid = (TextView) findViewById(R.id.clipid);
		      TextView desclabel = (TextView) findViewById(R.id.desclabel);
		      TextView desctext = (TextView) findViewById(R.id.description);
		      LabClimaxMap rclip = new LabClimaxMap();
		      
		      rclip = clxlist.get(indexnr-1);
		      playindbutton.setOnClickListener(new OnClickListener() {
		    	  @Override
					public void onClick(View v) {
		    		  LabClimaxMap indclip = new LabClimaxMap();
		    		  
		    		  indclip = clxlist.get(indexnr-1);
		    		  Intent intentind = new Intent();
		    		  intentind.setAction(android.content.Intent.ACTION_VIEW);
		    		  File hdmifile = new File("/sdcard/video/" + indclip.get(indclip.clipid));
		    		  intentind.setDataAndType(Uri.fromFile(hdmifile), "video/*");
		    		  startActivity(intentind);
		    	  }
		      });
		      
		      
		      

		      
		      if (indexnr <= 1)
		    	  prevbutton.setImageResource(R.drawable.prevgrey);
		      else
		    	  prevbutton.setImageResource(R.drawable.prev);
		      if (indexnr >= clipcount)
		    	  nextbutton.setImageResource(R.drawable.nextgrey);
		      else
		    	  nextbutton.setImageResource(R.drawable.next);
		      
		      if (layoutlanguage =="nl") {
		    	  returnbutton.setText(R.string.returnhomenlmsg);
		    	  playindbutton.setText(R.string.playindnl);
		    	  poslabel.setText(R.string.posnl);
		    	  desclabel.setText(R.string.descnl);
		    	  desctext.setText(rclip.get(rclip.descriptionnl));
		      }
		      else {
		    	  returnbutton.setText(R.string.returnhomeukmsg);
		    	  playindbutton.setText(R.string.playinduk);
		    	  poslabel.setText(R.string.posuk);
		    	  desclabel.setText(R.string.descuk);
		    	  desctext.setText(rclip.get(rclip.descriptionuk));
		      }
		      
		      postext.setText(Integer.toString(indexnr));
		      clipid.setText(rclip.get(rclip.clipid));
		      
		      
		      Layout1.setVisibility(View.GONE);
		      Layout2.setVisibility(View.VISIBLE);
		   }
}







package nl.eyefilm.android.schatkamer;


import android.os.Bundle;
import android.preference.PreferenceActivity;

public class labPreferencesActivity extends PreferenceActivity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    addPreferencesFromResource(R.xml.preferences);
	}
}




<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
  xmlns:android="http://schemas.android.com/apk/res/android">
  	    <PreferenceCategory android:title="User Settings">
        <EditTextPreference android:title="Theme XML" android:key="themexml"></EditTextPreference>
        <EditTextPreference android:title="Layout XML" android:key="layoutxml"></EditTextPreference>
        <EditTextPreference android:title="Climax XML" android:key="climaxxml"></EditTextPreference>
        <EditTextPreference android:title="Terminal Number" android:key="terminalnr"></EditTextPreference>
    	</PreferenceCategory>      
</PreferenceScreen>

