Skip to content

Commit 205ba8a

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

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
@@ -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
@@ -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 androidx.core.view.isVisible
2021
import com.afollestad.sectionedrecyclerview.SectionedRecyclerViewAdapter
@@ -309,7 +310,9 @@ class SyncedFolderAdapter(
309310
}
310311

311312
private fun onOverflowIconClicked(section: Int, item: SyncedFolderDisplayItem, view: View) {
312-
val popup = PopupMenu(context, view).apply {
313+
// NMC Customisation
314+
val ctw = ContextThemeWrapper(context, R.style.CustomPopupTheme)
315+
val popup = PopupMenu(ctw, view).apply {
313316
inflate(R.menu.synced_folders_adapter)
314317
setOnMenuItemClickListener { i: MenuItem -> optionsItemSelected(i, section, item) }
315318
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
@@ -60,6 +60,7 @@
6060
import java.util.Optional;
6161

6262
import androidx.annotation.NonNull;
63+
import androidx.appcompat.view.ContextThemeWrapper;
6364

6465
/**
6566
* This Adapter populates a ListView with following types of uploads: pending, active, completed. Filtering possible.
@@ -652,7 +653,9 @@ private void showItemConflictPopup(User user,
652653
OCUpload item,
653654
String status,
654655
View view) {
655-
PopupMenu popup = new PopupMenu(MainApp.getAppContext(), view);
656+
//NMC Customisation
657+
ContextThemeWrapper ctw = new ContextThemeWrapper(MainApp.getAppContext(), R.style.CustomPopupTheme);
658+
PopupMenu popup = new PopupMenu(ctw, view);
656659
popup.inflate(R.menu.upload_list_item_file_conflict);
657660
popup.setOnMenuItemClickListener(i -> {
658661
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;
@@ -286,7 +287,8 @@ public void onCreateOptionsMenu(Menu menu, @NonNull MenuInflater inflater) {
286287
MenuItem menuItem = menu.findItem(R.id.action_three_dot_icon);
287288

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

292294
}

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
@@ -819,7 +819,8 @@ public boolean onCreateActionMode(ActionMode mode, Menu menu) {
819819

820820
final MenuItem item = menu.findItem(R.id.custom_menu_placeholder_item);
821821
if (item.getIcon() != null) {
822-
item.setIcon(viewThemeUtils.platform.colorDrawable(item.getIcon(), ContextCompat.getColor(requireContext(), R.color.white)));
822+
// NMC customization
823+
item.setIcon(viewThemeUtils.platform.colorDrawable(item.getIcon(), ContextCompat.getColor(requireContext(), R.color.fontAppbar)));
823824
}
824825

825826
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
@@ -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
@@ -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
@@ -68,6 +69,7 @@ import com.owncloud.android.ui.dialog.ConfirmationDialogFragment
6869
import com.owncloud.android.ui.dialog.RemoveFilesDialogFragment
6970
import com.owncloud.android.ui.fragment.FileFragment
7071
import com.owncloud.android.utils.MimeTypeUtil
72+
import com.owncloud.android.utils.theme.ViewThemeUtils
7173
import java.lang.ref.WeakReference
7274
import java.util.concurrent.Executors
7375
import javax.inject.Inject
@@ -115,6 +117,9 @@ class PreviewMediaFragment : FileFragment(), OnTouchListener, Injectable {
115117
@Inject
116118
lateinit var backgroundJobManager: BackgroundJobManager
117119

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

311326
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
@@ -230,7 +231,9 @@ class TrashbinActivity :
230231
}
231232

232233
override fun onOverflowIconClicked(file: TrashbinFile, view: View) {
233-
val popup = PopupMenu(this, view)
234+
// NMC Customization
235+
val ctw = ContextThemeWrapper(this, R.style.CustomPopupTheme)
236+
val popup = PopupMenu(ctw, view)
234237
popup.inflate(R.menu.item_trashbin)
235238
popup.setOnMenuItemClickListener {
236239
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
@@ -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)