Note that many of these are just random ideas, not all of them will get implemented
-------------------------------------------------------------------------------------
+0.6.6:
+* show a warning if all packages are pinned in apt settings
+* fix: confirmation dialog has wrong parent set
+
0.7:
- update install/remove changes directly to internal package db & don't require re-reading package lists afterwards
- support loading .install files
- support installing local .debs
+- dbus interface for installing packages by name
- mime type handling for .install and .deb (can it be done without conflicting HAM?)
-- possible to select cache location?
-- repository color coding?
+- warn about unauthenticated packages / option to disable installing unauthenticated packages
0.8 (possibly):
- "problem solver" window/feature (find broken packages, handle recovery from broken packages better)
+- possible to save package selection or a list of installed (user category) packages anywhere
later/any/uncertain:
- keep a list of recently removed apps for easy reinstallation
- add an option to start fetching changelogs automatically for all upgradeable packages?
- how to handle package names that end in '-'? (theoretically they are valid but nonexistent?)
-- filtering by repository?
+- filtering by repository / repository color coding?
- make sure network is online on startup?
- fetch dates for other than user categories?
- "online search" (a new button to main menu): use maemo.org search to find packages without loading local package lists (?)
- ability to easily add extras-devel and extras-testing to repos if they don't exist
- load package lists in the background when the main menu is visible?
- read all hildon app manager repository settings (requires too much work...)
+- possible to select cache location?
known bugs:
if( !f.exists() )
return;
+ bool warnAllPinned = false;
if( f.open(QIODevice::ReadOnly | QIODevice::Text ) )
{
qDebug() << "apt preferences exist: reading pinned packages";
while( !f.atEnd() )
{
QString line = f.readLine().trimmed();
+
+ if( line=="Package: *" || line=="Package:*")
+ warnAllPinned = true;
+
if( line.startsWith("Package:") ) {
pinned_packages++;
QString pkg = line.mid(8).trimmed();
f.close();
qDebug() << "read" << pinned_packages << "pinned packages";
}
+
+ if( warnAllPinned ) {
+ iMainWindow->notifyDialog("Warning","You have pinned packages with '*' in apt preferences. It is strongly recommended to "
+ "remove such settings as they can result in unexpected behavior of Faster Application Manager.");
+ }
}
bool AAptInterface::loadInstallFiles(QStringList files_)
GdkEventIconThemeReload();
}
+ QWidget* dialogParent = this;
+ if( iWinPackageView->isVisible() )
+ dialogParent = iWinPackageView;
+
if( iNextOperation == OpOpenPkgView && success )
{
iWinPackageView->openWin();
pkglist += "</font>";
if( mismatch ) {
- ConfirmDialog m(false, this);
+ ConfirmDialog m(false, dialogParent);
m.setText("Warning", "There is a version mismatch between your original package selections and some of the packages being installed " \
"from the repositories. This could be due to your application catalogs being out of date.");
m.exec();
}
if( installing_blacklisted ) {
- ConfirmDialog b(false, this);
+ ConfirmDialog b(false, dialogParent);
b.setText("Warning","Blacklisted package(s) will be installed");
b.exec();
}
if( warn_system_package_remove ) {
- ConfirmDialog s(false, this);
+ ConfirmDialog s(false, dialogParent);
s.setText("Warning","You are about to remove a critical system package.");
s.exec();
}
if( warn_system_package_install ) {
- ConfirmDialog s(false, this);
+ ConfirmDialog s(false, dialogParent);
s.setText("Warning","You are trying to perform an install/upgrade operation on a critical system package. Doing a system upgrade with " \
"Faster Application Manager has not been tested and it could result in a horrible failure. You have been warned.");
s.exec();
}
busyDialog(false);
- ConfirmDialog d(true, this);
+ ConfirmDialog d(true, dialogParent);
if( inst.count()==0 && remv.count()==0 )
{
pkglist = "None of the packages can be installed";
QRect r = QApplication::desktop()->rect();
if(r.width() < r.height()) {
- ConfirmDialog d(false, this);
+ ConfirmDialog d(false, dialogParent);
d.setText(title,msgs.join("<br>"));
d.exec();
} else {
#ifdef Q_WS_MAEMO_5
QMaemo5InformationBox::information(0, text, QMaemo5InformationBox::NoTimeout);
#else
- ConfirmDialog d(false, this);
+ ConfirmDialog d(false, dialogParent);
d.setText(title,msgs.join("<br>"));
d.exec();
#endif
void MainWindow::notifyDialog(QString title, QString msg)
{
- ConfirmDialog d(false, this);
+ QWidget* dialogParent = this;
+ if( iWinPackageView->isVisible() )
+ dialogParent = iWinPackageView;
+
+ ConfirmDialog d(false, dialogParent);
d.setText(title, msg);
d.exec();
}
bool MainWindow::confirmDialog(QString title, QString msg)
{
- ConfirmDialog d(true, this);
+ QWidget* dialogParent = this;
+ if( iWinPackageView->isVisible() )
+ dialogParent = iWinPackageView;
+
+ ConfirmDialog d(true, dialogParent);
d.setText(title, msg);
return d.exec();
}