Change default icon color in Windows and allow toggling

This commit is contained in:
Rolando Islas
2016-05-27 15:43:01 -07:00
parent 6f2ed283ed
commit e2ce3e4c68
2 changed files with 38 additions and 9 deletions
+37 -9
View File
@@ -83,15 +83,7 @@ IconMenu::IconMenu() : INDEX_EDIT(1000000), INDEX_BYPASS(2000000), INDEX_DELETE(
activePluginList.recreateFromXml(*savedPluginListActive); activePluginList.recreateFromXml(*savedPluginListActive);
loadActivePlugins(); loadActivePlugins();
activePluginList.addChangeListener(this); activePluginList.addChangeListener(this);
// Set menu icon setIcon();
#if JUCE_MAC
if (exec("defaults read -g AppleInterfaceStyle").compare("Dark") == 1)
setIconImage(ImageFileFormat::loadFrom(BinaryData::menu_icon_white_png, BinaryData::menu_icon_white_pngSize));
else
setIconImage(ImageFileFormat::loadFrom(BinaryData::menu_icon_png, BinaryData::menu_icon_pngSize));
#else
setIconImage(ImageFileFormat::loadFrom(BinaryData::menu_icon_png, BinaryData::menu_icon_pngSize));
#endif
setIconTooltip(JUCEApplication::getInstance()->getApplicationName()); setIconTooltip(JUCEApplication::getInstance()->getApplicationName());
}; };
@@ -100,6 +92,33 @@ IconMenu::~IconMenu()
savePluginStates(); savePluginStates();
} }
void IconMenu::setIcon()
{
// Set menu icon
#if JUCE_MAC
if (exec("defaults read -g AppleInterfaceStyle").compare("Dark") == 1)
setIconImage(ImageFileFormat::loadFrom(BinaryData::menu_icon_white_png, BinaryData::menu_icon_white_pngSize));
else
setIconImage(ImageFileFormat::loadFrom(BinaryData::menu_icon_png, BinaryData::menu_icon_pngSize));
#else
String defaultColor;
#if JUCE_WINDOWS
defaultColor = "white";
#elif JUCE_LINUX
defaultColor = "black";
#endif
if (!getAppProperties().getUserSettings()->containsKey("icon"))
getAppProperties().getUserSettings()->setValue("icon", defaultColor);
String color = getAppProperties().getUserSettings()->getValue("icon");
Image icon;
if (color.equalsIgnoreCase("white"))
icon = ImageFileFormat::loadFrom(BinaryData::menu_icon_white_png, BinaryData::menu_icon_white_pngSize);
else if (color.equalsIgnoreCase("black"))
icon = ImageFileFormat::loadFrom(BinaryData::menu_icon_png, BinaryData::menu_icon_pngSize);
setIconImage(icon);
#endif
}
void IconMenu::loadActivePlugins() void IconMenu::loadActivePlugins()
{ {
const int INPUT = 1000000; const int INPUT = 1000000;
@@ -253,6 +272,9 @@ void IconMenu::timerCallback()
menu.addItem(1, "Quit"); menu.addItem(1, "Quit");
menu.addSeparator(); menu.addSeparator();
menu.addItem(2, "Delete Plugin States"); menu.addItem(2, "Delete Plugin States");
#if !JUCE_MAC
menu.addItem(3, "Invert Icon Color");
#endif
} }
#if JUCE_MAC || JUCE_LINUX #if JUCE_MAC || JUCE_LINUX
menu.showMenuAsync(PopupMenu::Options().withTargetComponent(this), ModalCallbackFunction::forComponent(menuInvocationCallback, this)); menu.showMenuAsync(PopupMenu::Options().withTargetComponent(this), ModalCallbackFunction::forComponent(menuInvocationCallback, this));
@@ -296,6 +318,12 @@ void IconMenu::menuInvocationCallback(int id, IconMenu* im)
im->deletePluginStates(); im->deletePluginStates();
return im->loadActivePlugins(); return im->loadActivePlugins();
} }
if (id == 3)
{
String color = getAppProperties().getUserSettings()->getValue("icon");
getAppProperties().getUserSettings()->setValue("icon", color.equalsIgnoreCase("black") ? "white" : "black");
return im->setIcon();
}
} }
#if JUCE_MAC #if JUCE_MAC
// Click elsewhere // Click elsewhere
+1
View File
@@ -35,6 +35,7 @@ private:
PluginDescription getNextPluginOlderThanTime(int &time); PluginDescription getNextPluginOlderThanTime(int &time);
void removePluginsLackingInputOutput(); void removePluginsLackingInputOutput();
std::vector<PluginDescription> getTimeSortedList(); std::vector<PluginDescription> getTimeSortedList();
void setIcon();
AudioDeviceManager deviceManager; AudioDeviceManager deviceManager;
AudioPluginFormatManager formatManager; AudioPluginFormatManager formatManager;