OSDN Git Service

ちょっとだけ、preferenceの準備。
[gokigen/FujiCam.git] / app / src / main / java / net / osdn / gokigen / cameratest / logcat / LogCatFragment.java
1 package net.osdn.gokigen.cameratest.logcat;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.util.Log;
6 import android.view.LayoutInflater;
7 import android.view.Menu;
8 import android.view.MenuInflater;
9 import android.view.MenuItem;
10 import android.view.View;
11 import android.view.ViewGroup;
12 import android.widget.ArrayAdapter;
13 import android.widget.ListView;
14 import android.widget.Toast;
15
16 import java.util.ArrayList;
17 import java.util.List;
18
19 import androidx.annotation.Nullable;
20 import androidx.fragment.app.FragmentActivity;
21 import androidx.fragment.app.ListFragment;
22
23 import net.osdn.gokigen.cameratest.R;
24
25 /**
26  *
27  */
28 public class LogCatFragment extends ListFragment
29 {
30     private final String TAG = toString();
31     private ArrayAdapter<String> adapter;
32     private List<String> dataItems = new ArrayList<>();
33     private LogCatUpdater updater = new LogCatUpdater();
34     public static LogCatFragment newInstance()
35     {
36         LogCatFragment instance = new LogCatFragment();
37
38         // パラメータはBundleにまとめておく
39         Bundle arguments = new Bundle();
40         //arguments.putString("title", title);
41         //arguments.putString("message", message);
42         instance.setArguments(arguments);
43
44         //instance.prepare();
45         return (instance);
46     }
47
48     @Override
49     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
50     {
51         inflater.inflate(R.menu.debug_view, menu);
52 /*
53         String title = getString(R.string.app_name) + " " + getString(R.string.pref_degug_info);
54         try {
55             AppCompatActivity activity = (AppCompatActivity) getActivity();
56             ActionBar bar = activity.getSupportActionBar();
57             if (bar != null)
58             {
59                 bar.setTitle(title);
60             }
61         }
62         catch (Exception e)
63         {
64             e.printStackTrace();
65         }
66 */
67     }
68
69     @Override
70     public boolean onOptionsItemSelected(MenuItem item)
71     {
72         if (item.getItemId() == R.id.action_refresh)
73         {
74             update();
75             return true;
76         }
77         return super.onOptionsItemSelected(item);
78     }
79
80     /**
81      *   表示データの更新
82      *
83      */
84     private void update()
85     {
86         dataItems.clear();
87         Thread thread = new Thread(new Runnable()
88         {
89             @Override
90             public void run()
91             {
92                 Log.v(TAG, "START LOGCAT");
93                 dataItems = updater.getLogCat("main", "time", "*:v", "gokigen", "");
94                 Log.v(TAG, "FINISH LOGCAT");
95                 try
96                 {
97                     final FragmentActivity activity = getActivity();
98                     if (activity != null)
99                     {
100                         activity.runOnUiThread(new Runnable()
101                         {
102                             @Override
103                             public void run()
104                             {
105                                 try
106                                 {
107                                     // 中身があったらクリアする
108                                     if (adapter.getCount() > 0)
109                                     {
110                                         adapter.clear();
111                                     }
112
113                                     // リストの内容を更新する
114                                     adapter.addAll(dataItems);
115
116                                     // 最下部にカーソルを移したい
117                                     ListView view = activity.findViewById(android.R.id.list);
118                                     view.setSelection(dataItems.size());
119
120                                     // 更新終了通知
121                                     //Snackbar.make(getActivity().findViewById(R.id.fragment1), getString(R.string.finish_refresh), Snackbar.LENGTH_SHORT).show();
122                                     Toast.makeText(getActivity(), getString(R.string.finish_refresh), Toast.LENGTH_SHORT).show();
123                                 }
124                                 catch (Exception ee)
125                                 {
126                                     ee.printStackTrace();
127                                 }
128                             }
129                         });
130                     }
131                 }
132                 catch (Exception e)
133                 {
134                     e.printStackTrace();
135                 }
136             }
137         });
138         try
139         {
140             // 本当は、ここでダイアログを出したい
141             thread.start();
142         }
143         catch (Exception e)
144         {
145             e.printStackTrace();
146         }
147     }
148
149     @Override
150     public void onResume()
151     {
152         super.onResume();
153         Log.v(TAG, "onResume()");
154
155         update();
156     }
157
158     @Override
159     public void onPause()
160     {
161         super.onPause();
162         Log.v(TAG, "onPause()");
163     }
164
165     @Override
166     public void onCreate(Bundle savedInstanceState)
167     {
168         super.onCreate(savedInstanceState);
169         Log.v(TAG, "LogCatFragment::onCreate()");
170     }
171
172     @Override
173     public void onActivityCreated(@Nullable Bundle savedInstanceState)
174     {
175         super.onActivityCreated(savedInstanceState);
176         Log.v(TAG, "LogCatFragment::onActivityCreated()");
177         setHasOptionsMenu(true);
178
179         Activity activity = getActivity();
180         if (activity != null)
181         {
182             ListView view = getListView();
183             if (view != null)
184             {
185                 getListView().setOnItemLongClickListener(new LogCatExporter(activity));
186             }
187         }
188     }
189
190     @Override
191     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
192     {
193         adapter = new ArrayAdapter<>(inflater.getContext(), android.R.layout.simple_list_item_1, dataItems);
194         setListAdapter(adapter);
195
196         return (super.onCreateView(inflater, container, savedInstanceState));
197     }
198 }