Changeset View
Changeset View
Standalone View
Standalone View
src/org/kde/kdeconnect/UserInterface/MainActivity.java
Show First 20 Lines • Show All 86 Lines • ▼ Show 20 Line(s) | 62 | protected void onCreate(Bundle savedInstanceState) { | |||
---|---|---|---|---|---|
87 | 87 | | |||
88 | mDrawerToggle.setDrawerIndicatorEnabled(true); | 88 | mDrawerToggle.setDrawerIndicatorEnabled(true); | ||
89 | mDrawerToggle.syncState(); | 89 | mDrawerToggle.syncState(); | ||
90 | 90 | | |||
91 | String deviceName = DeviceHelper.getDeviceName(this); | 91 | String deviceName = DeviceHelper.getDeviceName(this); | ||
92 | TextView nameView = (TextView) mDrawerHeader.findViewById(R.id.device_name); | 92 | TextView nameView = (TextView) mDrawerHeader.findViewById(R.id.device_name); | ||
93 | nameView.setText(deviceName); | 93 | nameView.setText(deviceName); | ||
94 | 94 | | |||
95 | View.OnClickListener renameListener = new View.OnClickListener() { | 95 | View.OnClickListener renameListener = v -> renameDevice(); | ||
96 | @Override | | |||
97 | public void onClick(View v) { | | |||
98 | renameDevice(); | | |||
99 | } | | |||
100 | }; | | |||
101 | mDrawerHeader.findViewById(R.id.kdeconnect_label).setOnClickListener(renameListener); | 96 | mDrawerHeader.findViewById(R.id.kdeconnect_label).setOnClickListener(renameListener); | ||
102 | mDrawerHeader.findViewById(R.id.device_name).setOnClickListener(renameListener); | 97 | mDrawerHeader.findViewById(R.id.device_name).setOnClickListener(renameListener); | ||
103 | 98 | | |||
104 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { | 99 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { | ||
105 | addDarkModeSwitch((ViewGroup) mDrawerHeader); | 100 | addDarkModeSwitch((ViewGroup) mDrawerHeader); | ||
106 | } | 101 | } | ||
107 | 102 | | |||
108 | mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { | 103 | mNavigationView.setNavigationItemSelectedListener(menuItem -> { | ||
109 | @Override | | |||
110 | public boolean onNavigationItemSelected(MenuItem menuItem) { | | |||
111 | 104 | | |||
112 | String deviceId = mMapMenuToDeviceId.get(menuItem); | 105 | String deviceId = mMapMenuToDeviceId.get(menuItem); | ||
113 | onDeviceSelected(deviceId); | 106 | onDeviceSelected(deviceId); | ||
114 | 107 | | |||
115 | mDrawerLayout.closeDrawer(mNavigationView); | 108 | mDrawerLayout.closeDrawer(mNavigationView); | ||
116 | 109 | | |||
117 | return true; | 110 | return true; | ||
118 | } | | |||
119 | }); | 111 | }); | ||
120 | 112 | | |||
121 | preferences = getSharedPreferences(STATE_SELECTED_DEVICE, Context.MODE_PRIVATE); | 113 | preferences = getSharedPreferences(STATE_SELECTED_DEVICE, Context.MODE_PRIVATE); | ||
122 | 114 | | |||
123 | String savedDevice; | 115 | String savedDevice; | ||
124 | String pairStatus = ""; | 116 | String pairStatus = ""; | ||
125 | if (getIntent().hasExtra("forceOverview")) { | 117 | if (getIntent().hasExtra("forceOverview")) { | ||
126 | Log.i("MainActivity", "Requested to start main overview"); | 118 | Log.i("MainActivity", "Requested to start main overview"); | ||
Show All 18 Lines | |||||
145 | } | 137 | } | ||
146 | onDeviceSelected(savedDevice); | 138 | onDeviceSelected(savedDevice); | ||
147 | } | 139 | } | ||
148 | 140 | | |||
149 | /** | 141 | /** | ||
150 | * Adds a {@link SwitchCompat} to the bottom of the navigation header for | 142 | * Adds a {@link SwitchCompat} to the bottom of the navigation header for | ||
151 | * toggling dark mode on and off. Call from {@link #onCreate(Bundle)}. | 143 | * toggling dark mode on and off. Call from {@link #onCreate(Bundle)}. | ||
152 | * <p> | 144 | * <p> | ||
153 | * Only supports android ICS and higher because {@link SwitchCompat} | 145 | * Only supports android ICS and higher because {@link SwitchCompat} | ||
154 | * requires that. | 146 | * requires that. | ||
155 | * </p> | 147 | * </p> | ||
156 | * | 148 | * | ||
157 | * @param drawerHeader the layout which should contain the switch | 149 | * @param drawerHeader the layout which should contain the switch | ||
158 | */ | 150 | */ | ||
159 | @RequiresApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) | 151 | @RequiresApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) | ||
160 | private void addDarkModeSwitch(ViewGroup drawerHeader) { | 152 | private void addDarkModeSwitch(ViewGroup drawerHeader) { | ||
161 | getLayoutInflater().inflate(R.layout.nav_dark_mode_switch, drawerHeader); | 153 | getLayoutInflater().inflate(R.layout.nav_dark_mode_switch, drawerHeader); | ||
162 | 154 | | |||
▲ Show 20 Lines • Show All 50 Lines • ▼ Show 20 Line(s) | 204 | } else { | |||
213 | return super.onOptionsItemSelected(item); | 205 | return super.onOptionsItemSelected(item); | ||
214 | } | 206 | } | ||
215 | } | 207 | } | ||
216 | 208 | | |||
217 | private void updateComputerList() { | 209 | private void updateComputerList() { | ||
218 | 210 | | |||
219 | //Log.e("MainActivity", "UpdateComputerList"); | 211 | //Log.e("MainActivity", "UpdateComputerList"); | ||
220 | 212 | | |||
221 | BackgroundService.RunCommand(MainActivity.this, new BackgroundService.InstanceCallback() { | 213 | BackgroundService.RunCommand(MainActivity.this, service -> { | ||
222 | @Override | | |||
223 | public void onServiceStart(final BackgroundService service) { | | |||
224 | 214 | | |||
225 | Menu menu = mNavigationView.getMenu(); | 215 | Menu menu = mNavigationView.getMenu(); | ||
226 | 216 | | |||
227 | menu.clear(); | 217 | menu.clear(); | ||
228 | mMapMenuToDeviceId.clear(); | 218 | mMapMenuToDeviceId.clear(); | ||
229 | 219 | | |||
230 | int id = 0; | 220 | int id = 0; | ||
231 | Collection<Device> devices = service.getDevices().values(); | 221 | Collection<Device> devices = service.getDevices().values(); | ||
232 | for (Device device : devices) { | 222 | for (Device device : devices) { | ||
233 | if (device.isReachable() && device.isPaired()) { | 223 | if (device.isReachable() && device.isPaired()) { | ||
234 | MenuItem item = menu.add(0, id++, 0, device.getName()); | 224 | MenuItem item = menu.add(0, id++, 0, device.getName()); | ||
235 | item.setIcon(device.getIcon()); | 225 | item.setIcon(device.getIcon()); | ||
236 | item.setCheckable(true); | 226 | item.setCheckable(true); | ||
237 | item.setChecked(device.getDeviceId().equals(mCurrentDevice)); | 227 | item.setChecked(device.getDeviceId().equals(mCurrentDevice)); | ||
238 | mMapMenuToDeviceId.put(item, device.getDeviceId()); | 228 | mMapMenuToDeviceId.put(item, device.getDeviceId()); | ||
239 | } | 229 | } | ||
240 | } | 230 | } | ||
241 | 231 | | |||
242 | MenuItem item = menu.add(99, id++, 0, R.string.pair_new_device); | 232 | MenuItem item = menu.add(99, id++, 0, R.string.pair_new_device); | ||
243 | item.setIcon(R.drawable.ic_action_content_add_circle_outline); | 233 | item.setIcon(R.drawable.ic_action_content_add_circle_outline); | ||
244 | item.setCheckable(true); | 234 | item.setCheckable(true); | ||
245 | item.setChecked(mCurrentDevice == null); | 235 | item.setChecked(mCurrentDevice == null); | ||
246 | mMapMenuToDeviceId.put(item, null); | 236 | mMapMenuToDeviceId.put(item, null); | ||
247 | } | | |||
248 | }); | 237 | }); | ||
249 | } | 238 | } | ||
250 | 239 | | |||
251 | @Override | 240 | @Override | ||
252 | protected void onStart() { | 241 | protected void onStart() { | ||
253 | super.onStart(); | 242 | super.onStart(); | ||
254 | BackgroundService.addGuiInUseCounter(this, true); | 243 | BackgroundService.addGuiInUseCounter(this, true); | ||
255 | BackgroundService.RunCommand(this, new BackgroundService.InstanceCallback() { | 244 | BackgroundService.RunCommand(this, service -> service.addDeviceListChangedCallback("MainActivity", this::updateComputerList)); | ||
256 | @Override | | |||
257 | public void onServiceStart(BackgroundService service) { | | |||
258 | service.addDeviceListChangedCallback("MainActivity", new BackgroundService.DeviceListChangedCallback() { | | |||
259 | @Override | | |||
260 | public void onDeviceListChanged() { | | |||
261 | updateComputerList(); | | |||
262 | } | | |||
263 | }); | | |||
264 | } | | |||
265 | }); | | |||
266 | updateComputerList(); | 245 | updateComputerList(); | ||
267 | } | 246 | } | ||
268 | 247 | | |||
269 | @Override | 248 | @Override | ||
270 | protected void onStop() { | 249 | protected void onStop() { | ||
271 | BackgroundService.removeGuiInUseCounter(this); | 250 | BackgroundService.removeGuiInUseCounter(this); | ||
272 | BackgroundService.RunCommand(this, new BackgroundService.InstanceCallback() { | 251 | BackgroundService.RunCommand(this, service -> service.removeDeviceListChangedCallback("MainActivity")); | ||
273 | @Override | | |||
274 | public void onServiceStart(BackgroundService service) { | | |||
275 | service.removeDeviceListChangedCallback("MainActivity"); | | |||
276 | } | | |||
277 | }); | | |||
278 | super.onStop(); | 252 | super.onStop(); | ||
279 | } | 253 | } | ||
280 | 254 | | |||
281 | //TODO: Make it accept two parameters, a constant with the type of screen and the device id in | 255 | //TODO: Make it accept two parameters, a constant with the type of screen and the device id in | ||
282 | //case the screen is for a device, or even three parameters and the third one be the plugin id? | 256 | //case the screen is for a device, or even three parameters and the third one be the plugin id? | ||
283 | //This way we can keep adding more options with null device id (eg: about, help...) | 257 | //This way we can keep adding more options with null device id (eg: about, help...) | ||
284 | public void onDeviceSelected(String deviceId, boolean fromDeviceList) { | 258 | public void onDeviceSelected(String deviceId, boolean fromDeviceList) { | ||
285 | 259 | | |||
Show All 35 Lines | 293 | protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) { | |||
321 | String savedDevice = savedInstanceState.getString(STATE_SELECTED_DEVICE); | 295 | String savedDevice = savedInstanceState.getString(STATE_SELECTED_DEVICE); | ||
322 | onDeviceSelected(savedDevice); | 296 | onDeviceSelected(savedDevice); | ||
323 | } | 297 | } | ||
324 | 298 | | |||
325 | @Override | 299 | @Override | ||
326 | protected void onActivityResult(int requestCode, int resultCode, Intent data) { | 300 | protected void onActivityResult(int requestCode, int resultCode, Intent data) { | ||
327 | switch (requestCode) { | 301 | switch (requestCode) { | ||
328 | case RESULT_NEEDS_RELOAD: | 302 | case RESULT_NEEDS_RELOAD: | ||
329 | BackgroundService.RunCommand(this, new BackgroundService.InstanceCallback() { | 303 | BackgroundService.RunCommand(this, service -> { | ||
330 | @Override | | |||
331 | public void onServiceStart(BackgroundService service) { | | |||
332 | Device device = service.getDevice(mCurrentDevice); | 304 | Device device = service.getDevice(mCurrentDevice); | ||
333 | device.reloadPluginsFromSettings(); | 305 | device.reloadPluginsFromSettings(); | ||
334 | } | | |||
335 | }); | 306 | }); | ||
336 | break; | 307 | break; | ||
337 | default: | 308 | default: | ||
338 | super.onActivityResult(requestCode, resultCode, data); | 309 | super.onActivityResult(requestCode, resultCode, data); | ||
339 | } | 310 | } | ||
340 | } | 311 | } | ||
341 | 312 | | |||
342 | @Override | 313 | @Override | ||
343 | public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { | 314 | public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { | ||
344 | for (int result : grantResults) { | 315 | for (int result : grantResults) { | ||
345 | if (result == PackageManager.PERMISSION_GRANTED) { | 316 | if (result == PackageManager.PERMISSION_GRANTED) { | ||
346 | //New permission granted, reload plugins | 317 | //New permission granted, reload plugins | ||
347 | BackgroundService.RunCommand(this, new BackgroundService.InstanceCallback() { | 318 | BackgroundService.RunCommand(this, service -> { | ||
348 | @Override | | |||
349 | public void onServiceStart(BackgroundService service) { | | |||
350 | Device device = service.getDevice(mCurrentDevice); | 319 | Device device = service.getDevice(mCurrentDevice); | ||
351 | device.reloadPluginsFromSettings(); | 320 | device.reloadPluginsFromSettings(); | ||
352 | } | | |||
353 | }); | 321 | }); | ||
354 | } | 322 | } | ||
355 | } | 323 | } | ||
356 | } | 324 | } | ||
357 | 325 | | |||
358 | public void renameDevice() { | 326 | public void renameDevice() { | ||
359 | final TextView nameView = (TextView) mNavigationView.findViewById(R.id.device_name); | 327 | final TextView nameView = (TextView) mNavigationView.findViewById(R.id.device_name); | ||
360 | final EditText deviceNameEdit = new EditText(MainActivity.this); | 328 | final EditText deviceNameEdit = new EditText(MainActivity.this); | ||
361 | String deviceName = DeviceHelper.getDeviceName(MainActivity.this); | 329 | String deviceName = DeviceHelper.getDeviceName(MainActivity.this); | ||
362 | deviceNameEdit.setText(deviceName); | 330 | deviceNameEdit.setText(deviceName); | ||
363 | deviceNameEdit.setPadding( | 331 | deviceNameEdit.setPadding( | ||
364 | ((int) (18 * getResources().getDisplayMetrics().density)), | 332 | ((int) (18 * getResources().getDisplayMetrics().density)), | ||
365 | ((int) (16 * getResources().getDisplayMetrics().density)), | 333 | ((int) (16 * getResources().getDisplayMetrics().density)), | ||
366 | ((int) (18 * getResources().getDisplayMetrics().density)), | 334 | ((int) (18 * getResources().getDisplayMetrics().density)), | ||
367 | ((int) (12 * getResources().getDisplayMetrics().density)) | 335 | ((int) (12 * getResources().getDisplayMetrics().density)) | ||
368 | ); | 336 | ); | ||
369 | new AlertDialog.Builder(MainActivity.this) | 337 | new AlertDialog.Builder(MainActivity.this) | ||
370 | .setView(deviceNameEdit) | 338 | .setView(deviceNameEdit) | ||
371 | .setPositiveButton(R.string.device_rename_confirm, new DialogInterface.OnClickListener() { | 339 | .setPositiveButton(R.string.device_rename_confirm, (dialog, which) -> { | ||
372 | @Override | 340 | String deviceName1 = deviceNameEdit.getText().toString(); | ||
373 | public void onClick(DialogInterface dialog, int which) { | 341 | DeviceHelper.setDeviceName(MainActivity.this, deviceName1); | ||
374 | String deviceName = deviceNameEdit.getText().toString(); | 342 | nameView.setText(deviceName1); | ||
375 | DeviceHelper.setDeviceName(MainActivity.this, deviceName); | 343 | BackgroundService.RunCommand(MainActivity.this, BackgroundService::onNetworkChange); | ||
376 | nameView.setText(deviceName); | | |||
377 | BackgroundService.RunCommand(MainActivity.this, new BackgroundService.InstanceCallback() { | | |||
378 | @Override | | |||
379 | public void onServiceStart(final BackgroundService service) { | | |||
380 | service.onNetworkChange(); | | |||
381 | } | | |||
382 | }); | | |||
383 | } | | |||
384 | }) | 344 | }) | ||
385 | .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { | 345 | .setNegativeButton(R.string.cancel, (dialog, which) -> { | ||
386 | @Override | | |||
387 | public void onClick(DialogInterface dialog, int which) { | | |||
388 | } | | |||
389 | }) | 346 | }) | ||
390 | .setTitle(R.string.device_rename_title) | 347 | .setTitle(R.string.device_rename_title) | ||
391 | .show(); | 348 | .show(); | ||
392 | } | 349 | } | ||
393 | } | 350 | } |