Compare commits
No commits in common. "master" and "v0.1.13" have entirely different histories.
@ -1,12 +1,10 @@
|
|||||||
#include "audio_support.h"
|
#include "audio_support.h"
|
||||||
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
|
||||||
#include <QSound>
|
#include <QSound>
|
||||||
|
|
||||||
extern void play_audio(const app_settings::selected_audio& item)
|
extern void play_audio(const app_settings::selected_audio& item)
|
||||||
{
|
{
|
||||||
// Play audio
|
// Play audio
|
||||||
|
|
||||||
if (item.name != Audio_Empty && item.name != Audio_Custom)
|
if (item.name != Audio_Empty && item.name != Audio_Custom)
|
||||||
{
|
{
|
||||||
// Find bundled audio
|
// Find bundled audio
|
||||||
@ -18,7 +16,4 @@ extern void play_audio(const app_settings::selected_audio& item)
|
|||||||
if (item.name == Audio_Custom && !item.path.isEmpty())
|
if (item.name == Audio_Custom && !item.path.isEmpty())
|
||||||
QSound::play(item.path);
|
QSound::play(item.path);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
extern void play_audio(const app_settings::selected_audio& item)
|
|
||||||
{}
|
|
||||||
#endif
|
|
||||||
|
|||||||
@ -64,17 +64,6 @@ static fs::path autostart_path()
|
|||||||
|
|
||||||
void autostart::enable(const std::string& path_to_me)
|
void autostart::enable(const std::string& path_to_me)
|
||||||
{
|
{
|
||||||
// Ensure autostart directory exists at all
|
|
||||||
if (!fs::exists(autostart_dir()))
|
|
||||||
{
|
|
||||||
std::error_code ec;
|
|
||||||
if (!fs::create_directory(autostart_dir(), ec))
|
|
||||||
{
|
|
||||||
qDebug() << "Failed to create autostart directory. Error: " << QString::fromStdString(ec.message());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Put .desktop file to ~/.config/autostart
|
// Put .desktop file to ~/.config/autostart
|
||||||
std::ofstream ofs(autostart_path());
|
std::ofstream ofs(autostart_path());
|
||||||
if (ofs.is_open())
|
if (ofs.is_open())
|
||||||
|
|||||||
@ -4,10 +4,10 @@
|
|||||||
// App version
|
// App version
|
||||||
#define QBREAK_VERSION_MAJOR 0
|
#define QBREAK_VERSION_MAJOR 0
|
||||||
#define QBREAK_VERSION_MINOR 1
|
#define QBREAK_VERSION_MINOR 1
|
||||||
#define QBREAK_VERSION_SUFFIX 17
|
#define QBREAK_VERSION_SUFFIX 13
|
||||||
|
|
||||||
// How often UI is updated - interval in seconds
|
// How often UI is updated - interval in seconds
|
||||||
#define INTERVAL_UPDATE_UI (10)
|
#define INTERVAL_UPDATE_UI (15)
|
||||||
|
|
||||||
// How often progress bar is updated - interval in milliseconds
|
// How often progress bar is updated - interval in milliseconds
|
||||||
#define INTERVAL_UPDATE_PROGRESS (1000)
|
#define INTERVAL_UPDATE_PROGRESS (1000)
|
||||||
|
|||||||
@ -6,9 +6,9 @@
|
|||||||
#if defined(TARGET_LINUX)
|
#if defined(TARGET_LINUX)
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QtDBus/QDBusConnection>
|
#include <QDBusConnection>
|
||||||
#include <QtDBus/QDBusReply>
|
#include <QDBusReply>
|
||||||
#include <QtDBus/QDBusInterface>
|
#include <QDBusInterface>
|
||||||
|
|
||||||
// Thanks to https://stackoverflow.com/questions/222606/detecting-keyboard-mouse-activity-in-linux
|
// Thanks to https://stackoverflow.com/questions/222606/detecting-keyboard-mouse-activity-in-linux
|
||||||
|
|
||||||
@ -210,7 +210,6 @@ int get_idle_time_kde_wayland()
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static bool Warning_X11InWayland = false;
|
|
||||||
int get_idle_time_dynamically()
|
int get_idle_time_dynamically()
|
||||||
{
|
{
|
||||||
const char* wl_display = std::getenv("WAYLAND_DISPLAY");
|
const char* wl_display = std::getenv("WAYLAND_DISPLAY");
|
||||||
@ -236,14 +235,8 @@ int get_idle_time_dynamically()
|
|||||||
#else
|
#else
|
||||||
// Restrict to X11
|
// Restrict to X11
|
||||||
if (wl_display)
|
if (wl_display)
|
||||||
{
|
|
||||||
// One time error message
|
|
||||||
if (!Warning_X11InWayland) {
|
|
||||||
qDebug() << "Wayland is found, but app built for X11 only. Idle tracking is not supported.";
|
|
||||||
Warning_X11InWayland = true;
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
|
||||||
return get_idle_time_x11();
|
return get_idle_time_x11();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,46 +12,25 @@
|
|||||||
#include <QAction>
|
#include <QAction>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <QDesktopWidget>
|
||||||
#include <QSvgGenerator>
|
#include <QSvgGenerator>
|
||||||
#include <QPalette>
|
#include <QPalette>
|
||||||
#include <QScreen>
|
#include <QScreen>
|
||||||
#include <QWindow>
|
#include <QWindow>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
|
#include <QSound>
|
||||||
#include <QCommandLineOption>
|
#include <QCommandLineOption>
|
||||||
#include <QCommandLineParser>
|
#include <QCommandLineParser>
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
|
||||||
# include <QDesktopWidget>
|
|
||||||
# include <QSound>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
static void dispatchToMainThread(std::function<void()> callback, std::chrono::milliseconds delay = std::chrono::milliseconds(0))
|
|
||||||
{
|
|
||||||
// any thread
|
|
||||||
QTimer* timer = new QTimer();
|
|
||||||
timer->moveToThread(qApp->thread());
|
|
||||||
timer->setSingleShot(true);
|
|
||||||
timer->setInterval(delay);
|
|
||||||
QObject::connect(timer, &QTimer::timeout, [=]()
|
|
||||||
{
|
|
||||||
// main thread
|
|
||||||
callback();
|
|
||||||
timer->deleteLater();
|
|
||||||
});
|
|
||||||
QMetaObject::invokeMethod(timer, "start", Qt::QueuedConnection, Q_ARG(int, 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
MainWindow::MainWindow(QWidget *parent)
|
MainWindow::MainWindow(QWidget *parent)
|
||||||
: QMainWindow(parent)
|
: QMainWindow(parent)
|
||||||
, ui(new Ui::MainWindow)
|
, ui(new Ui::MainWindow)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
init();
|
||||||
// Defer init call for 100 ms - attempt to resolve the problem with non working setTooltip()
|
|
||||||
dispatchToMainThread([this](){init();}, std::chrono::milliseconds(100));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MainWindow::~MainWindow()
|
MainWindow::~MainWindow()
|
||||||
@ -149,11 +128,11 @@ static int str_to_seconds(const QString& s)
|
|||||||
throw std::runtime_error("Bad parameter value.");
|
throw std::runtime_error("Bad parameter value.");
|
||||||
|
|
||||||
if (s.back() == 'h')
|
if (s.back() == 'h')
|
||||||
return s.left(s.size()-1).toInt() * 3600;
|
return s.leftRef(s.size()-1).toInt() * 3600;
|
||||||
if (s.back() == 'm')
|
if (s.back() == 'm')
|
||||||
return s.left(s.size()-1).toInt() * 60;
|
return s.leftRef(s.size()-1).toInt() * 60;
|
||||||
if (s.back() == 's')
|
if (s.back() == 's')
|
||||||
return s.left(s.size()-1).toInt();
|
return s.leftRef(s.size()-1).toInt();
|
||||||
|
|
||||||
if (s.back().isDigit())
|
if (s.back().isDigit())
|
||||||
return s.toInt();
|
return s.toInt();
|
||||||
@ -239,8 +218,7 @@ void MainWindow::showMe()
|
|||||||
// qDebug() << "Screen not found!";
|
// qDebug() << "Screen not found!";
|
||||||
|
|
||||||
#if defined(DEBUG)
|
#if defined(DEBUG)
|
||||||
showFullScreen();
|
showMaximized();
|
||||||
//showMaximized();
|
|
||||||
#else
|
#else
|
||||||
showFullScreen();
|
showFullScreen();
|
||||||
#endif
|
#endif
|
||||||
@ -286,11 +264,10 @@ void MainWindow::createTrayIcon()
|
|||||||
|
|
||||||
mTrayIcon->setContextMenu(menu);
|
mTrayIcon->setContextMenu(menu);
|
||||||
mTrayIcon->setIcon(getTrayIcon());
|
mTrayIcon->setIcon(getTrayIcon());
|
||||||
// mTrayIcon->setToolTip(AppName);
|
mTrayIcon->setToolTip(AppName);
|
||||||
|
mTrayIcon->show();
|
||||||
connect(mTrayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
|
connect(mTrayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
|
||||||
this, SLOT(onTrayIconActivated(QSystemTrayIcon::ActivationReason)));
|
this, SLOT(onTrayIconActivated(QSystemTrayIcon::ActivationReason)));
|
||||||
|
|
||||||
mTrayIcon->show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int msec2min(int msec)
|
static int msec2min(int msec)
|
||||||
@ -315,7 +292,6 @@ QString state2str(AppState state)
|
|||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWindow::shiftTo(AppState newState)
|
void MainWindow::shiftTo(AppState newState)
|
||||||
{
|
{
|
||||||
if (newState == mState)
|
if (newState == mState)
|
||||||
@ -348,11 +324,7 @@ void MainWindow::shiftTo(AppState newState)
|
|||||||
}
|
}
|
||||||
|
|
||||||
mState = newState;
|
mState = newState;
|
||||||
|
|
||||||
// Run deferred in main UI thread
|
|
||||||
dispatchToMainThread([this](){
|
|
||||||
onUpdateUI();
|
onUpdateUI();
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::onUpdateUI()
|
void MainWindow::onUpdateUI()
|
||||||
@ -410,8 +382,6 @@ void MainWindow::onUpdateUI()
|
|||||||
tr("There are %1 minutes left until the next break.")
|
tr("There are %1 minutes left until the next break.")
|
||||||
.arg(msec2min(remaining_milliseconds)));
|
.arg(msec2min(remaining_milliseconds)));
|
||||||
}
|
}
|
||||||
else
|
|
||||||
qDebug() << "No tray icon available.";
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
QT += core gui svg multimedia widgets dbus
|
QT += core gui svg multimedia
|
||||||
|
|
||||||
CONFIG += debug_and_release console
|
CONFIG += debug_and_release
|
||||||
|
|
||||||
|
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets dbus
|
||||||
|
|
||||||
CONFIG += c++17 lrelease embed_translations
|
CONFIG += c++17 lrelease embed_translations
|
||||||
|
|
||||||
@ -59,3 +60,5 @@ Release: DEFINES += QT_NO_DEBUG_OUTPUT
|
|||||||
# When using wayland:
|
# When using wayland:
|
||||||
# unix:LIBS += -L/usr/local/lib \
|
# unix:LIBS += -L/usr/local/lib \
|
||||||
# -lwayland-client-unstable++ -lwayland-client-extra++ -lwayland-client++
|
# -lwayland-client-unstable++ -lwayland-client-extra++ -lwayland-client++
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
# I use this script on two different hosts so there are logic to find proper Qt installation
|
# I use this script on two different hosts so there are logic to find proper Qt installation
|
||||||
|
|
||||||
export QT_HOME=/home/$USER/tools/qt/5.15.2/gcc_64
|
export QT_HOME=/home/$USER/qt5.15/5.15.2/gcc_64
|
||||||
if [ ! -d "$QT_HOME" ] ; then
|
if [ ! -d "$QT_HOME" ] ; then
|
||||||
export QT_HOME=/home/$USER/tools/qt/5.15.2/gcc_64
|
export QT_HOME=/home/$USER/qt5.15/5.15.2/gcc_64
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Build .appimage
|
# Build .appimage
|
||||||
|
|||||||
@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
# I use this script on two different hosts so there are logic to find proper Qt installation
|
# I use this script on two different hosts so there are logic to find proper Qt installation
|
||||||
|
|
||||||
export QT_HOME=/home/$USER/tools/qt/5.15.2/gcc_64
|
export QT_HOME=/home/$USER/qt5.15/5.15.2/gcc_64
|
||||||
if [ ! -d "$QT_HOME" ] ; then
|
if [ ! -d "$QT_HOME" ] ; then
|
||||||
export QT_HOME=/home/$USER/qt/5.15.2/gcc_64
|
export QT_HOME=/home/$USER/qt5.15/5.15.2/gcc_64
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Build .appimage
|
# Build .appimage
|
||||||
|
|||||||
@ -1,12 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# I use this script on two different hosts so there are logic to find proper Qt installation
|
|
||||||
|
|
||||||
export QT_HOME=/home/$USER/tools/qt/6.8.0/gcc_64
|
|
||||||
if [ ! -d "$QT_HOME" ] ; then
|
|
||||||
export QT_HOME=/home/$USER/tools/qt/6.8.0/gcc_64
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Build .appimage
|
|
||||||
/usr/bin/python3 build_qbreak.py release
|
|
||||||
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# I use this script on two different hosts so there are logic to find proper Qt installation
|
|
||||||
|
|
||||||
export QT_HOME=/home/$USER/tools/qt/6.8.0/gcc_64
|
|
||||||
if [ ! -d "$QT_HOME" ] ; then
|
|
||||||
export QT_HOME=/home/$USER/tools/qt/6.8.0/gcc_64
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Build .appimage
|
|
||||||
/usr/bin/python3 build_qbreak.py debug
|
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ if platform.system() == 'Linux':
|
|||||||
'-qmake=' + os.environ['QT_HOME'] + '/bin/qmake',
|
'-qmake=' + os.environ['QT_HOME'] + '/bin/qmake',
|
||||||
'-unsupported-allow-new-glibc',
|
'-unsupported-allow-new-glibc',
|
||||||
#'-no-translations',
|
#'-no-translations',
|
||||||
'-extra-plugins=iconengines,platformthemes/libqgtk3.so,platforms/libqxcb.so'
|
'-extra-plugins=iconengines,platformthemes/libqgtk3.so'
|
||||||
]
|
]
|
||||||
|
|
||||||
desktop_path = 'appimage_dir/usr/share/applications/qbreak.desktop'
|
desktop_path = 'appimage_dir/usr/share/applications/qbreak.desktop'
|
||||||
|
|||||||
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user