#Gurra is a QML ui framework, it has many easy-to-use components and unified structure

##Installation

Download app.tar.gz template, extract it and start coding :)

##Reference App AnaPage AnaView AppColors AppUI Avatar Background Badge BigIcon DialogParams Fonts HorizontalLine Icon IconButton IconFonts IconLabel Icons Jumbotron Label Lazy LazyPage ListItem Loading Margins PageTitle Params Query ResourceApi SimplePromise Sizes Spacing Thumbnail TimeLine TimeLineItem Uploader Urls VerticalLine

##Getting Started

##App Structure

.
|__ App
|	|__ android
|   |__ ios
|	|__ assets
|	|	|__fonts
|	|	|__Gurra
|	|	|__images
|	|	|__languages
|	|	|__sounds
|	|__ qml
|	|	|__	customs
|	|	|	|__	api
|	|	|		|__ moreApi.qml
|	|	|	|__ Api.qml
|	|	|	|__ Colors.qml
|	|	|	|__ Fonts.qml
|	|	|	|__ Headers.qml
|	|	|	|__ Logic.qml
|	|	|	|__ Models.qml
|	|	|	|__ Pages.qml
|	|	|	|__ Params.qml
|	|	|	|__ Settings.qml
|	|	|	|__ SoundEffects.qml
|	|	|	|__ Urls.qml
|	|   |__ pages
|	|   |	|__ components
|	|   |	|__ delegates
|	|   |	|__ Home.qml
|	|	|__ main.qml
|   |__ src
|   |__ app.pro
|   |__ app.pro.user
|   |__ main.cpp
|   |__ qml.qrc
|   |__ qtquickcontrols2.conf

##Example App

main.qml

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Controls.Material 2.0
import Org.Yasser.Gurra 1.0
import Gurra 1.0

import "qrc:/qml"
import "qrc:/qml/pages"

import "customs" as Custom

App
{
    id: app
    title: qsTr("Gurra")
    view: mainStack

    api: Custom.Api{}
    logic: Custom.Logic{}
    pages: Custom.Pages{}
    colors: Custom.Colors{}
    urls: Custom.Urls{}
    headers: Custom.Headers{}
    models: Custom.Models{}
    settings: Custom.Settings{}
    params: Custom.Params{}
    fonts: Custom.Fonts{}
    soundEffects: Custom.SoundEffects {}

    production: true


    // delay creating lazy items until all app Components are ready
    Timer {
        interval: 500
        running: true
        onTriggered: {
            app.ready(function(){
                console.log("app ready")
            })
        }
    }

    StackView
    {
        id: mainStack
        anchors.fill: parent

        Component.onCompleted: {
            push(app.pages.home)
        }
    }
}

Home.qml

import QtQuick 2.7
import QtQuick.Layouts 1.1
import QtQuick.Controls 2.0
import QtQuick.Controls.Material 2.0

import Gurra 1.0

AnaPage
{

    Grid
    {
        id: grid
        anchors.centerIn: parent
        layoutDirection: Qt.RightToLeft

        columns: 3
        rowSpacing: app.spacing.xLarge
        columnSpacing: app.spacing.xLarge

        BigIcon {
            icon.icon: app.icons.fontAwesome.check
            label.text: qsTr("Auctions")
            onClicked: app.pushPage(app.pages.auctionTypeSelect)
        }

        BigIcon {
            icon.icon: app.icons.fontAwesome.th_list
            label.text: qsTr("Listings")
            onClicked: {
                app.pages.listings.params.search_query = ""
                app.pushPage(app.pages.listings)
            }
        }

        BigIcon {
            icon.icon: app.icons.fontAwesome.search
            label.text: qsTr("Search")
            onClicked: app.pushPage(app.pages.search)
        }

        BigIcon {
            icon.icon: app.icons.fontAwesome.user
            label.text: qsTr("My Account")
            onClicked: {
                if(app.settings.member_id === 0)
                    app.pushPage(app.pages.loginPage)
                else
                    app.pushPage(app.pages.userAccountPage)
            }
        }

        BigIcon {
            icon.icon: app.icons.fontAwesome.heart
            label.text: qsTr("Watchings")
            onClicked: {
                if(app.settings.member_id === 0)
                    app.pushPage(app.pages.loginPage)
                else
                    app.pushPage(app.pages.watchings)
            }
        }

        BigIcon {
            icon.icon: app.icons.fontAwesome.list
            label.text: qsTr("Rules")
            onClicked: {
                app.pages.tosPage.params.tos = false
                app.pushPage(app.pages.tosPage)
            }
        }

        BigIcon {
            icon.icon: app.icons.fontAwesome.ticket
            label.text: qsTr("Tos")
            onClicked: {
                app.pages.tosPage.params.tos = true
                app.pushPage(app.pages.tosPage)
            }
        }

        BigIcon {
            icon.icon: app.icons.fontAwesome.envelope
            label.text: qsTr("Contact Us")
            onClicked: app.pushPage(app.pages.contactUsPage)
        }

        BigIcon {
            icon.icon: app.icons.fontAwesome.info
            label.text: qsTr("About")
            onClicked: app.pushPage(app.pages.aboutPage)
        }
    }
}

##Reference

##License Gurra is freely distributable under the terms of the MIT license.