public
class
Widget
extends
Activity {
private
TextView ddayText;
private
TextView todayText;
private
TextView resultText;
private
TextView nameText;
private
Button dateButton;
private
int
tYear;
private
int
tMonth;
private
int
tDay;
private
int
dYear =
1
;
private
int
dMonth =
1
;
private
int
dDay =
1
;
private
long
d;
private
long
t;
private
long
r;
private
long
w;
private
int
resultNumber =
0
;
private
int
dayNumber =
0
;
static
final
int
DATE_DIALOG_ID =
0
;
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.widget);
ddayText = (TextView) findViewById(R.id.dday);
todayText = (TextView) findViewById(R.id.today);
resultText = (TextView) findViewById(R.id.result);
dateButton = (Button) findViewById(R.id.dateButton);
nameText = (TextView) findViewById(R.id.name);
dateButton.setOnClickListener(
new
OnClickListener() {
@Override
public
void
onClick(View v) {
showDialog(
0
);
}
});
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(Widget.
this
);
String str = prefs.getString(
"name"
,
""
);
prefs.getLong(
"date"
,
new
Date().getTime());
nameText.setText(str);
Calendar calendar = Calendar.getInstance();
tYear = calendar.get(Calendar.YEAR);
tMonth = calendar.get(Calendar.MONTH);
tDay = calendar.get(Calendar.DAY_OF_MONTH);
Calendar dCalendar = Calendar.getInstance();
dCalendar.set(dYear, dMonth, dDay);
t = calendar.getTimeInMillis();
d = dCalendar.getTimeInMillis();
r = (d - t) / (
7
*
24
*
60
*
60
* 1000L);
w = (d - t) / (
24
*
60
*
60
* 1000L);
resultNumber = (
int
) r * (-
1
);
dayNumber = (
int
) w * (-
1
);
updateDisplay();
}
private
void
updateDisplay() {
todayText.setText(String.format(
"%d년 %d월 %d일"
, tYear, tMonth +
1
, tDay));
ddayText.setText(String.format(
"%d년 %d월 %d일"
, dYear, dMonth +
1
, dDay));
if
(resultNumber >=
0
) {
resultText.setText(String.format(
"임신 %d주 %d일"
, resultNumber % 45L, dayNumber % 7L +
1
));
}
else
{
int
absR = Math.abs(resultNumber);
resultText.setText(String.format(
"임신 %d주 %d일"
, absR, dayNumber % 7L));
}
}
@Override
protected
Dialog onCreateDialog(
int
id) {
if
(id == DATE_DIALOG_ID) {
return
new
DatePickerDialog(
this
, dDateSetListener, tYear, tMonth, tDay);
}
return
null
;
}
private
DatePickerDialog.OnDateSetListener dDateSetListener =
new
DatePickerDialog.OnDateSetListener() {
@Override
public
void
onDateSet(DatePicker view,
int
year,
int
monthOfYear,
int
dayOfMonth) {
dYear = year;
dMonth = monthOfYear;
dDay = dayOfMonth;
final
Calendar dCalendar = Calendar.getInstance();
dCalendar.set(dYear, dMonth, dDay);
d = dCalendar.getTimeInMillis();
r = (d - t) / (
7
*
24
*
60
*
60
* 1000L);
w = (d - t) / (
24
*
60
*
60
* 1000L);
resultNumber = (
int
) r * (-
1
);
dayNumber = (
int
) w * (-
1
);
updateDisplay();
}
};
@Override
protected
void
onStop() {
super
.onStop();
DatePicker dp =
null
;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(Widget.
this
);
SharedPreferences.Editor editor = prefs.edit();
String str = nameText.getText().toString();
Date date =
new
Date(dp.getYear(), dp.getMonth(), dp.getDayOfMonth());
editor.putString(
"name"
, str);
prefs.edit().putLong(
"date"
, date.getTime()).apply();
editor.apply();
}
}