diff options
Diffstat (limited to 'src/modules/addon/PackAddonDialog.cpp')
| -rw-r--r-- | src/modules/addon/PackAddonDialog.cpp | 150 |
1 files changed, 38 insertions, 112 deletions
diff --git a/src/modules/addon/PackAddonDialog.cpp b/src/modules/addon/PackAddonDialog.cpp index f2c0bafcc..0abec8bc2 100644 --- a/src/modules/addon/PackAddonDialog.cpp +++ b/src/modules/addon/PackAddonDialog.cpp @@ -40,9 +40,6 @@ #include <QMessageBox> #include <QDir> #include <QDirIterator> -#include <QDateTime> -#include <QBuffer> -#include <QFile> PackAddonDialog::PackAddonDialog(QWidget * pParent) : QWizard(pParent) @@ -133,6 +130,8 @@ void PackAddonDialog::accept() QWizard::accept(); } + +#if 0 bool PackAddonDialog::checkDirTree(QString * pszError) { if(pszError) @@ -154,8 +153,6 @@ bool PackAddonDialog::checkDirTree(QString * pszError) return true; } - -#if 0 bool PackAddonDialog::createInstaller(QString * pszError) { if(pszError) @@ -259,134 +256,63 @@ bool PackAddonDialog::createInstaller(QString * pszError) #endif + + bool PackAddonDialog::packAddon() { // Get data from registered fields - m_szAuthor = field("packageAuthor").toString(); - m_szName = field("packageName").toString(); - m_szVersion = field("packageVersion").toString(); - m_szDescription = field("packageDescription").toString(); - m_szMinVersion = field("packageMinVersion").toString(); - m_szIcon = field("packageIcon").toString(); - m_szDirPath = field("packageDirPath").toString(); - m_szSavePath = field("packageSavePath").toString(); + AddonInfo info; + info.szAuthor = field("packageAuthor").toString(); + info.szName = field("packageName").toString(); + info.szVersion = field("packageVersion").toString(); + info.szDescription = field("packageDescription").toString(); + info.szMinVersion = field("packageMinVersion").toString(); + info.szIcon = field("packageIcon").toString(); + info.szDirPath = field("packageDirPath").toString(); + info.szSavePath = field("packageSavePath").toString(); - // Check the addon tree - QString szError; + if(info.szSavePath.isEmpty()) + { + info.szSavePath = QDir::homePath(); + KviQString::ensureLastCharIs(info.szSavePath,QChar(KVI_PATH_SEPARATOR_CHAR)); + info.szSavePath += m_szName; + info.szSavePath += "-"; + info.szSavePath += m_szVersion; + info.szSavePath += KVI_FILEEXTENSION_ADDONPACKAGE; + } - if(!checkDirTree(&szError)) + if(QFile::exists(info.szSavePath)) { - QMessageBox::critical(this, - __tr2qs_ctx("Addon Packaging Error","addon"), - szError,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton - ); - return false; + if(QMessageBox::question( + this, + __tr2qs_ctx("Export Addon - KVIrc","addon"), + __tr2qs_ctx("File %1 already exists. Do you want to overwrite it?","addon").arg(info.szSavePath), + QMessageBox::Yes, + QMessageBox::No + ) == QMessageBox::No) + return false; } // Raise the files summary dialog m_pPackAddonSummaryFilesWidget = new PackAddonSummaryFilesWidget(this); - m_pPackAddonSummaryFilesWidget->setPath(m_szDirPath); + m_pPackAddonSummaryFilesWidget->setPath(info.szDirPath); if(m_pPackAddonSummaryFilesWidget->exec() == QDialog::Rejected) { delete m_pPackAddonSummaryFilesWidget; return false; } + QString szError; - QString szTmp; - szTmp = QDateTime::currentDateTime().toString(); - - KviPackageWriter pw; - pw.addInfoField("PackageType","AddonPack"); - pw.addInfoField("AddonPackVersion",KVI_CURRENT_ADDONS_ENGINE_VERSION); - pw.addInfoField("Name",m_szName); - pw.addInfoField("Version",m_szVersion); - pw.addInfoField("Author",m_szAuthor); - pw.addInfoField("Description",m_szDescription); - pw.addInfoField("Date",szTmp); - pw.addInfoField("Application","KVIrc " KVI_VERSION "." KVI_SOURCES_DATE); - - QPixmap pix(m_szIcon); - if(!pix.isNull()) - { - QByteArray * pba = new QByteArray(); - QBuffer bufferz(pba,0); - - bufferz.open(QIODevice::WriteOnly); - pix.save(&bufferz,"PNG"); - bufferz.close(); - pw.addInfoField("Image",pba); - } - - QDir dir(m_szDirPath); - QFileInfoList ls = dir.entryInfoList(QDir::Dirs | QDir::Files | QDir::Readable | QDir::NoSymLinks | QDir::NoDotAndDotDot); - - if(ls.isEmpty()) - { - szTmp = __tr2qs_ctx("Packaging failed","addon"); - szTmp += ": "; - szTmp += __tr2qs_ctx("The package file list is empty","addon"); - QMessageBox::critical(this,__tr2qs_ctx("Export Addon - KVIrc","addon"),szTmp,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton); - return false; - } - - for(QFileInfoList::Iterator it = ls.begin();it != ls.end();++it) - { - const QFileInfo &inf = *it; - - if(inf.isDir()) - { - if(!pw.addDirectory(inf.absoluteFilePath(),QString("%1/").arg(inf.fileName()))) - { - QString szTmp = __tr2qs_ctx("Packaging failed","addon"); - szTmp += ": "; - szTmp += pw.lastError(); - QMessageBox::critical(this,__tr2qs_ctx("Export Addon - KVIrc","addon"),szTmp,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton); - return false; - } - - continue; - } - - // must be a file - if(!pw.addFile(inf.absoluteFilePath(),inf.fileName())) - { - szTmp = __tr2qs_ctx("Packaging failed","addon"); - szTmp += ": "; - szTmp += pw.lastError(); - QMessageBox::critical(this,__tr2qs_ctx("Export Addon - KVIrc","addon"),szTmp,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton); - return false; - } - } - - - // Create the addon package - if(m_szSavePath.isEmpty()) - { - m_szSavePath = QDir::homePath(); - KviQString::ensureLastCharIs(m_szSavePath,QChar(KVI_PATH_SEPARATOR_CHAR)); - m_szSavePath += m_szName; - m_szSavePath += "-"; - m_szSavePath += m_szVersion; - m_szSavePath += KVI_FILEEXTENSION_ADDONPACKAGE; - } - - if(QFile::exists(m_szSavePath)) - { - if(QMessageBox::question(this,__tr2qs_ctx("Export Addon - KVIrc","addon"),__tr2qs_ctx("File %1 already exists. Do you want to overwrite it?","addon").arg(m_szSavePath),QMessageBox::Yes,QMessageBox::No) == QMessageBox::No) - return false; - } - - if(!pw.pack(m_szSavePath)) + if(!AddonFunctions::pack(info,szError)) { - szTmp = __tr2qs_ctx("Packaging failed","addon"); - szTmp += ": "; - szTmp += pw.lastError(); - QMessageBox::critical(this,__tr2qs_ctx("Export Addon - KVIrc","addon"),szTmp,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton); + QMessageBox::critical(this, + __tr2qs_ctx("Addon Packaging Error","addon"), + szError,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton + ); return false; } - QMessageBox::information(this,__tr2qs_ctx("Export Addon - KVIrc","addon"),__tr2qs_ctx("Package saved successfully in %1","addon").arg(m_szSavePath),QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton); return true; |
