package com.miris.ui.activity; import android.app.ProgressDialog; import android.content.Intent; import android.graphics.Color; import android.os.AsyncTask; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.miris.R; import com.miris.net.CalendarListData; import com.miris.ui.adapter.CalendarAdapter; import com.miris.ui.comp.CalendarDayEvent; import com.miris.ui.view.CompactCalendarView; import com.parse.ParseException; import com.parse.ParseObject; import com.parse.ParseQuery; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Locale; import butterknife.InjectView; import butterknife.OnClick; /** * Created by Miris on 09.02.15. */ public class CalendarActivity extends BaseActivity { public static final String ACTION_SHOW_NEW_ITEM = "action_show_new_item"; private Calendar currentCalender = Calendar.getInstance(Locale.getDefault()); private SimpleDateFormat dateFormatForMonth = new SimpleDateFormat("yyyy년 MMM", Locale.getDefault()); @InjectView(R.id.rvCalendar) RecyclerView rvCalendar; @InjectView(R.id.toDate) TextView toDate; @InjectView(R.id.btnCreate) FloatingActionButton fabCreate; LinearLayoutManager linearLayoutManager; private CalendarAdapter calendarAdapter; ProgressDialog myLoadingDialog; List<ParseObject> ob; Date today; Calendar cal; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_calendar); toolbar.setNavigationIcon(R.drawable.ic_arrow_back_white_24dp); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); setupFeed(); } private void setupFeed() { linearLayoutManager = new LinearLayoutManager(this) { @Override protected int getExtraLayoutSpace(RecyclerView.State state) { return 300; } }; rvCalendar.setLayoutManager(linearLayoutManager); new loadDataTask().execute(); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); if (ACTION_SHOW_NEW_ITEM.equals(intent.getAction())) { calendarData.clear(); new loadDataTask().execute(); } } class loadDataTask extends AsyncTask<Void, Void, Void> { @Override protected void onPreExecute() { } @Override protected Void doInBackground(Void... arg0) { calendarData = new ArrayList<CalendarListData>(); ParseQuery<ParseObject> offerQuery = ParseQuery.getQuery("miris_schedule"); offerQuery.orderByDescending("user_holiday"); offerQuery.orderByDescending("createdAt"); try { ob = offerQuery.find(); } catch (ParseException e) { Log.e("Error", e.getMessage()); e.printStackTrace(); } for (ParseObject country : ob) { if (isCancelled()) { return null; } if (country.get("user_public").toString().equals("N")) { if (!country.get("user_id").toString().equals(memberData.get(0).getuserId())) { continue; } } calendarData.add(new CalendarListData( country.get("user_id").toString(), country.get("user_name").toString(), country.getDate("user_calendar"), country.get("user_text").toString(), country.get("user_public").toString(), country.get("user_holiday").toString())); } return null ; } @Override protected void onPostExecute(Void result) { final CompactCalendarView compactCalendarView = (CompactCalendarView) findViewById(R.id.compactcalendar_view); compactCalendarView.drawSmallIndicatorForEvents(true); addEvents(compactCalendarView); compactCalendarView.invalidate(); final Button showPreviousMonthBut = (Button) findViewById(R.id.prev_button); final Button showNextMonthBut = (Button) findViewById(R.id.next_button); calendarAdapter = new CalendarAdapter(CalendarActivity.this, calendarData); rvCalendar.setAdapter(calendarAdapter); toDate.setText(dateFormatForMonth.format(compactCalendarView.getFirstDayOfCurrentMonth())); compactCalendarView.setListener(new CompactCalendarView.CompactCalendarViewListener() { @Override public void onDayClick(Date dateClicked) { calendarAdapter.getFilter(dateClicked); } @Override public void onMonthScroll(Date firstDayOfNewMonth) { toDate.setText(dateFormatForMonth.format(firstDayOfNewMonth)); } }); showPreviousMonthBut.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { compactCalendarView.showPreviousMonth(); } }); showNextMonthBut.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { compactCalendarView.showNextMonth(); } }); calendarAdapter.updateItems(true); } } private void addEvents(CompactCalendarView compactCalendarView) { for(int i = 0; i < calendarData.size(); i++){ boolean user_holiday; if (calendarData.get(i).getuser_holiday().equals("Y")) { user_holiday = true; } else { user_holiday = false; } compactCalendarView.addEvent(new CalendarDayEvent(calendarData.get(i).getuser_calendar().getTime(), Color.argb(255, 239, 68, 65), user_holiday), true); } } @OnClick(R.id.btnCreate) public void onTakePhotoClick() { Intent intent = new Intent(CalendarActivity.this, TakeCalendarActivity.class); startActivity(intent); overridePendingTransition(0, 0); } }