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

Neuvěřitelné. Xiaomi má fotomobil se 48 megapixely pod tři a půl tisíce

Xiaomi Redmi Note 7

Nejnovější přírůstek do rodiny zařízení Xiaomi se pokusí utéct konkurenci. Má totiž fotoaparát s nejvyšším rozlišením...

Z auta už nebudeme koukat. Místo oken budou displeje

CES 2019 výstaviště 4

Lasvegaský veletrh CES patří bezesporu mezi nejočekávanější akce roku. Nejen mobilní výrobci totiž v městě hříchu...

Babiš ukázal řediteli Vodafonu grafy. Data jsou v Česku drahá

Cena mobilních dat je vládní priorita, říká Babiš

Premiér Babiš ve videu na svém facebookovém profilu odpověděl na otázku, jestli jeho strana ANO bude řešit vysoké ceny...

Honor s průstřelem displeje má zázračný 3D foťák a nebude drahý

Honor View 20

Značka Honor postupně představuje svůj nový špičkový smartphone View 20. V Číně ho nejprve ukázala coby model V20, teď...

LG předvedlo krásné chytré hodinky, mají skutečné ručičky

Chytré hodinky LG Watch W7

Už v závěru loňského roku představilo LG nové chytré hodinky s operačním systémem Wear OS od Googlu. Novinek na tomto...

Další z rubriky

Záchranku volejte přes aplikaci. Pomoc je rychlejší než při volání na 155

Simulovaná dopravní nehoda jako praktická ukázka fungování mobilní aplikace...

„Záchranná služba, tísňová linka, dobrý den,“ ohlašuje se operátorka volajícímu, který se stal svědkem dopravní nehody....

Na aplikace alternativních taxi útočí virus. Pase po údajích ke kartám

Virus pro Android

Uživatelé mobilních aplikací alternativních taxi včetně aplikace Uber by měli být obezřetní. Ohrožuje je totiž nový...

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

Najdete na iDNES.cz