
Готовое_КР_Заметки
.pdf
Продолжение листинга 2
// Кнопка сохранения
Button { color:"black" text: "Сохранить"
width: (parent.width - 2*Theme.paddingMedium) / 3 onClicked: {
if (titleField.text.length > 0 || !isNewNote) {
var finalTitle = isNewNote ? titleField.text :
noteTitle;
DatabaseHandler.saveNote(db, finalTitle,
contentArea.text);
pageStack.pop();
}
}
}
// Кнопка удаления (только для существующих заметок) Button {
color:"black" text: "Удалить"
width: (parent.width - 2*Theme.paddingMedium) / 3 visible: !isNewNote
onClicked: remorseDelete.execute("Удаляем заметку", function()
{
DatabaseHandler.deleteNote(db, noteTitle); pageStack.pop();
})
}
// Кнопка закрытия
Button {
text: "Закрыть" color:"black"
width: (parent.width - 2*Theme.paddingMedium) / 3 onClicked: pageStack.pop()
}
}
}
}
RemorsePopup { id: remorseDelete }
}
34

Приложение В
Листинг 3 – DatabaseHandler.js
.pragma library
.import QtQuick.LocalStorage 2.0 as LS
function initializeDatabase() {
var db = LS.LocalStorage.openDatabaseSync("NotesDB", "1.0", "Notes Storage", 100000);
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS Notes(' + 'id INTEGER PRIMARY KEY AUTOINCREMENT, ' + 'title TEXT UNIQUE, ' +
'content TEXT, ' +
'created_at DATETIME DEFAULT CURRENT_TIMESTAMP)');
});
return db;
}
function saveNote(db, title, content) { db.transaction(function(tx) {
tx.executeSql('INSERT OR REPLACE INTO Notes(title, content, created_at) VALUES(?,?,?)',
[title, content, new Date().toISOString()]);
});
}
function getNote(db, title) { var result = "";
db.transaction(function(tx) {
var rs = tx.executeSql('SELECT content FROM Notes WHERE title=?', [title]);
if (rs.rows.length > 0) result = rs.rows.item(0).content;
});
return result;
}
function getAllTitles(db) { var titles = [];
db.transaction(function(tx) {
var rs = tx.executeSql('SELECT title FROM Notes ORDER BY title'); for (var i = 0; i < rs.rows.length; i++) {
titles.push(rs.rows.item(i).title);
}
});
return titles;
function getNotesCount(db) { var count = 0;
db.transaction(function(tx) {
var rs = tx.executeSql('SELECT COUNT(*) FROM Notes');
if (rs.rows.length > 0) count = rs.rows.item(0)['COUNT(*)'];
});
return count;
}
}
function deleteNote(db, title) { db.transaction(function(tx) {
tx.executeSql('DELETE FROM Notes WHERE title = ?', [title]);
});
}
35