diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 0d0e3f1..e41ddba 100644 Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ diff --git a/README.md b/README.md index 8e680be..b7187c5 100644 --- a/README.md +++ b/README.md @@ -23,14 +23,15 @@ Horrible Subs uses number of open source projects to work properly: - Notifications might get delayed by 30 minutes (Max). * In App Search for listing available subs from Horrible Subs * Views All as well as Current Shows + * Lists full weeks schedule day wise(According to User Time) Mentioned features might not work in upcoming releases but will be fixed soon - * ~~Lists full weeks Schedule (According to User Time)~~ * ~~Show pages for previous show releases~~ * ~~Search in List~~ #### Release Updates ``` +Schedule Activity - Listing Full Schedule Major Commit - June 27, 2018 Shows Activity - Listing all & current shows, Improved UI Major Commit - June 27, 2018 New Search Activity, Improved Home UI with SearchView, Optimized Data Models Major Commit - June 27, 2018 New Home Activity, Improved Notifications, Improved UI for Releases & Schedule Major Commit - June 27, 2018 @@ -64,7 +65,7 @@ Currently Listing Latest 60 Releases & Reimplemented some features #### Download | Type | Date | Version | Api | Download | | ------ | ------ | ------ | ------ | ------ | -| Alpha 2 | ------ | ------ | ------ | ------ | +| Alpha 2 | June 27 2018 | 27 | v4 | [Click Here](https://github.com/Sher1234/HorribleSubs/releases/download/hs-0.2.7/app-debug.apk) | | Alpha 1 | June 27 2018 | 25 | v4 | [Click Here](https://github.com/Sher1234/HorribleSubs/releases/download/hs-0.2.5/app-debug.apk) | | **Latest Release** | **April 25, 2018** | **22** | **v3** | **[Click Here](https://github.com/Sher1234/HorribleSubs/releases/download/hs-0.2.2/app-debug.apk)** | | Release 1 | April 24, 2018 | 21 | v3 | [Click Here](https://github.com/Sher1234/HorribleSubs/releases/download/hs-0.2.1/hs-21.apk) | diff --git a/app/build.gradle b/app/build.gradle index 7372219..bf3db68 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,8 +6,8 @@ android { applicationId "info.horriblesubs.sher" minSdkVersion 15 targetSdkVersion 28 - versionCode 26 - versionName "0.2.6" + versionCode 27 + versionName "0.2.7" multiDexEnabled = true vectorDrawables.useSupportLibrary = true testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index eadb434..a235aaa 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -19,15 +19,6 @@ android:theme="@style/AppTheme" tools:ignore="GoogleAppIndexingWarning"> - - - - - - - @@ -90,13 +81,12 @@ android:theme="@style/AppTheme.NoActionBar" /> - + - { + + private int i = 0; + private ScheduleResponse schedule; + + @Override + protected void onPreExecute() { + super.onPreExecute(); + progressBar.requestFocus(); + progressBar.setVisibility(View.VISIBLE); + } + + @Override + protected Boolean doInBackground(Void... voids) { + Retrofit retrofit = AppController.getRetrofit(Api.Link); + Api api = retrofit.create(Api.class); + Call call = api.getSchedule(); + call.enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, + @NonNull Response response) { + if (response.body() != null) + schedule = response.body(); + i = 1; + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + t.printStackTrace(); + i = -1; + } + }); + while (true) { + if (i != 0) + return true; + if (isCancelled()) { + i = -1; + schedule = null; + return true; + } + } + } + + @Override + protected void onPostExecute(Boolean aBoolean) { + super.onPostExecute(aBoolean); + progressBar.setVisibility(View.GONE); + if (i == 1) { + if (schedule == null) + Toast.makeText(Schedule.this, "Invalid Subz...", Toast.LENGTH_SHORT).show(); + else + onLoadData(schedule); + } else + Toast.makeText(Schedule.this, "Server Error...", Toast.LENGTH_SHORT).show(); + } + } + + class PagerAdapter extends FragmentPagerAdapter { + + private final ScheduleResponse scheduleResponse; + + PagerAdapter(FragmentManager fragmentManager, ScheduleResponse scheduleResponse) { + super(fragmentManager); + this.scheduleResponse = scheduleResponse; + } + + @Override + public Fragment getItem(int position) { + return ScheduleFragment.newInstance(scheduleResponse, position); + } + + @Override + public int getCount() { + return 8; + } + } +} \ No newline at end of file diff --git a/app/src/main/java/info/horriblesubs/sher/adapter/ReleaseRecycler.java b/app/src/main/java/info/horriblesubs/sher/adapter/ReleaseRecycler.java index f173a75..2025b67 100644 --- a/app/src/main/java/info/horriblesubs/sher/adapter/ReleaseRecycler.java +++ b/app/src/main/java/info/horriblesubs/sher/adapter/ReleaseRecycler.java @@ -20,7 +20,7 @@ import info.horriblesubs.sher.model.base.Item; import info.horriblesubs.sher.model.base.ReleaseItem; import info.horriblesubs.sher.old.activity.Detail; -import info.horriblesubs.sher.old.util.DialogX; +import info.horriblesubs.sher.util.DialogX; /** * ReleaseRecycler diff --git a/app/src/main/java/info/horriblesubs/sher/fragment/HomeFragment2.java b/app/src/main/java/info/horriblesubs/sher/fragment/HomeFragment2.java index 93556ed..df24edc 100644 --- a/app/src/main/java/info/horriblesubs/sher/fragment/HomeFragment2.java +++ b/app/src/main/java/info/horriblesubs/sher/fragment/HomeFragment2.java @@ -1,9 +1,11 @@ package info.horriblesubs.sher.fragment; +import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.design.button.MaterialButton; import android.support.transition.ChangeTransform; import android.support.transition.TransitionInflater; import android.support.v4.app.Fragment; @@ -20,12 +22,13 @@ import java.util.List; import info.horriblesubs.sher.R; +import info.horriblesubs.sher.activity.Schedule; import info.horriblesubs.sher.adapter.ReleaseRecycler; import info.horriblesubs.sher.adapter.ScheduleRecycler; import info.horriblesubs.sher.model.base.ScheduleItem; import info.horriblesubs.sher.model.response.HomeResponse; -public class HomeFragment2 extends Fragment { +public class HomeFragment2 extends Fragment implements View.OnClickListener { private static final String ARG_RESPONSE = "RESPONSE-HOME"; private static final String ARG_NUMBER = "RESPONSE-NUMBER"; @@ -33,6 +36,7 @@ public class HomeFragment2 extends Fragment { private int type; private HomeResponse homeResponse; private RecyclerView recyclerView; + private MaterialButton button; private TextView textView; public static HomeFragment2 newInstance(HomeResponse homeResponse, int i) { @@ -50,6 +54,9 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, View rootView = inflater.inflate(R.layout.fragment_home_2, container, false); recyclerView = rootView.findViewById(R.id.recyclerView); textView = rootView.findViewById(R.id.textView); + button = rootView.findViewById(R.id.button); + button.setOnClickListener(this); + button.setEnabled(false); return rootView; } @@ -96,9 +103,21 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) { break; case 2: + button.setEnabled(true); + button.setVisibility(View.VISIBLE); textView.setText(R.string.today_s_schedule); recyclerView.setAdapter(new ScheduleRecycler(getContext(), getTodaySchedule())); break; } } + + @Override + public void onClick(View view) { + if (view.getId() == R.id.button) { + assert getFragmentManager() != null; + getFragmentManager().popBackStack(); + assert getActivity() != null; + getActivity().startActivity(new Intent(getActivity(), Schedule.class)); + } + } } \ No newline at end of file diff --git a/app/src/main/java/info/horriblesubs/sher/fragment/ScheduleFragment.java b/app/src/main/java/info/horriblesubs/sher/fragment/ScheduleFragment.java new file mode 100644 index 0000000..e95da52 --- /dev/null +++ b/app/src/main/java/info/horriblesubs/sher/fragment/ScheduleFragment.java @@ -0,0 +1,82 @@ +package info.horriblesubs.sher.fragment; + +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.support.v7.widget.DefaultItemAnimator; +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import info.horriblesubs.sher.R; +import info.horriblesubs.sher.adapter.ScheduleRecycler; +import info.horriblesubs.sher.model.base.ScheduleItem; +import info.horriblesubs.sher.model.response.ScheduleResponse; + +public class ScheduleFragment extends Fragment { + + private static final String ARG_RESPONSE = "RESPONSE-SCHEDULE"; + private static final String ARG_NUMBER = "NUMBER-SCHEDULE"; + + private ScheduleResponse scheduleResponse; + private RecyclerView recyclerView; + private int i; + + public static ScheduleFragment newInstance(ScheduleResponse scheduleResponse, int i) { + ScheduleFragment fragment = new ScheduleFragment(); + Bundle args = new Bundle(); + args.putSerializable(ARG_RESPONSE, scheduleResponse); + args.putInt(ARG_NUMBER, i); + fragment.setArguments(args); + return fragment; + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View rootView = inflater.inflate(R.layout.fragment_shows, container, false); + recyclerView = rootView.findViewById(R.id.recyclerView); + return rootView; + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + assert getArguments() != null; + scheduleResponse = (ScheduleResponse) getArguments().getSerializable(ARG_RESPONSE); + i = getArguments().getInt(ARG_NUMBER, 0); + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + recyclerView.setItemAnimator(new DefaultItemAnimator()); + recyclerView.setLayoutManager(new GridLayoutManager(getContext(), 2)); + onLoadData(); + } + + private List getSchedule() { + List scheduleItems = new ArrayList<>(); + Calendar calendar = Calendar.getInstance(); + for (ScheduleItem item : scheduleResponse.schedule) { + calendar.setTime(item.getTime()); + if (calendar.get(Calendar.DAY_OF_WEEK) == i + 1 && item.isScheduled) + scheduleItems.add(item); + else if (i == 7 && !item.isScheduled) + scheduleItems.add(item); + } + return scheduleItems; + } + + private void onLoadData() { + ScheduleRecycler scheduleRecycler = new ScheduleRecycler(getContext(), getSchedule()); + recyclerView.setAdapter(scheduleRecycler); + } +} \ No newline at end of file diff --git a/app/src/main/java/info/horriblesubs/sher/old/activity/About.java b/app/src/main/java/info/horriblesubs/sher/old/activity/About.java index c500a1e..9535948 100644 --- a/app/src/main/java/info/horriblesubs/sher/old/activity/About.java +++ b/app/src/main/java/info/horriblesubs/sher/old/activity/About.java @@ -42,7 +42,10 @@ import info.horriblesubs.sher.BuildConfig; import info.horriblesubs.sher.R; -import info.horriblesubs.sher.old.util.DialogX; +import info.horriblesubs.sher.activity.Home; +import info.horriblesubs.sher.activity.Schedule; +import info.horriblesubs.sher.activity.Shows; +import info.horriblesubs.sher.util.DialogX; @SuppressWarnings("all") @SuppressLint("StaticFieldLeak") @@ -170,7 +173,7 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) { break; case R.id.navShows: - intent = new Intent(this, List.class); + intent = new Intent(this, Shows.class); startActivity(intent); finish(); break; diff --git a/app/src/main/java/info/horriblesubs/sher/old/activity/Home.java b/app/src/main/java/info/horriblesubs/sher/old/activity/Home.java deleted file mode 100644 index c468bc5..0000000 --- a/app/src/main/java/info/horriblesubs/sher/old/activity/Home.java +++ /dev/null @@ -1,250 +0,0 @@ -package info.horriblesubs.sher.old.activity; - -import android.annotation.SuppressLint; -import android.support.v7.app.AppCompatActivity; - -@SuppressLint("StaticFieldLeak") -public class Home extends AppCompatActivity { -/* - public static SearchView searchView = null; - private ImageView imageView; - - @Override - protected void onCreate(final Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_home_x); - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - final TextView textView = findViewById(R.id.textView); - BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior - .from(findViewById(R.id.bottomSheet)); - bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); - bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { - @Override - public void onStateChanged(@NonNull View bottomSheet, int newState) { - if (newState == BottomSheetBehavior.STATE_COLLAPSED) - textView.setCompoundDrawablesWithIntrinsicBounds(null, - getResources().getDrawable(R.drawable.ic_up), null, null); - else - textView.setCompoundDrawablesWithIntrinsicBounds(null, - getResources().getDrawable(R.drawable.ic_down), null, null); - } - - @Override - public void onSlide(@NonNull View bottomSheet, float slideOffset) { - - } - }); - RecyclerView recyclerView = findViewById(R.id.recyclerView); - new FetchScheduleItems().execute("?mode=schedule"); - new LoadScheduleItems(recyclerView, this, null, 1).execute(); - - Home.searchView = findViewById(R.id.searchView); - SearchView searchView = Home.searchView; - EditText editText = searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); - editText.setTextColor(getResources().getColor(R.color.colorPrimaryDark)); - editText.setHintTextColor(getResources().getColor(R.color.colorPrimaryDark)); - editText.setGravity(Gravity.CENTER); - editText.setTextSize((float) 14.5); - searchView.setQueryHint(getResources().getString(R.string.app_name)); - searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { - @Override - public boolean onQueryTextSubmit(String query) { - Intent intent = new Intent(Home.this, Search.class); - intent.putExtra(Search.SEARCH_HS, query); - startActivity(intent); - return true; - } - - @Override - public boolean onQueryTextChange(String newText) { - return false; - } - }); - - findViewById(R.id.imageViewDrawer).setOnClickListener(this); - this.imageView = findViewById(R.id.imageViewNotification); - this.imageView.setOnClickListener(this); - - invalidateNotifications(); - - NavigationView navigationView = findViewById(R.id.nav_view); - navigationView.setNavigationItemSelectedListener(this); - - ViewPager viewPager = findViewById(R.id.viewPager); - TabLayout tabLayout = findViewById(R.id.tabLayout); - tabLayout.addTab(tabLayout.newTab().setText("All")); - tabLayout.addTab(tabLayout.newTab().setText("Batches")); - PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager()); - viewPager.setAdapter(pagerAdapter); - viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); - tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager)); - } - - @Override - public void onBackPressed() { - DrawerLayout drawerLayout = findViewById(R.id.drawerLayout); - if (drawerLayout.isDrawerOpen(GravityCompat.START) && - !Home.searchView.getQuery().toString().isEmpty()) { - Home.searchView.setQuery("", false); - drawerLayout.closeDrawer(GravityCompat.START); - } else { - super.onBackPressed(); - } - } - - @Override - public boolean onNavigationItemSelected(@NonNull MenuItem item) { - Intent intent; - switch (item.getItemId()) { - case R.id.navHome: - break; - - case R.id.navSchedule: - intent = new Intent(this, Schedule.class); - startActivity(intent); - finish(); - break; - - case R.id.navFav: - intent = new Intent(this, Favourite.class); - startActivity(intent); - finish(); - break; - - case R.id.navShows: - intent = new Intent(this, List.class); - startActivity(intent); - finish(); - break; - - case R.id.navRss: - break; - - case R.id.navBrowser: - break; - - case R.id.navFeedback: - break; - - case R.id.navShare: - break; - - case R.id.navAbout: - intent = new Intent(this, About.class); - startActivity(intent); - break; - } - - DrawerLayout drawer = findViewById(R.id.drawerLayout); - drawer.closeDrawer(GravityCompat.START); - return true; - } - - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.imageViewDrawer: - DrawerLayout drawerLayout = findViewById(R.id.drawerLayout); - if (drawerLayout.isDrawerOpen(GravityCompat.START)) - drawerLayout.closeDrawer(GravityCompat.START); - else - drawerLayout.openDrawer(GravityCompat.START); - break; - - case R.id.imageViewNotification: - SharedPreferences sharedPreferences = getSharedPreferences("horriblesubs-prefs", - Context.MODE_PRIVATE); - boolean b = sharedPreferences.getBoolean("notification-on", false); - final DialogX dialogX = new DialogX(this); - if (b) { - dialogX.setTitle("Disable Notifications") - .setDescription("This will disable new release notifications, You will not be able receive notifications on any new release."); - dialogX.positiveButton("OK", new View.OnClickListener() { - @Override - public void onClick(View v) { - removeNotificationAlert(); - dialogX.dismiss(); - } - }); - } else { - dialogX.setTitle("Enable Notifications") - .setDescription("This will enable new release notifications, You will receive notifications on every new release."); - dialogX.positiveButton("OK", new View.OnClickListener() { - @Override - public void onClick(View v) { - setNotificationAlert(); - dialogX.dismiss(); - } - }); - } - dialogX.negativeButton("CANCEL", new View.OnClickListener() { - @Override - public void onClick(View v) { - dialogX.dismiss(); - } - }); - dialogX.show(); - break; - } - } - - private void invalidateNotifications() { - SharedPreferences sharedPreferences = this - .getSharedPreferences("horriblesubs-prefs", Context.MODE_PRIVATE); - boolean b = sharedPreferences.getBoolean("notification-on", false); - if (b) { - imageView.setContentDescription("Disable Notifications"); - imageView.setImageResource(R.drawable.ic_notifications_on); - } else { - imageView.setContentDescription("Enable Notifications"); - imageView.setImageResource(R.drawable.ic_notifications_off); - } - } - - private void removeNotificationAlert() { - SharedPreferences sharedPreferences = this.getSharedPreferences("horriblesubs-prefs", Context.MODE_PRIVATE); - sharedPreferences.edit().putBoolean("notification-on", false).apply(); - FirebaseMessaging.getInstance().unsubscribeFromTopic("all"); - Intent intent = new Intent(Home.this, Notification.class); - PendingIntent pendingIntent = PendingIntent - .getBroadcast(Home.this, 4869, intent, 0); - AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); - assert alarmManager != null; - alarmManager.cancel(pendingIntent); - invalidateNotifications(); - } - - private void setNotificationAlert() { - SharedPreferences sharedPreferences = this.getSharedPreferences("horriblesubs-prefs", Context.MODE_PRIVATE); - sharedPreferences.edit().putBoolean("notification-on", true).apply(); - FirebaseMessaging.getInstance().subscribeToTopic("all"); - Intent intent = new Intent(Home.this, Notification.class); - PendingIntent pendingIntent = PendingIntent - .getBroadcast(Home.this, 4869, intent, 0); - AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); - assert alarmManager != null; - alarmManager.setInexactRepeating(AlarmManager.RTC, System.currentTimeMillis(), - AlarmManager.INTERVAL_HOUR, pendingIntent); - invalidateNotifications(); - } - - class PagerAdapter extends FragmentPagerAdapter { - - PagerAdapter(FragmentManager fragmentManager) { - super(fragmentManager); - } - - @Override - public Fragment getItem(int position) { - return info.horriblesubs.sher.old.fragment.Home.newInstance(position); - } - - @Override - public int getCount() { - return 2; - } - } -*/ -} \ No newline at end of file diff --git a/app/src/main/java/info/horriblesubs/sher/old/activity/List.java b/app/src/main/java/info/horriblesubs/sher/old/activity/List.java deleted file mode 100644 index 07d5d01..0000000 --- a/app/src/main/java/info/horriblesubs/sher/old/activity/List.java +++ /dev/null @@ -1,158 +0,0 @@ -package info.horriblesubs.sher.old.activity; - -import android.annotation.SuppressLint; -import android.support.v7.app.AppCompatActivity; - -@SuppressLint("StaticFieldLeak") -public class List extends AppCompatActivity { -/* - @Override - protected void onCreate(final Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_home_x); - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - final TextView textView = findViewById(R.id.textView); - BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior - .from(findViewById(R.id.bottomSheet)); - bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); - bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { - @Override - public void onStateChanged(@NonNull View bottomSheet, int newState) { - if (newState == BottomSheetBehavior.STATE_COLLAPSED) - textView.setCompoundDrawablesWithIntrinsicBounds(null, - getResources().getDrawable(R.drawable.ic_up), null, null); - else - textView.setCompoundDrawablesWithIntrinsicBounds(null, - getResources().getDrawable(R.drawable.ic_down), null, null); - } - - @Override - public void onSlide(@NonNull View bottomSheet, float slideOffset) { - - } - }); - RecyclerView recyclerView = findViewById(R.id.recyclerView); - new FetchScheduleItems().execute("?mode=schedule"); - new LoadScheduleItems(recyclerView, this, null, 1).execute(); - - Home.searchView = findViewById(R.id.searchView); - SearchView searchView = Home.searchView; - EditText editText = searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); - editText.setTextColor(getResources().getColor(R.color.colorPrimaryDark)); - editText.setHintTextColor(getResources().getColor(R.color.colorPrimaryDark)); - editText.setGravity(Gravity.CENTER); - editText.setTextSize((float) 14.5); - searchView.setQueryHint(getResources().getString(R.string.shows)); - - findViewById(R.id.imageViewDrawer).setOnClickListener(this); - findViewById(R.id.imageViewNotification).setVisibility(View.INVISIBLE); - findViewById(R.id.imageViewNotification).setEnabled(false); - findViewById(R.id.imageViewNotification).setClickable(false); - - NavigationView navigationView = findViewById(R.id.nav_view); - navigationView.setNavigationItemSelectedListener(this); - - ViewPager viewPager = findViewById(R.id.viewPager); - TabLayout tabLayout = findViewById(R.id.tabLayout); - tabLayout.addTab(tabLayout.newTab().setText("Current Shows")); - tabLayout.addTab(tabLayout.newTab().setText("All")); - PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager()); - viewPager.setAdapter(pagerAdapter); - viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); - tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager)); - } - - @Override - public void onBackPressed() { - DrawerLayout drawerLayout = findViewById(R.id.drawerLayout); - if (drawerLayout.isDrawerOpen(GravityCompat.START) && - !Home.searchView.getQuery().toString().isEmpty()) { - Home.searchView.setQuery("", false); - drawerLayout.closeDrawer(GravityCompat.START); - } else { - super.onBackPressed(); - } - } - - @Override - public boolean onNavigationItemSelected(@NonNull MenuItem item) { - Intent intent; - switch (item.getItemId()) { - case R.id.navHome: - intent = new Intent(this, Home.class); - startActivity(intent); - finish(); - break; - - case R.id.navSchedule: - intent = new Intent(this, Schedule.class); - startActivity(intent); - finish(); - break; - - case R.id.navFav: - intent = new Intent(this, Favourite.class); - startActivity(intent); - finish(); - break; - - case R.id.navShows: - break; - - case R.id.navRss: - break; - - case R.id.navBrowser: - break; - - case R.id.navFeedback: - break; - - case R.id.navAbout: - intent = new Intent(this, About.class); - startActivity(intent); - break; - - case R.id.navShare: - break; - - } - - DrawerLayout drawer = findViewById(R.id.drawerLayout); - drawer.closeDrawer(GravityCompat.START); - return true; - } - - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.imageViewDrawer: - DrawerLayout drawerLayout = findViewById(R.id.drawerLayout); - if (drawerLayout.isDrawerOpen(GravityCompat.START)) - drawerLayout.closeDrawer(GravityCompat.START); - else - drawerLayout.openDrawer(GravityCompat.START); - break; - } - } - - class PagerAdapter extends FragmentPagerAdapter { - - PagerAdapter(FragmentManager fragmentManager) { - super(fragmentManager); - } - - @Override - public Fragment getItem(int position) { - return info.horriblesubs.sher.old.fragment.List.newInstance(position); - } - - @Override - public int getCount() { - return 2; - } - } -*/ -} \ No newline at end of file diff --git a/app/src/main/java/info/horriblesubs/sher/old/activity/Schedule.java b/app/src/main/java/info/horriblesubs/sher/old/activity/Schedule.java deleted file mode 100644 index 1a5cdb4..0000000 --- a/app/src/main/java/info/horriblesubs/sher/old/activity/Schedule.java +++ /dev/null @@ -1,163 +0,0 @@ -package info.horriblesubs.sher.old.activity; - -import android.annotation.SuppressLint; -import android.support.v7.app.AppCompatActivity; - -@SuppressLint("StaticFieldLeak") -public class Schedule extends AppCompatActivity { -/* - public static java.util.List scheduleItems; - private final String[] DAYS = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", - "Friday", "Saturday", "To be Scheduled"}; - - @Override - protected void onCreate(final Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_home_x); - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - final TextView textView = findViewById(R.id.textView); - RecyclerView recyclerView = findViewById(R.id.recyclerView); - BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior - .from(findViewById(R.id.bottomSheet)); - bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); - bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { - @Override - public void onStateChanged(@NonNull View bottomSheet, int newState) { - if (newState == BottomSheetBehavior.STATE_COLLAPSED) - textView.setCompoundDrawablesWithIntrinsicBounds(null, - getResources().getDrawable(R.drawable.ic_up), null, null); - else - textView.setCompoundDrawablesWithIntrinsicBounds(null, - getResources().getDrawable(R.drawable.ic_down), null, null); - } - - @Override - public void onSlide(@NonNull View bottomSheet, float slideOffset) { - - } - }); - new FetchScheduleItems().execute("?mode=schedule"); - new LoadScheduleItems(recyclerView, this, null, 1).execute(); - - Home.searchView = findViewById(R.id.searchView); - SearchView searchView = Home.searchView; - searchView.setQueryHint(getResources().getString(R.string.schedule)); - EditText editText = searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); - editText.setTextColor(getResources().getColor(R.color.colorPrimaryDark)); - editText.setHintTextColor(getResources().getColor(R.color.colorPrimaryDark)); - editText.setGravity(Gravity.CENTER); - editText.setTextSize((float) 14.5); - - findViewById(R.id.imageViewDrawer).setOnClickListener(this); - findViewById(R.id.imageViewNotification).setVisibility(View.INVISIBLE); - findViewById(R.id.imageViewNotification).setEnabled(false); - findViewById(R.id.imageViewNotification).setClickable(false); - - NavigationView navigationView = findViewById(R.id.nav_view); - navigationView.setNavigationItemSelectedListener(this); - - ViewPager viewPager = findViewById(R.id.viewPager); - TabLayout tabLayout = findViewById(R.id.tabLayout); - tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE); - for (String s : DAYS) - tabLayout.addTab(tabLayout.newTab().setText(s)); - PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager()); - viewPager.setAdapter(pagerAdapter); - viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); - tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager)); - } - - @Override - public void onBackPressed() { - DrawerLayout drawerLayout = findViewById(R.id.drawerLayout); - if (drawerLayout.isDrawerOpen(GravityCompat.START) && - !Home.searchView.getQuery().toString().isEmpty()) { - Home.searchView.setQuery("", false); - drawerLayout.closeDrawer(GravityCompat.START); - } else { - super.onBackPressed(); - } - } - - @Override - public boolean onNavigationItemSelected(@NonNull MenuItem item) { - Intent intent; - switch (item.getItemId()) { - case R.id.navHome: - intent = new Intent(this, Home.class); - startActivity(intent); - finish(); - break; - - case R.id.navSchedule: - break; - - case R.id.navShows: - intent = new Intent(this, List.class); - startActivity(intent); - finish(); - break; - - case R.id.navRss: - break; - - case R.id.navBrowser: - break; - - case R.id.navFeedback: - break; - - case R.id.navShare: - break; - - case R.id.navFav: - intent = new Intent(this, Favourite.class); - startActivity(intent); - finish(); - break; - - case R.id.navAbout: - intent = new Intent(this, About.class); - startActivity(intent); - break; - } - - DrawerLayout drawer = findViewById(R.id.drawerLayout); - drawer.closeDrawer(GravityCompat.START); - return true; - } - - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.imageViewDrawer: - DrawerLayout drawerLayout = findViewById(R.id.drawerLayout); - if (drawerLayout.isDrawerOpen(GravityCompat.START)) - drawerLayout.closeDrawer(GravityCompat.START); - else - drawerLayout.openDrawer(GravityCompat.START); - break; - } - } - - class PagerAdapter extends FragmentPagerAdapter { - - PagerAdapter(FragmentManager fragmentManager) { - super(fragmentManager); - } - - @Override - public Fragment getItem(int position) { - return info.horriblesubs.sher.old.fragment.Schedule - .newInstance(position + 2); - } - - @Override - public int getCount() { - return 8; - } - } -*/ -} \ No newline at end of file diff --git a/app/src/main/java/info/horriblesubs/sher/old/activity/Search.java b/app/src/main/java/info/horriblesubs/sher/old/activity/Search.java deleted file mode 100644 index 5fac7a7..0000000 --- a/app/src/main/java/info/horriblesubs/sher/old/activity/Search.java +++ /dev/null @@ -1,137 +0,0 @@ -package info.horriblesubs.sher.old.activity; - -import android.annotation.SuppressLint; -import android.support.v7.app.AppCompatActivity; - -@SuppressLint("StaticFieldLeak") -public class Search extends AppCompatActivity { -/* - public static final String SEARCH_HS = "HSS_PARAM"; - private RecyclerView recyclerView; - private SwipeRefreshLayout swipeRefreshLayout; - - @Override - protected void onCreate(final Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_search); - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - SearchView searchView = findViewById(R.id.searchView); - EditText editText = searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); - editText.setTextColor(getResources().getColor(R.color.colorPrimaryDark)); - editText.setHintTextColor(getResources().getColor(R.color.colorPrimaryDark)); - editText.setGravity(Gravity.CENTER); - editText.setTextSize((float) 14.5); - - recyclerView = findViewById(R.id.recyclerView); - swipeRefreshLayout = findViewById(R.id.swipeRefreshLayout); - - String searchQuery = null; - Intent intent = getIntent(); - if (intent != null) - searchQuery = intent.getStringExtra(SEARCH_HS); - searchView.setQueryHint(getResources().getString(R.string.app_name)); - if (searchQuery != null) { - searchView.setQuery(searchQuery, true); - new FetchReleaseItems(this, recyclerView, swipeRefreshLayout) - .execute("?mode=search&search=" + searchQuery); - } - - new FetchReleaseItems(this, recyclerView, swipeRefreshLayout); - - findViewById(R.id.imageViewDrawer).setOnClickListener(this); - - NavigationView navigationView = findViewById(R.id.nav_view); - navigationView.setNavigationItemSelectedListener(this); - - searchView.setOnQueryTextListener(this); - } - - @Override - public void onBackPressed() { - DrawerLayout drawerLayout = findViewById(R.id.drawerLayout); - if (drawerLayout.isDrawerOpen(GravityCompat.START)) { - drawerLayout.closeDrawer(GravityCompat.START); - } else { - super.onBackPressed(); - } - } - - @Override - public boolean onNavigationItemSelected(@NonNull MenuItem item) { - Intent intent; - switch (item.getItemId()) { - case R.id.navHome: - intent = new Intent(this, Home.class); - startActivity(intent); - finish(); - break; - - case R.id.navSchedule: - intent = new Intent(this, Schedule.class); - startActivity(intent); - finish(); - break; - - case R.id.navFav: - intent = new Intent(this, Favourite.class); - startActivity(intent); - finish(); - break; - - case R.id.navShows: - intent = new Intent(this, List.class); - startActivity(intent); - finish(); - break; - - case R.id.navRss: - break; - - case R.id.navBrowser: - break; - - case R.id.navFeedback: - break; - - case R.id.navShare: - break; - - case R.id.navAbout: - intent = new Intent(this, About.class); - startActivity(intent); - break; - } - - DrawerLayout drawer = findViewById(R.id.drawerLayout); - drawer.closeDrawer(GravityCompat.START); - return true; - } - - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.imageViewDrawer: - DrawerLayout drawerLayout = findViewById(R.id.drawerLayout); - if (drawerLayout.isDrawerOpen(GravityCompat.START)) - drawerLayout.closeDrawer(GravityCompat.START); - else - drawerLayout.openDrawer(GravityCompat.START); - break; - } - } - - @Override - public boolean onQueryTextSubmit(String query) { - new FetchReleaseItems(this, recyclerView, swipeRefreshLayout) - .execute("?mode=search&search=" + query); - return true; - } - - @Override - public boolean onQueryTextChange(String newText) { - return false; - } -*/ -} \ No newline at end of file diff --git a/app/src/main/java/info/horriblesubs/sher/old/fragment/Home.java b/app/src/main/java/info/horriblesubs/sher/old/fragment/Home.java deleted file mode 100644 index 3f9456a..0000000 --- a/app/src/main/java/info/horriblesubs/sher/old/fragment/Home.java +++ /dev/null @@ -1,49 +0,0 @@ -package info.horriblesubs.sher.old.fragment; - -import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.Fragment; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import info.horriblesubs.sher.R; -import info.horriblesubs.sher.old.task.FetchReleaseItems; - -public class Home extends Fragment { - - private static final String ARG_SECTION_NUMBER = "section_number"; - private SwipeRefreshLayout swipeRefreshLayout; - private RecyclerView recyclerView; - private String s; - - public static Home newInstance(int i) { - Home fragment = new Home(); - Bundle args = new Bundle(); - args.putInt(ARG_SECTION_NUMBER, i); - fragment.setArguments(args); - return fragment; - } - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_shows, container, false); - recyclerView = rootView.findViewById(R.id.recyclerView); - swipeRefreshLayout = rootView.findViewById(R.id.textView); - assert getArguments() != null; - s = "?mode=latest"; - if (getArguments().getInt(ARG_SECTION_NUMBER, 0) == 1) - s = "?mode=latest-batch"; - new FetchReleaseItems(getContext(), recyclerView, swipeRefreshLayout).execute(s); - swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { - @Override - public void onRefresh() { - new FetchReleaseItems(getContext(), recyclerView, swipeRefreshLayout).execute(s); - } - }); - return rootView; - } -} \ No newline at end of file diff --git a/app/src/main/java/info/horriblesubs/sher/old/fragment/List.java b/app/src/main/java/info/horriblesubs/sher/old/fragment/List.java deleted file mode 100644 index ee9df90..0000000 --- a/app/src/main/java/info/horriblesubs/sher/old/fragment/List.java +++ /dev/null @@ -1,82 +0,0 @@ -package info.horriblesubs.sher.old.fragment; - -import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.Fragment; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import info.horriblesubs.sher.R; -import info.horriblesubs.sher.old.task.FetchListItems; - -public class List extends Fragment { - - private static final String ARG_SECTION_NUMBER = "section_number"; - private SwipeRefreshLayout swipeRefreshLayout; - private RecyclerView recyclerView; - private String s; - - public static List newInstance(int i) { - List fragment = new List(); - Bundle args = new Bundle(); - args.putInt(ARG_SECTION_NUMBER, i); - fragment.setArguments(args); - return fragment; - } - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_shows, container, false); - recyclerView = rootView.findViewById(R.id.recyclerView); - swipeRefreshLayout = rootView.findViewById(R.id.recyclerView); - assert getArguments() != null; - s = "?mode=list-current"; - if (getArguments().getInt(ARG_SECTION_NUMBER, 0) == 1) - s = "?mode=list-all"; - new FetchListItems(getContext(), recyclerView, swipeRefreshLayout).execute(s); - swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { - @Override - public void onRefresh() { - new FetchListItems(getContext(), recyclerView, swipeRefreshLayout).execute(s); - } - }); - if (null != null) - if (getArguments().getInt(ARG_SECTION_NUMBER, 0) == 0) { - rootView.setEnabled(false); - rootView.findViewById(android.support.v7.appcompat.R.id.search_src_text) - .setEnabled(false); - } else { - rootView.setEnabled(true); - rootView.findViewById(android.support.v7.appcompat.R.id.search_src_text) - .setEnabled(true); - /* - rootView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { - private java.util.List itemList = null; - - @Override - public boolean onQueryTextSubmit(String query) { - return false; - } - - @Override - public boolean onQueryTextChange(String newText) { - java.util.List items = new ArrayList<>(); - ListRecycler listRecycler = (ListRecycler) recyclerView.getAdapter(); - if (itemList == null) - itemList = listRecycler.getItems(); - for (Item item : itemList) - if (item.title.toLowerCase().contains(newText.toLowerCase())) - items.add(item); - listRecycler.onQueryUpdate(items); - return false; - } - }); - */ - } - return rootView; - } -} \ No newline at end of file diff --git a/app/src/main/java/info/horriblesubs/sher/old/fragment/Schedule.java b/app/src/main/java/info/horriblesubs/sher/old/fragment/Schedule.java deleted file mode 100644 index 43bfd72..0000000 --- a/app/src/main/java/info/horriblesubs/sher/old/fragment/Schedule.java +++ /dev/null @@ -1,50 +0,0 @@ -package info.horriblesubs.sher.old.fragment; - -import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.Fragment; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import info.horriblesubs.sher.R; -import info.horriblesubs.sher.old.task.FetchScheduleItems; -import info.horriblesubs.sher.old.task.LoadScheduleItems; - -public class Schedule extends Fragment { - - private static final String ARG_SECTION_NUMBER = "section_number"; - - public static Schedule newInstance(int sectionNumber) { - Schedule fragment = new Schedule(); - Bundle args = new Bundle(); - args.putInt(ARG_SECTION_NUMBER, sectionNumber); - fragment.setArguments(args); - return fragment; - } - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_shows, container, false); - final RecyclerView recyclerView = rootView.findViewById(R.id.recyclerView); - final SwipeRefreshLayout swipeRefreshLayout = rootView.findViewById(R.id.textView); - assert getArguments() != null; - new LoadScheduleItems(recyclerView, getContext(), swipeRefreshLayout, - getArguments().getInt(ARG_SECTION_NUMBER)) - .execute(); - swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { - @Override - public void onRefresh() { - new FetchScheduleItems().execute("?mode=schedule"); - new LoadScheduleItems(recyclerView, getContext(), swipeRefreshLayout, - getArguments().getInt(ARG_SECTION_NUMBER)) - .execute(); - swipeRefreshLayout.setRefreshing(false); - } - }); - return rootView; - } -} \ No newline at end of file diff --git a/app/src/main/java/info/horriblesubs/sher/old/receiver/Notification.java b/app/src/main/java/info/horriblesubs/sher/old/receiver/Notification.java deleted file mode 100644 index 34a777a..0000000 --- a/app/src/main/java/info/horriblesubs/sher/old/receiver/Notification.java +++ /dev/null @@ -1,58 +0,0 @@ -package info.horriblesubs.sher.old.receiver; - -import android.app.AlarmManager; -import android.app.PendingIntent; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.SharedPreferences; - -import com.google.firebase.messaging.FirebaseMessaging; - -import org.jetbrains.annotations.NotNull; - -import info.horriblesubs.sher.BuildConfig; -import info.horriblesubs.sher.old.task.NotificationRequest; - -public class Notification extends BroadcastReceiver { - - @Override - public void onReceive(Context context, Intent intent) { - if (Intent.ACTION_LOCKED_BOOT_COMPLETED.equals(intent.getAction()) || - Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { - SharedPreferences sharedPreferences = context - .getSharedPreferences("horriblesubs-prefs", Context.MODE_PRIVATE); - boolean b = sharedPreferences.getBoolean("notification-on", false); - if (b) { - removeNotificationAlert(context.getApplicationContext()); - setNotificationAlert(context.getApplicationContext()); - } - } - new NotificationRequest().execute(BuildConfig.HAPI + "?mode=notification"); - } - - private void removeNotificationAlert(@NotNull Context context) { - SharedPreferences sharedPreferences = context.getSharedPreferences("horriblesubs-prefs", Context.MODE_PRIVATE); - sharedPreferences.edit().putBoolean("notification-on", false).apply(); - FirebaseMessaging.getInstance().unsubscribeFromTopic("all"); - Intent intent = new Intent(context, Notification.class); - PendingIntent pendingIntent = PendingIntent - .getBroadcast(context, 4869, intent, 0); - AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); - assert alarmManager != null; - alarmManager.cancel(pendingIntent); - } - - private void setNotificationAlert(@NotNull Context context) { - SharedPreferences sharedPreferences = context.getSharedPreferences("horriblesubs-prefs", Context.MODE_PRIVATE); - sharedPreferences.edit().putBoolean("notification-on", true).apply(); - FirebaseMessaging.getInstance().subscribeToTopic("all"); - Intent intent = new Intent(context, Notification.class); - PendingIntent pendingIntent = PendingIntent - .getBroadcast(context, 4869, intent, 0); - AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); - assert alarmManager != null; - alarmManager.setInexactRepeating(AlarmManager.RTC, System.currentTimeMillis(), - AlarmManager.INTERVAL_HOUR, pendingIntent); - } -} \ No newline at end of file diff --git a/app/src/main/java/info/horriblesubs/sher/old/service/IdService.java b/app/src/main/java/info/horriblesubs/sher/old/service/IdService.java index 2375760..13af427 100644 --- a/app/src/main/java/info/horriblesubs/sher/old/service/IdService.java +++ b/app/src/main/java/info/horriblesubs/sher/old/service/IdService.java @@ -1,6 +1,5 @@ package info.horriblesubs.sher.old.service; -import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.support.v4.content.LocalBroadcastManager; @@ -9,6 +8,8 @@ import com.google.firebase.iid.FirebaseInstanceId; import com.google.firebase.iid.FirebaseInstanceIdService; +import info.horriblesubs.sher.Api; + public class IdService extends FirebaseInstanceIdService { private static final String TAG = "HorribleSubsIdService"; @@ -27,9 +28,7 @@ public void onTokenRefresh() { } private void storeToken(String s) { - this.getSharedPreferences("horriblesubs-prefs", Context.MODE_PRIVATE); - SharedPreferences sharedPreferences = getSharedPreferences("horriblesubs-prefs", - Context.MODE_PRIVATE); + SharedPreferences sharedPreferences = getSharedPreferences(Api.Prefs, MODE_PRIVATE); sharedPreferences.edit().putString("token", s).apply(); } } diff --git a/app/src/main/java/info/horriblesubs/sher/old/task/FetchListItems.java b/app/src/main/java/info/horriblesubs/sher/old/task/FetchListItems.java deleted file mode 100644 index a5a61dd..0000000 --- a/app/src/main/java/info/horriblesubs/sher/old/task/FetchListItems.java +++ /dev/null @@ -1,77 +0,0 @@ -package info.horriblesubs.sher.old.task; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.AsyncTask; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.DefaultItemAnimator; -import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.RecyclerView; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.List; - -import info.horriblesubs.sher.BuildConfig; -import info.horriblesubs.sher.adapter.ListRecycler; -import info.horriblesubs.sher.model.base.Item; - -@SuppressLint("StaticFieldLeak") -public class FetchListItems extends AsyncTask> { - - private final Context context; - private final RecyclerView recyclerView; - private final SwipeRefreshLayout swipeRefreshLayout; - - public FetchListItems(Context context, RecyclerView recyclerView, - SwipeRefreshLayout swipeRefreshLayout) { - this.context = context; - this.recyclerView = recyclerView; - this.swipeRefreshLayout = swipeRefreshLayout; - } - - @Override - protected void onPreExecute() { - super.onPreExecute(); - swipeRefreshLayout.setRefreshing(true); - } - - @Override - protected List doInBackground(String... strings) { - String s = BuildConfig.HAPI + strings[0]; - try { - URL url = new URL(s); - HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); - try { - httpURLConnection.connect(); - BufferedReader bufferedReader = new BufferedReader(new - InputStreamReader(httpURLConnection.getInputStream())); - return new Gson().fromJson(bufferedReader, - new TypeToken>() { - }.getType()); - } finally { - if (httpURLConnection != null) - httpURLConnection.disconnect(); - } - } catch (IOException e) { - e.printStackTrace(); - return null; - } - } - - @Override - protected void onPostExecute(final List items) { - super.onPostExecute(items); - final ListRecycler listRecycler = new ListRecycler(context, items); - recyclerView.setItemAnimator(new DefaultItemAnimator()); - recyclerView.setLayoutManager(new GridLayoutManager(context, 2)); - recyclerView.setAdapter(listRecycler); - swipeRefreshLayout.setRefreshing(false); - } -} \ No newline at end of file diff --git a/app/src/main/java/info/horriblesubs/sher/old/task/FetchScheduleItems.java b/app/src/main/java/info/horriblesubs/sher/old/task/FetchScheduleItems.java deleted file mode 100644 index 5b0cece..0000000 --- a/app/src/main/java/info/horriblesubs/sher/old/task/FetchScheduleItems.java +++ /dev/null @@ -1,54 +0,0 @@ -package info.horriblesubs.sher.old.task; - -import android.annotation.SuppressLint; -import android.os.AsyncTask; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.List; - -import info.horriblesubs.sher.BuildConfig; -import info.horriblesubs.sher.model.base.ScheduleItem; - -@SuppressLint("StaticFieldLeak") -public class FetchScheduleItems extends AsyncTask> { - - public FetchScheduleItems() { - } - - @Override - protected List doInBackground(String... strings) { - String s = BuildConfig.HAPI + strings[0]; - try { - URL url = new URL(s); - HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); - try { - httpURLConnection.connect(); - BufferedReader bufferedReader = new BufferedReader(new - InputStreamReader(httpURLConnection.getInputStream())); - return new Gson().fromJson(bufferedReader, - new TypeToken>() { - }.getType()); - } finally { - if (httpURLConnection != null) - httpURLConnection.disconnect(); - } - } catch (IOException e) { - e.printStackTrace(); - return null; - } - } - - @Override - protected void onPostExecute(List scheduleItems) { - super.onPostExecute(scheduleItems); - if (scheduleItems != null) - scheduleItems = scheduleItems; - } -} \ No newline at end of file diff --git a/app/src/main/java/info/horriblesubs/sher/old/task/LoadScheduleItems.java b/app/src/main/java/info/horriblesubs/sher/old/task/LoadScheduleItems.java deleted file mode 100644 index 3cef282..0000000 --- a/app/src/main/java/info/horriblesubs/sher/old/task/LoadScheduleItems.java +++ /dev/null @@ -1,76 +0,0 @@ -package info.horriblesubs.sher.old.task; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.AsyncTask; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.DefaultItemAnimator; -import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.RecyclerView; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.List; - -import info.horriblesubs.sher.adapter.ScheduleRecycler; -import info.horriblesubs.sher.model.base.ScheduleItem; - -@SuppressLint("StaticFieldLeak") -public class LoadScheduleItems extends AsyncTask> { - - private final int i; - private final Context context; - private final RecyclerView recyclerView; - private final SwipeRefreshLayout swipeRefreshLayout; - - public LoadScheduleItems(RecyclerView recyclerView, Context context, - SwipeRefreshLayout swipeRefreshLayout, int i) { - this.swipeRefreshLayout = swipeRefreshLayout; - this.recyclerView = recyclerView; - this.context = context; - this.i = i; - } - - @Override - protected void onPreExecute() { - super.onPreExecute(); - if (swipeRefreshLayout != null) - swipeRefreshLayout.setRefreshing(true); - } - - @Override - protected List doInBackground(Void... voids) { - while (true) - if (null != null) - break; - List scheduleItems = null; - if (scheduleItems != null) { - List scheduleItemList = new ArrayList<>(); - Calendar calendar1 = Calendar.getInstance(); - Calendar calendar2 = Calendar.getInstance(); - for (ScheduleItem scheduleItem : scheduleItems) { - calendar1.setTime(scheduleItem.getTime()); - if (i == 1) { - if (calendar1.get(Calendar.DAY_OF_WEEK) == calendar2.get(Calendar.DAY_OF_WEEK) - && scheduleItem.isScheduled) - scheduleItemList.add(scheduleItem); - } else if (i == 9 && !scheduleItem.isScheduled) - scheduleItemList.add(scheduleItem); - else if (calendar1.get(Calendar.DAY_OF_WEEK) == i - 1 && scheduleItem.isScheduled) - scheduleItemList.add(scheduleItem); - } - return scheduleItemList; - } else - return null; - } - - @Override - protected void onPostExecute(List scheduleItems) { - super.onPostExecute(scheduleItems); - recyclerView.setItemAnimator(new DefaultItemAnimator()); - recyclerView.setLayoutManager(new GridLayoutManager(context, 2)); - recyclerView.setAdapter(new ScheduleRecycler(context, scheduleItems)); - if (swipeRefreshLayout != null) - swipeRefreshLayout.setRefreshing(false); - } -} \ No newline at end of file diff --git a/app/src/main/java/info/horriblesubs/sher/old/task/NotificationRequest.java b/app/src/main/java/info/horriblesubs/sher/old/task/NotificationRequest.java deleted file mode 100644 index b7ceea2..0000000 --- a/app/src/main/java/info/horriblesubs/sher/old/task/NotificationRequest.java +++ /dev/null @@ -1,36 +0,0 @@ -package info.horriblesubs.sher.old.task; - -import android.annotation.SuppressLint; -import android.os.AsyncTask; -import android.util.Log; - -import java.io.IOException; -import java.net.HttpURLConnection; -import java.net.URL; - -/** - * NotificationRequest via FCM AsyncTask. - */ - -@SuppressLint("StaticFieldLeak") -public class NotificationRequest extends AsyncTask { - - public NotificationRequest() { - } - - @Override - protected Void doInBackground(String... strings) { - HttpURLConnection httpURLConnection = null; - try { - httpURLConnection = (HttpURLConnection) new URL(strings[0]).openConnection(); - Log.v(NotificationRequest.class.getSimpleName(), httpURLConnection.getResponseMessage()); - } catch (IOException e) { - e.printStackTrace(); - } finally { - if (httpURLConnection != null) - httpURLConnection.disconnect(); - } - return null; - } - -} diff --git a/app/src/main/java/info/horriblesubs/sher/old/util/DialogX.java b/app/src/main/java/info/horriblesubs/sher/util/DialogX.java similarity index 98% rename from app/src/main/java/info/horriblesubs/sher/old/util/DialogX.java rename to app/src/main/java/info/horriblesubs/sher/util/DialogX.java index c1aad82..e8d848e 100644 --- a/app/src/main/java/info/horriblesubs/sher/old/util/DialogX.java +++ b/app/src/main/java/info/horriblesubs/sher/util/DialogX.java @@ -1,4 +1,4 @@ -package info.horriblesubs.sher.old.util; +package info.horriblesubs.sher.util; import android.app.Dialog; import android.content.Context; diff --git a/app/src/main/res/layout/activity_schedule.xml b/app/src/main/res/layout/activity_schedule.xml new file mode 100644 index 0000000..c36f90d --- /dev/null +++ b/app/src/main/res/layout/activity_schedule.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/content_schedule.xml b/app/src/main/res/layout/content_schedule.xml new file mode 100644 index 0000000..b1e18a2 --- /dev/null +++ b/app/src/main/res/layout/content_schedule.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home_2.xml b/app/src/main/res/layout/fragment_home_2.xml index a7c7208..d45c6cc 100644 --- a/app/src/main/res/layout/fragment_home_2.xml +++ b/app/src/main/res/layout/fragment_home_2.xml @@ -52,9 +52,9 @@ android:layout_gravity="end" android:layout_marginStart="10dp" android:layout_marginEnd="10dp" - android:enabled="false" - android:text="@string/view_more" + android:text="@string/full_schedule" android:textSize="12sp" + tools:visibility="visible" android:visibility="invisible" app:textAllCaps="false" /> diff --git a/app/src/main/res/layout/fragment_schedule.xml b/app/src/main/res/layout/fragment_schedule.xml new file mode 100644 index 0000000..462abfc --- /dev/null +++ b/app/src/main/res/layout/fragment_schedule.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b5157fe..4e1c804 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -30,4 +30,5 @@ Loading… All Shows Current Shows + Full Schedule diff --git a/app/src/main/res/xml-v26/shortcuts.xml b/app/src/main/res/xml-v26/shortcuts.xml index c1c4ca9..dec57a7 100644 --- a/app/src/main/res/xml-v26/shortcuts.xml +++ b/app/src/main/res/xml-v26/shortcuts.xml @@ -22,7 +22,7 @@ android:shortcutShortLabel="@string/shows">