/*
* Copyright (C) 2013, 2014 Nicolas Bonnefon and other contributors
*
* This file is part of glogg.
*
* glogg is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* glogg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with glogg. If not, see .
*/
#ifndef VIEWINTERFACE_H
#define VIEWINTERFACE_H
#include
class LogData;
class LogFilteredData;
class SavedSearches;
class QuickFindPattern;
// ViewContextInterface represents the private information
// the concrete view will be able to save and restore.
// It can be marshalled to persistent storage.
class ViewContextInterface {
public:
virtual ~ViewContextInterface() {}
virtual std::string toString() const = 0;
};
// ViewInterface represents a high-level view on a log file.
// This a pure virtual class (interface) which is subclassed
// for each type of view.
class ViewInterface {
public:
// Set the log data and filtered data to associate to this view
// Ownership stay with the caller but is shared
void setData( std::shared_ptr log_data,
std::shared_ptr filtered_data )
{ doSetData( log_data, filtered_data ); }
// Set the (shared) quickfind pattern object
void setQuickFindPattern( std::shared_ptr qfp )
{ doSetQuickFindPattern( qfp ); }
// Set the (shared) search history object
void setSavedSearches( std::shared_ptr saved_searches )
{ doSetSavedSearches( saved_searches ); }
// For save/restore of the context
void setViewContext( const char* view_context )
{ doSetViewContext( view_context ); }
// (returned object ownership is transferred to the caller)
std::shared_ptr context( void ) const
{ return doGetViewContext(); }
// To allow polymorphic destruction
virtual ~ViewInterface() {}
protected:
// Virtual functions (using NVI)
virtual void doSetData( std::shared_ptr log_data,
std::shared_ptr filtered_data ) = 0;
virtual void doSetQuickFindPattern(
std::shared_ptr qfp ) = 0;
virtual void doSetSavedSearches(
std::shared_ptr saved_searches ) = 0;
virtual void doSetViewContext(
const char* view_context ) = 0;
virtual std::shared_ptr
doGetViewContext( void ) const = 0;
};
#endif