Merge remote-tracking branch 'origin/master'

This commit is contained in:
Weblate 2015-10-07 16:04:19 +02:00
commit 123c270bc5
6 changed files with 126 additions and 198 deletions

View file

@ -3,7 +3,8 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" > android:orientation="vertical"
android:id="@+id/mainLayout">
<net.osmand.plus.views.controls.PagerSlidingTabStrip <net.osmand.plus.views.controls.PagerSlidingTabStrip
android:id="@+id/sliding_tabs" android:id="@+id/sliding_tabs"
@ -11,83 +12,10 @@
android:layout_height="@dimen/list_item_height" android:layout_height="@dimen/list_item_height"
android:background="?attr/colorPrimary" /> android:background="?attr/colorPrimary" />
<LinearLayout
android:id="@+id/ProgressView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone"
tools:visibility="visible" >
<RelativeLayout <include layout="@layout/free_version_banner"/>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:layout_marginRight="5dp"
android:gravity="center_vertical|left"
android:orientation="horizontal" >
<ProgressBar <include layout="@layout/progress_with_two_texts"/>
android:id="@+id/IndeterminateProgressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:indeterminate="true"
android:indeterminateOnly="true"
android:visibility="gone"
tools:visibility="visible" />
<TextView
android:id="@+id/ProgressPercent"
android:layout_width="48dp"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:gravity="right|center_vertical"
android:maxLines="1"
android:text=""
android:textSize="@dimen/default_desc_text_size"
tools:text="@string/lorem_ipsum" />
<TextView
android:id="@+id/ProgressMessage"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="3dp"
android:layout_toLeftOf="@id/ProgressPercent"
android:layout_toRightOf="@id/IndeterminateProgressBar"
android:ellipsize="end"
android:gravity="left|center_vertical"
android:singleLine="true"
android:text=""
android:textSize="@dimen/default_desc_text_size"
tools:text="@string/lorem_ipsum" />
</RelativeLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:gravity="center_vertical"
android:orientation="horizontal" >
<ProgressBar
android:id="@+id/memory_progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
tools:progress="50"/>
<ImageView
android:id="@+id/Cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_action_remove_dark" />
</LinearLayout>
</LinearLayout>
<android.support.v4.view.ViewPager <android.support.v4.view.ViewPager
android:id="@+id/pager" android:id="@+id/pager"

View file

@ -2,12 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical" android:background="?attr/ctx_menu_info_view_bg"
android:background="?attr/ctx_menu_info_view_bg"> android:orientation="vertical">
<include layout="@layout/free_version_banner"/>
<include layout="@layout/progress_with_two_texts"/>
<include layout="@layout/download_items_list"/> <include layout="@layout/download_items_list"/>
</LinearLayout> </LinearLayout>

View file

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <LinearLayout
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/freeVersionBanner"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:osmand="http://schemas.android.com/apk/res-auto" xmlns:osmand="http://schemas.android.com/apk/res-auto"
android:id="@+id/freeVersionBanner" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
@ -12,6 +12,7 @@
tools:showIn="@layout/local_index_fragment_header"> tools:showIn="@layout/local_index_fragment_header">
<LinearLayout <LinearLayout
android:id="@+id/freeVersionBannerTitle"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="4dp"> android:padding="4dp">
@ -47,8 +48,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:max="10" android:max="10"
tools:progress="5" android:progressDrawable="@drawable/number_of_downloads_progress_bar_drawable"
android:progressDrawable="@drawable/number_of_downloads_progress_bar_drawable"/> android:saveEnabled="false"
tools:progress="5"/>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -162,16 +164,16 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
osmand:textAllCapsCompat="true" android:text="@string/get_full_version"
android:text="@string/get_full_version"/> osmand:textAllCapsCompat="true"/>
<net.osmand.plus.widgets.ButtonEx <net.osmand.plus.widgets.ButtonEx
android:id="@+id/laterButton" android:id="@+id/laterButton"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
osmand:textAllCapsCompat="true" android:text="@string/later"
android:text="@string/later"/> osmand:textAllCapsCompat="true"/>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

View file

