Skip to content

Commit 2f31d88

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

17 files changed

Lines changed: 246 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;
@@ -200,10 +202,12 @@ public void onCreate(Bundle savedInstanceState) {
200202
behaviours.add(getString(R.string.uploader_upload_files_behaviour_only_upload));
201203
behaviours.add(getString(R.string.uploader_upload_files_behaviour_upload_and_delete_from_source));
202204

203-
ArrayAdapter<String> behaviourAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item,
205+
//custom spinner item layout for NMC
206+
ArrayAdapter<String> behaviourAdapter = new ArrayAdapter<>(this, R.layout.simple_spinner_item,
204207
behaviours);
205208
behaviourAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
206209
binding.uploadFilesSpinnerBehaviour.setAdapter(behaviourAdapter);
210+
binding.uploadFilesSpinnerBehaviour.getBackground().setColorFilter(getResources().getColor(R.color.primary, null), PorterDuff.Mode.SRC_IN);
207211
binding.uploadFilesSpinnerBehaviour.setSelection(localBehaviour);
208212

209213
// setup the toolbar
@@ -224,6 +228,7 @@ public void onCreate(Bundle savedInstanceState) {
224228

225229
showToolbarSpinner();
226230
mToolbarSpinner.setAdapter(mDirectories);
231+
mToolbarSpinner.getBackground().setColorFilter(Color.TRANSPARENT, PorterDuff.Mode.SRC_IN);
227232
mToolbarSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
228233
@Override
229234
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
@@ -15,6 +15,7 @@ import android.view.View
1515
import android.view.ViewGroup
1616
import android.widget.ImageButton
1717
import android.widget.PopupMenu
18+
import androidx.appcompat.view.ContextThemeWrapper
1819
import androidx.annotation.VisibleForTesting
1920
import com.afollestad.sectionedrecyclerview.SectionedRecyclerViewAdapter
2021
import com.afollestad.sectionedrecyclerview.SectionedViewHolder
@@ -287,7 +288,9 @@ class SyncedFolderAdapter(
287288
}
288289

289290
private fun onOverflowIconClicked(section: Int, item: SyncedFolderDisplayItem, view: View) {
290-
val popup = PopupMenu(context, view).apply {
291+
// NMC Customisation
292+
val ctw = ContextThemeWrapper(context, R.style.CustomPopupTheme)
293+
val popup = PopupMenu(ctw, view).apply {
291294
inflate(R.menu.synced_folders_adapter)
292295
setOnMenuItemClickListener { i: MenuItem -> optionsItemSelected(i, section, item) }
293296
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
@@ -59,6 +59,7 @@
5959
import java.util.Optional;
6060

6161
import androidx.annotation.NonNull;
62+
import androidx.appcompat.view.ContextThemeWrapper;
6263

6364
/**
6465
* This Adapter populates a ListView with following types of uploads: pending, active, completed. Filtering possible.
@@ -651,7 +652,9 @@ private void showItemConflictPopup(User user,
651652
OCUpload item,
652653
String status,
653654
View view) {
654-
PopupMenu popup = new PopupMenu(MainApp.getAppContext(), view);
655+
//NMC Customisation
656+
ContextThemeWrapper ctw = new ContextThemeWrapper(MainApp.getAppContext(), R.style.CustomPopupTheme);
657+
PopupMenu popup = new PopupMenu(ctw, view);
655658
popup.inflate(R.menu.upload_list_item_file_conflict);
656659
popup.setOnMenuItemClickListener(i -> {
657660
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
@@ -43,6 +43,7 @@
4343

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

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

293295
}

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
MenuInflater inflater = getActivity().getMenuInflater();
822822
inflater.inflate(R.menu.custom_menu_placeholder, menu);
823823
final MenuItem item = menu.findItem(R.id.custom_menu_placeholder_item);
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
mode.invalidate();
826827

827828
//set actionMode color

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
@@ -352,10 +352,11 @@ class PreviewImageFragment : FileFragment(), Injectable {
352352
val item = menu.findItem(R.id.custom_menu_placeholder_item)
353353

354354
item.icon?.let {
355+
// NMC customization
355356
item.setIcon(
356357
viewThemeUtils.platform.colorDrawable(
357358
it,
358-
ContextCompat.getColor(requireContext(), R.color.white)
359+
ContextCompat.getColor(requireContext(), R.color.fontAppbar)
359360
)
360361
)
361362
}

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
@@ -32,6 +32,7 @@ import android.view.View.OnTouchListener
3232
import android.view.ViewGroup
3333
import androidx.annotation.OptIn
3434
import androidx.annotation.StringRes
35+
import androidx.core.content.ContextCompat
3536
import androidx.core.view.MenuHost
3637
import androidx.core.view.MenuProvider
3738
import androidx.drawerlayout.widget.DrawerLayout
@@ -67,6 +68,7 @@ import com.owncloud.android.ui.dialog.ConfirmationDialogFragment
6768
import com.owncloud.android.ui.dialog.RemoveFilesDialogFragment
6869
import com.owncloud.android.ui.fragment.FileFragment
6970
import com.owncloud.android.utils.MimeTypeUtil
71+
import com.owncloud.android.utils.theme.ViewThemeUtils
7072
import java.lang.ref.WeakReference
7173
import java.util.concurrent.Executors
7274
import javax.inject.Inject
@@ -114,6 +116,9 @@ class PreviewMediaFragment : FileFragment(), OnTouchListener, Injectable {
114116
@Inject
115117
lateinit var backgroundJobManager: BackgroundJobManager
116118

119+
@Inject
120+
lateinit var viewThemeUtils: ViewThemeUtils
121+
117122
lateinit var binding: FragmentPreviewMediaBinding
118123
private var emptyListView: ViewGroup? = null
119124
private var exoPlayer: ExoPlayer? = null
@@ -305,6 +310,16 @@ class PreviewMediaFragment : FileFragment(), OnTouchListener, Injectable {
305310
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
306311
menu.removeItem(R.id.action_search)
307312
menuInflater.inflate(R.menu.custom_menu_placeholder, menu)
313+
// NMC customization
314+
val item = menu.findItem(R.id.custom_menu_placeholder_item)
315+
item.icon?.let {
316+
item.setIcon(
317+
viewThemeUtils.platform.colorDrawable(
318+
it,
319+
ContextCompat.getColor(requireContext(), R.color.fontAppbar)
320+
)
321+
)
322+
}
308323
}
309324

310325
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
@@ -226,7 +227,9 @@ class TrashbinActivity :
226227
}
227228

228229
override fun onOverflowIconClicked(file: TrashbinFile, view: View) {
229-
val popup = PopupMenu(this, view)
230+
// NMC Customization
231+
val ctw = ContextThemeWrapper(this, R.style.CustomPopupTheme)
232+
val popup = PopupMenu(ctw, view)
230233
popup.inflate(R.menu.item_trashbin)
231234
popup.setOnMenuItemClickListener {
232235
onFileActionChosen(it.itemId, setOf(file))
@@ -537,11 +540,12 @@ class TrashbinActivity :
537540
val inflater: MenuInflater = activity.menuInflater
538541
inflater.inflate(R.menu.custom_menu_placeholder, menu)
539542
val item = menu.findItem(R.id.custom_menu_placeholder_item)
543+
// NMC Customization
540544
item.icon?.let {
541545
item.setIcon(
542546
viewThemeUtils.platform.colorDrawable(
543547
it,
544-
ContextCompat.getColor(activity, R.color.white)
548+
ContextCompat.getColor(activity, R.color.fontAppbar)
545549
)
546550
)
547551
}

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
@@ -103,7 +103,8 @@ class FilesSpecificViewThemeUtils @Inject constructor(
103103
.setThumbDrawable(getThumbDrawable(context))
104104
.setPopupStyle {
105105
PopupStyles.MD2.accept(it)
106-
it.background = FastScrollPopupBackground(context, scheme.primary)
106+
//NMC customisation
107+
it.background = FastScrollPopupBackground(context, context.resources.getColor(R.color.primary, null))
107108
}
108109
}
109110
}
@@ -115,7 +116,7 @@ class FilesSpecificViewThemeUtils @Inject constructor(
115116
me.zhanghai.android.fastscroll.R.drawable.afs_md2_thumb,
116117
null
117118
)
118-
return androidViewThemeUtils.tintPrimaryDrawable(context, thumbDrawable)!!
119+
return androidViewThemeUtils.colorDrawable(thumbDrawable!!, context.resources.getColor(R.color.primary, null))
119120
}
120121

121122
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)