From d78c7befbd2e3723f8a0a58eb4e6b296e860e3ad Mon Sep 17 00:00:00 2001 From: maskara Date: Sun, 21 Jan 2018 14:54:25 +0530 Subject: [PATCH] Revert "Revert "Merge pull request #1024 from neslihanturan/displayNotificationsUI"" This reverts commit d253db54441b50056f2bd5561975f1e04948d602. --- app/src/main/AndroidManifest.xml | 4 ++ .../nrw/commons/di/ActivityBuilderModule.java | 3 + .../commons/notification/Notification.java | 26 +++++++ .../notification/NotificationActivity.java | 50 +++++++++++++ .../NotificationAdapterFactory.java | 30 ++++++++ .../notification/NotificationController.java | 23 ++++++ .../notification/NotificationRenderer.java | 70 +++++++++++++++++++ .../commons/theme/NavigationBaseActivity.java | 5 ++ .../drawable/ic_chat_bubble_black_24px.xml | 9 +++ .../main/res/drawable/ic_edit_black_24dp.xml | 9 +++ .../res/drawable/ic_message_black_24dp.xml | 9 +++ .../drawable/ic_notifications_black_24dp.xml | 9 +++ .../main/res/layout/activity_notification.xml | 34 +++++++++ app/src/main/res/layout/item_notification.xml | 70 +++++++++++++++++++ app/src/main/res/menu/drawer.xml | 5 ++ app/src/main/res/values/strings.xml | 1 + 16 files changed, 357 insertions(+) create mode 100644 app/src/main/java/fr/free/nrw/commons/notification/Notification.java create mode 100644 app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.java create mode 100644 app/src/main/java/fr/free/nrw/commons/notification/NotificationAdapterFactory.java create mode 100644 app/src/main/java/fr/free/nrw/commons/notification/NotificationController.java create mode 100644 app/src/main/java/fr/free/nrw/commons/notification/NotificationRenderer.java create mode 100644 app/src/main/res/drawable/ic_chat_bubble_black_24px.xml create mode 100644 app/src/main/res/drawable/ic_edit_black_24dp.xml create mode 100644 app/src/main/res/drawable/ic_message_black_24dp.xml create mode 100644 app/src/main/res/drawable/ic_notifications_black_24dp.xml create mode 100644 app/src/main/res/layout/activity_notification.xml create mode 100644 app/src/main/res/layout/item_notification.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e262e9088..253bdaea8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,6 +87,10 @@ android:label="@string/title_activity_nearby" android:parentActivityName=".contributions.ContributionsActivity" /> + + create(List notifications) { + RendererBuilder builder = new RendererBuilder() + .bind(Notification.class, new NotificationRenderer(listener)); + ListAdapteeCollection collection = new ListAdapteeCollection<>( + notifications != null ? notifications : Collections.emptyList()); + return new RVRendererAdapter<>(builder, collection); + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/notification/NotificationController.java b/app/src/main/java/fr/free/nrw/commons/notification/NotificationController.java new file mode 100644 index 000000000..84f5c15d8 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/notification/NotificationController.java @@ -0,0 +1,23 @@ +package fr.free.nrw.commons.notification; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by root on 19.12.2017. + */ + +public class NotificationController { + + public static List loadNotifications() { + List notifications = new ArrayList<>(); + notifications.add(new Notification(Notification.NotificationType.message, "notification 1")); + notifications.add(new Notification(Notification.NotificationType.edit, "notification 2")); + notifications.add(new Notification(Notification.NotificationType.mention, "notification 3")); + notifications.add(new Notification(Notification.NotificationType.message, "notification 4")); + notifications.add(new Notification(Notification.NotificationType.edit, "notification 5")); + notifications.add(new Notification(Notification.NotificationType.mention, "notification 6")); + notifications.add(new Notification(Notification.NotificationType.message, "notification 7")); + return notifications; + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/notification/NotificationRenderer.java b/app/src/main/java/fr/free/nrw/commons/notification/NotificationRenderer.java new file mode 100644 index 000000000..36272d4a2 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/notification/NotificationRenderer.java @@ -0,0 +1,70 @@ +package fr.free.nrw.commons.notification; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.pedrogomez.renderers.Renderer; + +import butterknife.BindView; +import butterknife.ButterKnife; +import fr.free.nrw.commons.R; + +/** + * Created by root on 19.12.2017. + */ + +public class NotificationRenderer extends Renderer { + @BindView(R.id.title) TextView title; + @BindView(R.id.description) TextView description; + @BindView(R.id.time) TextView time; + @BindView(R.id.icon) ImageView icon; + private NotificationClicked listener; + + + NotificationRenderer(NotificationClicked listener) { + this.listener = listener; + } + + @Override + protected void setUpView(View view) { } + + @Override + protected void hookListeners(View rootView) { + rootView.setOnClickListener(v -> listener.notificationClicked(getContent())); + } + + @Override + protected View inflate(LayoutInflater layoutInflater, ViewGroup viewGroup) { + View inflatedView = layoutInflater.inflate(R.layout.item_notification, viewGroup, false); + ButterKnife.bind(this, inflatedView); + return inflatedView; + } + + @Override + public void render() { + Notification notification = getContent(); + title.setText(notification.notificationText); + time.setText("3d"); + description.setText("Example notification description"); + switch (notification.notificationType) { + case edit: + icon.setImageResource(R.drawable.ic_edit_black_24dp); + break; + case message: + icon.setImageResource(R.drawable.ic_message_black_24dp); + break; + case mention: + icon.setImageResource(R.drawable.ic_chat_bubble_black_24px); + break; + default: + icon.setImageResource(R.drawable.round_icon_unknown); + } + } + + public interface NotificationClicked{ + void notificationClicked(Notification notification); + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/theme/NavigationBaseActivity.java b/app/src/main/java/fr/free/nrw/commons/theme/NavigationBaseActivity.java index 60ea325e4..4e7cf767f 100644 --- a/app/src/main/java/fr/free/nrw/commons/theme/NavigationBaseActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/theme/NavigationBaseActivity.java @@ -27,6 +27,7 @@ import fr.free.nrw.commons.auth.AccountUtil; import fr.free.nrw.commons.auth.LoginActivity; import fr.free.nrw.commons.contributions.ContributionsActivity; import fr.free.nrw.commons.nearby.NearbyActivity; +import fr.free.nrw.commons.notification.NotificationActivity; import fr.free.nrw.commons.settings.SettingsActivity; import timber.log.Timber; @@ -143,6 +144,10 @@ public abstract class NavigationBaseActivity extends BaseActivity .setNegativeButton(R.string.no, (dialog, which) -> dialog.cancel()) .show(); return true; + case R.id.action_notifications: + drawerLayout.closeDrawer(navigationView); + startActivityWithFlags(this, NotificationActivity.class, Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); + return true; default: Timber.e("Unknown option [%s] selected from the navigation menu", itemId); return false; diff --git a/app/src/main/res/drawable/ic_chat_bubble_black_24px.xml b/app/src/main/res/drawable/ic_chat_bubble_black_24px.xml new file mode 100644 index 000000000..8d40c6d63 --- /dev/null +++ b/app/src/main/res/drawable/ic_chat_bubble_black_24px.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit_black_24dp.xml b/app/src/main/res/drawable/ic_edit_black_24dp.xml new file mode 100644 index 000000000..2ab2fb753 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_message_black_24dp.xml b/app/src/main/res/drawable/ic_message_black_24dp.xml new file mode 100644 index 000000000..d2876bfad --- /dev/null +++ b/app/src/main/res/drawable/ic_message_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_notifications_black_24dp.xml b/app/src/main/res/drawable/ic_notifications_black_24dp.xml new file mode 100644 index 000000000..7009a6763 --- /dev/null +++ b/app/src/main/res/drawable/ic_notifications_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_notification.xml b/app/src/main/res/layout/activity_notification.xml new file mode 100644 index 000000000..b2eb38475 --- /dev/null +++ b/app/src/main/res/layout/activity_notification.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_notification.xml b/app/src/main/res/layout/item_notification.xml new file mode 100644 index 000000000..d8f4dd8d4 --- /dev/null +++ b/app/src/main/res/layout/item_notification.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/drawer.xml b/app/src/main/res/menu/drawer.xml index f0a0a5e29..83c1bf0ad 100644 --- a/app/src/main/res/menu/drawer.xml +++ b/app/src/main/res/menu/drawer.xml @@ -35,4 +35,9 @@ android:icon="@drawable/ic_exit_to_app_black_24dp" android:title="@string/navigation_item_logout"/> + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3c9c67947..bcc8c3242 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -194,6 +194,7 @@ Feedback Logout Tutorial + Notifications Nearby places cannot be displayed without location permissions no description found Commons file page