@ -12,7 +12,6 @@ import android.os.Bundle;
import android.support.v4.app.DialogFragment; import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.ListFragment; import android.support.v4.app.ListFragment;
import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager;
import android.view.MenuItem; import android.view.MenuItem;
@ -22,12 +21,12 @@ import android.widget.BaseAdapter;
import android.widget.BaseExpandableListAdapter; import android.widget.BaseExpandableListAdapter;
import android.widget.Button; import android.widget.Button;
import android.widget.ExpandableListAdapter; import android.widget.ExpandableListAdapter;
import android.widget.ImageView;
import android.widget.ListAdapter; import android.widget.ListAdapter;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import net.osmand.IndexConstants; import net.osmand.IndexConstants;
import net.osmand.PlatformUtil;
import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin; import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.OsmandSettings; import net.osmand.plus.OsmandSettings;
@ -39,10 +38,13 @@ import net.osmand.plus.activities.OsmandBaseExpandableListAdapter;
import net.osmand.plus.activities.OsmandExpandableListFragment; import net.osmand.plus.activities.OsmandExpandableListFragment;
import net.osmand.plus.activities.TabActivity; import net.osmand.plus.activities.TabActivity;
import net.osmand.plus.base.BasicProgressAsyncTask; import net.osmand.plus.base.BasicProgressAsyncTask;
import net.osmand.plus.download.items.RegionDialogFragment;
import net.osmand.plus.download.items.WorldItemsFragment; import net.osmand.plus.download.items.WorldItemsFragment;
import net.osmand.plus.srtmplugin.SRTMPlugin; import net.osmand.plus.srtmplugin.SRTMPlugin;
import net.osmand.plus.views.controls.PagerSlidingTabStrip; import net.osmand.plus.views.controls.PagerSlidingTabStrip;
import org.apache.commons.logging.Log;
import java.io.File; import java.io.File;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.ArrayList; import java.util.ArrayList;
@ -53,15 +55,7 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
public class DownloadActivity extends BaseDownloadActivity { public class DownloadActivity extends BaseDownloadActivity implements RegionDialogFragment.DialogDismissListener {
private View progressView;
private ProgressBar indeterminateProgressBar;
private ProgressBar determinateProgressBar;
private TextView progressMessage;
private TextView progressPercent;
private ImageView cancel;
private List<LocalIndexInfo> localIndexInfos = new ArrayList<LocalIndexInfo>(); private List<LocalIndexInfo> localIndexInfos = new ArrayList<LocalIndexInfo>();
private String initialFilter = ""; private String initialFilter = "";
@ -134,21 +128,6 @@ public class DownloadActivity extends BaseDownloadActivity {
settings = ((OsmandApplication) getApplication()).getSettings(); settings = ((OsmandApplication) getApplication()).getSettings();
indeterminateProgressBar = (ProgressBar) findViewById(R.id.IndeterminateProgressBar);
determinateProgressBar = (ProgressBar) findViewById(R.id.memory_progress);
progressView = findViewById(R.id.ProgressView);
progressMessage = (TextView) findViewById(R.id.ProgressMessage);
progressPercent = (TextView) findViewById(R.id.ProgressPercent);
cancel = (ImageView) findViewById(R.id.Cancel);
cancel.setImageDrawable(getMyApplication().getIconsCache().getContentIcon(R.drawable.ic_action_remove_dark));
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeSureUserCancelDownload();
}
});
findViewById(R.id.downloadButton).setOnClickListener(new View.OnClickListener() { findViewById(R.id.downloadButton).setOnClickListener(new View.OnClickListener() {
@Override @Override
@ -220,6 +199,7 @@ public class DownloadActivity extends BaseDownloadActivity {
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
getMyApplication().getAppCustomization().resumeActivity(DownloadActivity.class, this); getMyApplication().getAppCustomization().resumeActivity(DownloadActivity.class, this);
initFreeVersionBanner(findViewById(R.id.mainLayout));
} }
@ -259,53 +239,15 @@ public class DownloadActivity extends BaseDownloadActivity {
@Override @Override
public void updateProgress(boolean updateOnlyProgress) { public void updateProgress(boolean updateOnlyProgress) {
BasicProgressAsyncTask<?, ?, ?> basicProgressAsyncTask = DownloadActivity.downloadListIndexThread.getCurrentRunningTask(); BasicProgressAsyncTask<?, ?, ?> basicProgressAsyncTask =
final boolean isFinished = basicProgressAsyncTask == null DownloadActivity.downloadListIndexThread.getCurrentRunningTask();
|| basicProgressAsyncTask.getStatus() == AsyncTask.Status.FINISHED;
boolean indeterminate = true;
int percent = 0;
String message = "";
if (!isFinished) {
indeterminate = basicProgressAsyncTask.isIndeterminate();
message = basicProgressAsyncTask.getDescription();
if (!indeterminate) {
percent = basicProgressAsyncTask.getProgressPercentage();
}
}
if (visibleBanner != null) { if (visibleBanner != null) {
visibleBanner.updateProgress(isFinished, indeterminate, percent, message); final int countedDownloads = DownloadActivity.downloadListIndexThread.getCountedDownloads();
visibleBanner.updateProgress(countedDownloads, basicProgressAsyncTask);
} }
if (!updateOnlyProgress) { if (!updateOnlyProgress) {
updateDownloadButton(); updateDownloadButton();
} }
// TODO delete after refactoring!
//needed when rotation is performed and progress can be null
if (progressView == null) {
return;
}
if (updateOnlyProgress) {
if (basicProgressAsyncTask != null && !basicProgressAsyncTask.isIndeterminate()) {
progressPercent.setText(basicProgressAsyncTask.getProgressPercentage() + "%");
determinateProgressBar.setProgress(basicProgressAsyncTask.getProgressPercentage());
}
} else {
progressView.setVisibility(!isFinished ? View.VISIBLE : View.GONE);
if (!isFinished) {
indeterminateProgressBar.setVisibility(!indeterminate ? View.GONE : View.VISIBLE);
determinateProgressBar.setVisibility(indeterminate ? View.GONE : View.VISIBLE);
cancel.setVisibility(indeterminate ? View.GONE : View.VISIBLE);
progressPercent.setVisibility(indeterminate ? View.GONE : View.VISIBLE);
progressMessage.setText(basicProgressAsyncTask.getDescription());
if (!indeterminate) {
progressPercent.setText(basicProgressAsyncTask.getProgressPercentage() + "%");
determinateProgressBar.setProgress(basicProgressAsyncTask.getProgressPercentage());
}
}
}
} }
@Override @Override
@ -631,14 +573,12 @@ public class DownloadActivity extends BaseDownloadActivity {
public void showDialog(FragmentActivity activity, DialogFragment fragment) { public void showDialog(FragmentActivity activity, DialogFragment fragment) {
FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction(); fragment.show(activity.getSupportFragmentManager(), "dialog");
Fragment prev = activity.getSupportFragmentManager().findFragmentByTag("dialog"); }
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
fragment.show(ft, "dialog"); @Override
public void onDialogDismissed() {
initFreeVersionBanner(findViewById(R.id.mainLayout));
} }
private static class ToggleCollapseFreeVersionBanner implements View.OnClickListener { private static class ToggleCollapseFreeVersionBanner implements View.OnClickListener {
@ -669,46 +609,57 @@ public class DownloadActivity extends BaseDownloadActivity {
private final ProgressBar progressBar; private final ProgressBar progressBar;
private final TextView leftTextView; private final TextView leftTextView;
private final TextView rightTextView; private final TextView rightTextView;
private final Context ctx;
private final boolean shouldShowFreeVersionBanner;
private final ProgressBar downloadsLeftProgressBar; private final ProgressBar downloadsLeftProgressBar;
private final View buttonsLinearLayout; private final View buttonsLinearLayout;
private final TextView freeVersionDescriptionTextView; private final TextView freeVersionDescriptionTextView;
private OsmandApplication application;
private final TextView downloadsLeftTextView; private final TextView downloadsLeftTextView;
private final View laterButton;
private final Context ctx;
private final OsmandApplication application;
private final boolean shouldShowFreeVersionBanner;
private final View freeVersionBannerTitle;
public BannerAndDownloadFreeVersion(View view, Context ctx) { public BannerAndDownloadFreeVersion(View view, Context ctx) {
this.ctx = ctx; this.ctx = ctx;
application = (OsmandApplication) ctx.getApplicationContext();
freeVersionBanner = view.findViewById(R.id.freeVersionBanner); freeVersionBanner = view.findViewById(R.id.freeVersionBanner);
downloadProgressLayout = view.findViewById(R.id.downloadProgressLayout); downloadProgressLayout = view.findViewById(R.id.downloadProgressLayout);
progressBar = (ProgressBar) view.findViewById(R.id.progressBar); progressBar = (ProgressBar) view.findViewById(R.id.progressBar);
leftTextView = (TextView) view.findViewById(R.id.leftTextView); leftTextView = (TextView) view.findViewById(R.id.leftTextView);
rightTextView = (TextView) view.findViewById(R.id.rightTextView); rightTextView = (TextView) view.findViewById(R.id.rightTextView);
application = (OsmandApplication) ctx.getApplicationContext();
shouldShowFreeVersionBanner = Version.isFreeVersion(application)
|| application.getSettings().SHOULD_SHOW_FREE_VERSION_BANNER.get();
initFreeVersionBanner();
downloadsLeftTextView = (TextView) freeVersionBanner.findViewById(R.id.downloadsLeftTextView); downloadsLeftTextView = (TextView) freeVersionBanner.findViewById(R.id.downloadsLeftTextView);
downloadsLeftProgressBar = (ProgressBar) freeVersionBanner.findViewById(R.id.downloadsLeftProgressBar); downloadsLeftProgressBar = (ProgressBar) freeVersionBanner.findViewById(R.id.downloadsLeftProgressBar);
buttonsLinearLayout = freeVersionBanner.findViewById(R.id.buttonsLinearLayout); buttonsLinearLayout = freeVersionBanner.findViewById(R.id.buttonsLinearLayout);
freeVersionDescriptionTextView = (TextView) freeVersionBanner freeVersionDescriptionTextView = (TextView) freeVersionBanner
.findViewById(R.id.freeVersionDescriptionTextView); .findViewById(R.id.freeVersionDescriptionTextView);
laterButton = freeVersionBanner.findViewById(R.id.laterButton);
freeVersionBannerTitle = freeVersionBanner.findViewById(R.id.freeVersionBannerTitle);
shouldShowFreeVersionBanner = Version.isFreeVersion(application)
|| application.getSettings().SHOULD_SHOW_FREE_VERSION_BANNER.get();
initFreeVersionBanner();
updateFreeVersionBanner();
} }
public void updateProgress(boolean isFinished, boolean indeterminate, int percent, String message) { public void updateProgress(int countedDownloads,
BasicProgressAsyncTask<?, ?, ?> basicProgressAsyncTask) {
final boolean isFinished = basicProgressAsyncTask == null
|| basicProgressAsyncTask.getStatus() == AsyncTask.Status.FINISHED;
if (isFinished) { if (isFinished) {
downloadProgressLayout.setVisibility(View.GONE); downloadProgressLayout.setVisibility(View.GONE);
// TODO updateFreeVersionBanner();
// freeVersionBanner.setVisibility(View.VISIBLE);
} else { } else {
if (freeVersionBanner.getVisibility() == View.VISIBLE) { boolean indeterminate = basicProgressAsyncTask.isIndeterminate();
freeVersionBanner.setVisibility(View.GONE); String message = basicProgressAsyncTask.getDescription();
} int percent = basicProgressAsyncTask.getProgressPercentage();
setMinimizedFreeVersionBanner(true);
updateAvailableDownloads(countedDownloads);
downloadProgressLayout.setVisibility(View.VISIBLE); downloadProgressLayout.setVisibility(View.VISIBLE);
progressBar.setIndeterminate(indeterminate); progressBar.setIndeterminate(indeterminate);
if (indeterminate) { if (indeterminate) {
// TODO
leftTextView.setText(message); leftTextView.setText(message);
} else { } else {
// TODO if only 1 map, show map name // TODO if only 1 map, show map name
@ -726,6 +677,7 @@ public class DownloadActivity extends BaseDownloadActivity {
freeVersionBanner.setVisibility(View.GONE); freeVersionBanner.setVisibility(View.GONE);
return; return;
} }
freeVersionBanner.setVisibility(View.VISIBLE);
downloadsLeftProgressBar.setMax(BaseDownloadActivity.MAXIMUM_AVAILABLE_FREE_DOWNLOADS); downloadsLeftProgressBar.setMax(BaseDownloadActivity.MAXIMUM_AVAILABLE_FREE_DOWNLOADS);
freeVersionDescriptionTextView.setText(ctx.getString(R.string.free_version_message, freeVersionDescriptionTextView.setText(ctx.getString(R.string.free_version_message,
BaseDownloadActivity.MAXIMUM_AVAILABLE_FREE_DOWNLOADS)); BaseDownloadActivity.MAXIMUM_AVAILABLE_FREE_DOWNLOADS));
@ -741,21 +693,45 @@ public class DownloadActivity extends BaseDownloadActivity {
} }
} }
}); });
freeVersionBanner.findViewById(R.id.laterButton).setOnClickListener( laterButton.setOnClickListener(
new ToggleCollapseFreeVersionBanner(freeVersionDescriptionTextView, buttonsLinearLayout)); new ToggleCollapseFreeVersionBanner(freeVersionDescriptionTextView, buttonsLinearLayout));
} }
private void updateFreeVersionBanner() { private void updateFreeVersionBanner() {
if (!shouldShowFreeVersionBanner) return; if (!shouldShowFreeVersionBanner) return;
setMinimizedFreeVersionBanner(false);
OsmandSettings settings = application.getSettings(); OsmandSettings settings = application.getSettings();
downloadsLeftProgressBar.setProgress(settings.NUMBER_OF_FREE_DOWNLOADS.get()); final Integer mapsDownloaded = settings.NUMBER_OF_FREE_DOWNLOADS.get();
final int downloadsLeft = BaseDownloadActivity.MAXIMUM_AVAILABLE_FREE_DOWNLOADS downloadsLeftProgressBar.setProgress(mapsDownloaded);
- settings.NUMBER_OF_FREE_DOWNLOADS.get(); int downloadsLeft = BaseDownloadActivity.MAXIMUM_AVAILABLE_FREE_DOWNLOADS
- mapsDownloaded;
downloadsLeft = Math.max(downloadsLeft, 0);
if (downloadsLeft <= 0) {
laterButton.setVisibility(View.GONE);
}
downloadsLeftTextView.setText(ctx.getString(R.string.downloads_left_template, downloadsLeft)); downloadsLeftTextView.setText(ctx.getString(R.string.downloads_left_template, downloadsLeft));
// TODO review logic // TODO review logic
freeVersionBanner.setOnClickListener(new ToggleCollapseFreeVersionBanner(freeVersionDescriptionTextView, freeVersionBanner.setOnClickListener(new ToggleCollapseFreeVersionBanner(freeVersionDescriptionTextView,
buttonsLinearLayout)); buttonsLinearLayout));
} }
private void updateAvailableDownloads(int activeTasks) {
OsmandSettings settings = application.getSettings();
final Integer mapsDownloaded = settings.NUMBER_OF_FREE_DOWNLOADS.get() + activeTasks;
downloadsLeftProgressBar.setProgress(mapsDownloaded);
}
private void setMinimizedFreeVersionBanner(boolean minimize) {
if (minimize) {
freeVersionDescriptionTextView.setVisibility(View.GONE);
buttonsLinearLayout.setVisibility(View.GONE);
freeVersionBannerTitle.setVisibility(View.GONE);
} else {
freeVersionDescriptionTextView.setVisibility(View.VISIBLE);
buttonsLinearLayout.setVisibility(View.VISIBLE);
freeVersionBannerTitle.setVisibility(View.VISIBLE);
}
}
} }
} }

