aboutsummaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authordam <dam@gudinoff>2022-10-03 23:24:17 +0000
committerdam <dam@gudinoff>2022-10-03 23:24:17 +0000
commitb5fb37cc81740be4e8e08b04d5b489d79ba170d6 (patch)
tree4fc3283c1b910568eb2aa72a8cbc83423b266a5c /main.c
parentd39c778eb323ba84c5b7e299300e6ef21d167cf0 (diff)
downloadtask-time-tracker-b5fb37cc81740be4e8e08b04d5b489d79ba170d6.tar.zst
task-time-tracker-b5fb37cc81740be4e8e08b04d5b489d79ba170d6.zip
Prototype code for go-to function.
Diffstat (limited to 'main.c')
-rw-r--r--main.c45
1 files changed, 43 insertions, 2 deletions
diff --git a/main.c b/main.c
index cff3639..092b74d 100644
--- a/main.c
+++ b/main.c
@@ -706,8 +706,9 @@ void initialize_tui() {
setlocale(LC_ALL, "C.UTF-8"); // Sets locale for C library functions; Allows usage of UTF-8.
initscr(); // Start curses mode.
cbreak(); // Line buffering disabled; pass on everty thing to me.
- keypad(stdscr, TRUE); // I need that nifty F1
+ keypad(stdscr, TRUE); // I need that nifty F1.
curs_set(0); // Set cursor invisible.
+ noecho(); // Disable echoing input characters.
// Initialize pairs of colors.
start_color();
@@ -1090,8 +1091,10 @@ int main(int argc, char *argv[]) {
addstr(string_buffer);
// Get new task name.
+ echo();
curs_set(1);
mvgetnstr(selected_task_row, 1, string_buffer, MAX_TASK_NAME-1);
+ noecho();
curs_set(0);
// Apply new task name.
@@ -1107,7 +1110,7 @@ int main(int argc, char *argv[]) {
if (selected_task == NULL || selected_task == active_task) {
break;
}
-
+ refresh();
const char *message = "Press enter to delete.";
const size_t length = strlen(message);
int left_padding = ((size_x - 2) - length) / 2;
@@ -1125,6 +1128,44 @@ int main(int argc, char *argv[]) {
break;
}
+ case 'g':
+ case 'G': {
+ if (selected_task == NULL) {
+ break;
+ }
+
+ // TODO WIP
+
+ const char *message = " Go to: ";
+ const int length = strlen(message);
+ int available = layouts[1].columns[0].width - length;
+ sprintf(string_buffer, "%s%*s", message, available, "");
+
+ attron(COLOR_PAIR(selected_task_theme) | A_BOLD);
+ mvaddch(size_y - 1, 0, ACS_DIAMOND);
+ mvaddstr(size_y - 1, 1, string_buffer);
+
+ // Get line number.
+ echo();
+ curs_set(1);
+ mvgetnstr(size_y - 1, 1 + length, string_buffer, available-1);
+ noecho();
+ curs_set(0);
+
+ attrset(A_NORMAL);
+
+ if (is_empty_string(string_buffer) == true) {
+ break;
+ }
+
+ intmax_t input = strtoimax(string_buffer, NULL, 10) - 1;
+ db->selected_task = input < 0 ? 0 :
+ input >= db->count ? db->count - 1 :
+ input;
+
+ break;
+ }
+
case KEY_F(4): {
if (selected_task == NULL) {
break;