@Override public boolean onChildClick( ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { LocalIndexInfo item = listAdapter.getChild(groupPosition, childPosition); item.setExpanded(!item.isExpanded()); if (item.isExpanded()) { descriptionLoader = new LoadLocalIndexDescriptionTask(); descriptionLoader.execute(item); } if (selectionMode) { selectedItems.add(item); } listAdapter.notifyDataSetInvalidated(); return true; }
@Override protected void onDestroy() { super.onDestroy(); asyncLoader.cancel(true); descriptionLoader.cancel(true); }
private void showContextMenu(final LocalIndexInfo info) { Builder builder = new AlertDialog.Builder(this); final List<Integer> menu = new ArrayList<Integer>(); if (info.getType() == LocalIndexType.GPX_DATA) { menu.add(R.string.show_gpx_route); menu.add(R.string.local_index_mi_upload_gpx); descriptionLoader = new LoadLocalIndexDescriptionTask(); descriptionLoader.execute(info); } if (info.getType() == LocalIndexType.MAP_DATA || info.getType() == LocalIndexType.POI_DATA) { if (!info.isBackupedData()) { menu.add(R.string.local_index_mi_backup); } } if (info.isBackupedData()) { menu.add(R.string.local_index_mi_restore); } menu.add(R.string.local_index_mi_rename); menu.add(R.string.local_index_mi_delete); if (!menu.isEmpty()) { String[] values = new String[menu.size()]; for (int i = 0; i < values.length; i++) { values[i] = getString(menu.get(i)); } builder.setItems( values, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { int resId = menu.get(which); if (resId == R.string.show_gpx_route) { if (info != null && info.getGpxFile() != null) { WptPt loc = info.getGpxFile().findPointToShow(); if (loc != null) { OsmandSettings settings = OsmandSettings.getOsmandSettings(LocalIndexesActivity.this); settings.setMapLocationToShow(loc.lat, loc.lon, settings.getLastKnownMapZoom()); } ((OsmandApplication) getApplication()).setGpxFileToDisplay(info.getGpxFile()); MapActivity.launchMapActivityMoveToTop(LocalIndexesActivity.this); } } else if (resId == R.string.local_index_mi_rename) { renameFile(info); } else if (resId == R.string.local_index_mi_restore) { new LocalIndexOperationTask(RESTORE_OPERATION).execute(info); } else if (resId == R.string.local_index_mi_delete) { Builder confirm = new AlertDialog.Builder(LocalIndexesActivity.this); confirm.setPositiveButton( R.string.default_buttons_yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { new LocalIndexOperationTask(DELETE_OPERATION).execute(info); } }); confirm.setNegativeButton(R.string.default_buttons_no, null); // confirm.setTitle(R.string.delete_confirmation_title); confirm.setMessage(getString(R.string.delete_confirmation_msg, info.getFileName())); confirm.show(); } else if (resId == R.string.local_index_mi_backup) { new LocalIndexOperationTask(BACKUP_OPERATION).execute(info); } else if (resId == R.string.local_index_mi_upload_gpx) { Builder confirm = new AlertDialog.Builder(LocalIndexesActivity.this); confirm.setPositiveButton( R.string.default_buttons_yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { new UploadGPXFilesTask().execute(info); } }); confirm.setNegativeButton(R.string.default_buttons_no, null); confirm.setMessage( getString(R.string.sendtoOSM_confirmation_msg, info.getFileName())); confirm.show(); } } }); } builder.show(); }