Implemented menubar corner widget.

This commit is contained in:
LoRd_MuldeR 2014-05-04 16:59:06 +02:00
parent 7ec2a8d9d7
commit 62aa72d283
7 changed files with 76 additions and 29 deletions

View File

@ -50,6 +50,7 @@
<file>icons/drive_link.png</file>
<file>icons/drive_network.png</file>
<file>icons/exclamation.png</file>
<file>icons/exclamation_small.png</file>
<file>icons/error.png</file>
<file>icons/error_big.png</file>
<file>icons/feed.png</file>

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

View File

@ -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
///////////////////////////////////////////////////////////////////////////////

View File

@ -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("<a href=\"%1\">%2</a>").arg(URL).arg(QString(URL).replace("-", "&minus;"))
#define FSLINK(PATH) QString("<a href=\"file:///%1\">%2</a>").arg(PATH).arg(QString(PATH).replace("-", "&minus;"))
#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("<nobr><img src=\":/icons/exclamation_small.png\">&nbsp;<b style=\"color:darkred\">%1</b>&nbsp;&nbsp;&nbsp;</nobr>").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
// =========================================================

View File

@ -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;

View File

@ -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)

View File

@ -136,4 +136,5 @@ private:
DiskObserverThread *m_diskObserver;
qint64 m_timerStart;
int m_progressViewFilter;
QColor *m_defaultColor;
};