From d2e8d0eb40d217c3a0ba3d5d61cfcb154741c07c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Blin?= <sebastien.blin@savoirfairelinux.com> Date: Thu, 10 Jan 2019 14:18:36 -0500 Subject: [PATCH] build: support native build on linux Change-Id: Ia48eaaf0f08f186a29516611538dd03b2594aa6a --- .gitignore | 3 +- README.md | 90 ++++++---- RingWinClient.pro | 316 ----------------------------------- advancedsettingswidget.cpp | 1 - callwidget.cpp | 2 +- jami-qt.pro | 186 +++++++++++++++++++++ main.cpp | 2 + mainwindow.cpp | 4 +- sendcontactrequestwidget.cpp | 73 -------- setavatardialog.cpp | 4 +- setavatardialog.h | 10 +- settingswidget.cpp | 10 ++ 12 files changed, 267 insertions(+), 434 deletions(-) delete mode 100644 RingWinClient.pro create mode 100644 jami-qt.pro delete mode 100644 sendcontactrequestwidget.cpp diff --git a/.gitignore b/.gitignore index 9601030..bc96018 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,5 @@ release/ qrencode-win32/ *.dll .gitignore -*.qm \ No newline at end of file +*.qm +build/ \ No newline at end of file diff --git a/README.md b/README.md index 57fa35c..4e3d261 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,9 @@ -# Windows client for Jami +# Jami-qt + +`jami-qt` is the cross platform client for Jami. For now, it's mainly used for the Windows platform and is not tested on other platforms. + + + For more information about the jami project, see the following: @@ -15,48 +20,28 @@ For more information about the jami project, see the following: ## Get the source code - - ```git clone https://gerrit-ring.savoirfairelinux.com/ring-client-windows``` + - `git clone https://gerrit-ring.savoirfairelinux.com/ring-client-windows` ## Build instructions -*USE THE QMAKE OF Qt BUILT WITH MINGW* (e.g. /usr/bin/[i686 | x86_64]-w64-mingw32-qmake-qt5) +**NOTE: The build process is currently under a full refactorization. This section will be updated soon** + +## Windows + +TBD + +### Build winsparkle +In the client directory after having initialized the submodule: ``` -cd ring-client-windows +cd winsparkle mkdir build && cd build -export QTDIR=<path to mingw qt> (e.g. /usr/[i686 | x86_64]-w64-mingw32/lib/qt) -git submodule init && git submodule update -cd libqrencode -./autogen.sh && ./configure --host=[i686 | x86_64]-w64-mingw32 --prefix=<Install dir of Jami and LRC> -make -make install -cd .. -qmake ../RingWinClient.pro -r -spec win32-g++ RING=<Install dir of Jami and LRC> [BUILD=Debug] +cmake -DCMAKE_TOOLCHAIN_FILE=<LRC Directory>/cmake/winBuild.cmake -DCMAKE_INSTALL_PREFIX=Install dir of Jami and LRC> ../cmake", make make install ``` -You will find all files in ./release directory. - -#Auto update - -If you want to enable auto-update -- Build winsparkle - In the client directory after having initialized the submodule - ``` - cd winsparkle - mkdir build && cd build - cmake -DCMAKE_TOOLCHAIN_FILE=<LRC Directory>/cmake/winBuild.cmake -DCMAKE_INSTALL_PREFIX=Install dir of Jami and LRC> ../cmake", - make - make install - ``` -- Compile the client with `ENABLE_AUTOUPDATE=True` - -## Debugging - -Compile the client with 'BUILD=Debug' and libRingClient with '-DCMAKE_BUILD_TYPE=Debug' - -## Packaging +### Packaging * Nsis : Nullsoft Scriptable Install System :http://nsis.sourceforge.net/Main_Page. @@ -64,3 +49,42 @@ Compile the client with 'BUILD=Debug' and libRingClient with '-DCMAKE_BUILD_TYPE cd build/release makensis ring.nsi ``` + + +## Linux + +For now, this process is experimental. The best way to do that is: + +1. Compile the daemon and LRC as specified in these projects (see the respective repositories or https://git.jami.net/savoirfairelinux/ring-project/wikis/technical/Build-instructions). +2. Install needed dependencies (TBD): + + For Fedora: +```bash +sudo dnf install qt5-qtsvg-devel qt5-qtwebengine-devel qt5-multimedia-devel +``` +3. If you are not using the `ring-project` repository, you have to define the `LRC` environment variable to contains the install directory for `LRC`. Also, you will have to setup `LD_LIBRARY_PATH` if your install directory is a custom one. +4. Then, build the client: + +```bash +mkdir build +cd build +qmake-qt5 ../jami-qt.pro +make -j 9 +``` + +5. Then, you are finally ready to launch `jami-qt` in your `build` directory. + +### Known issues + +1. The build system is not straight forward +2. Video doesn't work +3. Can't maximize/minimize window +4. Crash if the daemon is not started and installed. + +## Mac OS + +TBD + + +## Debugging + +Compile the client with 'BUILD=Debug' and libRingClient with '-DCMAKE_BUILD_TYPE=Debug' \ No newline at end of file diff --git a/RingWinClient.pro b/RingWinClient.pro deleted file mode 100644 index ad4c510..0000000 --- a/RingWinClient.pro +++ /dev/null @@ -1,316 +0,0 @@ -#------------------------------------------------- -# -# Project created by QtCreator 2015-03-23T14:30:35 -# -#------------------------------------------------- - -QT += core gui - -greaterThan(QT_MAJOR_VERSION, 4): QT += widgets svg xml network - -win32: QT += winextras - -VERSION = 2.0.0 -GIT_VERSION = $$system(git --git-dir $$PWD/.git --work-tree $$PWD describe --always --tags) - -RING_CLIENT_BUILD_DATE = $$(RING_CLIENT_BUILD_DATE) -isEmpty(RING_CLIENT_BUILD_DATE){ -RING_CLIENT_BUILD_DATE = $$system(date +%Y%m%d) -} -NIGHTLY_VERSION =$$system(date +'%Y%m%d') - -DEFINES += VERSION=\\\"$$VERSION\\\" -DEFINES += GIT_VERSION=\\\"$$GIT_VERSION\\\" -DEFINES += NIGHTLY_VERSION=\\\"$$NIGHTLY_VERSION\\\" -DEFINES += RING_CLIENT_BUILD_DATE=\"\\\"$$RING_CLIENT_BUILD_DATE\\\"\" -DEFINES += LRC_IMPORT - -BUILD=$${BUILD} -TARGET = Jami -TEMPLATE = app - -QMAKE_CXXFLAGS += -std=c++14 - -contains(BUILD, Debug) { - QMAKE_STRIP = echo - CONFIG += console -} - -isEmpty(QMAKE_LRELEASE) { - QMAKE_LRELEASE = lrelease -} - -SOURCES += main.cpp\ - mainwindow.cpp \ - callwidget.cpp \ - configurationwidget.cpp \ - navwidget.cpp \ - accountdetails.cpp \ - aboutdialog.cpp \ - videowidget.cpp \ - utils.cpp \ - wizarddialog.cpp \ - windowscontactbackend.cpp \ - selectareadialog.cpp \ - accountserializationadapter.cpp \ - accountstatedelegate.cpp \ - videoview.cpp \ - videooverlay.cpp \ - contactpicker.cpp \ - globalsystemtray.cpp \ - conversationitemdelegate.cpp \ - conversationsfilterwidget.cpp \ - callutilsdialog.cpp \ - idlabel.cpp \ - ringcontactlineedit.cpp \ - pixbufmanipulator.cpp \ - qualitydialog.cpp \ - ringbutton.cpp \ - photoboothdialog.cpp \ - sendcontactrequestwidget.cpp \ - contactrequestwidget.cpp \ - smartlistselectorbuttonnotifier.cpp \ - deleteaccountdialog.cpp \ - bannedcontactswidget.cpp \ - photoboothwidget.cpp \ - smartlistmodel.cpp \ - smartlistview.cpp \ - accountitemdelegate.cpp \ - accountlistmodel.cpp \ - invitebuttonswidget.cpp \ - wizardwidget.cpp \ - currentaccountcombobox.cpp \ - messagewebpage.cpp \ - messagewebview.cpp \ - webchathelpers.cpp \ - animationhelpers.cpp \ - settingsitemwidget.cpp - -HEADERS += mainwindow.h \ - callwidget.h \ - configurationwidget.h \ - navwidget.h \ - accountdetails.h \ - aboutdialog.h \ - videowidget.h \ - utils.h \ - wizarddialog.h \ - windowscontactbackend.h \ - selectareadialog.h \ - accountserializationadapter.h \ - accountstatedelegate.h \ - videoview.h \ - videooverlay.h \ - contactpicker.h \ - settingskey.h \ - globalsystemtray.h \ - conversationitemdelegate.h \ - conversationsfilterwidget.h \ - callutilsdialog.h \ - idlabel.h \ - ringcontactlineedit.h \ - pixbufmanipulator.h \ - qualitydialog.h \ - ringthemeutils.h \ - ringbutton.h \ - photoboothdialog.h \ - sendcontactrequestwidget.h \ - contactrequestwidget.h \ - smartlistselectorbuttonnotifier.h \ - deleteaccountdialog.h \ - bannedcontactswidget.h \ - photoboothwidget.h \ - lrcinstance.h \ - smartlistmodel.h \ - smartlistview.h \ - accountitemdelegate.h \ - accountlistmodel.h \ - invitebuttonswidget.h \ - wizardwidget.h \ - currentaccountcombobox.h \ - messagewebpage.h \ - messagewebview.h \ - webchathelpers.h \ - animationhelpers.h \ - settingsitemwidget.h - - -contains(DEFINES, URI_PROTOCOL) { - HEADERS += shmclient.h - SOURCES += shmclient.cpp -} - -FORMS += mainwindow.ui \ - callwidget.ui \ - configurationwidget.ui \ - accountdetails.ui \ - aboutdialog.ui \ - wizarddialog.ui \ - videoview.ui \ - videooverlay.ui \ - contactpicker.ui \ - callutilsdialog.ui \ - qualitydialog.ui \ - ringbutton.ui \ - photoboothdialog.ui \ - sendcontactrequestwidget.ui \ - contactrequestwidget.ui \ - deleteaccountdialog.ui \ - bannedcontactswidget.ui \ - photoboothwidget.ui \ - invitebuttonswidget.ui \ - wizardwidget.ui \ - animatedoverlay.ui - -win32: LIBS += -lole32 -luuid -lshlwapi -lgdi32 -LIBS += -lqrencode - -INCLUDEPATH += $${RING}/include/libringclient -INCLUDEPATH += $${RING}/include - -LIBS += -L$${RING}/lib -lringclient - -RESOURCES += \ - ressources.qrc - -RC_FILE = ico.rc - -TRANSLATIONS = \ - translations/ring_client_windows_nb.ts \ - translations/ring_client_windows_pa.ts \ - translations/ring_client_windows_pt_BR.ts \ - translations/ring_client_windows_pt.ts \ - translations/ring_client_windows_ms.ts \ - translations/ring_client_windows_de.ts \ - translations/ring_client_windows_uk.ts \ - translations/ring_client_windows_sq_AL.ts \ - translations/ring_client_windows_ca.ts \ - translations/ring_client_windows_es.ts \ - translations/ring_client_windows_da_DK.ts \ - translations/ring_client_windows_et_EE.ts \ - translations/ring_client_windows_de_DE.ts \ - translations/ring_client_windows_lt.ts \ - translations/ring_client_windows_fr_FR.ts \ - translations/ring_client_windows_nl_BE.ts \ - translations/ring_client_windows_he.ts \ - translations/ring_client_windows_sk_SK.ts \ - translations/ring_client_windows_pl.ts \ - translations/ring_client_windows_es_AR.ts \ - translations/ring_client_windows_nl.ts \ - translations/ring_client_windows_it_IT.ts \ - translations/ring_client_windows_bg.ts \ - translations/ring_client_windows_pt_PT.ts \ - translations/ring_client_windows_id.ts \ - translations/ring_client_windows_en_GB.ts \ - translations/ring_client_windows_pl_PL.ts \ - translations/ring_client_windows.ts \ - translations/ring_client_windows_eu.ts \ - translations/ring_client_windows_eo.ts \ - translations/ring_client_windows_nl_NL.ts \ - translations/ring_client_windows_ru_RU.ts \ - translations/ring_client_windows_hr.ts \ - translations/ring_client_windows_da.ts \ - translations/ring_client_windows_zh_CN.ts \ - translations/ring_client_windows_fr.ts \ - translations/ring_client_windows_tr.ts \ - translations/ring_client_windows_cs_CZ.ts \ - translations/ring_client_windows_zh_TW.ts \ - translations/ring_client_windows_fr_CA.ts \ - translations/ring_client_windows_ko_KR.ts \ - translations/ring_client_windows_zh.ts \ - translations/ring_client_windows_fa_IR.ts \ - translations/ring_client_windows_fi.ts \ - translations/ring_client_windows_sv.ts \ - translations/ring_client_windows_it.ts \ - translations/ring_client_windows_el.ts \ - translations/ring_client_windows_ja.ts \ - translations/ring_client_windows_hu.ts \ - translations/ring_client_windows_sl.ts \ - translations/ring_client_windows_hi_IN.ts \ - translations/ring_client_windows_ro.ts \ - translations/ring_client_windows_ru.ts \ - translations/ring_client_windows_ar.ts \ - -maketranslationdir.target = customtarget -maketranslationdir.commands = $(MKDIR) $$OUT_PWD/share/ring/translations/ - -updateqm.input = TRANSLATIONS -updateqm.output = $$OUT_PWD/release/share/ring/translations/${QMAKE_FILE_BASE}.qm -updateqm.commands = $$QMAKE_LRELEASE ${QMAKE_FILE_IN} -qm $$OUT_PWD/release/share/ring/translations/${QMAKE_FILE_BASE}.qm -updateqm.CONFIG += no_link - -QMAKE_EXTRA_TARGETS += maketranslationdir -QMAKE_EXTRA_COMPILERS += updateqm - -PRE_TARGETDEPS += customtarget compiler_updateqm_make_all - -QM_FILES.files = share -QM_FILES.path = $$OUT_PWD/release - -INSTALLS += QM_FILES - -DISTFILES += \ - License.rtf \ - ring.nsi - -win32 { - - RINGTONES.files = $${RING}/share/ring/ringtones - RINGTONES.path = $$OUT_PWD/release - - PACKAGING.files = ring.nsi images/jami.ico - PACKAGING.path = $$OUT_PWD/release - - LICENSE.files = License.rtf - LICENSE.path = $$OUT_PWD/release - - RUNTIMEDIR=$$[QT_INSTALL_BINS] - - RUNTIME.files = $${RING}/bin/libring.dll $${RING}/bin/libringclient.dll $${RING}/bin/libqrencode.dll - RUNTIME.path = $$OUT_PWD/release - - LRC_TRANSLATION.files = $${RING}/share/libringclient/translations - LRC_TRANSLATION.path = $$OUT_PWD/release/share/libringclient/ - - QTRUNTIME.files = $$RUNTIMEDIR/Qt5Core.dll $$RUNTIMEDIR/Qt5Widgets.dll \ - $$RUNTIMEDIR/Qt5Gui.dll $$RUNTIMEDIR/Qt5Svg.dll \ - $$RUNTIMEDIR/Qt5Xml.dll $$RUNTIMEDIR/Qt5WinExtras.dll \ - $$RUNTIMEDIR/Qt5Network.dll $$RUNTIMEDIR/Qt5Sql.dll \ - $$RUNTIMEDIR/Qt5WebEngineWidgets.dll $$RUNTIMEDIR/Qt5WebChannel.dll - - QTRUNTIME.path = $$OUT_PWD/release - - QTDEPSRUNTIME.files = $$RUNTIMEDIR/zlib1.dll \ - $$RUNTIMEDIR/libfreetype-6.dll $$RUNTIMEDIR/libglib-2.0-0.dll \ - $$RUNTIMEDIR/libharfbuzz-0.dll \ - $$RUNTIMEDIR/libintl-8.dll $$RUNTIMEDIR/libpcre-1.dll \ - $$RUNTIMEDIR/libpcre2-16-0.dll $$RUNTIMEDIR/libpng16-16.dll \ - $$RUNTIMEDIR/libjpeg-62.dll $$RUNTIMEDIR/iconv.dll \ - $$RUNTIMEDIR/libidn-11.dll $$RUNTIMEDIR/liblzma-5.dll \ - $$RUNTIMEDIR/libGLESv2.dll $$RUNTIMEDIR/libbz2-1.dll \ - $$RUNTIMEDIR/libsqlite3-0.dll - QTDEPSRUNTIME.path = $$OUT_PWD/release - - QTPLATFORMS.files = $$[QT_INSTALL_PLUGINS]/platforms/qwindows.dll - QTPLATFORMS.path = $$OUT_PWD/release/platforms - - QTPLUGINIMAGE.files = $$[QT_INSTALL_PLUGINS]/imageformats/ - QTPLUGINIMAGE.path = $$OUT_PWD/release - - QTSQLDRIVERS.files = $$[QT_INSTALL_PLUGINS]/sqldrivers/qsqlite.dll - QTSQLDRIVERS.path = $$OUT_PWD/release/sqldrivers - - LIBSTD.files = $$RUNTIMEDIR/libgcc_s_sjlj-1.dll $$RUNTIMEDIR/libstdc++-6.dll \ - $$RUNTIMEDIR/libwinpthread-1.dll $$RUNTIMEDIR/libgcc_s_seh-1.dll - LIBSTD.path = $$OUT_PWD/release - - INSTALLS += RINGTONES PACKAGING LICENSE RUNTIME LRC_TRANSLATION QTRUNTIME QTDEPSRUNTIME \ - QTPLUGINIMAGE QTPLATFORMS QTSQLDRIVERS LIBSTD - - DEFINES += ENABLE_AUTOUPDATE - LIBS += -L$${RING}/lib -lWinSparkle - WINSPARKLE.files = $${RING}/bin/WinSparkle.dll $${RING}/bin/libringclient.dll - WINSPARKLE.path = $$OUT_PWD/release - INSTALLS += WINSPARKLE - message("AUTO UPDATES enabled") -} diff --git a/advancedsettingswidget.cpp b/advancedsettingswidget.cpp index e5e226a..f376ffe 100644 --- a/advancedsettingswidget.cpp +++ b/advancedsettingswidget.cpp @@ -15,7 +15,6 @@ * You should have received a copy of the GNU General Public License * * along with this program. If not, see <http://www.gnu.org/licenses/>. * **************************************************************************/ -#include "direct.h" #include <QFileDialog> #include "lrcinstance.h" diff --git a/callwidget.cpp b/callwidget.cpp index 99c5359..1b7068b 100644 --- a/callwidget.cpp +++ b/callwidget.cpp @@ -32,7 +32,7 @@ #include <algorithm> #include <memory> -#include "qrencode.h" +#include <qrencode.h> //ERROR is defined in windows.h #include "utils.h" diff --git a/jami-qt.pro b/jami-qt.pro new file mode 100644 index 0000000..0d0d5c8 --- /dev/null +++ b/jami-qt.pro @@ -0,0 +1,186 @@ +TEMPLATE = app +TARGET = jami-qt + +QT += widgets xml multimedia multimediawidgets network webenginewidgets + +isEmpty(LRC) { + LRC=../../install/lrc/ +} + +INCLUDEPATH += $${LRC}/include/libringclient +INCLUDEPATH += $${LRC}/include + +LIBS += -L$${LRC}/lib -lringclient +LIBS += -lqrencode + +# Input +HEADERS += aboutdialog.h \ + bannedcontactswidget.h \ + idlabel.h \ + globalsystemtray.h \ + selectareadialog.h \ + ringcontactlineedit.h \ + version.h \ + windowscontactbackend.h \ + smartlistview.h \ + settingskey.h \ + photoboothwidget.h \ + navwidget.h \ + videowidget.h \ + videoview.h \ + accountitemdelegate.h \ + accountlistmodel.h \ + advancedsettingswidget.h \ + avatargraphicsview.h \ + animationhelpers.h \ + bannedlistmodel.h \ + callwidget.h \ + conversationitemdelegate.h \ + deleteaccountdialog.h \ + currentaccountcombobox.h \ + conversationsfilterwidget.h \ + lrcinstance.h \ + linkdevwidget.h \ + invitebuttonswidget.h \ + messagewebview.h \ + messagewebpage.h \ + mainwindow.h \ + photoboothdialog.h \ + passworddialog.h \ + newwizardwidget.h \ + regnamedialog.h \ + pixbufmanipulator.h \ + ringbutton.h \ + settingsitemwidget.h \ + setavatardialog.h \ + runguard.h \ + ringthemeutils.h \ + settingswidget.h \ + smartlistselectorbuttonnotifier.h \ + smartlistmodel.h \ + shmclient.h \ + videooverlay.h \ + utils.h \ + webchathelpers.h +FORMS += contactdialog.ui \ + videoview.ui \ + animatedoverlay.ui \ + bannedcontactswidget.ui \ + ringbutton.ui \ + deviceeditwidget.ui \ + invitebuttonswidget.ui \ + photoboothdialog.ui \ + passworddialog.ui \ + setavatardialog.ui \ + deleteaccountdialog.ui \ + aboutdialog.ui \ + accountdetails.ui \ + mainwindow.ui \ + linkdevwidget.ui \ + photoboothwidget.ui \ + newwizardwidget.ui \ + regnamedialog.ui \ + advancedsettingswidget.ui \ + callwidget.ui \ + settingswidget.ui \ + videooverlay.ui +SOURCES += aboutdialog.cpp \ + bannedcontactswidget.cpp \ + idlabel.cpp \ + globalsystemtray.cpp \ + pixbufmanipulator.cpp \ + navwidget.cpp \ + ringcontactlineedit.cpp \ + smartlistview.cpp \ + selectareadialog.cpp \ + windowscontactbackend.cpp \ + videowidget.cpp \ + accountlistmodel.cpp \ + accountitemdelegate.cpp \ + advancedsettingswidget.cpp \ + animationhelpers.cpp \ + bannedlistmodel.cpp \ + avatargraphicsview.cpp \ + callwidget.cpp \ + conversationsfilterwidget.cpp \ + conversationitemdelegate.cpp \ + deleteaccountdialog.cpp \ + currentaccountcombobox.cpp \ + main.cpp \ + linkdevwidget.cpp \ + invitebuttonswidget.cpp \ + messagewebview.cpp \ + messagewebpage.cpp \ + mainwindow.cpp \ + photoboothdialog.cpp \ + passworddialog.cpp \ + newwizardwidget.cpp \ + regnamedialog.cpp \ + photoboothwidget.cpp \ + ringbutton.cpp \ + settingsitemwidget.cpp \ + setavatardialog.cpp \ + runguard.cpp \ + settingswidget.cpp \ + smartlistselectorbuttonnotifier.cpp \ + smartlistmodel.cpp \ + shmclient.cpp \ + videooverlay.cpp \ + utils.cpp \ + videoview.cpp \ + webchathelpers.cpp +RESOURCES += ressources.qrc +TRANSLATIONS += translations/ring_client_windows.ts \ + translations/ring_client_windows_ar.ts \ + translations/ring_client_windows_bg.ts \ + translations/ring_client_windows_ca.ts \ + translations/ring_client_windows_cs_CZ.ts \ + translations/ring_client_windows_da.ts \ + translations/ring_client_windows_da_DK.ts \ + translations/ring_client_windows_de.ts \ + translations/ring_client_windows_de_DE.ts \ + translations/ring_client_windows_el.ts \ + translations/ring_client_windows_en_GB.ts \ + translations/ring_client_windows_eo.ts \ + translations/ring_client_windows_es.ts \ + translations/ring_client_windows_es_AR.ts \ + translations/ring_client_windows_et_EE.ts \ + translations/ring_client_windows_eu.ts \ + translations/ring_client_windows_fa_IR.ts \ + translations/ring_client_windows_fi.ts \ + translations/ring_client_windows_fr.ts \ + translations/ring_client_windows_fr_CA.ts \ + translations/ring_client_windows_fr_FR.ts \ + translations/ring_client_windows_he.ts \ + translations/ring_client_windows_hi_IN.ts \ + translations/ring_client_windows_hr.ts \ + translations/ring_client_windows_hu.ts \ + translations/ring_client_windows_id.ts \ + translations/ring_client_windows_it.ts \ + translations/ring_client_windows_it_IT.ts \ + translations/ring_client_windows_ja.ts \ + translations/ring_client_windows_ko_KR.ts \ + translations/ring_client_windows_lt.ts \ + translations/ring_client_windows_ms.ts \ + translations/ring_client_windows_nb.ts \ + translations/ring_client_windows_nl.ts \ + translations/ring_client_windows_nl_BE.ts \ + translations/ring_client_windows_nl_NL.ts \ + translations/ring_client_windows_pa.ts \ + translations/ring_client_windows_pl.ts \ + translations/ring_client_windows_pl_PL.ts \ + translations/ring_client_windows_pt.ts \ + translations/ring_client_windows_pt_BR.ts \ + translations/ring_client_windows_pt_PT.ts \ + translations/ring_client_windows_ro.ts \ + translations/ring_client_windows_ru.ts \ + translations/ring_client_windows_ru_RU.ts \ + translations/ring_client_windows_sk_SK.ts \ + translations/ring_client_windows_sl.ts \ + translations/ring_client_windows_sq_AL.ts \ + translations/ring_client_windows_sv.ts \ + translations/ring_client_windows_tr.ts \ + translations/ring_client_windows_uk.ts \ + translations/ring_client_windows_zh.ts \ + translations/ring_client_windows_zh_CN.ts \ + translations/ring_client_windows_zh_TW.ts diff --git a/main.cpp b/main.cpp index 0acdefa..deabbda 100644 --- a/main.cpp +++ b/main.cpp @@ -263,7 +263,9 @@ main(int argc, char *argv[]) auto ret = a.exec(); +#ifdef Q_OS_WIN FreeConsole(); +#endif QCoreApplication::exit(); GlobalSystemTray::instance().deleteLater(); diff --git a/mainwindow.cpp b/mainwindow.cpp index afc650a..8fc6cd2 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -31,11 +31,11 @@ #include <windows.h> #include <QWinThumbnailToolBar> #include <QWinThumbnailToolButton> +#include "winsparkle.h" #endif #include "aboutdialog.h" #include "settingskey.h" -#include "winsparkle.h" #include "callmodel.h" #include "callwidget.h" #include "utils.h" @@ -102,7 +102,6 @@ MainWindow::MainWindow(QWidget* parent) : QString aboutTitle = tr("About"); ::AppendMenuW(sysMenu, MF_STRING, IDM_ABOUTBOX, aboutTitle.toStdWString().c_str()); } -#endif win_sparkle_set_appcast_url("https://dl.ring.cx/windows/winsparkle-ring.xml"); win_sparkle_set_app_details(L"Savoir-faire Linux", L"Jami", QString(VERSION_STRING).toStdWString().c_str()); @@ -117,6 +116,7 @@ MainWindow::MainWindow(QWidget* parent) : QObject::connect(QCoreApplication::instance(), &QCoreApplication::aboutToQuit, [=]() { win_sparkle_cleanup(); }); +#endif setContextMenuPolicy(Qt::NoContextMenu); diff --git a/sendcontactrequestwidget.cpp b/sendcontactrequestwidget.cpp deleted file mode 100644 index 8ac53be..0000000 --- a/sendcontactrequestwidget.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2015-2017 by Savoir-faire Linux * - * Author: Anthony Léonard <anthony.leonard@savoirfairelinux.com> * - * Author: Olivier Soldano <olivier.soldano@savoirfairelinux.com> * - * * - * 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 * - * the Free Software Foundation; either version 3 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - **************************************************************************/ - -#include <QDebug> - -#include "sendcontactrequestwidget.h" -#include "ui_sendcontactrequestwidget.h" -#include "account.h" -#include "accountmodel.h" -#include "availableaccountmodel.h" -#include "recentmodel.h" -#include "contactmethod.h" -#include "phonedirectorymodel.h" - -SendContactRequestWidget::SendContactRequestWidget(QWidget *parent) : - QWidget(parent), - ui(new Ui::SendContactRequestWidget) -{ - ui->setupUi(this); - ui->peerContactID->setText("ContactID"); // TODO: Display ID/Username -} - -SendContactRequestWidget::~SendContactRequestWidget() -{ - disconnect(sendCRClickedConnection_); - delete ui; -} - -void -SendContactRequestWidget::setup(const QModelIndex& nodeIdx) -{ - auto cmVector = RecentModel::instance().getContactMethods(nodeIdx); - disconnect(sendCRClickedConnection_); - QString number = cmVector[0]->uri(); - ui->peerContactID->setText(number); - sendCRClickedConnection_ = connect(ui->sendContactRequestButton, &QPushButton::clicked, [this,nodeIdx]() { - sendCR(nodeIdx); - }); -} - -void SendContactRequestWidget::sendCR(const QModelIndex& nodeIdx) -{ - auto cmVector = RecentModel::instance().getContactMethods(nodeIdx); - QString number = cmVector[0]->uri(); - auto cm = PhoneDirectoryModel::instance().getNumber(number); - - if(cm->account() != nullptr){ - cm->account()->sendContactRequest(cm); - } else { - qDebug() << "no account linked to contact method"; - auto idx = AvailableAccountModel::instance().selectionModel()->currentIndex(); - if (idx.isValid()) { - cm->setAccount(idx.data(static_cast<int>(Ring::Role::Object)).value<Account*>()); - cm->account()->sendContactRequest(cm); - } - } -} diff --git a/setavatardialog.cpp b/setavatardialog.cpp index 745b7ae..aa2d8d9 100644 --- a/setavatardialog.cpp +++ b/setavatardialog.cpp @@ -16,12 +16,12 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. * **************************************************************************/ -#include <QtMultimedia\QCameraInfo> +#include <QtMultimedia/QCameraInfo> #include <QFileDialog> #include <QAbstractScrollArea> #include <QScreen> #include <QWindow> -#include <QtMultimedia\QCameraImageCapture> +#include <QtMultimedia/QCameraImageCapture> #include <QBuffer> #include <QStandardPaths> diff --git a/setavatardialog.h b/setavatardialog.h index d0b3365..b0e5c6e 100644 --- a/setavatardialog.h +++ b/setavatardialog.h @@ -23,12 +23,12 @@ #include <QAction> #include <QDialog> #include <QRegion> -#include <QtMultimedia\QCamera> +#include <QtMultimedia/QCamera> #include <QGraphicsScene> -#include <QtMultimedia\QMediaPlayer> -#include <QtMultimedia\QCameraImageCapture> -#include <QtMultimediaWidgets\QCameraViewfinder> -#include <QtMultimedia\QCameraImageCapture> +#include <QtMultimedia/QMediaPlayer> +#include <QtMultimedia/QCameraImageCapture> +#include <QtMultimediaWidgets/QCameraViewfinder> +#include <QtMultimedia/QCameraImageCapture> #include "accountlistmodel.h" diff --git a/settingswidget.cpp b/settingswidget.cpp index 3afc091..e64a639 100644 --- a/settingswidget.cpp +++ b/settingswidget.cpp @@ -50,7 +50,9 @@ #include "video/previewmanager.h" #include "callmodel.h" +#ifdef Q_OS_WIN #include "winsparkle.h" +#endif SettingsWidget::SettingsWidget(QWidget* parent) : NavWidget(parent), @@ -738,8 +740,10 @@ void SettingsWidget::populateGeneralSettings() } ui->recordPathButton->setText(media::RecordingModel::instance().recordPath()); +#ifdef Q_OS_WIN ui->autoUpdateCheckBox->setChecked(win_sparkle_get_automatic_check_for_updates()); ui->intervalUpdateCheckSpinBox->setValue(win_sparkle_get_update_check_interval() / 86400); +#endif } void @@ -768,18 +772,23 @@ SettingsWidget::setClosedOrMinSlot(int state) void SettingsWidget::checkForUpdateSlot() { +#ifdef Q_OS_WIN win_sparkle_check_update_with_ui(); +#endif } void SettingsWidget::setUpdateIntervalSlot(int value) { +#ifdef Q_OS_WIN win_sparkle_set_update_check_interval(value * 86400); +#endif } void SettingsWidget::setUpdateAutomaticSlot(int state) { +#ifdef Q_OS_WIN if (state == Qt::CheckState::Unchecked) { win_sparkle_set_automatic_check_for_updates(false); ui->intervalUpdateCheckSpinBox->setEnabled(false); @@ -787,6 +796,7 @@ SettingsWidget::setUpdateAutomaticSlot(int state) win_sparkle_set_automatic_check_for_updates(true); ui->intervalUpdateCheckSpinBox->setEnabled(true); } +#endif } void -- GitLab