📄 a.java
字号:
// Decompiled by Jad v1.5.7f. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3)
package mobiledict;
import com.siemens.mp.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Vector;
import javax.microedition.lcdui.*;
// Referenced classes of package mobiledict:
// c, d, MobileDict, b,
// e
public class a extends Canvas
implements CommandListener
{
public a()
{
_fldgoto = 0;
l = 0;
_mthint();
_fldint = new Image[13];
try
{
for(int i1 = 1; i1 <= 13; i1++)
_fldint[i1 - 1] = Image.createImage(String.valueOf(String.valueOf((new StringBuffer("/images/")).append(i1).append(".PNG"))));
}
catch(IOException ioexception) { }
}
public void a(int i1, int j1, int k1, int l1, int i2, int j2, int k2,
int l2)
{
s = i1;
p = j1;
g = k1;
_fldbyte = l1;
e = i2;
d = j2;
_fldelse = k2;
n = l2;
}
public void a(Display display, MobileDict mobiledict)
{
h = display;
c = mobiledict;
_fldchar = (new Command[] {
new Command(MobileDict.j._fldtry, 4, 0), new Command(MobileDict.j._fldif, 4, 1), new Command(MobileDict.j._fldint, 4, 2), new Command(MobileDict.j.a, 6, 4), new Command(MobileDict.j._flddo, 4, 3)
});
r = (new Command[] {
new Command(MobileDict.j.n, 4, 0), new Command(MobileDict.j._fldtry, 4, 1), new Command(MobileDict.j._fldint, 4, 3), new Command(MobileDict.j.a, 6, 5), new Command(MobileDict.j.c, 4, 2), new Command(MobileDict.j._flddo, 4, 4)
});
_fldnull = new Command(MobileDict.j._fldchar, 4, 0);
a("");
}
public void a(String s1, int i1)
{
m = s1;
l = i1;
_fldfor = true;
h.setCurrent(this);
}
protected void paint(Graphics g1)
{
k = g1;
if(_fldfor)
{
_fldfor = false;
if(a())
{
c c1 = new c(this, m, o, _flddo, null);
c1._mthdo();
} else
{
d d1 = new d(this);
d1.a(j, _fldgoto);
}
}
}
private void _mthif()
{
h.setCurrent(this);
k.setColor(0xffffff);
k.fillRect(0, 0, 101, 80);
k.setColor(0);
k.drawString(MobileDict.j.g, 50, 34, 17);
}
public void a(String s1)
{
_fldlong = new TextBox(MobileDict.j._fldelse, s1, 100, 0);
for(int i1 = 0; i1 < r.length; i1++)
_fldlong.addCommand(r[i1]);
h.setCurrent(_fldlong);
_fldlong.setCommandListener(this);
}
public void _mthfor()
{
_mthif();
_fldgoto = a(2, b, _fldvoid);
d d1 = new d(this);
d1.a(j, _fldgoto);
}
public void commandAction(Command command, Displayable displayable)
{
if(command == r[0])
a(_fldlong.getString(), 0);
else
if(command == r[1])
a(_fldlong.getString(), 1);
else
if(command == r[4])
_mthdo();
else
if(command == List.SELECT_COMMAND)
{
if(i.size() == 0)
a("", 1);
else
a(i.getString(i.getSelectedIndex()), 0);
} else
if(command == _fldchar[0])
{
if(i.size() == 0)
a("", 1);
else
a(i.getString(i.getSelectedIndex()), 1);
} else
if(command == _fldchar[1])
{
if(MobileDict._fldcase == 0)
a("");
else
a(i.getString(i.getSelectedIndex()));
} else
if(command == r[5] || command == _fldchar[4])
{
Form form = new Form(MobileDict.j._flddo);
form.append(MobileDict.j._fldgoto);
form.addCommand(_fldnull);
h.setCurrent(form);
form.setCommandListener(this);
if(command == r[5])
_fldif = 0;
else
_fldif = 1;
} else
if(command == _fldnull)
{
if(_fldif == 0)
{
h.setCurrent(_fldlong);
_fldlong.setCommandListener(this);
} else
{
h.setCurrent(i);
i.setCommandListener(this);
}
} else
if(command == r[3] || command == _fldchar[3])
c._mthif();
}
public void _mthdo()
{
i = new List(MobileDict.j.c, 3);
for(int i1 = 0; i1 < _fldchar.length; i1++)
i.addCommand(_fldchar[i1]);
for(int j1 = 0; j1 < f.size(); j1++)
i.append((String)f.elementAt(j1), null);
if(i.size() == 0)
i.setTitle(MobileDict.j.p);
h.setCurrent(i);
i.setCommandListener(this);
}
private void _mthint()
{
File file = new File();
try
{
int i1 = file.open("LastTen");
int j1 = file.length(i1);
if(j1 > 0)
{
byte abyte0[] = new byte[j1];
int k1 = -1;
try
{
k1 = file.read(i1, abyte0, 0, j1);
}
catch(IOException ioexception1) { }
int l1 = 0;
for(int i2 = 0; i2 < abyte0.length; i2 += 2)
{
if(abyte0[i2] != 10 || abyte0[i2 + 1] != 0)
continue;
String s1;
if(i2 > 0)
s1 = e.a(abyte0, l1, i2);
else
s1 = "";
l1 = i2 + 2;
f.addElement(s1);
}
}
file.close(i1);
}
catch(IOException ioexception) { }
}
public boolean a(int i1)
{
int j1 = _fldnew != 0 ? n : _fldbyte;
byte byte0;
byte byte1;
byte byte2;
if(i1 == -1)
{
if(q[0][0] <= 0)
return false;
byte0 = 5;
byte1 = 0;
byte2 = 1;
} else
{
if(q[5][0] >= j1 - 1)
return false;
byte0 = 0;
byte1 = 5;
byte2 = 4;
}
for(int k1 = byte0; k1 != byte1; k1 += i1)
{
for(int i2 = 0; i2 < 10; i2++)
{
q[k1][i2] = q[k1 + i1][i2];
_fldtry[k1][i2] = _fldtry[k1 + i1][i2];
}
_fldcase[k1] = _fldcase[k1 + i1];
a[k1] = a[k1 + i1];
j[k1] = j[k1 + i1];
}
_fldcase[byte1] = 0;
a[byte1] = 0;
j[byte1] = "";
if(a[byte2] == 0)
{
q[byte1][0] = q[byte2][0] + i1;
_fldcase[byte1] = 1;
} else
{
for(int l1 = a[byte2]; l1 >= 0; l1--)
{
if(l1 > 0)
{
if((i1 != -1 || q[1][l1] <= 0) && (i1 != 1 || q[4][l1] >= _fldtry[4][l1] - 1))
continue;
_fldcase[byte1] = l1 + 1;
q[byte1][l1] = q[byte2][l1] + i1;
for(int j2 = l1 - 1; j2 >= 0; j2--)
q[byte1][j2] = q[byte2][j2];
break;
}
q[byte1][0] = q[byte2][0] + i1;
_fldcase[byte1] = 1;
}
}
a(2, byte1, ((int []) (null)));
return true;
}
public void a(int i1, d d1)
{
_mthif();
a(1, i1, ((int []) (null)));
c c1 = new c(this, m, o, _flddo, d1);
c1._mthdo();
}
private boolean a()
{
byte abyte0[];
int i1;
int j1;
int k1;
int l1;
File file;
int ai[];
int ai1[];
int i2;
boolean flag;
boolean flag1;
k.drawString(MobileDict.j.r, 50, 34, 17);
m = m.trim();
_fldnew = e._mthdo(m);
if(_fldnew == 0)
{
i1 = s;
j1 = p;
k1 = g;
l1 = _fldbyte;
abyte0 = m.toLowerCase().getBytes();
} else
{
i1 = e;
j1 = d;
k1 = _fldelse;
l1 = n;
abyte0 = e._mthif(m);
}
file = new File();
ai = new int[10];
ai1 = new int[10];
i2 = 0;
flag = true;
flag1 = true;
int j2;
byte abyte1[];
int i4;
int l4;
int i5;
byte byte0;
int j5;
int k5;
if(_fldnew == 0)
j2 = file.open("dict");
else
j2 = file.open("cdict");
abyte1 = new byte[k1];
i4 = 0;
l4 = 0;
i5 = 0;
byte0 = 3;
j5 = 0;
k5 = 0;
_L9:
if(!flag1) goto _L2; else goto _L1
_L1:
int k3 = 0;
if(j5 <= 0) goto _L4; else goto _L3
_L3:
if(abyte1[j5] != 0) goto _L5; else goto _L2
_L5:
int l3;
abyte0 = (new String(abyte0, j5, abyte0.length - j5)).getBytes();
if(_fldnew == 1)
j5++;
byte0 = abyte1[j5];
if(byte0 == 3)
{
k5 = abyte1[j5 + 1];
if(k5 < 0)
k5 += 256;
int j3 = abyte1[j5 + 2];
if(j3 < 0)
j3 += 256;
k5 += j3 * 256;
j3 = abyte1[j5 + 3] & 0xf;
k5 += j3 * 0x10000;
} else
{
l4 = i5;
k5 = abyte1[j5 + 1] & 0xf;
}
l3 = abyte1[k1 - 1];
if(l3 < 0)
l3 += 256;
l3 >>= 4;
goto _L6
_L4:
l3 = l1 - 1;
_L6:
do
{
i4 = (k3 + l3) / 2;
if(j5 == 0)
i5 = i1 + i4 * k1;
else
if(byte0 == 3)
i5 = j1 + (k5 + i4) * k1;
else
i5 = l4 + (k5 + i4) * k1;
file.seek(j2, i5);
file.read(j2, abyte1, 0, k1);
int i3;
if(_fldnew == 0)
for(i3 = 0; i3 < k1 && (abyte1[i3] >= 16 || abyte1[i3] < 0); i3++);
else
for(i3 = 0; i3 < k1 && (abyte1[i3] != 0 || abyte1[i3 + 1] >= 16 || abyte1[i3 + 1] < 0); i3 += 2);
j5 = i3;
byte abyte2[] = new byte[j5];
for(int k2 = 0; k2 < j5; k2++)
abyte2[k2] = abyte1[k2];
if(_fldnew == 0)
{
String s1 = new String(abyte2);
s1.trim();
s1 = s1.toLowerCase();
abyte2 = s1.getBytes();
}
int l5 = abyte0.length;
int k4;
if(l5 < j5)
k4 = l5;
else
k4 = j5;
int j4 = a(abyte0, abyte2, k4);
if(j4 == 0)
if(l5 < j5)
j4 = -1;
else
if(l5 > j5)
if(_fldnew == 0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -