AppListComponent::AppListComponent() : grid(new Grid(3, 2)), nextPageBtn(createImageButton("NextAppsPage", ImageFileFormat::loadFrom(assetFile("pageDownIcon.png")))), prevPageBtn(createImageButton("PrevAppsPage", ImageFileFormat::loadFrom(assetFile("pageUpIcon.png")))) { addChildComponent(nextPageBtn); addChildComponent(prevPageBtn); nextPageBtn->addListener(this); prevPageBtn->addListener(this); addAndMakeVisible(grid); }
/* Personalize class */ PersonalizePageComponent::PersonalizePageComponent(): background("lab_back","Background"), icons("lab_icons","Icons management"), opt_back("opt_back",""), opt_name("opt_name", "Name:"), opt_img("opt_img", "Icon path:"), opt_shell("opt_shell", "Command:"), add_btn("Add"), apply("Apply"), choose_back("back_box"), edit_back("back_field"), edit_name("name"), edit_icn("icn"), edit_shell("shell"), config(assetConfigFile("config.json")), json(JSON::parse(config)), success("suc", "Success !") { bgColor = Colour(0xffd23c6d); bgImage = createImageFromFile(assetFile("settingsBackground.png")); Font big_font(Font::getDefaultMonospacedFontName(), 25.f, 0); background.setFont(big_font); icons.setFont(big_font); Font small_font(Font::getDefaultMonospacedFontName(), 17.5f, 0); opt_back.setFont(small_font); opt_name.setFont(small_font); opt_img.setFont(small_font); opt_shell.setFont(small_font); success.setFont(big_font); addAndMakeVisible(background); addAndMakeVisible(icons); addAndMakeVisible(add_btn); addAndMakeVisible(apply); addAndMakeVisible(success); apply.addListener(this); add_btn.addListener(this); /* ComboBox */ choose_back.addItem("Default",1); choose_back.addItem("Color",2); choose_back.addItem("Image",3); choose_back.setSelectedId(1); choose_back.addListener(this); addAndMakeVisible(choose_back); ////////////// /* + */ edit_back.setColour(TextEditor::ColourIds::textColourId, Colour::greyLevel(0.f)); addAndMakeVisible(edit_back); addAndMakeVisible(opt_back); addAndMakeVisible(opt_name); addAndMakeVisible(opt_img); addAndMakeVisible(opt_shell); addAndMakeVisible(edit_name); addAndMakeVisible(edit_icn); addAndMakeVisible(edit_shell); showAddComponents(false); success.setVisible(false); // create back button backButton = createImageButton("Back", createImageFromFile(assetFile("backIcon.png"))); backButton->addListener(this); backButton->setAlwaysOnTop(true); addAndMakeVisible(backButton); }
LibraryPageComponent::LibraryPageComponent() : AppListComponent(), backButton(createImageButton("Back", createImageFromFile(assetFile("nextIcon.png")))) { bgColor = Colour(PokeLookAndFeel::chipPurple); backButton->addListener(this); backButton->setAlwaysOnTop(true); addAndMakeVisible(backButton); }
int GfuiMenuCreateImageButtonControl(void* hscr, void* hparm, const char* pszName, void* userDataOnPush, tfuiCallback onPush, void* userDataOnFocus, tfuiCallback onFocus, tfuiCallback onFocusLost, bool bFromTemplate, const char* tip, int x, int y, int width, int height) { std::string strControlPath = bFromTemplate ? GFMNU_SECT_TEMPLATE_CONTROLS"/" : GFMNU_SECT_DYNAMIC_CONTROLS"/"; strControlPath += pszName; return createImageButton(hscr, hparm, strControlPath.c_str(), userDataOnPush, onPush, userDataOnFocus, onFocus, onFocusLost, bFromTemplate, tip, x, y, width, height); }
SettingsPageBluetoothComponent::SettingsPageBluetoothComponent() { pageStack = new PageStackComponent(); addAndMakeVisible(pageStack); // create device list "page" deviceListPage = new Grid(1, 4); for (auto btDevice : getBluetoothStatus().devices) { auto item = new BluetoothDeviceListItem(btDevice, &icons); item->addListener(this); deviceListItems.add(item); deviceListPage->addItem(item); } //btIcon = new ImageComponent("BT Icon"); //btIcon->setImage( // ImageFileFormat::loadFrom(BinaryData::bluetoothIcon_png, BinaryData::bluetoothIcon_pngSize)); //addAndMakeVisible(btIcon); // create back button backButton = createImageButton( "Back", createImageFromFile(assetFile("backIcon.png"))); backButton->addListener(this); backButton->setAlwaysOnTop(true); addAndMakeVisible(backButton); // create device connection "page" connectionPage = new Component("Connection Page"); connectionLabel = new Label("Connected", "Connection Label"); connectionLabel->setJustificationType(juce::Justification::centred); connectionLabel->setFont(26); connectionPage->addAndMakeVisible(connectionLabel); connectionButton = new TextButton("Connection Button"); connectionButton->setButtonText("Connect"); connectionButton->addListener(this); connectionPage->addAndMakeVisible(connectionButton); //icons.checkIcon = Drawable::createFromImageData(BinaryData::check_png, BinaryData::check_pngSize); icons.arrowIcon = Drawable::createFromImageFile(assetFile("backIcon.png")); auto xf = AffineTransform::identity.rotated(M_PI); icons.arrowIcon->setTransform(xf); }
int GfuiMenuCreateButtonControl(void* hscr, void* hparm, const char* pszName, void* userDataOnPush, tfuiCallback onPush, void* userDataOnFocus, tfuiCallback onFocus, tfuiCallback onFocusLost) { std::string strControlPath = GFMNU_SECT_DYNAMIC_CONTROLS"/"; strControlPath += pszName; const char* pszType = GfParmGetStr(hparm, strControlPath.c_str(), GFMNU_ATTR_TYPE, ""); if (!strcmp(pszType, GFMNU_TYPE_TEXT_BUTTON)) return createTextButton(hscr, hparm, strControlPath.c_str(), userDataOnPush, onPush, userDataOnFocus, onFocus, onFocusLost); else if(!strcmp(pszType, GFMNU_TYPE_IMAGE_BUTTON)) return createImageButton(hscr, hparm, strControlPath.c_str(), userDataOnPush, onPush, userDataOnFocus, onFocus, onFocusLost); else GfLogError("Failed to create button control '%s' of unknown type '%s'\n", pszName, pszType); return -1; }
SettingsPageComponent::SettingsPageComponent(LauncherComponent* lc) { bgColor = Colour(0xffd23c6d); bgImage = createImageFromFile(assetFile("settingsBackground.png")); mainPage = new Component(); addAndMakeVisible(mainPage); mainPage->toBack(); ChildProcess child{}; /* Adding the personalize button */ advancedPage = new AdvancedSettingsPage(lc); advanced = new TextButton("Advanced Settings"); advanced->addListener(this); addAndMakeVisible(advanced); brightness = 8; #if JUCE_LINUX // Get initial brightness value if(child.start("cat /sys/class/backlight/backlight/brightness")) { String result{child.readAllProcessOutput()}; brightness = result.getIntValue(); }; #endif volume = 90; #if JUCE_LINUX // Get initial volume value StringArray cmd{ "amixer","sget","Power Amplifier" }; if(child.start(cmd)) { const String result (child.readAllProcessOutput()); int resultIndex = result.indexOf("[")+1; child.waitForProcessToFinish (5 * 1000); char buff[4]; for (int i = 0; i<4; i++) { char c = result[resultIndex+i]; if( c >= '0' && c <= '9' ) { buff[i]=c; } else { buff[i]=(char)0; } } String newVol = String(buff); volume = newVol.getIntValue(); } #endif ScopedPointer<Drawable> brightLo = Drawable::createFromImageFile(assetFile("brightnessIconLo.png")); ScopedPointer<Drawable> brightHi = Drawable::createFromImageFile(assetFile("brightnessIconHi.png")); screenBrightnessSlider = ScopedPointer<IconSliderComponent>(new IconSliderComponent(*brightLo, *brightHi)); screenBrightnessSlider->addListener(this); screenBrightnessSlider->slider->setValue(1+(brightness-0.09)*10); ScopedPointer<Drawable> volLo = Drawable::createFromImageFile(assetFile("volumeIconLo.png")); ScopedPointer<Drawable> volHi = Drawable::createFromImageFile(assetFile("volumeIconHi.png")); volumeSlider = ScopedPointer<IconSliderComponent>(new IconSliderComponent(*volLo, *volHi)); volumeSlider->addListener(this); volumeSlider->slider->setValue(volume); // create back button backButton = createImageButton( "Back", createImageFromFile(assetFile("backIcon.png"))); backButton->addListener(this); backButton->setAlwaysOnTop(true); addAndMakeVisible(backButton); wifiCategoryItem = new WifiCategoryItemComponent(); wifiCategoryItem->button->addListener(this); addAndMakeVisible(wifiCategoryItem); getWifiStatus().addListener(wifiCategoryItem); addAndMakeVisible(screenBrightnessSlider); addAndMakeVisible(volumeSlider); wifiPage = new SettingsPageWifiComponent(); }
PowerPageComponent::PowerPageComponent() { bgColor = Colours::black; bgImage = createImageFromFile(assetFile("powerMenuBackground.png")); mainPage = new Component(); addAndMakeVisible(mainPage); mainPage->toBack(); ChildProcess child{}; felPage = new PowerFelPageComponent(); // create back button backButton = createImageButton( "Back", createImageFromFile(assetFile("nextIcon.png"))); backButton->addListener(this); backButton->setAlwaysOnTop(true); addAndMakeVisible(backButton); powerOffButton = new TextButton("Power OFF"); powerOffButton->setButtonText("Shutdown"); powerOffButton->addListener(this); addAndMakeVisible(powerOffButton); rebootButton = new TextButton("Reboot"); rebootButton->setButtonText("Reboot"); rebootButton->addListener(this); addAndMakeVisible(rebootButton); sleepButton = new TextButton("Sleep"); sleepButton->setButtonText("Sleep"); sleepButton->addListener(this); addAndMakeVisible(sleepButton); felButton = new TextButton("Fel"); felButton->setButtonText("Flash Software"); felButton->addListener(this); addAndMakeVisible(felButton); powerSpinnerTimer.powerComponent = this; Array<String> spinnerImgPaths{"wait0.png","wait1.png","wait2.png","wait3.png","wait4.png","wait5.png","wait6.png","wait7.png"}; for(auto& path : spinnerImgPaths) { auto image = createImageFromFile(assetFile(path)); launchSpinnerImages.add(image); } powerSpinner = new ImageComponent(); powerSpinner->setImage(launchSpinnerImages[0]); addChildComponent(powerSpinner); buildName = "Build: "; auto releaseFileName = absoluteFileFromPath( "/etc/os-release" ); File releaseFile( releaseFileName ); if (releaseFile.exists()) { auto fileStr = releaseFile.loadFileAsString(); auto lines = split(fileStr, "\n"); if (lines.size() < 9) DBG(__func__ << ": No release information in /etc/os-release"); else { auto releaseKv = split(lines[8],"="); std::vector<String> releaseV(releaseKv.begin()+1,releaseKv.end()); for (const auto& val : releaseV) { // WIP: misses the removed equals buildName += val; } DBG(buildName); } } #if JUCE_MAC buildName = "Build: MacOsX Dev Build"; #endif buildNameLabel = new Label("Build Name"); buildNameLabel->setText(buildName, NotificationType::dontSendNotification); buildNameLabel-> setFont(16); buildNameLabel->setJustificationType(Justification::centred); addAndMakeVisible(buildNameLabel); //Create rev Text String rev_string = std::to_string(rev_number); rev = new Label("rev", ("v0.0."+rev_string)); addAndMakeVisible(rev); rev->setAlwaysOnTop(true); rev->setFont(Font(20.f)); //Update button updateButton = new TextButton("Update"); updateButton->setButtonText("Check for updates"); updateButton->setAlwaysOnTop(true); updateButton->addListener(this); addAndMakeVisible(updateButton); updateButton->setVisible(false); //Update window updateWindow = new AlertWindow("Checking for updates", "Downloading informations, please wait...", AlertWindow::AlertIconType::NoIcon); addAndMakeVisible(updateWindow, 10); updateWindow->setAlwaysOnTop(true); updateWindow->setVisible(false); }