feat/tray_pictogram #70

Open
pavanvo wants to merge 30 commits from pavanvo/squawk:feat/tray_pictogram into settings
7 changed files with 82 additions and 8 deletions
Showing only changes of commit 1b66fda318 - Show all commits

View File

@ -159,6 +159,8 @@ add_subdirectory(ui)
# Install the executable # Install the executable
install(TARGETS squawk DESTINATION ${CMAKE_INSTALL_BINDIR}) install(TARGETS squawk DESTINATION ${CMAKE_INSTALL_BINDIR})
install(FILES README.md DESTINATION ${CMAKE_INSTALL_DATADIR}/macaw.me/squawk)
install(FILES LICENSE.md DESTINATION ${CMAKE_INSTALL_DATADIR}/macaw.me/squawk)
if (CMAKE_BUILD_TYPE STREQUAL "Release") if (CMAKE_BUILD_TYPE STREQUAL "Release")
if (APPLE) if (APPLE)

View File

@ -595,17 +595,17 @@ pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.> <one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author> Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or the Free Software Foundation, either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -54,7 +54,7 @@ int main(int argc, char *argv[])
QTranslator qtTranslator; QTranslator qtTranslator;
qtTranslator.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); qtTranslator.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath));
app.installTranslator(&qtTranslator); app.installTranslator(&qtTranslator);
QTranslator myappTranslator; QTranslator myappTranslator;
QStringList shares = QStandardPaths::standardLocations(QStandardPaths::AppDataLocation); QStringList shares = QStandardPaths::standardLocations(QStandardPaths::AppDataLocation);
bool found = false; bool found = false;

View File

@ -6,6 +6,6 @@ set(TS_FILES
) )
qt5_add_translation(QM_FILES ${TS_FILES}) qt5_add_translation(QM_FILES ${TS_FILES})
add_custom_target(translations ALL DEPENDS ${QM_FILES}) add_custom_target(translations ALL DEPENDS ${QM_FILES})
install(FILES ${QM_FILES} DESTINATION ${CMAKE_INSTALL_DATADIR}/squawk/l10n) install(FILES ${QM_FILES} DESTINATION ${CMAKE_INSTALL_DATADIR}/macaw.me/squawk/l10n)
add_dependencies(${CMAKE_PROJECT_NAME} translations) add_dependencies(${CMAKE_PROJECT_NAME} translations)

View File

@ -1098,12 +1098,11 @@ void Squawk::onAboutSquawkCalled()
about = new About(); about = new About();
about->setAttribute(Qt::WA_DeleteOnClose); about->setAttribute(Qt::WA_DeleteOnClose);
connect(about, &Settings::destroyed, this, &Squawk::onAboutSquawkClosed); connect(about, &Settings::destroyed, this, &Squawk::onAboutSquawkClosed);
about->show();
} else { } else {
about->raise(); about->raise();
about->activateWindow(); about->activateWindow();
about->show();
} }
about->show();
} }
void Squawk::onAboutSquawkClosed() void Squawk::onAboutSquawkClosed()

View File

@ -17,6 +17,7 @@
#include "about.h" #include "about.h"
#include "ui_about.h" #include "ui_about.h"
#include <QXmppGlobal.h> #include <QXmppGlobal.h>
#include <QDebug>
static const std::string QXMPP_VERSION_PATCH(std::to_string(QXMPP_VERSION & 0xff)); static const std::string QXMPP_VERSION_PATCH(std::to_string(QXMPP_VERSION & 0xff));
static const std::string QXMPP_VERSION_MINOR(std::to_string((QXMPP_VERSION & 0xff00) >> 8)); static const std::string QXMPP_VERSION_MINOR(std::to_string((QXMPP_VERSION & 0xff00) >> 8));
@ -37,6 +38,71 @@ About::About(QWidget* parent):
m_ui->qxmppBuiltAgainstVersion->setText(tr("(built against %1)").arg(QXMPP_VERSION_STRING)); m_ui->qxmppBuiltAgainstVersion->setText(tr("(built against %1)").arg(QXMPP_VERSION_STRING));
setWindowFlag(Qt::Tool); setWindowFlag(Qt::Tool);
connect(m_ui->licenceLink, &QLabel::linkActivated, this, &About::onLicenseActivated);
} }
About::~About() = default; About::~About() {
if (license != nullptr) {
license->deleteLater();
}
};
void About::onLicenseActivated()
{
if (license == nullptr) {
QFile file;
bool found = false;
QStringList shares = QStandardPaths::standardLocations(QStandardPaths::AppDataLocation);
for (const QString& path : shares) {
file.setFileName(path + "/LICENSE.md");
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
found = true;
break;
}
}
if (!found) {
qDebug() << "couldn't read license file, bailing";
return;
}
license = new QWidget();
license->setWindowTitle(tr("License"));
QVBoxLayout* layout = new QVBoxLayout(license);
QLabel* text = new QLabel(license);
QScrollArea* area = new QScrollArea(license);
text->setTextFormat(Qt::MarkdownText);
text->setWordWrap(true);
text->setOpenExternalLinks(true);
text->setMargin(5);
area->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
layout->addWidget(area);
license->setAttribute(Qt::WA_DeleteOnClose);
connect(license, &QWidget::destroyed, this, &About::onLicenseClosed);
QTextStream in(&file);
QString line;
QString licenseText("");
while (!in.atEnd()) {
line = in.readLine();
licenseText.append(line + "\n");
}
text->setText(licenseText);
file.close();
area->setWidget(text);
} else {
license->raise();
license->activateWindow();
}
license->show();
}
void About::onLicenseClosed()
{
license = nullptr;
}

View File

@ -20,6 +20,9 @@
#include <QWidget> #include <QWidget>
#include <QScopedPointer> #include <QScopedPointer>
#include <QApplication> #include <QApplication>
#include <QFile>
#include <QTextStream>
#include <QStandardPaths>
namespace Ui namespace Ui
{ {
@ -36,6 +39,10 @@ public:
About(QWidget* parent = nullptr); About(QWidget* parent = nullptr);
~About(); ~About();
protected slots:
void onLicenseActivated();
void onLicenseClosed();
private: private:
QScopedPointer<Ui::About> m_ui; QScopedPointer<Ui::About> m_ui;
QWidget* license; QWidget* license;