Android Downloading ZIM list require confirmation on network

This commit is contained in:
mhutti1 2016-08-13 22:17:10 +01:00
parent 2d911d91b2
commit b583aa3e15
3 changed files with 75 additions and 26 deletions

View File

@ -14,7 +14,22 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:id="@+id/library_list" /> android:id="@+id/library_list" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_marginTop="200dp"
android:text="@string/get_library_over_network"
android:layout_centerHorizontal="true"
android:id="@+id/network_permission_text"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="230dp"
android:id="@+id/network_permission_button"
android:text="@string/proceed"
android:layout_centerHorizontal="true"
android:visibility="gone"/>
<RelativeLayout <RelativeLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"

View File

@ -114,4 +114,6 @@
<string name="zim_nopic">No Pictures</string> <string name="zim_nopic">No Pictures</string>
<string name="open_partial_zim">This file could be incomplete. Do you wish to attempt to open it?</string> <string name="open_partial_zim">This file could be incomplete. Do you wish to attempt to open it?</string>
<string name="no_network_connection">No network connection</string> <string name="no_network_connection">No network connection</string>
<string name="get_library_over_network">Use network to download ZIM list. (Approximately 6MB)</string>
<string name="proceed">Proceed</string>
</resources> </resources>

View File

@ -28,6 +28,7 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.Button;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.ListView; import android.widget.ListView;
import android.widget.ProgressBar; import android.widget.ProgressBar;
@ -67,6 +68,8 @@ public class LibraryFragment extends Fragment implements AdapterView.OnItemClick
@BindView(R.id.progressBar) ProgressBar progressBar; @BindView(R.id.progressBar) ProgressBar progressBar;
@BindView(R.id.progressbar_message) TextView progressBarMessage; @BindView(R.id.progressbar_message) TextView progressBarMessage;
@BindView(R.id.progressbar_layout) RelativeLayout progressBarLayout; @BindView(R.id.progressbar_layout) RelativeLayout progressBarLayout;
@BindView(R.id.network_permission_text) TextView permissionText;
@BindView(R.id.network_permission_button) Button permissionButton;
private KiwixService kiwixService; private KiwixService kiwixService;
@ -102,32 +105,16 @@ public class LibraryFragment extends Fragment implements AdapterView.OnItemClick
// setContentView(R.layout.activity_layout); // setContentView(R.layout.activity_layout);
ButterKnife.bind(this, llLayout); ButterKnife.bind(this, llLayout);
progressBar.setVisibility(View.VISIBLE);
progressBarMessage.setVisibility(View.VISIBLE);
progressBarLayout.setVisibility(View.VISIBLE);
kiwixService = ((KiwixApplication) super.getActivity().getApplication()).getKiwixService(); kiwixService = ((KiwixApplication) super.getActivity().getApplication()).getKiwixService();
conMan = (ConnectivityManager) super.getActivity().getSystemService(Context.CONNECTIVITY_SERVICE); conMan = (ConnectivityManager) super.getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo network = conMan.getActiveNetworkInfo(); NetworkInfo network = conMan.getActiveNetworkInfo();
bookDao = new BookDao(new KiwixDatabase(super.getActivity())); bookDao = new BookDao(new KiwixDatabase(super.getActivity()));
if (network != null && network.isConnected()) { if (network != null && network.isConnected()) {
kiwixService.getLibrary() if (isWiFi()) {
.observeOn(AndroidSchedulers.mainThread()) getLibraryData();
.subscribe(library -> { } else {
books = library.getBooks(); displayNetworkConfirmation();
if (active) { }
libraryAdapter = new LibraryAdapter(super.getActivity(), new ArrayList<LibraryNetworkEntity.Book>(books));
libraryList.setAdapter(libraryAdapter);
progressBarLayout.setVisibility(View.GONE);
}
},error -> {
noNetworkConnection();
});
libraryList.setOnItemClickListener(this);
active = true;
} else { } else {
noNetworkConnection(); noNetworkConnection();
} }
@ -138,6 +125,42 @@ public class LibraryFragment extends Fragment implements AdapterView.OnItemClick
return llLayout; // We must return the loaded Layout return llLayout; // We must return the loaded Layout
} }
public void getLibraryData(){
progressBar.setVisibility(View.VISIBLE);
progressBarMessage.setVisibility(View.VISIBLE);
progressBarLayout.setVisibility(View.VISIBLE);
kiwixService.getLibrary()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(library -> {
books = library.getBooks();
if (active) {
libraryAdapter = new LibraryAdapter(super.getActivity(), new ArrayList<LibraryNetworkEntity.Book>(books));
libraryList.setAdapter(libraryAdapter);
progressBarLayout.setVisibility(View.GONE);
}
},error -> {
noNetworkConnection();
});
libraryList.setOnItemClickListener(this);
active = true;
}
public void displayNetworkConfirmation(){
permissionText.setVisibility(View.VISIBLE);
permissionButton.setVisibility(View.VISIBLE);
permissionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getLibraryData();
permissionButton.setVisibility(View.GONE);
permissionText.setVisibility(View.GONE);
}
});
}
public void noNetworkConnection() { public void noNetworkConnection() {
progressBar.setVisibility(View.INVISIBLE); progressBar.setVisibility(View.INVISIBLE);
progressBarLayout.setVisibility(View.VISIBLE); progressBarLayout.setVisibility(View.VISIBLE);
@ -167,19 +190,28 @@ public class LibraryFragment extends Fragment implements AdapterView.OnItemClick
return; return;
} }
bookDao.saveBook(books.get(position)); bookDao.saveBook(books.get(position));
if (isWiFi()){
mobileDownloadDialog(position);
} else {
downloadFile(position, books.get(position));
}
}
public boolean isWiFi(){
if (Build.VERSION.SDK_INT >= 23) { if (Build.VERSION.SDK_INT >= 23) {
NetworkInfo network = conMan.getActiveNetworkInfo(); NetworkInfo network = conMan.getActiveNetworkInfo();
if (network.getType() != ConnectivityManager.TYPE_WIFI){ if (network.getType() != ConnectivityManager.TYPE_WIFI){
mobileDownloadDialog(position); return false;
} else { } else {
downloadFile(position, books.get(position)); return true;
} }
} else { } else {
NetworkInfo wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI); NetworkInfo wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (!wifi.isConnected()){ if (!wifi.isConnected()){
mobileDownloadDialog(position); return false;
} else { } else {
downloadFile(position, books.get(position)); return true;
} }
} }
} }