source: ntrip/trunk/BNC/src/bnchlpdlg.cpp@ 10149

Last change on this file since 10149 was 10087, checked in by stuerze, 18 months ago

minor changes

File size: 5.8 KB
RevLine 
[280]1// Part of BNC, a utility for retrieving decoding and
[464]2// converting GNSS data streams from NTRIP broadcasters.
[280]3//
[464]4// Copyright (C) 2007
[280]5// German Federal Agency for Cartography and Geodesy (BKG)
6// http://www.bkg.bund.de
[464]7// Czech Technical University Prague, Department of Geodesy
[280]8// http://www.fsv.cvut.cz
9//
10// Email: euref-ip@bkg.bund.de
11//
12// This program is free software; you can redistribute it and/or
13// modify it under the terms of the GNU General Public License
14// as published by the Free Software Foundation, version 2.
15//
16// This program is distributed in the hope that it will be useful,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19// GNU General Public License for more details.
20//
21// You should have received a copy of the GNU General Public License
22// along with this program; if not, write to the Free Software
23// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
[177]24
25/* -------------------------------------------------------------------------
26 * BKG NTRIP Client
27 * -------------------------------------------------------------------------
28 *
29 * Class: bncHlpDlg
30 *
31 * Purpose: Displays the help
32 *
33 * Author: L. Mervart
34 *
35 * Created: 24-Sep-2006
36 *
[8238]37 * Changes:
[177]38 *
39 * -----------------------------------------------------------------------*/
40
[8203]41#include <QHBoxLayout>
42#include <QVBoxLayout>
[10087]43#include <iostream>
[177]44#include "bnchlpdlg.h"
45#include "bnchtml.h"
46
47// Constructor
48////////////////////////////////////////////////////////////////////////////
49bncHlpDlg::bncHlpDlg(QWidget* parent, const QUrl& url) :
50 QDialog(parent) {
51
52 const int ww = QFontMetrics(font()).width('w');
53
[10082]54 _tb = new bncHtml;
[237]55 setWindowTitle("Help Contents");
[177]56 _tb->setSource(url);
57 _tb->setReadOnly(true);
[10082]58 connect(_tb, SIGNAL(backwardAvailable(bool)), this, SLOT(backwardAvailable(bool)));
59 connect(_tb, SIGNAL(forwardAvailable(bool)), this, SLOT(forwardAvailable(bool)));
[177]60
61 QVBoxLayout* dlgLayout = new QVBoxLayout;
62 dlgLayout->addWidget(_tb);
63
64 QHBoxLayout* butLayout = new QHBoxLayout;
65
66 _backButton = new QPushButton("Backward");
67 _backButton->setMaximumWidth(10*ww);
68 _backButton->setEnabled(false);
69 connect(_backButton, SIGNAL(clicked()), _tb, SLOT(backward()));
70 butLayout->addWidget(_backButton);
71
72 _forwButton = new QPushButton("Forward");
73 _forwButton->setMaximumWidth(10*ww);
74 _forwButton->setEnabled(false);
75 connect(_forwButton, SIGNAL(clicked()), _tb, SLOT(forward()));
76 butLayout->addWidget(_forwButton);
77
78 _closeButton = new QPushButton("Close");
79 _closeButton->setMaximumWidth(10*ww);
[10082]80 connect(_closeButton, SIGNAL(clicked()), this, SLOT(close()));
[177]81 butLayout->addWidget(_closeButton);
82
[10082]83 _label = new QLabel("Find &what:"); // 2.
84 _what = new QLineEdit();
85 _label->setBuddy(_what); // 3.
86 _cbCase = new QCheckBox("Match &case");
87 _cbBack = new QCheckBox("Search &backward");
88 _findButton = new QPushButton("&Find"); // 4.
89 _findButton->setDefault(true);
90 _findButton->setEnabled(false);
91 connect(_what, SIGNAL(textChanged(const QString&)), this, SLOT(enableBtnFind(const QString&)));
92 connect(_findButton, SIGNAL(clicked()), this, SLOT(findClicked()));
93
94 butLayout->addWidget(_label);
95 butLayout->addWidget(_what);
96 butLayout->addWidget(_findButton);
97 butLayout->addWidget(_cbCase);
98 butLayout->addWidget(_cbBack);
99
100 connect(this, SIGNAL(findNext(const QString &, Qt::CaseSensitivity)),
101 this, SLOT(slotFindNext(const QString &, Qt::CaseSensitivity)));
102
103 connect(this, SIGNAL(findPrev(const QString &, Qt::CaseSensitivity)),
104 this, SLOT(slotFindPrev(const QString &, Qt::CaseSensitivity)));
105
106 _hlCursor = QTextCursor(_tb->document());
107
[177]108 dlgLayout->addLayout(butLayout);
109
110 setLayout(dlgLayout);
[8238]111 resize(110*ww, 100*ww);
[177]112 show();
113}
114
115// Destructor
116////////////////////////////////////////////////////////////////////////////
117bncHlpDlg::~bncHlpDlg() {
118 delete _tb;
119 delete _backButton;
120 delete _forwButton;
121 delete _closeButton;
[10082]122 delete _findButton;
123 delete _label;
124 delete _what;
125 delete _cbCase;
126 delete _cbBack;
[177]127}
128
129// Slots
130////////////////////////////////////////////////////////////////////////////
131void bncHlpDlg::backwardAvailable(bool avail) {
132 _backButton->setEnabled(avail);
133}
134
135void bncHlpDlg::forwardAvailable(bool avail) {
136 _forwButton->setEnabled(avail);
137}
[10082]138
139void bncHlpDlg::findClicked() {
140
141 QString text = _what->text();
[10087]142
[10082]143 Qt::CaseSensitivity cs = _cbCase->isChecked() ? Qt::CaseSensitive : Qt::CaseInsensitive;
144
145 if(_cbBack->isChecked()) {
146 emit findPrev(text, cs);
147 }
148 else {
149 emit findNext(text, cs);
150 }
151}
152
153void bncHlpDlg::enableBtnFind(const QString& text) {
154 _findButton->setEnabled(!text.isEmpty());
155}
156
157void bncHlpDlg::slotFindNext(const QString& str, Qt::CaseSensitivity cs) {
158 QString searchString = str;
159 QTextDocument::FindFlags flags;
160 flags |= QTextDocument::FindWholeWords;
161 if ( cs == Qt::CaseSensitive) {
162 flags |= QTextDocument::FindCaseSensitively;
163 }
164
[10087]165 _hlCursor = (_tb->document()->find(searchString, _hlCursor, flags));
166 if (!_hlCursor.isNull()) {
167 _hlCursor.movePosition(QTextCursor::WordRight, QTextCursor::KeepAnchor);
168 _tb->setTextCursor(_hlCursor);
[10082]169 }
[10087]170 else {
171 _hlCursor.movePosition(QTextCursor::Start);
[10082]172 _tb->setTextCursor(_hlCursor);
173 }
174
175}
176
177
178void bncHlpDlg::slotFindPrev(const QString& str, Qt::CaseSensitivity cs) {
179 QString searchString = str;
180 QTextDocument::FindFlags flags;
181 flags |= QTextDocument::FindWholeWords;
182 flags |= QTextDocument::FindBackward;
183 if ( cs == Qt::CaseSensitive) {
184 flags |= QTextDocument::FindCaseSensitively;
185 }
186
[10087]187 _hlCursor = (_tb->document()->find(searchString, _hlCursor, flags));
188 if (!_hlCursor.isNull()) {
189 _hlCursor.movePosition(QTextCursor::WordRight, QTextCursor::KeepAnchor);
190 _tb->setTextCursor(_hlCursor);
[10082]191 }
[10087]192 else {
193 _hlCursor.movePosition(QTextCursor::End);
[10082]194 _tb->setTextCursor(_hlCursor);
195 }
[10087]196
[10082]197}
198
199
200
201
202
Note: See TracBrowser for help on using the repository browser.