Klávesové zkratky na tomto webu - základní
Přeskočit hlavičku portálu

Programování pro PalmOS počítače krok za krokem (59)

aktualizováno 
Dnes si do naší aplikace zařadíme kompletní obsluhu menu a drobným domácím úkolem ukončíme čtvrtou kapitolu.

4.30 Obsluha menu v naší aplikaci

V minulém dílu jsme si napsali funkci, která ošetřila položky menu na kartě Editace. Zbývá jen začlenit ji do aplikace. V každé funkci formuláře musíme zpracovat všechny příkazy uživatelské nabídky, která je s formulářem spojena. Navrhovaný způsob samozřejmě není jediný možný, ale pro uživatele je nejpřehlednější. Příklad zapojení funkce FunkceMenuKartyEditace() do jedné funkce formuláře je v tabulce:

static Boolean UdalostVystupnihoFormulare(EventPtr udalost)
{
    Boolean zpracovano = false;
    Int16 rozdil;

    switch(udalost->eType)
    {

    ...

        case menuEvent:

            zpracovano = FunkceMenuKartyEditace(udalost->data.menu.itemID);

            if(!zpracovano)
            {
                    // Byla zvolena polozka menu, ale neslo 
                    // o polozku na karte "Editace"

                switch(udalost->data.menu.itemID)
                {
                    case PolozkaMenuOProgramu:

                            // Po zvoleni prislusne polozky menu zavolame
                            // funkci napovedy

                        FrmHelp(TextOProgramu);
                        zpracovano = true;
                        break;

                    default:
                        break;
                }
            }
            break;

    ...

    }

    return zpracovano;
}

V každé funkci formuláře, ve které se vyskytuje karta Editace (a to i neúplná), nejprve vyhodnotíme, zda uživatel nezvolil některý z příkazů na této kartě. Pokud naše aplikace obsahuje více společných karet uživatelské nabídky, provedeme jejich vyhodnocení a pak teprve budeme zpracovávat ty příkazy menu, které jsou v každém formuláři jiné.

Druhý způsob zpracování společných položek v menu je umístění funkce FunkceMenuKartyEditace() přímo do smyčky zpracování událostí. Tento způsob je jednodušší, ale není natolik názorný jako explicitní volání funkce FunkceMenuKartyEditace() v každé funkci formuláře, ve které je potřeba.

static Boolean UdalostZpracovanaAplikaci(EventPtr udalost)
{
    Boolean zpracovano = false;
    UInt16 cisloFormulare;
    FormPtr formular;

    if(udalost->eType == frmLoadEvent)
    {
        ...
    }
    else if(udalost->eType == menuEvent)
    {
        zpracovano = FunkceMenuKartyEditace(udalost->data.menu.itemID);
    }

    return zpracovano;
}

Doplněním obsluhy menu je naše jednoduchá šifrovací aplikace ukončena. Zdrojový text poslední verze aplikace si můžete stáhnout zde.

31. Uložení stavu programu jako domácí úkol

Zbývá doplnit šifrovací program o poslední důležitou vlastnost: uložení stavu programu tak, aby měl uživatel pocit multitaskingu. V předchozí kapitole jsme si uvedli funkce PrefGetAppPreferences() a PrefSetAppPreferences() pro čtení a zapisování stavu programu. V první části domácího úkolu doplňte aplikaci o uložení a čtení stavu programu. Nápověda:

  1. přesuňte všechny globální proměnné do jedné struktury
  2. definujte v zdrojovém textu konstanty tvůrce aplikace a verze stavu programu
  3. doplňte do funkce ZacatekAplikace() kód pro přečtení stavu programu; nezapomeňte na všechny kontroly správnosti dat
  4. pokud nebyl přečten stav programu, je potřeba inicializovat globální proměnné
  5. doplňte do funkce KonecAplikace() kód pro uložení stavu programu

Doplníme-li do naší aplikace předchozích pět bodů, bude mít uživatel při přepínání aplikací pocit multitaskingu. Práce s počítačem Palm Pilot se tím ještě více přiblíží režimu, na který je uživatel zvyklý.


Tak skončila čtvrtá kapitola. V kapitole páté si povíme jednak o seznamech, které jsou velmi silným nástrojem pro uživatelský vstup, a jednak se naučíme ovládat černobílý grafický výstup na displej Palm Pilota. Ke kreslení se pak vrátíme ještě v sedmé kapitole, kdy si povíme o pokročilých prvcích grafiky a barvách. Zatím budeme postupně vytvářet jednoduchý černobílý kreslicí program.



Nejčtenější

Takto vypadá boj o zákazníky: pětkrát více dat a úhrada smluvní pokuty

Slovenský operátor O2 navýšil základní data u vybraných tarifů

Od revoluce v roce 2013 zažívá český mobilní trh spíše menší otřesy, zákazníci operátorů toužící po neomezeném tarifu s...

Konkurence se trefuje do „předražených“ nových iPhonů

Všechny tyto produkty Xiaomi stojí stejně, jako nový model iPhone XR

Na vysoké ceny novinek od Applu reagovali konkurenti poněkud posměšnými nabídkami. Ukazují v nich, co všechno z jejich...



Feministky kritizují nové iPhony. Jsou moc velké na ženskou ruku

iPhone XS/XS Max

Od doby, kdy Apple upustil od malých smartphonů, úhlopříčka nových modelů prudce narůstá. Nejnovější model ve verzi Max...

Prohlédněte si nejlepší a nejdražší iPhone. Máme ho jako první

iPhone XS Max

Stejně jako v předchozích letech jsme se i letos vypravili do Německa, abychom mohli vyzkoušet nejnovější smartphone od...

Operátor chtěl 37 tisíc, jenže smlouva byla uzavřena na ukradený průkaz

Ilustrační snímek

Operátoři by podle Českého telekomunikačního úřadu měli kontrolovat databázi neplatných dokladů. Informuje o tom v...

Další z rubriky

Už přes ni vyhrožovali smrtí. Přesto je aplikace extrémně populární

Logo aplikace Sarahah

Vysoký nárůst popularity zaznamenala aplikace Sarahah, určená k posílání anonymních zpráv. Ačkoliv se v posledních...

Online randění pozastaveno. Facebook nechtěně odstřihl uživatele od Tinderu

Aplikace Tinder

Změna bezpečnostních nastavení Facebooku v reakci na nedávné skandály s úniky dat má celkem závažný důsledek pro ty,...

Vyrážíte na dovolenou? Tyto aplikace by neměly chybět ve vašem mobilu

Ilustrační snímek

Mobilní aplikace jsou dnes v mnoha případech neodmyslitelným pomocníkem v celé řadě situací a letní cestování a...

Najdete na iDNES.cz