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

aktualizováno 
Dnes doplníme náš program o funkci šifrování a ukážeme si, jak přenášet data mezi formuláři.

4.12. Nejjednodušší funkce pro šifrování

Pro účel prvního příkladu doplníme naši aplikaci o jednoduchou šifrovací a dešifrovací funkci. Funkci předáváme vstupní text, heslo a ukazatel na proměnnou, do které bude uložen výsledný text. Parametr smer určuje, zda bude funkce text šifrovat nebo dešifrovat. Prototyp šifrovací funkce je v následujícím rámečku:

void Sifruj(Char* vystup, Char* vstup, Char* heslo, Boolean smer)

Nyní doplníme volání funkce Sifruj() do zdrojového kódu aplikace. Většinu kódu umístíme do funkce vstupního formuláře. Na obrázku, na kterém navrhujeme chování aplikace, to bude vypadat takto:

Většinu kódu jsme umístili do funkce vstupního formuláře. V následujícím rámečku si můžeme prohlédnout zjednodušenou funkci vstupního formuláře. Vstupní text i heslo ukládáme do globálních proměnných gHeslo a gPuvodniText. Podle hodnoty přepínačů (které jsou v jedné skupině: je-li jeden zapnut, je druhý z nich určitě vypnut) nastavíme směr šifrování.

Stav přepínačů, které určují směr šifrování, ukládáme do globální proměnné gZasifruj. Všechny globální proměnné musíme inicializovat ve funkci ZacatekProgramu().

static Boolean UdalostVstupnihoFormulare(EventPtr udalost)
{
    switch(udalost->eType)
    {
        case ctlSelectEvent:

            switch(udalost->data.ctlSelect.controlID)
            {
                case TlacitkoZakoduj:

                        // Zasifrovani

                    smer = CtlGetValue((ControlPtr)Objekt(PrepinacZasifruj));
                    KopirujTextPolicka(PoleHeslo, gHeslo, 50);
                    KopirujTextPolicka(PoleTextVstupni, gPuvodniText, 500);
                    Sifruj(gNovyText, gPuvodniText, gHeslo, smer);

                        // Skok do vystupniho formulare

                    FrmGotoForm(FormularVystupni);
                    zpracovano = true;
                    break;

                default:
                    break;
            }
            break;

        default:
            break;
    }

    return zpracovano;
}

Ve funkci výstupního formuláře jen naplníme výstupní políčko příslušným obsahem globální proměnné gNovyText. Zjednodušenou funkci výstupního formuláře uvádíme v následujícím rámečku:

static Boolean UdalostVystupnihoFormulare(EventPtr udalost)
{
    switch(udalost->eType)
    {
        case frmOpenEvent:

                // Zkopirovani vystupniho textu do policka

            NastavTextPolicka(PoleTextVystupni, gNovyText);

            FrmDrawForm(FrmGetActiveForm());
            zpracovano = true;
            break;

        case ctlSelectEvent:

            switch(udalost->data.ctlSelect.controlID)
            {
                case TlacitkoZpet:
				
                       // Návrat zpět
				
                    FrmGotoForm(FormularVstupni);
                    zpracovano = true;
                    break;
            } 
    }

    return zpracovano;
}

Zdrojový kód aplikace si můžeme prohlédnout zde.

4.13 Špinavá políčka

U každého políčka, které se nachází ve formuláři, je uložen údaj o tom, zda jsou data v políčku čistá nebo špinavá. Čistá jsou data, která uživatel nezměnil, a špinavá jsou data, která byla uživatelem změněna. Pokud uložíme do políčka nějaký text (například funkcí FldSetTextHandle() nebo funkcí FldSetTextPtr()), tak je políčko označené jako čisté.

Boolean FldDirty(const FieldType* políčko)

Zjistí, zda bylo políčko uživatelem po nastavení změněno.

Vstupní parametry
  • políčko - ukazatel na strukturu obsahující data políčka
Vrácená hodnota
  • true - políčko bylo uživatelem změněno
  • false - text v políčku nebyl uživatelem změněn

Změní-li uživatel text políčka, označí jej operační systém PalmOS jako špinavé. Funkce FldDirty() v takovém případě vrátí logickou hodnotu true. Naše aplikace může pomocí funkce FldDirty() testovat, která políčka uživatel ve formuláři změnil.

void FldSetDirty(FieldType* políčko, Boolean špinavé)

Nastaví příznak špinavého (změněného) políčka.

Vstupní parametry
  • políčko - ukazatel na strukturu obsahující data políčka
  • špinavé - příznak, zda byl obsah políčka změněn

Políčko je jako čisté označeno nastavením nového textu. Voláním funkce FldSetDirty() můžeme příznak špinavosti políčka přímo nastavit nebo vymazat. 


V příštím dílu si povíme o prvním, nejjednodušším způsobu, jak rolovat obsahem políčka nahoru a dolů pomocí opakovacích tlačítek.



Nejčtenější

Huawei Mate 20 Pro může být nový král smartphonů. Nechybí mu vůbec nic

Huawei Mate20 Pro

Špičkový Huawei Mate 20 Pro se stal jedním z nejvybavenějších smartphonů na trhu. Jak jsme si mohli již krátce...

Ostuda Androidu trvá, jen jediný smartphone na trhu má nejnovější verzi

Android 9.0 DP4 (Beta 4) na Nokii 7 Plus

Nokia 7 Plus je v podstatě prvním u nás běžně dostupným smartphonem, který dostal oficiální aktualizaci na nový Android...



Nedívejte se na zabavené iPhony, zablokují se, radí odborníci policistům

iPhone XS Max

Podle instrukcí forenzní firmy Elcomsoft pro americkou policii je vhodné, aby se policisté nedívali zpříma na nové...

Už žádné výřezy. Samsung všechno potřebné schová pod displej mobilu

Bude takto vypadat Samsung Galaxy S10?

Výřez displeje je naprosto dominantní trend smartphonů posledního roku, ovšem největší výrobce, Samsung, mu stále...

Hollywoodská kaskadérka otestovala detekci pádu u nových Apple Watch

Jednou z novinek Apple Watch Series 4 je detekce pádu. Redakce deníku The Wall...

Nová generace hodinek od Applu boduje především většími displeji a možností vykreslit EKG. Novinky přináší i omlazená...

Další z rubriky

Sem chodí smartphony umřít. Aplikaci lze použít jen s vybitou baterií

Die With Me

Aplikace s názvem Umři se mnou má velmi neobvyklé omezení. Nemůžete ji zapnout, pokud máte telefon nabitý víc než na...

K používání aplikace WhatsApp vám nově musí být minimálně 16 let

Whatsapp bude umět zpětně vymazat odeslané zprávy

Chatovací služba WhatsApp mění podmínky používání v Evropské unii. Nově začíná platit, že pro používání služby vám musí...

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...



Najdete na iDNES.cz