#ifndef APP_BROWSER_MAIN_TAB_HPP #define APP_BROWSER_MAIN_TAB_HPP #include #include #include #include #include #include namespace app::browser::main { namespace tab { class Label; class Page; } class Tab : public Gtk::Notebook { public: /* * Class database * * Allowed parental access to enums and relationship methods */ struct DB { // APP_BROWSER_MAIN_TAB__* struct SESSION { enum { ID, TIME, PAGE_NUMBER, IS_CURRENT }; // table fields index static int init( sqlite3 * db ); // return sqlite3_exec status code static int clean( sqlite3 * db ); // return sqlite3_finalize status code static sqlite3_int64 add( sqlite3 * db, const int & PAGE_NUMBER, const bool & IS_CURRENT ); // return sqlite3_last_insert_rowid }; }; /* * Internal members */ private: // Database sqlite3 * db; // Actions Glib::RefPtr action__refresh, action__tab_close_active, action__tab_close_all, action__tab_page_navigation_history_back, action__tab_page_navigation_history_forward, action__tab_page_navigation_update; // Defaults const bool REORDERABLE = true; const bool SCROLLABLE = true; /* * Class API */ public: Tab( sqlite3 * db, const Glib::RefPtr & ACTION__REFRESH, const Glib::RefPtr & ACTION__TAB_CLOSE_ACTIVE, const Glib::RefPtr & ACTION__MAIN_TAB_CLOSE_ALL, const Glib::RefPtr & ACTION__TAB_PAGE_NAVIGATION_HISTORY_BACK, const Glib::RefPtr & ACTION__TAB_PAGE_NAVIGATION_HISTORY_FORWARD, const Glib::RefPtr & ACTION__TAB_PAGE_NAVIGATION_UPDATE ); // Actions int append( const Glib::ustring & LABEL_TEXT, const bool & IS_CURRENT ); void close( const int & PAGE_NUMBER ); void close_left(); void close_right(); void close_all(); void page_navigation_update( const int & PAGE_NUMBER, const bool & ADD_HISTORY ); void page_navigation_history_back( const int & PAGE_NUMBER ); void page_navigation_history_forward( const int & PAGE_NUMBER ); void update( const int & PAGE_NUMBER ); int restore(); // return sqlite3_finalize status code void clean(); void save(); // Getters Glib::ustring get_page_title( const int & PAGE_NUMBER ); Glib::ustring get_page_description( const int & PAGE_NUMBER ); tab::Label * get_tabLabel( const int & PAGE_NUMBER ); tab::Page * get_tabPage( const int & PAGE_NUMBER ); }; } #endif // APP_BROWSER_MAIN_TAB_HPP