1.1:
====== - Features: * Added a new QApt::Config class. It features a KConfig-like API to the APT system configuration, as well as provides config writing support without dumping the entire APT configuration settings to a file like APT does. It currently supports reading and writing int, bool and string settings. QApt::Backend has a QApt::Config instance that can be accessed by its config() method after initialization. * Added a new QApt::Hisotry class. It provides an interface to the APT history log(s). It provides a list of all entries in the logs, with each entry providing a start date, a list of packages acted upon as well as any errors that may have occurred during the transaction. * Added pretty includes in the form of <LibQApt/Include> (e.g. <LibQApt/Backend>) * Added a packageDownloadProgress() signal for per-package download progress reporting. This enables client applications to give more detailed information about currently-downloading packages, including parallel package downloads. * Added a markPackagesForAutoRemove() method that acts like apt-get autoremove, marking packages for removal that APT deems obsolete. * Added a new setUndoRedoCacheSize() function to QApt::Backend. This allows applications to customize the undo/redo stack size, allowing them to increase it if RAM usage is less of an issue, or decrease/eliminate the cache if RAM is tight. * Added Add a saveInstalledPackagesList() function to QApt::Backend that exports a list of all installed packages to the given path. This list can be ready by Backend::readSelections() and is fully compatible with the Synaptic Package Manager. * Add some new functions: recommendsList(), suggestsList(), enhancesList() and enhancedByList() to return QStringLists of the names of packages that have the aforementioned relational statuses with the Package. * Added an areChangesMarked() function to provide an easier/more efficient way to check if there are pending changes without checking the emptiness of the QApt::PackageList that Backend::MarkedPackages() constructs and returns. * API documentation updates, including making note of which functions are asynchronous and have signals to report events/data. * LibQApt now compiles with QT_NO_CAST_TO_ASCII and QT_NO_CAST_FROM_ASCII. - Optimizations: * APT system initialization in Backend::init() is no longer blocking, so that you can paint your UI sooner to give a perception of increased speed. * General optimizations have been made throughout to significantly speed up Backend::init() * Speed up Package::isSupported() by making a cache of package index files to prevent doing a binary search for the index file from the sources list each time isSupported() is called. * Speed Package::isInstalled() up by checking for installation without calling state(). * Added an installedCount() function that is faster than using the packageCount() overload function that takes a package state flag. * Add more efficient toInstallCount() and toRemoveCount() functions to Backend. These both just grab int's already cached in memory by APT, meaning that we don't have to iterate through every Package and get a full state reading to determine whether it is being installed/removed. * Add a more efficient latin1Section() function. to QApt::Package Since QLatin1String returns an empty string when it encounters null char pointers, we can use latin1Section() in section() to have equivalent, simpler code that still retains safety. * Improve the speed of Backend::loadSelections() by parsing selection files with QByteArray, as well as some other miscellaneous optimizations. * Change the Backend's origin/human readable name mapping to use a QHash, giving some minor optimizations to the originLabel() and origin() functions. * Add a Backend::package() overload that takes a QLatin1String. If you can use this overload, it is more efficient since you don't have to go QString -> ascii -> latin1 -> const char. * Make the regular Backend::package() implementation use the QL1S overload. This is slightly more efficient since we can convert directly from QString -> latin1 without converting to ascii in between (since APT package names will always be latin1) * Use the new Backend::package(QL1S) overload inside Backend::search(). the QL1S overload is faster in the first place, plus since Xapian gives us an std::string it is also faster to go to QL1S than to QString. * Since package names are always latin1-compliant, prevent the unnecessary conversion of const char * -> std::string -> QString::fromAscii -> QString::fromLatin1 by using QLatin1String to wrap around the const char *, making the conversion process look more like const char * -> QL1S -> QString::fromLatin1. - Bugfixes: * Added a NotFound error for the QApt Batch Installer to use when it encounters a non-existant package. Before it was not catching this error at all and went straight to completion as if nothing was wrong. * QAptBatch: Don't say we were successful if there were errors. That looks a bit silly, especially when we have error dialogs to contradict ourselves. * Fixed a bug where installing a package locally did not make the xapianIndexNeedsUpdate() return true; * Fixed a bug where the worker would never respond to DBus requests when heavy load was present on the system. (BKO: #249929) * Fixed a bug where calling originLabel() with an origin that did not have a label would insert the origin into the origin map, wasting memory. * Fixed a blank line being snuck in to the end of lists returned by the Package::installedFilesList() function * Fix a potential problem with homepage URLs with UTF8 characters not displaying correctly. * Fix a small memory leak in PackagePrivate. We had a pointer that we allocate to in the Package constructor which we weren't deleting in the PackagePrivate destructor * Compile with -fvisibility=hidden by default so that libqapt doesn't expose symbols from libraries it links against, making life easier for packagers everywhere. - Other * Documentation for the detail QVariantMaps of ErrorCodes, WarningCodes and WorkerQuestions is now provided, whereas they were completely undocumented in previous releases. 1.0.4: ====== - Bugfixes: * Respect preference files in the /etc/apt/preferences.d/ dir, and not just the /etc/apt/preferences file itself * Catch and report initialization errors in places we were missing for * Report that package state has changed when loading selection files 1.0.3: ====== - Bugfixes: * Implementing proper locking, fixing the "Doesn't respect APT system locks" bug 1.0.2: ====== - Bugfixes: * QAptBatch: Set the focus to the appropriate button for each mode 1.0.0: ==== * Initial release |