Приложение А
(обязательное)
Интерфейс программы
Экран со списком активных задач (начальный):
Рисунок – Список активных задач
Экран добавления новой задачи:
Рисунок – Добавление новой задачи
Экран редактирования информации об активных задачах:
Рисунок – Редактирование активной задачи
Экран со списком завершенных задач:
Рисунок – Список завершенных задач
Экран изменения информации о завершенных задачах:
Рисунок – Редактирование завершенной задачи
Экран с действиями для задачи, для которой сработало напоминание:
Рисунок – Действия над задачей
Приложение Б
(обязательное)
Листинг приложения
import android.app.Activity;
import android.app.FragmentTransaction;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import com.myproject.taskmanager.R;
import com.myproject.taskmanager.dao.TaskDao;
import com.myproject.taskmanager.service.MyService;
public class MainActivity extends Activity {
//главная активность приложения. инициализирует TaskDao. запускает сервис для мониторинга задач. ActiveActivity frag1;
FinishActivity frag2;
FragmentTransaction fTrans;
SharedPreferences sPref;
public static Activity activity;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); //вызыывается метод родительского класса, пдключается главная разметка setContentView(R.layout.activity_main);
frag1 = new ActiveActivity();
frag2 = new FinishActivity();
fTrans = getFragmentManager().beginTransaction();
fTrans.add(R.id.fragment1,frag1);
fTrans.commit();
sPref = getSharedPreferences("SP", Context.MODE_APPEND);
TaskDao.init(sPref);
activity = this;
startService(new Intent(this, MyService.class));
}
public void addFragment1(View v){
fTrans = getFragmentManager().beginTransaction();//Начало транзакции fTrans.replace(R.id.fragment1,frag1);//заменяем франмент fTrans.commit();//коммитим транзакцию(фиксируем изменения) }
public void addFragment2(View v){
fTrans = getFragmentManager().beginTransaction();
fTrans.replace(R.id.fragment1, frag2);
fTrans.commit();
}
}
Листинг Б.1, лист 1
import android.app.Activity;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import com.myproject.taskmanager.R;
import com.myproject.taskmanager.dao.TaskDao;
import com.myproject.taskmanager.pojo.Task;
import org.json.JSONException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
//активность отображающая список завершенных задач, а также позволяет активировать задачу public class FinishActivity extends Fragment {
static Map tasksMap = new HashMap<>();
static ListView listView;
LinearLayout linearLayout;
static List tasks;
static Activity activity;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { //подключаем разметку
View v = inflater.inflate(R.layout.list_view_finish, null);//связываем view с layout listView = (ListView) v.findViewById(R.id.listView);
linearLayout = (LinearLayout) v.findViewById(R.id.LinearLayout);
activity = getActivity();
try { tasks = TaskDao.getFinishedTasks();
for (Task t : tasks) {
tasksMap.put(t.getTaskName(), t);
}
ArrayAdapter adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, tasks);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView>
parent, View itemClicked, int position,
long id) {
try {
Листинг Б.2, лист 1
TextView textView = (TextView) itemClicked;
String strText = textView.getText().toString(); // получаем текст нажатого элемента
Intent intent = (new Intent(getActivity(), InfoActivity.class));
Task task = tasksMap.get(strText);
intent.putExtra("name", task.getJson());
startActivity(intent);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
} catch (JSONException e) {
Log.d("Except", e.toString());
}
return v;
}
public static void refreshTasks(){
try {
if (activity!=null){
tasks = TaskDao.getFinishedTasks();
ArrayAdapter adapter = new ArrayAdapter(activity, android.R.layout.simple_list_item_1, tasks);
listView.setAdapter(adapter);
for (Task t : tasks) {
tasksMap.put(t.getTaskName(), t);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
Листинг Б.2, лист 2
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
import com.myproject.taskmanager.R;
import com.myproject.taskmanager.dao.TaskDao;
import com.myproject.taskmanager.pojo.Task;
import org.json.JSONException;
import java.util.Date;
public class InfoActivity extends Activity {
EditText editTextName;
EditText editDescription;
Task task;
DatePicker datePicker;
TimePicker timePicker;
@Override
protected void onCreate(Bundle savedInstanceState) {
try {
super.onCreate(savedInstanceState);
setContentView(R.layout.info_activity);
Button save = (Button) findViewById(R.id.save);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getInfoTask();
finish();}
});
Button delete = (Button) findViewById(R.id.delete);
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
TaskDao.delete(task);
} catch (JSONException e) {
e.printStackTrace();
}
task=null;
finish();
}
});
Button close = (Button) findViewById(R.id.close);
close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getInfoTask();
task.setStatusFinished();
finish();
}
});
Button activate = (Button) findViewById(R.id.activate);
activate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getInfoTask();
task.setStatusActive();
finish();}
Листинг Б.3, лист 1
});
datePicker = (DatePicker) findViewById(R.id.datePicker);
timePicker = (TimePicker) findViewById(R.id.timePicker);
editTextName = (EditText) findViewById(R.id.editTextName);
editDescription = (EditText) findViewById(R.id.editText);
Intent intent = getIntent();
delete.setVisibility(View.INVISIBLE);
close.setVisibility(View.INVISIBLE);
activate.setVisibility(View.INVISIBLE);
save.setVisibility(View.INVISIBLE);
if (!intent.getStringExtra("name").equals("")) {
String value = intent.getStringExtra("name");
task = new Task(value);
TaskDao.delete(task);
editTextName.setText(task.getTaskName());
editDescription.setText(task.getDescription());
Date date = new Date(task.getDate());
datePicker.updateDate(2015, date.getMonth(), date.getDate());
timePicker.setCurrentHour(date.getHours());
timePicker.setCurrentMinute(date.getMinutes());
delete.setVisibility(View.VISIBLE);
}
else {save.setVisibility(View.VISIBLE);}
if (task.getStatus().equals("Active")) {
close.setVisibility(View.VISIBLE);
save.setVisibility(View.VISIBLE);
}
else{ activate.setVisibility(View.VISIBLE);}
}catch (Exception e){
e.printStackTrace();
}}
@Override
public void finish() {
if (task != null) {
try {
if (!task.getTaskName().equals(""))
TaskDao.saveTask(task);
} catch (JSONException e) {
e.printStackTrace();
}
}
ActiveActivity.refreshTasks();
FinishActivity.refreshTasks();
super.finish();
}
private void getInfoTask(){
Date date = new Date();
date.setMinutes(timePicker.getCurrentMinute());
date.setHours(timePicker.getCurrentHour());
date.setDate(datePicker.getDayOfMonth());
date.setMonth(datePicker.getMonth());
task = new Task(editTextName.getText().toString(),editDescription.getText().toString(),date.getTime()); }
}
Листинг Б.3, лист 2
import android.app.Activity;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import com.myproject.taskmanager.R;
import com.myproject.taskmanager.dao.TaskDao;
import com.myproject.taskmanager.pojo.Task;
import org.json.JSONException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
//активность отображающая список активных задач, а также служит для добавления новых задач public class ActiveActivity extends Fragment {
static Map tasksMap = new HashMap<>();
static ListView listView;
LinearLayout linearLayout;
Button button;
static List tasks;
static Activity activity;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { //подключаем разметку
View v = inflater.inflate(R.layout.list_view_active, null);//связываем view с layout listView = (ListView) v.findViewById(R.id.listView);
linearLayout = (LinearLayout) v.findViewById(R.id.LinearLayout);
button = (Button) v.findViewById(R.id.button3);
activity = getActivity();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = (new Intent(getActivity(), InfoActivity.class));
intent.putExtra("name", "");
startActivity(intent);
}
});
try {
tasks = TaskDao.getActiveTasks();
for (Task t : tasks) {
tasksMap.put(t.getTaskName(), t);
}
Листинг Б.4, лист 1
ArrayAdapter adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, tasks);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView>
parent, View itemClicked, int position,
|