-
-
Notifications
You must be signed in to change notification settings - Fork 273
Add project creation ui and new welcome screen. #6656
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
🎉 Ta-daaa, freshly created APKs are available for 009e318: arm64-android |
import Theme | ||
|
||
Page { | ||
id: createNewProject |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
id: createNewProject | |
id: projectCreation |
onCreate: projectConfig => { | ||
console.log(JSON.stringify(projectConfig)); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We will go down a different path, you can remove that.
Page { | ||
id: createNewProject | ||
|
||
signal create(var projectConfig) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can remove that.
header: QfPageHeader { | ||
title: qsTr("Create a new project") | ||
|
||
backgroundFill: false |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❤️
anchors.top: parent.top | ||
anchors.left: parent.left | ||
anchors.right: parent.right | ||
anchors.bottom: createProjectButton.top |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can go for anchors.fill: parent
What we want here is for the create project button container to sit on top of the flickable view, with a semi transparent background that's opaque enough not to be distracting but transparent enough to see any content that's not in the visible part (like we do with the dashboard)
TextField { | ||
id: baseMapURL | ||
font: Theme.defaultFont | ||
placeholderText: text == "" && !focus ? "e.g., https://your-map-service.com/{z}/" : "" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
placeholderText: text == "" && !focus ? "e.g., https://your-map-service.com/{z}/" : "" | |
placeholderText: text == "" && !focus ? "e.g., https://your-map-service.com/{z}/{x}/{y}.png" : "" |
anchors.right: parent.right | ||
|
||
Label { | ||
text: qsTr("Quickly capture notes with date, time, and comments. Optionally, attach images to enrich your notes.") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
text: qsTr("Quickly capture notes with date, time, and comments. Optionally, attach images to enrich your notes.") | |
text: qsTr("Quickly capture notes with date, time, and comments. Optionally, attach multimedia items such as images and videos to enrich your notes.") |
} | ||
} | ||
|
||
QfButton { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here we'll want a floating Rectangle {} over the configuration layout with a semi opaque background, within which this single QfButton will exist.
"name": projectName.text, | ||
"isCustomBasemapSelected": isCustomBasemap, | ||
"basemap": selectedBasemap, | ||
"takeNotes": takeNotesGroupBox.checked, | ||
"takeMediaAttachments": takeMediaCheckBox.checked, | ||
"trackPosition": trackPositionGroupBox.checked, | ||
"autoTrackPosition": autoTrackPositionCheckBox.checked, | ||
"useCloud": qfieldCloudGroupBox.checked |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please align the keys with that: #6652
For cloud, name is "use_cloud"
"iconColor": Theme.mainColor, | ||
"action": function () { | ||
platformUtilities.requestStoragePermission(); | ||
openLocalDataPicker(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For the sake of harmonizing function names, let's go for showLocalDataPicker();
🚀 Description
This pull request introduces major enhancements to QField, focusing on improving the user experience and the project creation workflow.
⚠️ Note: It's not fully functional yet; upcoming PRs will connect the core logic to this UI.
✨ Key Changes
Redesigned Welcome Screen
Updated to include the new "Create new project" button for easier access.
Project Creation UI
Provides an intuitive interface for creating new projects with the following options:
Introduce
QfExpandableGroupBox.qml
Collapsible and expandable group box with check property and automatic height, used across the project creation UI.
🎬 Demo
Screencast.From.2025-09-19.17-38-19.webm