Refactor out note functions
* Add new note_edit() and note_view() helper functions. Use these instead of copy-pasted code in *_note_edit(). * Move all note-related functions (note_edit(), note_view(), note_erase()) to a new source file "note.c". Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
This commit is contained in:
parent
40772daaf4
commit
87664095cd
@ -19,6 +19,7 @@ calcurse_SOURCES = \
|
|||||||
io.c \
|
io.c \
|
||||||
keys.c \
|
keys.c \
|
||||||
llist.c \
|
llist.c \
|
||||||
|
note.c \
|
||||||
notify.c \
|
notify.c \
|
||||||
recur.c \
|
recur.c \
|
||||||
sigs.c \
|
sigs.c \
|
||||||
|
@ -750,6 +750,11 @@ void mem_stats (void);
|
|||||||
|
|
||||||
#endif /* CALCURSE_MEMORY_DEBUG */
|
#endif /* CALCURSE_MEMORY_DEBUG */
|
||||||
|
|
||||||
|
/* note.c */
|
||||||
|
void edit_note (char **, char *);
|
||||||
|
void view_note (char *, char *);
|
||||||
|
void erase_note (char **, enum eraseflg);
|
||||||
|
|
||||||
/* notify.c */
|
/* notify.c */
|
||||||
int notify_time_left (void);
|
int notify_time_left (void);
|
||||||
unsigned notify_needs_reminder (void);
|
unsigned notify_needs_reminder (void);
|
||||||
@ -877,7 +882,6 @@ long mystrtol (const char *);
|
|||||||
void print_bool_option_incolor (WINDOW *, unsigned, int, int);
|
void print_bool_option_incolor (WINDOW *, unsigned, int, int);
|
||||||
const char *get_tempdir (void);
|
const char *get_tempdir (void);
|
||||||
char *new_tempfile (const char *, int);
|
char *new_tempfile (const char *, int);
|
||||||
void erase_note (char **, enum eraseflg);
|
|
||||||
int parse_date (char *, enum datefmt, int *, int *, int *,
|
int parse_date (char *, enum datefmt, int *, int *, int *,
|
||||||
struct date *);
|
struct date *);
|
||||||
void str_toupper (char *);
|
void str_toupper (char *);
|
||||||
|
25
src/day.c
25
src/day.c
@ -1043,25 +1043,12 @@ day_edit_note (char *editor)
|
|||||||
struct apoint *a;
|
struct apoint *a;
|
||||||
struct recur_event *re;
|
struct recur_event *re;
|
||||||
struct event *e;
|
struct event *e;
|
||||||
char fullname[BUFSIZ];
|
|
||||||
char *filename;
|
|
||||||
long date;
|
long date;
|
||||||
int item_num;
|
int item_num;
|
||||||
|
|
||||||
item_num = apoint_hilt ();
|
item_num = apoint_hilt ();
|
||||||
p = day_get_item (item_num);
|
p = day_get_item (item_num);
|
||||||
if (p->note == NULL)
|
edit_note (&p->note, editor);
|
||||||
{
|
|
||||||
if ((filename = new_tempfile (path_notes, NOTESIZ)) == NULL)
|
|
||||||
return;
|
|
||||||
else
|
|
||||||
p->note = filename;
|
|
||||||
}
|
|
||||||
(void)snprintf (fullname, BUFSIZ, "%s%s", path_notes, p->note);
|
|
||||||
wins_launch_external (fullname, editor);
|
|
||||||
|
|
||||||
if (io_file_is_empty (fullname) > 0)
|
|
||||||
erase_note (&p->note, ERASE_FORCE);
|
|
||||||
|
|
||||||
date = calendar_get_slctd_day_sec ();
|
date = calendar_get_slctd_day_sec ();
|
||||||
switch (p->type)
|
switch (p->type)
|
||||||
@ -1089,14 +1076,8 @@ day_edit_note (char *editor)
|
|||||||
void
|
void
|
||||||
day_view_note (char *pager)
|
day_view_note (char *pager)
|
||||||
{
|
{
|
||||||
struct day_item *p;
|
struct day_item *p = day_get_item (apoint_hilt ());
|
||||||
char fullname[BUFSIZ];
|
view_note (p->note, pager);
|
||||||
|
|
||||||
p = day_get_item (apoint_hilt ());
|
|
||||||
if (p->note == NULL)
|
|
||||||
return;
|
|
||||||
(void)snprintf (fullname, BUFSIZ, "%s%s", path_notes, p->note);
|
|
||||||
wins_launch_external (fullname, pager);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Pipe an appointment or event to an external program. */
|
/* Pipe an appointment or event to an external program. */
|
||||||
|
90
src/note.c
Normal file
90
src/note.c
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
/*
|
||||||
|
* Calcurse - text-based organizer
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004-2011 calcurse Development Team <misc@calcurse.org>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above
|
||||||
|
* copyright notice, this list of conditions and the
|
||||||
|
* following disclaimer.
|
||||||
|
*
|
||||||
|
* - Redistributions in binary form must reproduce the above
|
||||||
|
* copyright notice, this list of conditions and the
|
||||||
|
* following disclaimer in the documentation and/or other
|
||||||
|
* materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* Send your feedback or comments to : misc@calcurse.org
|
||||||
|
* Calcurse home page : http://calcurse.org
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include "calcurse.h"
|
||||||
|
|
||||||
|
/* Edit a note with an external editor. */
|
||||||
|
void
|
||||||
|
edit_note (char **note, char *editor)
|
||||||
|
{
|
||||||
|
char fullname[BUFSIZ];
|
||||||
|
char *filename;
|
||||||
|
|
||||||
|
if (*note == NULL)
|
||||||
|
{
|
||||||
|
if ((filename = new_tempfile (path_notes, NOTESIZ)) != NULL)
|
||||||
|
*note = filename;
|
||||||
|
else
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
(void)snprintf (fullname, BUFSIZ, "%s%s", path_notes, *note);
|
||||||
|
wins_launch_external (fullname, editor);
|
||||||
|
|
||||||
|
if (io_file_is_empty (fullname) > 0)
|
||||||
|
erase_note (note, ERASE_FORCE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* View a note in an external pager. */
|
||||||
|
void
|
||||||
|
view_note (char *note, char *pager)
|
||||||
|
{
|
||||||
|
char fullname[BUFSIZ];
|
||||||
|
|
||||||
|
if (note == NULL)
|
||||||
|
return;
|
||||||
|
(void)snprintf (fullname, BUFSIZ, "%s%s", path_notes, note);
|
||||||
|
wins_launch_external (fullname, pager);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Erase a note previously attached to an item. */
|
||||||
|
void
|
||||||
|
erase_note (char **note, enum eraseflg flag)
|
||||||
|
{
|
||||||
|
char fullname[BUFSIZ];
|
||||||
|
|
||||||
|
if (*note == NULL)
|
||||||
|
return;
|
||||||
|
if (flag != ERASE_FORCE_KEEP_NOTE)
|
||||||
|
{
|
||||||
|
(void)snprintf (fullname, BUFSIZ, "%s%s", path_notes, *note);
|
||||||
|
if (unlink (fullname) != 0)
|
||||||
|
EXIT (_("could not remove note"));
|
||||||
|
}
|
||||||
|
mem_free (*note);
|
||||||
|
*note = NULL;
|
||||||
|
}
|
29
src/todo.c
29
src/todo.c
@ -471,37 +471,16 @@ todo_update_panel (int which_pan)
|
|||||||
void
|
void
|
||||||
todo_edit_note (char *editor)
|
todo_edit_note (char *editor)
|
||||||
{
|
{
|
||||||
struct todo *i;
|
struct todo *i = todo_get_item (hilt);
|
||||||
char fullname[BUFSIZ];
|
edit_note (&i->note, editor);
|
||||||
char *filename;
|
|
||||||
|
|
||||||
i = todo_get_item (hilt);
|
|
||||||
if (i->note == NULL)
|
|
||||||
{
|
|
||||||
if ((filename = new_tempfile (path_notes, NOTESIZ)) != NULL)
|
|
||||||
i->note = filename;
|
|
||||||
else
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
(void)snprintf (fullname, BUFSIZ, "%s%s", path_notes, i->note);
|
|
||||||
wins_launch_external (fullname, editor);
|
|
||||||
|
|
||||||
if (io_file_is_empty (fullname) > 0)
|
|
||||||
erase_note (&i->note, ERASE_FORCE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* View a note previously attached to a todo */
|
/* View a note previously attached to a todo */
|
||||||
void
|
void
|
||||||
todo_view_note (char *pager)
|
todo_view_note (char *pager)
|
||||||
{
|
{
|
||||||
struct todo *i;
|
struct todo *i = todo_get_item (hilt);
|
||||||
char fullname[BUFSIZ];
|
view_note (i->note, pager);
|
||||||
|
|
||||||
i = todo_get_item (hilt);
|
|
||||||
if (i->note == NULL)
|
|
||||||
return;
|
|
||||||
(void)snprintf (fullname, BUFSIZ, "%s%s", path_notes, i->note);
|
|
||||||
wins_launch_external (fullname, pager);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Pipe a todo item to an external program. */
|
/* Pipe a todo item to an external program. */
|
||||||
|
18
src/utils.c
18
src/utils.c
@ -595,24 +595,6 @@ new_tempfile (const char *prefix, int trailing_len)
|
|||||||
return mem_strdup (fullname + prefix_len);
|
return mem_strdup (fullname + prefix_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Erase a note previously attached to a todo, event or appointment. */
|
|
||||||
void
|
|
||||||
erase_note (char **note, enum eraseflg flag)
|
|
||||||
{
|
|
||||||
char fullname[BUFSIZ];
|
|
||||||
|
|
||||||
if (*note == NULL)
|
|
||||||
return;
|
|
||||||
if (flag != ERASE_FORCE_KEEP_NOTE)
|
|
||||||
{
|
|
||||||
(void)snprintf (fullname, BUFSIZ, "%s%s", path_notes, *note);
|
|
||||||
if (unlink (fullname) != 0)
|
|
||||||
EXIT (_("could not remove note"));
|
|
||||||
}
|
|
||||||
mem_free (*note);
|
|
||||||
*note = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Convert a string containing a date into three integers containing the year,
|
* Convert a string containing a date into three integers containing the year,
|
||||||
* month and day.
|
* month and day.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user