<translation type="unfinished"></translation>
</message>
<message>
+ <source>Browse Output File Location</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Encoding Files</source>
<translation type="unfinished"></translation>
</message>
</message>
<message>
<source>LameXP as a whole is copyrighted by LoRd_MuldeR. The copyright of thrird-party software used in LameXP belongs to the individual authors.</source>
- <translation>Das Urheberrecht an LameXP liegt bei LoRd_MuldeR. Das Urheberrecht an der eingesetzten Drittsoftware liegt bei den jeweiligen Authoren.</translation>
+ <translation>Das Urheberrecht an LameXP liegt bei LoRd_MuldeR. Das Urheberrecht an der eingesetzten Drittsoftware liegt bei den jeweiligen Autoren.</translation>
</message>
<message>
<source>LameXP &minus; Audio Encoder Front-end</source>
<source>Multi-threading enabled: Running %1 instances in parallel!</source>
<translation>Multithreading aktiviert: Führe %1 Instanzen parallel aus!</translation>
</message>
+ <message>
+ <source>Browse Output File Location</source>
+ <translation>Ausgabe-Datei Suchen</translation>
+ </message>
</context>
<context>
<name>ProgressModel</name>
<source>Multi-threading enabled: Running %1 instances in parallel!</source>
<translation>Ejecución multi-hilo habilitada: ¡Ejecutando %1 instancias en paralelo!</translation>
</message>
+ <message>
+ <source>Browse Output File Location</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ProgressModel</name>
<source>Multi-threading enabled: Running %1 instances in parallel!</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Browse Output File Location</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ProgressModel</name>
<source>Multi-threading enabled: Running %1 instances in parallel!</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Browse Output File Location</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ProgressModel</name>
#define VER_LAMEXP_MAJOR 4
#define VER_LAMEXP_MINOR_HI 0
#define VER_LAMEXP_MINOR_LO 0
-#define VER_LAMEXP_BUILD 305
+#define VER_LAMEXP_BUILD 307
#define VER_LAMEXP_SUFFIX Beta-4
/*
{
int comboBoxIndex[3];
- //Backup combobox indices
+ //Backup combobox indices, as retranslateUi() resets
comboBoxIndex[0] = comboBoxMP3ChannelMode->currentIndex();
comboBoxIndex[1] = comboBoxSamplingRate->currentIndex();
comboBoxIndex[2] = comboBoxNeroAACProfile->currentIndex();
- //Re.translate from UIC
+ //Re-translate from UIC
Ui::MainWindow::retranslateUi(this);
//Restore combobox indices
setWindowTitle(QString("%1 [%2]").arg(windowTitle(), tr("DEMO VERSION")));
}
- //Manual re-translate
+ //Manually re-translate widgets that UIC doesn't handle
m_dropNoteLabel->setText(QString("» %1 «").arg(tr("You can drop in audio files here!")));
m_showDetailsContextAction->setText(tr("Show Details"));
m_previewContextAction->setText(tr("Open File in External Application"));
updateEncoder(m_settings->compressionEncoder());
updateLameAlgoQuality(sliderLameAlgoQuality->value());
+ //Re-install shell integration
if(m_settings->shellIntegrationEnabled())
{
ShellIntegration::install();
*/
void MainWindow::styleActionActivated(QAction *action)
{
+ //Change style setting
if(action && action->data().isValid())
{
bool ok = false;
int actionIndex = action->data().toInt(&ok);
- m_settings->interfaceStyle(actionIndex);
+ if(ok)
+ {
+ m_settings->interfaceStyle(actionIndex);
+ }
}
+ //Set up the new style
switch(m_settings->interfaceStyle())
{
case 1:
QApplication::setStyle(new QPlastiqueStyle());
break;
}
+
+ //Force re-translate after style change
+ changeEvent(new QEvent(QEvent::LanguageChange));
}
/*
#include <QDir>
#include <QMenu>
#include <QSystemTrayIcon>
+#include <QProcess>
#include <Windows.h>
//Create context menu
m_contextMenu = new QMenu();
- QAction *contextMenuAction = m_contextMenu->addAction(QIcon(":/icons/zoom.png"), tr("Show details for selected job"));
+ QAction *contextMenuDetailsAction = m_contextMenu->addAction(QIcon(":/icons/zoom.png"), tr("Show details for selected job"));
+ QAction *contextMenuShowFileAction = m_contextMenu->addAction(QIcon(":/icons/folder_go.png"), tr("Browse Output File Location"));
+
view_log->setContextMenuPolicy(Qt::CustomContextMenu);
connect(view_log, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(contextMenuTriggered(QPoint)));
- connect(contextMenuAction, SIGNAL(triggered(bool)), this, SLOT(contextMenuActionTriggered()));
+ connect(contextMenuDetailsAction, SIGNAL(triggered(bool)), this, SLOT(contextMenuDetailsActionTriggered()));
+ connect(contextMenuShowFileAction, SIGNAL(triggered(bool)), this, SLOT(contextMenuShowFileActionTriggered()));
//Enque jobs
if(fileListModel)
}
}
-void ProcessingDialog::contextMenuActionTriggered(void)
+void ProcessingDialog::contextMenuDetailsActionTriggered(void)
{
QModelIndex index = view_log->indexAt(view_log->mapFromGlobal(m_contextMenu->pos()));
logViewDoubleClicked(index.isValid() ? index : view_log->currentIndex());
}
+void ProcessingDialog::contextMenuShowFileActionTriggered(void)
+{
+ QModelIndex index = view_log->indexAt(view_log->mapFromGlobal(m_contextMenu->pos()));
+ const QUuid &jobId = m_progressModel->getJobId(index.isValid() ? index : view_log->currentIndex());
+ QString filePath = m_playList.value(jobId, QString());
+
+ if(filePath.isEmpty())
+ {
+ MessageBeep(MB_ICONWARNING);
+ return;
+ }
+
+ if(QFileInfo(filePath).exists())
+ {
+ QString systemRootPath;
+
+ QDir systemRoot(lamexp_known_folder(lamexp_folder_systemfolder));
+ if(systemRoot.exists() && systemRoot.cdUp())
+ {
+ systemRootPath = systemRoot.canonicalPath();
+ }
+
+ if(!systemRootPath.isEmpty())
+ {
+ QFileInfo explorer(QString("%1/explorer.exe").arg(systemRootPath));
+ if(explorer.exists() && explorer.isFile())
+ {
+ QProcess::execute(explorer.canonicalFilePath(), QStringList() << "/select," << QDir::toNativeSeparators(QFileInfo(filePath).canonicalFilePath()));
+ return;
+ }
+ }
+ else
+ {
+ qWarning("SystemRoot directory could not be detected!");
+ }
+ }
+ else
+ {
+ qWarning("File not found: %s", filePath.toLatin1().constData());
+ MessageBeep(MB_ICONERROR);
+ }
+}
+
////////////////////////////////////////////////////////////
// Private Functions
////////////////////////////////////////////////////////////
void progressModelChanged(void);
void logViewDoubleClicked(const QModelIndex &index);
void contextMenuTriggered(const QPoint &pos);
- void contextMenuActionTriggered(void);
+ void contextMenuDetailsActionTriggered(void);
+ void contextMenuShowFileActionTriggered(void);
void systemTrayActivated(QSystemTrayIcon::ActivationReason reason);
protected:
return *(reinterpret_cast<QStringList*>(NULL));
}
+const QUuid &ProgressModel::getJobId(const QModelIndex &index)
+{
+ if(index.row() < m_jobList.count())
+ {
+ return m_jobList.at(index.row());
+ }
+
+ return *(reinterpret_cast<QUuid*>(NULL));
+}
+
void ProgressModel::addSystemMessage(const QString &text)
{
const QUuid &jobId = QUuid::createUuid();
//Public functions
const QStringList &getLogFile(const QModelIndex &index);
+ const QUuid &getJobId(const QModelIndex &index);
public slots:
void addJob(const QUuid &jobId, const QString &jobName, const QString &jobInitialStatus = QString("Initializing..."), int jobInitialState = JobRunning);