Added Android code
[wl-app.git] / Android / folioreader / src / main / java / com / folioreader / ui / folio / fragment / HighlightFragment.java
1 package com.folioreader.ui.folio.fragment;\r
2 \r
3 import android.app.Activity;\r
4 import android.app.Dialog;\r
5 import android.content.Intent;\r
6 import android.os.Bundle;\r
7 import android.support.annotation.Nullable;\r
8 import android.support.v4.app.Fragment;\r
9 import android.support.v4.content.ContextCompat;\r
10 import android.support.v7.widget.DividerItemDecoration;\r
11 import android.support.v7.widget.LinearLayoutManager;\r
12 import android.support.v7.widget.RecyclerView;\r
13 import android.text.TextUtils;\r
14 import android.view.LayoutInflater;\r
15 import android.view.View;\r
16 import android.view.ViewGroup;\r
17 import android.view.Window;\r
18 import android.widget.EditText;\r
19 import android.widget.Toast;\r
20 \r
21 import com.folioreader.Config;\r
22 import com.folioreader.Constants;\r
23 import com.folioreader.R;\r
24 import com.folioreader.model.HighLight;\r
25 import com.folioreader.model.HighlightImpl;\r
26 import com.folioreader.model.event.BusOwner;\r
27 import com.folioreader.model.event.ReloadDataEvent;\r
28 import com.folioreader.model.sqlite.HighLightTable;\r
29 import com.folioreader.ui.folio.adapter.HighlightAdapter;\r
30 import com.folioreader.util.AppUtil;\r
31 import com.folioreader.util.FolioReader;\r
32 import com.folioreader.util.HighlightUtil;\r
33 \r
34 public class HighlightFragment extends Fragment implements HighlightAdapter.HighLightAdapterCallback {\r
35     private static final String HIGHLIGHT_ITEM = "highlight_item";\r
36     private View mRootView;\r
37     private HighlightAdapter adapter;\r
38     private String mBookId;\r
39 \r
40 \r
41     public static HighlightFragment newInstance(String bookId, String epubTitle) {\r
42         HighlightFragment highlightFragment = new HighlightFragment();\r
43         Bundle args = new Bundle();\r
44         args.putString(FolioReader.INTENT_BOOK_ID, bookId);\r
45         args.putString(Constants.BOOK_TITLE, epubTitle);\r
46         highlightFragment.setArguments(args);\r
47         return highlightFragment;\r
48     }\r
49 \r
50     @Override\r
51     public void onCreate(@Nullable Bundle savedInstanceState) {\r
52         super.onCreate(savedInstanceState);\r
53     }\r
54 \r
55     @Override\r
56     public View onCreateView(LayoutInflater inflater,\r
57                              ViewGroup container, Bundle savedInstanceState) {\r
58         mRootView = inflater.inflate(R.layout.fragment_highlight_list, container, false);\r
59         return mRootView;\r
60     }\r
61 \r
62     @Override\r
63     public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {\r
64         super.onViewCreated(view, savedInstanceState);\r
65         RecyclerView highlightsView = (RecyclerView) mRootView.findViewById(R.id.rv_highlights);\r
66         Config config = AppUtil.getSavedConfig(getActivity());\r
67         mBookId = getArguments().getString(FolioReader.INTENT_BOOK_ID);\r
68 \r
69         if (config.isNightMode()) {\r
70             mRootView.findViewById(R.id.rv_highlights).\r
71                     setBackgroundColor(ContextCompat.getColor(getActivity(),\r
72                             R.color.black));\r
73         }\r
74         highlightsView.setLayoutManager(new LinearLayoutManager(getActivity()));\r
75         highlightsView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL));\r
76 \r
77         adapter = new HighlightAdapter(getActivity(), HighLightTable.getAllHighlights(mBookId), this, config);\r
78         highlightsView.setAdapter(adapter);\r
79     }\r
80 \r
81     @Override\r
82     public void onItemClick(HighlightImpl highlightImpl) {\r
83         Intent intent = new Intent();\r
84         intent.putExtra(HIGHLIGHT_ITEM, highlightImpl);\r
85         intent.putExtra(Constants.TYPE, Constants.HIGHLIGHT_SELECTED);\r
86         getActivity().setResult(Activity.RESULT_OK, intent);\r
87         getActivity().finish();\r
88     }\r
89 \r
90     @Override\r
91     public void deleteHighlight(int id) {\r
92         HighLightTable.deleteHighlight(id);\r
93 \r
94         Activity activity = getActivity();\r
95         if (activity instanceof BusOwner)\r
96             ((BusOwner) activity).getBus().post(new ReloadDataEvent());\r
97     }\r
98 \r
99     @Override\r
100     public void editNote(final HighlightImpl highlightImpl, final int position) {\r
101         final Dialog dialog = new Dialog(getActivity(), R.style.DialogCustomTheme);\r
102         dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);\r
103         dialog.setContentView(R.layout.dialog_edit_notes);\r
104         dialog.show();\r
105         String noteText = highlightImpl.getNote();\r
106         ((EditText) dialog.findViewById(R.id.edit_note)).setText(noteText);\r
107 \r
108         dialog.findViewById(R.id.btn_save_note).setOnClickListener(new View.OnClickListener() {\r
109             @Override\r
110             public void onClick(View v) {\r
111 \r
112                 String note =\r
113                         ((EditText) dialog.findViewById(R.id.edit_note)).getText().toString();\r
114                 if (!TextUtils.isEmpty(note)) {\r
115                     highlightImpl.setNote(note);\r
116                     if (HighLightTable.updateHighlight(highlightImpl)) {\r
117                         HighlightUtil.sendHighlightBroadcastEvent(\r
118                                 HighlightFragment.this.getActivity().getApplicationContext(),\r
119                                 highlightImpl,\r
120                                 HighLight.HighLightAction.MODIFY);\r
121                         adapter.editNote(note, position);\r
122                     }\r
123                     dialog.dismiss();\r
124                 } else {\r
125                     Toast.makeText(getActivity(),\r
126                             getString(R.string.please_enter_note),\r
127                             Toast.LENGTH_SHORT).show();\r
128                 }\r
129             }\r
130         });\r
131     }\r
132 }\r
133 \r
134 \r