39 std::shared_ptr<Drumkit> pDrumkit )
47 exportBtn->setText( tr(
"&Export" ) );
48 cancelBtn->setText( pCommonStrings->getButtonCancel() );
50 setWindowTitle( QString(
"%1 [%2]" )
51 .arg( tr(
"Export Drumkit" ) )
52 .arg( pDrumkit !=
nullptr ? pDrumkit->get_name() : tr(
"invalid drumkit" ) ) );
54 setFixedSize( width(), height() );
57 if ( pDrumkit !=
nullptr ) {
58 for (
const auto& pComponent : *pDrumkit->get_components() ) {
82 QMessageBox::warning(
this,
"Hydrogen",
83 pCommonStrings->getFileDialogMissingWritePermissions(),
90 ERRORLOG(
"User cancelled dialog due to licensing issues." );
94 bool bRecentVersion = versionList->currentIndex() == 1 ? false :
true;
96 QString sTargetComponent;
97 if ( componentList->currentIndex() == 0 && bRecentVersion ) {
99 sTargetComponent =
"";
101 sTargetComponent = componentList->currentText();
106 QString sTargetName = drumkitPathTxt->text() +
"/" +
107 m_pDrumkit->getExportName( sTargetComponent, bRecentVersion ) +
112 msgBox.setWindowTitle(
"Hydrogen");
113 msgBox.setIcon( QMessageBox::Warning );
114 msgBox.setText( tr(
"The file [%1] does already exist and will be overwritten.")
115 .arg( sTargetName ) );
117 msgBox.setStandardButtons( QMessageBox::Ok | QMessageBox::Cancel );
118 msgBox.setDefaultButton(QMessageBox::Ok);
120 if ( msgBox.exec() == QMessageBox::Cancel ) {
125 QApplication::setOverrideCursor(Qt::WaitCursor);
127 if ( !
m_pDrumkit->exportTo( drumkitPathTxt->text(),
130 QApplication::restoreOverrideCursor();
131 QString sError = tr(
"Unable to export drumkit" );
133#ifndef H2CORE_HAVE_QT6
135 auto pCodec = QTextCodec::codecForLocale();
136 if ( ! pCodec->canEncode( drumkitPathTxt->text() ) ) {
137 QMessageBox::critical(
138 this,
"Hydrogen", QString(
"%1\n\n%2\n\n%3: [%4]" )
139 .arg( sError ).arg( drumkitPathTxt->text() )
140 .arg( pCommonStrings->getEncodingError() )
141 .arg( QString( pCodec->name() ) ) );
144 QMessageBox::critical(
this,
"Hydrogen", sError );
147 QMessageBox::critical(
this,
"Hydrogen", sError );
153 QApplication::restoreOverrideCursor();
154 QMessageBox::information(
this,
"Hydrogen",
155 tr(
"Drumkit exported to") +
"\n" +
174 sPath = QDir::homePath();
178 fd.setFileMode( QFileDialog::Directory );
179 fd.setAcceptMode( QFileDialog::AcceptOpen );
180 fd.setDirectory( sPath );
181 fd.setWindowTitle( tr(
"Directory") );
183 if ( fd.exec() == QDialog::Accepted ) {
184 QString sFilename = fd.selectedFiles().first();
185 if ( sFilename.isEmpty() ) {
186 drumkitPathTxt->setText( sPath );
188 drumkitPathTxt->setText( sFilename );