This commit is contained in:
Victor 2018-11-14 19:47:10 +02:00
parent 482c687d65
commit 3757996224
19 changed files with 532 additions and 77 deletions

View File

Before

Width:  |  Height:  |  Size: 588 B

After

Width:  |  Height:  |  Size: 588 B

BIN
res/img/folder.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 565 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 764 B

After

Width:  |  Height:  |  Size: 341 B

BIN
res/img/key.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
res/img/midifile.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 B

View File

Before

Width:  |  Height:  |  Size: 543 B

After

Width:  |  Height:  |  Size: 543 B

BIN
res/img/ua.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 B

206
res/lang/instr_ua.loc Normal file
View File

@ -0,0 +1,206 @@
Ударні
Рояль
Концертний (освітлений) рояль
Електронний рояль
Засмучене (таперське) піаніно
Електропіано
Електропіано 2
Клавесин
Клавінета (клавесин 2)
Челеста
Дзвіночки (пляшки)
Музична скринька
Вібрафон
Марімба
Ксилофон
Дзвони (трубчасті)
Цимбали (сантур)
Електронний орган
Орган з перкусією (з ударною атакою)
Рок-орган
Церковний орган
Дерев'яний (язичковий) органчик
Акордеон
Гармоніка
'Танго'-акордеон
Гітара-нейлон
Гітара-сталь
Джазова електрогітара
Акустична електрогітара
Приглушена електрогітара
Овердрайв (перевантаження)
Дісторшн (спотворення)
Флажолет
Контрабас-піцікато
Бас-гітара пальцевим щипком
Бас-гітара медіатором
Бездадовий бас
Бас-слеп 1
Бас-слеп 2
Сінт-бас 1
Сінт-бас 2
Скрипка
Альт
Віолончель
Контрабас
Тремоло струнних
Піцікато струнних
Арфа
Литаври
Струнна група 1
Струнна група 2
Синтетичні струнні 1
Синтетичні струнні 2
Хор на склад 'а'
Голос на склад 'про'
Синтетичний голос
Удар (весь оркестр)
Труба
Тромбон
Туба
Труба з сурдини
Валторна
Мідна група
Синтетичні мідні 1
Синтетичні мідні 2
Сопрано-саксофон
Альт-саксофон
Тенор-саксофон
Баритон-саксофон
Гобой
Англійський ріжок
Фагот
Кларнет
Флейта-пікколо
Флейта
Блокфлейта
Пан-флейта
Подув в пляшки
Шакухачі
Свисток
Окарина
Соло-гітара (прямокутна хвиля)
Соло-гітара (синусоїдальна хвиля)
Calliope-гітара
Chiff-гітара
Charang-гітара
Соло-гітара (голосовий тембр)
Соло-гітара (з квінтове обертоном)
Бас і соло-гітара
Синтезаторний звук нью-ейдж
Теплий синт-звук
Полісінтезатор
Сінт-хор
Повітряний (смичковий синт-звук)
Металевий синт
Ореол
Розгортається (хитний) звук
Дощ
Звукова доріжка
Кришталь (кристал)
Атмосфера
Яскравість
Гобліни
(Качаюче) відлуння
Зірковий (scifi)
Ситар
Банджо
Шаміса
Кото
Калімбей
Волинка (bagpipe)
Вулична скрипка
Санаї (shanai)
Дзвіночок
Агого
Сталеві барабани
Гольцтон (дерев'яні коробочки)
Таіко
Мелодік том
Електронні барабани
Тарілка 'задом наперед' (реверс)
Свист гітарної струни (шум ладів)
Придих
Прибій
Птахи
Телефонний дзвінок
Вертоліт
Алодісменти
Постріл
Фортепіано
Хроматіккаа і перкусія
Орган
Гітара
Бас
Акорди і оркестрові
Ансамбль
Мідні
Очерет
Труба
Ведучий синтезатор
Сітезатор 2-й голос
Сінт-ефекти
Народні
Перкусія
Звукові ефекти
Висока q
Слеп
Дряпання (від себе)
Дряпання (до себе)
Барабанні палички
Електронний метроном
Метроном
Дзвінкий метроном
Акустичний великий барабан
Великий барабан
Удар по ободу
Акустичний малий барабан
Бавовна в долоні
Електричний малий барабан
Низький підлоговий томтом
Закритий хет
Високий підлоговий томтом
Хет (педаллю)
Низький томтом
Відкритий хет
Низький середній томтом
Високий середній томтом
Креш-тарілка
Високий томтом
Райд-тарілка
Китайська тарілка
Райд-тарілка (по центральній частині)
Бубон
Сплеш-тарілка
Коровій (альпійський) дзвіночок
Креш-тарілка 2
Вібруючий слеп
Райд-тарілка 2
Високий бонго
Низький бонго
Закритий високий бонго
Відкритий високий бонго
Низька конга
Високий тімбал
Низький тімбал
Високий агого
Низький агого
Cabasa кабас
Маракас
Короткий свисток
Довгий свисток
Коротке гуїро
Довге гуїро
Клавес
Висока коробочка
Низька коробочка
Закрита куіка
Відкрита куіка
Закритий трикутник
Відкритий трикутник
Шейкер
Бубонці
Бунчук
Кастаньєти
Закритий сурдо
Відкритий сурдо

View File

@ -3,7 +3,7 @@ package main;
import javax.microedition.lcdui.*;
/**
* Класс параметров
* Êëàññ ïàðàìåòðîâ è êîíñòàíò
* @author aNNiMON
*/
public class P {
@ -17,6 +17,16 @@ public class P {
/** Æèðíûé ñðåäíèé øðèôò */
public static final Font medBold = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_MEDIUM);
/** Çíà÷îê íà ôîíå */
public static Image bgKey;
static {
try {
bgKey = Image.createImage("/img/key.png");
} catch (java.io.IOException ex) {
bgKey = Image.createImage(1, 1);
}
}
/** Êîìàíäà îòìåíû */
public static Command comCancel;

View File

@ -12,6 +12,7 @@ MIDedit 2.1 / 3.0
- Исправил ошибку, при которой после длительной работы в редакторе могли появляться глюки с отрисовкой экрана.
- Исправил ошибку с некорректной скоростью прокрутки курсора при воспроизведении, если был изменен размер ячейки ноты в настройках.
- Кое-где подправил и оптимизировал код, добавил описания.
- Другие мелкие исправления.
********
Добавить украинский язык.

View File

@ -7,6 +7,7 @@ import javax.microedition.lcdui.*;
import main.L;
import main.P;
import main.Main;
import ui.Instruments;
import ui.WaitCanvas;
/**
@ -14,20 +15,8 @@ import ui.WaitCanvas;
* @author user
* @author aNNiMON (ìîä)
*/
public class CompositionForm extends Form implements CommandListener, Runnable, ItemCommandListener {
public class CompositionForm extends Form implements CommandListener, Runnable {
/**
* Êîëè÷åñòâî ãðóïï èñíòðóìåíòîâ.
* Èñïîëüçóåòñÿ â ôîðìå âûáîðà ïðè äîáàâëåíèè/çàìåíå èíñòðóìåíòà
*/
private static final int GROUPS_OF_INSTRUMENTS = 16;
/**
* Êîëè÷åñòâî èíñòðóìåíòîâ íà ãðóïïó.
* Èñïîëüçóåòñÿ â ôîðìå âûáîðà ïðè äîáàâëåíèè/çàìåíå èíñòðóìåíòà
*/
private static final int INSTRUMENTS_IN_GROUP = 8;
/** Ìàêñèìàëüíîå êîëè÷åñòâî øàãîâ ïðîïóñêà */
private static final byte SEEK_GAUGE_MAX = 10;
@ -37,11 +26,11 @@ public class CompositionForm extends Form implements CommandListener, Runnable,
/**
* Ôîðìà âûáîðà èíñòðóìåíòîâ
* Ýêðàí âûáîðà èíñòðóìåíòîâ
* Èñïîëüçóåòñÿ ïðè äîáàâëåíèè/çàìåíå èíñòðóìåíòà.
* Ñòàòè÷åñêàÿ ïåðåìåííàÿ âçÿòà äëÿ îïòèìèçàöèè, ÷òîáû êàæäûé ðàç íå ãåíåðèðîâàòü.
*/
private static Form listInstrumentsForm;
private static Canvas listInstrumentsCanvas;
/** Ýêçìåïëÿð ìèäëåòà */
private Main control;
@ -92,7 +81,7 @@ public class CompositionForm extends Form implements CommandListener, Runnable,
private Command temp = new Command(L.str[L.tempoBox], Command.ITEM, 5);
private Command volume = new Command(L.str[L.volume], Command.ITEM, 6);
private Command meter = new Command(L.str[L.meter], Command.ITEM, 7);
/**
* Êîíñòðóêòîð
* @param control ýêçìåïëÿð ãëàâíîãî êëàññà
@ -232,24 +221,18 @@ public class CompositionForm extends Form implements CommandListener, Runnable,
return chans;
}
/**
*
* @param c
* @param i
* @param play âûáðàíà êîìàíäà ïðîèãðûâàòü èëè ok
* @param instrName
*/
public void commandAction(Command c, Item i) {
String instrName;
public void selectInstrument(boolean play, String instrName) {
int instrumNum;
model.stopPlay();
if (i instanceof StringItem) {
instrName = Constants.getInstrName(0);
instrumNum = 0;
}
else {
instrName = ((ChoiceGroup) i).getString(((ChoiceGroup) i).getSelectedIndex());
instrumNum = Constants.instrVectorArr.indexOf(instrName)+1;
}
if (c == play) {
if(instrName.equals(Constants.getInstrName(0))) instrumNum = -1;
else instrumNum = Constants.instrVectorArr.indexOf(instrName);
if (play) {
int channel = -1;
int lengthOfChannel = 0;
try {
@ -260,25 +243,26 @@ public class CompositionForm extends Form implements CommandListener, Runnable,
}
if (channel == Constants.DRUMS_CHANNEL || isAdd || lengthOfChannel < 3) {
try {
model.playTest((byte) (instrumNum - 1));
model.playTest((byte) instrumNum);
} catch (Exception e) {
e.printStackTrace();
}
} else {
try {
model.playTrack(composition, channel, instrumNum - 1);
model.playTrack(composition, channel, instrumNum);
} catch (Exception e) {
e.printStackTrace();
try {
model.playTest((byte) (instrumNum - 1));
model.playTest((byte) instrumNum);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
} else if (c == ok) {
} else {
// ok
if (isAdd) {
byte channel = composition.addInstrument(instrumNum - 1);
byte channel = composition.addInstrument(instrumNum);
if (channel != -1) {
choiñeInstrument.appendChannel(instrName, channel);
} else {
@ -294,7 +278,7 @@ public class CompositionForm extends Form implements CommandListener, Runnable,
int channel = choiñeInstrument.getSelectedChannel();
if (channel != -1 && channel != Constants.DRUMS_CHANNEL) {
choiñeInstrument.setChannel(choiñeInstrument.getSelectedIndex(), instrName, (byte) channel);
composition.setInstrument(channel, instrumNum - 1);
composition.setInstrument(channel, instrumNum);
}
} catch (IllegalAccessException ex) {
ex.printStackTrace();
@ -479,28 +463,11 @@ public class CompositionForm extends Form implements CommandListener, Runnable,
}
private Form getListOfInstruments() {
if (listInstrumentsForm == null) {
ChoiceGroup[] groupsChoiseGroup = new ChoiceGroup[GROUPS_OF_INSTRUMENTS];
for (int i = 0; i < GROUPS_OF_INSTRUMENTS; i++) {
String[] listOfElements = new String[INSTRUMENTS_IN_GROUP];
System.arraycopy(L.instr, i*INSTRUMENTS_IN_GROUP+1, listOfElements,0, INSTRUMENTS_IN_GROUP);
groupsChoiseGroup[i] = new ChoiceGroup(Constants.getInstrName(129 + i), ChoiceGroup.POPUP, listOfElements, null);
groupsChoiseGroup[i].addCommand(play);
groupsChoiseGroup[i].addCommand(ok);
groupsChoiseGroup[i].setItemCommandListener(this);
}
listInstrumentsForm = new Form(L.str[L.instruments], groupsChoiseGroup);
Item drums = new StringItem(Constants.getInstrName(0), null);
drums.addCommand(ok);
drums.setItemCommandListener(this);
listInstrumentsForm.append(drums);
listInstrumentsForm.addCommand(P.comCancel);
listInstrumentsForm.setCommandListener(this);
private Canvas getListOfInstruments() {
if (listInstrumentsCanvas == null) {
listInstrumentsCanvas = new Instruments();
}
return listInstrumentsForm;
return listInstrumentsCanvas;
}

View File

@ -1234,7 +1234,7 @@ public abstract class MixerCanvas extends Canvas implements Runnable {
m1 = 2;
g.setFont(P.smPlain);
g.drawString(getNoteFromLine(curY) + " " + Constants.getInstrName(getNoteFromLine(curY) - DrumsCanvas.drumsShift + 145),
m1, yIndent + 3, Graphics.BOTTOM | Graphics.LEFT);
m1, yIndent + 5, Graphics.BOTTOM | Graphics.LEFT);
}
break;

View File

@ -45,7 +45,7 @@ public class JSR75File extends AbstractFile {
break;
}
}
//vector.addElement(s1);
// vector.addElement(s1);
}
if (currDir != null) currDir.close();
} catch (IOException ion) {

View File

@ -51,7 +51,7 @@ public class FileManager extends Canvas {
private PreviewPlayer pw;
/** Èçîáðàæåíèÿ è èêîíêè ãðóïï ôàéëîâ */
//private Image folderIcon, imageIcon, fileIcon, fontIcon, videoIcon;
private Image folderIcon, midiIcon;
/** Ñïèñîê ôàéëîâ è ïàïîê */
private String[] data;
@ -180,6 +180,7 @@ public class FileManager extends Canvas {
protected void paint(Graphics g) {
g.setColor(P.backgrnd);
g.fillRect(0, 0, w, h);
g.drawImage(P.bgKey, w, h - UI.getSoftBarHeight() - 2, Graphics.RIGHT | Graphics.BOTTOM);
drawFiles(g);
if (showMenu) {
drawMenu(g);
@ -204,10 +205,9 @@ public class FileManager extends Canvas {
g.setFont(P.smBold);
for (int i = startPrintFile; i < numFiles; i++) {
// Èêîíêà òèïà ôàéëà
/*Image tmp = fileIcon;
Image tmp = midiIcon;
if (data[i].indexOf("/") != -1) tmp = folderIcon;
else if (getType(TypeMid, data[i])) tmp = imageIcon;
g.drawImage(tmp, 1, FileY + SH_HEIGHT + 1, 0);*/
g.drawImage(tmp, 1, FileY + SH_HEIGHT + 1, 0);
// Òåêñò
int col = P.fmtextnc;
if (FileY == CursorY) col = P.fmtextcur;
@ -348,15 +348,10 @@ public class FileManager extends Canvas {
/** Çàãðóçêà èçîáðàæåíèé */
private void loadImages() {
/*Image allimg = new GetImage().loadImages(0);//icons
try {
imageIcon = Image.createImage(allimg, 0, 0, 16, 15, 0);
folderIcon = Image.createImage(allimg, 16, 0, 14, 15, 0);
fileIcon = Image.createImage(allimg, 30, 0, 13, 15, 0);
videoIcon = Image.createImage(allimg, 43, 0, 13, 15, 0);
fontIcon = Image.createImage(allimg, 57, 0, 13, 15, 0);
} catch (Exception ioe) {
}*/
folderIcon = Image.createImage("/img/folder.png");
midiIcon = Image.createImage("/img/midifile.png");
} catch (Exception ioe) {}
}
/**

245
src/ui/Instruments.java Normal file
View File

@ -0,0 +1,245 @@
package ui;
import main.P;
import main.Main;
import main.Key;
import main.L;
import javax.microedition.lcdui.*;
import midedit.Constants;
/**
* Ńďčńîę číńňđóěĺíňîâ â ďđîăđŕěěĺ
* @author aNNiMON
*/
public class Instruments extends Canvas {
/**
* Ęîëč÷ĺńňâî ăđóďď číńňđóěĺíňîâ.
* Čńďîëüçóĺňń˙ â ôîđěĺ âűáîđŕ ďđč äîáŕâëĺíčč/çŕěĺíĺ číńňđóěĺíňŕ
*/
private static final int GROUPS_OF_INSTRUMENTS = 16;
/**
* Ęîëč÷ĺńňâî číńňđóěĺíňîâ íŕ ăđóďďó.
* Čńďîëüçóĺňń˙ â ôîđěĺ âűáîđŕ ďđč äîáŕâëĺíčč/çŕěĺíĺ číńňđóěĺíňŕ
*/
private static final int INSTRUMENTS_IN_GROUP = 8;
/** Đĺćčě ďîęŕçŕ ăđóďď číńňđóěĺíňîâ */
private static final byte MENU_MODE = 0;
/** Đŕçěĺđ ýęđŕíŕ */
private int w, h;
/** Çŕăîëîâîę */
private String title;
/** Ěĺíţ */
private String[] menu;
/** Âűäĺëĺííűé ďóíęň ěĺíţ */
private int cu = 0;
/** Đĺćčě (ěĺíţ, číńňđóěĺíňű) */
private byte mode;
private int iconsSize = 2;
private int FileY, CursorY, stFh, startPrintFile;
private int FILE_HEIGHT;
/** Âđĺě˙ äë˙ double-ęëčęŕ â touchscreen */
private long time;
/**
* Ńîçäŕňü ěĺíţ ń ňčďîě mode
*/
public Instruments() {
setFullScreenMode(true);
w = getWidth();
h = getHeight();
mode = MENU_MODE;
FILE_HEIGHT = P.medPlain.getHeight() + 2;
stFh = P.medPlain.getHeight() + P.medPlain.getHeight() / 2;
cu = CursorY = FileY = startPrintFile = 0;
updateItems();
}
private void updateItems() {
cu = CursorY = FileY = startPrintFile = 0;
if(mode == MENU_MODE) {
title = L.str[L.instruments];
menu = new String[GROUPS_OF_INSTRUMENTS + 1];
for (int i = 0; i < menu.length; i++) {
menu[i] = Constants.getInstrName(129 + i);
}
// Óäŕđíűĺ
menu[menu.length - 1] = Constants.getInstrName(0);
} else {
menu = new String[INSTRUMENTS_IN_GROUP];
System.arraycopy(L.instr, mode*INSTRUMENTS_IN_GROUP+1, menu, 0, INSTRUMENTS_IN_GROUP);
}
repaint();
}
protected void sizeChanged(int w, int h) {
this.w = getWidth();
this.h = getHeight();
super.sizeChanged(w, h);
}
protected void paint(Graphics g) {
// Î÷čńňęŕ ýęđŕíŕ
g.setColor(P.backgrnd);
g.fillRect(0, 0, w, h);
g.drawImage(P.bgKey, w, h - UI.getSoftBarHeight() - 2, Graphics.RIGHT | Graphics.BOTTOM);
UI.drawTitle(g, title);
if(mode == MENU_MODE) {
UI.drawSoftBar(g, "", L.str[L.cancel]);
} else {
UI.drawSoftBar(g, L.str[L.play], L.str[L.back]);
}
g.setFont(P.medBold);
g.setColor(P.fmback1);
g.translate(0, stFh);
// Ęóđńîđ
g.setColor(P.obv);
g.fillRect(-1, CursorY, w, FILE_HEIGHT-1);
g.setColor(P.fmbord);
g.drawRect(-1, CursorY-1, w, FILE_HEIGHT);
FileY = 0;
// Âűâîäčě ďóíęňű ěĺíţ
for (int i = startPrintFile; i < menu.length; i++) {
g.setColor(P.fmtextnc);
final String s = menu[i];
if (FileY == CursorY) {
g.setColor(P.fmbord);
g.drawString(s, iconsSize + 4, FileY + iconsSize / 4, Graphics.TOP | Graphics.LEFT);
g.setColor(P.fmtextcur);
}
// g.drawImage(icons[id], iconsSize + 2, FileY + 1, 24);
// Íŕçâŕíčĺ ďóíęňŕ
g.drawString(s, iconsSize + 3, FileY + iconsSize / 4, Graphics.TOP | Graphics.LEFT);
FileY += FILE_HEIGHT;
if(FileY > (h - (stFh*2) - FILE_HEIGHT)) break;
}
g.setColor(0x00);
g.fillRect(-1, FileY+1, w+1, 2);
g.fillRect(-1, -2, w+1, 2);
g.translate(0, -stFh);
}
/**
* Îáđŕáîňęŕ âűáđŕííűő ďóíęňîâ
* @param play âîńďđîčçâîäčňü čëč âűáđŕňü číńňđóěĺíň
* @param selected ID âűáđŕííîăî ďóíęňŕ ěĺíţ
*/
private void selectItem(boolean play, int selected) {
final String v = menu[selected];
if(mode == MENU_MODE) {
if(selected == menu.length - 1) {
// Óäŕđíűĺ
Main.midlet.compositionForm.selectInstrument(false, v);
} else {
mode = (byte) selected;
title = v;
updateItems();
}
} else {
Main.midlet.compositionForm.selectInstrument(play, v);
}
}
protected void keyPressed (int key) {
int ga = getGameAction(key);
if(ga==UP || ga==LEFT) {cursorUp();}
else if(ga==DOWN || ga==RIGHT) {cursorDown();}
else if (ga==FIRE) selectItem(false, cu);
else if (key==Key.leftSoftKey) selectItem(true, cu);
else if (key==Key.rightSoftKey) rightSoft();
repaint();
}
protected void keyRepeated (int key) {
keyPressed(key);
}
private void rightSoft() {
if(mode == MENU_MODE) {
Main.dsp.setCurrent(Main.midlet.compositionForm);
} else {
mode = MENU_MODE;
}
updateItems();
}
private void cursorDown() {
if (menu.length > 0) {
final int maxHeight = h - 2 * stFh;
if (cu == menu.length - 1) {
CursorY = 0;
cu = 0;
startPrintFile = 0;
} else if (cu > (maxHeight / FILE_HEIGHT - 3) ) {
if (CursorY >= (maxHeight - 2 * FILE_HEIGHT)) {
startPrintFile++;
cu++;
} else {
cu++;
CursorY += FILE_HEIGHT;
}
} else {
CursorY += FILE_HEIGHT;
cu++;
}
}
}
private void cursorUp() {
if (menu.length > 0) {
if (cu == 0) {
cu = menu.length - 1;
final int maxHeight = h - 2 * stFh;
if (menu.length > ( (maxHeight - FILE_HEIGHT) / FILE_HEIGHT)) {
startPrintFile = (menu.length - ( maxHeight / FILE_HEIGHT));
CursorY = (cu - startPrintFile) * FILE_HEIGHT;
} else {
CursorY = cu * FILE_HEIGHT;
}
} else if ((CursorY == 0) && (cu > 0)) {
startPrintFile--;
cu--;
} else if (CursorY > 0) {
CursorY -= FILE_HEIGHT;
cu--;
}
}
}
protected void pointerPressed(int pix, int piy) {
int q = UI.getSoftBarHeight();
if(pix<2*q && piy>h-q) selectItem(true, cu);
else if(pix>w-2*q && piy>h-q) rightSoft();
else {
int cu1 = cu;
piy -= 2*P.medPlain.getHeight();
if(piy>0 && piy<menu.length*FILE_HEIGHT) {
cu = piy/FILE_HEIGHT;
CursorY = cu * FILE_HEIGHT;
}
if(System.currentTimeMillis()-time<700 && cu1==cu) selectItem(false, cu);
time = System.currentTimeMillis();
}
repaint();
}
}

View File

@ -98,6 +98,8 @@ public class Menu extends Canvas {
g.setColor(P.backgrnd);
g.fillRect(0, 0, w, h);
g.drawImage(P.bgKey, w, h - UI.getSoftBarHeight() - 2, Graphics.RIGHT | Graphics.BOTTOM);
String title = L.str[L.midedit] + ". "+Key.Platform;
UI.drawTitle(g, title);
UI.drawSoftBar(g, L.str[L.ok], L.str[L.exit]);

View File

@ -1,5 +1,6 @@
package ui;
import java.io.IOException;
import javax.microedition.lcdui.*;
import main.*;
@ -9,8 +10,7 @@ import main.*;
*/
public class SettingsForm extends Form implements CommandListener {
private static final String[] langAppList = {"English", "Ðóññêèé", "Óêðà¿íñüêà"};
private static final String[] langInstrList = {"English", "Ðóññêèé"};
private static final String[] langList = {"English", "Ðóññêèé", "Óêðà¿íñüêà"};
private static final String[] langChars = {"en", "ru", "ua"};
private Displayable previousScreen;
@ -44,8 +44,9 @@ public class SettingsForm extends Form implements CommandListener {
back = new Command(L.str[L.back], Command.BACK, 3);
// ßçûê
langChoice = new ChoiceGroup(L.str[L.language], ChoiceGroup.EXCLUSIVE, langAppList, null);
langInstr = new ChoiceGroup(L.str[L.instrlang], ChoiceGroup.EXCLUSIVE, langInstrList, null);
Image[] icons = createImages(langChars);
langChoice = new ChoiceGroup(L.str[L.language], ChoiceGroup.EXCLUSIVE, langList, icons);
langInstr = new ChoiceGroup(L.str[L.instrlang], ChoiceGroup.EXCLUSIVE, langList, icons);
// Íàñòðîéêè ðàçìåðà íîò
noteWidthGauge = new Gauge(L.str[L.noteWidth], true, 10, Rms.noteWidth);
@ -69,7 +70,7 @@ public class SettingsForm extends Form implements CommandListener {
}
}
// Íàñòðîéêè óïðàâëåíèÿ
controlChoice.append(L.str[L.numkeysOptionString], null);
controlChoice.append(L.str[L.numkeysOptionString], createImage("keypad"));
controlChoice.setSelectedIndex(0, Rms.numKeysEdit);
}
@ -90,4 +91,30 @@ public class SettingsForm extends Form implements CommandListener {
Main.dsp.setCurrent(previousScreen);
}
}
/**
* Ïîëó÷èòü èêîíêè ôëàãîâ ñòðàí
* @param lang ÿçûê
* @return ìàññèâ èêîíîê
*/
private Image[] createImages(String[] lang) {
Image[] icons = new Image[lang.length];
for (int i = 0; i < icons.length; i++) {
icons[i] = createImage(lang[i]);
}
return icons;
}
/**
* Ïîëó÷èòü èêîíêó ïî óêàçàííîìó ïóòè
* @param path ïóòü
* @return êàðòèíêà
*/
private Image createImage(String path) {
try {
return Image.createImage("/img/"+path+".png");
} catch (IOException ex) {
return null;
}
}
}

View File

@ -89,6 +89,7 @@ public class TextView extends Canvas {
protected void paint(Graphics g) {
g.setColor(P.backgrnd);
g.fillRect(0, 0, w, h);
g.drawImage(P.bgKey, w, h - UI.getSoftBarHeight() - 2, Graphics.RIGHT | Graphics.BOTTOM);
UI.drawTitle(g, title);
g.setColor(P.fmtextnc);
g.setFont(defaultFont);

View File

@ -4,6 +4,7 @@
*/
package ui;
import java.io.IOException;
import javax.microedition.lcdui.*;
import main.Key;
import main.L;
@ -40,7 +41,6 @@ public class WaitCanvas extends Canvas implements Runnable {
/** Ňĺęóůĺĺ ńîńňî˙íčĺ (â ďđîöĺíňŕő) */
private int curPercent;
/**
* Ęîíńňđóęňîđ
* @param title çŕăîëîâîę îďĺđŕöčč
@ -61,6 +61,7 @@ public class WaitCanvas extends Canvas implements Runnable {
public void paint(Graphics g) {
g.setColor(P.backgrnd);
g.fillRect(0, 0, w, h);
g.drawImage(P.bgKey, w, h - UI.getSoftBarHeight() - 2, Graphics.RIGHT | Graphics.BOTTOM);
UI.drawTitle(g, title);
UI.drawSoftBar(g, "", L.str[L.cancel]);