diff --git a/OsmAnd/AndroidManifest.xml b/OsmAnd/AndroidManifest.xml index e061c06548..75ced29924 100644 --- a/OsmAnd/AndroidManifest.xml +++ b/OsmAnd/AndroidManifest.xml @@ -131,7 +131,6 @@ - diff --git a/OsmAnd/res/layout/update_index_list_item.xml b/OsmAnd/res/layout/update_index_list_item.xml index c2d23bcdbe..9c75c6fb06 100644 --- a/OsmAnd/res/layout/update_index_list_item.xml +++ b/OsmAnd/res/layout/update_index_list_item.xml @@ -32,13 +32,32 @@ tools:text="@string/app_version" android:maxLines="7"/> - + + + + + + + diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index aade191905..7a0965945c 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -9,7 +9,7 @@ 3. All your modified/created strings are in the top of the file (to make easier find what\'s translated). PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy --> - + days behind Activating this view changes the map style to Nautical, thus showing all nautical navigation marks and chart symbols. A map file containing all nautical symbols globally is availabe as one single download called \'World seamarks\'. This view can be reverted by either de-activating it again here, or by changing the \'Map style\' under \'Configure map\' as desired. diff --git a/OsmAnd/src/net/osmand/plus/FavouritesDbHelper.java b/OsmAnd/src/net/osmand/plus/FavouritesDbHelper.java index 6c2c5a1d6b..783f3c2a93 100644 --- a/OsmAnd/src/net/osmand/plus/FavouritesDbHelper.java +++ b/OsmAnd/src/net/osmand/plus/FavouritesDbHelper.java @@ -529,12 +529,11 @@ public class FavouritesDbHelper { conn = context.getSQLiteAPI().getOrCreateDatabase(FAVOURITE_DB_NAME, readonly); } if (conn.getVersion() == 0) { - conn.setVersion(DATABASE_VERSION); onCreate(conn); } else { onUpgrade(conn, conn.getVersion(), DATABASE_VERSION); } - + conn.setVersion(DATABASE_VERSION); } return conn; } diff --git a/OsmAnd/src/net/osmand/plus/OsmandPlugin.java b/OsmAnd/src/net/osmand/plus/OsmandPlugin.java index dfcef7102d..2340304cd3 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandPlugin.java +++ b/OsmAnd/src/net/osmand/plus/OsmandPlugin.java @@ -9,21 +9,23 @@ import net.osmand.IProgress; import net.osmand.Location; import net.osmand.PlatformUtil; import net.osmand.access.AccessibilityPlugin; +import net.osmand.plus.activities.FavoritesActivity; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.SettingsActivity; +import net.osmand.plus.activities.TabActivity.TabItem; import net.osmand.plus.audionotes.AudioVideoNotesPlugin; import net.osmand.plus.development.OsmandDevelopmentPlugin; import net.osmand.plus.distancecalculator.DistanceCalculatorPlugin; import net.osmand.plus.monitoring.OsmandMonitoringPlugin; -import net.osmand.plus.touringview.TouringViewPlugin; -import net.osmand.plus.skimapsplugin.SkiMapsPlugin; import net.osmand.plus.openseamapsplugin.NauticalMapsPlugin; import net.osmand.plus.osmedit.OsmEditingPlugin; import net.osmand.plus.osmo.OsMoPlugin; import net.osmand.plus.parkingpoint.ParkingPositionPlugin; import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin; import net.osmand.plus.routepointsnavigation.RoutePointsPlugin; +import net.osmand.plus.skimapsplugin.SkiMapsPlugin; import net.osmand.plus.srtmplugin.SRTMPlugin; +import net.osmand.plus.touringview.TouringViewPlugin; import net.osmand.plus.views.OsmandMapTileView; import org.apache.commons.logging.Log; @@ -188,6 +190,8 @@ public abstract class OsmandPlugin { public void updateLocation(Location location) {} + public void addMyPlacesTab(FavoritesActivity favoritesActivity, List mTabs, Intent intent) { } + public void contextMenuFragment(Activity activity, Fragment fragment, Object info, ContextMenuAdapter adapter) {} public void optionsMenuFragment(Activity activity, Fragment fragment, ContextMenuAdapter optionsMenuAdapter) {} @@ -371,7 +375,10 @@ public abstract class OsmandPlugin { return getEnabledPlugin(OsmandDevelopmentPlugin.class) != null; } - - + public static void addMyPlacesTabPlugins(FavoritesActivity favoritesActivity, List mTabs, Intent intent) { + for(OsmandPlugin p : getEnabledPlugins()){ + p.addMyPlacesTab(favoritesActivity, mTabs, intent); + } + } } diff --git a/OsmAnd/src/net/osmand/plus/activities/FavoritesActivity.java b/OsmAnd/src/net/osmand/plus/activities/FavoritesActivity.java index 77100ac825..db2fe17f19 100644 --- a/OsmAnd/src/net/osmand/plus/activities/FavoritesActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/FavoritesActivity.java @@ -8,32 +8,28 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; -import android.app.Activity; -import android.content.Intent; -import android.graphics.drawable.Drawable; -import android.support.v7.widget.SearchView; -import android.support.v7.widget.Toolbar; -import android.text.Spannable; -import android.text.SpannableStringBuilder; -import android.text.style.ImageSpan; -import android.view.MenuItem; import net.osmand.plus.GpxSelectionHelper; import net.osmand.plus.OsmAndLocationProvider; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandPlugin; import net.osmand.plus.OsmandSettings; import net.osmand.plus.R; +import net.osmand.plus.views.controls.PagerSlidingTabStrip; +import android.app.Activity; +import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; +import android.support.v7.widget.SearchView; +import android.support.v7.widget.Toolbar; +import android.text.Spannable; +import android.text.SpannableStringBuilder; +import android.text.style.ImageSpan; +import android.view.MenuItem; import android.view.View; import android.widget.ImageView; import android.widget.TextView; -import net.osmand.plus.audionotes.AudioVideoNotesPlugin; -import net.osmand.plus.audionotes.NotesFragment; -import net.osmand.plus.views.controls.PagerSlidingTabStrip; - /** * */ @@ -45,7 +41,7 @@ public class FavoritesActivity extends TabActivity { // public static int FAVORITES_TAB = 0; // public static int GPX_TAB = 1; // public static int SELECTED_GPX_TAB = 2; - public static String TAB_PARAM = "TAB_PARAM"; +// public static String TAB_PARAM = "TAB_PARAM"; protected List> fragList = new ArrayList>(); @Override @@ -56,53 +52,39 @@ public class FavoritesActivity extends TabActivity { getSupportActionBar().setElevation(0); File[] lf = ((OsmandApplication) getApplication()).getAppPath(TRACKS).listFiles(); - boolean hasGpx = false; - if(lf != null) { - for(File t : lf) { - if(t.isDirectory() || (t.getName().toLowerCase().endsWith(".gpx"))) { + boolean hasGpx = false; + if (lf != null) { + for (File t : lf) { + if (t.isDirectory() || (t.getName().toLowerCase().endsWith(".gpx"))) { hasGpx = true; break; } } } + + setContentView(R.layout.tab_content); + + PagerSlidingTabStrip mSlidingTabLayout = (PagerSlidingTabStrip) findViewById(R.id.sliding_tabs); + OsmandSettings settings = ((OsmandApplication) getApplication()).getSettings(); - if(!hasGpx) { - setContentView(R.layout.search_activity_single); - getSupportFragmentManager().beginTransaction().add(R.id.layout, new FavoritesTreeFragment()).commit(); - } else { - setContentView(R.layout.tab_content); + ViewPager mViewPager = (ViewPager) findViewById(R.id.pager); - PagerSlidingTabStrip mSlidingTabLayout = (PagerSlidingTabStrip) findViewById(R.id.sliding_tabs); - OsmandSettings settings = ((OsmandApplication) getApplication()).getSettings(); - Integer tab = settings.FAVORITES_TAB.get(); - ViewPager mViewPager = (ViewPager) findViewById(R.id.pager); - - List mTabs = new ArrayList(); - mTabs.add(getTabIndicator(R.string.my_favorites, FavoritesTreeFragment.class)); - AudioVideoNotesPlugin audioVideoNotesPlugin = OsmandPlugin.getEnabledPlugin(AudioVideoNotesPlugin.class); - if (audioVideoNotesPlugin != null && audioVideoNotesPlugin.isActive() - && audioVideoNotesPlugin.getAllRecordings().size() > 0){ - mTabs.add(getTabIndicator(R.string.notes, NotesFragment.class)); - } + List mTabs = new ArrayList(); + mTabs.add(getTabIndicator(R.string.my_favorites, FavoritesTreeFragment.class)); + if (hasGpx) { mTabs.add(getTabIndicator(R.string.my_tracks, AvailableGPXFragment.class)); mTabs.add(getTabIndicator(R.string.selected_track, SelectedGPXFragment.class)); - - setViewPagerAdapter(mViewPager, mTabs); - mSlidingTabLayout.setViewPager(mViewPager); - - - Intent intent = getIntent(); - if(intent != null) { - int tt = intent.getIntExtra(TAB_PARAM, -1); - if(tt >= 0) { - mViewPager.setCurrentItem(tt); - } - } else { - mViewPager.setCurrentItem(tab); - } - updateSelectedTracks(); } - //setupHomeButton(); + OsmandPlugin.addMyPlacesTabPlugins(this, mTabs, getIntent()); + + Integer tab = settings.FAVORITES_TAB.get(); + + setViewPagerAdapter(mViewPager, mTabs); + mSlidingTabLayout.setViewPager(mViewPager); + + mViewPager.setCurrentItem(tab); + updateSelectedTracks(); + // setupHomeButton(); } @Override diff --git a/OsmAnd/src/net/osmand/plus/activities/TabActivity.java b/OsmAnd/src/net/osmand/plus/activities/TabActivity.java index 56b90a7239..e6b332b79a 100644 --- a/OsmAnd/src/net/osmand/plus/activities/TabActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/TabActivity.java @@ -1,34 +1,28 @@ package net.osmand.plus.activities; -import android.graphics.Color; +import java.util.List; + import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; -import java.util.ArrayList; -import java.util.List; - /** * Created by Denis * on 26.01.2015. */ public class TabActivity extends ActionBarProgressActivity { - protected TabItem getTabIndicator(int resId, Class fragment){ - return new TabItem(getString(resId), Color.DKGRAY, Color.LTGRAY, fragment); + public TabItem getTabIndicator(int resId, Class fragment){ + return new TabItem(getString(resId), fragment); } public static class TabItem { public final CharSequence mTitle; - private final int mIndicatorColor; - private final int mDividerColor; public final Class fragment; - public TabItem(CharSequence mTitle, int mIndicatorColor, int mDividerColor, Class fragment) { + public TabItem(CharSequence mTitle, Class fragment) { this.mTitle = mTitle; - this.mIndicatorColor = mIndicatorColor; - this.mDividerColor = mDividerColor; this.fragment = fragment; } diff --git a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java index 631a695575..7693ec5411 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java @@ -30,8 +30,10 @@ import net.osmand.plus.OsmandSettings; import net.osmand.plus.OsmandSettings.CommonPreference; import net.osmand.plus.OsmandSettings.OsmandPreference; import net.osmand.plus.R; +import net.osmand.plus.activities.FavoritesActivity; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.SavingTrackHelper; +import net.osmand.plus.activities.TabActivity.TabItem; import net.osmand.plus.monitoring.OsmandMonitoringPlugin; import net.osmand.plus.views.MapInfoLayer; import net.osmand.plus.views.OsmandMapTileView; @@ -926,6 +928,16 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { } }); } + + @Override + public void addMyPlacesTab(FavoritesActivity favoritesActivity, List mTabs, Intent intent) { + if (getAllRecordings().size() > 0) { + mTabs.add(favoritesActivity.getTabIndicator(R.string.notes, NotesFragment.class)); + if (intent != null && "AUDIO".equals(intent.getStringExtra("TAB"))) { + app.getSettings().FAVORITES_TAB.set(mTabs.size() - 1); + } + } + } public boolean indexSingleFile(File f) { boolean oldFileExist = recordingByFileName.containsKey(f.getName()); diff --git a/OsmAnd/src/net/osmand/plus/audionotes/DashAudioVideoNotesActivity.java b/OsmAnd/src/net/osmand/plus/audionotes/DashAudioVideoNotesActivity.java deleted file mode 100644 index 8f85160249..0000000000 --- a/OsmAnd/src/net/osmand/plus/audionotes/DashAudioVideoNotesActivity.java +++ /dev/null @@ -1,139 +0,0 @@ -package net.osmand.plus.audionotes; - -import java.util.ArrayList; -import java.util.List; - -import net.osmand.plus.ContextMenuAdapter; -import net.osmand.plus.OsmandApplication; -import net.osmand.plus.OsmandPlugin; -import net.osmand.plus.R; -import net.osmand.plus.activities.OsmandActionBarActivity; -import android.app.AlertDialog; -import android.content.DialogInterface; -import android.os.Build; -import android.os.Bundle; -import android.support.v7.app.ActionBar; -import android.view.LayoutInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.view.Window; -import android.view.WindowManager; -import android.widget.ArrayAdapter; -import android.widget.ListView; - -/** - * Created by Denis - * on 23.12.2014. - */ -public class DashAudioVideoNotesActivity extends OsmandActionBarActivity { - AudioVideoNotesPlugin plugin; - List items; - NotesAdapter listAdapter; - - @Override - protected void onCreate(Bundle savedInstanceState) { - ((OsmandApplication)getApplication()).applyTheme(this); - super.onCreate(savedInstanceState); - setContentView(R.layout.editing_poi_filter); - - plugin = OsmandPlugin.getEnabledPlugin(AudioVideoNotesPlugin.class); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ - Window window = getWindow(); - window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); - window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); - } - ActionBar actionBar = getSupportActionBar(); - actionBar.setTitle(R.string.audionotes_plugin_name); - actionBar.setIcon(android.R.color.transparent); - } - - @Override - protected void onResume() { - super.onResume(); - items = new ArrayList(plugin.getAllRecordings()); - listAdapter = new NotesAdapter(items); - ((ListView)findViewById(android.R.id.list)).setAdapter(listAdapter); - } - - private void showContextMenu(final AudioVideoNotesPlugin.Recording recording){ - AlertDialog.Builder builder = new AlertDialog.Builder(this); - final ContextMenuAdapter adapter = new ContextMenuAdapter(this); - ContextMenuAdapter.OnContextMenuClick listener = new ContextMenuAdapter.OnContextMenuClick() { - @Override - public boolean onContextMenuClick(final ArrayAdapter adapter, int resId, int pos, boolean isChecked) { - if (resId == R.string.local_index_mi_delete) { - AlertDialog.Builder confirm = new AlertDialog.Builder(DashAudioVideoNotesActivity.this); - confirm.setPositiveButton(R.string.default_buttons_yes, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - plugin.deleteRecording(recording); - items.remove(recording); - listAdapter.notifyDataSetChanged(); - } - }); - confirm.setNegativeButton(R.string.default_buttons_no, null); - confirm.setMessage(getString(R.string.delete_confirmation_msg, recording.file.getName())); - confirm.show(); - } - return true; - } - }; - adapter.item(R.string.local_index_mi_delete).listen(listener).position(0).reg(); - - builder.setItems(adapter.getItemNames(), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - ContextMenuAdapter.OnContextMenuClick clk = adapter.getClickAdapter(which); - if (clk != null){ - clk.onContextMenuClick(null, adapter.getElementId(which), which, false); - } - } - }); - builder.show(); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - this.finish(); - default: - return super.onOptionsItemSelected(item); - } - } - - - - class NotesAdapter extends ArrayAdapter { - NotesAdapter(List recordingList) { - super(DashAudioVideoNotesActivity.this, R.layout.dash_audio_video_notes_item, recordingList); - } - - @Override - public View getView(final int position, View convertView, ViewGroup parent) { - LayoutInflater inflater = getLayoutInflater(); - View row = convertView; - if (row == null){ - row = inflater.inflate(R.layout.dash_audio_video_notes_item, parent, false); - row.findViewById(R.id.divider).setVisibility(View.GONE); - } - boolean light = ((OsmandApplication)getApplication()).getSettings().isLightContent(); - if (light) { - row.setBackgroundColor(getResources().getColor(R.color.expandable_list_item_light)); - } else { - row.setBackgroundColor(getResources().getColor(R.color.list_item_background_dark)); - } - final AudioVideoNotesPlugin.Recording recording = getItem(position); - DashAudioVideoNotesFragment.getNoteView(recording, row, DashAudioVideoNotesActivity.this, plugin); - row.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - showContextMenu(recording); - return true; - } - }); - return row; - } - } -} diff --git a/OsmAnd/src/net/osmand/plus/audionotes/DashAudioVideoNotesFragment.java b/OsmAnd/src/net/osmand/plus/audionotes/DashAudioVideoNotesFragment.java index ad18c43262..7d1e50de06 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/DashAudioVideoNotesFragment.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/DashAudioVideoNotesFragment.java @@ -6,9 +6,11 @@ import java.util.List; import net.osmand.data.PointDescription; import net.osmand.plus.OsmandPlugin; import net.osmand.plus.R; +import net.osmand.plus.activities.FavoritesActivity; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.dashboard.DashBaseFragment; import net.osmand.plus.helpers.FontCache; +import net.osmand.util.Algorithms; import android.app.Activity; import android.content.Context; import android.content.Intent; @@ -43,7 +45,9 @@ public class DashAudioVideoNotesFragment extends DashBaseFragment { @Override public void onClick(View view) { Activity activity = getActivity(); - final Intent favorites = new Intent(activity, DashAudioVideoNotesActivity.class); + Class fa = getMyApplication().getAppCustomization().getFavoritesActivity(); + final Intent favorites = new Intent(activity, fa); + favorites.putExtra("TAB", "AUDIO"); favorites.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); activity.startActivity(favorites); } @@ -98,7 +102,7 @@ public class DashAudioVideoNotesFragment extends DashBaseFragment { public void onClick(View v) { getMyApplication().getSettings().setMapLocationToShow(recording.getLatitude(), recording.getLongitude(), 15, new PointDescription(PointDescription.POINT_TYPE_NOTE, - recording.getName() != null ? recording.getName() : recording.getDescription(getActivity())), true, + !Algorithms.isEmpty(recording.getName())? recording.getName() : recording.getDescription(getActivity())), true, recording); //$NON-NLS-1$ MapActivity.launchMapActivityMoveToTop(getActivity()); } diff --git a/OsmAnd/src/net/osmand/plus/download/DownloadActivity.java b/OsmAnd/src/net/osmand/plus/download/DownloadActivity.java index 36c022a565..fb7a0c6f91 100644 --- a/OsmAnd/src/net/osmand/plus/download/DownloadActivity.java +++ b/OsmAnd/src/net/osmand/plus/download/DownloadActivity.java @@ -95,9 +95,9 @@ public class DownloadActivity extends BaseDownloadActivity { ViewPager viewPager = (ViewPager) findViewById(R.id.pager); PagerSlidingTabStrip mSlidingTabLayout = (PagerSlidingTabStrip) findViewById(R.id.sliding_tabs); - mTabs.add(new TabActivity.TabItem(getString(R.string.download_tab_local), Color.DKGRAY, Color.LTGRAY, LocalIndexesFragment.class)); - mTabs.add(new TabActivity.TabItem(getString(R.string.download_tab_downloads), Color.DKGRAY, Color.LTGRAY, DownloadIndexFragment.class)); - mTabs.add(new TabActivity.TabItem(getString(R.string.download_tab_updates), Color.DKGRAY, Color.LTGRAY, UpdatesIndexFragment.class)); + mTabs.add(new TabActivity.TabItem(getString(R.string.download_tab_local), LocalIndexesFragment.class)); + mTabs.add(new TabActivity.TabItem(getString(R.string.download_tab_downloads), DownloadIndexFragment.class)); + mTabs.add(new TabActivity.TabItem(getString(R.string.download_tab_updates), UpdatesIndexFragment.class)); viewPager.setAdapter(new TabActivity.OsmandFragmentPagerAdapter(getSupportFragmentManager(), mTabs)); mSlidingTabLayout.setViewPager(viewPager); diff --git a/OsmAnd/src/net/osmand/plus/download/DownloadIndexAdapter.java b/OsmAnd/src/net/osmand/plus/download/DownloadIndexAdapter.java index 86efcefade..686f60eeaa 100644 --- a/OsmAnd/src/net/osmand/plus/download/DownloadIndexAdapter.java +++ b/OsmAnd/src/net/osmand/plus/download/DownloadIndexAdapter.java @@ -269,14 +269,12 @@ public class DownloadIndexAdapter extends OsmandBaseExpandableListAdapter implem final boolean updatableResource = indexActivatedFileNames.containsKey(sfName); String date = updatableResource ? indexActivatedFileNames.get(sfName) : indexFileNames.get(sfName); boolean outdated = DownloadActivity.downloadListIndexThread.checkIfItemOutdated(e); - description.setText(date + " " + e.getSizeDescription(clctx)); - // up to date String updateDescr = downloadFragment.getResources().getString(R.string.local_index_installed) + ": " + date; uptodate.setText(updateDescr); update.setText(updateDescr); - uptodate.setVisibility(outdated ? View.VISIBLE : View.GONE); - update.setVisibility(outdated ? View.GONE : View.VISIBLE); + uptodate.setVisibility(!outdated ? View.VISIBLE : View.GONE); + update.setVisibility(!outdated ? View.GONE : View.VISIBLE); } } return row; diff --git a/OsmAnd/src/net/osmand/plus/download/LocalIndexesFragment.java b/OsmAnd/src/net/osmand/plus/download/LocalIndexesFragment.java index 0de86eb03d..9b8db44826 100644 --- a/OsmAnd/src/net/osmand/plus/download/LocalIndexesFragment.java +++ b/OsmAnd/src/net/osmand/plus/download/LocalIndexesFragment.java @@ -927,10 +927,11 @@ public class LocalIndexesFragment extends OsmandExpandableListFragment { } else if (child.isLoaded()) { // users confused okColor here with "uptodate", so let's leave white (black in dark app theme) as "isLoaded" //viewName.setTextColor(okColor); + } + if (child.isBackupedData()) { + viewName.setTypeface(Typeface.DEFAULT, Typeface.ITALIC); } else { - if (child.isBackupedData()) { - viewName.setTypeface(Typeface.DEFAULT, Typeface.ITALIC); - } + viewName.setTypeface(Typeface.DEFAULT, Typeface.NORMAL); } TextView sizeText = (TextView) v.findViewById(R.id.local_index_size); if (child.getSize() >= 0) { diff --git a/OsmAnd/src/net/osmand/plus/download/UpdatesIndexFragment.java b/OsmAnd/src/net/osmand/plus/download/UpdatesIndexFragment.java index baf2955f58..41c90d88f1 100644 --- a/OsmAnd/src/net/osmand/plus/download/UpdatesIndexFragment.java +++ b/OsmAnd/src/net/osmand/plus/download/UpdatesIndexFragment.java @@ -10,16 +10,17 @@ import android.support.v4.view.MenuItemCompat; import android.support.v7.app.ActionBar; import android.view.*; import android.widget.*; - import net.osmand.access.AccessibleToast; import net.osmand.map.OsmandRegions; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import java.text.MessageFormat; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Comparator; +import java.util.Date; import java.util.List; import java.util.Map; @@ -260,6 +261,7 @@ public class UpdatesIndexFragment extends ListFragment { TextView name = (TextView) v.findViewById(R.id.download_item); TextView description = (TextView) v.findViewById(R.id.download_descr); + TextView updateDescr = (TextView) v.findViewById(R.id.update_descr); final CheckBox ch = (CheckBox) v.findViewById(R.id.check_download_item); IndexItem e = items.get(position); if (e.getFileName().equals(getString(R.string.everything_up_to_date))) { @@ -275,8 +277,23 @@ public class UpdatesIndexFragment extends ListFragment { String eName = e.getVisibleName(getMyApplication(), osmandRegions); name.setText(eName.trim().replace('\n', ' ').replace("TTS","")); //$NON-NLS-1$ - String d = getMapDescription(e); + String d = getMapDescription(e); description.setText(d); + + String sfName = e.getTargetFileName(); + Map indexActivatedFileNames = getMyApplication().getResourceManager().getIndexFileNames(); + String dt = indexActivatedFileNames.get(sfName); + updateDescr.setText(""); + if(dt != null ) { + try { + Date tm = format.parse(dt); + long days = Math.max(1, (e.getTimestamp() - tm.getTime()) / (24 * 60 * 60 * 1000) + 1); + updateDescr.setText(days + " " + getString(R.string.days_behind)); + } catch (ParseException e1) { + e1.printStackTrace(); + } + } + ch.setChecked(getDownloadActivity().getEntriesToDownload().containsKey(e)); ch.setOnClickListener(new View.OnClickListener() { @@ -306,7 +323,7 @@ public class UpdatesIndexFragment extends ListFragment { private String getMapDescription(IndexItem item){ String typeName = getTypeName(item.getType().getResource()); - String date = item.getDate(new SimpleDateFormat("dd.MM.yyyy")); + String date = item.getDate(format); String size = item.getSizeDescription(getActivity()); return typeName + " " + date + " " + size; diff --git a/OsmAnd/src/net/osmand/plus/helpers/SearchHistoryHelper.java b/OsmAnd/src/net/osmand/plus/helpers/SearchHistoryHelper.java index d5d63ee5e0..1f343adb59 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/SearchHistoryHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/SearchHistoryHelper.java @@ -7,9 +7,7 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.TreeMap; -import java.util.TreeSet; import net.osmand.data.PointDescription; import net.osmand.plus.OsmandApplication; @@ -142,7 +140,7 @@ public class SearchHistoryHelper { } public void setFrequency(String intervalsString, String values) { - if(!Algorithms.isEmpty(intervalsString) && !Algorithms.isEmpty(values)) { + if(Algorithms.isEmpty(intervalsString) || Algorithms.isEmpty(values)) { markAsAccessed(this.lastAccessedTime); return; } @@ -278,11 +276,11 @@ public class SearchHistoryHelper { conn = context.getSQLiteAPI().getOrCreateDatabase(DB_NAME, readonly); } if (conn.getVersion() == 0) { - conn.setVersion(DB_VERSION); onCreate(conn); } else { onUpgrade(conn, conn.getVersion(), DB_VERSION); } + conn.setVersion(DB_VERSION); } return conn; @@ -337,7 +335,10 @@ public class SearchHistoryHelper { if(db != null){ try { db.execSQL( - "UPDATE " + HISTORY_TABLE_NAME + " SET time = ? and freq_intervals = ? and freq_values = ? WHERE " + HISTORY_COL_NAME + " = ?", + "UPDATE " + HISTORY_TABLE_NAME + " SET " + HISTORY_COL_TIME + "= ? "+ + ", " + HISTORY_COL_FREQ_INTERVALS + " = ? " + + ", " +HISTORY_COL_FREQ_VALUES + "= ? WHERE " + + HISTORY_COL_NAME + " = ?", new Object[] { e.getLastAccessTime(), e.getIntervals(), e.getIntervalsValues(), e.getSerializedName() }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } finally { @@ -366,6 +367,7 @@ public class SearchHistoryHelper { "INSERT INTO " + HISTORY_TABLE_NAME + " VALUES (?, ?, ?, ?, ?, ?)", new Object[] { e.getSerializedName(), e.getLastAccessTime(), e.getIntervals(), e.getIntervalsValues(), e.getLat(), e.getLon() }); //$NON-NLS-1$ //$NON-NLS-2$ + System.out.println("Insert " + e.getSerializedName()); } public List getLegacyEntries(SQLiteConnection db){ @@ -417,24 +419,33 @@ public class SearchHistoryHelper { " FROM " + HISTORY_TABLE_NAME , null); //$NON-NLS-1$//$NON-NLS-2$ Map st = new TreeMap(); if (query.moveToFirst()) { + boolean reinsert = false; do { String name = query.getString(0); - HistoryEntry prev = st.get(name); HistoryEntry e = new HistoryEntry(query.getDouble(1), query.getDouble(2), PointDescription.deserializeFromString(name)); long time = query.getLong(3); e.setLastAccessTime(time); e.setFrequency(query.getString(4), query.getString(5)); - if(prev != null) { - entries.remove(prev); - } - if(prev != null || !Algorithms.objectEquals(name, e.getSerializedName())) { - removeQuery(name, db); - insert(e, db); + if(st.containsKey(name) || st.containsKey(e.getSerializedName()) + || !Algorithms.objectEquals(name, e.getSerializedName())) { + reinsert = true; } entries.add(e); - st.put(name, e); + st.put(e.getSerializedName(), e); + System.out.println(e.getSerializedName() + " ("+name+") " + new Date(e.getLastAccessTime()) + " " + + e.getIntervalsValues() + " " + e.getIntervals()); } while (query.moveToNext()); + if(reinsert) { + System.err.println("Reinsert all values"); + db.execSQL("DELETE FROM " + HISTORY_TABLE_NAME); //$NON-NLS-1$ + entries.clear(); + entries.addAll(st.values()); + for(HistoryEntry he : entries) { + insert(he, db); + } + + } } query.close(); } finally { diff --git a/OsmAnd/src/net/osmand/plus/osmo/OsMoPlugin.java b/OsmAnd/src/net/osmand/plus/osmo/OsMoPlugin.java index 7a0184eca8..ff2bda157b 100644 --- a/OsmAnd/src/net/osmand/plus/osmo/OsMoPlugin.java +++ b/OsmAnd/src/net/osmand/plus/osmo/OsMoPlugin.java @@ -70,16 +70,19 @@ public class OsMoPlugin extends OsmandPlugin implements MonitoringInfoControlSer public OsMoPlugin(final OsmandApplication app) { this.app = app; - service = new OsMoService(app, this); - tracker = new OsMoTracker(service, app.getSettings().OSMO_SAVE_TRACK_INTERVAL, - app.getSettings().OSMO_SEND_LOCATIONS_STATE); - deviceControl = new OsMoControlDevice(app, this, service, tracker); - groups = new OsMoGroups(this, service, tracker, app); - ApplicationMode.regWidget("osmo_control", (ApplicationMode[])null); + } @Override public boolean init(final OsmandApplication app, Activity activity) { + if (service == null) { + service = new OsMoService(app, this); + tracker = new OsMoTracker(service, app.getSettings().OSMO_SAVE_TRACK_INTERVAL, + app.getSettings().OSMO_SEND_LOCATIONS_STATE); + deviceControl = new OsMoControlDevice(app, this, service, tracker); + groups = new OsMoGroups(this, service, tracker, app); + } + ApplicationMode.regWidget("osmo_control", (ApplicationMode[])null); if(app.getSettings().OSMO_AUTO_CONNECT.get() || (System.currentTimeMillis() - app.getSettings().OSMO_LAST_PING.get() < 5 * 60 * 1000 )) { service.connect(true);