Skip to content

Commit

Permalink
inline display of service capabilities
Browse files Browse the repository at this point in the history
  • Loading branch information
Bananeweizen committed May 31, 2015
1 parent 4e92fca commit 705acc6
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 79 deletions.
72 changes: 36 additions & 36 deletions main/res/xml/preferences.xml
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,6 @@
</PreferenceScreen>
</PreferenceCategory>
<PreferenceCategory android:title="@string/settings_information" >
<cgeo.geocaching.settings.CapabilitiesPreference
android:title="@string/settings_features"
app:connector="GC" />

<cgeo.geocaching.settings.InfoPreference
android:text="@string/settings_info_facebook_login"
android:title="@string/settings_info_facebook_login_title"
Expand All @@ -75,6 +71,10 @@
<Preference
android:key="@string/pref_fakekey_gc_website"
android:title="@string/settings_open_website" />

<cgeo.geocaching.settings.CapabilitiesPreference
android:title="@string/settings_features"
app:connector="GC" />
</PreferenceCategory>
</PreferenceScreen>
<PreferenceScreen
Expand All @@ -96,13 +96,13 @@
android:key="@string/pref_fakekey_ocde_authorization" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/settings_information" >
<cgeo.geocaching.settings.CapabilitiesPreference
android:title="@string/settings_features"
app:connector="OC" />

<Preference
android:key="@string/pref_fakekey_ocde_website"
android:title="@string/settings_open_website" />

<cgeo.geocaching.settings.CapabilitiesPreference
android:title="@string/settings_features"
app:connector="OC" />
</PreferenceCategory>
</PreferenceScreen>
<PreferenceScreen
Expand All @@ -124,13 +124,13 @@
android:key="@string/pref_fakekey_ocpl_authorization" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/settings_information" >
<cgeo.geocaching.settings.CapabilitiesPreference
android:title="@string/settings_features"
app:connector="OP" />

<Preference
android:key="@string/pref_fakekey_ocpl_website"
android:title="@string/settings_open_website" />

<cgeo.geocaching.settings.CapabilitiesPreference
android:title="@string/settings_features"
app:connector="OP" />
</PreferenceCategory>
</PreferenceScreen>
<PreferenceScreen
Expand All @@ -152,13 +152,13 @@
android:key="@string/pref_fakekey_ocnl_authorization" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/settings_information" >
<cgeo.geocaching.settings.CapabilitiesPreference
android:title="@string/settings_features"
app:connector="OB" />

<Preference
android:key="@string/pref_fakekey_ocnl_website"
android:title="@string/settings_open_website" />

<cgeo.geocaching.settings.CapabilitiesPreference
android:title="@string/settings_features"
app:connector="OB" />
</PreferenceCategory>
</PreferenceScreen>
<PreferenceScreen
Expand All @@ -180,13 +180,13 @@
android:key="@string/pref_fakekey_ocus_authorization" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/settings_information" >
<cgeo.geocaching.settings.CapabilitiesPreference
android:title="@string/settings_features"
app:connector="OU" />

<Preference
android:key="@string/pref_fakekey_ocus_website"
android:title="@string/settings_open_website" />

<cgeo.geocaching.settings.CapabilitiesPreference
android:title="@string/settings_features"
app:connector="OU" />
</PreferenceCategory>
</PreferenceScreen>
<PreferenceScreen
Expand All @@ -208,13 +208,13 @@
android:key="@string/pref_fakekey_ocro_authorization" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/settings_information" >
<cgeo.geocaching.settings.CapabilitiesPreference
android:title="@string/settings_features"
app:connector="OR" />

<Preference
android:key="@string/pref_fakekey_ocro_website"
android:title="@string/settings_open_website" />

<cgeo.geocaching.settings.CapabilitiesPreference
android:title="@string/settings_features"
app:connector="OR" />
</PreferenceCategory>
</PreferenceScreen>
<PreferenceScreen
Expand All @@ -236,13 +236,13 @@
android:key="@string/pref_fakekey_ocuk_authorization" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/settings_information" >
<cgeo.geocaching.settings.CapabilitiesPreference
android:title="@string/settings_features"
app:connector="OK" />

