Skip to content
This repository was archived by the owner on Apr 9, 2021. It is now read-only.

Commit a2f9cbd

Browse files
Hide search buttons when not needed
1 parent a46987b commit a2f9cbd

File tree

7 files changed

+55
-41
lines changed

7 files changed

+55
-41
lines changed

app/src/main/java/org/indilib/i4j/iparcos/ControlPanelFragment.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import android.content.Context;
44
import android.os.Bundle;
5+
import android.os.Handler;
6+
import android.os.Looper;
57
import android.util.Log;
68
import android.view.LayoutInflater;
79
import android.view.Menu;
@@ -44,6 +46,7 @@ public class ControlPanelFragment extends Fragment
4446
private ViewPager2 viewPager;
4547
private TabLayout tabLayout;
4648
private Context context;
49+
private MenuItem searchMenu;
4750

4851
@Override
4952
public void onAttach(@NonNull Context context) {
@@ -119,12 +122,12 @@ public void onDestroy() {
119122

120123
@Override
121124
public void onCreateOptionsMenu(Menu menu, @NonNull MenuInflater inflater) {
122-
MenuItem item = menu.add(R.string.mount_goto);
123-
item.setIcon(R.drawable.search);
124-
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
125+
searchMenu = menu.add(R.string.search);
126+
searchMenu.setIcon(R.drawable.search);
127+
searchMenu.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
125128
SearchView searchView = new SearchView(context);
126129
searchView.setOnQueryTextListener(this);
127-
item.setActionView(searchView);
130+
searchMenu.setActionView(searchView);
128131
}
129132

130133
@Override
@@ -145,11 +148,13 @@ private void noDevices() {
145148
noDevicesText.post(() -> noDevicesText.setVisibility(View.VISIBLE));
146149
controlLayout.post(() -> controlLayout.setVisibility(View.GONE));
147150
viewPager.post(() -> fragmentAdapter.notifyDataSetChanged());
151+
new Handler(Looper.getMainLooper()).post(() -> searchMenu.setVisible(false));
148152
}
149153

150154
private void devices() {
151155
noDevicesText.post(() -> noDevicesText.setVisibility(View.GONE));
152156
controlLayout.post(() -> controlLayout.setVisibility(View.VISIBLE));
157+
new Handler(Looper.getMainLooper()).post(() -> searchMenu.setVisible(true));
153158
}
154159

155160
@Override

app/src/main/java/org/indilib/i4j/iparcos/GoToFragment.java

Lines changed: 37 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import android.content.Context;
44
import android.os.Bundle;
5+
import android.os.Handler;
6+
import android.os.Looper;
57
import android.util.Log;
68
import android.view.Menu;
79
import android.view.MenuInflater;
@@ -35,7 +37,6 @@
3537
import org.indilib.i4j.iparcos.catalog.Coordinates;
3638
import org.indilib.i4j.iparcos.prop.PropUpdater;
3739

38-
import java.util.ArrayList;
3940
import java.util.Arrays;
4041
import java.util.Calendar;
4142
import java.util.Date;
@@ -60,6 +61,7 @@ public class GoToFragment extends ListFragment
6061
private static ArrayAdapter<CatalogEntry> entriesAdapter;
6162
private ConnectionManager connectionManager;
6263
private Context context;
64+
private MenuItem searchMenu;
6365
// INDI properties
6466
private INDINumberProperty telescopeCoordP = null;
6567
private INDINumberElement telescopeCoordRA = null;
@@ -129,34 +131,12 @@ public void onAttach(@NonNull Context context) {
129131
this.context = context;
130132
}
131133

132-
@Override
133-
public void onStart() {
134-
super.onStart();
135-
// Set up INDI connection
136-
connectionManager = IPARCOSApp.getConnectionManager();
137-
connectionManager.addListener(this);
138-
// Enumerate existing properties
139-
if (connectionManager.isConnected()) {
140-
List<INDIDevice> list = connectionManager.getConnection().getDevicesAsList();
141-
if (list != null) {
142-
for (INDIDevice device : list) {
143-
device.addINDIDeviceListener(this);
144-
for (INDIProperty<?> property : device.getPropertiesAsList()) {
145-
newProperty(device, property);
146-
}
147-
}
148-
}
149-
} else {
150-
clearVars();
151-
}
152-
}
153-
154134
@Override
155135
public void onActivityCreated(Bundle savedInstanceState) {
156136
super.onActivityCreated(savedInstanceState);
157137
setEmptyText(getString(R.string.empty_catalog));
158138
setHasOptionsMenu(true);
159-
ArrayList<CatalogEntry> entries = catalog.getEntries();
139+
List<CatalogEntry> entries = catalog.getEntries();
160140
entriesAdapter = new ArrayAdapter<CatalogEntry>(context,
161141
android.R.layout.simple_list_item_2, android.R.id.text1, entries) {
162142
@NonNull
@@ -171,22 +151,47 @@ public View getView(int position, View convertView, @NonNull ViewGroup parent) {
171151
}
172152
};
173153
setListAdapter(entriesAdapter);
174-
if (!catalog.isReady()) {
154+
if (catalog.isReady()) {
155+
new Handler(Looper.getMainLooper()).post(() -> searchMenu.setVisible(true));
156+
} else {
175157
// List loading
176158
setListShown(false);
177159
catalog.setListener(this);
178160
if (!catalog.isLoading()) new Thread(catalog::load).start();
179161
}
180162
}
181163

164+
@Override
165+
public void onStart() {
166+
super.onStart();
167+
// Set up INDI connection
168+
connectionManager = IPARCOSApp.getConnectionManager();
169+
connectionManager.addListener(this);
170+
// Enumerate existing properties
171+
if (connectionManager.isConnected()) {
172+
List<INDIDevice> list = connectionManager.getConnection().getDevicesAsList();
173+
if (list != null) {
174+
for (INDIDevice device : list) {
175+
device.addINDIDeviceListener(this);
176+
for (INDIProperty<?> property : device.getPropertiesAsList()) {
177+
newProperty(device, property);
178+
}
179+
}
180+
}
181+
} else {
182+
clearVars();
183+
}
184+
}
185+
182186
@Override
183187
public void onCreateOptionsMenu(Menu menu, @NonNull MenuInflater inflater) {
184-
MenuItem item = menu.add(R.string.mount_goto);
185-
item.setIcon(R.drawable.search);
186-
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
188+
searchMenu = menu.add(R.string.mount_goto);
189+
searchMenu.setIcon(R.drawable.search);
190+
searchMenu.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
191+
searchMenu.setVisible(false);
187192
SearchView searchView = new SearchView(context);
188193
searchView.setOnQueryTextListener(this);
189-
item.setActionView(searchView);
194+
searchMenu.setActionView(searchView);
190195
}
191196

192197
@Override
@@ -231,7 +236,7 @@ public boolean onQueryTextSubmit(String query) {
231236

232237
@Override
233238
public void onListItemClick(@NonNull ListView l, @NonNull View v, int position, long id) {
234-
ArrayList<CatalogEntry> entries = catalog.getEntries();
239+
List<CatalogEntry> entries = catalog.getEntries();
235240
final Coordinates coord = entries.get(position).getCoordinates();
236241
AlertDialog.Builder builder = new AlertDialog.Builder(context);
237242
builder.setMessage(entries.get(position).createDescription(context)).setTitle(entries.get(position).getName());
@@ -356,8 +361,9 @@ public void newMessage(INDIServerConnection connection, Date timestamp, String m
356361

357362
@Override
358363
public void onLoaded(boolean success) {
359-
getActivity().runOnUiThread(() -> {
364+
requireActivity().runOnUiThread(() -> {
360365
if (success) {
366+
searchMenu.setVisible(true);
361367
entriesAdapter.notifyDataSetChanged();
362368
if (isResumed()) {
363369
setListShown(true);

app/src/main/java/org/indilib/i4j/iparcos/catalog/Catalog.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import java.util.ArrayList;
1111
import java.util.Collections;
12+
import java.util.List;
1213

1314
/**
1415
* A catalog of astronomical objects.
@@ -21,7 +22,7 @@ public class Catalog {
2122
/**
2223
* Catalog objects.
2324
*/
24-
private final ArrayList<CatalogEntry> entries = new ArrayList<>();
25+
private final List<CatalogEntry> entries = new ArrayList<>();
2526
private boolean ready = false;
2627
private boolean loading = false;
2728
private CatalogLoadingListener listener = null;
@@ -68,7 +69,7 @@ public boolean isReady() {
6869
/**
6970
* @return an {@link ArrayList} containing all the entries of this catalog.
7071
*/
71-
public ArrayList<CatalogEntry> getEntries() {
72+
public List<CatalogEntry> getEntries() {
7273
return entries;
7374
}
7475

app/src/main/java/org/indilib/i4j/iparcos/catalog/DSOEntry.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import java.io.IOException;
1313
import java.io.InputStream;
1414
import java.io.InputStreamReader;
15-
import java.util.ArrayList;
15+
import java.util.List;
1616

1717
/**
1818
* Represents a deep sky object. This class also contains a loader to fetch DSO from the app's catalog.
@@ -78,7 +78,7 @@ private DSOEntry(String data) {
7878
coord = new Coordinates(raString, decString);
7979
}
8080

81-
public static void loadToList(ArrayList<CatalogEntry> list, Resources resources) throws IOException {
81+
public static void loadToList(List<CatalogEntry> list, Resources resources) throws IOException {
8282
// Open and read the catalog file
8383
InputStream resourceStream = resources.openRawResource(RESOURCE);
8484
BufferedReader br = new BufferedReader(new InputStreamReader(resourceStream));

app/src/main/java/org/indilib/i4j/iparcos/catalog/StarEntry.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import java.io.IOException;
1313
import java.io.InputStream;
1414
import java.io.InputStreamReader;
15-
import java.util.ArrayList;
15+
import java.util.List;
1616

1717
/**
1818
* Represents a star. This class also contains a loader to fetch stars from the app's catalog.
@@ -52,7 +52,7 @@ private StarEntry(String data) {
5252
}
5353
}
5454

55-
public static void loadToList(ArrayList<CatalogEntry> list, Resources resources) throws IOException {
55+
public static void loadToList(List<CatalogEntry> list, Resources resources) throws IOException {
5656
// Open and read the catalog file
5757
InputStream resourceStream = resources.openRawResource(RESOURCE);
5858
BufferedReader br = new BufferedReader(new InputStreamReader(resourceStream));

app/src/main/res/values-it/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,4 +112,5 @@
112112
<string name="telescope_parking">Parcheggiamento montatura</string>
113113
<string name="telescope_parking_confirm">Sei sicuro di voler cambiare lo stato della montatura?</string>
114114
<string name="dark_nebula">Nebulosa oscura</string>
115+
<string name="search">Cerca</string>
115116
</resources>

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,4 +113,5 @@
113113
<string name="telescope_parking">Telescope parking</string>
114114
<string name="telescope_parking_confirm">Are you sure you want change the parking state?</string>
115115
<string name="dark_nebula">Dark nebula</string>
116+
<string name="search">Search</string>
116117
</resources>

0 commit comments

Comments
 (0)