You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.9KB

  1. #pragma once
  2. #include <JuceHeader.h>
  3. #include "PluginScanClient.h"
  4. #include "SelectorComponentStyle.h"
  5. #include "UIUtils.h"
  6. #include "ConfigurePopover.hpp"
  7. class PluginScanStatusBar : public juce::Component,
  8. public juce::MessageListener,
  9. public juce::Button::Listener {
  10. public:
  11. PluginScanStatusBar(PluginScanClient& pluginScanClient,
  12. const SelectorComponentStyle& style);
  13. ~PluginScanStatusBar() override;
  14. void resized() override;
  15. void handleMessage(const juce::Message& message) override;
  16. void buttonClicked(juce::Button* buttonThatWasClicked) override;
  17. static constexpr int SPACER_WIDTH {10};
  18. static constexpr int NARROW_BUTTON_WIDTH {80};
  19. static constexpr int WIDE_BUTTON_WIDTH {130};
  20. static constexpr int ROW_HEIGHT {24};
  21. static constexpr int MAX_BUTTONS_WIDTH {
  22. NARROW_BUTTON_WIDTH + SPACER_WIDTH +
  23. NARROW_BUTTON_WIDTH + SPACER_WIDTH +
  24. WIDE_BUTTON_WIDTH + SPACER_WIDTH +
  25. WIDE_BUTTON_WIDTH + SPACER_WIDTH +
  26. WIDE_BUTTON_WIDTH + SPACER_WIDTH +
  27. NARROW_BUTTON_WIDTH + SPACER_WIDTH
  28. };
  29. static constexpr int MIN_STATUS_WIDTH {140};
  30. private:
  31. std::unique_ptr<juce::Label> statusLbl;
  32. std::unique_ptr<juce::TextButton> startScanBtn;
  33. std::unique_ptr<juce::TextButton> stopScanBtn;
  34. std::unique_ptr<juce::TextButton> rescanAllBtn;
  35. std::unique_ptr<juce::TextButton> rescanCrashedBtn;
  36. std::unique_ptr<juce::TextButton> viewCrashedBtn;
  37. std::unique_ptr<juce::TextButton> configureBtn;
  38. std::unique_ptr<ConfigurePopover> configurePopover;
  39. std::unique_ptr<UIUtils::PopoverComponent> crashedPluginsPopover;
  40. PluginScanClient& _pluginScanClient;
  41. void _updateButtonState(bool isScanRunning);
  42. void _createCrashedPluginsDialogue();
  43. void _createConfigureDialogue();
  44. };