aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Lubomir I. Ivanov <neolit123@gmail.com>2013-06-24 14:36:38 +0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-06-24 07:44:28 -0700
commitf3b04a88dffcda6cbe10be81d5c9613e0ab00c37 (patch)
treea8deb49502d1b4bdf9015b057acc8e25df920377
parentef0272f5efb7cfd7d864dbe1f53b18348de305d3 (diff)
downloadsubsurface-f3b04a88dffcda6cbe10be81d5c9613e0ab00c37.tar.gz
Add an 'About' dialog for the Qt UI
The dialog is similar to the one in the GTK version Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--Makefile2
-rw-r--r--qt-ui/about.cpp39
-rw-r--r--qt-ui/about.h26
-rw-r--r--qt-ui/about.ui142
-rw-r--r--qt-ui/mainwindow.cpp3
5 files changed, 211 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 1a4f60ace..664cd973e 100644
--- a/Makefile
+++ b/Makefile
@@ -51,6 +51,7 @@ HEADERS = \
qt-ui/subsurfacewebservices.h \
qt-ui/divecomputermanagementdialog.h \
qt-ui/diveplanner.h \
+ qt-ui/about.h \
SOURCES = \
@@ -88,6 +89,7 @@ SOURCES = \
qt-ui/subsurfacewebservices.cpp \
qt-ui/divecomputermanagementdialog.cpp \
qt-ui/diveplanner.cpp \
+ qt-ui/about.cpp \
$(RESFILE)
diff --git a/qt-ui/about.cpp b/qt-ui/about.cpp
new file mode 100644
index 000000000..18b54b956
--- /dev/null
+++ b/qt-ui/about.cpp
@@ -0,0 +1,39 @@
+#include "about.h"
+#include "ui_about.h"
+#include "../version.h"
+#include <QDebug>
+#include <QDialogButtonBox>
+#include <QNetworkReply>
+#include <qdesktopservices.h>
+
+SubsurfaceAbout *SubsurfaceAbout::instance()
+{
+ static SubsurfaceAbout *self = new SubsurfaceAbout();
+ return self;
+}
+
+SubsurfaceAbout::SubsurfaceAbout(QWidget* parent, Qt::WindowFlags f)
+: ui( new Ui::SubsurfaceAbout())
+{
+ ui->setupUi(this);
+ ui->aboutLabel->setText(tr("<span style='font-size: 18pt; font-weight: bold;'>" \
+ "Subsurface " VERSION_STRING "</span><br><br>" \
+ "Multi-platform divelog software in C<br>" \
+ "<span style='font-size: 8pt'>Linus Torvalds, Dirk Hohndel, and others, 2011, 2012, 2013</span>"));
+ licenseButton = new QPushButton(tr("&License"));
+ websiteButton = new QPushButton(tr("&Website"));
+ ui->buttonBox->addButton(licenseButton, QDialogButtonBox::ActionRole);
+ ui->buttonBox->addButton(websiteButton, QDialogButtonBox::ActionRole);
+ connect(licenseButton, SIGNAL(clicked(bool)), this, SLOT(licenseClicked()));
+ connect(websiteButton, SIGNAL(clicked(bool)), this, SLOT(websiteClicked()));
+}
+
+void SubsurfaceAbout::licenseClicked(void)
+{
+ QDesktopServices::openUrl(QUrl("http://www.gnu.org/licenses/gpl-2.0.txt"));
+}
+
+void SubsurfaceAbout::websiteClicked(void)
+{
+ QDesktopServices::openUrl(QUrl("http://subsurface.hohndel.org"));
+}
diff --git a/qt-ui/about.h b/qt-ui/about.h
new file mode 100644
index 000000000..6636b0e33
--- /dev/null
+++ b/qt-ui/about.h
@@ -0,0 +1,26 @@
+#ifndef ABOUT_H
+#define ABOUT_H
+
+#include <QDialog>
+#include <QPushButton>
+
+namespace Ui {
+ class SubsurfaceAbout;
+}
+
+class SubsurfaceAbout : public QDialog {
+ Q_OBJECT
+
+public:
+ static SubsurfaceAbout* instance();
+private slots:
+ void licenseClicked();
+ void websiteClicked();
+private:
+ explicit SubsurfaceAbout(QWidget* parent = 0, Qt::WindowFlags f = 0);
+ QPushButton *licenseButton;
+ QPushButton *websiteButton;
+ Ui::SubsurfaceAbout *ui;
+};
+
+#endif
diff --git a/qt-ui/about.ui b/qt-ui/about.ui
new file mode 100644
index 000000000..e03bb3ec0
--- /dev/null
+++ b/qt-ui/about.ui
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>SubsurfaceAbout</class>
+ <widget class="QDialog" name="SubsurfaceAbout">
+ <property name="windowModality">
+ <enum>Qt::WindowModal</enum>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>456</width>
+ <height>450</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="windowTitle">
+ <string>About Subsurface</string>
+ </property>
+ <property name="windowIcon">
+ <iconset resource="../subsurface.qrc">
+ <normaloff>:/subsurface-icon</normaloff>:/subsurface-icon</iconset>
+ </property>
+ <property name="modal">
+ <bool>true</bool>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QLabel" name="subsurfaceIcon">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="pixmap">
+ <pixmap resource="../subsurface.qrc">:/subsurface-icon</pixmap>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="aboutLabel">
+ <property name="text">
+ <string>TextLabel</string>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::RichText</enum>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Close</set>
+ </property>
+ <property name="centerButtons">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <resources>
+ <include location="../subsurface.qrc"/>
+ </resources>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>SubsurfaceAbout</receiver>
+ <slot>close()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>227</x>
+ <y>437</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>227</x>
+ <y>224</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp
index b61f962c4..fc454ab2f 100644
--- a/qt-ui/mainwindow.cpp
+++ b/qt-ui/mainwindow.cpp
@@ -33,6 +33,7 @@
#include "divecomputermanagementdialog.h"
#include "simplewidgets.h"
#include "diveplanner.h"
+#include "about.h"
static MainWindow* instance = 0;
@@ -335,7 +336,7 @@ void MainWindow::on_actionInputPlan_triggered()
void MainWindow::on_actionAboutSubsurface_triggered()
{
- qDebug("actionAboutSubsurface");
+ SubsurfaceAbout::instance()->show();
}
void MainWindow::on_actionUserManual_triggered()