ContentManagerError -> KiwixAppError

Also introduced `showErrorBox()`
This commit is contained in:
Veloman Yunkan 2024-05-31 18:00:03 +04:00 committed by Kelson
parent c7295fbc05
commit cdd5353859
2 changed files with 30 additions and 25 deletions

View File

@ -32,47 +32,32 @@ SettingsManager* getSettingsManager()
return KiwixApp::instance()->getSettingsManager();
}
class ContentManagerError : public std::runtime_error
{
public:
ContentManagerError(const QString& summary, const QString& details)
: std::runtime_error(summary.toStdString())
, m_details(details)
{}
QString summary() const { return QString::fromStdString(what()); }
QString details() const { return m_details; }
private:
QString m_details;
};
void throwDownloadUnavailableError()
{
throw ContentManagerError(gt("download-unavailable"),
gt("download-unavailable-text"));
throw KiwixAppError(gt("download-unavailable"),
gt("download-unavailable-text"));
}
void checkThatBookCanBeSaved(const kiwix::Book& book, QString targetDir)
{
const QFileInfo targetDirInfo(targetDir);
if ( !targetDirInfo.isDir() ) {
throw ContentManagerError(gt("download-storage-error"),
gt("download-dir-missing"));
throw KiwixAppError(gt("download-storage-error"),
gt("download-dir-missing"));
}
// XXX: This may lie under Windows
// XXX: (see https://doc.qt.io/qt-5/qfile.html#platform-specific-issues)
if ( !targetDirInfo.isWritable() ) {
throw ContentManagerError(gt("download-storage-error"),
gt("download-dir-not-writable"));
throw KiwixAppError(gt("download-storage-error"),
gt("download-dir-not-writable"));
}
QStorageInfo storage(targetDir);
auto bytesAvailable = storage.bytesAvailable();
if (bytesAvailable == -1 || book.getSize() > (unsigned long long) bytesAvailable) {
throw ContentManagerError(gt("download-storage-error"),
gt("download-storage-error-text"));
throw KiwixAppError(gt("download-storage-error"),
gt("download-storage-error-text"));
}
}
@ -556,9 +541,9 @@ void ContentManager::downloadBook(const QString &id)
managerModel->setDownloadState(id, downloadState);
emit(oneBookChanged(id));
}
catch ( const ContentManagerError& err )
catch ( const KiwixAppError& err )
{
showInfoBox(err.summary(), err.details(), mp_view);
showErrorBox(err, mp_view);
}
}

View File

@ -44,4 +44,24 @@ void showConfirmBox(QString title, QString text, QWidget *parent,
});
}
class KiwixAppError : public std::runtime_error
{
public:
KiwixAppError(const QString& summary, const QString& details)
: std::runtime_error(summary.toStdString())
, m_details(details)
{}
QString summary() const { return QString::fromStdString(what()); }
QString details() const { return m_details; }
private:
QString m_details;
};
inline void showErrorBox(const KiwixAppError& err, QWidget *parent = nullptr)
{
showInfoBox(err.summary(), err.details(), parent);
}
#endif // KIWIXCONFIRMBOX_H