Fixes
This commit is contained in:
parent
f3979fef89
commit
b4ce36cf92
7 changed files with 76 additions and 33 deletions
|
@ -1,8 +1,10 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<item>
|
<item
|
||||||
|
android:top="6dp"
|
||||||
|
android:right="2dp">
|
||||||
<bitmap
|
<bitmap
|
||||||
android:src="@drawable/ic_overflow_menu_dark"
|
android:src="@drawable/ic_overflow_menu_dark"
|
||||||
android:gravity="center" />
|
android:gravity="top|end" />
|
||||||
</item>
|
</item>
|
||||||
</layer-list>
|
</layer-list>
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<item>
|
<item
|
||||||
|
android:top="6dp"
|
||||||
|
android:right="2dp">
|
||||||
<bitmap
|
<bitmap
|
||||||
android:src="@drawable/ic_overflow_menu_light"
|
android:src="@drawable/ic_overflow_menu_light"
|
||||||
android:gravity="center" />
|
android:gravity="top|end" />
|
||||||
</item>
|
</item>
|
||||||
</layer-list>
|
</layer-list>
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
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"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:id="@+id/dash_plugin_item"
|
||||||
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">
|
||||||
|
@ -17,7 +18,7 @@
|
||||||
android:layout_height="54dp"
|
android:layout_height="54dp"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<ImageView
|
<ImageButton
|
||||||
android:id="@+id/plugin_logo"
|
android:id="@+id/plugin_logo"
|
||||||
android:layout_width="32dp"
|
android:layout_width="32dp"
|
||||||
android:layout_height="32dp"
|
android:layout_height="32dp"
|
||||||
|
@ -43,7 +44,7 @@
|
||||||
|
|
||||||
<net.osmand.plus.widgets.SwitchEx
|
<net.osmand.plus.widgets.SwitchEx
|
||||||
android:id="@+id/check_item"
|
android:id="@+id/check_item"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="90dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:layout_marginTop="6dp"
|
android:layout_marginTop="6dp"
|
||||||
|
@ -54,7 +55,6 @@
|
||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="16dp"
|
||||||
android:background="?attr/switch_ex_background"
|
android:background="?attr/switch_ex_background"
|
||||||
android:minHeight="0dp"
|
android:minHeight="0dp"
|
||||||
android:minWidth="0dp"
|
|
||||||
android:paddingTop="8dp"
|
android:paddingTop="8dp"
|
||||||
android:paddingBottom="8dp"
|
android:paddingBottom="8dp"
|
||||||
android:paddingLeft="9.5dp"
|
android:paddingLeft="9.5dp"
|
||||||
|
|
|
@ -62,17 +62,16 @@
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<FrameLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:layout_gravity="top|end"
|
android:layout_gravity="top|end">
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/plugin_is_enabled"
|
android:id="@+id/plugin_is_enabled"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_horizontal"
|
android:layout_gravity="center_horizontal|top"
|
||||||
android:layout_marginTop="6dp"
|
android:layout_marginTop="6dp"
|
||||||
android:src="?attr/ic_action_check"
|
android:src="?attr/ic_action_check"
|
||||||
android:visibility="invisible"
|
android:visibility="invisible"
|
||||||
|
@ -83,6 +82,7 @@
|
||||||
android:layout_width="36dp"
|
android:layout_width="36dp"
|
||||||
android:layout_height="36dp"
|
android:layout_height="36dp"
|
||||||
android:layout_marginTop="6dp"
|
android:layout_marginTop="6dp"
|
||||||
|
android:layout_gravity="center_horizontal|bottom"
|
||||||
android:background="?attr/ic_plugin_options"/>
|
android:background="?attr/ic_plugin_options"/>
|
||||||
</LinearLayout>
|
</FrameLayout>
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
|
@ -7,6 +7,7 @@ import android.content.Context;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.text.format.DateFormat;
|
import android.text.format.DateFormat;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.ViewParent;
|
||||||
import android.view.inputmethod.InputMethodManager;
|
import android.view.inputmethod.InputMethodManager;
|
||||||
|
|
||||||
public class AndroidUtils {
|
public class AndroidUtils {
|
||||||
|
@ -49,4 +50,18 @@ public class AndroidUtils {
|
||||||
public static String formatTime(Context ctx, long time) {
|
public static String formatTime(Context ctx, long time) {
|
||||||
return DateFormat.getTimeFormat(ctx).format(new Date(time));
|
return DateFormat.getTimeFormat(ctx).format(new Date(time));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static View findParentViewById(View view, int id) {
|
||||||
|
ViewParent viewParent = view.getParent();
|
||||||
|
|
||||||
|
while (viewParent != null && viewParent instanceof View) {
|
||||||
|
View parentView = (View)viewParent;
|
||||||
|
if (parentView.getId() == id)
|
||||||
|
return parentView;
|
||||||
|
|
||||||
|
viewParent = parentView.getParent();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,18 +2,20 @@ package net.osmand.plus.dashboard;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import net.osmand.AndroidUtils;
|
||||||
import net.osmand.plus.OsmandPlugin;
|
import net.osmand.plus.OsmandPlugin;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.PluginActivity;
|
import net.osmand.plus.activities.PluginActivity;
|
||||||
import net.osmand.plus.development.OsmandDevelopmentPlugin;
|
import net.osmand.plus.development.OsmandDevelopmentPlugin;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.res.TypedArray;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.CompoundButton;
|
import android.widget.CompoundButton;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageButton;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
@ -25,11 +27,25 @@ public class DashPluginsFragment extends DashBaseFragment {
|
||||||
new CompoundButton.OnCheckedChangeListener() {
|
new CompoundButton.OnCheckedChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||||
OsmandPlugin plugin = (OsmandPlugin)buttonView.getTag();
|
View pluginView = AndroidUtils.findParentViewById(buttonView, R.id.dash_plugin_item);
|
||||||
|
OsmandPlugin plugin = (OsmandPlugin)pluginView.getTag();
|
||||||
if (plugin.isActive() == isChecked) {
|
if (plugin.isActive() == isChecked) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
OsmandPlugin.enablePlugin(getMyApplication(), plugin, isChecked);
|
if (OsmandPlugin.enablePlugin(getMyApplication(), plugin, isChecked)) {
|
||||||
|
updatePluginState(pluginView);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
private final View.OnClickListener toggleEnableDisableListener = new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
View pluginView = AndroidUtils.findParentViewById(view, R.id.dash_plugin_item);
|
||||||
|
OsmandPlugin plugin = (OsmandPlugin)pluginView.getTag();
|
||||||
|
if (OsmandPlugin.enablePlugin(getMyApplication(), plugin, !plugin.isActive())) {
|
||||||
|
updatePluginState(pluginView);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -94,41 +110,49 @@ public class DashPluginsFragment extends DashBaseFragment {
|
||||||
|
|
||||||
for (int pluginIndex = 0; pluginIndex < pluginsContainer.getChildCount(); pluginIndex++) {
|
for (int pluginIndex = 0; pluginIndex < pluginsContainer.getChildCount(); pluginIndex++) {
|
||||||
View pluginView = pluginsContainer.getChildAt(pluginIndex);
|
View pluginView = pluginsContainer.getChildAt(pluginIndex);
|
||||||
|
|
||||||
|
updatePluginState(pluginView);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updatePluginState(View pluginView) {
|
||||||
OsmandPlugin plugin = (OsmandPlugin)pluginView.getTag();
|
OsmandPlugin plugin = (OsmandPlugin)pluginView.getTag();
|
||||||
boolean isEnabled = plugin.isActive();
|
boolean isEnabled = plugin.isActive();
|
||||||
|
|
||||||
CompoundButton enableDisableButton = (CompoundButton) pluginView.findViewById(
|
CompoundButton enableDisableButton = (CompoundButton)pluginView.findViewById(
|
||||||
R.id.check_item);
|
R.id.check_item);
|
||||||
enableDisableButton.setChecked(isEnabled);
|
enableDisableButton.setChecked(isEnabled);
|
||||||
|
|
||||||
|
ImageButton logoView = (ImageButton)pluginView.findViewById(R.id.plugin_logo);
|
||||||
|
if (plugin.isActive()) {
|
||||||
|
logoView.setBackgroundResource(R.drawable.bg_plugin_logo_enabled);
|
||||||
|
} else {
|
||||||
|
TypedArray attributes = getActivity().getTheme().obtainStyledAttributes(
|
||||||
|
new int[] {R.attr.bg_plugin_logo_disabled});
|
||||||
|
logoView.setBackgroundDrawable(attributes.getDrawable(0));
|
||||||
|
attributes.recycle();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void inflatePluginView(LayoutInflater inflater, ViewGroup container,
|
private void inflatePluginView(LayoutInflater inflater, ViewGroup container,
|
||||||
OsmandPlugin plugin) {
|
OsmandPlugin plugin) {
|
||||||
|
|
||||||
View view = inflater.inflate(R.layout.dash_plugin_item, container, false);
|
View view = inflater.inflate(R.layout.dash_plugin_item, container, false);
|
||||||
view.setTag(plugin);
|
view.setTag(plugin);
|
||||||
|
|
||||||
// To discuss: too much confusing and not consistent
|
|
||||||
// boolean hasSettings = (plugin.getSettingsActivity() != null);
|
|
||||||
// if (isEnabled && hasSettings) {
|
|
||||||
// view.setOnClickListener(pluginSettingsListener);
|
|
||||||
// } else {
|
|
||||||
// view.setOnClickListener(pluginDetailsListener);
|
|
||||||
// }
|
|
||||||
view.setOnClickListener(pluginDetailsListener);
|
view.setOnClickListener(pluginDetailsListener);
|
||||||
|
|
||||||
TextView nameView = (TextView)view.findViewById(R.id.plugin_name);
|
TextView nameView = (TextView)view.findViewById(R.id.plugin_name);
|
||||||
nameView.setText(plugin.getName());
|
nameView.setText(plugin.getName());
|
||||||
|
|
||||||
ImageView logoView = (ImageView)view.findViewById(R.id.plugin_logo);
|
ImageButton logoView = (ImageButton)view.findViewById(R.id.plugin_logo);
|
||||||
|
logoView.setOnClickListener(toggleEnableDisableListener);
|
||||||
logoView.setImageResource(plugin.getLogoResourceId());
|
logoView.setImageResource(plugin.getLogoResourceId());
|
||||||
|
|
||||||
CompoundButton enableDisableButton = (CompoundButton)view.findViewById(R.id.check_item);
|
CompoundButton enableDisableButton = (CompoundButton)view.findViewById(R.id.check_item);
|
||||||
enableDisableButton.setTag(plugin);
|
|
||||||
enableDisableButton.setChecked(plugin.isActive());
|
|
||||||
enableDisableButton.setOnCheckedChangeListener(enableDisableListener);
|
enableDisableButton.setOnCheckedChangeListener(enableDisableListener);
|
||||||
|
|
||||||
|
updatePluginState(view);
|
||||||
|
|
||||||
container.addView(view);
|
container.addView(view);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue