diff --git a/OsmAnd/src/net/osmand/plus/download/DownloadActivity.java b/OsmAnd/src/net/osmand/plus/download/DownloadActivity.java index f607b2ebeb..b054a083db 100644 --- a/OsmAnd/src/net/osmand/plus/download/DownloadActivity.java +++ b/OsmAnd/src/net/osmand/plus/download/DownloadActivity.java @@ -60,7 +60,7 @@ public class DownloadActivity extends SherlockFragmentActivity { tabHost.setup(); ViewPager viewPager = (ViewPager) findViewById(R.id.pager); mTabsAdapter = new FavouritesActivity.TabsAdapter(this, tabHost, viewPager, settings); - mTabsAdapter.addTab(tabHost.newTabSpec("LOCAL_INDEX").setIndicator("Local maps"), + mTabsAdapter.addTab(tabHost.newTabSpec("LOCAL_INDEX").setIndicator("Local"), LocalIndexesFragment.class, null); mTabsAdapter.addTab(tabHost.newTabSpec("DOWNLOADS").setIndicator("Downloads"), DownloadIndexFragment.class, null); @@ -272,4 +272,9 @@ public class DownloadActivity extends SherlockFragmentActivity { bld.setNegativeButton(R.string.default_buttons_no, null); bld.show(); } + + public void updateDownloadList(List list){ + Fragment fragment = mTabsAdapter.getItem(2); + ((UpdatesIndexFragment) fragment).updateItemsList(list); + } } diff --git a/OsmAnd/src/net/osmand/plus/download/DownloadIndexAdapter.java b/OsmAnd/src/net/osmand/plus/download/DownloadIndexAdapter.java index 270db133d8..ae7ef61480 100644 --- a/OsmAnd/src/net/osmand/plus/download/DownloadIndexAdapter.java +++ b/OsmAnd/src/net/osmand/plus/download/DownloadIndexAdapter.java @@ -27,7 +27,7 @@ public class DownloadIndexAdapter extends OsmandBaseExpandableListAdapter implem private DownloadIndexFilter myFilter; private final List indexFiles; private final List list = new ArrayList(); - private DownloadIndexFragment downloadActivity; + private DownloadIndexFragment downloadFragment; private Map indexFileNames = null; private Map indexActivatedFileNames = null; @@ -38,7 +38,7 @@ public class DownloadIndexAdapter extends OsmandBaseExpandableListAdapter implem private java.text.DateFormat format; public DownloadIndexAdapter(DownloadIndexFragment downloadFragment, List indexFiles) { - this.downloadActivity = downloadFragment; + this.downloadFragment = downloadFragment; this.indexFiles = new ArrayList(indexFiles); List cats = IndexItemCategory.categorizeIndexItems(downloadFragment.getMyApplication(), indexFiles); synchronized (this) { @@ -61,11 +61,11 @@ public class DownloadIndexAdapter extends OsmandBaseExpandableListAdapter implem } public void collapseTrees(final CharSequence constraint) { - downloadActivity.getDownloadActivity().runOnUiThread(new Runnable() { + downloadFragment.getDownloadActivity().runOnUiThread(new Runnable() { @Override public void run() { synchronized (DownloadIndexAdapter.this) { - final ExpandableListView expandableListView = downloadActivity.getExpandableListView(); + final ExpandableListView expandableListView = downloadFragment.getExpandableListView(); for (int i = 0; i < getGroupCount(); i++) { int cp = getChildrenCount(i); if (cp < 7) { @@ -124,7 +124,7 @@ public class DownloadIndexAdapter extends OsmandBaseExpandableListAdapter implem } } List filter = new ArrayList(); - Context c = downloadActivity.getDownloadActivity(); + Context c = downloadFragment.getDownloadActivity(); for (IndexItem item : indexFiles) { boolean add = true; String indexLC = osmandRegions.getDownloadNameIndexLowercase(item.getBasename()); @@ -165,11 +165,11 @@ public class DownloadIndexAdapter extends OsmandBaseExpandableListAdapter implem list.clear(); Collection items = (Collection) results.values; if (items != null && !items.isEmpty()) { - list.addAll(IndexItemCategory.categorizeIndexItems(downloadActivity.getMyApplication(), items)); + list.addAll(IndexItemCategory.categorizeIndexItems(downloadFragment.getMyApplication(), items)); } else if(DownloadIndexAdapter.this.indexFiles.isEmpty()){ - list.add(new IndexItemCategory(downloadActivity.getResources().getString(R.string.no_index_file_to_download), 1)); + list.add(new IndexItemCategory(downloadFragment.getResources().getString(R.string.no_index_file_to_download), 1)); } else { - list.add(new IndexItemCategory(downloadActivity.getResources().getString(R.string.select_index_file_to_download), 1)); + list.add(new IndexItemCategory(downloadFragment.getResources().getString(R.string.select_index_file_to_download), 1)); } } notifyDataSetChanged(); @@ -217,7 +217,7 @@ public class DownloadIndexAdapter extends OsmandBaseExpandableListAdapter implem View v = convertView; IndexItemCategory group = getGroup(groupPosition); if (v == null) { - LayoutInflater inflater = (LayoutInflater) downloadActivity.getDownloadActivity().getSystemService( Context.LAYOUT_INFLATER_SERVICE ); + LayoutInflater inflater = (LayoutInflater) downloadFragment.getDownloadActivity().getSystemService( Context.LAYOUT_INFLATER_SERVICE ); v = inflater.inflate(net.osmand.plus.R.layout.expandable_list_item_category, parent, false); } final View row = v; @@ -232,27 +232,27 @@ public class DownloadIndexAdapter extends OsmandBaseExpandableListAdapter implem public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { View v = convertView; if (v == null) { - LayoutInflater inflater = (LayoutInflater) downloadActivity.getDownloadActivity().getSystemService( Context.LAYOUT_INFLATER_SERVICE ); + LayoutInflater inflater = (LayoutInflater) downloadFragment.getDownloadActivity().getSystemService( Context.LAYOUT_INFLATER_SERVICE ); v = inflater.inflate(net.osmand.plus.R.layout.download_index_list_item, parent, false); } final View row = v; TextView item = (TextView) row.findViewById(R.id.download_item); TextView description = (TextView) row.findViewById(R.id.download_descr); IndexItem e = (IndexItem) getChild(groupPosition, childPosition); - OsmandApplication clctx = downloadActivity.getMyApplication(); + OsmandApplication clctx = downloadFragment.getMyApplication(); String eName = e.getVisibleDescription(clctx) + "\n" + e.getVisibleName(clctx, osmandRegions); item.setText(eName.trim()); //$NON-NLS-1$ String d = e.getDate(format) + "\n" + e.getSizeDescription(clctx); description.setText(d.trim()); CheckBox ch = (CheckBox) row.findViewById(R.id.check_download_item); - ch.setChecked(downloadActivity.getDownloadActivity().getEntriesToDownload().containsKey(e)); + ch.setChecked(downloadFragment.getDownloadActivity().getEntriesToDownload().containsKey(e)); ch.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final CheckBox ch = (CheckBox) v.findViewById(R.id.check_download_item); ch.setChecked(!ch.isChecked()); - downloadActivity.onChildClick(downloadActivity.getExpandableListView(), row, groupPosition, childPosition, getChildId(groupPosition, childPosition)); + downloadFragment.onChildClick(downloadFragment.getExpandableListView(), row, groupPosition, childPosition, getChildId(groupPosition, childPosition)); } }); @@ -277,22 +277,22 @@ public class DownloadIndexAdapter extends OsmandBaseExpandableListAdapter implem } else if (e.getDate(format) != null) { String sfName = e.getTargetFileName(); if (e.getDate(format).equals(indexActivatedFileNames.get(sfName))) { - item.setText(item.getText() + "\n" + downloadActivity.getResources().getString(R.string.local_index_installed) + " : " + item.setText(item.getText() + "\n" + downloadFragment.getResources().getString(R.string.local_index_installed) + " : " + indexActivatedFileNames.get(sfName)); item.setTextColor(okColor); // GREEN item.setTypeface(Typeface.DEFAULT, Typeface.NORMAL); } else if (e.getDate(format).equals(indexFileNames.get(sfName))) { - item.setText(item.getText() + "\n" + downloadActivity.getResources().getString(R.string.local_index_installed) + " : " + item.setText(item.getText() + "\n" + downloadFragment.getResources().getString(R.string.local_index_installed) + " : " + indexFileNames.get(sfName)); item.setTextColor(okColor); item.setTypeface(Typeface.DEFAULT, Typeface.ITALIC); } else if (indexActivatedFileNames.containsKey(sfName)) { - item.setText(item.getText() + "\n" + downloadActivity.getResources().getString(R.string.local_index_installed) + " : " + item.setText(item.getText() + "\n" + downloadFragment.getResources().getString(R.string.local_index_installed) + " : " + indexActivatedFileNames.get(sfName)); item.setTextColor(updateColor); // LIGHT_BLUE item.setTypeface(Typeface.DEFAULT, Typeface.NORMAL); } else { - item.setText(item.getText() + "\n" + downloadActivity.getResources().getString(R.string.local_index_installed) + " : " + item.setText(item.getText() + "\n" + downloadFragment.getResources().getString(R.string.local_index_installed) + " : " + indexFileNames.get(sfName)); item.setTextColor(updateColor); item.setTypeface(Typeface.DEFAULT, Typeface.ITALIC); diff --git a/OsmAnd/src/net/osmand/plus/download/DownloadIndexFragment.java b/OsmAnd/src/net/osmand/plus/download/DownloadIndexFragment.java index a4a46d33fc..55ee6e9fee 100644 --- a/OsmAnd/src/net/osmand/plus/download/DownloadIndexFragment.java +++ b/OsmAnd/src/net/osmand/plus/download/DownloadIndexFragment.java @@ -347,7 +347,6 @@ public class DownloadIndexFragment extends OsmandExpandableListFragment { public void updateDownloadButton(boolean scroll) { View view = getView(); - //TODO find out why view and getexpandablelistview can be null if (view == null || getExpandableListView() == null){ return; } diff --git a/OsmAnd/src/net/osmand/plus/download/DownloadIndexesThread.java b/OsmAnd/src/net/osmand/plus/download/DownloadIndexesThread.java index be7bf4788f..bfc0b7ce81 100644 --- a/OsmAnd/src/net/osmand/plus/download/DownloadIndexesThread.java +++ b/OsmAnd/src/net/osmand/plus/download/DownloadIndexesThread.java @@ -561,6 +561,7 @@ public class DownloadIndexesThread { } } itemsToUpdate.size(); + uiFragment.getDownloadActivity().updateDownloadList(itemsToUpdate); } diff --git a/OsmAnd/src/net/osmand/plus/download/UpdatesIndexFragment.java b/OsmAnd/src/net/osmand/plus/download/UpdatesIndexFragment.java index ce5ff45afb..3c49cd54ad 100644 --- a/OsmAnd/src/net/osmand/plus/download/UpdatesIndexFragment.java +++ b/OsmAnd/src/net/osmand/plus/download/UpdatesIndexFragment.java @@ -1,8 +1,15 @@ package net.osmand.plus.download; +import android.content.Context; import android.os.Bundle; +import android.view.LayoutInflater; import android.view.View; -import android.widget.ExpandableListView; +import android.view.ViewGroup; +import android.widget.*; +import com.actionbarsherlock.app.SherlockListFragment; +import net.osmand.map.OsmandRegions; +import net.osmand.plus.OsmandApplication; +import net.osmand.plus.R; import net.osmand.plus.activities.OsmandExpandableListFragment; import java.util.ArrayList; @@ -12,12 +19,17 @@ import java.util.Map; /** * Created by Denis on 09.09.2014. */ -public class UpdatesIndexFragment extends OsmandExpandableListFragment { +public class UpdatesIndexFragment extends SherlockListFragment { + + private OsmandRegions osmandRegions; + private java.text.DateFormat format; @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())); } @Override @@ -28,11 +40,55 @@ public class UpdatesIndexFragment extends OsmandExpandableListFragment { } + public void updateItemsList(List items){ + UpdateIndexAdapter adapter = (UpdateIndexAdapter) getListAdapter(); + if (adapter == null){ + return; + } + adapter.clear(); + for (IndexItem item : items){ + adapter.add(item); + } + } + @Override - public boolean onChildClick(ExpandableListView expandableListView, View view, int i, int i2, long l) { - return false; + public void onListItemClick(ListView l, View v, int position, long id) { + super.onListItemClick(l, v, position, id); } public DownloadActivity getDownloadActivity() { return (DownloadActivity)getActivity(); } + private class UpdateIndexAdapter extends ArrayAdapter{ + List items; + + public UpdateIndexAdapter(Context context, int resource, List items) { + super(context, resource, items); + this.items = items; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + View v = convertView; + + if(v == null){ + LayoutInflater inflater = (LayoutInflater) getDownloadActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); + v = inflater.inflate(R.layout.download_index_list_item, null); + } + + TextView name = (TextView) v.findViewById(R.id.download_item); + TextView description = (TextView) v.findViewById(R.id.download_descr); + IndexItem e = items.get(position); + String eName = e.getVisibleDescription(getMyApplication()) + "\n" + e.getVisibleName(getMyApplication(), osmandRegions); + name.setText(eName.trim()); //$NON-NLS-1$ + String d = e.getDate(format) + "\n" + e.getSizeDescription(getMyApplication()); + description.setText(d); + + CheckBox ch = (CheckBox) v.findViewById(R.id.check_download_item); + ch.setChecked(getDownloadActivity().getEntriesToDownload().containsKey(e)); + + return v; + } + } + + public OsmandApplication getMyApplication() { return getDownloadActivity().getMyApplication(); } }