FreeRDP
Loading...
Searching...
No Matches
HomeViewModel.java
1/*
2 HomeViewModel for HomeActivity
3
4*/
5
6package com.freerdp.freerdpcore.presentation;
7
8import android.app.Application;
9
10import androidx.annotation.NonNull;
11import androidx.lifecycle.AndroidViewModel;
12import androidx.lifecycle.LiveData;
13import androidx.lifecycle.MutableLiveData;
14
15import com.freerdp.freerdpcore.R;
16import com.freerdp.freerdpcore.data.AppDatabase;
17import com.freerdp.freerdpcore.data.HistoryDatabase;
18import com.freerdp.freerdpcore.domain.BookmarkBase;
19import com.freerdp.freerdpcore.services.ManualBookmarkGateway;
20import com.freerdp.freerdpcore.services.QuickConnectHistoryGateway;
21
22import java.util.ArrayList;
23import java.util.Collections;
24import java.util.List;
25import java.util.concurrent.ExecutorService;
26import java.util.concurrent.Executors;
27
28public class HomeViewModel extends AndroidViewModel
29{
30 private final MutableLiveData<List<BookmarkBase>> bookmarks =
31 new MutableLiveData<>(Collections.emptyList());
32 private String currentQuery = "";
33 private final ExecutorService executor = Executors.newSingleThreadExecutor();
34
35 private final ManualBookmarkGateway manualBookmarkGateway;
36 private final QuickConnectHistoryGateway quickConnectHistoryGateway;
37
38 public HomeViewModel(@NonNull Application application)
39 {
40 super(application);
41 manualBookmarkGateway =
42 new ManualBookmarkGateway(AppDatabase.getInstance(application).bookmarkDao());
43 quickConnectHistoryGateway =
44 new QuickConnectHistoryGateway(HistoryDatabase.getInstance(application).historyDao());
45 }
46
47 public LiveData<List<BookmarkBase>> getBookmarks()
48 {
49 return bookmarks;
50 }
51
52 public String getCurrentQuery()
53 {
54 return currentQuery;
55 }
56
57 public void loadBookmarks(String query)
58 {
59 currentQuery = query != null ? query : "";
60 executor.execute(() -> {
61 List<BookmarkBase> result = new ArrayList<>();
62 if (!currentQuery.isEmpty())
63 {
64 BookmarkBase qcBm = new BookmarkBase();
65 qcBm.setType(BookmarkBase.TYPE_QUICKCONNECT);
66 qcBm.setLabel(currentQuery);
67 qcBm.setHostname(currentQuery);
68 qcBm.setDirectConnect(true);
69 result.add(qcBm);
70 result.addAll(quickConnectHistoryGateway.findHistory(currentQuery));
71 result.addAll(manualBookmarkGateway.findByLabelOrHostnameLike(currentQuery));
72 }
73 else
74 {
75 result.addAll(manualBookmarkGateway.findAll());
76 }
77 bookmarks.postValue(result);
78 });
79 }
80
81 public void deleteBookmark(long id)
82 {
83 executor.execute(() -> {
84 manualBookmarkGateway.delete(id);
85 loadBookmarks(currentQuery);
86 });
87 }
88
89 @Override protected void onCleared()
90 {
91 super.onCleared();
92 executor.shutdown();
93 }
94}