Programowanie aplikacji mobilnych - Ćwiczenia 6 - Storage

Table of Contents

Termin oddania: 2022-04-27

Razem jest do zdobycia 25 pkt.

1. Zadanie 1 - storage (10pkt)

Dodaj funkcjonalność zapamiętywania przystanków w bazie danych. Przy każdym wyszukiwaniu ustawienia wyszukiwania są zapisywane w bazie danych. Po włączeniu aplikacji pokazują się zapisane wyszukiwania, najnowsze są u góry. Można usuwać zapisane wyszukiwania z listy.

2. Zadanie 2 - wiele przystanków (15pkt)

Dodaj funkcjonalność wyświetlania połączonych tablic odjazdów. Gdy wyświetla się pojedynczą tablicę odjazdów dla danego przystanku, widać przycisk "dodaj więcej". Gdy go wybierzemy, pojawia się na nowo interfejs wybierania przystanku. Wybieramy w nim drugi przystanek. Po wybraniu drugiego przystanku pojawia się tablica odjazdów, w której wyświetlane są odjazdy z obydwu tablic. Wpisy w tej tablicy są posortowane chronologicznie - tzn u góry pojawiają się te odjazdy, które są najbliższe w czasie (niezależnie od tego, którego przystanku dotyczą).

3. Przykład - SQLite w QML:

import QtQuick
import QtQuick.LocalStorage 2.0 as SQL

Window {
  width: 640
  height: 480
  visible: true
  title: qsTr("Hello World")

  Rectangle {
    color: "white"
    width: 200
    height: 100

    Text {
      text: "?"
      anchors.horizontalCenter: parent.horizontalCenter
      function findGreetings() {
        var db = SQL.LocalStorage.openDatabaseSync("ID-BAZY-DANYCH", "1.0", "Baza danych przykładowa na zajęcia", 1000000);

        db.transaction(
          function(tx) {
            // Create the database if it doesn't already exist
            tx.executeSql('CREATE TABLE IF NOT EXISTS Animals(name TEXT, type TEXT)');

            // Add (another) greeting row
            tx.executeSql('INSERT INTO Animals VALUES(?, ?)', [ 'reksio', 'dog' ]);

            // Show all added greetings
            var rs = tx.executeSql('SELECT * FROM Animals');

            var r = ""
            for (var i = 0; i < rs.rows.length; i++) {
              r += rs.rows.item(i).name + ", " + rs.rows.item(i).type + "\n"
            }
            text = r
          }
        )
      }
      Component.onCompleted: findGreetings()
    }
  }

}

Created: 2022-04-12 Tue 11:31

Validate