Skip to content

Commit 3b92cb7

Browse files
committed
NMC-2045: Customized popup menu, overflow menu and FastScroller.
NMC-2049: Customized Spinner.
1 parent 2a0b507 commit 3b92cb7

File tree

17 files changed

+248
-13
lines changed

17 files changed

+248
-13
lines changed

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
@@ -17,6 +17,8 @@
1717
import android.annotation.SuppressLint;
1818
import android.app.Activity;
1919
import android.content.Intent;
20+
import android.graphics.Color;
21+
import android.graphics.PorterDuff;
2022
import android.os.Bundle;
2123
import android.os.Environment;
2224
import android.view.Menu;
@@ -208,10 +210,12 @@ public void onCreate(Bundle savedInstanceState) {
208210
behaviours.add(getString(R.string.uploader_upload_files_behaviour_only_upload));
209211
behaviours.add(getString(R.string.uploader_upload_files_behaviour_upload_and_delete_from_source));
210212

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

217221
// setup the toolbar
@@ -232,6 +236,7 @@ public void onCreate(Bundle savedInstanceState) {
232236

233237
showToolbarSpinner();
234238
mToolbarSpinner.setAdapter(mDirectories);
239+
mToolbarSpinner.getBackground().setColorFilter(Color.TRANSPARENT, PorterDuff.Mode.SRC_IN);
235240
mToolbarSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
236241
@Override
237242
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
@@ -70,6 +70,7 @@
7070

7171
import androidx.annotation.NonNull;
7272
import kotlin.Unit;
73+
import androidx.appcompat.view.ContextThemeWrapper;
7374

7475
/**
7576
* This Adapter populates a ListView with following types of uploads: pending, active, completed. Filtering possible.
@@ -691,7 +692,9 @@ private void showItemConflictPopup(User user,
691692
OCUpload item,
692693
String status,
693694
View view) {
694-
PopupMenu popup = new PopupMenu(MainApp.getAppContext(), view);
695+
//NMC Customisation
696+
ContextThemeWrapper ctw = new ContextThemeWrapper(MainApp.getAppContext(), R.style.CustomPopupTheme);
697+
PopupMenu popup = new PopupMenu(ctw, view);
695698
popup.inflate(R.menu.upload_list_item_file_conflict);
696699
popup.setOnMenuItemClickListener(i -> {
697700
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
@@ -821,7 +821,8 @@ public boolean onCreateActionMode(ActionMode mode, Menu menu) {
821821

822822
final MenuItem item = menu.findItem(R.id.custom_menu_placeholder_item);
823823
if (item.getIcon() != null) {
824-
item.setIcon(viewThemeUtils.platform.colorDrawable(item.getIcon(), ContextCompat.getColor(requireContext(), R.color.white)));
824+
// NMC customization
825+
item.setIcon(viewThemeUtils.platform.colorDrawable(item.getIcon(), ContextCompat.getColor(requireContext(), R.color.fontAppbar)));
825826
}
826827

827828
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
@@ -23,6 +23,7 @@ import androidx.activity.OnBackPressedCallback
2323
import androidx.annotation.IdRes
2424
import androidx.annotation.VisibleForTesting
2525
import androidx.core.content.ContextCompat
26+
import androidx.appcompat.view.ContextThemeWrapper
2627
import androidx.core.content.res.ResourcesCompat
2728
import androidx.drawerlayout.widget.DrawerLayout
2829
import androidx.recyclerview.widget.LinearLayoutManager
@@ -237,7 +238,9 @@ class TrashbinActivity :
237238
}
238239

239240
override fun onOverflowIconClicked(file: TrashbinFile, view: View) {
240-
val popup = PopupMenu(this, view)
241+
// NMC Customization
242+
val ctw = ContextThemeWrapper(this, R.style.CustomPopupTheme)
243+
val popup = PopupMenu(ctw, view)
241244
popup.inflate(R.menu.item_trashbin)
242245
popup.setOnMenuItemClickListener {
243246
onFileActionChosen(it.itemId, setOf(file))
@@ -569,11 +572,12 @@ class TrashbinActivity :
569572
val inflater: MenuInflater = activity.menuInflater
570573
inflater.inflate(R.menu.custom_menu_placeholder, menu)
571574
val item = menu.findItem(R.id.custom_menu_placeholder_item)
575+
// NMC Customization
572576
item.icon?.let {
573577
item.setIcon(
574578
viewThemeUtils.platform.colorDrawable(
575579
it,
576-
ContextCompat.getColor(activity, R.color.white)
580+
ContextCompat.getColor(activity, R.color.fontAppbar)
577581
)
578582
)
579583
}

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)