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

    this->setWindowIcon(QIcon(":/icon.png"));

    Qt::WindowFlags flags = this->windowFlags();

    this->setWindowFlags(flags | Qt::X11BypassWindowManagerHint | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint); //
    this->setAttribute(Qt::WA_TranslucentBackground, true);

    timer->setTimerType(Qt::PreciseTimer); // fixes subtitle delay
    connect(timer, SIGNAL(timeout()), this, SLOT(update()));

    connect(ui->backwardButton, SIGNAL(clicked()), this, SLOT(fastBackward()));
    connect(ui->forwardButton, SIGNAL(clicked()), this, SLOT(fastForward()));

    connect(ui->toggleButton, SIGNAL(clicked()), this, SLOT(togglePlay()));
    connect(ui->loadButton, SIGNAL(clicked()), this, SLOT(openFileDialog()));
    connect(ui->prefButton, SIGNAL(clicked()), this, SLOT(openSettingsWindow()));
    connect(ui->quitButton, SIGNAL(clicked()), qApp, SLOT(quit()));
    connect(ui->horizontalSlider, SIGNAL(sliderMoved(int)), this, SLOT(sliderMoved(int)));


    if (QSystemTrayIcon::isSystemTrayAvailable()) {
        trayIcon = new QSystemTrayIcon();
        trayIcon->setIcon(QIcon(":/icon.png"));

        connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
                this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));

        menu = new QMenu();

        QAction *settings = new QAction("Preferences", 0);
        connect(settings, SIGNAL(triggered()), this, SLOT(openSettingsWindow()));
        menu->addAction(settings);

        QAction *quit = new QAction("Quit", 0);
        connect(quit, SIGNAL(triggered()), qApp, SLOT(quit()));
        menu->addAction(quit);

        trayIcon->setContextMenu(menu);

        trayIcon->show();
    }

    this->setAttribute(Qt::WA_Hover, true);

    ui->bottomWidgets->setAttribute(Qt::WA_NoMousePropagation); // fix window disappear problem

    this->loadPref();
    setAcceptDrops(true);
}
Example #2
0
int main(int argc, char ** argv)
{
	QApplication app( argc, argv );
	//MainWindowImpl win;
	QMainWindow *win = new QMainWindow(0, Qt::Window);
        PageTemplate tmplt;// = new PageTemplate;
        book b;// = new book();
        tmplt.setBook(&b);

        QMenu fileMenu("File");

        QAction *openBookAction = new QAction(("Open book"), win);
        QAction *openLibraryAction = new QAction(("Library"), win);
        fileMenu.addAction(openBookAction);
        fileMenu.addAction(openLibraryAction);
//        fileMenu.addAction("Open book", )
        fileMenu.addSeparator();
        fileMenu.addAction("Quit");

        win->connect(openBookAction, SIGNAL(triggered()), &tmplt, SLOT(openBookSlot()));
        win->connect(openLibraryAction, SIGNAL(triggered()), &tmplt, SLOT(openLibrarySlot()));

        QMenu prefMenu("Settings");
//        prefMenu.addAction("Fonts +");
//        prefMenu.addAction("Fonts -");
//        prefMenu.addAction("Linespacing +");
//        prefMenu.addAction("Linespacing -");
//        prefMenu.addSeparator();
//        prefMenu.addAction("Settings");
        QAction *openSettingsAction = new QAction(("Settings"), win);
        prefMenu.addAction(openSettingsAction);

        win->connect(openSettingsAction, SIGNAL(triggered()), &tmplt, SLOT(openSettingsWindow()));

        QMenu contentsMenu("Contents");



        win->menuBar()->addMenu(&fileMenu);
        win->menuBar()->addMenu(&prefMenu);
        win->menuBar()->addMenu(&contentsMenu);
//        win->menuBar()-> addMenu("File")->addSeparator();
//        win->menuBar()->addMenu("Settings")->addAction("Preferences");
	win->setCentralWidget(&tmplt);
        tmplt.menuBar = win->menuBar();
        tmplt.contentsMenu = &contentsMenu;
	win->resize(640, 480);
	//b->loadFB2();
	win->show(); 
	app.connect( &app, SIGNAL( lastWindowClosed() ), &app, SLOT( quit() ) );
	return app.exec();
}