Skip to content

Commit

Permalink
Updating the Qt example to build in CMake
Browse files Browse the repository at this point in the history
  • Loading branch information
mohabouje committed Apr 8, 2023
1 parent 4375f2b commit ec410e0
Show file tree
Hide file tree
Showing 17 changed files with 182 additions and 151 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,5 @@ Release/
enc_temp_folder/
/example/qt-gui-example/build-WinToastExample-Desktop_Qt_5_9_2_MSVC2015_32bit-Debug
build/
cmake-build-*
cmake-build-*
CMakeLists.txt.user
7 changes: 4 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

option(WINTOASTLIB_BUILD_EXAMPLES "If enabled, the examples will be built" OFF)
option(WINTOASTLIB_BUILD_EXAMPLES "Compile the examples" ON)
option(WINTOASTLIB_QT_ENABLED "Enable Qt support to build the GUI examples" ON)

set(WINTOASTLIB_LIBNAME WinToast)
set(WINTOASTLIB_HEADERS ${CMAKE_CURRENT_LIST_DIR}/include/wintoastlib.h)
Expand All @@ -13,6 +14,6 @@ add_library(${WINTOASTLIB_LIBNAME} STATIC ${WINTOASTLIB_HEADERS} ${WINTOASTLIB_S
target_include_directories(${WINTOASTLIB_LIBNAME} PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include)
target_link_libraries(${WINTOASTLIB_LIBNAME} psapi)

if (WINTOASTLIB_BUILD_EXAMPLES)
if (${WINTOASTLIB_BUILD_EXAMPLES})
add_subdirectory(examples)
endif()
endif()
27 changes: 0 additions & 27 deletions example/qt-gui-example/WinToastExample/WinToastExample.pro

This file was deleted.

3 changes: 3 additions & 0 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
if (${WINTOASTLIB_QT_ENABLED})
add_subdirectory(qt-gui-example)
endif()
File renamed without changes.
File renamed without changes.
9 changes: 9 additions & 0 deletions examples/qt-gui-example/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
find_package(Qt6 REQUIRED COMPONENTS Widgets)
qt_standard_project_setup()

add_executable(WinToastGuiExample mainwindow.ui mainwindow.cpp main.cpp)
target_link_libraries(WinToastGuiExample PRIVATE WinToast Qt6::Widgets)
set_target_properties(WinToastGuiExample PROPERTIES
WIN32_EXECUTABLE ON
MACOSX_BUNDLE ON
)
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
int main(int argc, char* argv[]) {
QApplication a(argc, argv);
MainWindow w;
w.show();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,22 @@
#include <qfiledialog.h>
#include <qmessagebox.h>

#include "../../../src/wintoastlib.h"
#include "wintoastlib.h"

using namespace WinToastLib;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{

MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWindow) {
ui->setupUi(this);

ui->toastType->addItem("ImageAndText01", WinToastTemplate::ImageAndText01);
ui->toastType->addItem("ImageAndText02", WinToastTemplate::ImageAndText02);
ui->toastType->addItem("ImageAndText03", WinToastTemplate::ImageAndText03);
ui->toastType->addItem("ImageAndText04", WinToastTemplate::ImageAndText04);
ui->toastType->addItem("Text01", WinToastTemplate::Text01);
ui->toastType->addItem("Text02", WinToastTemplate::Text02);
ui->toastType->addItem("Text03", WinToastTemplate::Text03);
ui->toastType->addItem("Text04", WinToastTemplate::Text04);

ui->audioMode->addItem("Default", WinToastTemplate::AudioOption::Default);
ui->audioMode->addItem("Loop", WinToastTemplate::AudioOption::Loop);
ui->audioMode->addItem("Silence", WinToastTemplate::AudioOption::Silent);
Expand All @@ -21,26 +29,26 @@ MainWindow::MainWindow(QWidget *parent) :
ui->audioSystemFile->addItem("SMS", WinToastTemplate::AudioSystemFile::SMS);
ui->audioSystemFile->addItem("Alarm", WinToastTemplate::AudioSystemFile::Alarm);

ui->cropHint->addItem("Square", WinToastTemplate::CropHint::Square);
ui->cropHint->addItem("Circle", WinToastTemplate::CropHint::Circle);

WinToast::instance()->setAppName(L"WinToastExample");
WinToast::instance()->setAppUserModelId(
WinToast::configureAUMI(L"mohabouje", L"wintoast", L"wintoastexample", L"20161006"));
WinToast::instance()->setAppUserModelId(WinToast::configureAUMI(L"mohabouje", L"wintoast", L"wintoastexample", L"20161006"));
if (!WinToast::instance()->initialize()) {
qDebug() << "Error, your system in not compatible!";
}
}

MainWindow::~MainWindow()
{
MainWindow::~MainWindow() {
delete ui;
}

void MainWindow::on_imagePathSelector_clicked()
{
void MainWindow::on_imagePathSelector_clicked() {
const QString fileName = QFileDialog::getOpenFileName(this, "Select an image", QDir::currentPath(), "*.png");
if (fileName.isEmpty())
if (fileName.isEmpty()) {
return;
}
ui->imagePath->setText(QDir::toNativeSeparators(fileName));

}

class CustomHandler : public IWinToastHandler {
Expand All @@ -58,35 +66,40 @@ class CustomHandler : public IWinToastHandler {
}
void toastDismissed(WinToastDismissalReason state) const {
switch (state) {
case UserCanceled:
std::wcout << L"The user dismissed this toast" << std::endl;
break;
case ApplicationHidden:
std::wcout << L"The application hid the toast using ToastNotifier.hide()" << std::endl;
break;
case TimedOut:
std::wcout << L"The toast has timed out" << std::endl;
break;
default:
std::wcout << L"Toast not activated" << std::endl;
break;
case UserCanceled:
std::wcout << L"The user dismissed this toast" << std::endl;
break;
case ApplicationHidden:
std::wcout << L"The application hid the toast using ToastNotifier.hide()" << std::endl;
break;
case TimedOut:
std::wcout << L"The toast has timed out" << std::endl;
break;
default:
std::wcout << L"Toast not activated" << std::endl;
break;
}
}
};

void MainWindow::on_showToast_clicked()
{
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::ImageAndText04);
templ.setImagePath(ui->imagePath->text().toStdWString());
void MainWindow::on_showToast_clicked() {
auto const type = static_cast<WinToastTemplate::WinToastTemplateType>(ui->toastType->currentData().toInt());
WinToastTemplate templ = WinToastTemplate(type);
templ.setImagePath(ui->imagePath->text().toStdWString(), static_cast<WinToastTemplate::CropHint>(ui->cropHint->currentData().toInt()));
templ.setTextField(ui->firstLine->text().toStdWString(), WinToastTemplate::FirstLine);
templ.setTextField(ui->secondLine->text().toStdWString(), WinToastTemplate::SecondLine);
templ.setTextField(ui->secondLine->text().toStdWString(), WinToastTemplate::ThirdLine);
templ.setTextField(ui->thirdLine->text().toStdWString(), WinToastTemplate::ThirdLine);
templ.setExpiration(ui->spinBox->value() * 1000);
templ.setAudioPath(static_cast<WinToastTemplate::AudioSystemFile>(ui->audioSystemFile->currentData().toInt()));
templ.setAudioOption(static_cast<WinToastTemplate::AudioOption>(ui->audioMode->currentData().toInt()));
if (ui->addYes->isChecked()) templ.addAction(L"Yes");
if (ui->addNo->isChecked()) templ.addAction(L"No");

if (ui->addYes->isChecked()) {
templ.addAction(L"Yes");
}

if (ui->addNo->isChecked()) {
templ.addAction(L"No");
}

if (WinToast::instance()->showToast(templ, new CustomHandler()) < 0) {
QMessageBox::warning(this, "Error", "Could not launch your toast notification!");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,14 @@
#include <QMainWindow>

namespace Ui {
class MainWindow;
class MainWindow;
}

class MainWindow : public QMainWindow
{
class MainWindow : public QMainWindow {
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
explicit MainWindow(QWidget* parent = 0);
~MainWindow();

private slots:
Expand All @@ -21,7 +20,7 @@ private slots:
void on_showToast_clicked();

private:
Ui::MainWindow *ui;
Ui::MainWindow* ui;
};

#endif // MAINWINDOW_H
Loading

0 comments on commit ec410e0

Please sign in to comment.