summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-04-01Support relative dates when adding recurrencesLukas Fleischer
In commit f5d8b5e (Support durations in recurrence ending dates, 2016-02-25), we added support for the `+xxwxxd` syntax when specifying recurrence end dates. However, this only worked when *editing* the recurrence, not when converting a regular item to a recurrent one. Fix this and support the new syntax in both cases. Also, mention the new syntax in the prompt. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-04-01Document the hooks featureLukas Fleischer
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-03-28Fix apoint_inday() with long appointmentsLukas Fleischer
Fixes a regression introduced in 9e160fa (Do not assume that days always have 86400 seconds, 2016-03-27). Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-03-27Do not assume that days always have 86400 secondsLukas Fleischer
Make that date membership is computed correctly, even if a day has less than 86400 seconds (e.g. after changing clocks). Reported-by: Hakan Jerning <jerning@home.se> Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-26Add proper UTF-8 support to the notification areaLukas Fleischer
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-26Support durations in recurrence ending datesLukas Fleischer
When spending the end date of recurring items, allow date duration specifiers such as "+5d" or "+3w2d". Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-26Refactor UTF-8 choppingLukas Fleischer
Add a function that makes sure a string does not exceed a given display size. If the string is too long, dots ("...") are appended. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-18Fix tests to match the new item orderingLukas Fleischer
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-16ui-day.c: Simplify code using ui_day_selitem()Lukas Fleischer
Use the new ui_day_selitem() utility function to retrieve the currently selected item. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-16Make automatic selection of appointments/events smarterLukas Fleischer
Keep item selection when an item is moved (e.g. by changing the start time or description). Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-15Fix segmentation fault on reload with pre-load hookLukas Fleischer
We need to manually force a reinitialization of the todo item list box before reloading the items. Otherwise, the list box contains dangling references to the linked list of todo items which has already been cleared at this point. After the pre-load hook is called, the windows are redrawn by wins_unprepare_external() and these invalid references are accessed, leading to a segmentation fault. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-15Improve ordering of appointments/eventsLukas Fleischer
* Order by start time first. * Order items with the same start time by priority. * Order items with the same start and priority by description. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-11Support format strings when dumping imported itemsLukas Fleischer
In commit 3eae7ce (Add --list-imported command line option, 2016-01-12), we added an option to print the hashes of imported items to stdout. Extend this command line option such that it dumps the items using the specified formatting strings. With the new behavior it is, for example, easier to check items for import errors. Also, rename the option from --list-imported to --dump-imported (it is not part of any official release yet so we do not need to care about backwards compatibility). Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-10Allow decimals in durationsLukas Fleischer
Parse durations containing decimal numbers (such as "1.5h") gracefully. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-09Install calcurse-caldav by defaultLukas Fleischer
Add a new Makefile to build and install calcurse-caldav and include it in the top-level build process. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-08Improve example hooksLukas Fleischer
The post-save and post-sync hooks now automatically detect whether the data directory contains a .git/ directory and skip the commit creation process if it does not. The post-save hook and the new pre-load hook now also run calcurse-caldav in the background if that script is available and the data directory contains a caldav/ directory. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-07Fix highlighting of busy days on initializationLukas Fleischer
Make sure that the monthly view cache is invalidated after the data files are loaded. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-07hooks.c: Fix window preparation in interactive modeLukas Fleischer
In commit 2857bac (Fix segfault when running hooks in non-interactive mode, 2016-01-16), we added checks to fix a segmentation fault in non-interactive mode. However, at the same time, that commit broke window preparation in interactive mode. When wins_prepare_external() is called, the UI mode is changed to command line, such that we cannot determine whether we need to call wins_unprepare_external() when returning from the hook. As a workaround, we now store the mode in a temporary variable. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-07Do not put all files under version control in example hooksLukas Fleischer
Modify the Git hooks such they only add known data files to the index. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-07calcurse-caldav: Add hook supportLukas Fleischer
Introduce pre-sync and post-sync hooks which need to be located under ~/.calcurse/caldav/hooks/ and are executed before/after synchronization with a CalDAV server. Also, add an example post-sync hook and change the example post-save hook such that it does not create tiny commits during synchronization. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-07Fix file name of the example hookLukas Fleischer
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-07Move example hook to contrib/hooks/Lukas Fleischer
The contrib/ directory now contains another script that is not directly related to hooks. Clean things up by placing example hooks in a separate subdirectory. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-05calcurse-caldav: Use -G and %(hash) to list hashesLukas Fleischer
Instead of reimplementing the code to generate object hashes in the synchronization script, use format strings to print the hashes in grep mode. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-05Fix %(hash) formatting of eventsLukas Fleischer
Actually print the hash instead of raw object data. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-05Support format specifiers in grep modeLukas Fleischer
Honor --format-* parameters when using the -G operation. In the case of recurring items, the first occurrence is used. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-05Refactor grep modeLukas Fleischer
Split io_save_{apts,todo}() into functions that write raw data to a file and functions that write formatted items to stdout such that one can easily extend the grep mode for format string support in a follow-up commit. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-02calcurse-caldav: Reword dry-run warningLukas Fleischer
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-01calcurse-caldav: Modernize format stringsLukas Fleischer
Replace %-style string formatting with format(). Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-01calcurse-caldav: Make synchronization more robustLukas Fleischer
In addition to storing ETag-hash tuples in the synchronization database, also store the URI of each object. This makes the synchronization process a bit more robust as we do not need to depend on ETags being globally unique. It also allows us to detect conflicts which occur when an object is modified locally and on the server at the same time. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-02-01calcurse-caldav: Fix issues reported by pylintLukas Fleischer
Add missing parameter to remote_query() and fix various style issues. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-01-30po/calcurse.pot: Update message catalogLukas Fleischer
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-01-30Update copyright rangesLukas Fleischer
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-01-28calcurse-caldav: Fix version checkLukas Fleischer
Since commit 41389ab (args.c: Revise help/usage/version output, 2016-01-28), the version string starts with "calcurse" (lowercase). Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-01-28Fix two iCal import testsLukas Fleischer
When importing iCal files, VTODO entries without an priority are now imported with undefined priority (internally represented as zero), not with lowest priority 9. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-01-28Fix behavior of --todo with an optional argumentLukas Fleischer
The previous behavior of --todo was to always only list uncompleted items, unless zero was specified as additional argument. Restore and document this behavior. Also, fix two tests that failed because the --todo output is now sorted. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-01-28args.c: Revise help/usage/version outputLukas Fleischer
Remove obsolete options from the help text, add new options, clean everything up, cut translatable strings into atomic chunks. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-01-28Add a --daemon command-line parameterLukas Fleischer
When specifying --daemon, calcurse immediately forks and runs the notification daemon in the background. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-01-27Display priority todo items above regular itemsLukas Fleischer
We now support todo items with undefined priority and currently display them above todo items with a strictly positive priority. Change this and always list items with a priority greater than zero first. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-01-27Support sending notifications for all appointmentsLukas Fleischer
In 45417bc (Add configuration option to notify all appointments, 2011-07-31), we added an option that allows for choosing whether the user receives notifications only for flagged or only for unflagged appointments. Convert this setting into a three-state option and allow the user to additionally enable notifications for *all* appointments. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-01-26sigs.c: Suppress compiler warningLukas Fleischer
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-01-26Support SIGUSR1 in daemon modeLukas Fleischer
In commit 7f62fb1 (Let SIGUSR1 trigger a reload, 2014-10-10), we added support for reloading the data files by sending SIGUSR1 to an interactive calcurse process. Add the same functionality to the daemon mode. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-01-26calcurse-caldav: Use calendar-multiget to obtain ETagLukas Fleischer
Some CalDAV servers do not support calendar-query with a UID filter. Use a calendar-multiget request to obtain the ETag of submitted objects instead. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-01-26calcurse-caldav: Fix property filterLukas Fleischer
Fix a TypeError that occurred during string formatting by putting parentheses around the multi-line string. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-01-25git-version-gen: Do not use `echo -n`Lukas Fleischer
`echo -n` is non-portable and does not work under some operating systems, such as OS X. Replace it with printf. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-01-25calcurse-caldav: Handle missing ETag gracefullyLukas Fleischer
This was partly fixed by 475c341 (calcurse-caldav: Fix late retrieval of ETag, 2016-01-25). However, the case where the server does not return ETag after creating a new item still wasn't handled properly. This patch hopefully addresses this and also makes sure that the ETag header is matched case-insensitively. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-01-25calcurse-caldav: Improve version checkLukas Fleischer
Make sure that at least a current Git build of calcurse is used. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-01-25calcurse-caldav: Print XML dump in debug mode onlyLukas Fleischer
In die_atnode(), we currently print a full dump of the XML node if verbose mode is enabled. Change this behavior such that a dump is only created in debug mode. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-01-25contrib/caldav/README: Minor improvementsLukas Fleischer
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-01-25calcurse-caldav: Fix comment on certificate checksLukas Fleischer
Clarify that ssl._create_unverified_context() was added in Python 3.4.3. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2016-01-25calcurse-caldav: Support custom HTTP headersLukas Fleischer
Add support for specifying additional HTTP headers, such as the User-Agent, in the configuration file. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>