View file

@ -1,10 +1,6 @@
package net.osmand.plus.download.items; package net.osmand.plus.download.items;
import net.osmand.plus.OsmandApplication; import android.content.DialogInterface;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.WorldRegion;
import net.osmand.plus.download.DownloadActivity;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.DialogFragment; import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
@ -13,10 +9,18 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
public class RegionDialogFragment extends DialogFragment { import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.WorldRegion;
import net.osmand.plus.download.DownloadActivity;
public class RegionDialogFragment extends DialogFragment{
public static final String TAG = "RegionDialogFragment"; public static final String TAG = "RegionDialogFragment";
private static final String REGION_ID_DLG_KEY = "world_region_dialog_key"; private static final String REGION_ID_DLG_KEY = "world_region_dialog_key";
private String regionId; private String regionId;
private DialogDismissListener dialogDismissListener;
private DialogDismissListener listener;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@ -61,10 +65,16 @@ public class RegionDialogFragment extends DialogFragment {
toolbar.setTitle(region.getName()); toolbar.setTitle(region.getName());
} }
} }
((DownloadActivity)getActivity()).initFreeVersionBanner(view); ((DownloadActivity) getActivity()).initFreeVersionBanner(view);
listener = new DialogDismissListener() {
@Override
public void onDialogDismissed() {
((DownloadActivity) getActivity()).initFreeVersionBanner(view);
}
};
return view; return view;
} }
@Override @Override
public void onSaveInstanceState(Bundle outState) { public void onSaveInstanceState(Bundle outState) {
outState.putString(REGION_ID_DLG_KEY, regionId); outState.putString(REGION_ID_DLG_KEY, regionId);
@ -76,7 +86,9 @@ public class RegionDialogFragment extends DialogFragment {
} }
public void onRegionSelected(String regionId) { public void onRegionSelected(String regionId) {
((DownloadActivity)getActivity()).showDialog(getActivity(), createInstance(regionId)); final RegionDialogFragment regionDialogFragment = createInstance(regionId);
regionDialogFragment.setOnDismissListener(listener);
((DownloadActivity) getActivity()).showDialog(getActivity(), regionDialogFragment);
} }
public static RegionDialogFragment createInstance(String regionId) { public static RegionDialogFragment createInstance(String regionId) {
@ -86,4 +98,19 @@ public class RegionDialogFragment extends DialogFragment {
fragment.setArguments(bundle); fragment.setArguments(bundle);
return fragment; return fragment;
} }
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
if (dialogDismissListener != null)
dialogDismissListener.onDialogDismissed();
}
public void setOnDismissListener(DialogDismissListener listener) {
this.dialogDismissListener = listener;
}
public interface DialogDismissListener {
void onDialogDismissed();
}
}

