Skip to content

Commit e4be52b

Browse files
committed
Add sort order to list of starred repos
1 parent 7f26820 commit e4be52b

File tree

7 files changed

+76
-16
lines changed

7 files changed

+76
-16
lines changed

app/src/main/java/com/gh4a/activities/RepositoryListActivity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,8 @@ protected int[] getRightNavigationDrawerMenuResources() {
105105
protected void onPrepareRightNavigationDrawerMenu(Menu menu) {
106106
if (mFragment != null) {
107107
mFilterDrawerHelper.selectFilterType(menu, mFragment.getFilterType());
108-
mSortDrawerHelper.selectSortType(menu,
109-
mFragment.getSortOrder(), mFragment.getSortDirection());
108+
mSortDrawerHelper.selectSortType(menu, mFragment.getSortOrder(),
109+
mFragment.getSortDirection(), false);
110110
}
111111
}
112112

app/src/main/java/com/gh4a/activities/home/BookmarkFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ protected int[] getTabTitleResIds() {
3333
@Override
3434
protected Fragment makeFragment(int position) {
3535
if (position == 1) {
36-
return StarredRepositoryListFragment.newInstance(mUserLogin, "", ""); // TODO
36+
return StarredRepositoryListFragment.newInstance(mUserLogin);
3737
}
3838
return BookmarkListFragment.newInstance();
3939
}

app/src/main/java/com/gh4a/activities/home/RepositoryFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ protected void prepareToolDrawerMenu(Menu menu) {
6161
super.prepareToolDrawerMenu(menu);
6262
if (mFragment != null) {
6363
mFilterDrawerHelper.selectFilterType(menu, mFragment.getFilterType());
64-
mSortDrawerHelper.selectSortType(menu,
65-
mFragment.getSortOrder(), mFragment.getSortDirection());
64+
mSortDrawerHelper.selectSortType(menu, mFragment.getSortOrder(),
65+
mFragment.getSortDirection(), false);
6666
}
6767
}
6868

app/src/main/java/com/gh4a/fragment/RepositoryListContainerFragment.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -425,12 +425,17 @@ public int getMenuResId() {
425425
return TextUtils.equals(mFilterType, "watched") ? 0 : R.menu.repo_sort;
426426
}
427427

428-
public void selectSortType(Menu menu, String order, String direction) {
428+
public void selectSortType(Menu menu, String order, String direction,
429+
boolean updateSingleItem) {
429430
int selectedId = 0;
430431
for (int i = 0; i < SORT_LOOKUP.size(); i++) {
431432
String[] value = SORT_LOOKUP.valueAt(i);
432433
if (value[0].equals(order) && value[1].equals(direction)) {
433434
selectedId = SORT_LOOKUP.keyAt(i);
435+
if (updateSingleItem) {
436+
menu.findItem(selectedId).setChecked(true);
437+
return;
438+
}
434439
break;
435440
}
436441
}

app/src/main/java/com/gh4a/fragment/StarredRepositoryListFragment.java

Lines changed: 45 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717

1818
import android.os.Bundle;
1919
import android.support.v7.widget.RecyclerView;
20+
import android.view.Menu;
21+
import android.view.MenuInflater;
22+
import android.view.MenuItem;
2023

2124
import com.gh4a.R;
2225
import com.gh4a.ServiceFactory;
@@ -33,29 +36,63 @@
3336
import retrofit2.Response;
3437

3538
public class StarredRepositoryListFragment extends PagedDataBaseFragment<Repository> {
36-
public static StarredRepositoryListFragment newInstance(String login,
37-
String sortOrder, String sortDirection) {
39+
private static final String STATE_KEY_SORT_ORDER = "sort_order";
40+
private static final String STATE_KEY_SORT_DIRECTION = "sort_direction";
41+
42+
public static StarredRepositoryListFragment newInstance(String login) {
3843
StarredRepositoryListFragment f = new StarredRepositoryListFragment();
3944

4045
Bundle args = new Bundle();
4146
args.putString("user", login);
42-
args.putString("sort_order", sortOrder);
43-
args.putString("sort_direction", sortDirection);
4447
f.setArguments(args);
4548

4649
return f;
4750
}
4851

4952
private String mLogin;
50-
private String mSortOrder;
51-
private String mSortDirection;
53+
private String mSortOrder = "created";
54+
private String mSortDirection = "desc";
55+
private RepositoryListContainerFragment.SortDrawerHelper mSortHelper;
5256

5357
@Override
5458
public void onCreate(Bundle savedInstanceState) {
5559
super.onCreate(savedInstanceState);
5660
mLogin = getArguments().getString("user");
57-
mSortOrder = getArguments().getString("sort_order");
58-
mSortDirection = getArguments().getString("sort_direction");
61+
62+
mSortHelper = new RepositoryListContainerFragment.SortDrawerHelper();
63+
64+
if (savedInstanceState != null && savedInstanceState.containsKey(STATE_KEY_SORT_ORDER)) {
65+
mSortOrder = savedInstanceState.getString(STATE_KEY_SORT_ORDER);
66+
mSortDirection = savedInstanceState.getString(STATE_KEY_SORT_DIRECTION);
67+
}
68+
setHasOptionsMenu(true);
69+
}
70+
71+
@Override
72+
public void onSaveInstanceState(Bundle outState) {
73+
super.onSaveInstanceState(outState);
74+
outState.putString(STATE_KEY_SORT_ORDER, mSortOrder);
75+
outState.putString(STATE_KEY_SORT_DIRECTION, mSortDirection);
76+
}
77+
78+
@Override
79+
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
80+
super.onCreateOptionsMenu(menu, inflater);
81+
inflater.inflate(R.menu.repo_starred_list_menu, menu);
82+
mSortHelper.selectSortType(menu, mSortOrder, mSortDirection, true);
83+
}
84+
85+
@Override
86+
public boolean onOptionsItemSelected(MenuItem item) {
87+
String[] sortOrderAndDirection = mSortHelper.handleSelectionAndGetSortOrder(item);
88+
if (sortOrderAndDirection == null) {
89+
return false;
90+
}
91+
mSortOrder = sortOrderAndDirection[0];
92+
mSortDirection = sortOrderAndDirection[1];
93+
item.setChecked(true);
94+
onRefresh();
95+
return true;
5996
}
6097

6198
@Override
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportHeight="24.0"
5+
android:viewportWidth="24.0">
6+
<path
7+
android:fillColor="#ffffff"
8+
android:pathData="M3,18h6v-2L3,16v2zM3,6v2h18L21,6L3,6zM3,13h12v-2L3,11v2z" />
9+
</vector>

app/src/main/res/menu/repo_starred_sort.xml renamed to app/src/main/res/menu/repo_starred_list_menu.xml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<menu xmlns:android="http://schemas.android.com/apk/res/android">
3-
<item android:title="@string/repo_sort">
2+
<menu xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto">
4+
5+
<item
6+
android:id="@+id/sort_order"
7+
android:icon="@drawable/sort_order"
8+
android:title="@string/repo_sort"
9+
app:showAsAction="always">
10+
411
<menu>
512
<group android:checkableBehavior="single">
613
<item
@@ -17,5 +24,7 @@
1724
android:title="@string/repo_sort_order_pushed_desc" />
1825
</group>
1926
</menu>
27+
2028
</item>
29+
2130
</menu>

0 commit comments

Comments
 (0)