xref: /glogg/src/qfnotifications.h (revision bb02e0acf44ddb4e4f83d6127a1e488789162922)
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 QFNOTIFICATIONS_H
21 #define QFNOTIFICATIONS_H
22 
23 #include <QObject>
24 #include <QWidget>
25 #include <QFontMetrics>
26 
27 // Notifications sent by the QF for displaying to the user
28 // and their translation in UI text.
29 class QFNotification {
30   public:
31     virtual QString message() const = 0;
32 
33     // Max width of the message (in pixels)
maxWidth(const QWidget * widget)34     static int maxWidth( const QWidget* widget ) {
35         QFontMetrics fm = widget->fontMetrics();
36         return qMax( fm.size( Qt::TextSingleLine, REACHED_BOF ).width(),
37                      fm.size( Qt::TextSingleLine, REACHED_EOF ).width() );
38     }
39 
40   protected:
41     static const QString REACHED_EOF;
42     static const QString REACHED_BOF;
43 };
44 
45 class QFNotificationReachedEndOfFile : public QFNotification
46 {
message()47     QString message() const {
48         return REACHED_EOF;
49     }
50 };
51 
52 class QFNotificationReachedBegininningOfFile : public QFNotification
53 {
message()54     QString message() const {
55         return REACHED_BOF;
56     }
57 };
58 
59 class QFNotificationProgress : public QFNotification {
60   public:
61     // Constructor taking the progress (in percent)
QFNotificationProgress(int progress_percent)62     QFNotificationProgress( int progress_percent )
63     { progressPercent_ = progress_percent; }
64 
message()65     QString message() const {
66         return QString( QObject::tr("Searching (position %1 %)")
67                 .arg( progressPercent_ ) );
68     }
69   private:
70     int progressPercent_;
71 };
72 
73 #endif
74