Author: JirkaH Date: 2010-02-24 22:07:38 +0100 (Wed, 24 Feb 2010) New Revision: 1859 Added: others/dokumentace/technicalGuide/architecture/imgs/kiosk_db.png Modified: others/dokumentace/technicalGuide/architecture/6clientapp.tex Log: some more kiosk architecture Modified: others/dokumentace/technicalGuide/architecture/6clientapp.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/6clientapp.tex 2010-02-24 20:57:00 UTC (rev 1858) +++ others/dokumentace/technicalGuide/architecture/6clientapp.tex 2010-02-24 21:07:38 UTC (rev 1859) @@ -47,6 +47,8 @@ předá zobrazovacímu vláknu, ktéra jej vloží do paměti. Cache pixmap je globální pro celou aplikaci, její správu a tedy vymazávání starých dat má na starosti framework Qt. Samotné pracovní vlákno své data také cachuje, tato cache je však omezené, menší velikosti a své data maže při přepnutí kategorií, tj. když daný dokument není zobrazen. + TODO nejake schema, jak to funguje! + \subsubsection{Zobrazení v náhledech a zvětšování} PDF dokumenty jsou ve výchozím zobrazení zobrazeny jako náhledy zvolených stran (většinou prvních, to však lze ve webové aplikaci měnit). Prostor, ve kterém je dokument zobrazen je dán pozicí, na kterou je naplánován. Dle požadavků uvedeným v \textit{Analýze} je nutné, aby byl při zobrazování vždy zachován poměr stran, tj. nedocházelo k deformaci. Po načtení první strany se tedy daná pozice vizuálně zmenší, @@ -56,7 +58,8 @@ naimplementovat. K tomu, aby bylo listování vizuálně přívětivé (posuvníky byly správně dlouhé), je nutné zjistit rozměry všech stran PDF dokumentu nastavených k zobrazení. Načítání jednotlivých stran pak funguje stejně, jak je popsáno v předchozí kapitole. - Zvětšovat daný dokument lze vícekrát, po každém zvětšení se rozměry stran zvětší o danou konstantu. Velikost okna prohlížeče PDF se však již nemění. Zvětšení je limitováno na max. 5 iterací. Velikost + Zvětšovat daný dokument lze vícekrát, po každém zvětšení se rozměry stran zvětší o danou konstantu. Velikost okna prohlížeče PDF se přizpůsobuje až na maximální možnou velikost, + poté jsou již zobrazeny posuvníky. Zvětšení je limitováno na max. 5 iterací. Velikost prohlížeče PDF ve zvětšeném režimu stejně tak jako konstanta zvětšení je možné změnit úpravou hlavičkového souboru aplikace, tj. je nutné aplikaci rekompilovat. Vzhledem k tomu, že zvětšený dokument může potenciálně zakrýt celou obrazovku, je nutné zajistit, aby se sám v případě neaktivity uživatelů zmenšil do režimu náhledu. @@ -70,10 +73,23 @@ Kiosek umožňuje nastavit, která strana dokumentu bude náhledová, které strany budou zobrazeny ve zvětšeném režimu (vše uvedeno v documentConfigu, viz \ref{appendix_documentConfig}). Dále lze nastavením ve hlavičkovém souboru měnit krok zvětšení, maximální počet zvětšování a maximální velikost prohlížeče PDF. - \subsection{Prezentace} - + \subsection{PDF prezentace} + \subsubsection{Knihovna a renderování} + Prezentace jsou velmi podobné PDF dokumentům popsaným výše. Využívají stejnou knihovnu i vícevláknový model načítání s cachováním. Jediným rozdílem je předgenerování vždy předcházející a nasledující + strany zobrazeného dokumentu tak, aby mohla daná strana rychle zobrazena. - \subsection{Podpora videa} + \subsubsection{Zobrazení v náhledech a zvětšování} + Prezentace již v náhledu sama rotuje ve zvoleném intervalu. Zobrazena je vždy jen jedna strana dokumentu. Po dosáhnutí poslední stránky prezentace je prezentace spouštěna znovu. Měnění stran je + doprovázeno efektem prolínaní stran, který je umožněn včasným přednačtením další strany. \\ + Při zvětšení, které je ovšem omezeno jen na jednu iteraci, je rotování zastaveno. Uživatel pak má možnost pomocí tlačítek měnit strany prezentace, pořád ale platí, že je zobrazena vždy jedna celá strana. + Při neaktivitě uživatele je zvětšený dokument automaticky změnšen. Při zvětšení, podobně jako u PDF dokumentů, nelze přepínat mezi kategoriemi ani panely. Pozdrženy jsou také veškéré akce, které by měli + za následek skrytí zvětšené prezentace. Cílem bylo nevyrušit uživatele v prohlížení. + + \subsubsection{Možnosti nastavení} + Podobně jako u PDF dokumentů lze nastavit seznam stran, které se mají zobrazovat. Nelze však nastavit první strana, vzhledem ke kruhovému rotování to však ani nemá smysl. Dále lze nastavit perioda, + ve které mohou stránky rotovat. Toto nastavení se provádí pomocí webové aplikace. + + \subsection{Videa} \subsubsection{Volba knihovny} Jedním z požadavkům na knihovnu byla podpora co největšího počtu formátů videí. Vzhledem k použítí frameworku Qt byla volba knihovny pro tuto práci vcelku jednoduchá. Součástí frameworku je knihovna Phonon, která je určena právě pro přehrávání multimedií. Ta naprosto splňuje dané požadavky, navíc je také multiplatformní. Na linuxových systémech využívá knihovnu \verb!gstreamer! \cite{gstreamer} (s licencí LGPL) a @@ -88,12 +104,12 @@ Videa lze zvětšit. Pomocí šipek (připojených tlačítek) se lze ve videu navigovat. - Podobně jako u v případě PDF dokumentů \ref{pdf_doc} platí pro zvětšený přehrávač videí stejná omezení. Při zvětšení se nelze přepínat mezi kategoriemi, panelami. Veškeré akce které by přerušily přehrávání videa + Podobně jako u v případě PDF dokumentů \ref{pdf_doc} platí pro zvětšený přehrávač videí stejná omezení. Při zvětšení se nelze přepínat mezi kategoriemi, panely. Veškeré akce, které by přerušily přehrávání videa jsou pozdrženy. Video je automaticky zmenšeno po jeho přehrátí. \subsubsection{Možnosti nastavení \label{video_settings}} - U videí lze nastavit nastavit, jestli má být video přehráváno již v náhledu (autostart) nebo až po zvětšení, dále od jakého času má být video přehráváno (vše uvedeno v documentConfigu, viz + U videí lze nastavit nastavit, jestli má být video přehráváno již v náhledu (autostart) nebo až po zvětšení. Dále pak od jakého času má být video přehráváno (vše uvedeno v documentConfigu, viz \ref{appendix_documentConfig}). To lze využít pro zobrazení daného snímku v náhledu, když se video nepřehrává. Dále lze nastavit maximální velikost zvětšeného přehrávače podobně jako u PDF dokumentů pomocí hlavičkového souboru. @@ -127,10 +143,10 @@ \begin{itemize} \item začátek a konec stahování nového dokumentu (\verb!download!) \item začátek a konec vyvěšení daného dokumentu (\verb!exhibit!) - \item zvětšení dokumentu a jeho zmenšení na původní rozměr (\verb!detail!) + \item zvětšení dokumentu a jeho zmenšení na původní rozměr (\verb!detail!) \end{itemize} - Tyto události jsou zaznamenávány jen pro typy dokumentů \verb!PDF dokument!, \verb!video! a \ref{TODO_warning}: dalsi dokumenty. + Tyto události jsou zaznamenávány jen pro typy dokumentů \verb!PDF dokument!, \verb!video! a \ref{TODO_warning}: další dokumenty. \subsubsection{Uchovávání statistik} Z požadavků na robustnost uchovávání statistik na kiosku vyplynul požadavek statistiky nejprve @@ -140,16 +156,26 @@ malým výkonnostním nárokům byla zvolena databáze SQLITE v3. Protože byla použita abstrakce databází ve frameworku Qt, lze v případě potřeby změnit databázový engine jednoduchou úpravou aplikace. - Databáze se skládá z jediné tabulky, jejíž schéma zobrazuje obrázek + Databáze se skládá z jediné tabulky, jejíž schéma zobrazuje obrázek \ref{kiosk_dbschema}. + \begin{figure}[!h] + \label{kiosk_dbschema} \begin{center} -% \includegraphics[width=1\textwidth]{imgs/kiosk_dbschema.png} + \includegraphics[width=0.4\textwidth]{imgs/kiosk_db.png} + \caption{Databázové schéma tabulky statistik} \end{center} + \end{figure} - \subsubsection{Odesílání statistik} - Statistiky jsou odesílány v pravidelných, konfigurovatelných intervalech, dále pak při startu a konci aplikace. + Při správném ukončení aplikace je zajištěno, že budou uloženy záznamy o konci zobrazení dokumentů. + Při startu aplikace jsou z databáze vymazány všechny nekompletní záznamy s vyjímkou záznamů \verb!exhibit!. Nekompletní \verb!exhibit! záznamy jsou ponechány v případě, že + mají nastaven konec události, viz \ref{starts_sending}. + + \subsubsection{Odesílání statistik\label{stats_sending}} + Statistiky jsou odesílány v pravidelných, konfigurovatelných intervalech, dále pak při startu aplikace. Při odesílání je kontrolována odezva serveru, odesílání je pak případně opakováno. + Při startu se aplikace pokusí odeslat všechny kompletní (s vyjímkou \verb!exhibit! záznamů, viz výše) statistiky, které v databázi zbyly z minulého běhu aplikace. + Způsob odesílání jednotlivých druhů statistik se však liší. Typy \verb!download! a \verb!detail! se odesílají na server až když je jejich záznam kompletní, tj. je znám čas začátku i konce dané události. @@ -159,12 +185,22 @@ současném zachování dobré odezvy statistik. V případě odesílání jen kompletních záznamů by se server o skutečném vyvěšení dokumentu na kiosku dozvěděl až po vypršení doby vyvěšení. + Toto chování sebou však přínáší potenciální problém v podobě neukončených událostí na serveru, v + případě problémů na straně kiosku. Aplikace proto při startu pošle speciální událost \verb!elvys_restart!, která v sobě obsahuje čas posledního běhu programu. + Tento čas je brán jako čas poslední modifikace zvoleného souboru, který je v pravidelných intervalech aplikací měněn. Server pak všechny neukončené \verb!exhibit! události + ukončí s tímto datem. + \section{Vzhled} +K definování vzhledu aplikace je využito stylování, které je dostupné v Qt. To umožňuje definovat vzhled aplikace v samostatném souboru mimo kód aplikace. To uživatelům přináčí možnost měnit vzhled aplikace, +což u klasických aplikací není možné. Syntaxe stylování je stejná jako u css souborů webových stránek. Rozdílem jsou samozřejmě různé \verb!selectory! různých objektů v aplikaci +(např. aktivní záložka v QTabWidget). \\ -\section{Screenshoty} +Je nutné však poznamenat, že k datu odevzdání projektu nebylo používání stylů zdaleka bezchybné a ne všechny operace, které by dle dokumentace měly fungovat, v reálu +opravdu měnily požadovaný vzhled. +\section{Snímky obrazovky} +Kiosek pravidelně \section{Správa souborů} \subsection{Stahování souborů} - \subsection{Správa úložiště} - + \subsection{Správa úložiště} \ No newline at end of file Added: others/dokumentace/technicalGuide/architecture/imgs/kiosk_db.png =================================================================== (Binary files differ) Property changes on: others/dokumentace/technicalGuide/architecture/imgs/kiosk_db.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream