Skip to content
Extraits de code Groupes Projets
Vérifiée Valider ca227dd2 rédigé par Kubat's avatar Kubat
Parcourir les fichiers

APPLICATION: Add an application object that will be in charge of everything,...

APPLICATION: Add an application object that will be in charge of everything, also use it to store some extra data like icons and such
parent d705855e
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!3Add documents
#include "DialogHelp.h"
#include "VivyApplication.h"
#include <QWidget>
#include <QLabel>
#include <QDialog>
#include <QPixmap>
DialogHelp::DialogHelp(QWidget *parent) noexcept
: QMessageBox(parent)
......@@ -10,6 +12,7 @@ DialogHelp::DialogHelp(QWidget *parent) noexcept
setWindowTitle("Vivy - Help");
setWindowFlags(Qt::Dialog);
setWindowModality(Qt::WindowModal);
setIconPixmap(VivyApplication::getIcon());
QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
setSizePolicy(sizePolicy);
......
#include "MainWindow.h"
#include <QApplication>
#include "VivyApplication.h"
auto
main(int argc, char **argv) noexcept -> int
{
QApplication app(argc, argv);
MainWindow window;
window.show();
return app.exec();
return VivyApplication(argc, argv).exec();
}
......@@ -66,3 +66,9 @@ MainWindow::openAudioFile() noexcept
qCritical() << "Failed to create the document view for " << document->getName();
}
}
void
MainWindow::registerApplication(VivyApplication *app) noexcept
{
application = app;
}
......@@ -11,16 +11,20 @@
class QMenu;
class QAction;
class VivyApplication;
class MainWindow final : public QMainWindow {
Q_OBJECT
VivyDocumentStore documentStore{};
VivyApplication *application{ nullptr };
public:
explicit MainWindow(QWidget *parent = nullptr) noexcept;
~MainWindow() noexcept = default;
void registerApplication(VivyApplication *) noexcept;
private slots:
void openAudioFile() noexcept;
void openDialogHelp() noexcept;
......
#include "VivyApplication.h"
#include "MainWindow.h"
#include <stdexcept>
/* Defined in the VivyXpm.c file */
extern char *vivy_xpm[];
VivyApplication::VivyApplication(int argc, char **argv)
: QApplication(argc, argv)
, mainWindow(new MainWindow)
, applicationIcon(QPixmap(vivy_xpm).scaled(100, 100, Qt::KeepAspectRatio, Qt::SmoothTransformation))
{
if (singletonInstance)
throw std::runtime_error("A single instance of the VivyApplication can be created");
singletonInstance = this;
mainWindow->registerApplication(this);
}
int
VivyApplication::exec() noexcept
{
mainWindow->show();
return reinterpret_cast<QApplication *>(this)->exec();
}
const QPixmap &
VivyApplication::getApplicationIcon() const noexcept
{
return applicationIcon;
}
VivyApplication *
VivyApplication::getInstance()
{
if (singletonInstance)
return singletonInstance;
throw std::runtime_error("No VivyApplication was created");
}
const QPixmap &
VivyApplication::getIcon()
{
return VivyApplication::getInstance()->getApplicationIcon();
}
#ifndef VIVY_APPLICATION_H
#define VIVY_APPLICATION_H
#ifndef __cplusplus
#error "This is a C++ header"
#endif
#include <QApplication>
#include <QPixmap>
#include <memory>
class MainWindow;
class VivyApplication : public QApplication {
Q_OBJECT
private:
std::unique_ptr<MainWindow> mainWindow;
const QPixmap applicationIcon;
static inline VivyApplication *singletonInstance = nullptr;
static VivyApplication *getInstance();
public:
VivyApplication(int argc, char **argv);
~VivyApplication() = default;
int exec() noexcept;
const QPixmap &getApplicationIcon() const noexcept;
static const QPixmap &getIcon();
};
#endif // VIVY_APPLICATION_H
Ce diff est replié.
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter