xref: /glogg/src/filteredview.h (revision 8e78820269301b7bc20854ff27cb7da6d674ec04)
1 /*
2  * Copyright (C) 2009, 2010, 2012 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 FILTEREDVIEW_H
21 #define FILTEREDVIEW_H
22 
23 #include "abstractlogview.h"
24 
25 #include "data/logfiltereddata.h"
26 
27 #include <QKeyEvent>
28 
29 // Class implementing the filtered (bottom) view widget.
30 class FilteredView : public AbstractLogView
31 {
32   public:
33     FilteredView( LogFilteredData* newLogData,
34             const QuickFindPattern* const quickFindPattern,
35             QWidget* parent = 0 );
36 
37     // What is visible in the view.
38     enum Visibility { MatchesOnly, MarksOnly, MarksAndMatches };
39     void setVisibility( Visibility visi );
40 
41   protected:
42     virtual LineType lineType( int lineNumber ) const;
43 
44     // Number of the filtered line relative to the unfiltered source
45     virtual qint64 displayLineNumber( int lineNumber ) const;
46     virtual qint64 maxDisplayLineNumber() const;
47 
48     virtual void keyPressEvent( QKeyEvent* keyEvent );
49 
50   private:
51     LogFilteredData* logFilteredData_;
52 };
53 
54 #endif
55