From 648ddbf3d118d28a20027b8c5dd074494c53b90a Mon Sep 17 00:00:00 2001 From: Jaakko Keränen Date: Thu, 20 Aug 2020 17:58:12 +0300 Subject: SidebarWidget: Creating a bookmark from history --- src/ui/sidebarwidget.c | 39 +++++++++++++++++++++++++-------------- src/ui/util.c | 11 ++++++----- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/src/ui/sidebarwidget.c b/src/ui/sidebarwidget.c index f7730394..1fb50f87 100644 --- a/src/ui/sidebarwidget.c +++ b/src/ui/sidebarwidget.c @@ -388,15 +388,23 @@ void setWidth_SidebarWidget(iSidebarWidget *d, int width) { } iBool handleBookmarkEditorCommands_SidebarWidget_(iWidget *editor, const char *cmd) { - iSidebarWidget *d = findWidget_App("sidebar"); if (equal_Command(cmd, "bmed.accept") || equal_Command(cmd, "cancel")) { + iSidebarWidget *d = findWidget_App("sidebar"); if (equal_Command(cmd, "bmed.accept")) { - const iSidebarItem *item = hoverItem_SidebarWidget_(d); - iAssert(item); /* hover item cannot have been changed */ - iBookmark *bm = get_Bookmarks(bookmarks_App(), item->id); - set_String(&bm->title, text_InputWidget(findChild_Widget(editor, "bmed.title"))); - set_String(&bm->url, text_InputWidget(findChild_Widget(editor, "bmed.url"))); - set_String(&bm->tags, text_InputWidget(findChild_Widget(editor, "bmed.tags"))); + const iString *title = text_InputWidget(findChild_Widget(editor, "bmed.title")); + const iString *url = text_InputWidget(findChild_Widget(editor, "bmed.url")); + const iString *tags = text_InputWidget(findChild_Widget(editor, "bmed.tags")); + if (!cmp_String(id_Widget(editor), "bmed.create")) { + add_Bookmarks(bookmarks_App(), url, title, tags, 0x1f310); + } + else { + const iSidebarItem *item = hoverItem_SidebarWidget_(d); + iAssert(item); /* hover item cannot have been changed */ + iBookmark *bm = get_Bookmarks(bookmarks_App(), item->id); + set_String(&bm->title, title); + set_String(&bm->url, url); + set_String(&bm->tags, tags); + } postCommand_App("bookmarks.changed"); } setFlags_Widget(as_Widget(d), disabled_WidgetFlag, iFalse); @@ -526,13 +534,16 @@ static iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev) else if (equal_Command(cmd, "history.addbookmark")) { const iSidebarItem *item = hoverItem_SidebarWidget_(d); if (!isEmpty_String(&item->url)) { - /* TODO: Open the bookmark editor dialog. */ - /*add_Bookmarks(bookmarks_App(), - &item->url, - urlHost_String(&item->url), - collectNew_String(), - 0x1f310); - postCommand_App("bookmarks.changed");*/ + iWidget *dlg = makeBookmarkEditor_Widget(); + setId_Widget(dlg, "bmed.create"); + setTextCStr_LabelWidget(findChild_Widget(dlg, "bmed.heading"), + uiHeading_ColorEscape "ADD BOOKMARK"); + iUrl parts; + init_Url(&parts, &item->url); + setTextCStr_InputWidget(findChild_Widget(dlg, "bmed.title"), + cstr_Rangecc(parts.host)); + setText_InputWidget(findChild_Widget(dlg, "bmed.url"), &item->url); + setCommandHandler_Widget(dlg, handleBookmarkEditorCommands_SidebarWidget_); } } else if (equal_Command(cmd, "history.clear")) { diff --git a/src/ui/util.c b/src/ui/util.c index 918a0671..cb6b61ba 100644 --- a/src/ui/util.c +++ b/src/ui/util.c @@ -733,9 +733,11 @@ iWidget *makePreferences_Widget(void) { iWidget *makeBookmarkEditor_Widget(void) { iWidget *dlg = makeSheet_Widget("bmed"); - addChildFlags_Widget(dlg, - iClob(new_LabelWidget(uiHeading_ColorEscape "EDIT BOOKMARK", 0, 0, NULL)), - frameless_WidgetFlag); + setId_Widget(addChildFlags_Widget( + dlg, + iClob(new_LabelWidget(uiHeading_ColorEscape "EDIT BOOKMARK", 0, 0, NULL)), + frameless_WidgetFlag), + "bmed.heading"); iWidget *page = new_Widget(); addChild_Widget(dlg, iClob(page)); setFlags_Widget(page, arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag, iTrue); @@ -744,8 +746,7 @@ iWidget *makeBookmarkEditor_Widget(void) { iWidget *values = addChildFlags_Widget( page, iClob(new_Widget()), arrangeVertical_WidgetFlag | arrangeSize_WidgetFlag); iInputWidget *inputs[4]; - iWidget *hd; - addChild_Widget(headings, iClob(hd = makeHeading_Widget("Title:"))); + addChild_Widget(headings, iClob(makeHeading_Widget("Title:"))); setId_Widget(addChild_Widget(values, iClob(inputs[0] = new_InputWidget(0))), "bmed.title"); addChild_Widget(headings, iClob(makeHeading_Widget("URL:"))); setId_Widget(addChild_Widget(values, iClob(inputs[1] = new_InputWidget(0))), "bmed.url"); -- cgit v1.2.3