diff --git a/src/app/browser/main/tab/label.cpp b/src/app/browser/main/tab/label.cpp index ee64c6b6..fb7d4692 100644 --- a/src/app/browser/main/tab/label.cpp +++ b/src/app/browser/main/tab/label.cpp @@ -14,6 +14,9 @@ Label::Label( // Init actions action__tab_close = ACTION__TAB_CLOSE; + // Init extras + is_pinned = false; + // Setup label controller auto const EVENT__GESTURE_CLICK = Gtk::GestureClick::create(); @@ -88,6 +91,10 @@ int Label::session_restore( { // Restore widget data update( + sqlite3_column_int( + statement, + DB::SESSION::IS_PINNED + ) == 1, reinterpret_cast( sqlite3_column_text( statement, @@ -114,6 +121,7 @@ int Label::session_save( return DB::SESSION::add( db, APP_BROWSER_MAIN_TAB__SESSION__ID, + is_pinned, get_text() ); } @@ -130,6 +138,17 @@ void Label::update( ); } +void Label::update( + const int & IS_PINNED, + const Glib::ustring & TEXT +) { + is_pinned = IS_PINNED; + + update( + TEXT + ); +} + // Database model int Label::DB::SESSION::init( sqlite3 * db @@ -141,9 +160,10 @@ int Label::DB::SESSION::init( R"SQL( CREATE TABLE IF NOT EXISTS `app_browser_main_tab_label__session` ( - `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `app_browser_main_tab__session__id` INTEGER NOT NULL, - `time` INTEGER NOT NULL DEFAULT CURRENT_TIMESTAMP, - `text` VARCHAR (1024) NOT NULL + `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `app_browser_main_tab__session__id` INTEGER NOT NULL, + `time` INTEGER NOT NULL DEFAULT CURRENT_TIMESTAMP, + `is_pinned` INTEGER NOT NULL, + `text` VARCHAR (1024) NOT NULL ) )SQL", nullptr, @@ -211,6 +231,7 @@ int Label::DB::SESSION::clean( sqlite3_int64 Label::DB::SESSION::add( sqlite3 * db, const sqlite3_int64 & APP_BROWSER_MAIN_TAB__SESSION__ID, + const bool & IS_PINNED, const Glib::ustring & TEXT ) { char * error; // @TODO @@ -221,13 +242,16 @@ sqlite3_int64 Label::DB::SESSION::add( R"SQL( INSERT INTO `app_browser_main_tab_label__session` ( `app_browser_main_tab__session__id`, + `is_pinned`, `text` ) VALUES ( + '%d', '%d', '%s' ) )SQL", APP_BROWSER_MAIN_TAB__SESSION__ID, + IS_PINNED, TEXT ).c_str(), nullptr, diff --git a/src/app/browser/main/tab/label.hpp b/src/app/browser/main/tab/label.hpp index b8ce617f..9941ffca 100644 --- a/src/app/browser/main/tab/label.hpp +++ b/src/app/browser/main/tab/label.hpp @@ -32,6 +32,7 @@ namespace app::browser::main::tab ID, APP_BROWSER_MAIN_TAB__SESSION__ID, TIME, + IS_PINNED, TEXT }; // table fields index @@ -47,6 +48,7 @@ namespace app::browser::main::tab static sqlite3_int64 add( sqlite3 * db, const sqlite3_int64 & APP_BROWSER_MAIN_TAB__SESSION__ID, + const bool & IS_PINNED, const Glib::ustring & TEXT ); // return sqlite3_last_insert_rowid }; @@ -63,6 +65,9 @@ namespace app::browser::main::tab // Actions Glib::RefPtr action__tab_close; + // Extras + bool is_pinned; + // Defaults static const int WIDTH_CHARS = 16; @@ -88,6 +93,11 @@ namespace app::browser::main::tab void update( const Glib::ustring & TEXT ); + + void update( + const int & IS_PINNED, + const Glib::ustring & TEXT + ); }; }