Merge pull request #878 from Bars107/downloads
Fixed issues with other actions for dowloads. Added other actions for up...
This commit is contained in:
commit
d2f385888d
3 changed files with 108 additions and 29 deletions
|
@ -154,7 +154,7 @@ public class DownloadActivity extends SherlockFragmentActivity {
|
|||
public void setType(DownloadActivityType type) { this.type = type;}
|
||||
|
||||
public void changeType(final DownloadActivityType tp) {
|
||||
invalidateOptionsMenu();
|
||||
//invalidateOptionsMenu();
|
||||
if (downloadListIndexThread != null && type != tp) {
|
||||
type = tp;
|
||||
downloadListIndexThread.runCategorization(tp);
|
||||
|
|
|
@ -278,6 +278,7 @@ public class DownloadIndexFragment extends OsmandExpandableListFragment {
|
|||
|
||||
s.setIcon(isLightActionBar() ? R.drawable.abs__ic_menu_moreoverflow_holo_light
|
||||
: R.drawable.abs__ic_menu_moreoverflow_holo_dark);
|
||||
s.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -290,7 +291,7 @@ public class DownloadIndexFragment extends OsmandExpandableListFragment {
|
|||
DownloadActivity.downloadListIndexThread.getEntriesToDownload().clear();
|
||||
listAdapter.notifyDataSetInvalidated();
|
||||
|
||||
getView().findViewById(R.id.DownloadButton).setVisibility(View.GONE);
|
||||
getDownloadActivity().findViewById(R.id.DownloadButton).setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -10,12 +10,15 @@ import com.actionbarsherlock.app.ActionBar;
|
|||
import com.actionbarsherlock.app.SherlockListFragment;
|
||||
import com.actionbarsherlock.view.Menu;
|
||||
import com.actionbarsherlock.view.MenuInflater;
|
||||
import com.actionbarsherlock.view.MenuItem;
|
||||
import com.actionbarsherlock.view.SubMenu;
|
||||
import net.osmand.access.AccessibleToast;
|
||||
import net.osmand.map.OsmandRegions;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.activities.OsmandExpandableListFragment;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
@ -27,13 +30,15 @@ public class UpdatesIndexFragment extends SherlockListFragment {
|
|||
|
||||
private OsmandRegions osmandRegions;
|
||||
private java.text.DateFormat format;
|
||||
private UpdateIndexAdapter listAdapter;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
format = getMyApplication().getResourceManager().getDateFormat();
|
||||
osmandRegions = getMyApplication().getResourceManager().getOsmandRegions();
|
||||
setListAdapter(new UpdateIndexAdapter(getDownloadActivity(), R.layout.download_index_list_item, DownloadActivity.downloadListIndexThread.getItemsToUpdate()));
|
||||
listAdapter = new UpdateIndexAdapter(getDownloadActivity(), R.layout.download_index_list_item, DownloadActivity.downloadListIndexThread.getItemsToUpdate());
|
||||
setListAdapter(listAdapter);
|
||||
setHasOptionsMenu(true);
|
||||
}
|
||||
|
||||
|
@ -45,13 +50,13 @@ public class UpdatesIndexFragment extends SherlockListFragment {
|
|||
|
||||
}
|
||||
|
||||
public void updateItemsList(List<IndexItem> items){
|
||||
public void updateItemsList(List<IndexItem> items) {
|
||||
UpdateIndexAdapter adapter = (UpdateIndexAdapter) getListAdapter();
|
||||
if (adapter == null){
|
||||
if (adapter == null) {
|
||||
return;
|
||||
}
|
||||
adapter.clear();
|
||||
for (IndexItem item : items){
|
||||
for (IndexItem item : items) {
|
||||
adapter.add(item);
|
||||
}
|
||||
}
|
||||
|
@ -61,9 +66,93 @@ public class UpdatesIndexFragment extends SherlockListFragment {
|
|||
super.onListItemClick(l, v, position, id);
|
||||
}
|
||||
|
||||
public DownloadActivity getDownloadActivity() { return (DownloadActivity)getActivity(); }
|
||||
public DownloadActivity getDownloadActivity() {
|
||||
return (DownloadActivity) getActivity();
|
||||
}
|
||||
|
||||
private class UpdateIndexAdapter extends ArrayAdapter<IndexItem>{
|
||||
@Override
|
||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||
ActionBar actionBar = getDownloadActivity().getSupportActionBar();
|
||||
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
|
||||
|
||||
if (getMyApplication().getAppCustomization().showDownloadExtraActions()) {
|
||||
SubMenu s = menu.addSubMenu(0, DownloadIndexFragment.MORE_ID, 0, R.string.default_buttons_other_actions);
|
||||
s.add(0, DownloadIndexFragment.RELOAD_ID, 0, R.string.update_downlod_list);
|
||||
s.add(0, DownloadIndexFragment.SELECT_ALL_ID, 0, R.string.select_all);
|
||||
s.add(0, DownloadIndexFragment.DESELECT_ALL_ID, 0, R.string.deselect_all);
|
||||
|
||||
s.setIcon(isLightActionBar() ? R.drawable.abs__ic_menu_moreoverflow_holo_light
|
||||
: R.drawable.abs__ic_menu_moreoverflow_holo_dark);
|
||||
s.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||
}
|
||||
}
|
||||
|
||||
public OsmandApplication getMyApplication() {
|
||||
return getDownloadActivity().getMyApplication();
|
||||
}
|
||||
|
||||
public boolean isLightActionBar() {
|
||||
return ((OsmandApplication) getActivity().getApplication()).getSettings().isLightActionBar();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
if (item.getItemId() == DownloadIndexFragment.RELOAD_ID) {
|
||||
// re-create the thread
|
||||
DownloadActivity.downloadListIndexThread.runReloadIndexFiles();
|
||||
return true;
|
||||
} else if (item.getItemId() == DownloadIndexFragment.SELECT_ALL_ID) {
|
||||
selectAll();
|
||||
return true;
|
||||
} else if (item.getItemId() == DownloadIndexFragment.FILTER_EXISTING_REGIONS) {
|
||||
filterExisting();
|
||||
return true;
|
||||
} else if (item.getItemId() == DownloadIndexFragment.DESELECT_ALL_ID) {
|
||||
deselectAll();
|
||||
return true;
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
private void selectAll() {
|
||||
int selected = 0;
|
||||
for (int i = 0; i < listAdapter.getCount(); i++) {
|
||||
IndexItem es = listAdapter.getItem(i);
|
||||
if (!getDownloadActivity().getEntriesToDownload().containsKey(es)) {
|
||||
selected++;
|
||||
getDownloadActivity().getEntriesToDownload().put(es, es.createDownloadEntry(getMyApplication(),
|
||||
getDownloadActivity().getType(), new ArrayList<DownloadEntry>(1)));
|
||||
|
||||
}
|
||||
}
|
||||
AccessibleToast.makeText(getDownloadActivity(), MessageFormat.format(getString(R.string.items_were_selected), selected), Toast.LENGTH_SHORT).show();
|
||||
listAdapter.notifyDataSetInvalidated();
|
||||
if (selected > 0) {
|
||||
getDownloadActivity().updateDownloadButton(true);
|
||||
}
|
||||
}
|
||||
|
||||
public void deselectAll() {
|
||||
DownloadActivity.downloadListIndexThread.getEntriesToDownload().clear();
|
||||
listAdapter.notifyDataSetInvalidated();
|
||||
|
||||
getDownloadActivity().findViewById(R.id.DownloadButton).setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
private void filterExisting() {
|
||||
final Map<String, String> listAlreadyDownloaded = DownloadActivity.downloadListIndexThread.getDownloadedIndexFileNames();
|
||||
|
||||
final List<IndexItem> filtered = new ArrayList<IndexItem>();
|
||||
for (IndexItem fileItem : listAdapter.getIndexFiles()) {
|
||||
if(fileItem.isAlreadyDownloaded(listAlreadyDownloaded)){
|
||||
filtered.add(fileItem);
|
||||
}
|
||||
}
|
||||
listAdapter.setIndexFiles(filtered);
|
||||
listAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
private class UpdateIndexAdapter extends ArrayAdapter<IndexItem> {
|
||||
List<IndexItem> items;
|
||||
|
||||
public UpdateIndexAdapter(Context context, int resource, List<IndexItem> items) {
|
||||
|
@ -71,11 +160,15 @@ public class UpdatesIndexFragment extends SherlockListFragment {
|
|||
this.items = items;
|
||||
}
|
||||
|
||||
public List<IndexItem> getIndexFiles() {
|
||||
return items;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getView(final int position, View convertView, ViewGroup parent) {
|
||||
View v = convertView;
|
||||
|
||||
if(v == null){
|
||||
if (v == null) {
|
||||
LayoutInflater inflater = (LayoutInflater) getDownloadActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
v = inflater.inflate(R.layout.download_index_list_item, null);
|
||||
}
|
||||
|
@ -95,7 +188,7 @@ public class UpdatesIndexFragment extends SherlockListFragment {
|
|||
public void onClick(View v) {
|
||||
ch.setChecked(!ch.isChecked());
|
||||
final IndexItem e = (IndexItem) getListAdapter().getItem(position);
|
||||
if(ch.isChecked()){
|
||||
if (ch.isChecked()) {
|
||||
ch.setChecked(!ch.isChecked());
|
||||
getDownloadActivity().getEntriesToDownload().remove(e);
|
||||
getDownloadActivity().updateDownloadButton(true);
|
||||
|
@ -114,27 +207,12 @@ public class UpdatesIndexFragment extends SherlockListFragment {
|
|||
|
||||
return v;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||
ActionBar actionBar = getDownloadActivity().getSupportActionBar();
|
||||
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
|
||||
|
||||
if (getMyApplication().getAppCustomization().showDownloadExtraActions()) {
|
||||
SubMenu s = menu.addSubMenu(0, DownloadIndexFragment.MORE_ID, 0, R.string.default_buttons_other_actions);
|
||||
s.add(0, DownloadIndexFragment.RELOAD_ID, 0, R.string.update_downlod_list);
|
||||
s.add(0, DownloadIndexFragment.SELECT_ALL_ID, 0, R.string.select_all);
|
||||
s.add(0, DownloadIndexFragment.DESELECT_ALL_ID, 0, R.string.deselect_all);
|
||||
|
||||
s.setIcon(isLightActionBar() ? R.drawable.abs__ic_menu_moreoverflow_holo_light
|
||||
: R.drawable.abs__ic_menu_moreoverflow_holo_dark);
|
||||
public void setIndexFiles(List<IndexItem> filtered) {
|
||||
this.items.clear();
|
||||
this.items.addAll(filtered);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
|
||||
public OsmandApplication getMyApplication() { return getDownloadActivity().getMyApplication(); }
|
||||
|
||||
public boolean isLightActionBar() {
|
||||
return ((OsmandApplication) getActivity().getApplication()).getSettings().isLightActionBar();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue