Кога завршува часот?
Дали ви се има случено во средно училиште професорот/професорката да гњави долго време и во еден момент сакате да знаете уште колку минути има до крајот на часот, а не знаете кога завршува часот? Епа кога јас бе средно мобилни не постоеја (или беа многу скапи) а и тогаш немаа Јава поддршка. А арно ама сега имаат, па си реков малку да допринесам за нашава младина, а и да пробам да напишам Ј2МЕ за прв пат во животот, и на крај излезе оваа програма.Идејата ми беше да не мора да гледаш колку е саатот, па да се мислиш кој час е по ред тековниот, па да земеш табличка со распоред на времиња и тн. Апликацијата има една опција "Овој час" која што ти пресметува точно време кога завршува тековниот час без да специфицираш кој час е тоа. Мислам дека тоа е многу корисно, поправете ме ако грешам. Има две компајлирани верзии, во кодот и можностите се комплетно исти, само некој телефони поддржуваат MIDP 2.1, а некој мора да се стави верзија компајлирана за MIDP 2.0. Во секој случај програмата е тука: MIDP 2.1: Jar Jad , MIDP 2.0: Jar Jad За некои телефони е потребно да се стави и дескрипторот .jad фајлот. Слободно дистрибуирајте, копирајте и споделувајте, ќе го ставам и кодот само малку да го потсредам со коментари, не ми е за пред луѓе во моментов. Гарантирам дека нема никакви делови за снифање или читање на лични податоци од мобилниот телефон. Еве неколку скриншотови:


