PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY
BAKALÁŘSKÁ PRÁCE
Správce úkolů
2011
David Čapek
Anotace Cílem této práce bylo naprogramovat aplikaci pro vytváření, organizaci a synchronizaci osobních úkolů. Text práce se věnuje popisu této aplikace z programátorského i uživatelského pohledu a také krátkému seznámení s pojmem time management.
Děkuji všem, kteří přispěli testováním, připomínkou či podnětem k výsledné podobě této práce. Zvláště pak Mgr. Jiřímu Zacpalovi za cenné rady a připomínky.
Obsah 1. Úvod
8
2. Zadání bakalářské práce 2.1. Specifikace zadání . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Požadavky na program . . . . . . . . . . . . . . . . . . . . . . . .
9 9 9
3. Time management 3.1. Úkoly a běžné zacházení s nimi . . . . . . . . . . . . . . . . . . .
10 10
4. Analýza existujících řešení 4.1. Popis konkurenčních programů a služeb 4.1.1. Microsoft Outlook 2007 . . . . . 4.1.2. Task Coach 1.0.7 . . . . . . . . 4.1.3. EssentialPIM 3.54 . . . . . . . . 4.1.4. Day Organizer 2.1.3 . . . . . . . 4.1.5. Student DOG organizer 1.91 . . 4.1.6. Diář 5.5 . . . . . . . . . . . . . 4.1.7. Google kalendář . . . . . . . . . 4.2. Vliv konkurenčních programů . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
12 12 12 14 15 17 18 19 20 21
5. Programátorská dokumentace 5.1. Použité technologie a programy . . . 5.2. Použité konvence . . . . . . . . . . . 5.3. Architektura aplikace . . . . . . . . . 5.4. Popis modulu SpravceUkolu . . . . . 5.4.1. Třída cData . . . . . . . . . . 5.4.2. Třída cUkol . . . . . . . . . . 5.4.3. Třída cKategorie . . . . . . . 5.4.4. Třída cListUkolu . . . . . . . 5.4.5. Třída cListKategorii . . . . . 5.4.6. Třída cOpakovani . . . . . . . 5.4.7. Třída cPripomenuti . . . . . . 5.4.8. Třída cPriloha . . . . . . . . . 5.4.9. Třída cGeneratorOpakovani . 5.4.10. Třída cGeneratorPripomenuti 5.4.11. Třída cXmlAdapter . . . . . . 5.4.12. Třída cExporter . . . . . . . . 5.4.13. Třída cZalohy . . . . . . . . . 5.4.14. Třída frmHlavniOkno . . . . . 5.4.15. Třída frmEditorUkolu . . . . 5.4.16. Třída frmImporter . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
23 23 23 25 25 25 26 28 29 29 29 30 30 31 31 32 33 33 33 34 35
4
. . . . . . . . . . . . . . . . . . . .
5.4.17. Třída frmSynchronizace . . . . 5.4.18. Třída frmResitelKonfliktu . . . 5.5. Popis modulu TreeGridView . . . . . . 5.6. Popis modulu GoogleCalendarAdapter 5.7. Testování aplikace . . . . . . . . . . . . 6. Uživatelská dokumentace 6.1. Instalace a požadavky . . . . . 6.2. Popis hlavního okna programu . 6.3. Datové soubory . . . . . . . . . 6.4. Úkoly . . . . . . . . . . . . . . 6.5. Kategorie . . . . . . . . . . . . 6.6. Editor úkolů a editor kategorií . 6.7. Nástroj pro import úkolů . . . . 6.8. Nástroj Manažer synchronizace 6.9. Nastavení . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
36 37 37 37 38
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
39 39 40 43 43 44 44 45 46 47
Závěr
48
Conclusions
49
Reference
50
7. Obsah přiloženého CD
51
5
Seznam obrázků 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Microsoft Outlook 2007 . Task Coach . . . . . . . EssentialPIM . . . . . . Day Organizer . . . . . . Student DOG organizer Diár . . . . . . . . . . . Google kalendář . . . . . Okno instalátoru . . . . Hlavní okno programu . Editor úkolů . . . . . . . Nástroj pro import úkolů Manažer synchronizace .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
6
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
12 14 16 17 18 19 20 39 40 44 45 46
Seznam tabulek 1.
Předpony nejpoužívanějších kontrolních prvků . . . . . . . . . . .
7
24
1.
Úvod
Aniž si to často uvědomujeme, je součástí našeho každodenního života plnění mnoha různých úkolů. Od těch nejelementárnějších, které vykonáváme reflexivně, jako je například dýchání, přes úkoly již víceméně uvědomělé, jako například při odchodu z domu nezapomenout zamknout, až po úkoly složitější, jako napsat esej nebo nakoupit vánoční dárky. Tato bakalářská práce se zabývá především poslední zmíněnou skupinou úkolů a možností je organizovat pomocí počítačového programu. V následujících kapitolách se pokusím nastínit teorii tzv. time managementu a dále uvést jak z programátorského, tak i z uživatelského hlediska počítačovou aplikaci, která vznikla jako součást této práce.
8
2.
Zadání bakalářské práce
2.1.
Specifikace zadání
Vytvořit softwarovou aplikaci umožňující vytvářet a editovat úkoly, hierarchicky je organizovat a synchronizovat. Úkoly bude možno zařazovat do kategorií, nastavovat jim opakování ze široké škály možností, aktivovat včasné připomenutí nadcházejícího úkolu a přidávat úkolům libovolné přílohy. Celý seznam úkolů bude možno importovat, exportovat, synchronizovat s jinou instancí stejné aplikace a také synchronizovat s vybranou on-line službou pro organizaci úkolů a událostí.
2.2.
Požadavky na program
• Vytvoření programu pro správu úkolů • Možnost vytváření hierarchie mezi úkoly • Možnost synchronizace mezi různými instancemi programů • Možnost vytváření periodicky se opakujících úkolů • Analýza existujících řešení • Programátorská dokumentace • Uživatelská dokumentace
9
3.
Time management
Time management lze do češtiny přeložit jako řízení času, nebo spíš jako plánování či organizace osobního času, aby to neznělo tolik vědecko-fantasticky. Jedná se v podstatě o soubor doporučení, rad a případně i konkrétních např. softwarových nástrojů, jejichž cílem je zvýšit pracovní efektivitu jedince nebo skupiny lidí a snížit stres z nahromadění nedokončených a rozpracovaných úkolů. Pokouší se odstraňovat „časožroutyÿ, což jsou úkoly, které přes svou nízkou nebo dokonce naprosto nulovou důležitost ubírají příliš mnoho času, a vytvořit v úkolech systém a řád tak, aby mohly být naplánovány a následně vykonávány beze stresu a postupně vzhledem ke své důležitosti.
3.1.
Úkoly a běžné zacházení s nimi
Jak již bylo zmíněno v úvodu práce, úkoly jsou neodmyslitelnou součástí naprosto všeho, co děláme. Za úkol můžeme považovat každý příkaz, povel, zadání, každou akci nebo práci, která se od nás očekává, nebo kterou sami chceme udělat. Prostě vše, co je někým zadáno, čeká na splnění a v určitém okamžiku pak obvykle je i splněno, i když to již není nutnou podmínkou. Zadavatelem úkolu přitom nemusí být někdo jiný. Veškeré příkazy, které vysílá náš mozek našemu tělu, našim svalům, ale i sám sobě, můžeme také považovat za úkoly. Sami jsme pak sobě zadavateli i vykonavateli. Elementární úkoly reflexivního charakteru vykonává mozek zcela automaticky. Málokdy se nám stává, že zapomeneme dýchat a rozhodně na to nemusíme myslet. Na práci s žehličkou nebo sporákem již myslet musíme, i když se nám často stává, že po odchodu z domu si již nepamatujeme, jestli jsme žehličku nenechali v zásuvce a zda ze sporáku stále neuniká plyn. Přesto si však takovéto poloautomaticky vykonávané úkoly do diářů nezapisujeme. Naopak úkoly spíše dlouhodobého charakteru si často někam poznamenáme, abychom na ně nezapomněli. Můžeme používat osobní diář, případně nějakou jeho elektronickou obdobu na počítači, PDA nebo mobilním telefonu. Mnoho lidí si nechce připustit, že si všechny svoje úkoly a závazky nezapamatují, a tak je nosí jen v hlavě. Dokud není úkolů mnoho, není to výrazný problém. Jakmile se ale začnou hromadit a přidá se k tomu navíc pracovní nebo studijní stres, je obtížné na žádný nezapomenout. Zejména v situacích, kdybychom se měli plně soustředit na jeden konkretní vykonávaný úkol, si pak zbytečně ubíráme mozkovou kapacitu a přidáváme další stres udržováním myšlenek na jiné úkoly a starostmi, zda jsme na něco nezapomněli. Nesplněné úkoly nám v hlavě zůstávají jako jakési běžící procesy na pozadí v počítači. David Allen je ve své knize Getting Things Done [1] popisuje jako „open loopsÿ neboli otevřené smyčky. Využívají naše prostředky a často vyplouvají na povrch nebo po nich zůstává takový ten hlodavě nepříjemný pocit, že „ ještě musím něco udělatÿ, který nám nedovoluje se plně soustředit na aktuální práci. 10
Dříve či později si uvědomíme, že vzniká potřeba nahromaděné úkoly nějak efektivně organizovat. Smyslem je vyčistit si od těchto starostí aspoň částečně hlavu. Pokud si je začněme vypisovat třeba jen na papír, přijdeme pravděpodobně na desítky věcí, u kterých máme pocit, že bychom s nimi měli něco udělat, nějak je vyřešit, či dokončit. Softwarová aplikace je pak ideálním pomocníkem pro jejich organizování. Nejen že starosti s jejich pamatováním přehodíme na počítač, ale navíc můžeme v takových programech často využít mnoho dalších užitečných funkcí.
11
4.
Analýza existujících řešení
Tato kapitola se zabývá prezentací již existujících řešení problematiky organizace úkolů a událostí. Porovnává program Správce úkolů vytvořený jako součást této práce s nejpoužívanějšími konkurenčními programy. Z dostupných možností jsou vybrány jen ty nejkvalitnější a nejvíce konkurující programy. Nechybí ani popis jejich vlivu na vzhled a funkce tohoto projektu.
4.1.
Popis konkurenčních programů a služeb
Nyní si popíšeme několik dostupných programů a služeb, které řeší podobnou problematiku jako Správce úkolů. Každý z představovaných produktů má své klady a zápory, které se zde pokusím nastínit. 4.1.1.
Microsoft Outlook 2007
Obrázek 1. Microsoft Outlook 2007 Jako první zmíním jeden z nejrozšířenějších a nejznámějších programů na organizaci pošty, kontaktů, úkolů a událostí Microsoft Outlook (dále jen Outlook). Program je obvykle dodáván jako součást balíku Microsoft Office (dále jen Office). Outlook patří k nejkomplexnějším programům v této oblasti vůbec. Dlouholetý 12
vývoj, během kterého byl upravován podle představ a potřeb uživatelů, je skutečně znát. Je rozšířen v podnikové i soukromé sféře. Jeho oblast působnosti však není neomezená. Ve velkých firmách je na organizaci pracovního času a úkolů potřeba mnohem pružnějších systémů, jako je například Microsoft SharePoint. Outlook se tak hodí spíše pro personální využití. Jeho největším negativem je asi jeho cena. Lze jej koupit buď jako součást balíku Office, který v závislosti na zvolené verzi obsahuje také velice rozšířený Word, Excel a další, anebo i samostatně. Cena nejlevnější sady Office 2007 obsahující i Outlook se pohybuje kolem čtyř tisíc korun. V případě koupě samotného Outlooku pak zaplatíte přibližně o tisíc korun méně. Dalším možná trochu překvapivým problémem pro začínající nebo starší uživatele počítače může být, že Outlook je až příliš komplexní a tím pádem nevyhnutelně i komplikovaný nástroj. Pokud jej člověk chce využít třeba jen právě k organizaci úkolů a událostí, ostatní funkce tak nějak překážejí. Úkoly je možno zobrazovat například jako stručný či různě podrobný seznam, časovou osu, anebo jako součást rozšířeného zobrazení kalendáře. Dále pak mohou být v zobrazení viditelné neaktivní či nesplněné úkoly. Seznam možných zobrazení je dosti obsáhlý, ale mnoho z nich nabízí jen málo odlišný pohled na úkoly. Samotné možnosti vlastností úkolů jsou velice obsáhlé. Propracovaný je zejména systém opakování úkolů, jejich kategorizování, ale také jinak málo vídané nastavení odvedené práce, ujetých kilometrů a vyúčtování. V době psaní této práce přišla na trh čerstvě verze 2010. Základní funkčnost se však nezměnila. Došlo hlavně ke změně uživatelského rozhraní, především pak byl plně integrován panel ribbon, který byl v předchozí verzi integrován jen do některých částí programu. • Výhody – kvalita a stabilita díky dlouholetému vývoji – komplexnost a množství funkcí – funkce poštovního klienta a provázanost e-mailové komunikace s plánováním úkolů a událostí – rozšíření programu mezi uživateli – kvalitní česká lokalizace • Nevýhody – pro běžného uživatele vysoká cena a vůbec nepříjemná nutnost produkt koupit – nemožnost organizovat úkoly hierarchicky pod sebe do stromové struktury – komplikovanost ovládání pro počítačové začátečníky 13
– příliš velké množství funkcí, které uživatel ani nevyužije – nemožnost nebo příliš složité nastavení synchronizace, zejména s webovými službami – zabírá více místa v operační paměti i na disku 4.1.2.
Task Coach 1.0.7
Obrázek 2. Task Coach
Tento úkolový manager je vyvíjen jako open source, a tak je k dispozici zdarma. Jeho hlavní předností a podle autorů i prapůvodním důvodem proč s jeho vývojem začali, je možnost úkoly pod sebe řadit hierarchicky. Každý úkol tak může mít svoje podúkoly, anebo pokud se na to podíváme z jiného úhlu pohledu, tak každý úkol může být rozdroben na několik menších podúkolů. Takovou funkcionalitu mnoho „úkolníčkůÿ opravdu nenabízí. Velkou předností je i několik nabízených pohledů na úkoly, např. v časové ose, v kalendáři nebo v úkolové mapě. Mimo úkoly nabízí i vytváření jednoduchých poznámek. Program je na rozdíl třeba od Outlooku vyvíjen jen velmi úzkou skupinou vývojářů, kteří se však nebojí vyvíjet jej současně pro několik platforem a odlišných
14
operačních systémů. Přes velký potenciál zejména v možnostech zobrazení a pohledů na úkoly se tato aplikace zdá být po krátkém používání stále nedotažená a místy ne příliš pohodlná na ovládání. Je možné, že za to může rozštěpenost vývoje pro více platforem. Po nainstalování je program v angličtině, ale je možno jej přepnout i do češtiny. Ta však není příliš kvalitní a obsahuje mnoho chyb a nedodělků. Velkou nevýhodou je nulová podpora importu z jiných programů a velmi chudý export, který se omezuje jen na předmět úkolů a datum a čas začátku a konce. • Výhody – velké množství nastavitelných položek u každého úkolu včetně rozpočtu, časového plánu, vzhledu a chování – možnost organizovat úkoly hierarchicky pod sebe do stromové struktury – zaznamenávání času stráveného nad každým úkolem – přizpůsobitelné uživatelské rozhraní – různé pohledy na úkoly jako je mapa s úkoly, časová osa, přehledový kalendář – vyvíjen pro Windows, Linux, Mac OS a dokonce i pro iPhone • Nevýhody – nestandardní a místy nepřehledné a nelogické ovládání a uživatelské rozhraní – často nicneříkající ikonky v programu s nutností si jejich funkci pamatovat, nebo číst tooltipy – nekompletní a nekvalitní česká lokalizace – naprosto žádná podpora importu – velmi slabá podpora exportu – málo podrobné možnosti nastavení opakování a připomenutí – občasná nestabilita programu – mnoho nastavitelných položek úkolů s malou pravděpodobností využití 4.1.3.
EssentialPIM 3.54
Tento program je nabízen v několika variantách. Free (resp. omezená) verze je zdarma, ale verze Pro je již zpoplatněna částkou začínající na zhruba 650 Kč. Program samotný je velice přehledný. Na obrazovce EPIM Today nabízí celkový přehled všech nejbližších událostí, úkolů a zpráv. Slouží k organizaci času formou úkolů a událostí, ale funguje také jako jednoduchý e-mailový klient. Nabízí 15
Obrázek 3. EssentialPIM
i kalendářové zobrazení podobné Outlooku. Na první pohled je vidět, že si autoři dali záležet na vzhledu, ergonomii ovládání, ale i na celé funkčnosti. Program tak obsahuje dostatek možností nastavení úkolů, ale zároveň žádné zbytečnosti. Data je možné importovat i exportovat do mnoha formátů a dokonce synchronizovat s některými mobilními zařízeními a webovými službami. Bohužel ve Free verzi je většina nadstandardních funkcí zablokována. Nelze použít synchronizaci, vylepšené náhledy, přidávání příloh a vytváření kategorií a hierarchické stromové struktury úkolů. Omezeny jsou také funkce e-mailového klienta, zálohování a šifrování. V placené verzi se tak jedná o vynikající aplikaci. To samé se bohužel o jeho bezplatné verzi říct nedá. • Výhody – rozšířená nabídka funkcí v placené verzi – přehledné uživatelské prostředí, jednoduché na ovládání – funkce kalendáře, správy kontaktů, pošty a samozřejmě úkolů – přizpůsobitelné uživatelské rozhraní – kvalitní česká lokalizace 16
– cena plné verze je více než přijatelná vzhledem ke kvalitám programu • Nevýhody – velká omezení neplacené verze – mírně atypické ovládací prvky v bočním panelu 4.1.4.
Day Organizer 2.1.3
Obrázek 4. Day Organizer Vzhledem k tomu, že se mi tento program nepodařilo vůbec spustit mohu program popsat jen podle popisu výrobce a jeho screenshotů. Pokoušel jsem se jej spouštět na Windows 7 (64-bitové) a to i v režimu kompatibility a poté taky na virtuálně nainstalovaných Windows XP, ale ani v jednom případě jsem neuspěl. To samo o sobě dělá program v podstatě naprosto nepoužitelným. Program nabízí organizaci času, evidenci opakujících se událostí a jejich připomínání. Předností je přehledné kalendářové zobrazení s možností náhledu dne, týdne i měsíce. Lze také provozovat více samostatných kalendářů současně a sdílet je mezi uživateli. Umožňuje data zálohovat a exportovat do textových formátů. • Výhody – jednoduché a přehledné uživatelské rozhraní 17
– podrobné nastavení opakování • Nevýhody – program se nepodařilo vůbec spustit na Windows 7 a to ani při použití režimu kompatibility a dokonce ani na Windows XP – program je placený (cena přibližně 480 Kč) – omezená nebo žádná možnost importu a exportu 4.1.5.
Student DOG organizer 1.91
Obrázek 5. Student DOG organizer
Jak sám autor píše, jedná se o školní organizér vytvořený studentem pro studenty. Umožňuje přehled nad všemi školními i mimoškolními aktivitami. Program má velice zdařilé osobité uživatelské rozhraní. Zejména úvodní obrazovka nabízí dobrý přehled. Do programu lze vkládat kontakty, události a úkoly, ale také rozvrh hodin ve škole a dokonce i známky z jednotlivých předmětů. Možnosti nastavení úkolů a událostí jsou velmi omezené. Databázi je sice možno exportovat a importovat, ale import z jiných programů možný není. Program je jednoznačně zacílen na studenty, a tak se i možnost jeho využití víceméně omezuje jen na studenty 18
a to zejména základních a středních škol. Pro obecné plánování a správu času se příliš nehodí. Autorem programu je můj téměř jmenovec David Čápka, ale tato podobnost s mým jménem je čistě náhodná. • Výhody – přehledné a pěkně provedené uživatelské rozhraní – ideální pro školáky a studenty – program je zdarma (autor pouze žádá o finanční příspěvek) – školní režim s upozorňováním na následující vyučovací hodinu – vytváření rozvrhu a zapisování známek – české i slovenské svátky – přímo český program • Nevýhody – příliš jednoduchý, pro skutečnou organizaci času nepoužitelný – málo nastavitelných možností u úkolů – málo podrobné možnosti nastavení opakování a připomenutí – omezená možnost importu a exportu 4.1.6.
Diář 5.5
Obrázek 6. Diár Program slouží jako připomínač dlouhodobých i krátkodobých úkolů. Disponuje velice jednoduchým uživatelským rozhraním, které je vcelku přehledné. Jeho možnosti jsou však velice omezené a chudé. Nabízí sice tvorbu úkolů, výročí, plánů a poznámek, ale jejich nastavení je vskutku elementární. Pro skutečnou organizaci času se program příliš nehodí. 19
• Výhody – jednoduché uživatelské rozhraní – barevná skinovatelnost a nastavení hodin – zobrazení rozvrhu úkolů v jednoduchém kalendáři – svátky (jmeniny) – program je freeware – přímo český program • Nevýhody – příliš jednoduchý, pro skutečnou organizaci času nepoužitelný – málo nastavitelných možností u úkolů – málo podrobné možnosti nastavení opakování a připomenutí – žádná možnost importu a exportu 4.1.7.
Google kalendář
Obrázek 7. Google kalendář
Jediný zástupce online služeb týkajících se organizace úkolů, kterého zde uvádím je právě Google kalendář (nebo v originále Google Calendar). Poskytuje jednoduché a přehledné webové rozhraní, které je snadno přístupné přes všechny běžné internetové prohlížeče. Jedinou podmínkou používání je mít zřízený uživatelský účet. Samotná část určená pro úkoly je však značně omezená a alespoň 20
prozatím není možné tyto úkoly ani nijak synchronizovat. Naopak dobře propracovaná je podpora událostí, kterými lze suplovat i nedotaženou podporu úkolů. Tyto události lze také snadno synchronizovat s mnohými moderními mobilními telefony a PDA zařízeními. Pro své značné rozšíření a snadnost zřízení jsem tuto službu vybral jako jednu z možností synchronizace úkolů. Úkoly jsou jen reprezentovány jako události. • Výhody – jednoduché uživatelské rozhraní – přístupné z libovolného počítače připojeného k internetu – nepotřebuje žádnou desktopovou aplikaci – možnosti notifikací na události – neplacená služba – plná podpora češtiny • Nevýhody – špatná podpora pro úkoly a nemožnost je synchronizovat – bez připojení k internetu nepoužitelné
4.2.
Vliv konkurenčních programů
Před samotným začátkem vývoje tohoto programu jsem provedl zběžný průzkum možností softwarové správy a organizace úkolu. Nainstaloval jsem několik nejpoužívanějších a nejlépe hodnocených aplikací, podrobil je krátkému testování možností a schopností a některé ze zjištěných poznatků jsem vypsal v předchozí kapitole. Jak je možná už z jejich popisu patrné, mým „favoritemÿ – dá-li se to tak nazvat – se stal program EssentialPIM. Zaujal mě nejen svými možnostmi a funkcemi, ale také přehledností a čistotou uživatelského rozhraní. Inspirace tímto rozhraním je tedy v tomto projektu patrná. Prostředí vyvíjené aplikace jsem volil tak, aby bylo příjemné, přehledné a do jisté míry i modifikovatelné. Přestože si to hodně programátorů neuvědomuje, je vzhled aplikace pro mnoho uživatelů téměř stejně důležitý jako funkčnost. Program se tak musí navrhnout kvalitně a promyšleně nejen po funkční stránce, ale i po stránce designové. Čisté a příjemné prostředí zkvalitňuje a urychluje práci s programem. Především jsem se chtěl vyhnout klasické tlačítkové liště, která je obvykle plná nicneříkajících a těžko rozluštitelných ikonek a nahradil ji přehledným bočním panelem s popisem jednotlivých tlačítek. Z pohledu funkčnosti jsem se pokusil spojit to nejlepší a podle mého názoru i nejužitečnější ze všech popisovaných programů. Úkoly je tak možno organizovat do hierarchické stromové struktury, ale tu lze přepnout i do běžného tabulkového 21
zobrazení. U každého úkolu je možné nastavit velké množství položek, vyhnul jsem se však položkám, které by měli velmi malé, nebo žádné využití. Možnosti opakování tak odpovídají například Outlooku a možnosti připomenutí jsou dokonce ještě širší. Vkládání příloh vychází z toho nejlepšího, co konkurence nabízí. Co se možností exportu, importu a synchronizace týká, kladl jsem důraz na jednoduchost v kombinaci s co největší univerzálností.
22
5.
Programátorská dokumentace
Tato kapitola rozebírá vytvořenou aplikaci z programátorského hlediska. Především pak jaké prostředky byly při vývoji použity a jakým způsobem aplikace pracuje.
5.1.
Použité technologie a programy
Aplikace byla naimplementována v prostředí .NET Framework 3.5. Rané fáze vývoje jsem začal ve Visual Studiu 2008, ale záhy jsem přešel na Visual Studio 2010 (počínaje beta a RC verzemi). Zůstal jsem však u Frameworku verze 3.5 především z důvodu větší pravděpodobnosti, že již bude toto prostředí ve většině počítačů nainstalováno, a nebude tak nutno doinstalovávat další prerekvizity. Jako programovací jazyk byl vybrán C# 3.0 a jako systém ukládání dat byl zvolen jednoduchý strukturovaný XML soubor, pro jeho snadnou přenositelnost, obsluhu i případnou ruční editovatelnost. Prezentační vrstva aplikace je tvořena pomocí Windows Forms, což je hlavní grafické rozhraní, které je součástí .NET Frameworku. Součástí aplikace je i několik knihoven společnosti Google, Inc. Jedná se o rozhraní Google Calendar Data API 2.0, které umožňuje pracovat s on-line službou Google kalendář.
5.2.
Použité konvence
Aplikace obsahuje zhruba dvacet pět tisíc řádků kódu, z toho zhruba deset tisíc představuje automaticky generovaný kód k formulářům. Komentáře a dokumentace představují zhruba dvacet procent kódu. V projektu je celkem třicet šest tříd. Kvůli přehlednosti a zachování jisté kultury kódu byly použity následující konvence, které částečně čerpají z [2]: • Třídy - názvy tříd začínají písmenem c z anglického class. • Metody - názvy metod nemají žádnou konkrétní předponu a začínají velkým písmenem. Výjimku tvoří metody, které přímo obsluhují události. Ty začínají písmenem malým. Cílem bylo obsáhnout v názvu metody její funkci. Proto jsou názvy metod někdy delší, ale získáme tím jednodušší orientaci v kódu, protože nemusíme studovat implementaci metody nebo její dokumentační komentář. • Enumy - výčtové typy začínají písmenem e. Každé slovo začíná velkým písmenem. • UserControly - grafické uživatelské prvky začínají předponou uc. • Formuláře - názvy formů začínají předponou frm. 23
Veškeré názvy mohou být víceslovné. U takových názvů se pak používá tzv. velbloudí zápis. Každá třída je zpřehledněna rozdělením do několika bloků pomocí následujících regionů: • promenne - sdružuje veškeré proměnné použité v dané třídě. • vlastnsti - sdružuje všechny vlastnosti v dané třídě. • kontruktory a inicializace - obsahuje všechny konstruktory dané třídy a všechny metody, které zajišťují potřebné operace při vytvoření třídy. • hlavni metody - obsahuje základní a nejdůležitější metody třídy. Většinou jsou typu public. • pomocne metody - zbytek běžných metod třídy, které jsou většinou private nebo internal a slouží jen pro vnitřní účely třídy. • obsluhy udalosti - veškeré metody, které obsluhují události patřící k dané třídě. Pokud by byl některý z regionů prázdný, ve třídě se nevyskytuje. U velmi jednoduchých tříd třeba jen s jednou nebo dvěma metodami nejsou regiony použity vůbec. Kontrolní prvky (Controls) používají také jednotné předpony tvořené zkratkou názvů jejich typů. Ty nejčastější ukazuje tabulka 1. datový typ předpona System.Windows.Forms.Label lbl System.Windows.Forms.Button btn System.Windows.Forms.TextBox tb System.Windows.Forms.RichTextBox rtb System.Windows.Forms.CheckBox chbx System.Windows.Forms.ComboBox cb System.Windows.Forms.RadioButton rb System.Windows.Forms.ListView lv System.Windows.Forms.PictureBox pb System.Windows.Forms.DataGridViewTextBoxColumn col System.Windows.Forms.ImageList il System.Windows.Forms.Timer tmr Tabulka 1. Předpony nejpoužívanějších kontrolních prvků
24
5.3.
Architektura aplikace
Vzhledem k relativní jednoduchosti a ucelenosti systému nebylo využito některého pro tento případ zbytečně komplexního a složitého návrhového vzoru. Každá třída tak funguje jako samostatný objekt a její rozhraní je definováno veřejně přístupnými metodami, které odstiňují metody soukromé a interní. Z pohledu vzorů týkajících se tvorby objektů stojí za zmínku například třída cData, která uchovává při běhu programu aktuální data a ve které je použit návrhový vzor jedináček (singleton). Ten zabezpečuje, že data budou v programu udržována vždy v jediné instanci a bude k nim globální přístup. Celý program je tvořen třemi základními vrstvami: datovou, logickou a prezentační. Datovou vrstvu představuje již zmíněné cData, dále cUkol, cKategorie, cListKategoirii, cListUkolu, cPriloha, cOpakovani a cPripomenuti. Do logické vrstvy patří především cGeneratorOpakovani a cGeneratorPripomenuti, cStatickeMetody, cExporter a částečně také frmImporter a cTiskovyProcesor. Na rozhraní mezi logickou a prezentační vrstvou je hlavní form aplikace frmHlavniOkno, které samozřejmě zastává již prezentační funkci, ale pro její zobrazení využívá určitou vlastní logiku. Prezentační vrstvu představují v podstatě všechny formy (formuláře) a user controly. O nich a o všech ostatních třídách je více podrobností v následujících kapitolách. Aplikace se skládá ze tří samostatných programových projektů. Pro zjednodušení je nazývám moduly, aby se slovo projekt nezaměňovalo s projektem jako celkem. Základní a nejrozsáhlejší částí je modul SpravceUkolu, dále modul TreeGridView, který obsahuje implementaci speciální komponenty pro hierarchické zobrazení úkolů. Poslední částí je modul GoogleCalendarAdapter, který tvoří vrstvu mezi moduly SpravceUkolu a externími knihovnami společnosti Google pro komunikaci s Google kalendářem.
5.4.
Popis modulu SpravceUkolu
V následujícím textu naleznete popis vybraných tříd modulu SpravceUkolu a jejich nejdůležitějších částí, především pak veřejných vlastností a metod. 5.4.1.
Třída cData
Slouží pro interní uložení dat (úkolů a kategorií) načtených z datového souboru typu SSU. Tato třída využívá návrhový vzor jedináček (singleton), díky jehož použití je její instance v celém programu stejná a ze všech míst dostupná. Veškeré metody v ostatních třídách tak k ní mohou velice jednoduše přistupovat a mají zajištěno, že vždy pracují s aktuálními pracovními daty. • Vlastnosti
25
VsechnyUkoly List všech úkolů, které jsou načtené z datového souboru. Obsahuje aktuální data, se kterými se v celém programu pracuje. VsechnyKategorie List všech kategorií, které jsou načtené z datového souboru. Obsahuje aktuální data, se kterými se v celém programu pracuje. ID Jedinečný identifikátor datového souboru, který se využívá zejména při synchronizaci. Verze Verze datového souboru. Využívá se při synchronizaci. • Metody VelikostPriloh Vrací celkovou velikost všech příloh v aktuálním datovém souboru. Velikost je důležitá pro kontrolu, jestli uživatel nepřekročil povolenou maximální velikost datového souboru vkládáním příliš velkých příloh celým jejich obsahem. 5.4.2.
Třída cUkol
Objekt této třídy nese veškeré informace o jednom konkrétním úkolu. Obsahuje jeho unikátní ID, předmět (název) a další vlastnosti. Má dva konstruktory: jeden bezparametrický a druhý s parametrem objekt cUkol, z nějž si vyjma ID zkopíruje všechny vlastnosti. • Vlastnosti ID Každý vytvořený úkol dostane při vytvoření svoje jedinečné GUID. Úkoly získané z Google kalendáře mají ID podle UID událostí. Nazev Název, resp. předmět úkolu. Krátký text vystihující základní informace o úkolu. Text Dlouhý text úkolu, resp. popis úkolu. Zde je možno se rozepsat na více řádků. Dulezitost Důležitost úkolu. Možno nastavit na jednu z možností podle hodnot enumu eDulezitostUkolu.
26
Stav Stav úkolu. Jestli byl zahájen, dokončen, odložen atd. Možno nastavit na jednu z možností podle hodnot enumu eStavUkolu. Kategorie Seznam ID všech kategorií, do kterých je daný úkol zařazen. Zacatek Datum a čas začátku (zahájení) úkolu. Konec Datum a čas konce (termínu splnění) úkolu. FormatZacatku Určuje, zda je začátek úkolu nastaven v konkrétní datum a čas, nebo pouze v datum bez času, anebo nemá začátek nastaven vůbec. Možno nastavit na jednu z možností podle hodnot enumu eDatumNeboCasNeboOboji. FormatKonce Určuje zda je konec úkolu nastaven v konkrétní datum a čas, nebo pouze v datum bez času, anebo nemá konec nastaven vůbec. Možno nastavit na jednu z možností podle hodnot enumu eDatumNeboCasNeboOboji. Rozbaleny Určuje zda se má konkrétní úkol zobrazit s rozbalenými podúkoly nebo se sbalenými. IdRodice ID nadřazeného, tzv. rodičovského úkolu, pod který tento daný úkol patří. Ikona Obrázek vlastní ikony úkolu. Opakovani Objekt cOpakovani s nastavením opakování daného úkolu. Pripomenuti Objekt cPripomenuti s nastavením připomenutí daného úkolu. Prilohy Seznam všech příloh daného úkolu, tj. objektů cPriloha. • Metody VelikostPriloh Vrací celkovou velikost příloh daného úkolu. Velikost je důležitá pro kontrolu, jestli uživatel nepřekročil povolenou maximální velikost datového souboru vkládáním příliš velkých příloh celým jejich obsahem. 27
MaStejnyObsahS Porovnává aktuální úkol se zadaným, jsou-li s přihlédnutím na další zadané parametry stejné. Využívá se zejména pro rychlé porovnávání úkolů při synchronizaci. ZkopirujZ Zkopíruje vlastnosti ze zadaného úkolu do úkolu aktuálního. 5.4.3.
Třída cKategorie
Objekt této třídy nese veškeré informace o jedné konkrétní kategorii. Obsahuje její unikátní ID, název a další vlastnosti. • Vlastnosti ID Každá vytvořená kategorie dostane při vytvoření svoje jedinečné GUID. Nazev Název kategorie. Krátký text vystihující základní informace o kategorii. Text Dlouhý text kategorie, resp. popis kategorie. Zde je možno se rozepsat na více řádků. Barva Barva kategorie v listu kategorií. Používá se také při vytváření barvy úkolu do ní zařazeného. Zatrzena Určuje jestli má být kategorie v listu kategorií zatržená, neboli jestli mají být úkoly v ní zařazené viditelné. • Metody MaStejnyObsahS Porovnává aktuální kategorii se zadanou, jsou-li s přihlédnutím na další zadané parametry stejné. Využívá se zejména pro rychlé porovnávání úkolů při synchronizaci. ZkopirujZ Zkopíruje vlastnosti ze zadané kategorie do kategorie aktuální.
28
5.4.4.
Třída cListUkolu
Seskupuje úkoly, které mohou mít podřazené úkoly (někdy také nazývané jako potomci). Usnadňuje práci s podřazenými úkoly a implementuje užitečný indexer pro přístup k úkolům v seznamu podle jejich ID. • Metody VratPotomkyUkolu Vrátí list podřazených úkolů k zadanému úkolu a to i rekurzivně do hloubky. VratZaukolovaneDny Vrátí pole datumů dnů, ve kterých je nějaký úkol. Využívá se pro vyznačení „zaúkolovanýchÿ dnů v kalendáři. 5.4.5.
Třída cListKategorii
Seskupuje kategorie, usnadňuje práci s nimi a implementuje užitečný indexer pro přístup ke kategoriím v seznamu podle jejich ID. V konstruktoru se automaticky vytváří virtuální kategorie pro úkoly, které nejsou zařazené v žádné jiné kategorii, nazvaná
. • Metody PridejList Přidá do seznamu kategorií další kategorie. Používá se pro rychlé spojení dvou seznamů kategorií. VratKategoriiZNazvu Pokud už mezi kategoriemi je jedna stejného názvu jako je název zadaný, tak ji vrátí, jinak vrací null. Slouží k prevenci duplicitních názvů kategorií. 5.4.6.
Třída cOpakovani
Definuje objekt opakování úkolu. Obsahuje veškeré vlastnosti nastavení opakování a metody pro výpočet následujících opakování. Škála možného nastavení opakování je opravdu široká a variabilní od denního až po roční. Nastavit lze i omezenou dobu nebo konkrétní počet opakování. Třída má dva konstruktory: jeden bezparametrický a druhý s parametrem objekt cOpakovani, z nějž si zkopíruje celé nastavení. • Metody VratDalsiOpakovaniUkolu Vrátí datum nejbližšího opakování úkolu podle nastavení jeho opakování počínaje zadaným datem. 29
MaStejnyObsahS Porovnává aktuální opakování se zadaným, mají-li identické nastavení. Využívá se při porovnávání dvou úkolů. 5.4.7.
Třída cPripomenuti
Definuje objekt připomenutí úkolu. Obsahuje veškeré vlastnosti nastavení připomenutí a metody pro výpočet času a data připomenutí. Připomenutí může být nastaveno na konkrétní datum a čas, anebo na zadanou dobu před začátkem nebo koncem úkolu. Uživatel může být upozorněn zobrazením zprávy, zvukem, anebo také spuštěním libovolného souboru. Třída má dva konstruktory: jeden bezparametrický a druhý s parametrem objekt cPripomenuti, z nějž si zkopíruje celé nastavení. • Metody MaStejnyObsahS Porovnává aktuální připomenutí se zadaným jestli mají identické nastavení. Využívá se při porovnávání dvou úkolů. 5.4.8.
Třída cPriloha
Definuje objekt jedné přílohy úkolu. Obsahuje veškeré vlastnosti nastavení přílohy a metody pro práci s nimi. Přílohu lze vložit buď jako odkaz, kdy je uložena pouze cesta k souboru, anebo celým svým obsahem, kdy se vkládaný soubor serializuje a uloží přímo do datového objektu přílohy a později i do datového souboru na disku. První způsob umožňuje vkládat odkazy i na velké soubory, ale tyto přílohy fungují jen na počítači, na kterém byly vloženy. Druhý způsob umožňuje přílohu přenést přímo v datovém souboru i při synchronizaci na jiný počítač, ale je zde limit velikosti příloh. Jeden vkládaný soubor může mít maximálně 25 MB (doporučeno méně než 10 MB) a celkově mohou přílohy dosáhnout maximálně 100 MB. Třída má dva konstruktory: jeden bezparametrický a druhý s parametrem objekt cPriloha, z nějž si zkopíruje celé nastavení. • Vlastnosti FormaPrilohy Určuje jakého typu příloha je (podle enumu eFormaPrilohy). Může být buď formou odkazu na souboru, anebo formou vložení celého obsahu souboru. NazevSouboru Název souboru včetně přípony. Využívá se především při uložení souboru vloženého celým obsahem na disk při jeho spuštění.
30
CestaKSouboru Cesta k souboru. Využívá se jen pokud je formát přílohy odkaz. Soubor Obsah souboru vloženého celým svým obsahem. Využívá se pouze pokud je soubor vložen celým svým obsahem a ne jen jako odkaz. • Metody NactiSoubor Načte soubor ze zadané cesty a převede ho na pole bytů. ZapisSouborZPrilohy Zapíše vložený soubor přílohy na disk do složky tohoto programu a spustí ho. Využívá se při spouštění přiloženého souboru vloženého celým svým obsahem. MaStejnyObsahS Porovnává aktuální přílohu se zadanou jestli jsou stejné. Využívá se při porovnávání dvou úkolů. 5.4.9.
Třída cGeneratorOpakovani
Statická třída s jedinou metodou, která slouží k vytvoření opakujících se úkolů. Generátor se využívá v pravidelných intervalech, aby zobrazená data byla vždy aktuální. • Metody VytvorOpakovaneUkoly Pokud nastane doba, kdy se má nějaký úkol zopakovat, tak tato metoda vytvoří kopii tohoto úkolu jako jeho opakování. Původní úkol zůstává, pouze se mu nastavení opakování odebere a předá jeho nově vytvořené opakovací kopii. S každým zopakováním úkolu tak vzniká jeho kopie s posunutým datem a časem začátku a konce. 5.4.10.
Třída cGeneratorPripomenuti
Statická třída sloužící k hlídání a případnému spuštění připomínek úkolů. Generátor se využívá v pravidelných intervalech, aby k připomenutí došlo ve správný čas. • Metody VytvorAktualniPripomenuti Pokud nastane doba, kdy se má nějaký úkol připomenout, tak tato metoda iniciuje nastavený způsob připomenutí. Může to být zobrazení zprávy, přehrání zvuku, anebo spuštění libovolného souboru. 31
5.4.11.
Třída cXmlAdapter
Statická třída sloužící pro zápis dat z programu (úkolů a kategorií) do formátovaného xml souboru (dále jen datový soubor) a také jejich zpětného přečtení a načtení do programu. Struktura xml dokumentu byla zvolena optimálně tak, aby byla co nejpřehlednější pro případnou ruční editaci a zároveň byla jednoduchá pro programové zpracování. Zejména datum a čas je ukládán po jednotlivých složkách tak, aby nemohlo dojít k chybné editaci či interpretaci kvůli odlišným místním zvyklostem jejich zápisu. U vlastních ikon a příloh vložených celým svým obsahem dochází při ukládání k serializaci a při načítaní ke zpětné deserializaci. Pro tyto datové soubory se používá přípona SSU (odvozeno od soubor správce úkolů). Zobrazené úkoly závisí na konkrétním otevřeném datovém souboru. Každý uživatel tak může mít jeden nebo i více vlastních a vzájemně zcela nezávislých datových souborů se zcela odlišnými úkoly a kategoriemi. • Metody UlozVsechnoDoXml Vloží veškerá zadaná data o úkolech a kategoriích do xml dokumentu. Dále přidá doplňující informace jako je id souboru a jeho verze a tento dokument uloží s použitím kódování UTF8. NactiXmlDokument Načte celý xml dokument ze zadaného místa do paměti. UvolniXmlDokument Smaže načtený xml dokument z proměnné a pokusí se urychlit jeho odstranění z paměti, aby se tak uvolnilo místo pro případný další načtený soubor. VratIdZXml Vrátí id souboru z načteného xml dokumentu. VratVerziZXml Vrátí verzi souboru z načteného xml dokumentu. VratUkolyZXml Vrátí všechny úkoly z načteného xml dokumentu. Pokud se některou konkrétní položku nepodaří načíst, pokračuje čtením dalších tak, aby přečetla i z poškozeného datového souboru co možná nejvíce. VratKategorieZXml Vrátí všechny kategorie z načteného xml dokumentu. Pokud se některou konkrétní položku nepodaří načíst, pokračuje čtením dalších tak, aby přečetla i z poškozeného datového souboru co možná nejvíce.
32
5.4.12.
Třída cExporter
Statická třída starající se o export datového souboru do formátu CSV a TXT. Do formátu CSV jsou data ukládána jako hodnoty oddělené čárkou a do formátu TXT jako hodnoty oddělené tabulátorem. Pro formát CSV (commaseparated values, hodnoty oddělené čárkami) neexistuje žádná oficiální specifikace, ale ve většině případů se dodržuje popis formátu podle RFC4180 [3]. • Metody ProvedExport Provede export aktuálně načteného datového souboru do zadaného formátu. Jako kódování se používá Windows-1250. 5.4.13.
Třída cZalohy
Tato třída umožňuje vytváření záloh datového souboru. Záložní soubory se vytvářejí automaticky při každé změně souboru. V případě, že je aktivní automatické ukládání při každé změně, pak se zálohy vytváří pouze při otevření datového souboru. Vytvářeno je pět záložních souborů, k jejichž názvu je přidáno 1.bak až 5.bak. Nejčerstvější je vždy soubor s číslem jedna. 5.4.14.
Třída frmHlavniOkno
Hlavní okno programu, kde se zobrazují úkoly ve speciální komponentě TreeGridView, která vznikla rozšířením standardního DataGridView o hierarchické zobrazení, umožňuje pracovat s řádky tabulky jako s uzly a jejich sbalením a rozbalením. Dále se na něm nalézá list kategorií, kalendář, podrobný text úkolu, tlačítka pro práci s úkoly a další prvky. • Vlastnosti TabulkaUkolu Hlavní tabulka s úkoly. Objekt TreeGridView, který funguje jako kombinace DataGridView a TreeView a umožňuje tak zobrazit úkoly ve stromové hierarchii zároveň s více sloupci. ListViewKategorie Objekt typu ListView pro zobrazení kategorií. • Metody AktualizujVse Zaktualizuje úkoly v tabulce, vygeneruje jejich opakování a obnoví případně i kategorie a informace ve statusbaru.
33
RozbalitVse Rozbalí všechny uzly v tabulce. Tím se zobrazí veškeré sbalené podúkoly. SbalitVse Sbalí všechny uzly v tabulce. Tím se skryjí veškeré podúkoly. StromovaNeboNormalniStruktura Přepíná mezi zobrazením úkolů ve výchozí stromové struktuře, ve které však není možné úkoly setřídit podle sloupců, a zobrazením v klasické tabulce bez hierarchie, ve které je setřídění umožněno standardním kliknutím na buňky v záhlaví sloupců. SkrytNeboZobrazDokoncene Jak název napovídá slouží ke skrytí nebo naopak zobrazení úkolů, které již byly dokončeny. Takové úkoly se zobrazují šedivým písmem, které je navíc přeškrtnuté. OmezNeboNeomezPodleKalendare Způsobí, že se v tabulce s úkoly zobrazí jen ty, jejichž interval od začátku do konce úkolu se překrývá s intervalem označených dnů v kalendáři. Toto zobrazení je možné ovlivnit úpravou tolerance v nastavení programu. Pokud se jak označen v kalendáři jeden den, lze například nastavit, aby se zobrazovaly úkoly i tři dny zpětně a třeba dva týdny dopředu. Úkoly které nemají datum začátku ani konce se zobrazují stále. OtevriEditorUkolu Zobrazí okno editoru pro vytvoření nebo úpravu úkolu nebo podúkolu. ZobrazUkoly Hlavní zobrazovací metoda tabulky úkolů volaná při každé změně v úkolech. Prochází všechny úkoly z datové vrstvy a podle veškerých pravidel pro zobrazení, jako je skrytí dokončených, omezení kalendářem, zaškrtnutými kategoriemi a v neposlední řadě také probíhajícím vyhledáváním, vytvoří jednotlivé řádky, resp. uzly (nody) v tabulce. Obstarává také obarvení pozadí řádku podle kategorií a zbarvení textu podle toho zda je úkol dokončen nebo nesplněn po termínu dokončení. Třída formu hlavního okna obsahuje mnoho dalších pomocných metod zabezpečujících fungování všech na něm umístěných komponent. Není však nezbytně nutné se o každé z nich jednotlivě v tomto textu rozepisovat. Podrobnější popis z uživatelského hlediska naleznete v 6. kapitole. 5.4.15.
Třída frmEditorUkolu
Slouží k vytvoření a editaci jednoho úkolu. Prezentuje veškeré nastavitelné 34
hodnoty příslušného úkolu a umožňuje jejich úpravy. Sdružuje pod sebou několik jednotlivých nastavovacích user controlů. • User Controly ucEditorUkol Sdružuje nastavení nejdůležitějších hodnot úkolu jako je jeho předmět, data a času začátku a konce, důležitost, stav, vlastní ikonu a poznámky k úkolu. Nachází se na něm i nastavení nadřazeného úkolu. Libovolný úkol, tak lze jednoduše změnit na podúkol jiného úkolu, nebo naopak na úkol na kořenové úrovni. ucEditorKategorie Umožňuje přidávat a odebírat úkol z nabízených kategorií. Dále umožňuje vytvářet kategorie nové, editovat je a mazat. Tyto změny se pak projeví nejen u editovaného úkolu, ale i v celém programu. ucEditorOpakovani Zahrnuje veškeré nastavení opakování úkolu. V přehledném uživatelském rozhraní je možno nastavit libovolný vzor pro opakování úkolu i rozsah těchto opakování. ucEditorPripomenuti Obsahuje nastavení připomenutí, které může být buď žádné nebo v konkrétní den a čas, anebo zadanou dobu před začátkem či koncem úkolu. Lze také vybrat formu připomenutí a to buď zobrazením upozornění, přehráním zvuku, anebo také spuštěním souboru. ucEditorPriloha Umožňuje přidávat, mazat a samozřejmě také otevírat vložené přílohy. Přidávané soubory mohou být vloženy formou odkazu na soubor, nebo celým svým obsahem. Při přidávání souborů celým obsahem je hlídána hranice 10 MB (resp. maximálně 25 MB) na jeden soubor a celková velikost všech příloh v datovém souboru na maximálně 100 MB. 5.4.16.
Třída frmImporter
Tento nástroj pro import umožňuje podrobné nastavení formátu, způsobu a kódování importovaného souboru. Samotný soubor CSV totiž zpravidla informaci o kódování nenese. Systém byl navrhnut zejména pro kompatibilitu s exportem z programů Microsoft Outlook a Task Coach, ale díky rozsáhlým možnostem nastavení umožňuje import i z jiných zdrojů, které alespoň částečně dodržují formát CSV. • Metody
35
NactiSeznamNazvuPolozek Rozdělí každý záznam na jednotlivé položky a pokusí se je přiřadit podle názvu. Je zvykem, že první řádek importovaného souboru obsahuje názvy položek, resp. sloupců. Pokud tomu tak není, jsou sloupce pojmenovány automaticky a uživatel je ručně přiřadí k těm odpovídajícím. PokusSePriraditNazvyPolozek Pokud je první řádek importovaného souboru tvořen názvy sloupců, pokusí se na základě shody se svým vnitřním seznamem možných názvů sloupce spárovat s položkami úkolu. VytvorUkolyAKategorie Vytvoří úkoly a kategorie podle nastaveného vzoru přidělení sloupců k položkám. 5.4.17.
Třída frmSynchronizace
Manažer synchronizace je nástroj pro synchronizování načteného datového souboru s jiným vybraným souborem, který může být umístěný na lokálním počítači, nebo v síti. Dále je také schopen synchronizovat aplikaci se službou Google kalendář. Při vytvoření objektu formu frmSynchronizace se otestuje, zda jsou přítomné knihovny pro komunikaci s Google kalendářem a pokud ne, tak dojde k deaktivaci této funkce. Celá synchronizace běží ve vlastním nezávislém vlákně, aby tak při čekání na odpověď při síťové komunikaci a při následném zpracování dat nevytěžovala hlavní vlákno programu. Je k tomu využito komponenty BackgroundWorker. • Metody ProvedSynchronizaci Stáhne data importovaného souboru z lokálního souboru, sítě nebo Googlu a vyvolá jejich porovnání a synchronizaci. SynchronizujUkoly Porovná lokální a stažené úkoly podle jejich id a podle nastavení doplní do obou souborů ty, které v nich chybí. Pokud najde úkoly stejného id, tak se podívá jestli se neliší v nastavení některé položky. Pokud ne, tak jde dál, ale pokud ano, tak vyvolá konflikt, který dle nastavení buď okamžité vyřeší, nebo předá řešiteli konfliktů. SynchronizujKategorie Funguje velmi podobně jako metoda SynchronizujUkoly s tím rozdílem, že provádí porovnávání kategorií.
36
5.4.18.
Třída frmResitelKonfliktu
Řešitel konfliktů slouží k ručnímu rozhodnutí, která z možností konfliktní synchronizované položky se má použít. Okno řešitele sdružuje jednotlivé user controly ucVizualizaceKonfliktu. Každý tento user control zobrazuje jednu konkrétní konfliktní položku. Poté, co uživatel vybere jednu možnost, je tato použita v obou synchronizovaných souborech.
5.5.
Popis modulu TreeGridView
Modul TreeGridView implementuje uživatelský ovládací prvek, který umožňuje zobrazovat data v tabulce se současným zobrazením jejich hierarchické struktury. Podobnou funkčnost nabízel DataGrid v .NET Frameworku do verze 1.1 včetně. Od verze 2.0 jej však nahradil DataGridView, který již neumožňuje hierarchické zobrazení dat. Samotný „starý datagridÿ však nesplňoval veškeré požadavky, a tak byla vybrána jiná externí komponenta a to již zmíněný TreeGridView. Původní kód pochází od vývojáře Marka Rideouta, který jej prezentuje na svém blogu [4], ale pro konkrétní účely této aplikace byl mírně upraven. Zejména byla přidána možnost přepnout stromové hierarchické zobrazení i do normálního tabulkového zobrazení. V tomto zobrazení byla také aktivována možnost setřídění sloupců. Dále byla především opravena chyba při pokusu o zobrazení komponenty při deaktivovaných vizuálních stylech ve Windows.
5.6.
Popis modulu GoogleCalendarAdapter
Tento modul slouží jako adaptér, neboli mezičlánek mezi modulem SpravceUkolu a externími knihovnami společnosti Google. Umožňuje stažení záznamů z Google kalendáře, jejich převod do formy pochopitelné pro SpravceUkolu a také naopak jejich odeslání zpět. V době tvorby tohoto projektu Google nabízel pro vývojáře Google Calendar Data API 2.0 umožňující pracovat s objekty, které Google nazývá události. Pro klasické úkoly toto API není naimplementováno a jiné Google do uzávěrky tohoto projektu nepředstavil. Tak jsou úkoly ze Správce úkolů reprezentovány v Google kalendáři jako události a naopak události z Google kalendáře ve Správci úkolů jako úkoly. Kvůli rozdílnému přístupu k událostem, resp. úkolům se synchronizují pouze předmět úkolu, popis úkolu a datum a čas začátku a konce úkolu. Operováno je se všemi úkoly počínaje 1.1.1970 0:00:00 a konče 31.12.2030 23:59:59. Mimo tyto hranice totiž dochází ze strany Google kalendáře, resp. ze strany Google Calendar Data API 2.0 k běhovým chybám. • Metody StahniListZaznamuZGoogleCal
37
Stáhne veškeré události z Google kalendáře podle zadaného uživatelského jména a dalších parametrů. VratDataZGoogleCal Získaná data z Google kalendáře převede do ArrayListu, který je vytvořen tak, aby bylo možné jej přečíst v modulu SpravceUkolu. OdesliZaznamDoGoogleCal ArrayList úkolů ze SpravceUkolu převede na objekty EventFeed, které pak odešle do Google kalendáře.
5.7.
Testování aplikace
Program byl již v průběhu implementace podroben testování několika nezávislými uživateli s rozdílnými znalostmi ovládání počítače počínaje běžnými uživateli až po programátory. Bylo tak učiněno proto, aby mohlo být na případné připomínky operativně zareagováno. Několik oslovených testerů tak aktivně aplikaci používalo po dobu několika týdnů k zaznamenávání osobních a jiných úkolů. Odhalilo se tím několik chyb a nedodělků v uživatelském rozhraní. Zároveň jsem získal mnoho připomínek a konstruktivních podnětů, které jsem se pokusil vyřešit a aplikovat při dalším vývoji.
38
6.
Uživatelská dokumentace
Program byl navržen tak, aby byl z uživatelského hlediska snadno použitelný. Ergonomie ovládání byla jednou z priorit tak, aby organizaci úkolů skutečně usnadňoval a práce s ním byla pohodlná a intuitivní. Při používání správně navrženého programu totiž uživatel po krátkém seznámení již nemá přemýšlet, jak jej používat, ale pouze nad tím, co do něj vkládá a zapisuje. Snažil jsem se dodržovat často opomíjené konvence rozmístění, rozměrů a popisků tlačítek a jiných prvků v oknech. Čerpal jsem zejména z konkrétních příkladů přímo v systému Windows a také z publikace Mgr. Martina Dostála Základy tvorby uživatelského rozhraní [5].
6.1.
Instalace a požadavky
Obrázek 8. Okno instalátoru Aplikace byla vyvíjena primárně pro operační systémy Windows Vista a Windows 7, ale bez problémů funguje i na starších Windows XP. Ke svému běhu vyžaduje nainstalované prostředí .NET Framework 3.5. Pokud toto není na cílovém počítači přítomno, nainstaluje se společně s aplikací. Instalace je tvoře dvěma instalačními soubory: SpravceUkoluSetup.msi 39
a SpravceUkoluSetup.exe. První z nich je pro instalaci nutný, druhý je nepovinný. Je-li instalace spuštěna pomocí souboru SpravceUkoluSetup.exe, pak proběhne případná doinstalace prostředí Framework automaticky. V případě spuštění pomocí SpravceUkoluSetup.msi je uživatel pouze odkázán na webovou stránku, odkud příslušné prostředí může nainstalovat. Proto je doporučeno spouštět instalaci pomocí SpravceSouboruSetup.exe, který se o případnou doinstalaci potřebných prerekvizit postará automaticky. Průběh instalace je poměrně přímočarý. Uživatel je krátce obeznámen s instalovaným programem a může specifikovat cestu, kam bude nainstalován (viz obrázek 8.) Instalátor vytvoří zástupce v nabídce Start a přiřadí programu asociaci s koncovkou souborů SSU. Pokud uživatel nezvolí jinak, je aplikace nainstalována do složky C:\Program Files\Správce úkolů\, resp. C:\Program Files (x86)\Správce úkolů\ (64-bitový operační systém). Do této složky jsou při instalaci nakopírovány i potřebné knihovny (soubory DLL) a nápověda. Program se spouští souborem SpravceUkolu.exe, resp. jeho zástupcem.
6.2.
Popis hlavního okna programu
Obrázek 9. Hlavní okno programu
40
Celé hlavní okno, které tvoří centrum aplikace, lze rozdělit na sedm následujících částí (viz obrázek 9.). • Horní menu Je umístěno v nejhornější části programu v celé jeho šíři hned pod řádkem s názvem programu a tlačítky pro minimalizaci, maximalizaci a zavření. Je na něm pět podmenu: Soubor, Akce, Zobrazení, Nástroje a Nápověda. – Soubor Obsahuje možnosti týkající se vytváření, otevírání a ukládání datového souboru s úkoly, tisku, importu a exportu. – Akce Nabízí možnosti vytvořit nový úkol, podúkol k vybranému úkolu, stejně tak jako vybraný úkol upravit nebo smazat. – Zobrazení Slouží k zobrazení a skrytí některých částí hlavního okna programu tzv. panelů. Dále umožňuje rozbalit a sbalit všechny úkoly, přepínat mezi stromovým a čistě tabulkovým zobrazením, skrýt nebo zobrazit ty dokončené a zobrazovat jen ty úkoly, které odpovídají vybraným dnům v kalendáři. – Nástroje Obsahuje nastavení celého programu a nástroj pro synchronizaci datového souboru s jinde umístěnou rozpracovanou kopií stejného souboru nebo s Google kalendářem. – Nápověda V tomto menu můžete vyvolat nápovědu a zobrazit informace o programu. • Panel akce a zobrazení Tento panel se nachází v levé části programu (vlevo od tabulky s úkoly, nad kalendářem). Umožňuje rychlý a velmi přehledný přístup k nejčastěji používaným funkcím programu. Skládá se ze dvou částí: Akce a Zobrazení. – Akce Nabízí možnosti vytvořit nový úkol, podúkol k vybranému úkolu, stejně tak jako vybraný úkol upravit nebo smazat. – Zobrazení Umožňuje rozbalit a sbalit všechny úkoly, přepínat mezi stromovým a čistě tabulkovým zobrazením, skrýt nebo zobrazit ty dokončené a zobrazovat jen ty úkoly, které odpovídají vybraným dnům v kalendáři. 41
• Panel kalendář Zobrazuje klasický kalendář s možností výběru jednoho nebo více dnů. Pokud je zatržená volba Podle kalendáře, pak se v tabulce úkolů zobrazují jen ty úkoly, které ve vybraných dnech v kalendáři probíhají, anebo nemají svoje trvání omezené. Toto omezení zobrazení úkolů lze rozšířit použitím tolerance v nastavení programu. • Panel úkoly Je to hlavní panel a nejdůležitější část programu. Obsahuje tabulku s jednotlivými úkoly. Je složen ze dvou částí: Hledání a Tabulka úkolů. – Hledání V horní části tohoto panelu se mimo ikony a textu Úkoly nalézá na pravé straně také prvek pro vyhledávání v úkolech. V jeho středu je textové pole, kam se zadává požadovaný hledaný výraz, vlevo tlačítko s lupou, které zobrazuje menu s výběrem, kde všude se má hledat, a vpravo tlačítko s křížkem pro zrušení hledání. – Tabulka úkolů V dolní části panelu úkolů zabírá většinu místa samotná tabulka obsahující jednotlivé úkoly. Je to nejdůležitější část celého okna a celé aplikace. Mimo vizualizaci úkolů má mnoho dalších funkcí jako: ∗ Po kliknutí pravým tlačítkem na záhlaví sloupců se zobrazí menu, ve kterém je možno jednotlivé sloupce zobrazit nebo skrýt. ∗ U jednotlivých úkolů se na řádcích zobrazují všechny dostupné informace podle aktuálně zobrazených sloupců. ∗ Hierarchicky seskupené úkoly lze rozbalovat a sbalovat kliknutím na symboly + a − vlevo od ikon úkolů. ∗ Po kliknutí pravým tlačítkem na úkol se zobrazí menu s výběrem akcí stejně jako v menu Akce, plus je zde navíc možnost úkol duplikovat. ∗ Dvojitým poklikáním na úkol se otevře okno pro jeho editaci. ∗ Chytnutím úkolu myší a jeho tažením můžete úkoly přemisťovat pod jiné úkoly, nebo naopak ze závislosti na jiných vyjmout. ∗ Pokud je úkol zařazen do nějaké kategorie, pak má v tabulce barvu podle barvy této kategorie. Je-li zařazen do více kategorií, pak je barva úkolu průměrnou barvou těchto kategorií (průměr se počítá jen z viditelných kategorií). ∗ Zobrazené úkoly lze omezit výběrem dne (dnů) v kalendáři, zatržením jen některých kategorií v panelu kategorie, anebo vyhledáváním.
42
• Panel text úkolu Nachází se v dolní střední části pod panelem úkolů. Zobrazuje podrobný text úkolu, který je aktuálně vybrán a označen v tabulce úkolů. Pokud je to povoleno v nastavení programu, tak umožňuje i rychlou přímou editaci tohoto textu, která se ihned automaticky do úkolu ukládá. Tento panel je možné zvětšovat a zmenšovat tažením za předěl mezi ním a panelem úkolů. Dále je možné jej zavřít a to buď z menu Zobrazení/Panely, anebo kliknutím na křížek v pravém horním rohu panelu. • Panel kategorie Nachází se v pravé části programu. Zobrazuje všechny kategorie v otevřeném datovém souboru. U každé kategorie je prvek pro zatržení (checkbox ), kterým lze rozhodnout, zda se mají úkoly spadající do této kategorie zobrazovat v panelu úkolů. V seznamu kategorií je vždy navíc kategorie nazvaná , která umožňuje skrýt nebo zobrazit ty úkoly, které nejsou do žádné kategorie zařazeny. Kliknutím pravým tlačítkem myši do seznamu kategorií se zobrazí menu, pomocí kterého lze kategorie přidávat, upravovat a mazat. Takovéto úpravy kategorií lze provádět také přímo v editaci libovolného úkolu na kartě Kategorie. Tento panel je možné zvětšovat a zmenšovat tažením za předěl mezi ním a panelem úkolů. Dále je možné jej zavřít a to buď z menu Zobrazení/Panely, anebo kliknutím na křížek v pravém horním rohu panelu. • Stavová lišta Stavová lišta (neboli statusbar) zobrazuje některé doplňkové informace, jako je celkový počet úkolů v datovém souboru a počet zobrazených úkolů v panelu úkoly.
6.3.
Datové soubory
Všechny úkoly a kategorie se ukládají do datového souboru s koncovkou SSU. Z menu Soubor lze tyto datové soubory otevírat, ukládat, anebo vytvářet nové. Uživatel si je může uložit na libovolné místo ve svém počítači, např. mezi dokumenty. Můžete tak používat jeden, nebo i více zcela nezávislých datových souborů s odlišným obsahem. Pomocí nástroje Synchronizace je možno datové soubory synchronizovat a sjednotit tak jejich obsah.
6.4.
Úkoly
Nový úkol lze vytvořit kliknutím na Nový úkol z horního menu Akce, z panelu Akce a zobrazeni, z kontextového menu v tabulce úkolů (kliknutím pravým tlačítkem do tabulky s úkoly), anebo klávesovou zkratkou Ctrl+U. Stejným způsobem lze vytvořit i nový podúkol k některému již existujícímu úkolu pomocí položky
43
Nový podúkol nebo klávesovou zkratkou Ctrl+Shift+U. Existující úkol je pak možno upravit, resp. smazat využitím položky Upravit úkol, resp. Smazat úkol ze stejných menu nebo klávesovou zkratkou Ctrl+E, resp. klávesou Delete. Při vytváření a úpravě úkolů se zobrazí okno Editoru úkolů.
6.5.
Kategorie
Úkoly lze třídit do kategorií. Každý úkol může být zařazen do více kategorií. Barva každého úkolu v tabulce se pak vytváří jako průměr z barev všech kategorií, ve kterých je daný úkol zařazen. Novou kategorii lze vytvořit kliknutím na Nová kategorie z horního menu Akce nebo z kontextového menu v seznamu kategorií (kliknutím pravým tlačítkem do seznamu kategorií). Existující kategorii je možno upravit, resp. smazat využitím položky Upravit kategorii, resp. Smazat kategorii ze stejných menu. Při vytváření a úpravě kategorií se zobrazí okno Editoru kategorií.
6.6.
Editor úkolů a editor kategorií
Obrázek 10. Editor úkolů Editor úkolů slouží k vytváření úkolů a podúkolů a jejich úpravě. Sdružuje několik karet s veškerým dostupným nastavením úkolu. Na první kartě se nachází nejdůležitější položky a to předmět úkolu, datum a čas zahájení a dokončení 44
úkolu, důležitost, stav, poznámky, vlastní ikona a případně i nadřazený úkol. Mimo předmětu není nutné ostatní položky vyplnit a nastavit. Na druhé kartě lze úkol zařadit do existujících kategorií, ale také nové kategorie vytvářet, upravovat a mazat. Třetí karta obsahuje rozsáhlé možnosti nastavení opakování úkolu. Na další kartě je možno nastavit opakování úkolu a na poslední přidat přílohy. Editor kategorií slouží k vytváření a úpravě kategorií. Nastavit lze název, vlastní barvu a popis.
6.7.
Nástroj pro import úkolů
Obrázek 11. Nástroj pro import úkolů
Pro importování úkolu se v menu Soubor nachází nástroj pro jeho podrobné nastavení. Po vybrání konkrétního souboru lze nastavit použitý oddělovač položek v souboru, kódování a zda se mají importovat úkoly s kategoriemi, jen úkoly nebo 45
jen kategorie. Níže pak lze přehledně na konkrétních záznamech vybrat, se kterou položkou úkolu se má každá položka importovaného souboru spárovat.
6.8.
Nástroj Manažer synchronizace
Obrázek 12. Manažer synchronizace
Tento nástroj slouží k synchronizaci aktuálně načteného datového souboru s datovým souborem umístěným na stejném počítači, jiném počítači v lokální síti, na libovolném dostupném místě v internetu, anebo s Google kalendářem. Dojde k sjednocení úkolů a kategorií a případný konflikt položek se vyřeší automaticky, případně pokud nelze rozhodnout, tak se zobrazí přehledný řešitel jednotlivých konfliktů (dle nastavení synchronizace). V případě synchronizace se souborem v internetu nebo Google kalendářem může uživatel vložit přihlašovací údaje. Vybrat je možno obousměrnou synchronizaci, pouze import, anebo pouze export úkolů a kategorií. Pokud uživatel upraví stejný úkol v obou synchronizovaných souborech, pak dojde ke konfliktu a ten se potom řeší podle dalšího nastavení. Vybrat lze ruční řešení, při kterém má uživatel nejlepší kontrolu nad výsledkem synchronizace, přepsání starší verze datového souboru novější, přepsání aktuálního importovaným, nebo naopak, či přeskakování takových položek.
46
Při synchronizaci s lokálním souborem se zadává úplná cesta k tomuto souboru. V případě souboru umístěného v síti pak zase úplná síťová cesta až k souboru včetně protokolu (ftp nebo http) a pokud je to nutné, tak i přihlašovací údaje. Pro synchronizaci s online službou byl vybrán Google kalendář. Ten neumožňuje synchronizovat přímo úkoly, a tak jsou úkoly ze Správce úkolů převedeny na události v Google kalendáři a naopak. Vzhledem k této odlišnosti je možné synchronizovat pouze předměty úkolů, popis, datum a čas začátku a datum a čas konce. Ostatní vlastnosti včetně stromové hierarchie se nesynchronizují, ale v datovém souboru zůstávají zachovány. Položky nazývané Googlem jako úkoly synchronizovat nelze. Při každém použití tohoto typu synchronizace se zobrazí výběr dostupných kalendářů (pokud je jich více než jeden). Někteří uživatelé si do primárního kalendáře importují svátky a jmeniny a takový kalendář pak není vhodné se Správcem úkolů synchronizovat, protože tyto svátky jsou vlastně nekonečně se opakující události, resp. úkoly. Před první synchronizací doporučuji v rozhraní Google kalendáře vytvořit nový kalendář určený speciálně pro synchronizaci se Správcem úkolů.
6.9.
Nastavení
Dialogové okno s nastavením programu umožňuje nastavit mnoho parametrů programu. Je rozděleno na tři karty: Obecné, Zobrazení a Hledání a kalendář. Na kartě Obecné se dá nastavit jaký datový soubor se má načíst po spuštění programu, parametry ukládání a zálohování a dalších akcí a úkoly. Na kartě Zobrazení jsou položky týkající se zobrazených úkolů v závislosti na jejich stavu a zobrazených panelech. Na poslední kartě pak lze nastavit, kde má probíhat hledání a toleranci zobrazených úkolů vzhledem k vybraným dnům v kalendáři. Poslední zmíněná položka si zasluhuje trochu přesnější vysvětlení. Pokud není filtrování zobrazených úkolů podle kalendáře deaktivováno, pak se zobrazují pouze úkoly u nichž se interval data začátku a data dokončení překrývá s vybranými dny v kalendáři. Neboli jsou zobrazeny jen ty úkoly, které ve vybraných dnech probíhají. Pomocí zmiňovaného nastavení v nastavovacím dialogu lze nastavit širší interval k vybraným dnům v kalendáři. Lze nastavit 0 až 999 dnů, týdnů, měsíců nebo let.
47
Závěr Cílem této bakalářské práce bylo vytvořit aplikaci na organizaci a správu úkolů a událostí, kterou bude moci využít široká škála uživatelů. Podařilo se splnit všechny požadavky zadání, mezi které patří především: stromová hierarchie úkolů, synchronizace a možnost opakování úkolů. Aplikace byla vyvíjena také s ohledem na komfort ovládání a kvalitní uživatelské rozhraní. Text práce v prvních kapitolách krátce pojednává o time managementu a významu úkolů v každodenním životě. Dále je provedena stručná analýza existujících softwarových řešení stejného problému, jejich zhodnocení a vliv na tento projekt. V dalších kapitolách pak lze nalézt popis vytvořené aplikace z programátorského a také uživatelského hlediska. Do budoucna lze uvažovat nad rozšířením aplikace o integraci užší podpory pro synchronizaci s dalšími kalendářovými a „to-doÿ službami. Taktéž podpora komunikace a synchronizace s mobilními zařízeními a kapesními počítači by mohla být vhodným směrem dalšího vývoje.
48
Conclusions The aim of this thesis was to create an application to organize and manage tasks and events that will benefit a wide range of users. We managed to meet all the requirements of the award, which includes especially: a tree hierarchy of tasks, synchronization and the possibility of repetitive tasks. The application was developed with a view to handling comfort and high quality user interface. First chapter briefly discusses the importance of time management and importance of tasks in everyday life. Next chapter contains a brief analysis of existing software solutions to the same problem, and assess their impact on this project. In other chapters can be find a description of the application from programmer and user perspective. In the future can be considered extending the application of enhanced integration support for synchronization with other calendaring and to-do service. Also support for communication and synchronization with mobile devices and handheld computers could be an appropriate direction for further development.
49
Reference [1] Allen, David. Getting Things Done: The Art of Stress-Free Productivity. ISBN 978-0142000281, Penguin, USA, 2002. [2] McConnell, Steve. Code Complete. ISBN 978-0735619678, 2nd Edition, Harper Perennial, New York, 2004. [3] Shafranovich, Y., SolidMatrix Technologies, Inc. Common Format and MIME Type for Comma-Separated Values (CSV) Files. http://tools.ietf.org/html/rfc4180, Elektronická publikace, 2005. [4] Rideout, Mark. Customizing the DataGridView to support expanding/collapsing (ala TreeGridView). http://blogs.msdn.com/b/markrideout/, Elektronická publikace, 2006. [5] Dostál, Martin. Základy tvorby uživatelského rozhraní. http://dostal.inf.upol.cz/data/texts/gui-dostal-13-8.pdf, Elektronická publikace, UPOL, Olomouc, 2007. [6] Sharp, John. Microsoft Visual C# 2008 krok za krokem. ISBN 978-80-251-2027-9, Computer Press, 2008. [7] Microsoft, MSDN. www.msdn.com. Elektronická publikace. [8] CodeProject. www.codeproject.com. Elektronická publikace.
50
7.
Obsah přiloženého CD
K práci je přiloženo CD (event. DVD) obsahující kompletní softwarovou část tohoto projektu: instalátor, samotnou aplikaci Správce úkolů a soubory k ní patřící, zdrojové soubory programu, tento text a zdrojové soubory k němu. bin/ Instalační soubory setup.exe a SpravceUkolu.msi spustitelné přímo z CD/DVD, které nainstalují program Správce úkolů, všechny potřebné knihovny a další soubory pro bezproblémové spuštění. Instalaci je možno spustit kterýmkoliv z nich, ale je doporučeno použít přednostně setup.exe. doc/ Dokumentace práce ve formátu PDF, vytvořená dle závazného stylu KI PřF pro diplomové práce, včetně všech příloh a všechny soubory nutné pro bezproblémové vygenerování PDF souboru dokumentace, tj. zdrojový text dokumentace, vložené obrázky, apod. src/ Kompletní zdrojové texty programu Správce úkolů se všemi potřebnými (převzatými) zdrojovými texty, knihovnami a dalšími soubory pro bezproblémové vytvoření spustitelných verzí programu. readme.txt Instrukce pro instalaci a spuštění programu Správce úkolů, včetně požadavků pro jeho provoz. Navíc CD/DVD obsahuje: data/ Ukázkové a testovací datové soubory s úkoly pro potřeby obhajoby prezentace u práce. install/ Instalační soubory prerekvizit, které mohou chybět například v čisté instalaci systému Windows XP. Jedná se o Windows Installer 3.1 Redistributable (v2) (WindowsInstaller-KB893803-v2-x86.exe) a Microsoft .NET Framework 3.5 SP1 Standalone Full Redistributable Setup Installer (dotnetfx35.exe). U veškerých odjinud převzatých materiálů obsažených na CD/DVD jejich zahrnutí dovolují podmínky pro jejich šíření nebo přiložený souhlas držitele copyrightu. Pro materiály, u kterých toto není splněno, je uveden jejich zdroj (webová adresa) v textu dokumentace práce nebo v souboru readme.txt. 51