Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 211 → Rev 212

/DUBwise/trunk/android/src/org/ligi/android/MKParamEditor.java
0,0 → 1,205
/**************************************************
*
* class to handle Editing of MK Params
*
* Author: Marcus -LiGi- Bueschleb
*
* see README for further Infos
*
*************************************************/
 
package org.ligi.android;
 
import android.view.*;
 
import org.ligi.ufo.*;
 
public class MKParamEditor
implements MKParamDefinitions
{
 
 
private int act_tab=0;
private int act_y=0;
private int act_lcd_lines=10;
 
DUBwise root;
 
public String[] lcd_lines;
 
public String[] public_lcd_lines;
public MKParamEditor(DUBwise _root)
{
root=_root;
lcd_lines=new String[40];
// refresh_lcd();
}
/*
public void paint ( Graphics g)
{
refresh_lcd();
canvas.paint_lcd(g,false);
}
*/
public void refresh_lcd()
{
// try
{
 
if (root.mk!=null)
{
act_lcd_lines=root.mk.params.field_names[act_tab].length*2+1;
for ( int i=0;i<act_lcd_lines;i++)
lcd_lines[i]="";
 
 
try
{
 
lcd_lines[0]=(act_tab==0?" ":"< ") + root.mk.params.tab_names[act_tab] + (act_tab==(root.mk.params.tab_names.length-1)?" ":" >");
 
for (int i=0;i<root.mk.params.field_names[act_tab].length;i++)
{
lcd_lines[1+2*i]=root.mk.params.field_names[act_tab][i];
if (root.mk.params.field_types[act_tab][i]== root.mk.params.PARAMTYPE_BITSWITCH)
lcd_lines[2+2*i]=(((root.mk.params.get_field_from_act(root.mk.params.field_positions[act_tab][i]/8)&(1<<root.mk.params.field_positions[act_tab][i]%8))==0)?"off":"on" ) ;
if (root.mk.params.field_types[act_tab][i]== root.mk.params.PARAMTYPE_BYTE)
{
lcd_lines[2+2*i]=""+root.mk.params.get_field_from_act(root.mk.params.field_positions[act_tab][i]);
if ((root.mk.params.get_field_from_act(root.mk.params.field_positions[act_tab][i])>250)&&(root.mk.params.get_field_from_act(root.mk.params.field_positions[act_tab][i])<256))
lcd_lines[2+2*i]+="[Poti"+(root.mk.params.get_field_from_act(root.mk.params.field_positions[act_tab][i])-250) +"]";
}
 
if (root.mk.params.field_types[act_tab][i]== root.mk.params.PARAMTYPE_STICK)
{
lcd_lines[2+2*i]=""+root.mk.params.get_field_from_act(root.mk.params.field_positions[act_tab][i]);
}
 
 
}
for (int i=0;i<act_lcd_lines;i++)
{
lcd_lines[i]=(act_y==i?"#":" ")+lcd_lines[i];
}
 
for ( int i=0;i<act_lcd_lines;i++)
while(lcd_lines[i].length()<20)
{
lcd_lines[i]+=" ";
}
}
catch (Exception e){}
public_lcd_lines=new String[act_lcd_lines];
for(int i=0;i<act_lcd_lines;i++)
public_lcd_lines[i]=lcd_lines[i];
}
else
{
public_lcd_lines=new String[1];
public_lcd_lines[0]="reading params";
}
 
}
// catch (Exception e){}
}
 
 
public final static int KEYCODE_CLEAR=-8;
public boolean editing_number=false;
 
public void keypress (int keyCode,int action)
{
if (act_y==0) switch (action)
{
case KeyEvent.KEYCODE_DPAD_RIGHT:
if (act_tab<root.mk.params.tab_names.length-1) act_tab++;
break;
 
case KeyEvent.KEYCODE_DPAD_LEFT:
if (act_tab!=0) act_tab--;
break;
}
else
{
if(root.mk.params.field_types[act_tab][act_y/2-1]==root.mk.params.PARAMTYPE_BYTE)
{
if ((keyCode >=KeyEvent.KEYCODE_0) && (keyCode <=KeyEvent.KEYCODE_9))
{
if((editing_number)&&( Math.abs(root.mk.params.get_field_from_act(root.mk.params.field_positions[act_tab][act_y/2-1]))*10+(keyCode -KeyEvent.KEYCODE_0)<1000))
root.mk.params.set_field_from_act(root.mk.params.field_positions[act_tab][act_y/2-1] , Math.abs(root.mk.params.get_field_from_act(root.mk.params.field_positions[act_tab][act_y/2-1]))*10+(keyCode -KeyEvent.KEYCODE_0));
else
root.mk.params.set_field_from_act(root.mk.params.field_positions[act_tab][act_y/2-1] , (keyCode -KeyEvent.KEYCODE_0));
editing_number=true;
return;
}
else
if ( keyCode==KEYCODE_CLEAR)
root.mk.params.set_field_from_act(root.mk.params.field_positions[act_tab][act_y/2-1],0);
}
editing_number=false;
switch (action)
{
case KeyEvent.KEYCODE_DPAD_RIGHT:
switch(root.mk.params.field_types[act_tab][act_y/2-1])
{
case PARAMTYPE_BITSWITCH:
root.mk.params.field_from_act_xor((root.mk.params.field_positions[act_tab][act_y/2-1]/8),1<<(root.mk.params.field_positions[act_tab][act_y/2-1]%8));
break;
case PARAMTYPE_BYTE:
case PARAMTYPE_STICK:
root.mk.params.field_from_act_add(root.mk.params.field_positions[act_tab][act_y/2-1],1);
break;
}
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
switch(root.mk.params.field_types[act_tab][act_y/2-1])
{
case PARAMTYPE_BITSWITCH:
root.mk.params.field_from_act_xor((root.mk.params.field_positions[act_tab][act_y/2-1]/8),1<<(root.mk.params.field_positions[act_tab][act_y/2-1]%8));
break;
case PARAMTYPE_BYTE:
case PARAMTYPE_STICK:
root.mk.params.field_from_act_add(root.mk.params.field_positions[act_tab][act_y/2-1],-1);
break;
}
break;
}
}
switch (action)
{
 
case KeyEvent.KEYCODE_DPAD_DOWN:
if (act_y<(act_lcd_lines-2)) act_y+=2;
else act_y=0;
break;
 
case KeyEvent.KEYCODE_DPAD_UP :
if (act_y!=0) act_y-=2;
else act_y=act_lcd_lines-1;
break;
}
 
refresh_lcd();
 
 
}
}