2016-09-11 20:36:58 +02:00
package com.topjohnwu.magisk ;
2016-09-23 23:22:11 +02:00
import android.app.Fragment ;
2016-09-13 22:44:07 +02:00
import android.content.DialogInterface ;
2016-09-25 15:31:38 +02:00
import android.os.AsyncTask ;
2016-09-11 20:36:58 +02:00
import android.os.Bundle ;
2016-09-25 17:11:57 +02:00
import android.preference.PreferenceManager ;
2016-09-11 20:36:58 +02:00
import android.support.annotation.Nullable ;
import android.support.v4.widget.SwipeRefreshLayout ;
2016-09-13 22:44:07 +02:00
import android.support.v7.app.AlertDialog ;
2016-09-11 20:36:58 +02:00
import android.support.v7.widget.RecyclerView ;
import android.util.Log ;
import android.view.LayoutInflater ;
import android.view.View ;
import android.view.ViewGroup ;
import android.widget.TextView ;
import com.topjohnwu.magisk.module.Repo ;
import com.topjohnwu.magisk.module.RepoHelper ;
2016-09-20 19:08:05 +02:00
import com.topjohnwu.magisk.utils.Async ;
2016-09-25 17:11:57 +02:00
import com.topjohnwu.magisk.utils.Logger ;
2016-09-13 22:44:07 +02:00
import com.topjohnwu.magisk.utils.Utils ;
2016-09-11 20:36:58 +02:00
2016-09-13 22:44:07 +02:00
import java.io.File ;
2016-09-11 20:36:58 +02:00
import java.util.ArrayList ;
2016-09-13 22:44:07 +02:00
import java.util.Iterator ;
2016-09-11 20:36:58 +02:00
import java.util.List ;
import butterknife.BindView ;
import butterknife.ButterKnife ;
public class ReposFragment extends Fragment {
public static List < Repo > mListRepos = new ArrayList < > ( ) ;
2016-09-13 22:44:07 +02:00
public static List < Repo > mListReposToUpdate = new ArrayList < > ( ) ;
2016-09-11 20:36:58 +02:00
@BindView ( R . id . recyclerView )
RecyclerView recyclerView ;
@BindView ( R . id . empty_rv )
TextView emptyTv ;
@BindView ( R . id . swipeRefreshLayout )
SwipeRefreshLayout swipeRefreshLayout ;
2016-09-13 22:44:07 +02:00
private View mView ;
private boolean mCanUpdate ;
private boolean alertUpdate ;
private boolean ignoreAlertUpdate ;
private String alertPackage ;
2016-09-25 17:11:57 +02:00
private AlertDialog . Builder builder ;
2016-09-23 11:12:29 +02:00
// private SharedPreferences prefs;
2016-09-11 20:36:58 +02:00
@Nullable
@Override
public View onCreateView ( LayoutInflater inflater , @Nullable ViewGroup container , @Nullable Bundle savedInstanceState ) {
2016-09-18 16:56:12 +02:00
View view = inflater . inflate ( R . layout . repos_fragment , container , false ) ;
2016-09-13 22:44:07 +02:00
mView = view ;
2016-09-11 20:36:58 +02:00
ButterKnife . bind ( this , view ) ;
2016-09-25 15:59:54 +02:00
swipeRefreshLayout . setOnRefreshListener ( ( ) - > {
2016-09-26 04:45:34 +02:00
new Async . LoadRepos ( getActivity ( ) ) . executeOnExecutor ( AsyncTask . SERIAL_EXECUTOR ) ;
new UpdateUI ( ) . executeOnExecutor ( AsyncTask . SERIAL_EXECUTOR ) ;
2016-09-25 15:59:54 +02:00
ignoreAlertUpdate = false ;
} ) ;
2016-09-26 04:45:34 +02:00
//LoadRepo(false);
new UpdateUI ( ) . executeOnExecutor ( AsyncTask . SERIAL_EXECUTOR ) ;
2016-09-11 20:36:58 +02:00
setHasOptionsMenu ( false ) ;
2016-09-13 22:44:07 +02:00
alertUpdate = false ;
2016-09-26 04:45:34 +02:00
// if (mListRepos.size() == 0) {
// emptyTv.setVisibility(View.VISIBLE);
// recyclerView.setVisibility(View.GONE);
// return view;
// }
//CheckForUpdates();
//recyclerView.setAdapter(new ReposAdapter(this, mListRepos));
2016-09-24 20:46:42 +02:00
2016-09-11 20:36:58 +02:00
return view ;
}
2016-09-13 22:44:07 +02:00
private void CheckForUpdates ( ) {
for ( int i = 0 ; i < mListRepos . size ( ) ; i + + ) {
if ( mListRepos . get ( i ) . canUpdate ( ) ) {
alertUpdate = true ;
mListReposToUpdate . add ( mListRepos . get ( i ) ) ;
}
}
}
@Override
public void onAttachFragment ( Fragment childFragment ) {
super . onAttachFragment ( childFragment ) ;
}
2016-09-26 04:45:34 +02:00
// private void LoadRepo(boolean doReload) {
// RepoHelper.TaskDelegate taskDelegate = result -> {
// if (result.equals("Complete")) {
// Log.d("Magisk", "ReposFragment, got delegate");
// UpdateUI();
// if (mView != null) {
// mView.invalidate();
// mView.requestLayout();
// }
//
// }
//
// };
// Log.d("Magisk", "ReposFragment, LoadRepo called");
// new Async.LoadRepos(getActivity());
// }
// private void NotifyOfAlerts() {
// if (alertUpdate && !ignoreAlertUpdate) {
// Iterator<Repo> iterRepo = mListReposToUpdate.iterator();
// while (iterRepo.hasNext()) {
// Repo repo = iterRepo.next();
// DialogInterface.OnClickListener dialogClickListener = (dialog, which) -> {
// switch (which) {
// case DialogInterface.BUTTON_POSITIVE:
// Utils.DownloadReceiver receiver = new Utils.DownloadReceiver() {
// @Override
// public void task(File file) {
// Log.d("Magisk", "Task firing");
// new Async.FlashZIP(getActivity(), repo.getId(), file.toString()).executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);
// }
// };
// String filename = repo.getId().replace(" ", "") + ".zip";
// Utils.downloadAndReceive(getActivity(), receiver, repo.getZipUrl(), filename);
//
// break;
//
// case DialogInterface.BUTTON_NEGATIVE:
//// ignoreAlertUpdate = true;
//// SharedPreferences.Editor editor = prefs.edit();
//// editor.putBoolean("ignoreUpdateAlerts", ignoreAlertUpdate);
//// editor.apply();
// break;
// }
// };
//
// String theme = PreferenceManager.getDefaultSharedPreferences(getActivity()).getString("theme", "");
// Logger.dh("ReposFragment: Theme is " + theme);
// if (theme.equals("Dark")) {
// builder = new AlertDialog.Builder(getActivity(),R.style.AlertDialog_dh);
// } else {
// builder = new AlertDialog.Builder(getActivity());
// }
// builder.setMessage("An update is available for " + repo.getName() + ". Would you like to install it?").setPositiveButton("Yes", dialogClickListener)
// .setNegativeButton("No", dialogClickListener).show();
// iterRepo.remove();
//
// }
//
// }
// }
2016-09-11 20:36:58 +02:00
@Override
public void onResume ( ) {
super . onResume ( ) ;
2016-09-26 04:45:34 +02:00
//LoadRepo(false);
2016-09-23 23:22:11 +02:00
getActivity ( ) . setTitle ( " Magisk " ) ;
2016-09-11 20:36:58 +02:00
2016-09-23 23:22:11 +02:00
}
2016-09-26 04:45:34 +02:00
private class UpdateUI extends AsyncTask < Void , Void , Void > {
2016-09-11 20:36:58 +02:00
2016-09-26 04:45:34 +02:00
@Override
protected Void doInBackground ( Void . . . voids ) {
return null ;
}
2016-09-11 20:36:58 +02:00
2016-09-26 04:45:34 +02:00
@Override
protected void onPostExecute ( Void v ) {
super . onPostExecute ( v ) ;
if ( mListRepos . size ( ) = = 0 ) {
emptyTv . setVisibility ( View . VISIBLE ) ;
recyclerView . setVisibility ( View . GONE ) ;
2016-09-11 20:36:58 +02:00
2016-09-26 04:45:34 +02:00
}
Log . d ( " Magisk " , " ReposFragment: ListRepos size is " + mListRepos . size ( ) ) ;
recyclerView . setAdapter ( new ReposAdapter ( mListRepos ) ) ;
if ( swipeRefreshLayout . isRefreshing ( ) ) {
swipeRefreshLayout . setRefreshing ( false ) ;
//CheckForUpdates();
//NotifyOfAlerts();
}
2016-09-11 20:36:58 +02:00
}
}
2016-09-26 04:45:34 +02:00
// private void UpdateUI() {
// Log.d("Magisk", "ReposFragment: UpdateUI Called, size is " + mListRepos.size());
//
// if (mListRepos.size() == 0) {
// emptyTv.setVisibility(View.VISIBLE);
// recyclerView.setVisibility(View.GONE);
//
// }
// Log.d("Magisk", "ReposFragment: ListRepos size is " + mListRepos.size());
// recyclerView.setAdapter(new ReposAdapter(this, mListRepos));
// if (swipeRefreshLayout.isRefreshing()) {
// swipeRefreshLayout.setRefreshing(false);
// CheckForUpdates();
// //NotifyOfAlerts();
// }
//
// }
2016-09-11 20:36:58 +02:00
}