Skip to content

Commit d814ef8

Browse files
committed
NMC-2045: Customized popup menu, overflow menu and FastScroller.
NMC-2049: Customized Spinner.
1 parent d4e131e commit d814ef8

17 files changed

Lines changed: 248 additions & 13 deletions

app/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import android.app.Activity;
1919
import android.content.Intent;
2020
import android.content.pm.PackageManager;
21+
import android.graphics.Color;
22+
import android.graphics.PorterDuff;
2123
import android.os.Bundle;
2224
import android.os.Environment;
2325
import android.view.Menu;
@@ -209,10 +211,12 @@ public void onCreate(Bundle savedInstanceState) {
209211
behaviours.add(getString(R.string.uploader_upload_files_behaviour_only_upload));
210212
behaviours.add(getString(R.string.uploader_upload_files_behaviour_upload_and_delete_from_source));
211213

212-
ArrayAdapter<String> behaviourAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item,
214+
//custom spinner item layout for NMC
215+
ArrayAdapter<String> behaviourAdapter = new ArrayAdapter<>(this, R.layout.simple_spinner_item,
213216
behaviours);
214217
behaviourAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
215218
binding.uploadFilesSpinnerBehaviour.setAdapter(behaviourAdapter);
219+
binding.uploadFilesSpinnerBehaviour.getBackground().setColorFilter(getResources().getColor(R.color.primary, null), PorterDuff.Mode.SRC_IN);
216220
binding.uploadFilesSpinnerBehaviour.setSelection(localBehaviour);
217221

218222
// setup the toolbar
@@ -233,6 +237,7 @@ public void onCreate(Bundle savedInstanceState) {
233237

234238
showToolbarSpinner();
235239
mToolbarSpinner.setAdapter(mDirectories);
240+
mToolbarSpinner.getBackground().setColorFilter(Color.TRANSPARENT, PorterDuff.Mode.SRC_IN);
236241
mToolbarSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
237242
@Override
238243
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

app/src/main/java/com/owncloud/android/ui/adapter/SyncedFolderAdapter.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import android.view.MenuItem
1414
import android.view.View
1515
import android.view.ViewGroup
1616
import android.widget.PopupMenu
17+
import androidx.appcompat.view.ContextThemeWrapper
1718
import androidx.annotation.VisibleForTesting
1819
import androidx.core.content.ContextCompat
1920
import androidx.core.view.isVisible
@@ -374,7 +375,9 @@ class SyncedFolderAdapter(
374375
}
375376

376377
private fun onOverflowIconClicked(section: Int, item: SyncedFolderDisplayItem, view: View) {
377-
val popup = PopupMenu(context, view).apply {
378+
// NMC Customisation
379+
val ctw = ContextThemeWrapper(context, R.style.CustomPopupTheme)
380+
val popup = PopupMenu(ctw, view).apply {
378381
inflate(R.menu.synced_folders_adapter)
379382
setOnMenuItemClickListener { i: MenuItem -> optionsItemSelected(i, section, item) }
380383
menu

app/src/main/java/com/owncloud/android/ui/adapter/UploadListAdapter.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
import androidx.annotation.NonNull;
7070
import kotlin.Unit;
7171
import kotlin.jvm.functions.Function0;
72+
import androidx.appcompat.view.ContextThemeWrapper;
7273

7374
/**
7475
* This Adapter populates a ListView with following types of uploads: pending, active, completed. Filtering possible.
@@ -669,7 +670,9 @@ private void showItemConflictPopup(User user,
669670
OCUpload item,
670671
String status,
671672
View view) {
672-
PopupMenu popup = new PopupMenu(MainApp.getAppContext(), view);
673+
//NMC Customisation
674+
ContextThemeWrapper ctw = new ContextThemeWrapper(MainApp.getAppContext(), R.style.CustomPopupTheme);
675+
PopupMenu popup = new PopupMenu(ctw, view);
673676
popup.inflate(R.menu.upload_list_item_file_conflict);
674677
popup.setOnMenuItemClickListener(i -> {
675678
int itemId = i.getItemId();

app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242

4343
import androidx.annotation.NonNull;
4444
import androidx.annotation.Nullable;
45+
import androidx.core.content.ContextCompat;
4546
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
4647
import androidx.recyclerview.widget.GridLayoutManager;
4748
import androidx.recyclerview.widget.RecyclerView;
@@ -288,7 +289,8 @@ public void onCreateOptionsMenu(Menu menu, @NonNull MenuInflater inflater) {
288289
MenuItem menuItem = menu.findItem(R.id.action_three_dot_icon);
289290

290291
if (menuItem != null) {
291-
viewThemeUtils.platform.colorMenuItemText(requireContext(), menuItem);
292+
//NMC customization
293+
menuItem.setIcon(viewThemeUtils.platform.colorDrawable(menuItem.getIcon(), ContextCompat.getColor(requireContext(), R.color.fontAppbar)));
292294
}
293295

294296
}

app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -824,7 +824,8 @@ public boolean onCreateActionMode(ActionMode mode, Menu menu) {
824824

825825
final MenuItem item = menu.findItem(R.id.custom_menu_placeholder_item);
826826
if (item.getIcon() != null) {
827-
item.setIcon(viewThemeUtils.platform.colorDrawable(item.getIcon(), ContextCompat.getColor(requireContext(), R.color.white)));
827+
// NMC customization
828+
item.setIcon(viewThemeUtils.platform.colorDrawable(item.getIcon(), ContextCompat.getColor(requireContext(), R.color.fontAppbar)));
828829
}
829830

830831
mActiveActionMode.invalidate();

app/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,10 +355,11 @@ class PreviewImageFragment :
355355
val item = menu.findItem(R.id.custom_menu_placeholder_item)
356356

357357
item.icon?.let {
358+
// NMC customization
358359
item.setIcon(
359360
viewThemeUtils.platform.colorDrawable(
360361
it,
361-
ContextCompat.getColor(requireContext(), R.color.white)
362+
ContextCompat.getColor(requireContext(), R.color.fontAppbar)
362363
)
363364
)
364365
}

app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import android.view.ViewGroup
3333
import androidx.annotation.OptIn
3434
import androidx.annotation.StringRes
3535
import androidx.core.net.toUri
36+
import androidx.core.content.ContextCompat
3637
import androidx.core.view.MenuHost
3738
import androidx.core.view.MenuProvider
3839
import androidx.drawerlayout.widget.DrawerLayout
@@ -71,6 +72,7 @@ import com.owncloud.android.ui.dialog.ConfirmationDialogFragment
7172
import com.owncloud.android.ui.dialog.RemoveFilesDialogFragment
7273
import com.owncloud.android.ui.fragment.FileFragment
7374
import com.owncloud.android.utils.MimeTypeUtil
75+
import com.owncloud.android.utils.theme.ViewThemeUtils
7476
import java.lang.ref.WeakReference
7577
import java.util.concurrent.Executors
7678
import javax.inject.Inject
@@ -121,6 +123,9 @@ class PreviewMediaFragment :
121123
@Inject
122124
lateinit var backgroundJobManager: BackgroundJobManager
123125

126+
@Inject
127+
lateinit var viewThemeUtils: ViewThemeUtils
128+
124129
lateinit var binding: FragmentPreviewMediaBinding
125130
private var emptyListView: ViewGroup? = null
126131
private var exoPlayer: ExoPlayer? = null
@@ -312,6 +317,16 @@ class PreviewMediaFragment :
312317
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
313318
menu.removeItem(R.id.action_search)
314319
menuInflater.inflate(R.menu.custom_menu_placeholder, menu)
320+
// NMC customization
321+
val item = menu.findItem(R.id.custom_menu_placeholder_item)
322+
item.icon?.let {
323+
item.setIcon(
324+
viewThemeUtils.platform.colorDrawable(
325+
it,
326+
ContextCompat.getColor(requireContext(), R.color.fontAppbar)
327+
)
328+
)
329+
}
315330
}
316331

317332
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {

app/src/main/java/com/owncloud/android/ui/trashbin/TrashbinActivity.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import androidx.activity.OnBackPressedCallback
2424
import androidx.annotation.IdRes
2525
import androidx.annotation.VisibleForTesting
2626
import androidx.core.content.ContextCompat
27+
import androidx.appcompat.view.ContextThemeWrapper
2728
import androidx.core.content.res.ResourcesCompat
2829
import androidx.drawerlayout.widget.DrawerLayout
2930
import androidx.recyclerview.widget.LinearLayoutManager
@@ -229,7 +230,9 @@ class TrashbinActivity :
229230
}
230231

231232
override fun onOverflowIconClicked(file: TrashbinFile, view: View) {
232-
val popup = PopupMenu(this, view)
233+
// NMC Customization
234+
val ctw = ContextThemeWrapper(this, R.style.CustomPopupTheme)
235+
val popup = PopupMenu(ctw, view)
233236
popup.inflate(R.menu.item_trashbin)
234237
popup.setOnMenuItemClickListener {
235238
onFileActionChosen(it.itemId, setOf(file))
@@ -561,11 +564,12 @@ class TrashbinActivity :
561564
val inflater: MenuInflater = activity.menuInflater
562565
inflater.inflate(R.menu.custom_menu_placeholder, menu)
563566
val item = menu.findItem(R.id.custom_menu_placeholder_item)
567+
// NMC Customization
564568
item.icon?.let {
565569
item.setIcon(
566570
viewThemeUtils.platform.colorDrawable(
567571
it,
568-
ContextCompat.getColor(activity, R.color.white)
572+
ContextCompat.getColor(activity, R.color.fontAppbar)
569573
)
570574
)
571575
}

app/src/main/java/com/owncloud/android/utils/theme/FilesSpecificViewThemeUtils.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,8 @@ class FilesSpecificViewThemeUtils @Inject constructor(
107107
.setThumbDrawable(getThumbDrawable(context))
108108
.setPopupStyle {
109109
PopupStyles.MD2.accept(it)
110-
it.background = FastScrollPopupBackground(context, scheme.primary)
110+
//NMC customisation
111+
it.background = FastScrollPopupBackground(context, context.resources.getColor(R.color.primary, null))
111112
}
112113
}
113114

@@ -118,7 +119,7 @@ class FilesSpecificViewThemeUtils @Inject constructor(
118119
me.zhanghai.android.fastscroll.R.drawable.afs_md2_thumb,
119120
null
120121
)
121-
return androidViewThemeUtils.tintPrimaryDrawable(context, thumbDrawable)!!
122+
return androidViewThemeUtils.colorDrawable(thumbDrawable!!, context.resources.getColor(R.color.primary, null))
122123
}
123124

124125
private fun getHomeAsUpIcon(isMenu: Boolean): Int {
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<selector xmlns:android="http://schemas.android.com/apk/res/android">
3+
<item>
4+
<layer-list>
5+
<item android:drawable="@drawable/ic_keyboard_arrow_down"
6+
android:gravity="center_vertical|right" android:right="5dp" />
7+
</layer-list>
8+
</item>
9+
</selector>

0 commit comments

Comments
 (0)