player popup menu icons for white theme
@ -25,6 +25,7 @@ import android.content.Intent;
|
|||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.pm.ActivityInfo;
|
import android.content.pm.ActivityInfo;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
|
import android.content.res.Resources;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.media.AudioManager;
|
import android.media.AudioManager;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
@ -37,7 +38,6 @@ import android.support.v7.widget.RecyclerView;
|
|||||||
import android.support.v7.widget.helper.ItemTouchHelper;
|
import android.support.v7.widget.helper.ItemTouchHelper;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.GestureDetector;
|
import android.view.GestureDetector;
|
||||||
import android.view.MenuItem;
|
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
@ -62,6 +62,7 @@ import org.schabi.newpipe.util.AnimationUtils;
|
|||||||
import org.schabi.newpipe.util.ListHelper;
|
import org.schabi.newpipe.util.ListHelper;
|
||||||
import org.schabi.newpipe.util.NavigationHelper;
|
import org.schabi.newpipe.util.NavigationHelper;
|
||||||
import org.schabi.newpipe.util.PermissionHelper;
|
import org.schabi.newpipe.util.PermissionHelper;
|
||||||
|
import org.schabi.newpipe.util.PopupMenuIconHacker;
|
||||||
import org.schabi.newpipe.util.ThemeHelper;
|
import org.schabi.newpipe.util.ThemeHelper;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
@ -326,7 +327,7 @@ public final class MainVideoPlayer extends Activity {
|
|||||||
this.playNextButton = rootView.findViewById(R.id.playNextButton);
|
this.playNextButton = rootView.findViewById(R.id.playNextButton);
|
||||||
this.moreOptionsButton = rootView.findViewById(R.id.moreOptionsButton);
|
this.moreOptionsButton = rootView.findViewById(R.id.moreOptionsButton);
|
||||||
this.moreOptionsPopupMenu = new PopupMenu(context, moreOptionsButton);
|
this.moreOptionsPopupMenu = new PopupMenu(context, moreOptionsButton);
|
||||||
this.moreOptionsPopupMenu.getMenuInflater().inflate(R.menu.menu_videooptions, moreOptionsPopupMenu.getMenu());
|
buildMoreOptionsMenu();
|
||||||
|
|
||||||
titleTextView.setSelected(true);
|
titleTextView.setSelected(true);
|
||||||
channelTextView.setSelected(true);
|
channelTextView.setSelected(true);
|
||||||
@ -499,25 +500,7 @@ public final class MainVideoPlayer extends Activity {
|
|||||||
|
|
||||||
private void onMoreOptionsClicked() {
|
private void onMoreOptionsClicked() {
|
||||||
if (DEBUG) Log.d(TAG, "onMoreOptionsClicked() called");
|
if (DEBUG) Log.d(TAG, "onMoreOptionsClicked() called");
|
||||||
buildMoreOptionsMenu();
|
|
||||||
|
|
||||||
try {
|
|
||||||
Field[] fields = moreOptionsPopupMenu.getClass().getDeclaredFields();
|
|
||||||
for (Field field : fields) {
|
|
||||||
if ("mPopup".equals(field.getName())) {
|
|
||||||
field.setAccessible(true);
|
|
||||||
Object menuPopupHelper = field.get(moreOptionsPopupMenu);
|
|
||||||
Class<?> classPopupHelper = Class.forName(menuPopupHelper
|
|
||||||
.getClass().getName());
|
|
||||||
Method setForceIcons = classPopupHelper.getMethod(
|
|
||||||
"setForceShowIcon", boolean.class);
|
|
||||||
setForceIcons.invoke(menuPopupHelper, true);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
moreOptionsPopupMenu.show();
|
moreOptionsPopupMenu.show();
|
||||||
isSomePopupMenuVisible = true;
|
isSomePopupMenuVisible = true;
|
||||||
showControls(300);
|
showControls(300);
|
||||||
@ -659,7 +642,9 @@ public final class MainVideoPlayer extends Activity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void buildMoreOptionsMenu() {
|
private void buildMoreOptionsMenu() {
|
||||||
if (moreOptionsPopupMenu == null) return;
|
this.moreOptionsPopupMenu.getMenuInflater().inflate(R.menu.menu_videooptions,
|
||||||
|
moreOptionsPopupMenu.getMenu());
|
||||||
|
|
||||||
moreOptionsPopupMenu.setOnMenuItemClickListener(menuItem -> {
|
moreOptionsPopupMenu.setOnMenuItemClickListener(menuItem -> {
|
||||||
switch (menuItem.getItemId()) {
|
switch (menuItem.getItemId()) {
|
||||||
case R.id.toggleOrientation:
|
case R.id.toggleOrientation:
|
||||||
@ -674,6 +659,22 @@ public final class MainVideoPlayer extends Activity {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
PopupMenuIconHacker.setShowPopupIcon(moreOptionsPopupMenu);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
// fix icon theme
|
||||||
|
if(ThemeHelper.isLightThemeSelected(MainVideoPlayer.this)) {
|
||||||
|
moreOptionsPopupMenu.getMenu()
|
||||||
|
.findItem(R.id.toggleOrientation)
|
||||||
|
.setIcon(R.drawable.ic_screen_rotation_black_24dp);
|
||||||
|
moreOptionsPopupMenu.getMenu()
|
||||||
|
.findItem(R.id.switchPopup)
|
||||||
|
.setIcon(R.drawable.ic_fullscreen_exit_black_24dp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buildQueue() {
|
private void buildQueue() {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/*
|
/**
|
||||||
* Copyright 2017 Mauricio Colli <mauriciocolli@outlook.com>
|
* Copyright 2017 Mauricio Colli <mauriciocolli@outlook.com>
|
||||||
* InfoCache.java is part of NewPipe
|
* InfoCache.java is part of NewPipe
|
||||||
*
|
*
|
||||||
|
@ -0,0 +1,48 @@
|
|||||||
|
package org.schabi.newpipe.util;
|
||||||
|
|
||||||
|
import android.widget.PopupMenu;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Christian Schabesberger on 20.01.18.
|
||||||
|
* Copyright 2018 Christian Schabesberger <chris.schabesberger@mailbox.org>
|
||||||
|
* PopupMenuIconHacker.java is part of NewPipe
|
||||||
|
*
|
||||||
|
* License: GPL-3.0+
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class PopupMenuIconHacker {
|
||||||
|
public static void setShowPopupIcon(PopupMenu menu) throws Exception {
|
||||||
|
try {
|
||||||
|
Field[] fields = menu.getClass().getDeclaredFields();
|
||||||
|
for (Field field : fields) {
|
||||||
|
if ("mPopup".equals(field.getName())) {
|
||||||
|
field.setAccessible(true);
|
||||||
|
Object menuPopupHelper = field.get(menu);
|
||||||
|
Class<?> classPopupHelper = Class.forName(menuPopupHelper
|
||||||
|
.getClass().getName());
|
||||||
|
Method setForceIcons = classPopupHelper.getMethod(
|
||||||
|
"setForceShowIcon", boolean.class);
|
||||||
|
setForceIcons.invoke(menuPopupHelper, true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new Exception("Could not make Popup menu show Icons", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
app/src/main/res/drawable-hdpi/ic_fullscreen_exit_black_24dp.png
Normal file
After Width: | Height: | Size: 103 B |
BIN
app/src/main/res/drawable-hdpi/ic_screen_rotation_black_24dp.png
Normal file
After Width: | Height: | Size: 478 B |
BIN
app/src/main/res/drawable-mdpi/ic_fullscreen_exit_black_24dp.png
Normal file
After Width: | Height: | Size: 93 B |
BIN
app/src/main/res/drawable-mdpi/ic_screen_rotation_black_24dp.png
Normal file
After Width: | Height: | Size: 321 B |
After Width: | Height: | Size: 111 B |
After Width: | Height: | Size: 645 B |
After Width: | Height: | Size: 122 B |
After Width: | Height: | Size: 916 B |
After Width: | Height: | Size: 123 B |
After Width: | Height: | Size: 1.2 KiB |
@ -244,7 +244,7 @@
|
|||||||
android:clickable="true"
|
android:clickable="true"
|
||||||
android:focusable="true"
|
android:focusable="true"
|
||||||
android:scaleType="fitXY"
|
android:scaleType="fitXY"
|
||||||
android:src="?attr/options"
|
android:src="@drawable/ic_more_vert_white_24dp"
|
||||||
tools:ignore="ContentDescription,RtlHardcoded"/>
|
tools:ignore="ContentDescription,RtlHardcoded"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
@ -4,17 +4,18 @@
|
|||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
<item
|
<item
|
||||||
android:icon="@drawable/ic_screen_rotation_white"
|
|
||||||
android:id="@+id/toggleOrientation"
|
android:id="@+id/toggleOrientation"
|
||||||
|
android:icon="@drawable/ic_screen_rotation_white"
|
||||||
android:title="@string/toggle_orientation"
|
android:title="@string/toggle_orientation"
|
||||||
app:showAsAction="always|withText" />
|
app:showAsAction="always|withText" />
|
||||||
<item
|
<item
|
||||||
android:icon="@drawable/ic_fullscreen_exit_white"
|
|
||||||
android:id="@+id/switchPopup"
|
android:id="@+id/switchPopup"
|
||||||
|
android:icon="@drawable/ic_fullscreen_exit_white"
|
||||||
android:title="@string/switch_to_popup"
|
android:title="@string/switch_to_popup"
|
||||||
app:showAsAction="always|withText" />
|
app:showAsAction="always|withText" />
|
||||||
<item android:icon="?audio"
|
<item
|
||||||
android:id="@+id/switchBackground"
|
android:id="@+id/switchBackground"
|
||||||
|
android:icon="?audio"
|
||||||
android:title="@string/switch_to_background"
|
android:title="@string/switch_to_background"
|
||||||
app:showAsAction="always|withText" />
|
app:showAsAction="always|withText" />
|
||||||
</menu>
|
</menu>
|
||||||
|