View file

@ -70,8 +70,6 @@ public class WorldItemsFragment extends OsmandExpandableListFragment {
onCategorizationFinished(); onCategorizationFinished();
((DownloadActivity) getActivity()).initFreeVersionBanner(view);
return view; return view;
} }
@ -127,7 +125,9 @@ public class WorldItemsFragment extends OsmandExpandableListFragment {
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
if (groupPosition == worldRegionsIndex) { if (groupPosition == worldRegionsIndex) {
WorldRegion region = (WorldRegion)listAdapter.getChild(groupPosition, childPosition); WorldRegion region = (WorldRegion)listAdapter.getChild(groupPosition, childPosition);
((DownloadActivity)getActivity()).showDialog(getActivity(), RegionDialogFragment.createInstance(region.getRegionId())); final RegionDialogFragment regionDialogFragment = RegionDialogFragment.createInstance(region.getRegionId());
regionDialogFragment.setOnDismissListener((DownloadActivity) getActivity());
((DownloadActivity)getActivity()).showDialog(getActivity(), regionDialogFragment);
return true; return true;
} else if (groupPosition == voicePromptsIndex) { } else if (groupPosition == voicePromptsIndex) {
if (childPosition == voicePromptsItemsRecordedSubIndex) { if (childPosition == voicePromptsItemsRecordedSubIndex) {