ProgressIndicatorRecipe::ProgressIndicatorRecipe(Container *parent) : CustomControl(parent) { // The recipe Container. Container *recipeContainer = new Container(); StackLayout *recipeLayout = new StackLayout(); recipeLayout->setLeftPadding(20.0); recipeLayout->setRightPadding(20.0); recipeContainer->setLayout(recipeLayout); // The introduction text. TextArea *introText = new TextArea(); introText->setText((const QString) "Drag the slider to change the ProgressIndicator"); introText->setEditable(false); introText->textStyle()->setColor(Color::Gray); introText->textStyle()->setBase(SystemDefaults::TextStyles::bodyText()); introText->setBottomMargin(100); mProgressIndicator = new ProgressIndicator(); mProgressIndicator->setFromValue(0); mProgressIndicator->setToValue(100); connect(mProgressIndicator, SIGNAL(valueChanged(float)), this, SLOT(onValueChanged(float))); // Create a Slider and connect a slot to the signal for Slider value changing. Slider *slider = new Slider(); slider->setTopMargin(100); slider->setFromValue(0); slider->setToValue(100); // Connect the Slider value directly to the value property of the ProgressIndicator. QObject::connect(slider, SIGNAL(valueChanging(float)), mProgressIndicator, SLOT(setValue(float))); // Create a Slider and connect a slot to the signal for Slider value changing. mButton = new Button(); mButton->setText((const QString) "Pause"); connect(mButton, SIGNAL(clicked()), this, SLOT(onClicked())); // Add the controls to the recipe Container and set it as root. recipeContainer->add(introText); recipeContainer->add(mProgressIndicator); recipeContainer->add(slider); recipeContainer->add(mButton); setRoot(recipeContainer); }
ActivityIndicatorRecipe::ActivityIndicatorRecipe(Container *parent) : CustomControl(parent) { // The recipe Container Container *recipeContainer = new Container(); recipeContainer->setLeftPadding(20.0); recipeContainer->setRightPadding(20.0); // The introduction text TextArea *introText = new TextArea(); introText->setText((const QString) "This is a milk boiling simulator recipe"); introText->setEditable(false); introText->textStyle()->setBase(SystemDefaults::TextStyles::bodyText()); introText->setBottomMargin(100); Container* smashContainer = new Container(); smashContainer->setLayout(new DockLayout()); // Create the unbroken egg ImageView mUnbroken = ImageView::create("asset:///images/stockcurve/egg.png"); // Center the unbroken egg image mUnbroken->setHorizontalAlignment(HorizontalAlignment::Center); mUnbroken->setVerticalAlignment(VerticalAlignment::Center); // Since this broken egg image is on top of the unbroken egg image, we can hide // this image by changing the opacity value of this image. mBroken = ImageView::create("asset:///images/stockcurve/broken_egg.png").opacity(0.0); // Center the brown egg image (same as unbroken one) mBroken->setHorizontalAlignment(HorizontalAlignment::Center); mBroken->setVerticalAlignment(VerticalAlignment::Center); mActivityIndicator = new ActivityIndicator(); mActivityIndicator->setPreferredSize(130, 130); smashContainer->add(mUnbroken); smashContainer->add(mActivityIndicator); smashContainer->add(mBroken); mButton = new Button(); mButton->setTopMargin(100); mButton->setText((const QString) "start cooking"); connect(mButton, SIGNAL(clicked()), this, SLOT(onClicked())); // Add the controls to the recipe Container and set it as root. recipeContainer->add(introText); recipeContainer->add(smashContainer); recipeContainer->add(mButton); setRoot(recipeContainer); }
Container *Intro::setUpExampleUI() { // A small example UI, illustrating some of the core controls. // The UI is arranged using a Container with a stack layout. Container *exampleUI = new Container(); StackLayout *exampleUILayout = new StackLayout(); exampleUI->setLayout(exampleUILayout); // A TextArea with text input functionality TextArea *exampleTextArea = new TextArea(); exampleTextArea->textStyle()->setBase(SystemDefaults::TextStyles::bodyText()); exampleTextArea->setHorizontalAlignment(HorizontalAlignment::Fill); // An example of a Slider Slider *exampleSlider = new Slider(); exampleSlider->setValue(0.5f); exampleSlider->setHorizontalAlignment(HorizontalAlignment::Left); exampleSlider->setVerticalAlignment(VerticalAlignment::Bottom); // A ToggleButton ToggleButton *exampleToggle = new ToggleButton(); exampleToggle->setHorizontalAlignment(HorizontalAlignment::Right); // A regular Button Button *exampleButton = new Button(); exampleButton->setText("Button"); // Container for the buttons Container *buttonContainer = new Container(); DockLayout *buttonContainerLayout = new DockLayout(); buttonContainer->setLayout(buttonContainerLayout); buttonContainer->setHorizontalAlignment(HorizontalAlignment::Fill); // Adding the buttons to the container. buttonContainer->add(exampleToggle); buttonContainer->add(exampleButton); // Add the Controls to the Container, the layouting is done using // layout properties and margins of each control (see code above). exampleUI->add(exampleTextArea); exampleUI->add(exampleSlider); exampleUI->add(buttonContainer); return exampleUI; }
ActivityIndicatorRecipe::ActivityIndicatorRecipe(Container *parent) : CustomControl(parent) { // The recipe Container. Container *recipeContainer = new Container(); StackLayout *recipeLayout = new StackLayout(); recipeLayout->setLeftPadding(20.0); recipeLayout->setRightPadding(20.0); recipeContainer->setLayout(recipeLayout); // The introduction text. TextArea *introText = new TextArea(); introText->setText((const QString) "This is a milk boiling simulator recepie"); introText->setEditable(false); introText->textStyle()->setColor(Color::Gray); introText->textStyle()->setBase(SystemDefaults::TextStyles::bodyText()); introText->setBottomMargin(100); Container* smashContainer = new Container(); smashContainer->setLayout(new DockLayout()); // This the big image that was taking during the night // it's at the same position as the day one, but further from the viewer. mUnbroken = ImageView::create("asset:///images/stockcurve/egg.png"); // Center it using dock layout info. mUnbroken->setLayoutProperties( DockLayoutProperties::create() .horizontal(HorizontalAlignment::Center) .vertical(VerticalAlignment::Center)); // Since this image is on top of the night one, we can hide the // night image with changing the opacity value of this image. mBroken = ImageView::create("asset:///images/stockcurve/broken_egg.png").opacity(0.0); // Center it using dock layout info. mBroken->setLayoutProperties( DockLayoutProperties::create() .horizontal(HorizontalAlignment::Center) .vertical(VerticalAlignment::Center)); mActivityIndicator = new ActivityIndicator(); mActivityIndicator->setPreferredSize(130, 130); smashContainer->add(mUnbroken); smashContainer->add(mActivityIndicator); smashContainer->add(mBroken); mButton = new Button(); mButton->setTopMargin(100); mButton->setText((const QString) "start cooking"); connect(mButton, SIGNAL(clicked()), this, SLOT(onClicked())); // Add the controls to the recipe Container and set it as root. recipeContainer->add(introText); recipeContainer->add(smashContainer); recipeContainer->add(mButton); setRoot(recipeContainer); }
InputRecipe::InputRecipe(Container *parent) : CustomControl(parent) { bool connectResult; Q_UNUSED(connectResult); ScrollView *scrollView = new ScrollView(); ScrollViewProperties* scrollViewProp = scrollView->scrollViewProperties(); scrollViewProp->setScrollMode(ScrollMode::Vertical); Container *recipeContainer = Container::create().left(80).right(80); // Label used to display the entered text mInputLabel = new Label(); mInputLabel->setMultiline(true); mInputLabel->setText((const QString) " "); mInputLabel->setHorizontalAlignment(HorizontalAlignment::Fill); mInputLabel->setBottomMargin(50.0); mInputLabel->textStyle()->setBase(SystemDefaults::TextStyles::bodyText()); // A multi line text input TextArea *textArea = new TextArea(); textArea->setHintText("Enter text into multi-line TextArea"); textArea->setPreferredHeight(140); textArea->setBottomMargin(50.0); textArea->textStyle()->setBase(SystemDefaults::TextStyles::bodyText()); textArea->setHorizontalAlignment(HorizontalAlignment::Fill); // Connect the TextArea textChanging signal to the onTextChanging function to update the text. connectResult = connect(textArea, SIGNAL(textChanging(const QString &)), this, SLOT(onTextChanging(const QString &))); Q_ASSERT(connectResult); // A single line input field with a clear functionality TextField *textField = new TextField(); textField->setHintText("Enter text into a single line TextField"); textField->setHorizontalAlignment(HorizontalAlignment::Fill); textField->setBottomMargin(50.0); // Connect the TextField textChanging signal to the onTextChanging function to update the text. connectResult = connect(textField, SIGNAL(textChanging(const QString &)), this, SLOT(onTextChanging(const QString &))); Q_ASSERT(connectResult); // A disabled text field TextField *disabledTextField = new TextField(); disabledTextField->setHintText("This is a disabled text field"); disabledTextField->setEnabled(false); disabledTextField->setHorizontalAlignment(HorizontalAlignment::Fill); disabledTextField->setBottomMargin(50.0); // Add the controls to the recipe Container and ScrollView and set it as the CustomControl root. scrollView->setContent(recipeContainer); recipeContainer->add(mInputLabel); recipeContainer->add(textField); recipeContainer->add(disabledTextField); recipeContainer->add(textArea); //recipeContainer->add(inputContainer); setRoot(scrollView); }
InputRecipe::InputRecipe(Container *parent) : CustomControl(parent) { Container *recipeContainer = new Container(); StackLayout *recipeLayout = new StackLayout(); recipeContainer->setLayout(recipeLayout); recipeLayout->setLeftPadding(80); recipeLayout->setRightPadding(80); // Label used to display the entered text. mInputLabel = new Label(); mInputLabel->setText((const QString) " "); mInputLabel->setLayoutProperties( StackLayoutProperties::create().horizontal(HorizontalAlignment::Fill)); mInputLabel->setBottomMargin(50.0); mInputLabel->textStyle()->setBase(SystemDefaults::TextStyles::bodyText()); // A multi line text input. TextArea *textArea = new TextArea(); textArea->setHintText("Enter text into multi-line TextArea"); textArea->setMinHeight(120.0f); textArea->setMaxHeight(200.0f); textArea->setPreferredHeight(0); textArea->setBottomMargin(50.0); textArea->textStyle()->setBase(SystemDefaults::TextStyles::bodyText()); textArea->setLayoutProperties( StackLayoutProperties::create().horizontal(HorizontalAlignment::Fill)); // Connect to the textChanged (to update text). connect(textArea, SIGNAL(textChanging(const QString &)), this, SLOT(onTextChanging(const QString &))); // A single line input field with a clear functionality. TextField *textField = new TextField(); textField->setHintText("Enter text into a single line TextField"); textField->setLayoutProperties( StackLayoutProperties::create().horizontal(HorizontalAlignment::Fill)); textField->setBottomMargin(50.0); // Connect to the textChanged (to update text). connect(textField, SIGNAL(textChanging(const QString &)), this, SLOT(onTextChanging(const QString &))); // A disabled text field. TextField *disabledTextField = new TextField(); disabledTextField->setHintText("This is a disabled text field"); disabledTextField->setEnabled(false); disabledTextField->setLayoutProperties( StackLayoutProperties::create().horizontal(HorizontalAlignment::Fill)); disabledTextField->setBottomMargin(50.0); // Add the controls to the recipe Container and set it as the CustomControl root. recipeContainer->add(mInputLabel); recipeContainer->add(textField); recipeContainer->add(disabledTextField); recipeContainer->add(textArea); //recipeContainer->add(inputContainer); setRoot(recipeContainer); }