/* ------------------------------------------------------------------------- * BKG NTRIP Server * ------------------------------------------------------------------------- * * Class: bnsWindow * * Purpose: This class implements the main application window. * * Author: L. Mervart * * Created: 29-Mar-2008 * * Changes: * * -----------------------------------------------------------------------*/ #include #include "bnswindow.h" #include "bnshlpdlg.h" using namespace std; // Constructor //////////////////////////////////////////////////////////////////////////// bnsWindow::bnsWindow() { int ww = QFontMetrics(this->font()).width('w'); setMinimumSize(77*ww, 65*ww); setWindowTitle(tr("BKG Ntrip Server (BNS) Version 1.0")); // Create Actions // -------------- _actHelp = new QAction(tr("&Help Contents"),this); connect(_actHelp, SIGNAL(triggered()), SLOT(slotHelp())); _actAbout = new QAction(tr("&About BNS"),this); connect(_actAbout, SIGNAL(triggered()), SLOT(slotAbout())); _actFontSel = new QAction(tr("Select &Font"),this); connect(_actFontSel, SIGNAL(triggered()), SLOT(slotFontSel())); _actSaveOpt = new QAction(tr("&Save Options"),this); connect(_actSaveOpt, SIGNAL(triggered()), SLOT(slotSaveOptions())); _actQuit = new QAction(tr("&Quit"),this); connect(_actQuit, SIGNAL(triggered()), SLOT(close())); _actwhatsthis= new QAction(tr("Help=Shift+F1"),this); connect(_actwhatsthis, SIGNAL(triggered()), SLOT(slotWhatsThis())); CreateMenu(); AddToolbar(); // Canvas with Editable Fields // --------------------------- _canvas = new QWidget; setCentralWidget(_canvas); } // Destructor //////////////////////////////////////////////////////////////////////////// bnsWindow::~bnsWindow() { cout << "destructor" << endl; } // Close Application gracefully //////////////////////////////////////////////////////////////////////////// void bnsWindow::closeEvent(QCloseEvent* event) { int iRet = QMessageBox::question(this, "Close", "Save Options?", QMessageBox::Yes, QMessageBox::No, QMessageBox::Cancel); if (iRet == QMessageBox::Cancel) { event->ignore(); return; } else if (iRet == QMessageBox::Yes) { slotSaveOptions(); } QMainWindow::closeEvent(event); delete this; } // About Message //////////////////////////////////////////////////////////////////////////// void bnsWindow::slotAbout() { new bnsAboutDlg(0); } // Help Window //////////////////////////////////////////////////////////////////////////// void bnsWindow::slotHelp() { QUrl url; url.setPath(":bnshelp.html"); new bnsHlpDlg(0, url); } // Select Fonts //////////////////////////////////////////////////////////////////////////// void bnsWindow::slotFontSel() { bool ok; QFont newFont = QFontDialog::getFont(&ok, this->font(), this); if (ok) { QSettings settings; settings.setValue("font", newFont.toString()); QApplication::setFont(newFont); int ww = QFontMetrics(newFont).width('w'); setMinimumSize(60*ww, 80*ww); resize(60*ww, 80*ww); } } // Whats This Help //////////////////////////////////////////////////////////////////////////// void bnsWindow::slotWhatsThis() { QWhatsThis::enterWhatsThisMode(); } // Create Menus //////////////////////////////////////////////////////////////////////////// void bnsWindow::CreateMenu() { _menuFile = menuBar()->addMenu(tr("&File")); _menuFile->addAction(_actFontSel); _menuFile->addSeparator(); _menuFile->addAction(_actSaveOpt); _menuFile->addSeparator(); _menuFile->addAction(_actQuit); _menuHlp = menuBar()->addMenu(tr("&Help")); _menuHlp->addAction(_actHelp); _menuHlp->addAction(_actAbout); } // Tool (Command) Bar //////////////////////////////////////////////////////////////////////////// void bnsWindow::AddToolbar() { QToolBar* toolBar = new QToolBar; addToolBar(Qt::BottomToolBarArea, toolBar); toolBar->setMovable(false); toolBar->addWidget(new QLabel(" ")); toolBar->addAction(_actwhatsthis); } // Save Options //////////////////////////////////////////////////////////////////////////// void bnsWindow::slotSaveOptions() { } // About Dialog - Constructor //////////////////////////////////////////////////////////////////////////// bnsAboutDlg::bnsAboutDlg(QWidget* parent) : QDialog(parent) { QTextBrowser* tb = new QTextBrowser; QUrl url; url.setPath(":bnsabout.html"); tb->setSource(url); tb->setReadOnly(true); int ww = QFontMetrics(font()).width('w'); QPushButton* _closeButton = new QPushButton("Close"); _closeButton->setMaximumWidth(10*ww); connect(_closeButton, SIGNAL(clicked()), this, SLOT(close())); QGridLayout* dlgLayout = new QGridLayout(); QLabel* img = new QLabel(); img->setPixmap(QPixmap(":ntrip-logo.png")); dlgLayout->addWidget(img, 0,0); dlgLayout->addWidget(new QLabel("BKG NTRIP Server (BNS) Version 1.0"), 0,1); dlgLayout->addWidget(tb,1,0,1,2); dlgLayout->addWidget(_closeButton,2,1,Qt::AlignRight); setLayout(dlgLayout); resize(60*ww, 60*ww); show(); } // About Dialog - Constructor //////////////////////////////////////////////////////////////////////////// bnsAboutDlg::~bnsAboutDlg() { };