package org.cnodejs.android.md.ui.activity;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import org.cnodejs.android.md.R;
import org.cnodejs.android.md.model.entity.Message;
import org.cnodejs.android.md.model.entity.Notification;
import org.cnodejs.android.md.presenter.contract.INotificationPresenter;
import org.cnodejs.android.md.presenter.implement.NotificationPresenter;
import org.cnodejs.android.md.ui.base.StatusBarActivity;
import org.cnodejs.android.md.ui.listener.DoubleClickBackToContentTopListener;
import org.cnodejs.android.md.ui.listener.NavigationFinishClickListener;
import org.cnodejs.android.md.ui.util.RefreshUtils;
import org.cnodejs.android.md.ui.util.ThemeUtils;
import org.cnodejs.android.md.ui.view.INotificationView;
import org.cnodejs.android.md.ui.widget.NotificationWebView;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
public class NotificationCompatActivity extends StatusBarActivity implements INotificationView, Toolbar.OnMenuItemClickListener, SwipeRefreshLayout.OnRefreshListener {
@BindView(R.id.toolbar)
protected Toolbar toolbar;
@BindView(R.id.refresh_layout)
protected SwipeRefreshLayout refreshLayout;
@BindView(R.id.web_notification)
protected NotificationWebView webNotification;
@BindView(R.id.icon_no_data)
protected View iconNoData;
private INotificationPresenter notificationPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
ThemeUtils.configThemeBeforeOnCreate(this, R.style.AppThemeLight, R.style.AppThemeDark);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notification_compat);
ButterKnife.bind(this);
toolbar.setNavigationOnClickListener(new NavigationFinishClickListener(this));
toolbar.inflateMenu(R.menu.notification);
toolbar.setOnMenuItemClickListener(this);
toolbar.setOnClickListener(new DoubleClickBackToContentTopListener(webNotification));
notificationPresenter = new NotificationPresenter(this, this);
RefreshUtils.init(refreshLayout, this);
RefreshUtils.refresh(refreshLayout, this);
}
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_done_all:
notificationPresenter.markAllMessageReadAsyncTask();
return true;
default:
return false;
}
}
@Override
public void onRefresh() {
notificationPresenter.getMessagesAsyncTask();
}
@Override
public void onGetMessagesOk(@NonNull Notification notification) {
List<Message> messageList = new ArrayList<>();
messageList.addAll(notification.getHasNotReadMessageList());
messageList.addAll(notification.getHasReadMessageList());
webNotification.updateMessageList(messageList);
iconNoData.setVisibility(messageList.isEmpty() ? View.VISIBLE : View.GONE);
}
@Override
public void onGetMessagesFinish() {
refreshLayout.setRefreshing(false);
}
@Override
public void onMarkAllMessageReadOk() {
webNotification.markAllMessageRead();
}
}