diff --git a/res/Icons.qrc b/res/Icons.qrc index 7a6f69ad..caf3d709 100644 --- a/res/Icons.qrc +++ b/res/Icons.qrc @@ -50,6 +50,7 @@ icons/drive_link.png icons/drive_network.png icons/exclamation.png + icons/exclamation_small.png icons/error.png icons/error_big.png icons/feed.png diff --git a/res/icons/exclamation_small.png b/res/icons/exclamation_small.png new file mode 100644 index 00000000..ba672fc3 Binary files /dev/null and b/res/icons/exclamation_small.png differ diff --git a/src/Config.h b/src/Config.h index 68310ec1..bb899c23 100644 --- a/src/Config.h +++ b/src/Config.h @@ -35,7 +35,7 @@ #define VER_LAMEXP_MINOR_LO 0 #define VER_LAMEXP_TYPE Beta #define VER_LAMEXP_PATCH 1 -#define VER_LAMEXP_BUILD 1542 +#define VER_LAMEXP_BUILD 1543 #define VER_LAMEXP_CONFG 1528 /////////////////////////////////////////////////////////////////////////////// diff --git a/src/Dialog_MainWindow.cpp b/src/Dialog_MainWindow.cpp index d82b385d..c3be8a1d 100644 --- a/src/Dialog_MainWindow.cpp +++ b/src/Dialog_MainWindow.cpp @@ -198,6 +198,15 @@ while(0) } \ while(0) +#define SHOW_CORNER_WIDGET(FLAG) do \ +{ \ + if(QWidget *cornerWidget = ui->menubar->cornerWidget()) \ + { \ + cornerWidget->setVisible((FLAG)); \ + } \ +} \ +while(0) + #define LINK(URL) QString("%2").arg(URL).arg(QString(URL).replace("-", "−")) #define FSLINK(PATH) QString("%2").arg(PATH).arg(QString(PATH).replace("-", "−")) #define CENTER_CURRENT_OUTPUT_FOLDER_DELAYED QTimer::singleShot(125, this, SLOT(centerOutputFolderModel())) @@ -238,7 +247,7 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel_MetaInfo *me //Enabled main buttons connect(ui->buttonAbout, SIGNAL(clicked()), this, SLOT(aboutButtonClicked())); connect(ui->buttonStart, SIGNAL(clicked()), this, SLOT(encodeButtonClicked())); - connect(ui->buttonQuit, SIGNAL(clicked()), this, SLOT(closeButtonClicked())); + connect(ui->buttonQuit, SIGNAL(clicked()), this, SLOT(closeButtonClicked())); //Setup tab widget ui->tabWidget->setCurrentIndex(0); @@ -247,6 +256,17 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel_MetaInfo *me //Add system menu lamexp_append_sysmenu(this, IDM_ABOUTBOX, "About..."); + //Setup corner widget + QLabel *cornerWidget = new QLabel(ui->menubar); + m_evenFilterCornerWidget = new CustomEventFilter; + cornerWidget->setText(QString(" %1   ").arg(tr("Check for Updates"))); + cornerWidget->setFixedHeight(ui->menubar->height()); + cornerWidget->setCursor(QCursor(Qt::PointingHandCursor)); + cornerWidget->hide(); + cornerWidget->installEventFilter(m_evenFilterCornerWidget); + connect(m_evenFilterCornerWidget, SIGNAL(eventOccurred(QWidget*, QEvent*)), this, SLOT(cornerWidgetEventOccurred(QWidget*, QEvent*))); + ui->menubar->setCornerWidget(cornerWidget); + //-------------------------------- // Setup "Source" tab //-------------------------------- @@ -268,23 +288,24 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel_MetaInfo *me m_exportCsvContextAction = m_sourceFilesContextMenu->addAction(QIcon(":/icons/table_save.png"), "N/A"); m_importCsvContextAction = m_sourceFilesContextMenu->addAction(QIcon(":/icons/folder_table.png"), "N/A"); SET_FONT_BOLD(m_showDetailsContextAction, true); - connect(ui->buttonAddFiles, SIGNAL(clicked()), this, SLOT(addFilesButtonClicked())); - connect(ui->buttonRemoveFile, SIGNAL(clicked()), this, SLOT(removeFileButtonClicked())); - connect(ui->buttonClearFiles, SIGNAL(clicked()), this, SLOT(clearFilesButtonClicked())); - connect(ui->buttonFileUp, SIGNAL(clicked()), this, SLOT(fileUpButtonClicked())); - connect(ui->buttonFileDown, SIGNAL(clicked()), this, SLOT(fileDownButtonClicked())); - connect(ui->buttonShowDetails, SIGNAL(clicked()), this, SLOT(showDetailsButtonClicked())); - connect(m_fileListModel, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SLOT(sourceModelChanged())); - connect(m_fileListModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(sourceModelChanged())); - connect(m_fileListModel, SIGNAL(modelReset()), this, SLOT(sourceModelChanged())); - connect(ui->sourceFileView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(sourceFilesContextMenu(QPoint))); - connect(ui->sourceFileView->verticalScrollBar(), SIGNAL(sliderMoved(int)), this, SLOT(sourceFilesScrollbarMoved(int))); - connect(ui->sourceFileView->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(sourceFilesScrollbarMoved(int))); - connect(m_showDetailsContextAction, SIGNAL(triggered(bool)), this, SLOT(showDetailsButtonClicked())); - connect(m_previewContextAction, SIGNAL(triggered(bool)), this, SLOT(previewContextActionTriggered())); - connect(m_findFileContextAction, SIGNAL(triggered(bool)), this, SLOT(findFileContextActionTriggered())); - connect(m_exportCsvContextAction, SIGNAL(triggered(bool)), this, SLOT(exportCsvContextActionTriggered())); - connect(m_importCsvContextAction, SIGNAL(triggered(bool)), this, SLOT(importCsvContextActionTriggered())); + + connect(ui->buttonAddFiles, SIGNAL(clicked()), this, SLOT(addFilesButtonClicked())); + connect(ui->buttonRemoveFile, SIGNAL(clicked()), this, SLOT(removeFileButtonClicked())); + connect(ui->buttonClearFiles, SIGNAL(clicked()), this, SLOT(clearFilesButtonClicked())); + connect(ui->buttonFileUp, SIGNAL(clicked()), this, SLOT(fileUpButtonClicked())); + connect(ui->buttonFileDown, SIGNAL(clicked()), this, SLOT(fileDownButtonClicked())); + connect(ui->buttonShowDetails, SIGNAL(clicked()), this, SLOT(showDetailsButtonClicked())); + connect(m_fileListModel, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SLOT(sourceModelChanged())); + connect(m_fileListModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(sourceModelChanged())); + connect(m_fileListModel, SIGNAL(modelReset()), this, SLOT(sourceModelChanged())); + connect(ui->sourceFileView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(sourceFilesContextMenu(QPoint))); + connect(ui->sourceFileView->verticalScrollBar(), SIGNAL(sliderMoved(int)), this, SLOT(sourceFilesScrollbarMoved(int))); + connect(ui->sourceFileView->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(sourceFilesScrollbarMoved(int))); + connect(m_showDetailsContextAction, SIGNAL(triggered(bool)), this, SLOT(showDetailsButtonClicked())); + connect(m_previewContextAction, SIGNAL(triggered(bool)), this, SLOT(previewContextActionTriggered())); + connect(m_findFileContextAction, SIGNAL(triggered(bool)), this, SLOT(findFileContextActionTriggered())); + connect(m_exportCsvContextAction, SIGNAL(triggered(bool)), this, SLOT(exportCsvContextActionTriggered())); + connect(m_importCsvContextAction, SIGNAL(triggered(bool)), this, SLOT(importCsvContextActionTriggered())); //-------------------------------- // Setup "Output" tab @@ -714,6 +735,7 @@ MainWindow::~MainWindow(void) LAMEXP_DELETE(m_outputFolderFavoritesMenu); LAMEXP_DELETE(m_outputFolderContextMenu); LAMEXP_DELETE(m_dropBox); + LAMEXP_DELETE(m_evenFilterCornerWidget); LAMEXP_DELETE(m_evenFilterCustumParamsHelp); LAMEXP_DELETE(m_evenFilterOutputFolderMouse); LAMEXP_DELETE(m_evenFilterOutputFolderView); @@ -864,6 +886,7 @@ bool MainWindow::checkForUpdates(void) if(updateDialog->getSuccess()) { + SHOW_CORNER_WIDGET(false); m_settings->autoUpdateLastCheck(QDate::currentDate().toString(Qt::ISODate)); bReadyToInstall = updateDialog->updateReadyToInstall(); } @@ -1331,6 +1354,7 @@ void MainWindow::windowShown(void) if(lamexp_current_date_safe() >= lamexp_version_date().addYears(1)) { qWarning("Binary is more than a year old, time to update!"); + SHOW_CORNER_WIDGET(true); int ret = QMessageBox::warning(this, tr("Urgent Update"), NOBR(tr("Your version of LameXP is more than a year old. Time for an update!")), tr("Check for Updates"), tr("Exit Program"), tr("Ignore")); switch(ret) { @@ -1351,17 +1375,21 @@ void MainWindow::windowShown(void) break; } } - else if(m_settings->autoUpdateEnabled()) + else { QDate lastUpdateCheck = QDate::fromString(m_settings->autoUpdateLastCheck(), Qt::ISODate); - if(!firstRun && (!lastUpdateCheck.isValid() || lamexp_current_date_safe() >= lastUpdateCheck.addDays(14))) + if((!firstRun) && ((!lastUpdateCheck.isValid()) || (lamexp_current_date_safe() >= lastUpdateCheck.addDays(14)))) { - if(QMessageBox::information(this, tr("Update Reminder"), NOBR(lastUpdateCheck.isValid() ? tr("Your last update check was more than 14 days ago. Check for updates now?") : tr("Your did not check for LameXP updates yet. Check for updates now?")), tr("Check for Updates"), tr("Postpone")) == 0) + SHOW_CORNER_WIDGET(true); + if(m_settings->autoUpdateEnabled()) { - if(checkForUpdates()) + if(QMessageBox::information(this, tr("Update Reminder"), NOBR(lastUpdateCheck.isValid() ? tr("Your last update check was more than 14 days ago. Check for updates now?") : tr("Your did not check for LameXP updates yet. Check for updates now?")), tr("Check for Updates"), tr("Postpone")) == 0) { - QApplication::quit(); - return; + if(checkForUpdates()) + { + QApplication::quit(); + return; + } } } } @@ -1727,6 +1755,21 @@ void MainWindow::tabActionActivated(QAction *action) } } +// ========================================================= +// Menubar slots +// ========================================================= + +/* + * Handle corner widget Event + */ +void MainWindow::cornerWidgetEventOccurred(QWidget *sender, QEvent *event) +{ + if(event->type() == QEvent::MouseButtonPress) + { + QTimer::singleShot(0, this, SLOT(checkUpdatesActionActivated())); + } +} + // ========================================================= // View menu slots // ========================================================= diff --git a/src/Dialog_MainWindow.h b/src/Dialog_MainWindow.h index 8c88cfaf..21cd77d4 100644 --- a/src/Dialog_MainWindow.h +++ b/src/Dialog_MainWindow.h @@ -85,6 +85,7 @@ private slots: void clearMetaButtonClicked(void); void closeButtonClicked(void); void compressionTabEventOccurred(QWidget*, QEvent*); + void cornerWidgetEventOccurred(QWidget *sender, QEvent *event); void customParamsChanged(void); void customParamsHelpRequested(QWidget *obj, QEvent *event); void customTempFolderChanged(const QString &text); @@ -231,6 +232,7 @@ private: QButtonGroup *m_modeButtonGroup; QButtonGroup *m_overwriteButtonGroup; + CustomEventFilter *m_evenFilterCornerWidget; CustomEventFilter *m_evenFilterCustumParamsHelp; CustomEventFilter *m_evenFilterOutputFolderMouse; CustomEventFilter *m_evenFilterOutputFolderView; diff --git a/src/Dialog_Processing.cpp b/src/Dialog_Processing.cpp index eeea81c2..0fdfd81c 100644 --- a/src/Dialog_Processing.cpp +++ b/src/Dialog_Processing.cpp @@ -152,6 +152,7 @@ ProcessingDialog::ProcessingDialog(FileListModel *fileListModel, const AudioFile m_ramObserver(NULL), m_progressViewFilter(-1), m_initThreads(0), + m_defaultColor(new QColor()), m_firstShow(true) { //Init the dialog, from the .ui file @@ -348,6 +349,7 @@ ProcessingDialog::~ProcessingDialog(void) LAMEXP_DELETE(m_contextMenu); LAMEXP_DELETE(m_progressModel); LAMEXP_DELETE(m_threadPool); + LAMEXP_DELETE(m_defaultColor); WinSevenTaskbar::setOverlayIcon(this, NULL); WinSevenTaskbar::setTaskbarState(this, WinSevenTaskbar::WinSevenTaskbarNoState); @@ -407,21 +409,19 @@ void ProcessingDialog::closeEvent(QCloseEvent *event) bool ProcessingDialog::eventFilter(QObject *obj, QEvent *event) { - static QColor defaultColor = QColor(); - if(obj == ui->label_versionInfo) { if(event->type() == QEvent::Enter) { QPalette palette = ui->label_versionInfo->palette(); - defaultColor = palette.color(QPalette::Normal, QPalette::WindowText); + *m_defaultColor = palette.color(QPalette::Normal, QPalette::WindowText); palette.setColor(QPalette::Normal, QPalette::WindowText, Qt::red); ui->label_versionInfo->setPalette(palette); } else if(event->type() == QEvent::Leave) { QPalette palette = ui->label_versionInfo->palette(); - palette.setColor(QPalette::Normal, QPalette::WindowText, defaultColor); + palette.setColor(QPalette::Normal, QPalette::WindowText, *m_defaultColor); ui->label_versionInfo->setPalette(palette); } else if(event->type() == QEvent::MouseButtonPress) diff --git a/src/Dialog_Processing.h b/src/Dialog_Processing.h index ff93baaa..4f0281b9 100644 --- a/src/Dialog_Processing.h +++ b/src/Dialog_Processing.h @@ -136,4 +136,5 @@ private: DiskObserverThread *m_diskObserver; qint64 m_timerStart; int m_progressViewFilter; + QColor *m_defaultColor; };