package by.fksis.schedule.app; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.view.ViewPager; import android.util.Log; import android.widget.TextView; import by.fksis.schedule.API; import by.fksis.schedule.Preferences; import by.fksis.schedule.R; import by.fksis.schedule.Util; import by.fksis.schedule.adapters.WeekPagerAdapter; import by.fksis.schedule.async.SynchronizationTask; import by.fksis.schedule.dal.ScheduleClass; import com.WazaBe.HoloEverywhere.sherlock.SFragmentActivity; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import com.danikula.aibolit.Aibolit; import com.danikula.aibolit.annotation.InjectView; import com.viewpagerindicator.TitlePageIndicator; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Iterator; import java.util.List; public class MainActivity extends SFragmentActivity { private DateFormat sdf_all = new SimpleDateFormat("yyyy-MM-dd hh:mm"); private DateFormat sdf_date = new SimpleDateFormat("yyyy-MM-dd"); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Aibolit.doInjections(this); getSupportActionBar().setTitle(R.string.schedule); getSupportActionBar().setIcon(R.drawable.logo); API.loadCredentials(this); if (!API.credentialsPresent()) { startActivity(new Intent(this, LoginActivity.class)); finish(); } viewPager.setAdapter(new WeekPagerAdapter(getSupportFragmentManager(), this)); indicator.setViewPager(viewPager); indicator.setFooterIndicatorStyle(TitlePageIndicator.IndicatorStyle.Underline); indicator.setTextColor(0xff888888); //indicator.setTextSize(20); indicator.setSelectedColor(0xff444444); indicator.setSelectedBold(false); viewPager.setCurrentItem(WeekPagerAdapter.NOW_PAGE); if (new Preferences(this).getAutoReload()) new SynchronizationTask(this, false).execute(); currentClass.setText(getString(R.string.no_classes)); nextClass.setText(getString(R.string.no_classes)); handler.sendEmptyMessage(0); } private Handler handler = new Handler() { @Override public void dispatchMessage(Message msg) { Calendar time = Calendar.getInstance(); time.setTimeInMillis(System.currentTimeMillis()); time.set(Calendar.HOUR, 0); time.set(Calendar.MINUTE, 00); time.set(Calendar.AM_PM, Calendar.AM); time.add(Calendar.DATE, 1); List<ScheduleClass> classes = ScheduleClass.get(ScheduleClass.class) .filter("weeks%", "%" + Util.getScheduleWeek(Calendar.getInstance().getTime()) + "%") .filter("day", Util.getDayOfWeekIndex(Calendar.getInstance())) .filter("studentGroup", new Preferences(MainActivity.this).getGroup()) .filter("subgroups%", "%" + new Preferences(MainActivity.this).getSubgroupString() + "%") .list(); boolean found = false; for (ScheduleClass clazz : classes) { Date dateStart = null, dateEnd = null; try { dateStart = sdf_all.parse(sdf_date.format(Calendar.getInstance().getTime()) + " " + getResources().getStringArray(R.array.timeSlotStart)[clazz.timeSlot]); dateEnd = sdf_all.parse(sdf_date.format(Calendar.getInstance().getTime()) + " " + getResources().getStringArray(R.array.timeSlotEnd)[clazz.timeSlot]); } catch (Exception e) { Log.e(DayScheduleFragment.class.getSimpleName(), e.getMessage()); } if ((dateStart.getTime() <= Calendar.getInstance().getTime().getTime()) && (dateEnd.getTime() >= Calendar.getInstance().getTime().getTime())) { currentClass.setText(clazz.name + " " + clazz.room + "\n" + Util.defaultValue(clazz.type, "") + " " + Util.defaultValue(clazz.teacher, "")); time.setTime(dateEnd); if ((classes.size() - 1) > classes.lastIndexOf(clazz)) { ScheduleClass l_next = classes.get(classes.lastIndexOf(clazz) + 1); nextClass.setText(l_next.name + " " + Util.defaultValue(l_next.room, "") + "\n" + Util.defaultValue(l_next.type, "") + " " + Util.defaultValue(l_next.teacher, "")); } else { nextClass.setText(getString(R.string.no_classes)); } found = true; } } if (!found) { found = false; for (Iterator<ScheduleClass> i = classes.iterator(); i.hasNext() && !found; ) { ScheduleClass l = i.next(); Date dateStart = null, dateEnd; try { dateStart = sdf_all.parse(sdf_date.format(Calendar.getInstance().getTime()) + " " + getResources().getStringArray(R.array.timeSlotStart)[l.timeSlot]); } catch (Exception e) { Log.e(DayScheduleFragment.class.getSimpleName(), e.getMessage()); } if (dateStart.getTime() > Calendar.getInstance().getTime().getTime()) { found = true; currentClass.setText(getString(R.string.no_classes)); nextClass.setText(l.name + " " + Util.defaultValue(l.room, "") + "\n" + Util.defaultValue(l.type, "") + " " + Util.defaultValue(l.teacher, "")); time.setTime(dateStart); } } } handler.sendMessageAtTime(new Message(), time.getTimeInMillis()); } }; @Override public boolean onCreateOptionsMenu(Menu menu) { { String[] specialRoles = getResources().getStringArray(R.array.specialRoles); String userRole = new Preferences(this).getUserRole(); for (String role : specialRoles) { if (role.equals(userRole)) { MenuItem menuItem = menu.add(R.string.group_message); menuItem.setIcon(R.drawable.ic_message); menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { startActivity(new Intent(MainActivity.this, BroadcastSubmissionActivity.class)); return true; } }); break; } } } { MenuItem menuItem = menu.add(R.string.refresh); menuItem.setIcon(R.drawable.ic_reload); menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { new SynchronizationTask(MainActivity.this, true).execute(); return true; } }); } { MenuItem menuItem = menu.add(R.string.preferences); menuItem.setIcon(R.drawable.ic_settings); menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { startActivity(new Intent(MainActivity.this, PreferenceActivity.class)); return true; } }); } return true; } @Override protected void onStop() { super.onStop(); finish(); } @InjectView(R.id.indicator) private TitlePageIndicator indicator; @InjectView(R.id.pager) private ViewPager viewPager; @InjectView(R.id.current_class) private TextView currentClass; @InjectView(R.id.next_class) private TextView nextClass; }