diff --git a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java
index 649c6a2b9..2e899c75b 100644
--- a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java
+++ b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java
@@ -158,6 +158,10 @@ public class FDroidApp extends Application {
}
}
+ public static boolean isAppThemeLight() {
+ return curTheme == Theme.light;
+ }
+
public void applyDialogTheme(Activity activity) {
activity.setTheme(getCurDialogThemeResId());
setSecureWindow(activity);
diff --git a/app/src/main/java/org/fdroid/fdroid/views/apps/AppListActivity.java b/app/src/main/java/org/fdroid/fdroid/views/apps/AppListActivity.java
index 2d8b75353..4476c5a8f 100644
--- a/app/src/main/java/org/fdroid/fdroid/views/apps/AppListActivity.java
+++ b/app/src/main/java/org/fdroid/fdroid/views/apps/AppListActivity.java
@@ -16,6 +16,7 @@ import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
+import android.widget.ImageView;
import android.widget.TextView;
import org.fdroid.fdroid.FDroidApp;
import org.fdroid.fdroid.R;
@@ -34,8 +35,16 @@ public class AppListActivity extends AppCompatActivity implements LoaderManager.
private AppListAdapter appAdapter;
private String category;
private String searchTerms;
+ private String sortClauseSelected = SortClause.LAST_UPDATED;
private TextView emptyState;
private EditText searchInput;
+ private ImageView sortImage;
+
+ private interface SortClause {
+ String NAME = Schema.AppMetadataTable.NAME + "." + Schema.AppMetadataTable.Cols.NAME + " asc";
+ String LAST_UPDATED = Schema.AppMetadataTable.NAME + "."
+ + Schema.AppMetadataTable.Cols.LAST_UPDATED + " desc";
+ }
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -62,6 +71,35 @@ public class AppListActivity extends AppCompatActivity implements LoaderManager.
}
});
+ sortImage = (ImageView) findViewById(R.id.sort);
+ if (FDroidApp.isAppThemeLight()) {
+ sortImage.setImageResource(R.drawable.ic_last_updated_black);
+ } else {
+ sortImage.setImageResource(R.drawable.ic_last_updated_white);
+ }
+ sortImage.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ if (sortClauseSelected.equalsIgnoreCase(SortClause.LAST_UPDATED)) {
+ sortClauseSelected = SortClause.NAME;
+ if (FDroidApp.isAppThemeLight()) {
+ sortImage.setImageResource(R.drawable.ic_az_black);
+ } else {
+ sortImage.setImageResource(R.drawable.ic_az_white);
+ }
+ } else {
+ sortClauseSelected = SortClause.LAST_UPDATED;
+ if (FDroidApp.isAppThemeLight()) {
+ sortImage.setImageResource(R.drawable.ic_last_updated_black);
+ } else {
+ sortImage.setImageResource(R.drawable.ic_last_updated_white);
+ }
+ }
+ getSupportLoaderManager().restartLoader(0, null, AppListActivity.this);
+ appView.scrollToPosition(0);
+ }
+ });
+
emptyState = (TextView) findViewById(R.id.empty_state);
View backButton = findViewById(R.id.back);
@@ -128,7 +166,7 @@ public class AppListActivity extends AppCompatActivity implements LoaderManager.
Schema.AppMetadataTable.Cols.ALL,
null,
null,
- Schema.AppMetadataTable.Cols.NAME
+ sortClauseSelected
);
}
diff --git a/app/src/main/res/drawable-hdpi/ic_az_black.png b/app/src/main/res/drawable-hdpi/ic_az_black.png
new file mode 100644
index 000000000..6f43e9a73
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_az_black.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_az_white.png b/app/src/main/res/drawable-hdpi/ic_az_white.png
new file mode 100644
index 000000000..0a988e88c
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_az_white.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_last_updated_black.png b/app/src/main/res/drawable-hdpi/ic_last_updated_black.png
new file mode 100644
index 000000000..ab7c530ab
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_last_updated_black.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_last_updated_white.png b/app/src/main/res/drawable-hdpi/ic_last_updated_white.png
new file mode 100644
index 000000000..4f9d5122d
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_last_updated_white.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_az_black.png b/app/src/main/res/drawable-mdpi/ic_az_black.png
new file mode 100644
index 000000000..50aaae3df
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_az_black.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_az_white.png b/app/src/main/res/drawable-mdpi/ic_az_white.png
new file mode 100644
index 000000000..4d968ce4e
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_az_white.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_last_updated_black.png b/app/src/main/res/drawable-mdpi/ic_last_updated_black.png
new file mode 100644
index 000000000..49f8ba055
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_last_updated_black.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_last_updated_white.png b/app/src/main/res/drawable-mdpi/ic_last_updated_white.png
new file mode 100644
index 000000000..50847f0a5
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_last_updated_white.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_az_black.png b/app/src/main/res/drawable-xhdpi/ic_az_black.png
new file mode 100644
index 000000000..bb0425833
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_az_black.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_az_white.png b/app/src/main/res/drawable-xhdpi/ic_az_white.png
new file mode 100644
index 000000000..595a4a447
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_az_white.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_last_updated_black.png b/app/src/main/res/drawable-xhdpi/ic_last_updated_black.png
new file mode 100644
index 000000000..cf727c3a5
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_last_updated_black.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_last_updated_white.png b/app/src/main/res/drawable-xhdpi/ic_last_updated_white.png
new file mode 100644
index 000000000..5fde29b9a
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_last_updated_white.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_az_black.png b/app/src/main/res/drawable-xxhdpi/ic_az_black.png
new file mode 100644
index 000000000..d90a8cd13
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_az_black.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_az_white.png b/app/src/main/res/drawable-xxhdpi/ic_az_white.png
new file mode 100644
index 000000000..c509cd2a3
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_az_white.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_last_updated_black.png b/app/src/main/res/drawable-xxhdpi/ic_last_updated_black.png
new file mode 100644
index 000000000..5f9ee5613
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_last_updated_black.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_last_updated_white.png b/app/src/main/res/drawable-xxhdpi/ic_last_updated_white.png
new file mode 100644
index 000000000..31d603e6d
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_last_updated_white.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_az_black.png b/app/src/main/res/drawable-xxxhdpi/ic_az_black.png
new file mode 100644
index 000000000..2ac5c87f3
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_az_black.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_az_white.png b/app/src/main/res/drawable-xxxhdpi/ic_az_white.png
new file mode 100644
index 000000000..6efdc7a33
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_az_white.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_last_updated_black.png b/app/src/main/res/drawable-xxxhdpi/ic_last_updated_black.png
new file mode 100644
index 000000000..70e27b7c2
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_last_updated_black.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_last_updated_white.png b/app/src/main/res/drawable-xxxhdpi/ic_last_updated_white.png
new file mode 100644
index 000000000..7212497b9
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_last_updated_white.png differ
diff --git a/app/src/main/res/layout/activity_app_list.xml b/app/src/main/res/layout/activity_app_list.xml
index fa12d3ac8..12bfd0df8 100644
--- a/app/src/main/res/layout/activity_app_list.xml
+++ b/app/src/main/res/layout/activity_app_list.xml
@@ -10,59 +10,76 @@
android:id="@+id/search_card"
android:layout_width="0dp"
android:layout_height="wrap_content"
- android:layout_margin="12dp"
- app:layout_constraintTop_toTopOf="parent"
+ android:layout_marginStart="16dp"
+ android:layout_marginLeft="16dp"
+ android:layout_marginEnd="0dp"
+ android:layout_marginRight="0dp"
+ android:layout_marginTop="16dp"
+ android:layout_marginBottom="16dp"
+ app:layout_constraintEnd_toStartOf="@+id/sort"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent">
+ app:layout_constraintTop_toTopOf="parent">
+ android:paddingEnd="8dp"
+ android:paddingLeft="8dp"
+ android:paddingRight="8dp"
+ android:paddingStart="8dp">
+ app:layout_constraintTop_toTopOf="parent"/>
+ android:padding="12dp"
+ android:textSize="18sp"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toStartOf="@+id/clear"
+ app:layout_constraintStart_toEndOf="@+id/back"
+ app:layout_constraintTop_toTopOf="parent"/>
+ app:layout_constraintTop_toTopOf="parent"/>
+
+
Add Key
Overwrite
Clear search
+ Sort search
No Bluetooth send method found, choose one!
Choose Bluetooth send method