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ší

Berte, dokud je. Mobil pro fajnšmekry po neúspěchu drasticky zlevnil

Essential PH-1

Keramické tělo, jeden z nejmodernějších procesorů, 128 GB vnitřní paměti a velký displej s tenkými rámečky a...

Konkurenci poprvé ukazuje záda, Huawei P20 Pro je nejlepší smartphone

Huawei P20 Pro

Čínský Huawei si dal letos na nových modelech řady P20 opravdu záležet. Model P20 Pro chce být tím nejlepším...



Drsná metoda autoškoly, žáci museli položit své mobily na silnici

Neobvyklý způsob učení parkování v čínské autoškole

V čínské autoškole vymysleli originální způsob, jak naučit studenty velmi opatrně zaparkovat. Na čáry vyhrazené pro...

Američtí teenageři se mohou z iPhonů zbláznit. A zájem roste

iPhone 8 Plus v Drážďanech

Ve Spojených státech je mezi mladými uživateli smartphonů enormní zájem o iPhony - v současnosti je vlastní 82 procent...

Bezplatná služba Spotify u O2 končí. Zatrhl ji ČTÚ

Operátor O2 nabízí zákazníkům prémiový účet Spotify na tři měsíce zdarma

Od června 2016 umožňovalo O2 zákazníkům využívat službu Spotify zcela bezplatně. Podle Českého telekomunikační úřadu...

Další z rubriky

Na dovolené se můžete seznámit i nespálit

Ilustrační snímek

Na dovolenou si bereme kde co, ovšem počítač/notebook často zůstává doma. Ten je na jedné straně prostředkem k...

Bez reklamy ani ránu. Bude už i na Facebook Messengeru v mobilu

Mobilní Messenger projde změnou, k nelibosti uživatelů v něm budou cílené...

Oblíbený mobilní kecálek se brzy promění. Facebook totiž do Messengeru po úspěšném testování implementuje cílené...

Ušetříte za mobilní data. Facebook vám ukáže bezplatnou wi-fi

Find Wifi funkce na Facebooku

V aplikaci sociální sítě Facebook se objevila nová užitečná funkce - dovede vás nasměrovat k nejbližší veřejné wi-fi...



Najdete na iDNES.cz