% \iffalse meta-comment%% Copyright (C) 2020 by Niklas Schneider
% -----------------------------------
%
% This file may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in:
%
%    http://www.latex-project.org/lppl.txt
%
% and version 1.3 or later is part of all distributions of LaTeX% version 2005/12/01 or later.
%
% \fi
%
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
%<package>\ProvidesPackage{semesterplanner}
%<package>   [2020/11/02v1.0 Creates beautiful semester timetables and more.]
%
%<*driver>\documentclass{ltxdoc}\usepackage{semesterplanner}\EnableCrossrefs\CodelineIndex\RecordChanges\begin{document}\DocInput{semesterplanner.dtx}\end{document}
%</driver>
% \fi
%
% \CheckSum{0}
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \
%     Ampersand     \&
%   Acute accent  \’     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \‘     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
%
% \changes{v1.0}{2020/11/02〉}{Initial version}
%
% \GetFileInfo{semesterplanner.sty}
%
% \DoNotIndex{}
%
% Required Packages.
\RequirePackage{fontawesome}
\RequirePackage{color}
\RequirePackage{schedule}
\RequirePackage{tikz}
\usetikzlibrary{shapes}

% Command to encircle the fa-icons with white, so that they are recognizable on colored ground.
\newcommand*{\encircle}[1]{
	\begin{minipage}[b][1em][c]{1.5em}
		\begin{tikzpicture}
			\node[fill,circle,inner sep=1pt, color = white] {#1};
		\end{tikzpicture}	
	\end{minipage}    
}

% Color for the platform symbols.
\definecolor{dodgerblue}{rgb}{0.12, 0.56, 1.0}

% Colors for the course types.
\definecolor{seminar}{rgb}{1.0, 0.8, 0.0}
\definecolor{lecture}{rgb}{0.2, 0.7, 1.0}
\definecolor{tutorial}{rgb}{0.0, 0.8, 0.0}
\definecolor{meeting}{rgb}{0.8, 0.0, 0.0}
\definecolor{officehour}{rgb}{0.0, 0.4, 0.6}

% The different course types.
\NewAppointment{emeeting}{meeting}{white}
\NewAppointment{electure}{lecture}{white}
\NewAppointment{etutorial}{tutorial}{white}
\NewAppointment{eseminar}{seminar}{white}
\NewAppointment{eofficehour}{officehour}{white}

% Commands to create a new entry in the timetable using the aboev types.
\newcommand{\lecture}[6]{\electure{\textbf{#1}}{
		\vspace*{-2.5em}
		\begin{flushleft}
				{#2}\\\vspace*{0.75em}{#6}{#3}
		\end{flushleft}}
	{#4}{#5}}
\newcommand{\tutorial}[6]{\etutorial{\textbf{#1}}{
		\vspace*{-2.5em}
		\begin{flushleft}
			{#2}\\\vspace*{0.75em}{#6}{#3}
	\end{flushleft}}
	{#4}{#5}}
\newcommand{\meeting}[6]{\emeeting{\textbf{#1}}{
		\vspace*{-2.5em}
		\begin{flushleft}
			{#2}\\\vspace*{0.75em}{#6}{#3}
	\end{flushleft}}
	{#4}{#5}}
\newcommand{\seminar}[6]{\eseminar{\textbf{#1}}{
		\vspace*{-2.5em}
		\begin{flushleft}
			{#2}\\\vspace*{0.75em}{#6}{#3}
	\end{flushleft}}
	{#4}{#5}}
\newcommand{\officehour}[6]{\eofficehour{\textbf{#1}}{
		\vspace*{-2.5em}
		\begin{flushleft}
			{#2}\\\vspace*{0.75em}{#6}{#3}
	\end{flushleft}}
	{#4}{#5}}

% Commands for entries in the three environments. They are a line of a table.
\newcommand{\appointment}[6]{\textit{#1}&{#2}&{#3}&{#4}&{#5}&{#6}\\}
\newcommand{\exam}[4]{\textit{#1}&{#2}&{#3}&{#4}\\}
\newcommand{\deadline}[4]{\textit{#1}&{#2}&{#3}&{#4}\\}

% Commands for symbols of priority
\newcommand{\pmandatory}{\encircle{\textcolor{red}{\faWarning}}}
\newcommand{\phigh}{\encircle{\textcolor{red}{\faFlag}}}
\newcommand{\pmid}{\encircle{\textcolor{yellow}{\faFlag}}}
\newcommand{\plow}{\encircle{\textcolor{green}{\faFlag}}}
\newcommand{\pnone}{\encircle{\textcolor{gray}{\faTimesCircle}}}

% Commands for exam types.
\newcommand{\oral}{\faComment}
\newcommand{\written}{\faPencil}

% Commands for online platforms.
\newcommand{\teams}{\encircle{\textcolor{dodgerblue}{\faWindows}}}
\newcommand{\zoom}{\encircle{\textcolor{dodgerblue}{\faCamera}}}
\newcommand{\youtube}{\encircle{\textcolor{red}{\faYoutubePlay}}}

% Command for "To be determined" and "To be Announced"
\newcommand{\tbd}{\faQuestion}
\newcommand{\tba}{\faBullhorn}

% Command for adding legends to timetable
\newcommand{\ttlegend}[2]{{\footnotesize\textcolor{#1}{\faSquare}}&{\footnotesize {#2}}\\}

% Environment for the timetable using schedule. Configuration is hardcoded.
\newenvironment{timetable}
		{			
			\section*{\faClockO~Timetable}		
			\vspace*{-2em}	
			\CellHeight{1.3cm}
			\CellWidth{1in}
			\TimeRange{08:00-18:00}
			\SubUnits{60}
			\BeginOn{Monday}
			\TextSize{\tiny}
			\FiveDay
			\TwentyFourHour	
			
			\begin{schedule}
				
		}
		{
			\end{schedule}
			\vspace*{-1em}
		}

% Environment for appointment list. Use appointment command to add one.
% Argument is for caption of the "room" column.
\newenvironment{appointments}[1][Room]
{	
	\section*{\faCalendar~Appointments}
	\begin{tabular}{llllll}
		\textbf{Date}&\textbf{Time}&\textbf{Course}&\textbf{Description}&\textbf{{#1}}&\textbf{Prio.}\\		
	}
	{\end{tabular}
}

% Environment for deadline list. Use dealine command to add one.
\newenvironment{deadlines}
{	
	\section*{\faBomb~Deadlines}
	\begin{tabular}{llll}		
		\textbf{Date}&\textbf{Course}&\textbf{Description}&\textbf{Prio.}\\		
	}
	{\end{tabular}
}

% Environment for exam list. Use exam command to add one.
\newenvironment{exams}
{	
	\section*{\faStickyNoteO~Exams}
	\begin{tabular}{llll}
		\textbf{Date}&\textbf{Time}&\textbf{Course}&\textbf{Type}\\
	}
	{\end{tabular}
}

% Environment for timetable legend. Use \ttlabel command.
\newenvironment{legend}
	{		
		\begin{center}
			\begin{tabular}{ll}
	}	
	{		
			\end{tabular}
		\end{center}			
	}	
\endinput
% \Finale
