Move some files and add donate section

This commit is contained in:
mvp76 2016-11-16 11:05:20 +01:00
parent d3247b9cfd
commit d90cb040b1
6 changed files with 124 additions and 54 deletions

View File

@ -79,7 +79,7 @@ public class AppDetails2 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_app_details2);
setContentView(R.layout.app_details2);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle(""); // Nice and clean toolbar
setSupportActionBar(toolbar);
@ -127,9 +127,10 @@ public class AppDetails2 extends AppCompatActivity {
private final int VIEWTYPE_HEADER = 0;
private final int VIEWTYPE_SCREENSHOTS = 1;
private final int VIEWTYPE_WHATS_NEW = 2;
private final int VIEWTYPE_LINKS = 3;
private final int VIEWTYPE_PERMISSIONS = 4;
private final int VIEWTYPE_VERSIONS = 5;
private final int VIEWTYPE_DONATE = 3;
private final int VIEWTYPE_LINKS = 4;
private final int VIEWTYPE_PERMISSIONS = 5;
private final int VIEWTYPE_VERSIONS = 6;
private final Context mContext;
private ArrayList<Integer> mItems;
@ -146,13 +147,26 @@ public class AppDetails2 extends AppCompatActivity {
mItems = new ArrayList<>();
else
mItems.clear();
mItems.add(VIEWTYPE_HEADER);
mItems.add(VIEWTYPE_SCREENSHOTS);
mItems.add(VIEWTYPE_WHATS_NEW);
mItems.add(VIEWTYPE_LINKS);
if (shouldShowPermissions())
mItems.add(VIEWTYPE_PERMISSIONS);
mItems.add(VIEWTYPE_VERSIONS);
addItem(VIEWTYPE_HEADER);
addItem(VIEWTYPE_SCREENSHOTS);
addItem(VIEWTYPE_WHATS_NEW);
addItem(VIEWTYPE_DONATE);
addItem(VIEWTYPE_LINKS);
addItem(VIEWTYPE_PERMISSIONS);
addItem(VIEWTYPE_VERSIONS);
}
private void addItem(int item) {
// Gives us a chance to hide sections that are not used, e.g. the donate section when
// we have no donation links.
if (item == VIEWTYPE_DONATE) {
if (!shouldShowDonate())
return;
} else if (item == VIEWTYPE_PERMISSIONS) {
if (!shouldShowPermissions())
return;
}
mItems.add(item);
}
private boolean shouldShowPermissions() {
@ -172,6 +186,13 @@ public class AppDetails2 extends AppCompatActivity {
return false;
}
private boolean shouldShowDonate() {
return uriIsSetAndCanBeOpened(mApp.donateURL) ||
uriIsSetAndCanBeOpened(mApp.bitcoinAddr) ||
uriIsSetAndCanBeOpened(mApp.litecoinAddr) ||
uriIsSetAndCanBeOpened(mApp.flattrID);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == VIEWTYPE_HEADER) {
@ -186,6 +207,10 @@ public class AppDetails2 extends AppCompatActivity {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.app_details2_whatsnew, parent, false);
return new WhatsNewViewHolder(view);
} else if (viewType == VIEWTYPE_DONATE) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.app_details2_donate, parent, false);
return new DonateViewHolder(view);
} else if (viewType == VIEWTYPE_LINKS) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.app_details2_links, parent, false);
@ -307,6 +332,28 @@ public class AppDetails2 extends AppCompatActivity {
} else if (viewType == VIEWTYPE_WHATS_NEW) {
WhatsNewViewHolder vh = (WhatsNewViewHolder) holder;
vh.textView.setText("WHATS NEW GOES HERE");
} else if (viewType == VIEWTYPE_DONATE) {
DonateViewHolder vh = (DonateViewHolder) holder;
// Donate button
if (uriIsSetAndCanBeOpened(mApp.donateURL)) {
addLinkItemView(vh.contentView, R.string.menu_donate, R.drawable.ic_donate, mApp.donateURL);
}
// Bitcoin
if (uriIsSetAndCanBeOpened(mApp.bitcoinAddr)) {
addLinkItemView(vh.contentView, R.string.menu_bitcoin, R.drawable.ic_bitcoin, "bitcoin:" + mApp.bitcoinAddr);
}
// Litecoin
if (uriIsSetAndCanBeOpened(mApp.litecoinAddr)) {
addLinkItemView(vh.contentView, R.string.menu_litecoin, R.drawable.ic_litecoin, "litecoin:" + mApp.litecoinAddr);
}
// Flattr
if (uriIsSetAndCanBeOpened(mApp.flattrID)) {
addLinkItemView(vh.contentView, R.string.menu_flattr, R.drawable.ic_flattr, "https://flattr.com/thing/" + mApp.flattrID);
}
} else if (viewType == VIEWTYPE_LINKS) {
final ExpandableLinearLayoutViewHolder vh = (ExpandableLinearLayoutViewHolder) holder;
vh.itemView.setOnClickListener(new View.OnClickListener() {
@ -322,51 +369,31 @@ public class AppDetails2 extends AppCompatActivity {
vh.contentView.removeAllViews();
// Source button
if (!TextUtils.isEmpty(mApp.sourceURL)) {
if (uriIsSetAndCanBeOpened(mApp.sourceURL)) {
addLinkItemView(vh.contentView, R.string.menu_source, R.drawable.ic_source_code, mApp.sourceURL);
}
// Issues button
if (!TextUtils.isEmpty(mApp.trackerURL)) {
if (uriIsSetAndCanBeOpened(mApp.trackerURL)) {
addLinkItemView(vh.contentView, R.string.menu_issues, R.drawable.ic_issues, mApp.trackerURL);
}
// Changelog button
if (!TextUtils.isEmpty(mApp.changelogURL)) {
if (uriIsSetAndCanBeOpened(mApp.changelogURL)) {
addLinkItemView(vh.contentView, R.string.menu_changelog, R.drawable.ic_changelog, mApp.changelogURL);
}
// Website button
if (!TextUtils.isEmpty(mApp.webURL)) {
if (uriIsSetAndCanBeOpened(mApp.webURL)) {
addLinkItemView(vh.contentView, R.string.menu_website, R.drawable.ic_website, mApp.webURL);
}
// Email button
if (!TextUtils.isEmpty(mApp.email)) {
if (uriIsSetAndCanBeOpened(mApp.email)) {
final String subject = Uri.encode(getString(R.string.app_details_subject, mApp.name));
String url = "mailto:" + mApp.email + "?subject=" + subject;
addLinkItemView(vh.contentView, R.string.menu_email, R.drawable.ic_email, url);
}
// Donate button
if (!TextUtils.isEmpty(mApp.donateURL)) {
addLinkItemView(vh.contentView, R.string.menu_donate, R.drawable.ic_donate, mApp.donateURL);
}
// Bitcoin
if (!TextUtils.isEmpty(mApp.bitcoinAddr)) {
addLinkItemView(vh.contentView, R.string.menu_bitcoin, R.drawable.ic_bitcoin, "bitcoin:" + mApp.bitcoinAddr);
}
// Litecoin
if (!TextUtils.isEmpty(mApp.litecoinAddr)) {
addLinkItemView(vh.contentView, R.string.menu_litecoin, R.drawable.ic_litecoin, "litecoin:" + mApp.litecoinAddr);
}
// Flattr
if (!TextUtils.isEmpty(mApp.flattrID)) {
addLinkItemView(vh.contentView, R.string.menu_flattr, R.drawable.ic_flattr, "https://flattr.com/thing/" + mApp.flattrID);
}
} else if (viewType == VIEWTYPE_PERMISSIONS) {
final ExpandableLinearLayoutViewHolder vh = (ExpandableLinearLayoutViewHolder) holder;
vh.itemView.setOnClickListener(new View.OnClickListener() {
@ -491,6 +518,17 @@ public class AppDetails2 extends AppCompatActivity {
}
}
public class DonateViewHolder extends RecyclerView.ViewHolder {
final TextView textView;
final LinearLayout contentView;
DonateViewHolder(View view) {
super(view);
textView = (TextView) view.findViewById(R.id.text);
contentView = (LinearLayout) view.findViewById(R.id.ll_information);
}
}
public class ExpandableLinearLayoutViewHolder extends RecyclerView.ViewHolder {
final TextView headerView;
final LinearLayout contentView;
@ -527,6 +565,8 @@ public class AppDetails2 extends AppCompatActivity {
});
}
private void onLinkClicked(String url) {
if (!TextUtils.isEmpty(url)) {
tryOpenUri(url);
@ -569,6 +609,13 @@ public class AppDetails2 extends AppCompatActivity {
};
}
private boolean uriIsSetAndCanBeOpened(String s) {
if (TextUtils.isEmpty(s))
return false;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(s));
return (intent.resolveActivity(getPackageManager()) != null);
}
private void tryOpenUri(String s) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(s));
if (intent.resolveActivity(getPackageManager()) == null) {

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="3dp" />
<solid android:color="@color/details_panel_light" />
</shape>

View File

@ -6,7 +6,7 @@
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="org.fdroid.fdroid.AppDetails2"
android:background="#efefef"
android:background="#fcfcfc"
>
<android.support.design.widget.AppBarLayout
@ -43,6 +43,19 @@
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_app_details2" />
<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rvDetails"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:behavior_overlapTop="40dp"
app:layoutManager="LinearLayoutManager"
tools:context="org.fdroid.fdroid.AppDetails2"
tools:showIn="@layout/app_details2"
>
</android.support.v7.widget.RecyclerView>
</android.support.design.widget.CoordinatorLayout>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ll_information"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/details_activity_padding"
android:clickable="true"
android:orientation="vertical"
android:background="@drawable/details_panel_light_background"
android:padding="@dimen/details_activity_padding"
tools:ignore="UnusedAttribute">
<TextView
android:id="@+id/information"
style="@style/AppDetailsSubheaderText"
android:text="@string/menu_donate"
/>
</LinearLayout>

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rvDetails"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:behavior_overlapTop="40dp"
app:layoutManager="LinearLayoutManager"
tools:context="org.fdroid.fdroid.AppDetails2"
tools:showIn="@layout/activity_app_details2"
>
</android.support.v7.widget.RecyclerView>

View File

@ -24,5 +24,5 @@
<color name="shadow">#cc222222</color>
<color name="perms_costs_money">#fff4511e</color>
<color name="details_panel_light">#eff4f9</color>
</resources>