Skip to content

Instantly share code, notes, and snippets.

@alfianyusufabdullah
Last active May 7, 2018 03:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alfianyusufabdullah/f9ff4737acc9af0d3a8546927d761386 to your computer and use it in GitHub Desktop.
Save alfianyusufabdullah/f9ff4737acc9af0d3a8546927d761386 to your computer and use it in GitHub Desktop.
package com.example.harokidz.katalogfilm;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import com.example.harokidz.katalogfilm.alarm.AlarmPreference;
import com.example.harokidz.katalogfilm.alarm.AlarmReceiver;
import com.example.harokidz.katalogfilm.fragment.FavouriteFragment;
import com.example.harokidz.katalogfilm.fragment.NowPlayingFragment;
import com.example.harokidz.katalogfilm.fragment.UpcomingFragment;
import com.example.harokidz.katalogfilm.helper.ConstructorHelper;
import com.example.harokidz.katalogfilm.helper.KeyHelper;
import com.example.harokidz.katalogfilm.model.Movie;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class MainActivity extends AppCompatActivity {
private String lang;
Fragment selectedFragment = null;
FragmentTransaction transaction;
private Calendar calOneTimeDate, calOneTimeTime, calRepeatTimeTime;
private AlarmReceiver alarmReceiver;
private AlarmPreference alarmPreference;
ConstructorHelper ch;
KeyHelper kh;
ArrayList<Movie> arrayList = new ArrayList<>();
NowPlayingFragment nfr;
UpcomingFragment upfr;
FavouriteFragment ffr;
private Fragment fragmentMovie;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
lang = getString(R.string.lang);
//set Reminder
alarmPreference = new AlarmPreference(this);
alarmReceiver = new AlarmReceiver();
calRepeatTimeTime = Calendar.getInstance();
calOneTimeDate = Calendar.getInstance();
calOneTimeTime = Calendar.getInstance();
setBackToAppAlarm();
runOnUiThread(new Runnable() {
@Override
public void run() {
new ReadJSON().execute(kh.KEY_URL_UPCOMING +
"api_key=" + kh.KEY_API +
"&" +
"language=" + lang +
"&" +
"page=1");
}
});
}
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
if (savedInstanceState != null) {
//restore instance dari fragment disini
fragmentMovie = getSupportFragmentManager().getFragment(savedInstanceState, "fragmentMovie");
transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_layout, fragmentMovie);
transaction.commit();
} else {
fragmentMovie = new NowPlayingFragment();
Bundle data = new Bundle();
data.putString("lang", lang);
nfr.setArguments(data);
transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_layout, fragmentMovie);
transaction.commit();
}
}
private void setGetTodatMovie() {
for (Movie m : arrayList) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
try {
if (new Date().before(dateFormat.parse(m.getTahun()))) {
String oneTimeDate = m.getTahun();
Log.d("Date ", oneTimeDate);
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm", Locale.getDefault());
calOneTimeTime = Calendar.getInstance();
calOneTimeTime.setTimeInMillis(System.currentTimeMillis());
calOneTimeTime.set(Calendar.HOUR_OF_DAY, 8);
calOneTimeTime.set(Calendar.MINUTE, 0);
calOneTimeTime.set(Calendar.SECOND, 0);
String oneTimeTime = timeFormat.format(calOneTimeTime.getTime());
String oneTimeMessage = m.getJudul() + " rilis hari ini";
int notifId = Integer.parseInt(m.getId());
String title = m.getJudul();
alarmPreference.setOneTimeDate(oneTimeDate);
alarmPreference.setOneTimeMessage(oneTimeMessage);
alarmPreference.setOneTimeTime(oneTimeTime);
alarmReceiver.setOneTimeAlarm(this, notifId,
alarmPreference.getOneTimeDate(),
alarmPreference.getOneTimeTime(),
alarmPreference.getOneTimeMessage(), title);
}
} catch (ParseException e) {
e.printStackTrace();
}
}
}
private void setBackToAppAlarm() {
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm");
calRepeatTimeTime.setTimeInMillis(System.currentTimeMillis());
calRepeatTimeTime.set(Calendar.HOUR_OF_DAY, 7);
calRepeatTimeTime.set(Calendar.MINUTE, 0);
calRepeatTimeTime.set(Calendar.SECOND, 0);
String repeatTimeTime = timeFormat.format(calRepeatTimeTime.getTime());
String repeatTimeMessage = "Jangan Lupa kembali ke Aplikasi";
// Log.d("Time", "The choosen one " + calRepeatTimeTime.getTime());
Log.d("Time", "The choosen one " + timeFormat.format(calRepeatTimeTime.getTime()));
alarmPreference = new AlarmPreference(this);
alarmPreference.setRepeatingTime(repeatTimeTime);
alarmPreference.setRepeatingMessage(repeatTimeMessage);
alarmReceiver.setRepeatingAlarm(this, 100,
alarmPreference.getRepeatingTime(), alarmPreference.getRepeatingMessage(), "Movie Catalogue");
}
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_now_playing:
fragmentMovie = new NowPlayingFragment();
Bundle data = new Bundle();
data.putString("lang", lang);
nfr.setArguments(data);
transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_layout, fragmentMovie);
transaction.commit();
return true;
case R.id.navigation_upcoming:
fragmentMovie = new UpcomingFragment();
Bundle data2 = new Bundle();
data2.putString("lang", lang);
upfr.setArguments(data2);
transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_layout, fragmentMovie);
transaction.commit();
return true;
case R.id.navigation_favorit:
fragmentMovie = new FavouriteFragment();
Bundle data3 = new Bundle();
data3.putString("lang", lang);
ffr.setArguments(data3);
transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_layout, fragmentMovie);
transaction.commit();
return true;
}
return false;
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
class ReadJSON extends AsyncTask<String, Integer, String> {
ProgressDialog dialog;
@Override
protected void onPreExecute() {
}
@Override
protected String doInBackground(String... params) {
return ch.readURL(params[0]);
}
@Override
protected void onPostExecute(String content) {
try {
JSONObject jsonObject = new JSONObject(content);
JSONArray jsonArray = jsonObject.getJSONArray("results");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject movieObject = jsonArray.getJSONObject(i);
arrayList.add(new Movie(
movieObject.getString("id"),
movieObject.getString("poster_path"),
movieObject.getString("title"),
movieObject.getString("overview"),
movieObject.getString("release_date")
));
}
} catch (JSONException e) {
e.printStackTrace();
}
setGetTodatMovie();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_change_settings:
Intent mIntent = new Intent(Settings.ACTION_LOCALE_SETTINGS);
startActivity(mIntent);
return (true);
}
return (super.onOptionsItemSelected(item));
}
@Override
protected void onSaveInstanceState(Bundle outState) {
getSupportFragmentManager().putFragment(outState, "fragmentMovie", fragmentMovie);
super.onSaveInstanceState(outState);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment