package com.yydcdut.note.views.setting.impl; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.support.design.widget.Snackbar; import android.support.v7.app.AlertDialog; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; import com.yydcdut.note.R; import com.yydcdut.note.adapter.list.EditCategoryAdapter; import com.yydcdut.note.entity.Category; import com.yydcdut.note.presenters.setting.impl.EditCategoryPresenterImpl; import com.yydcdut.note.utils.AppCompat; import com.yydcdut.note.views.BaseActivity; import com.yydcdut.note.views.setting.IEditCategoryView; import com.yydcdut.note.widget.CircleProgressBarLayout; import com.yydcdut.sdlv.Menu; import com.yydcdut.sdlv.MenuItem; import com.yydcdut.sdlv.SlideAndDragListView; import java.util.List; import javax.inject.Inject; import butterknife.BindView; import butterknife.ButterKnife; /** * Created by yuyidong on 15/10/13. */ public class EditCategoryActivity extends BaseActivity implements IEditCategoryView, SlideAndDragListView.OnDragListener, SlideAndDragListView.OnSlideListener, SlideAndDragListView.OnMenuItemClickListener, SlideAndDragListView.OnItemDeleteListener { @BindView(R.id.lv_edit_category) SlideAndDragListView mListView; @BindView(R.id.layout_progress) CircleProgressBarLayout mProgressLayout; private EditCategoryAdapter mCategoryAdapter; @Inject EditCategoryPresenterImpl mEditCategoryPresenter; @Override public boolean setStatusBar() { return true; } @Override public int setContentView() { return R.layout.activity_edit_category; } @Override public void initInjector() { mActivityComponent.inject(this); } @Override public void initUiAndListener() { ButterKnife.bind(this); mEditCategoryPresenter.attachView(this); mIPresenter = mEditCategoryPresenter; initToolBarUI(); } private void initToolBarUI() { Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setTitle(getResources().getString(R.string.edit_category)); setSupportActionBar(toolbar); toolbar.setNavigationIcon(R.drawable.ic_check_white_24dp); AppCompat.setElevation(toolbar, getResources().getDimension(R.dimen.ui_elevation)); } private void initListView() { Menu menu = new Menu(true); menu.addItem(new MenuItem.Builder().setWidth((int) getResources().getDimension(R.dimen.slv_item_bg_width) * 3 / 2) .setBackground(new ColorDrawable(getResources().getColor(R.color.red_colorPrimary))) .setText(getResources().getString(R.string.delete)) .setTextColor(Color.WHITE) .setTextSize((int) getResources().getDimension(R.dimen.txt_small) / 2) .build()); menu.addItem(new MenuItem.Builder().setWidth((int) getResources().getDimension(R.dimen.slv_item_bg_width) * 3 / 2) .setBackground(new ColorDrawable(getResources().getColor(R.color.fab_blue))) .setText(getResources().getString(R.string.rename)) .setDirection(MenuItem.DIRECTION_RIGHT) .setTextColor(Color.WHITE) .setTextSize((int) getResources().getDimension(R.dimen.txt_small) / 2) .build()); mListView.setMenu(menu); mListView.setAdapter(mCategoryAdapter); mListView.setOnSlideListener(this); mListView.setOnMenuItemClickListener(this); mListView.setOnItemDeleteListener(this); } @Override public void onDragViewStart(int position) { mCategoryAdapter.setCurrentPosition(position); } @Override public void onDragViewMoving(int position) { mCategoryAdapter.setCurrentPosition(position); } @Override public void onDragViewDown(int position) { mCategoryAdapter.setCurrentPosition(-1); } @Override public void onSlideOpen(View view, View parentView, int position, int direction) { } @Override public void onSlideClose(View view, View parentView, int position, int direction) { } @Override public int onMenuItemClick(View v, int itemPosition, int buttonPosition, int direction) { switch (direction) { case MenuItem.DIRECTION_LEFT: return Menu.ITEM_DELETE_FROM_BOTTOM_TO_TOP; case MenuItem.DIRECTION_RIGHT: showRenameDialog(itemPosition); return Menu.ITEM_SCROLL_BACK; } return Menu.ITEM_NOTHING; } @Override public void showProgressBar() { mProgressLayout.show(); } @Override public void hideProgressBar() { mProgressLayout.hide(); } @Override public void finishActivity() { finish(); } private void showRenameDialog(final int position) { View v = LayoutInflater.from(this).inflate(R.layout.dialog_edittext, null); final EditText editText = (EditText) v.findViewById(R.id.edit_dialog); new AlertDialog.Builder(this, R.style.note_dialog) .setTitle(R.string.rename) .setCancelable(false) .setView(v) .setPositiveButton(R.string.dialog_btn_ok, (dialog, which) -> { mEditCategoryPresenter.renameCategory(position, editText.getText().toString()); dialog.dismiss(); }) .setNegativeButton(R.string.dialog_btn_cancel, (dialog, which) -> { dialog.dismiss(); }) .show(); } @Override public void updateListView() { mCategoryAdapter.notifyDataSetChanged(); } @Override public void showSnackbar(String message) { Snackbar.make(mListView, message, Snackbar.LENGTH_SHORT).show(); } @Override public void showCategoryList(List<Category> categoryList) { mCategoryAdapter = new EditCategoryAdapter(this, categoryList); mListView.setOnDragListener(this, categoryList); initListView(); } @Override public boolean onOptionsItemSelected(android.view.MenuItem item) { switch (item.getItemId()) { case android.R.id.home: mEditCategoryPresenter.doJob(); break; } return true; } @Override public void onItemDelete(View view, int i) { mEditCategoryPresenter.deleteCategory(i); } }