Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
130 commits
Select commit Hold shift + click to select a range
75f5f1b
Search activity, image search fragment added
ujjwalagrawal17 May 28, 2018
5bb1d19
Removed explore icon xml
ujjwalagrawal17 May 28, 2018
2aac404
Updated Javadocs for search Activity and Navigation Base Activity
ujjwalagrawal17 May 28, 2018
021905a
SearchImageItem class updated
ujjwalagrawal17 May 28, 2018
4422329
Javadocs added for search activity
ujjwalagrawal17 May 28, 2018
092d2a3
removed redundant code and added javadocs for search image modules
ujjwalagrawal17 May 28, 2018
a5d67cc
Javadocs added for updateImageList method
ujjwalagrawal17 May 28, 2018
df82383
Merge pull request #1561 from ujjwalagrawal17/search_activity
neslihanturan May 29, 2018
98b3d69
Rename featuredImage to explore
ujjwalagrawal17 May 30, 2018
f1d5bb0
Merge pull request #1568 from ujjwalagrawal17/rename_featured
neslihanturan May 31, 2018
be49f90
Merge remote-tracking branch 'main_origin/master' into browse-commons…
ujjwalagrawal17 Jun 1, 2018
dd4f42f
Fixed null query issue
ujjwalagrawal17 Jun 1, 2018
b3816f1
changed cisibility to gone in case of successful Fetch
ujjwalagrawal17 Jun 1, 2018
fb51ae7
Consolidate the networking libraries - drop volley in favor of OkHttp
psh Dec 10, 2017
417fdc0
Extracted a few networking related items into a new Dagger module and…
psh Apr 8, 2018
85b474b
Refactoring to extract GpsCategoryModel and ensure single-responsibil…
psh Apr 15, 2018
e8f3849
fixed featured image back bug
ujjwalagrawal17 May 28, 2018
dfd4d2a
Localisation updates from https://translatewiki.net.
translatewiki May 28, 2018
4b7e1e2
Javadocs added
ujjwalagrawal17 May 28, 2018
5643352
Add option to set image as wallpaper (#1535)
May 30, 2018
ba5d0ac
Localisation updates from https://translatewiki.net.
translatewiki May 31, 2018
deb8b53
SearchHistory Fragment added
ujjwalagrawal17 Jun 4, 2018
1978f0a
Search History Item added
ujjwalagrawal17 Jun 4, 2018
b84105e
Content Provider, RecentSearchesDao added
ujjwalagrawal17 Jun 4, 2018
ae09445
Database version changed to 7 and added methods for find, save ,..
ujjwalagrawal17 Jun 5, 2018
948ce05
Delete icon deleted
ujjwalagrawal17 Jun 5, 2018
0b95deb
Reverted changes in gradle files
ujjwalagrawal17 Jun 5, 2018
177f8a8
Reverted changes in gradle files 2
ujjwalagrawal17 Jun 5, 2018
8c68944
Optimized Improts
ujjwalagrawal17 Jun 5, 2018
19378e3
reverted refractor for container name
ujjwalagrawal17 Jun 5, 2018
e93343d
Fixed conflicts after merging master
ujjwalagrawal17 Jun 5, 2018
7b59673
Merge branch 'master' into merge_master3
ujjwalagrawal17 Jun 7, 2018
c48b725
Refactored packagename, changed name to query in POJO class.
ujjwalagrawal17 Jun 7, 2018
dc4b13a
Updated lastUsed to lastSearched
ujjwalagrawal17 Jun 7, 2018
103395f
Javadocs updated
ujjwalagrawal17 Jun 7, 2018
5fb664c
Check if user has been in search page for 5 seconds if yes then save …
ujjwalagrawal17 Jun 7, 2018
9202f99
If else indentation updated
ujjwalagrawal17 Jun 7, 2018
903d715
added import in test
ujjwalagrawal17 Jun 7, 2018
33c1af4
edittext replaced with Searchview
ujjwalagrawal17 Jun 4, 2018
6119743
RxSearchview added
ujjwalagrawal17 Jun 7, 2018
8f34a63
Added support for API 21+
ujjwalagrawal17 Jun 7, 2018
d06e3ae
Snackbar removed on success
ujjwalagrawal17 Jun 7, 2018
8edfae5
Improved code
ujjwalagrawal17 Jun 7, 2018
be12dfd
Fixed merge conflicts
ujjwalagrawal17 Jun 7, 2018
c847dbf
Pagination added
ujjwalagrawal17 Jun 7, 2018
a70783b
Merge pull request #1587 from ujjwalagrawal17/search_history1
neslihanturan Jun 8, 2018
c5e6b23
Removed unnecessary toast
ujjwalagrawal17 Jun 9, 2018
8cc9239
Fixed merge conflicts
ujjwalagrawal17 Jun 9, 2018
8f385cb
Comment added in method
ujjwalagrawal17 Jun 9, 2018
9f9f0b8
Merge pull request #1597 from ujjwalagrawal17/pagination_imagesearch
neslihanturan Jun 9, 2018
350da73
Support for landscape mode added
ujjwalagrawal17 Jun 12, 2018
0465330
Fixed screen rotation issue on Explore and Search activity
ujjwalagrawal17 Jun 12, 2018
cdb11a0
Clear focus added
ujjwalagrawal17 Jun 12, 2018
bca0860
Delete all function added in Content Provider and called from fragment
ujjwalagrawal17 Jun 12, 2018
1c3e616
Scrollbar Recyclerview added
ujjwalagrawal17 Jun 12, 2018
12df175
Share Icon changed to 32 dp and back button added in explore, search …
ujjwalagrawal17 Jun 12, 2018
a10fda1
Removed unnecessary code
ujjwalagrawal17 Jun 13, 2018
28e43c2
Wrote and run tests for Recent Searches
ujjwalagrawal17 Jun 14, 2018
3a6184e
Merge branch 'clear_recent_searches' of github.com:ujjwalagrawal17/ap…
nicolas-raoul Jun 14, 2018
e5c60ba
Merge branch 'feat_scrollbar_search' of github.com:ujjwalagrawal17/ap…
nicolas-raoul Jun 14, 2018
7ff956d
Merge branch 'feat_back_button_share_improvements' of github.com:ujjw…
nicolas-raoul Jun 14, 2018
3d7bb21
Merge branch 'landscape_support_search' of github.com:ujjwalagrawal17…
nicolas-raoul Jun 14, 2018
7aca274
Merge branch 'bug_explore_activity' of github.com:ujjwalagrawal17/app…
nicolas-raoul Jun 14, 2018
9f07c09
Merge branch 'recent_search_unit_tests' of github.com:ujjwalagrawal17…
nicolas-raoul Jun 14, 2018
cb0ef25
Fixed conflicts after merging master
ujjwalagrawal17 Jun 14, 2018
5671fee
Fixed conflicts
ujjwalagrawal17 Jun 14, 2018
f3fa475
Category Search Fragment added
ujjwalagrawal17 Jun 19, 2018
900e40b
Adapter factory added
ujjwalagrawal17 Jun 19, 2018
de419b7
Renderer added
ujjwalagrawal17 Jun 19, 2018
028fc08
Improvements
ujjwalagrawal17 Jun 19, 2018
9624a85
Viewpager adapter added
ujjwalagrawal17 Jun 19, 2018
28e81ca
Updated XML
ujjwalagrawal17 Jun 19, 2018
9d83e82
Improvements in category card design
ujjwalagrawal17 Jun 19, 2018
959b2f8
tabs colors changed
ujjwalagrawal17 Jun 19, 2018
79a873e
renamed images to media
ujjwalagrawal17 Jun 19, 2018
c67dd98
Java docs improved
ujjwalagrawal17 Jun 19, 2018
202f353
Javadoc added for setTabs
ujjwalagrawal17 Jun 19, 2018
b1ff3cc
JavaDoc for ViewPagerAdapter added
ujjwalagrawal17 Jun 19, 2018
9d77352
Refreshed listview after delete
ujjwalagrawal17 Jun 19, 2018
eff5619
Merge branch 'category_search' of github.com:ujjwalagrawal17/apps-and…
nicolas-raoul Jun 21, 2018
6ea071f
Added mediaContainer
ujjwalagrawal17 Jun 22, 2018
f295bd4
Merge branch 'category_search' of github.com:ujjwalagrawal17/apps-and…
nicolas-raoul Jun 22, 2018
b31104b
Fixed ghost issue in image search fragment
ujjwalagrawal17 Jun 22, 2018
deaceda
Merge branch 'category_search' of github.com:ujjwalagrawal17/apps-and…
nicolas-raoul Jun 22, 2018
9e72061
Ghost issue for categories fixed
ujjwalagrawal17 Jun 22, 2018
ad7b146
Merge branch 'category_search' of github.com:ujjwalagrawal17/apps-and…
nicolas-raoul Jun 22, 2018
62cdc44
Merge pull request #1641 from ujjwalagrawal17/category_search
neslihanturan Jun 22, 2018
a29a8cc
Merge branch 'browse-commons-via-app' of github.com:ujjwalagrawal17/a…
ujjwalagrawal17 Jun 22, 2018
d5c59e5
Merge branch 'browse-commons-via-app' of github.com:commons-app/apps-…
ujjwalagrawal17 Jun 22, 2018
1ee2dc9
Removed Calling API call onback press
ujjwalagrawal17 Jun 26, 2018
295223c
Category Details activity added
ujjwalagrawal17 Jun 26, 2018
7275649
Menu added in category details activity
ujjwalagrawal17 Jun 26, 2018
69edaf7
back button added
ujjwalagrawal17 Jun 26, 2018
462cbe0
Merge branch 'fix_fragment_issue' of github.com:ujjwalagrawal17/apps-…
nicolas-raoul Jun 27, 2018
50142b5
Merge branch 'feat_category_details' of github.com:ujjwalagrawal17/ap…
nicolas-raoul Jun 27, 2018
d206987
back button bugs
ujjwalagrawal17 Jun 28, 2018
da94f12
Improvements in category images fragment
ujjwalagrawal17 Jun 28, 2018
9b66917
JavaDoc added for some methods
ujjwalagrawal17 Jun 28, 2018
fbd240d
Merge branch 'feat_category_details' of github.com:ujjwalagrawal17/ap…
nicolas-raoul Jun 28, 2018
a041a03
trimming added, Tab layout hided, recent searches refreshed
ujjwalagrawal17 Jun 29, 2018
37ef69b
SubCategory list fragment added, API added to extract subCategory Det…
ujjwalagrawal17 Jul 3, 2018
673321d
API params updated to get more precise results
ujjwalagrawal17 Jul 3, 2018
986d92f
Javadocs added for MWAPI method
ujjwalagrawal17 Jul 3, 2018
355b0e6
Merge branch 'feat_category_details' of github.com:ujjwalagrawal17/ap…
nicolas-raoul Jul 4, 2018
33db2c9
Merge branch 'feat_category_list' of github.com:ujjwalagrawal17/apps-…
nicolas-raoul Jul 4, 2018
48d8f64
Pagination removed
ujjwalagrawal17 Jul 5, 2018
5f77ba9
Fix API for fetching images inside category
ujjwalagrawal17 Jul 5, 2018
93f62a7
Parent category API added
ujjwalagrawal17 Jul 10, 2018
98ed7db
Merge branch 'browse-commons-via-app' into feat_parent_category
ujjwalagrawal17 Jul 10, 2018
4294257
Fixed conflicts
nicolas-raoul Jul 10, 2018
5e807b8
Merge branch 'feat_parent_category' of github.com:ujjwalagrawal17/app…
nicolas-raoul Jul 10, 2018
19aa10a
Fix #1704
VaishSiddharth Jul 13, 2018
861d3fd
Fix #1704 corrected
VaishSiddharth Jul 13, 2018
65eb685
Fix #1702
VaishSiddharth Jul 13, 2018
57a7f91
Fix #1702 and #1704
VaishSiddharth Jul 13, 2018
09fdd71
added try catch statements
ujjwalagrawal17 Jul 14, 2018
a2c5fc2
Optimimzed imports
ujjwalagrawal17 Jul 14, 2018
bdb5f16
loops replaced with Functions
ujjwalagrawal17 Jul 14, 2018
def87d0
Merge branch 'fix_concurrent_modifications_exception' of github.com:u…
nicolas-raoul Jul 16, 2018
0bfcac1
Javadocs for various methods added
ujjwalagrawal17 Jul 18, 2018
3e86122
Fix java docs for Dao
ujjwalagrawal17 Jul 18, 2018
565d2b3
Javadocs for various methods added
ujjwalagrawal17 Jul 18, 2018
7aeb905
Fix java docs for Dao
ujjwalagrawal17 Jul 18, 2018
093b317
More javadocs added for explore Feature
ujjwalagrawal17 Jul 18, 2018
ffe5b19
Merge branch 'feat_borwse_javadocs' of github.com:ujjwalagrawal17/app…
nicolas-raoul Jul 18, 2018
9e4f8be
Javadocs added
ujjwalagrawal17 Jul 23, 2018
1249afe
Javadocs added
ujjwalagrawal17 Jul 23, 2018
ba0109e
Merge branch 'browse-commons-via-app' of github.com:commons-app/apps-…
ujjwalagrawal17 Jul 23, 2018
7462df4
Fixed conflicts
ujjwalagrawal17 Jul 23, 2018
11b13be
Improvements in indentation (#1739)
ujjwalagrawal17 Jul 23, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,17 @@
android:label="@string/title_activity_featured_images"
android:parentActivityName=".contributions.ContributionsActivity" />

<activity
android:name=".category.CategoryDetailsActivity"
android:label="@string/title_activity_featured_images"
android:parentActivityName=".contributions.ContributionsActivity" />

<activity
android:name=".explore.SearchActivity"
android:label="@string/title_activity_search"
android:parentActivityName=".contributions.ContributionsActivity"
/>

<service android:name=".upload.UploadService" />

<service
Expand Down Expand Up @@ -165,6 +176,13 @@
android:label="@string/provider_categories"
android:syncable="false" />

<provider
android:name=".explore.recentsearches.RecentSearchesContentProvider"
android:authorities="fr.free.nrw.commons.explore.recentsearches.contentprovider"
android:exported="false"
android:label="@string/provider_searches"
android:syncable="false" />

<receiver android:name=".widget.PicOfDayAppWidget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
Expand Down
12 changes: 6 additions & 6 deletions app/src/main/java/fr/free/nrw/commons/Media.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,17 @@
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

Expand Down Expand Up @@ -356,12 +360,8 @@ public void setCategories(List<String> categories) {
* @param descriptions Media descriptions
*/
void setDescriptions(Map<String, String> descriptions) {
for (String key : this.descriptions.keySet()) {
this.descriptions.remove(key);
}
for (String key : descriptions.keySet()) {
this.descriptions.put(key, descriptions.get(key));
}
this.descriptions.clear();
this.descriptions.putAll(descriptions);
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,253 @@
package fr.free.nrw.commons.category;

import android.content.Context;
import android.content.Intent;
import android.database.DataSetObserver;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.FrameLayout;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import fr.free.nrw.commons.Media;
import fr.free.nrw.commons.PageTitle;
import fr.free.nrw.commons.R;
import fr.free.nrw.commons.explore.ViewPagerAdapter;
import fr.free.nrw.commons.media.MediaDetailPagerFragment;
import fr.free.nrw.commons.theme.NavigationBaseActivity;

import static android.widget.Toast.LENGTH_SHORT;

/**
* This activity displays details of a particular category
* Its generic and simply takes the name of category name in its start intent to load all images, subcategories in
* a particular category on wikimedia commons.
*/

public class CategoryDetailsActivity extends NavigationBaseActivity
implements MediaDetailPagerFragment.MediaDetailProvider,
AdapterView.OnItemClickListener{


private FragmentManager supportFragmentManager;
private CategoryImagesListFragment categoryImagesListFragment;
private MediaDetailPagerFragment mediaDetails;
private String categoryName;
@BindView(R.id.mediaContainer) FrameLayout mediaContainer;
@BindView(R.id.tabLayout) TabLayout tabLayout;
@BindView(R.id.viewPager) ViewPager viewPager;

ViewPagerAdapter viewPagerAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_category_details);
ButterKnife.bind(this);
supportFragmentManager = getSupportFragmentManager();
viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(viewPagerAdapter);
viewPager.setOffscreenPageLimit(2);
tabLayout.setupWithViewPager(viewPager);
setTabs();
setPageTitle();
initDrawer();
forceInitBackButton();
}

/**
* This activity contains 3 tabs and a viewpager. This method is used to set the titles of tab,
* Set the fragments according to the tab selected in the viewPager.
*/
private void setTabs() {
List<Fragment> fragmentList = new ArrayList<>();
List<String> titleList = new ArrayList<>();
categoryImagesListFragment = new CategoryImagesListFragment();
SubCategoryListFragment subCategoryListFragment = new SubCategoryListFragment();
SubCategoryListFragment parentCategoryListFragment = new SubCategoryListFragment();
categoryName = getIntent().getStringExtra("categoryName");
if (getIntent() != null && categoryName != null) {
Bundle arguments = new Bundle();
arguments.putString("categoryName", categoryName);
arguments.putBoolean("isParentCategory", false);
categoryImagesListFragment.setArguments(arguments);
subCategoryListFragment.setArguments(arguments);
Bundle parentCategoryArguments = new Bundle();
parentCategoryArguments.putString("categoryName", categoryName);
parentCategoryArguments.putBoolean("isParentCategory", true);
parentCategoryListFragment.setArguments(parentCategoryArguments);
}
fragmentList.add(categoryImagesListFragment);
titleList.add("MEDIA");
fragmentList.add(subCategoryListFragment);
titleList.add("SUBCATEGORIES");
fragmentList.add(parentCategoryListFragment);
titleList.add("PARENT CATEGORIES");
viewPagerAdapter.setTabData(fragmentList, titleList);
viewPagerAdapter.notifyDataSetChanged();

}

/**
* Gets the passed categoryName from the intents and displays it as the page title
*/
private void setPageTitle() {
if (getIntent() != null && getIntent().getStringExtra("categoryName") != null) {
setTitle(getIntent().getStringExtra("categoryName"));
}
}

/**
* This method is called onClick of media inside category details (CategoryImageListFragment).
*/
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
tabLayout.setVisibility(View.GONE);
viewPager.setVisibility(View.GONE);
mediaContainer.setVisibility(View.VISIBLE);
if (mediaDetails == null || !mediaDetails.isVisible()) {
// set isFeaturedImage true for featured images, to include author field on media detail
mediaDetails = new MediaDetailPagerFragment(false, true);
FragmentManager supportFragmentManager = getSupportFragmentManager();
supportFragmentManager
.beginTransaction()
.replace(R.id.mediaContainer, mediaDetails)
.addToBackStack(null)
.commit();
supportFragmentManager.executePendingTransactions();
}
mediaDetails.showImage(i);
forceInitBackButton();
}


/**
* Consumers should be simply using this method to use this activity.
* @param context A Context of the application package implementing this class.
* @param categoryName Name of the category for displaying its details
*/
public static void startYourself(Context context, String categoryName) {
Intent intent = new Intent(context, CategoryDetailsActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.putExtra("categoryName", categoryName);
context.startActivity(intent);
}

/**
* This method is called mediaDetailPagerFragment. It returns the Media Object at that Index
* @param i It is the index of which media object is to be returned which is same as
* current index of viewPager.
* @return Media Object
*/
@Override
public Media getMediaAtPosition(int i) {
if (categoryImagesListFragment.getAdapter() == null) {
// not yet ready to return data
return null;
} else {
return (Media) categoryImagesListFragment.getAdapter().getItem(i);
}
}

/**
* This method is called on from getCount of MediaDetailPagerFragment
* The viewpager will contain same number of media items as that of media elements in adapter.
* @return Total Media count in the adapter
*/
@Override
public int getTotalMediaCount() {
if (categoryImagesListFragment.getAdapter() == null) {
return 0;
}
return categoryImagesListFragment.getAdapter().getCount();
}

/**
* This method is never called but it was in MediaDetailProvider Interface
* so it needs to be overrided.
*/
@Override
public void notifyDatasetChanged() {

}

/**
* This method is never called but it was in MediaDetailProvider Interface
* so it needs to be overrided.
*/
@Override
public void registerDataSetObserver(DataSetObserver observer) {
}

/**
* This method is never called but it was in MediaDetailProvider Interface
* so it needs to be overrided.
*/
@Override
public void unregisterDataSetObserver(DataSetObserver observer) {

}

/**
* This method inflates the menu in the toolbar
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.fragment_category_detail, menu);
return super.onCreateOptionsMenu(menu);
}

/**
* This method handles the logic on ItemSelect in toolbar menu
* Currently only 1 choice is available to open category details page in browser
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {

// Handle item selection
switch (item.getItemId()) {
case R.id.menu_browser_current_category:
Intent viewIntent = new Intent();
viewIntent.setAction(Intent.ACTION_VIEW);
viewIntent.setData(new PageTitle(categoryName).getCanonicalUri());
//check if web browser available
if (viewIntent.resolveActivity(this.getPackageManager()) != null) {
startActivity(viewIntent);
} else {
Toast toast = Toast.makeText(this, getString(R.string.no_web_browser), LENGTH_SHORT);
toast.show();
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}

/**
* This method is called on backPressed of anyFragment in the activity.
* If condition is called when mediaDetailFragment is opened.
*/
@Override
public void onBackPressed() {
if (supportFragmentManager.getBackStackEntryCount() == 1){
// back to search so show search toolbar and hide navigation toolbar
tabLayout.setVisibility(View.VISIBLE);
viewPager.setVisibility(View.VISIBLE);
mediaContainer.setVisibility(View.GONE);
}
super.onBackPressed();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;

Expand All @@ -27,12 +28,30 @@ public static List<Media> getMediaList(NodeList childNodes) {
List<Media> categoryImages = new ArrayList<>();
for (int i = 0; i < childNodes.getLength(); i++) {
Node node = childNodes.item(i);
categoryImages.add(getMediaFromPage(node));
if (getMediaFromPage(node).getFilename().substring(0,5).equals("File:")){
categoryImages.add(getMediaFromPage(node));
}
}

return categoryImages;
}

/**
* The method iterates over the child nodes to return a list of Subcategory name
* sorted alphabetically
* @param childNodes
* @return
*/
public static List<String> getSubCategoryList(NodeList childNodes) {
List<String> subCategories = new ArrayList<>();
for (int i = 0; i < childNodes.getLength(); i++) {
Node node = childNodes.item(i);
subCategories.add(getMediaFromPage(node).getFilename());
}
Collections.sort(subCategories);
return subCategories;
}

/**
* Creates a new Media object from the XML response as received by the API
* @param node
Expand Down
Loading