QField Feature Requests

Plugin API to save a feature with the form's defaults and constraints
As a plugin developer, I want a documented way to create and save a feature with the layer's default values and constraints applied, as QField's form does, so that guided data-collection plugins keep working after QField updates. Example: our field teams map plots and record farm work with a plugin that guides them step by step. One button asks what they want to record, records the shape (an averaged point, a walked boundary or corners), then asks one question per screen and saves. The layer's form holds the rules we rely on: a default value that builds a plot ID from the collector's code, the farm and a running number; a hard constraint that blocks saving when the collector code is missing; a soft constraint that warns when a new boundary overlaps one already recorded. To get those rules applied, the plugin creates its own QfFeatureModel and QfAttributeFormModel and calls create(). That works well, but these classes are not part of the documented plugin API, so we currently have turn off QField updates on the phones and test each new version before allowing it. What would make this stable: Document (and keep in the plugin tests) creating, filling and saving a feature with defaults and constraints applied, for example a small helper that takes a layer, a geometry and attribute values and returns the constraint results. A documented call to open the add-feature form for a layer with a prepared geometry, with a signal when it is saved or cancelled, as a fallback. A way for a plugin to ask for positions to keep coming while the screen is off, so a boundary can be walked with the phone in a pocket. Happy to test pre-release builds.
0
Fix/Enhance Multi-Select Lists: Float "Remember Last Value" selections to the top on new features
What is the problem you are trying to solve? In QField, multi-select Value Relation dropdowns successfully display and group checked items when reviewing a previously saved/plotted feature. However, this behavior breaks when creating a brand-new feature while utilizing the "Remember Last Value" pin. When a field worker creates a new feature, the data carried over from the previous feature is active in the background cache, but QField treats the new record as completely blank visually. The carried-over items remain scattered throughout long lookup lists (e.g., a list of mixed species in forestry or biodiversity monitoring). Users are forced to scroll extensively through the entire list just to see what data has carried over or is already checked. In mixed environments (like woodlands containing a combination of conifer, broadleaf, native, and non-native trees simultaneously), splitting the data into cascading parent/child dropdowns isn't a viable workaround. What is your proposed solution? Update the user interface behavior within multi-select lookups so that carried-over data from the "Remember Last Value" cache is treated identically to pre-existing row data. When a new feature form opens, these active selections should automatically pin to the absolute top of the list view. This enhancement should: • Create a visual partition on new features: Group all carried-over/active selections at the very top of the widget immediately upon form creation, with the remaining unchecked options listed cleanly below them. • Preserve project sorting: Maintain the project's underlying sort order (such as alphabetical order or custom priority columns configured in QGIS Desktop) within those two separate blocks. • Update dynamically: Refresh the list order cleanly every time the dropdown widget is tapped open. What is the value of this feature? This fixes a major UX consistency gap between editing old features and creating new ones. It aligns QField with modern mobile UX standards, dramatically reduces form scrolling during rapid data collection, and eliminates critical data validation errors caused by carried-over selections being hidden deep within large lookup datasets.
0
Linux ARM64 AppImage release
For more versatile usage of the QField during field works it would be greate, if we could use it on arm64 devices with GNU linux distros - as Raspberry Pi devices or ARM64 (aarch64) based laptops. An ARM64 AppImage is possible to create for linux - e. g. FreeCAD developers created AppImage for ARM64 ( https://www.freecad.org/downloads.php ). I started more times to build QField on my Raspberry Pi, but it always stopped on some Qt dependencies - nor VCPKG solution cant handle these dependences (I quess if it could be set to deal with this?). I'm not a programmer, but who is more experienced can go further. ############################################################## Some notes from my last attempt to build it on fresh rasbperry pi os trixie on raspberry pi 5 ############################################################## ## Build on the master branch after c9f5523 commit VCPKG informs that 'arm64-linux' is community triplet, which is not built in the curated registry and is thus less likely to succeed. sudo apt install cmake # You need to have cmake installed. ## Dependencies for configuration (cmake -S QField -B build) sudo apt install bison flex autoconf # without it failed on 17th package 'libpq' sudo apt install autoconf-archive libtool # without it failed on 23rd package 'gperf' After that it failed on 84th package 'qtbase' this solution helped: sudo apt install qt6-base-dev and by https://www.interelectronix.com/cross-compile-qt-610-raspios-trixie.html this 2 rows sudo apt-get install libboost-all-dev libudev-dev libinput-dev libts-dev libmtdev-dev libjpeg-dev libfontconfig1-dev libssl-dev libdbus-1-dev libglib2.0-dev libxkbcommon-dev libegl1-mesa-dev libgbm-dev libgles2-mesa-dev mesa-common-dev libasound2-dev libpulse-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-alsa libvpx-dev libsrtp2-dev libsnappy-dev libnss3-dev "^libxcb.*" flex bison libxslt-dev ruby gperf libbz2-dev libcups2-dev libatkmm-1.6-dev libxi6 libxcomposite1 libfreetype6-dev libicu-dev libsqlite3-dev libxslt1-dev sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libx11-dev freetds-dev libsqlite3-dev libpq-dev libiodbc2-dev firebird-dev libxext-dev libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm4 libxcb-icccm4-dev libxcb-sync1 libxcb-sync-dev libxcb-render-util0 libxcb-render-util0-dev libxcb-xfixes0-dev libxrender-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-glx0-dev libxi-dev libdrm-dev libxcb-xinerama0 libxcb-xinerama0-dev libatspi2.0-dev libxcursor-dev libxcomposite-dev libxdamage-dev libxss-dev libxtst-dev libpci-dev libcap-dev libxrandr-dev libaudio-dev libxkbcommon-x11-dev gdbserver but maybe only this is enough?: sudo apt-get install '^libxcb.*-dev'libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev libegl1-mesa-dev after that it failed on 86th package 'qtshadertools' - Reported erros are in the log files are: "Package 'xkbcommon-x11' not found" "The link interface of target "Qt6::QXcbEglIntegrationPlugin" contains: Qt6::XcbQpaPrivate but the target was not found", etc. - nothing of the next rows helped sudo apt install qt6 dev* sudo apt install libxcb*dev sudo apt install libghc-xcb-types-dev sudo apt install libxcb sudo apt install lib qt6* sudo apt install xkb sudo apt install qtcreator sudo apt install -qt6 sudo apt install qt6* sudo apt install libx11* After some googling it looks, that problems with finding xcb and xkb packages are not rare during qt compiling some of solutions needs editing cmake files, which I'm not experienced with.
1
Load More
→