From 3757996224a03004a4713d85bed08921c05b21e8 Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 14 Nov 2018 19:47:10 +0200 Subject: [PATCH] 07 --- res/img/{en_GB.png => en.png} | Bin res/img/folder.png | Bin 0 -> 565 bytes res/img/icon.png | Bin 764 -> 341 bytes res/img/key.png | Bin 0 -> 2549 bytes res/img/midifile.png | Bin 0 -> 652 bytes res/img/{ru_RU.png => ru.png} | Bin res/img/ua.png | Bin 0 -> 90 bytes res/lang/instr_ua.loc | 206 ++++++++++++++++++++++++++ src/main/P.java | 12 +- src/main/text.txt | 1 + src/midedit/CompositionForm.java | 79 +++------- src/midedit/MixerCanvas.java | 2 +- src/midedit/io/JSR75File.java | 2 +- src/ui/FileManager.java | 19 +-- src/ui/Instruments.java | 245 +++++++++++++++++++++++++++++++ src/ui/Menu.java | 2 + src/ui/SettingsForm.java | 37 ++++- src/ui/TextView.java | 1 + src/ui/WaitCanvas.java | 3 +- 19 files changed, 532 insertions(+), 77 deletions(-) rename res/img/{en_GB.png => en.png} (100%) create mode 100644 res/img/folder.png create mode 100644 res/img/key.png create mode 100644 res/img/midifile.png rename res/img/{ru_RU.png => ru.png} (100%) create mode 100644 res/img/ua.png create mode 100644 res/lang/instr_ua.loc create mode 100644 src/ui/Instruments.java diff --git a/res/img/en_GB.png b/res/img/en.png similarity index 100% rename from res/img/en_GB.png rename to res/img/en.png diff --git a/res/img/folder.png b/res/img/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..63e567565d960af7d2d69c2d6ec491491787702c GIT binary patch literal 565 zcmV-50?Pe~P)Y1$;s_sxuplh~rOd52+Uc%KGr!!Vx-k>AqJ*KLW!0b>JSZy=K0!vq(I&aEwYv%K6ty}Ps}K+XW`g6mcv)~qRf(F2nm{1n&e;$N0Ht@p z+)zy~51~IhCx2Y66Gg|E?E+z-T;V zFdR^+Rxu!{aS|iJrwmRBDhNRYbwf$0I!Q}g=5{@ZIWh$lFa4Fnj=GU75;c-kIrx2e zKleNEK|%4kBQJ&sIT;^2b;+g z?v9&JFIDDdhD|kTI(@?W)0cPbh!vk?H}!;YIO?(SapQ5Pvv{pmEp8tljg~Y_{{PzA zll7}U%2o%%-mU()*L?N*Mf~voOYQBOcNg08b65TVLIF;sWWiQW00000NkvXXu0mjf DWiASh literal 0 HcmV?d00001 diff --git a/res/img/icon.png b/res/img/icon.png index 8b2695eae6f8cb1bfafbd1f65cf213008d0a40aa..cb200364a48226347fb8a66ef1b9cfdd198e3bc4 100644 GIT binary patch literal 341 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 LNkvXXu0mjf)V8mP literal 0 HcmV?d00001 diff --git a/res/img/midifile.png b/res/img/midifile.png new file mode 100644 index 0000000000000000000000000000000000000000..02b45768f7e5f34ddf612c3f6b7e69fd72f27760 GIT binary patch literal 652 zcmV;70(1R|P)p zOKTKS5QV>cyXVytHI0Eh%$O*mCZI_WbsOMp*qQX`^VR^aCsgWLLf0Svd&=D2Gd@lDWR8d5v zy^o?c#HdiKZqwa$h@MhJqh{!gV@wP?$yQ)dZObz$#DjwKjwp(lemRTi9wMLuMgu}s zP*D_ZR|Aj+>MUPBuYnKfABr&|2*;-%`cL= zLp4|L=a6uVCm~SNG>1J ztU1OnpWx(h7jtu~EX{2qBB&}BG2lSGB2I|o0z+fnV1m~NmSJZ=5P35JG zpw@78VwloEj`{gjRw|o}p6{k~{4oDMdfz=`43OsaTEe@xD~t>sqyMO5^xPnstU;Zk zw3!srC-sW>1m7|=wp%PNRWQbrG(Ed6H(GMr)Ur?C}@MNqF_qKdI0F0000=b|^?$vBGK1$m&MTRlx9I_;7(8A5T-G@yGywpLc^FOr literal 0 HcmV?d00001 diff --git a/res/lang/instr_ua.loc b/res/lang/instr_ua.loc new file mode 100644 index 0000000..42bb9f8 --- /dev/null +++ b/res/lang/instr_ua.loc @@ -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 кабас +Маракас +Короткий свисток +Довгий свисток +Коротке гуїро +Довге гуїро +Клавес +Висока коробочка +Низька коробочка +Закрита куіка +Відкрита куіка +Закритий трикутник +Відкритий трикутник +Шейкер +Бубонці +Бунчук +Кастаньєти +Закритий сурдо +Відкритий сурдо \ No newline at end of file diff --git a/src/main/P.java b/src/main/P.java index f95955c..8896f02 100644 --- a/src/main/P.java +++ b/src/main/P.java @@ -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; diff --git a/src/main/text.txt b/src/main/text.txt index 180109d..c75e3e0 100644 --- a/src/main/text.txt +++ b/src/main/text.txt @@ -12,6 +12,7 @@ MIDedit 2.1 / 3.0 - , . - , . - - , . + - . ******** . diff --git a/src/midedit/CompositionForm.java b/src/midedit/CompositionForm.java index bb14ccc..0a51afc 100644 --- a/src/midedit/CompositionForm.java +++ b/src/midedit/CompositionForm.java @@ -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) { choieInstrument.appendChannel(instrName, channel); } else { @@ -294,7 +278,7 @@ public class CompositionForm extends Form implements CommandListener, Runnable, int channel = choieInstrument.getSelectedChannel(); if (channel != -1 && channel != Constants.DRUMS_CHANNEL) { choieInstrument.setChannel(choieInstrument.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; } diff --git a/src/midedit/MixerCanvas.java b/src/midedit/MixerCanvas.java index 69d0d2d..c6a16a4 100644 --- a/src/midedit/MixerCanvas.java +++ b/src/midedit/MixerCanvas.java @@ -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; diff --git a/src/midedit/io/JSR75File.java b/src/midedit/io/JSR75File.java index aae3f56..d3711e5 100644 --- a/src/midedit/io/JSR75File.java +++ b/src/midedit/io/JSR75File.java @@ -45,7 +45,7 @@ public class JSR75File extends AbstractFile { break; } } - //vector.addElement(s1); + // vector.addElement(s1); } if (currDir != null) currDir.close(); } catch (IOException ion) { diff --git a/src/ui/FileManager.java b/src/ui/FileManager.java index 6a0ed0d..f4ce95a 100644 --- a/src/ui/FileManager.java +++ b/src/ui/FileManager.java @@ -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) {} } /** diff --git a/src/ui/Instruments.java b/src/ui/Instruments.java new file mode 100644 index 0000000..bff537a --- /dev/null +++ b/src/ui/Instruments.java @@ -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