<Preference
android:key="@string/pref_fakekey_ocuk_website"
android:title="@string/settings_open_website" />

<cgeo.geocaching.settings.CapabilitiesPreference
android:title="@string/settings_features"
app:connector="OK" />
</PreferenceCategory>
</PreferenceScreen>
<PreferenceScreen
Expand Down Expand Up @@ -288,13 +288,13 @@
android:title="@string/init_ec_icons" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/settings_information" >
<cgeo.geocaching.settings.CapabilitiesPreference
android:title="@string/settings_features"
app:connector="EC" />

<Preference
android:key="@string/pref_fakekey_ec_website"
android:title="@string/settings_open_website" />

<cgeo.geocaching.settings.CapabilitiesPreference
android:title="@string/settings_features"
app:connector="EC" />
</PreferenceCategory>
</PreferenceScreen>
<PreferenceScreen
Expand All @@ -307,13 +307,13 @@
android:title="@string/settings_activate_ox" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/settings_information" >
<cgeo.geocaching.settings.CapabilitiesPreference
android:title="@string/settings_features"
app:connector="OX" />

<Preference
android:key="@string/pref_fakekey_ox_website"
android:title="@string/settings_open_website" />

<cgeo.geocaching.settings.CapabilitiesPreference
android:title="@string/settings_features"
app:connector="OX" />
</PreferenceCategory>
</PreferenceScreen>
<PreferenceScreen
Expand Down
53 changes: 10 additions & 43 deletions main/src/cgeo/geocaching/settings/CapabilitiesPreference.java
Original file line number Diff line number Diff line change
@@ -1,20 +1,14 @@
package cgeo.geocaching.settings;

import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.IConnector;

import android.app.AlertDialog;
import org.apache.commons.lang3.StringUtils;

import android.content.Context;
import android.content.DialogInterface;
import android.content.res.TypedArray;
import android.preference.Preference;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;

/**
* Preference for displaying the supported capabilities of an {@link IConnector} implementation.
Expand All @@ -35,53 +29,26 @@ public CapabilitiesPreference(final Context context, final AttributeSet attrs, f
super(context, attrs, defStyle);
}

@Override
public View getView(final View convertView, final ViewGroup parent) {
setOnPreferenceClickListener(new ClickListener());
return super.getView(convertView, parent);
}

private final class ClickListener implements OnPreferenceClickListener {
@Override
public boolean onPreferenceClick(final Preference preference) {
final WebView htmlView = new WebView(preference.getContext());
htmlView.loadDataWithBaseURL(null, createCapabilitiesMessage(), "text/html", "utf-8", null);
final AlertDialog.Builder builder = new AlertDialog.Builder(preference.getContext());
builder.setView(htmlView)
.setIcon(android.R.drawable.ic_dialog_info)
.setTitle(R.string.settings_features)
.setPositiveButton(R.string.err_none, new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, final int id) {
dialog.cancel();
}
});
builder.create().show();
return false;
}
}

public String createCapabilitiesMessage() {
private String createCapabilitiesMessage() {
// TODO: this needs a better key for the connectors
final IConnector connector = ConnectorFactory.getConnector(connectorCode + "1234");
final StringBuilder builder = new StringBuilder("<p>"
+ TextUtils.htmlEncode(CgeoApplication.getInstance().getString(R.string.feature_description)) + "</p><ul>");

for (final String capability : connector.getCapabilities()) {
builder.append("<li>").append(TextUtils.htmlEncode(capability)).append("</li>");
}

builder.append("</ul>");
return builder.toString();
return StringUtils.join(connector.getCapabilities(), "\n");
}

@Override
protected void processAttributeValues(final TypedArray values) {
connectorCode = values.getString(0);
setSummary(StringUtils.EMPTY);
}

@Override
protected int[] getAttributeNames() {
return new int[] { R.attr.connector };
}

@Override
public void setSummary(final CharSequence summary) {
super.setSummary(createCapabilitiesMessage());
}
}

1 comment on commit 705acc6

@cgeoCI
Copy link
Contributor

@cgeoCI cgeoCI commented on 705acc6 May 31, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like this commit broke build.
Please see http://ci.cgeo.org/job/c-geo/3791/console to remedy the problem.

Please sign in to comment.