|
- /*
- ==============================================================================
-
- This file is part of the JUCE library - "Jules' Utility Class Extensions"
- Copyright 2004-11 by Raw Material Software Ltd.
-
- ------------------------------------------------------------------------------
-
- JUCE can be redistributed and/or modified under the terms of the GNU General
- Public License (Version 2), as published by the Free Software Foundation.
- A copy of the license is included in the JUCE distribution, or can be found
- online at www.gnu.org/licenses.
-
- JUCE 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.
-
- ------------------------------------------------------------------------------
-
- To release a closed-source product which uses JUCE, commercial licenses are
- available: visit www.rawmaterialsoftware.com/juce for more information.
-
- ==============================================================================
- */
-
- PreferencesPanel::PreferencesPanel()
- : buttonSize (70)
- {
- }
-
- PreferencesPanel::~PreferencesPanel()
- {
- }
-
- int PreferencesPanel::getButtonSize() const noexcept
- {
- return buttonSize;
- }
-
- void PreferencesPanel::setButtonSize (int newSize)
- {
- buttonSize = newSize;
- resized();
- }
-
- //==============================================================================
- void PreferencesPanel::addSettingsPage (const String& title,
- const Drawable* icon,
- const Drawable* overIcon,
- const Drawable* downIcon)
- {
- DrawableButton* const button = new DrawableButton (title, DrawableButton::ImageAboveTextLabel);
- buttons.add (button);
-
- button->setImages (icon, overIcon, downIcon);
- button->setRadioGroupId (1);
- button->addListener (this);
- button->setClickingTogglesState (true);
- button->setWantsKeyboardFocus (false);
- addAndMakeVisible (button);
-
- resized();
-
- if (currentPage == nullptr)
- setCurrentPage (title);
- }
-
- void PreferencesPanel::addSettingsPage (const String& title, const void* imageData, const int imageDataSize)
- {
- DrawableImage icon, iconOver, iconDown;
- icon.setImage (ImageCache::getFromMemory (imageData, imageDataSize));
-
- iconOver.setImage (ImageCache::getFromMemory (imageData, imageDataSize));
- iconOver.setOverlayColour (Colours::black.withAlpha (0.12f));
-
- iconDown.setImage (ImageCache::getFromMemory (imageData, imageDataSize));
- iconDown.setOverlayColour (Colours::black.withAlpha (0.25f));
-
- addSettingsPage (title, &icon, &iconOver, &iconDown);
- }
-
- //==============================================================================
- void PreferencesPanel::showInDialogBox (const String& dialogTitle, int dialogWidth, int dialogHeight, const Colour& backgroundColour)
- {
- setSize (dialogWidth, dialogHeight);
- DialogWindow::showDialog (dialogTitle, this, 0, backgroundColour, false);
- }
-
- //==============================================================================
- void PreferencesPanel::resized()
- {
- for (int i = 0; i < buttons.size(); ++i)
- buttons.getUnchecked(i)->setBounds (i * buttonSize, 0, buttonSize, buttonSize);
-
- if (currentPage != nullptr)
- currentPage->setBounds (getLocalBounds().withTop (buttonSize + 5));
- }
-
- void PreferencesPanel::paint (Graphics& g)
- {
- g.setColour (Colours::grey);
- g.fillRect (0, buttonSize + 2, getWidth(), 1);
- }
-
- void PreferencesPanel::setCurrentPage (const String& pageName)
- {
- if (currentPageName != pageName)
- {
- currentPageName = pageName;
-
- currentPage = nullptr;
- currentPage = createComponentForPage (pageName);
-
- if (currentPage != nullptr)
- {
- addAndMakeVisible (currentPage);
- currentPage->toBack();
- resized();
- }
-
- for (int i = 0; i < buttons.size(); ++i)
- {
- if (buttons.getUnchecked(i)->getName() == pageName)
- {
- buttons.getUnchecked(i)->setToggleState (true, false);
- break;
- }
- }
- }
- }
-
- void PreferencesPanel::buttonClicked (Button*)
- {
- for (int i = 0; i < buttons.size(); ++i)
- {
- if (buttons.getUnchecked(i)->getToggleState())
- {
- setCurrentPage (buttons.getUnchecked(i)->getName());
- break;
- }
- }
- }
|