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);
}
Esempio n. 2
0
SelectionRecipe::SelectionRecipe(Container * parent) :
        CustomControl(parent)
{
    Container *recipeContainer = new Container();
    StackLayout *recipeLayout = new StackLayout();
    recipeLayout->setLeftPadding(80);
    recipeLayout->setRightPadding(80);
    recipeContainer->setLayout(recipeLayout);

    Container *checkBoxContainer = new Container();

    Label *typeLabel = new Label();
    typeLabel->setText("Olive Type");
    typeLabel->textStyle()->setBase(SystemDefaults::TextStyles::titleText());
    typeLabel->textStyle()->setFontWeight(FontWeight::Bold);
    typeLabel->setBottomMargin(0);

    checkBoxContainer->add(typeLabel);

    // Since we want the CheckBox Control to also have a colored box to represent the
    // selection of which olives should be in the mix a CustomControl is used, see SelectionCheckBox.cpp.
    SelectionCheckBox *limonCello = new SelectionCheckBox();
    limonCello->setOliveColor(QVariant::fromValue<Color>(Color::fromARGB(0xff808000)));
    limonCello->setTitle("Limoncello");
    limonCello->setLayoutProperties(
            StackLayoutProperties::create().horizontal(HorizontalAlignment::Fill));

    SelectionCheckBox *greek = new SelectionCheckBox();
    greek->setOliveColor(QVariant::fromValue<Color>(Color::fromARGB(0xff698B22)));
    greek->setTitle("Greek");

    SelectionCheckBox *kalamata = new SelectionCheckBox();
    kalamata->setOliveColor(QVariant::fromValue<Color>(Color::fromARGB(0xff733D1A)));
    kalamata->setTitle("Kalamata");

    checkBoxContainer->add(limonCello);
    checkBoxContainer->add(greek);
    checkBoxContainer->add(kalamata);

    // The two menu selections are separated by a Divider.
    Divider *divider = new Divider();
    divider->setBottomMargin(60);

    Label *fillingLabel = new Label();
    fillingLabel->setText("Filling");
    fillingLabel->textStyle()->setBase(SystemDefaults::TextStyles::titleText());
    fillingLabel->textStyle()->setFontWeight(FontWeight::Bold);
    fillingLabel->setBottomMargin(9);

    // The RadioGroup is a Control that one use if only one option can
    // be selected at the time. RadioGroupOptions are added to the Control
    // and by listening for the onSelectedOptionChanged signal its possible
    // to keep track of what the current selection is.
    RadioGroup *radioGroup = new RadioGroup();
    radioGroup->setDividersVisible(false);

    Option *stoneOption = new Option();
    stoneOption->setText("Stone");

    Option *pimentoOption = new Option();
    pimentoOption->setText("Pimento");

    radioGroup->add(stoneOption);
    radioGroup->add(pimentoOption);

    // We listen for changes in selected options on the RadioGroup.
    connect(radioGroup, SIGNAL(selectedIndexChanged(int)), this, 
            SLOT(fillingSelectedOptionChanged(int)));

    // Add the controls.
    recipeContainer->add(checkBoxContainer);
    recipeContainer->add(divider);
    recipeContainer->add(fillingLabel);
    recipeContainer->add(radioGroup);

    setRoot(recipeContainer);
}
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);
    
    
}
RecipeItem::RecipeItem(Container *parent) :
        CustomControl(parent)
{
    // Dock layout with margins inside.
    Container *itemContainer = new Container();
    DockLayout *itemLayout = new DockLayout();
    itemContainer->setLayout(itemLayout);
    itemContainer->setPreferredWidth(768.0f);

    // A background Container that will hold a background image and a item content Container.
    Container *backgroundContainer = new Container();
    DockLayout *backgroundLayout = new DockLayout();
    backgroundContainer->setLayout(backgroundLayout);
    backgroundContainer->setLayoutProperties(
            DockLayoutProperties::create().horizontal(HorizontalAlignment::Center));

    // The white background item image.
    ImageView *bkgImage = ImageView::create("asset:///images/white_photo.png").preferredSize(768.0f,
            173.0f);

    // A Colored Container will be used to show if an item is highlighted.
    mHighlighContainer = new Container();
    mHighlighContainer->setBackground(Color::fromARGB(0xff75b5d3));
    mHighlighContainer->setLayoutProperties(DockLayoutProperties::create().horizontal(HorizontalAlignment::Center));
    mHighlighContainer->setOpacity(0.0);
    mHighlighContainer->setPreferredWidth(760.0f);
    mHighlighContainer->setPreferredHeight(168.0f);


    // Content Container, Image + text with padding to get alignment on background image.
    Container *contentContainer = new Container();
    StackLayout *contentLayout = new StackLayout();
    contentLayout->setLayoutDirection(LayoutDirection::LeftToRight);
    contentLayout->setLeftPadding(3.0f);
    contentContainer->setLayout(contentLayout);

    // The list item image, docked to the top, the actual image is set in updateItem.
    mItemImage =
            ImageView::create("asset:///images/white_photo.png").preferredSize(250.0f, 168.0f).layoutProperties(
                    StackLayoutProperties::create().vertical(VerticalAlignment::Top));

    // A list item label, docked to the center, the text is set in updateItem.
    mItemLabel = Label::create().text(" ").layoutProperties(
    StackLayoutProperties::create().vertical(VerticalAlignment::Center)).leftMargin(30.0f);
    mItemLabel->textStyle()->setBase(SystemDefaults::TextStyles::titleText());
    mItemLabel->textStyle()->setColor(Color::Black);
     
    // Add the Image and Label to the content.
    contentContainer->add(mItemImage);
    contentContainer->add(mItemLabel);

    // Add the background image and the content to the full item container.
    backgroundContainer->add(bkgImage);
    backgroundContainer->add(mHighlighContainer);
    backgroundContainer->add(contentContainer);

    // Finally add the background Container to the item Container.
    itemContainer->add(backgroundContainer);

    setRoot(itemContainer);
}
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);
}