И како што ветив, еве го кодот:
package com.ilija;
import java.util.Date;
import javax.microedition.lcdui.
import javax.microedition.lcdui.
import javax.microedition.lcdui.
import javax.microedition.lcdui.
import javax.microedition.lcdui.
import javax.microedition.lcdui.
import javax.microedition.lcdui.
import javax.microedition.lcdui.List;
import javax.microedition.lcdui.
import javax.microedition.midlet.
import javax.microedition.rms.
public class Konfigurator extends MIDlet implements CommandListener {
private Display display; // The display for this MIDlet
private TextBox editScreen;
private List list;
private Command edit, select, exit;
private Alert alert;
private RecordStore record;
private Command saveChanges, cancelChanges;
static final String REC_STORE = "CASOVI";
public Konfigurator() {
display = Display.getDisplay(this);
editScreen = new TextBox("Време на завршување на часот", null, 5, 0);
list = new List("School. By Ilija Trajkoski", Choice.EXCLUSIVE);
edit = new Command("Измени", Command.SCREEN, 1);
select = new Command("Прикажи", Command.BACK, 0);
exit = new Command("Излез", Command.EXIT, 2);
saveChanges = new Command("Сними", Command.SCREEN, 0);
cancelChanges = new Command("Назад", Command.BACK, 0);
editScreen.addCommand(
editScreen.addCommand(
editScreen.setCommandListener(
}
public void startApp() {
list.append("Овој час", null);
list.append("Прв час-смена 1", null);
list.append("Втор час-смена 1", null);
list.append("Трет час-смена 1", null);
list.append("Четврти час-смена 1", null);
list.append("Петти час-смена 1", null);
list.append("Шести час-смена 1", null);
list.append("Седми час-смена 1", null);
list.append("Прв час-смена 2", null);
list.append("Втор час-смена 2", null);
list.append("Трет час-смена 2", null);
list.append("Четврти час-смена 2", null);
list.append("Петти час-смена 2", null);
list.append("Шести час-смена 2", null);
list.append("Седми час-смена 2", null);
list.addCommand(edit);
list.addCommand(select);
list.addCommand(exit);
list.setCommandListener(this);
display.setCurrent(list);
initializeStore();
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable s) {
int index = list.getSelectedIndex();
if (c == list.SELECT_COMMAND || c == select) {
int cas = index;
if (index > 7) {
cas = cas - 7;
}
long currentTime = System.currentTimeMillis();
long currentMinutes = ((currentTime / 1000) / 60) % 60;
long currentHour = (((currentTime / 1000) / 60) / 60) % 24 + 1;
String currentMinutesStr = currentMinutes + "";
if (currentMinutes < 10) {
currentMinutesStr = "0" + currentMinutesStr;
}
String currentHourStr = currentHour + "";
if (currentHour < 10) {
currentHourStr = "0" + currentHourStr;
}
if (index > 0) {
openStore();
String time = readRecord(index);
String timeToEnd = calculateTimeToEnd(time, currentHour, currentMinutes);
closeStore();
alert = new Alert("Време", "До крајот на часот број " + cas + " има уште: " + timeToEnd + ", часот завршува во " + time + " сега е " + currentHourStr + ":" + currentMinutesStr, null, AlertType.INFO);
} else {
String time = findEndTime(currentHour, currentMinutes);
String timeToEnd = calculateTimeToEnd(time, currentHour, currentMinutes);
alert = new Alert("Време", "До крајот на часот има уште: " + timeToEnd + ", часот завршува во " + time + " сега е " + currentHourStr + ":" + currentMinutesStr, null, AlertType.INFO);
}
alert.setTimeout(10000);
display.setCurrent(alert);
}
if (index > 0) {
if (c == edit) {
openStore();
editScreen.setString(
closeStore();
display.setCurrent(editScreen)
}
if (c == exit) {
destroyApp(false);
notifyDestroyed();
}
if (c == cancelChanges) {
display.setCurrent(list);
}
if (c == saveChanges) {
openStore();
String time = editScreen.getString();
updateRecord(time, index);
closeStore();
}
}
}
public void openStore() {
try {
record = RecordStore.openRecordStore(
} catch (Exception e) {
}
}
public void closeStore() {
try {
record.closeRecordStore();
} catch (Exception e) {
}
}
public void writeRecord(String str) {
byte[] rec = str.getBytes();
try {
int index = record.addRecord(rec, 0, rec.length);
} catch (Exception e) {
}
}
private String readRecord(int index) {
String result = "";
try {
if (record.getNumRecords() > 0) {
result = new String(record.getRecord(index)
}
} catch (Exception e) {
}
return result;
}
private void updateRecord(String str, int index) {
try {
byte[] rec = str.getBytes();
record.setRecord(index, rec, 0, rec.length);
} catch (Exception e) {
}
}
private void initializeStore() {
openStore();
try {
if (record.getNumRecords() <= 0) {
writeRecord("08:00");
writeRecord("08:50");
writeRecord("09:50");
writeRecord("10:45");
writeRecord("11:40");
writeRecord("12:30");
writeRecord("13:20");
writeRecord("14:15");
writeRecord("15:05");
writeRecord("16:05");
writeRecord("17:00");
writeRecord("17:50");
writeRecord("18:40");
writeRecord("19:35");
}
} catch (Exception e) {
}
closeStore();
}
private String calculateTimeToEnd(String endTime, long hours, long minutes) {
String result = "";
long hourDiff = 0;
long minuteDiff = 0;
try {
String parsedHour = endTime.substring(0, 2);
String parsedMinutes = endTime.substring(3, 5);
Long storeHour = new Long(0);
long shour = storeHour.parseLong(
Long storeMinutes = new Long(0);
long sminute = storeMinutes.parseLong(
hourDiff = shour - hours;
minuteDiff = sminute - minutes;
if (minuteDiff < 0) {
if (hourDiff > 0) {
hourDiff--;
minuteDiff = 60 + minuteDiff;
}
}
} catch (Exception e) {
result = "Грешка во есапот, провери ги времињата на часовите";
return result;
}
if (hourDiff < 0 || minuteDiff < 0) {
result = "ич, часот е поминат";
} else {
if (hourDiff > 0) {
result = hourDiff + " часа и ";
}
if (minuteDiff >= 0) {
result += minuteDiff + " минути";
}
}
return result;
}
private String findEndTime(long hours, long minutes) {
String result = "08:00";
long hourDiff = 0;
long minuteDiff = 0;
openStore();
for (int i = 14; i > 0; i--) {
String endTime = readRecord(i);
String parsedHour = endTime.substring(0, 2);
String parsedMinutes = endTime.substring(3, 5);
Long storeHour = new Long(0);
long shour = storeHour.parseLong(
Long storeMinutes = new Long(0);
long sminute = storeMinutes.parseLong(
hourDiff = shour - hours;
minuteDiff = sminute - minutes;
if (minuteDiff < 0) {
if (hourDiff > 0) {
hourDiff--;
minuteDiff = 60 + minuteDiff;
}
}
if (hourDiff < 0 || minuteDiff < 0) {
if(i<14){
result = readRecord(i+1);
}else{
result = readRecord(i);
}
break;
}
}
closeStore();
return result;
}
}
Posted at 12:05PM мар. 24, 2009 by Ilija Trajkoski in Java | Comments[0]