diff --git a/briar-android/res/drawable-hdpi/social_new_chat.png b/briar-android/res/drawable-hdpi/social_new_chat.png deleted file mode 100644 index a6a42eeb6..000000000 Binary files a/briar-android/res/drawable-hdpi/social_new_chat.png and /dev/null differ diff --git a/briar-android/res/drawable-hdpi/social_reply.png b/briar-android/res/drawable-hdpi/social_reply.png deleted file mode 100644 index b0fcbf356..000000000 Binary files a/briar-android/res/drawable-hdpi/social_reply.png and /dev/null differ diff --git a/briar-android/res/drawable-hdpi/social_share_old.png b/briar-android/res/drawable-hdpi/social_share_old.png deleted file mode 100644 index 47ae18674..000000000 Binary files a/briar-android/res/drawable-hdpi/social_share_old.png and /dev/null differ diff --git a/briar-android/res/drawable-mdpi/social_new_chat.png b/briar-android/res/drawable-mdpi/social_new_chat.png deleted file mode 100644 index e78580b8e..000000000 Binary files a/briar-android/res/drawable-mdpi/social_new_chat.png and /dev/null differ diff --git a/briar-android/res/drawable-mdpi/social_reply.png b/briar-android/res/drawable-mdpi/social_reply.png deleted file mode 100644 index 75723bca5..000000000 Binary files a/briar-android/res/drawable-mdpi/social_reply.png and /dev/null differ diff --git a/briar-android/res/drawable-mdpi/social_share_old.png b/briar-android/res/drawable-mdpi/social_share_old.png deleted file mode 100644 index 8aa52bc7d..000000000 Binary files a/briar-android/res/drawable-mdpi/social_share_old.png and /dev/null differ diff --git a/briar-android/res/drawable-xhdpi/social_new_chat.png b/briar-android/res/drawable-xhdpi/social_new_chat.png deleted file mode 100644 index 9d5d90492..000000000 Binary files a/briar-android/res/drawable-xhdpi/social_new_chat.png and /dev/null differ diff --git a/briar-android/res/drawable-xhdpi/social_reply.png b/briar-android/res/drawable-xhdpi/social_reply.png deleted file mode 100644 index 1dc01d7df..000000000 Binary files a/briar-android/res/drawable-xhdpi/social_reply.png and /dev/null differ diff --git a/briar-android/res/drawable-xhdpi/social_share_old.png b/briar-android/res/drawable-xhdpi/social_share_old.png deleted file mode 100644 index cdafd8abc..000000000 Binary files a/briar-android/res/drawable-xhdpi/social_share_old.png and /dev/null differ diff --git a/briar-android/res/layout/activity_with_loading.xml b/briar-android/res/layout/activity_with_loading.xml index 4f153dee1..1aaff812a 100644 --- a/briar-android/res/layout/activity_with_loading.xml +++ b/briar-android/res/layout/activity_with_loading.xml @@ -22,15 +22,13 @@ + android:layout_height="match_parent"/> diff --git a/briar-android/res/layout/activity_contact_list.xml b/briar-android/res/layout/fragment_contact_list.xml similarity index 100% rename from briar-android/res/layout/activity_contact_list.xml rename to briar-android/res/layout/fragment_contact_list.xml diff --git a/briar-android/res/menu/forum_list_actions.xml b/briar-android/res/menu/forum_list_actions.xml new file mode 100644 index 000000000..ddc26364e --- /dev/null +++ b/briar-android/res/menu/forum_list_actions.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/briar-android/res/values/color.xml b/briar-android/res/values/color.xml index 763b9c936..16a1983ed 100644 --- a/briar-android/res/values/color.xml +++ b/briar-android/res/values/color.xml @@ -31,10 +31,11 @@ #ffffff #333333 #333333 + #06b9ff + #ff0000 @color/briar_accent - #ffffff #000000 #ffffff #FFFFFF diff --git a/briar-android/res/values/strings.xml b/briar-android/res/values/strings.xml index 56553c73b..9934c12dc 100644 --- a/briar-android/res/values/strings.xml +++ b/briar-android/res/values/strings.xml @@ -77,6 +77,7 @@ %d forum shared by contacts %d forums shared by contacts + Show Unsubscribe Unsubscribed No posts diff --git a/briar-android/res/values/styles.xml b/briar-android/res/values/styles.xml index 914f0a37a..22ad6a119 100644 --- a/briar-android/res/values/styles.xml +++ b/briar-android/res/values/styles.xml @@ -67,13 +67,13 @@ diff --git a/briar-android/src/org/briarproject/android/contact/ContactListFragment.java b/briar-android/src/org/briarproject/android/contact/ContactListFragment.java index 6e063bb36..9838eb06a 100644 --- a/briar-android/src/org/briarproject/android/contact/ContactListFragment.java +++ b/briar-android/src/org/briarproject/android/contact/ContactListFragment.java @@ -98,7 +98,7 @@ public class ContactListFragment extends BaseEventFragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View contentView = - inflater.inflate(R.layout.activity_contact_list, container, + inflater.inflate(R.layout.fragment_contact_list, container, false); BaseContactListAdapter.OnItemClickListener onItemClickListener = diff --git a/briar-android/src/org/briarproject/android/forum/ForumListFragment.java b/briar-android/src/org/briarproject/android/forum/ForumListFragment.java index d3bec0aee..c31fde439 100644 --- a/briar-android/src/org/briarproject/android/forum/ForumListFragment.java +++ b/briar-android/src/org/briarproject/android/forum/ForumListFragment.java @@ -1,18 +1,20 @@ package org.briarproject.android.forum; import android.content.Intent; -import android.content.res.Resources; import android.os.Bundle; import android.support.annotation.Nullable; +import android.support.design.widget.Snackbar; +import android.support.v4.content.ContextCompat; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; -import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; @@ -21,8 +23,6 @@ import android.widget.Toast; import org.briarproject.R; import org.briarproject.android.AndroidComponent; import org.briarproject.android.fragment.BaseEventFragment; -import org.briarproject.android.util.HorizontalBorder; -import org.briarproject.android.util.LayoutUtils; import org.briarproject.android.util.ListLoadingProgressBar; import org.briarproject.api.db.DbException; import org.briarproject.api.db.NoSuchGroupException; @@ -43,12 +43,12 @@ import java.util.logging.Logger; import javax.inject.Inject; +import static android.support.design.widget.Snackbar.LENGTH_INDEFINITE; import static android.view.Gravity.CENTER; import static android.view.Gravity.CENTER_HORIZONTAL; import static android.view.Menu.NONE; import static android.view.View.GONE; import static android.view.View.VISIBLE; -import static android.widget.LinearLayout.HORIZONTAL; import static android.widget.LinearLayout.VERTICAL; import static android.widget.Toast.LENGTH_SHORT; import static java.util.logging.Level.INFO; @@ -56,7 +56,6 @@ import static java.util.logging.Level.WARNING; import static org.briarproject.android.BriarActivity.GROUP_ID; import static org.briarproject.android.forum.ForumActivity.FORUM_NAME; import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH; -import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP; import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP_1; public class ForumListFragment extends BaseEventFragment implements @@ -82,8 +81,7 @@ public class ForumListFragment extends BaseEventFragment implements private ForumListAdapter adapter = null; private ListView list = null; private ListLoadingProgressBar loading = null; - private TextView available = null; - private ImageButton newForumButton = null; + private Snackbar snackbar; // Fields that are accessed from background threads must be volatile @Inject protected volatile ForumManager forumManager; @@ -93,13 +91,14 @@ public class ForumListFragment extends BaseEventFragment implements @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + + setHasOptionsMenu(true); + LinearLayout layout = new LinearLayout(getContext()); layout.setLayoutParams(MATCH_MATCH); layout.setOrientation(VERTICAL); layout.setGravity(CENTER_HORIZONTAL); - int pad = LayoutUtils.getPadding(getContext()); - empty = new TextView(getContext()); empty.setLayoutParams(MATCH_WRAP_1); empty.setGravity(CENTER); @@ -121,32 +120,6 @@ public class ForumListFragment extends BaseEventFragment implements loading = new ListLoadingProgressBar(getContext()); layout.addView(loading); - available = new TextView(getContext()); - available.setLayoutParams(MATCH_WRAP); - available.setGravity(CENTER); - available.setTextSize(18); - available.setPadding(pad, pad, pad, pad); - Resources res = getResources(); - int background = res.getColor(R.color.forums_available_background); - available.setBackgroundColor(background); - available.setOnClickListener(this); - available.setVisibility(GONE); - layout.addView(available); - - layout.addView(new HorizontalBorder(getContext())); - - LinearLayout footer = new LinearLayout(getContext()); - footer.setLayoutParams(MATCH_WRAP); - footer.setOrientation(HORIZONTAL); - footer.setGravity(CENTER); - footer.setBackgroundColor(res.getColor(R.color.button_bar_background)); - newForumButton = new ImageButton(getContext()); - newForumButton.setBackgroundResource(0); - newForumButton.setImageResource(R.drawable.social_new_chat); - newForumButton.setOnClickListener(this); - footer.addView(newForumButton); - layout.addView(footer); - return layout; } @@ -163,9 +136,36 @@ public class ForumListFragment extends BaseEventFragment implements @Override public void onResume() { super.onResume(); + + snackbar = Snackbar.make(getView(), "", LENGTH_INDEFINITE); + snackbar.getView().setBackgroundResource(R.color.briar_primary); + snackbar.setAction(R.string.show_forums, this); + snackbar.setActionTextColor(ContextCompat + .getColor(getContext(), R.color.briar_button_positive)); + loadHeaders(); } + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + inflater.inflate(R.menu.forum_list_actions, menu); + super.onCreateOptionsMenu(menu, inflater); + } + + @Override + public boolean onOptionsItemSelected(final MenuItem item) { + // Handle presses on the action bar items + switch (item.getItemId()) { + case R.id.action_create_forum: + Intent intent = + new Intent(getContext(), CreateForumActivity.class); + startActivity(intent); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + private void loadHeaders() { clearHeaders(); listener.runOnDbThread(new Runnable() { @@ -203,7 +203,7 @@ public class ForumListFragment extends BaseEventFragment implements public void run() { empty.setVisibility(GONE); list.setVisibility(GONE); - available.setVisibility(GONE); + snackbar.dismiss(); loading.setVisibility(VISIBLE); adapter.clear(); } @@ -240,10 +240,10 @@ public class ForumListFragment extends BaseEventFragment implements listener.runOnUiThread(new Runnable() { public void run() { if (availableCount == 0) { - available.setVisibility(GONE); + snackbar.dismiss(); } else { - available.setVisibility(VISIBLE); - available.setText(getResources().getQuantityString( + snackbar.show(); + snackbar.setText(getResources().getQuantityString( R.plurals.forums_shared, availableCount, availableCount)); } @@ -363,12 +363,8 @@ public class ForumListFragment extends BaseEventFragment implements } public void onClick(View view) { - if (view == available) { - startActivity(new Intent(getContext(), - AvailableForumsActivity.class)); - } else if (view == newForumButton) { - startActivity(new Intent(getContext(), CreateForumActivity.class)); - } + // snackbar click + startActivity(new Intent(getContext(), AvailableForumsActivity.class)); } public void onItemClick(AdapterView parent, View view, int position,