1 /* 2 * Copyright (C) 2013 Nicolas Bonnefon and other contributors 3 * 4 * This file is part of glogg. 5 * 6 * glogg is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * glogg is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with glogg. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 #ifndef VIEWINTERFACE_H 21 #define VIEWINTERFACE_H 22 23 #include <memory> 24 25 class LogData; 26 class LogFilteredData; 27 class SavedSearches; 28 29 // ViewInterface represents a high-level view on a log file. 30 class ViewInterface { 31 public: 32 // Set the log data and filtered data to associate to this view 33 // Ownership stay with the caller but is shared 34 void setData( std::shared_ptr<LogData> log_data, 35 std::shared_ptr<LogFilteredData> filtered_data ) 36 { doSetData( log_data, filtered_data ); } 37 38 // Set the (shared) search history object 39 void setSavedSearches( std::shared_ptr<SavedSearches> saved_searches ) 40 { doSetSavedSearches( saved_searches ); } 41 42 // For save/restore of the context 43 /* 44 virtual void setViewContext( const ViewContextInterface& view_context ) = 0; 45 virtual ViewContextInterface& getViewContext( void ) = 0; 46 */ 47 48 // To allow polymorphic destruction 49 virtual ~ViewInterface() {} 50 51 protected: 52 // Virtual functions (using NVI) 53 virtual void doSetData( std::shared_ptr<LogData> log_data, 54 std::shared_ptr<LogFilteredData> filtered_data ) = 0; 55 virtual void doSetSavedSearches( 56 std::shared_ptr<SavedSearches> saved_searches ) = 0; 57 }; 58 #endif 59