Skip to content

Commit 45e4c27

Browse files
author
moddingfox
committed
app/build.gradle: Version change
app/src/main/java/open/furaffinity/client/activity/mainActivity.java: Search and browse can now recieve paramaters to restore state app/src/main/java/open/furaffinity/client/fragmentDrawers/browse.java: Added state save/restore for back button app/src/main/java/open/furaffinity/client/fragmentDrawers/search.java: Added state save/restore for back button app/src/main/java/open/furaffinity/client/fragmentTabs/viewKeywords.java: Updated to use state restore path to run query app/src/main/java/open/furaffinity/client/sqlite/browseContract.java: Contract for some shared const values may use this for a sqlitedb later
1 parent 1ff55a4 commit 45e4c27

6 files changed

Lines changed: 337 additions & 83 deletions

File tree

app/build.gradle

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ android {
88
applicationId "open.furaffinity.client"
99
minSdkVersion 26
1010
targetSdkVersion 29
11-
versionCode 28
12-
versionName "0.2.8"
11+
versionCode 29
12+
versionName "0.2.9"
1313

1414
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1515
}
@@ -56,6 +56,8 @@ dependencies {
5656
implementation("com.squareup.okhttp3:okhttp:4.9.0")
5757
implementation 'org.jsoup:jsoup:1.13.1'
5858

59+
implementation group: 'org.json', name: 'json', version: '20210307'
60+
5961
implementation 'androidx.recyclerview:recyclerview:1.2.0-alpha06'
6062
implementation 'androidx.cardview:cardview:1.0.0'
6163

app/src/main/java/open/furaffinity/client/activity/mainActivity.java

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,11 @@ public class mainActivity extends AppCompatActivity {
7171

7272
private loginCheck loginCheck;
7373

74+
private String browseParamaters = null;
75+
7476
private String searchSelected = null;
75-
private String searchQuery = null;
77+
private String searchParamaters = null;
78+
7679
private String journalPath = null;
7780
private String msgPmsPath = null;
7881
private String userPath = null;
@@ -353,6 +356,19 @@ public void updateUILoginState() {
353356
navigationView.getMenu().performIdentifierAction(R.id.nav_browse, 0);
354357
}
355358

359+
public String getBrowseParamaters() {
360+
String result = browseParamaters;
361+
browseParamaters = null;
362+
return result;
363+
}
364+
365+
public void setBrowseParamaters(String browseParamatersIn) {
366+
browseParamaters = browseParamatersIn;
367+
updateUIElements();
368+
navigationView.setCheckedItem(R.id.nav_browse);
369+
navigationView.getMenu().performIdentifierAction(R.id.nav_browse, 0);
370+
}
371+
356372
public String getSearchSelected() {
357373
String result = searchSelected;
358374
searchSelected = null;
@@ -366,12 +382,14 @@ public void setSearchSelected(String searchSelectedIn) {
366382
navigationView.getMenu().performIdentifierAction(R.id.nav_search, 0);
367383
}
368384

369-
public String getSearchQuery() {
370-
return searchQuery;
385+
public String getSearchParamaters() {
386+
String result = searchParamaters;
387+
searchParamaters = null;
388+
return result;
371389
}
372390

373-
public void setSearchQuery(String searchQueryIn) {
374-
searchQuery = searchQueryIn;
391+
public void setSearchParamaters(String searchParamatersIn) {
392+
searchParamaters = searchParamatersIn;
375393
updateUIElements();
376394
navigationView.setCheckedItem(R.id.nav_search);
377395
navigationView.getMenu().performIdentifierAction(R.id.nav_search, 0);
@@ -489,8 +507,7 @@ public void drawerFragmentPop() {
489507
navigationView.setCheckedItem(R.id.nav_about);
490508
navigationView.getMenu().performIdentifierAction(R.id.nav_about, 0);
491509
} else if (fragmentClass.equals(open.furaffinity.client.fragmentDrawers.browse.class.getName())) {
492-
navigationView.setCheckedItem(R.id.nav_browse);
493-
navigationView.getMenu().performIdentifierAction(R.id.nav_browse, 0);
510+
setBrowseParamaters(fragmentData);
494511
} else if (fragmentClass.equals(open.furaffinity.client.fragmentDrawers.history.class.getName())) {
495512
navigationView.setCheckedItem(R.id.nav_history);
496513
navigationView.getMenu().performIdentifierAction(R.id.nav_history, 0);
@@ -510,12 +527,11 @@ public void drawerFragmentPop() {
510527
} else if (fragmentClass.equals(open.furaffinity.client.fragmentDrawers.profile.class.getName())) {
511528
navigationView.setCheckedItem(R.id.nav_profile);
512529
navigationView.getMenu().performIdentifierAction(R.id.nav_profile, 0);
513-
} else if (fragmentClass.equals(open.furaffinity.client.fragmentDrawers.profile.class.getName())) {
530+
} else if (fragmentClass.equals(open.furaffinity.client.fragmentDrawers.settings.class.getName())) {
514531
navigationView.setCheckedItem(R.id.nav_settings);
515532
navigationView.getMenu().performIdentifierAction(R.id.nav_settings, 0);
516533
} else if (fragmentClass.equals(open.furaffinity.client.fragmentDrawers.search.class.getName())) {
517-
navigationView.setCheckedItem(R.id.nav_search);
518-
navigationView.getMenu().performIdentifierAction(R.id.nav_search, 0);
534+
setSearchParamaters(fragmentData);
519535
} else if (fragmentClass.equals(open.furaffinity.client.fragmentDrawers.user.class.getName())) {
520536
setUserPath(fragmentData);
521537
} else if (fragmentClass.equals(open.furaffinity.client.fragmentDrawers.view.class.getName())) {
@@ -549,7 +565,7 @@ protected void onSaveInstanceState(@NonNull Bundle outState) {
549565
super.onSaveInstanceState(outState);
550566

551567
outState.putString("searchSelected", searchSelected);
552-
outState.putString("searchQuery", searchQuery);
568+
outState.putString("searchParamaters", searchParamaters);
553569
outState.putString("journalPath", journalPath);
554570
outState.putString("msgPmsPath", msgPmsPath);
555571
outState.putString("userPath", userPath);
@@ -561,7 +577,7 @@ protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
561577
super.onRestoreInstanceState(savedInstanceState);
562578

563579
searchSelected = savedInstanceState.getString("searchSelected");
564-
searchQuery = savedInstanceState.getString("searchQuery");
580+
searchParamaters = savedInstanceState.getString("searchParamaters");
565581
journalPath = savedInstanceState.getString("journalPath");
566582
msgPmsPath = savedInstanceState.getString("msgPmsPath");
567583
userPath = savedInstanceState.getString("userPath");

app/src/main/java/open/furaffinity/client/fragmentDrawers/browse.java

Lines changed: 91 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,14 @@
1616

1717
import com.google.android.material.floatingactionbutton.FloatingActionButton;
1818

19+
import org.json.JSONException;
20+
import org.json.JSONObject;
21+
1922
import java.io.Serializable;
2023
import java.time.Instant;
2124
import java.util.ArrayList;
2225
import java.util.HashMap;
26+
import java.util.Iterator;
2327
import java.util.List;
2428
import java.util.stream.Collectors;
2529

@@ -30,6 +34,7 @@
3034
import open.furaffinity.client.adapter.imageListAdapter;
3135
import open.furaffinity.client.listener.EndlessRecyclerViewScrollListener;
3236
import open.furaffinity.client.pages.loginCheck;
37+
import open.furaffinity.client.sqlite.browseContract;
3338
import open.furaffinity.client.utilities.kvPair;
3439
import open.furaffinity.client.utilities.uiControls;
3540

@@ -63,6 +68,8 @@ public class browse extends appFragment {
6368
private boolean isLoading = false;
6469
private List<HashMap<String, String>> mDataSet;
6570

71+
private String browseParamaters = null;
72+
6673
private int recyclerViewPosition = -1;
6774
private int pageNumber = -1;
6875
private int pageCacheCheckResultCount = 0;
@@ -138,8 +145,6 @@ private void initCurrentSettings() {
138145
}
139146

140147
protected void initPages() {
141-
((mainActivity)requireActivity()).drawerFragmentPush(this.getClass().getName(), "");
142-
143148
if (mDataSet == null) {
144149
mDataSet = new ArrayList<>();
145150
}
@@ -233,7 +238,69 @@ public void requestFailed(abstractPage abstractPage) {
233238
});
234239
}
235240

241+
private JSONObject getSearchParamaterObject() {
242+
JSONObject result = new JSONObject();
243+
244+
try {
245+
result.put(browseContract.browseItemEntry.COLUMN_NAME_CAT, page.getCurrentCat());
246+
result.put(browseContract.browseItemEntry.COLUMN_NAME_ATYPE, page.getCurrentAtype());
247+
result.put(browseContract.browseItemEntry.COLUMN_NAME_SPECIES, page.getCurrentSpecies());
248+
result.put(browseContract.browseItemEntry.COLUMN_NAME_GENDER, page.getCurrentGender());
249+
result.put(browseContract.browseItemEntry.COLUMN_NAME_PERPAGE, page.getCurrentPerpage());
250+
result.put(browseContract.browseItemEntry.COLUMN_NAME_RATINGGENERAL, (!page.getCurrentRatingGeneral().equals("")));
251+
result.put(browseContract.browseItemEntry.COLUMN_NAME_RATINGMATURE, (!page.getCurrentRatingMature().equals("")));
252+
result.put(browseContract.browseItemEntry.COLUMN_NAME_RATINGADULT, (!page.getCurrentRatingAdult().equals("")));
253+
} catch (JSONException e) {
254+
e.printStackTrace();
255+
}
256+
257+
return result;
258+
}
259+
236260
private void loadCurrentSettings() {
261+
if(browseParamaters != null) {
262+
try {
263+
JSONObject loadedBrowseParamaters = new JSONObject(browseParamaters);
264+
265+
for (Iterator<String> it = loadedBrowseParamaters.keys(); it.hasNext(); ) {
266+
String key = it.next();
267+
268+
switch(key) {
269+
case browseContract.browseItemEntry.COLUMN_NAME_CAT:
270+
page.setCat(loadedBrowseParamaters.getString(browseContract.browseItemEntry.COLUMN_NAME_CAT));
271+
break;
272+
case browseContract.browseItemEntry.COLUMN_NAME_ATYPE:
273+
page.setAtype(loadedBrowseParamaters.getString(browseContract.browseItemEntry.COLUMN_NAME_ATYPE));
274+
break;
275+
case browseContract.browseItemEntry.COLUMN_NAME_SPECIES:
276+
page.setSpecies(loadedBrowseParamaters.getString(browseContract.browseItemEntry.COLUMN_NAME_SPECIES));
277+
break;
278+
case browseContract.browseItemEntry.COLUMN_NAME_GENDER:
279+
page.setGender(loadedBrowseParamaters.getString(browseContract.browseItemEntry.COLUMN_NAME_GENDER));
280+
break;
281+
case browseContract.browseItemEntry.COLUMN_NAME_PERPAGE:
282+
page.setPerpage(loadedBrowseParamaters.getString(browseContract.browseItemEntry.COLUMN_NAME_PERPAGE));
283+
break;
284+
case browseContract.browseItemEntry.COLUMN_NAME_RATINGGENERAL:
285+
page.setRatingGeneral(loadedBrowseParamaters.getBoolean(browseContract.browseItemEntry.COLUMN_NAME_RATINGGENERAL));
286+
break;
287+
case browseContract.browseItemEntry.COLUMN_NAME_RATINGMATURE:
288+
page.setRatingMature(loadedBrowseParamaters.getBoolean(browseContract.browseItemEntry.COLUMN_NAME_RATINGMATURE));
289+
break;
290+
case browseContract.browseItemEntry.COLUMN_NAME_RATINGADULT:
291+
page.setRatingAdult(loadedBrowseParamaters.getBoolean(browseContract.browseItemEntry.COLUMN_NAME_RATINGADULT));
292+
break;
293+
default:
294+
break;
295+
}
296+
}
297+
} catch (JSONException e) {
298+
e.printStackTrace();
299+
}
300+
301+
browseParamaters = null;
302+
}
303+
237304
uiControls.spinnerSetAdapter(requireContext(), browseCatSpinner, page.getCat(), page.getCurrentCat(), true, true);
238305
uiControls.spinnerSetAdapter(requireContext(), browseAtypeSpinner, page.getAtype(), page.getCurrentAtype(), true, true);
239306
uiControls.spinnerSetAdapter(requireContext(), browseSpeciesSpinner, page.getSpecies(), page.getCurrentSpecies(), true, true);
@@ -348,6 +415,7 @@ public void onLoadMore(int pageNumber, int totalItemsCount, RecyclerView view) {
348415
if (settingsTableLayout.getVisibility() == View.VISIBLE) {
349416
settingsTableLayout.setVisibility(View.GONE);
350417
saveCurrentSettings();
418+
((mainActivity)requireActivity()).drawerFragmentPush(this.getClass().getName(), getSearchParamaterObject().toString());
351419
swipeRefreshLayout.setVisibility(View.VISIBLE);
352420
} else {
353421
swipeRefreshLayout.setVisibility(View.GONE);
@@ -378,26 +446,32 @@ private int getRecyclerFirstItem() {
378446
public void onCreate(Bundle savedInstanceState) {
379447
super.onCreate(savedInstanceState);
380448

381-
Context context = requireActivity();
382-
SharedPreferences sharedPref = context.getSharedPreferences(getString(R.string.settingsFile), Context.MODE_PRIVATE);
449+
browseParamaters = ((mainActivity) requireActivity()).getBrowseParamaters();
383450

384-
if (sharedPref.getBoolean(getString(R.string.cachedBrowseStateSetting), open.furaffinity.client.fragmentDrawers.settings.cachedBrowseDefault)) {
385-
long sessionTimestamp = sharedPref.getLong(getString(R.string.browseSessionTimestamp), 0);
386-
long sessionInvalidateCachedTime = sharedPref.getInt(getString(R.string.InvalidateCachedBrowseTimeSetting), settings.InvalidateCachedBrowseTimeDefault);
387-
sessionInvalidateCachedTime = sessionInvalidateCachedTime * 60;//convert min to seconds
451+
if (browseParamaters == null) {
452+
Context context = requireActivity();
453+
SharedPreferences sharedPref = context.getSharedPreferences(getString(R.string.settingsFile), Context.MODE_PRIVATE);
388454

389-
long currentTimestamp = Instant.now().getEpochSecond();
390-
long minTimestamp = currentTimestamp - sessionInvalidateCachedTime;
455+
if (sharedPref.getBoolean(getString(R.string.cachedBrowseStateSetting), open.furaffinity.client.fragmentDrawers.settings.cachedBrowseDefault)) {
456+
long sessionTimestamp = sharedPref.getLong(getString(R.string.browseSessionTimestamp), 0);
457+
long sessionInvalidateCachedTime = sharedPref.getInt(getString(R.string.InvalidateCachedBrowseTimeSetting), settings.InvalidateCachedBrowseTimeDefault);
458+
sessionInvalidateCachedTime = sessionInvalidateCachedTime * 60;//convert min to seconds
459+
460+
long currentTimestamp = Instant.now().getEpochSecond();
461+
long minTimestamp = currentTimestamp - sessionInvalidateCachedTime;
391462

392-
if (sessionTimestamp >= minTimestamp && sessionTimestamp <= currentTimestamp) {
393-
pageCacheCheckResultCount = sharedPref.getInt(context.getString(R.string.InvalidateCachedBrowseAfterSetting), settings.InvalidateCachedBrowseAfterDefault);
463+
if (sessionTimestamp >= minTimestamp && sessionTimestamp <= currentTimestamp) {
464+
pageCacheCheckResultCount = sharedPref.getInt(context.getString(R.string.InvalidateCachedBrowseAfterSetting), settings.InvalidateCachedBrowseAfterDefault);
394465

395-
String mDataSetString = sharedPref.getString(context.getString(R.string.browseSessionDataSet), null);
396-
pageNumber = sharedPref.getInt(context.getString(R.string.browseSessionPage), -1);
397-
recyclerViewPosition = sharedPref.getInt(context.getString(R.string.browseSessionRecyclerView), -1);
466+
String mDataSetString = sharedPref.getString(context.getString(R.string.browseSessionDataSet), null);
467+
pageNumber = sharedPref.getInt(context.getString(R.string.browseSessionPage), -1);
468+
recyclerViewPosition = sharedPref.getInt(context.getString(R.string.browseSessionRecyclerView), -1);
398469

399-
if (mDataSetString != null) {
400-
mDataSet = (List<HashMap<String, String>>) open.furaffinity.client.utilities.serialization.deSearilizeFromString(mDataSetString);
470+
if (mDataSetString != null) {
471+
mDataSet = (List<HashMap<String, String>>) open.furaffinity.client.utilities.serialization.deSearilizeFromString(mDataSetString);
472+
} else {
473+
isCacheInitialized = true;
474+
}
401475
} else {
402476
isCacheInitialized = true;
403477
}

0 commit comments

Comments
 (0)