Привет! Данная статья является продолжением серии статей, посвященных разработке под мобильную платформу Sailfish OS. На этот раз мы решили рассказать о приложении для контроля финансов, которое позволяет пользователю вести журнал доходов и расходов, а также откладывать средства на достижение целей.
Стоит отметить, что данное приложение является одним из победителей хакатона Sailfish OS в Ярославле, организованного компанией «Открытая мобильная платформа» и ассоциацией FRUCT.
Описание
Наше приложение включает в себя два отдельных модуля.Первый из них предназначен для работы непосредственно с операциями.
Второй позволяет пользователю создавать цели и отслеживать прогресс сбережений.
Модуль работы с транзакциями позволяет пользователю фиксировать доходы и расходы, а также отображать эти транзакции в виде журнала:
|
|
Эта классификация помогает пользователю легче ориентироваться в своих финансах.
Помимо стандартных категорий пользователь может добавлять свои, тем самым адаптируя приложение под свой образ жизни.
Кроме того, в приложении предусмотрена возможность просмотра статистики за различные периоды времени, чтобы пользователь мог проанализировать свои расходы и в дальнейшем оптимизировать их:
|
|
Пользователь может зафиксировать в приложении информацию о том, сколько денег он откладывает на ту или иную цель,
и отслеживать прогресс, тем самым дополнительно мотивируя себя на выполнение поставленных задач:
Работа с базой данных
В данной статье было решено сосредоточиться на работе с базой данных непосредственно из QML-файлов.Для реализации данной задачи была использована библиотека Локальное хранилище , что позволяет организовать доступ к базам данных SQLite, хранящимся на устройстве.
Чтобы отделить логику работы с базой данных от элементов представления, был создан QML-объект доступа к данным (объект доступа к данным или просто ДАО ), управляет всеми подключениями к базе данных и предоставляет более удобный интерфейс для работы с данными.
Подключения к базе данных открываются с использованием глобального одноэлементного объекта.
Локальное хранилище .
На нем вызывается метод openDatabaseSync() , который напрямую открывает соединение или создает базу, если она не была создана ранее.
Все соединения автоматически закрываются во время сборки мусора.
Ниже приведена часть кода файла Dao.qml:
Транзакции и запросы при работе с базой данных оформлены как JS-функции: получить результаты требуют функций обратного вызова, которые вызываются после завершения операций.import QtQuick 2.0 import QtQuick.LocalStorage 2.0 Item { Component.onCompleted: { database = LocalStorage.openDatabaseSync("SaveYourMoneyDatabase", "1.0") } //.
}
Вы можете вызывать методы полученного объекта соединения.
чтениеТранзакция() И сделка() , которые создают транзакцию для чтения или изменения данных и передают ее функции обратного вызова, указанной в качестве аргумента этих методов.
Методы можно вызывать внутри этих функций.
выполнитьSql() , содержащий запросы SQL.
В нашем приложении нам нужно было создать базу данных с тремя таблицами: Таблица транзакций для хранения транзакций, Таблица целей для целей и КатегорииСтол по категориям операций: Component.onCompleted: {
database = LocalStorage.openDatabaseSync("SaveYourMoneyDatabase", "1.0")
database.transaction(function(tx) {
tx.executeSql("CREATE TABLE IF NOT EXISTS TransactionsTable(
id INTEGER PRIMARY KEY AUTOINCREMENT,
date TEXT,
sum INTEGER,
category_id INTEGER,
type INTEGER,
goal_id INTEGER,
description TEXT)");
tx.executeSql("CREATE TABLE IF NOT EXISTS CategoriesTable(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
type INTEGER)");
tx.executeSql("CREATE TABLE IF NOT EXISTS GoalTable(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
sum INTEGER,
isFinished INTEGER)");
Теги: #разработка мобильных приложений #sailfish os #qml #SQLite #Разработка мобильных приложений #Qt #Разработка для Sailfish OS
-
Инди-Игра: Фильм
19 Oct, 24 -
Приносит Ли Медведев Победы?
19 Oct, 24 -
Uinux: Менеджеры Фреймовых Окон
19 Oct, 24 -
Почему Joomla Терпит Неудачу В России
19 Oct, 24