#include <QtMaemo5>
#endif
+#include <sys/vfs.h>
+
#include "mainwindow.h"
#include "version.h"
#include "ui_mainwindow.h"
iUpgradeAutoUpdate = true;
iNextOperation = OpNone;
+ connect(QApplication::desktop(), SIGNAL(resized(int)), this, SLOT(orientationChanged()));
+
ui->centralWidget->loadWallpaper();
+ /*
QString stylesheet_mainscreen =
"QPushButton {"
"border-radius: 16px;"
"border-style: inset;"
"background-color: rgba(255,255,255,150);"
"}";
+ */
if( ((QApplication*)QApplication::instance())->styleSheet().isEmpty() )
{
}
if( stylesheet_file.isEmpty() ) {
- ui->centralWidget->setStyleSheet(stylesheet_mainscreen);
+ //ui->centralWidget->setStyleSheet(stylesheet_mainscreen);
} else {
((QApplication*)QApplication::instance())->setStyleSheet(stylesheet_file);
}
Phonon::AudioOutput* aout = new Phonon::AudioOutput(Phonon::NotificationCategory, this);
Phonon::createPath(iMediaObject, aout);
- resetIdlingTime();
+ showFreeSpace();
}
MainWindow::~MainWindow()
{
//install
- if( iIdlingSince < QDateTime::currentDateTime().addSecs(-30*60) )
- iAptInterface->setNeedRefresh(-1,1,1,1);
+ int listupd = -1;
+ int dpkgupd = -1;
+ if( iAptInterface->lastListUpdate() < QDateTime::currentDateTime().addSecs(-KListExpireTime) )
+ listupd = 1;
+ if( iAptInterface->lastDpkgUpdate() < QDateTime::currentDateTime().addSecs(-KListExpireTime) )
+ dpkgupd = 1;
+ iAptInterface->setNeedRefresh(-1,listupd,dpkgupd,listupd);
iWinPackageView->setStatFilter( Package::PkgStatNotInstalled );
- if( iAptInterface->needRepoRefresh() )
+ if( iAptInterface->needRepoRefresh() && !iSettings->qsettings()->value("no_catalogs_autoupdate",false).toBool() )
iAptInterface->addQueuedOperation(AAptInterface::ModeAptGetUpdate);
busyDialog(true, tr("Operation in progress"), tr("Reading package lists"));
{
// upgrade
- if( iIdlingSince < QDateTime::currentDateTime().addSecs(-30*60) )
- iAptInterface->setNeedRefresh(-1,1,1,1);
+ int listupd = -1;
+ int dpkgupd = -1;
+ if( iAptInterface->lastListUpdate() < QDateTime::currentDateTime().addSecs(-KListExpireTime) )
+ listupd = 1;
+ if( iAptInterface->lastDpkgUpdate() < QDateTime::currentDateTime().addSecs(-KListExpireTime) )
+ dpkgupd = 1;
+ iAptInterface->setNeedRefresh(-1,listupd,dpkgupd,listupd);
iWinPackageView->setStatFilter( Package::PkgStatUpgradeable );
- if( iAptInterface->needRepoRefresh() )
+ if( iAptInterface->needRepoRefresh() && !iSettings->qsettings()->value("no_catalogs_autoupdate",false).toBool() )
iAptInterface->addQueuedOperation(AAptInterface::ModeAptGetUpdate);
busyDialog(true, tr("Operation in progress"), tr("Reading package lists"));
if( !iSettings->qsettings()->value("remove_readfull",false).toBool() )
iAptInterface->setSkipListAndDates();
- if( iIdlingSince < QDateTime::currentDateTime().addSecs(-30*60) )
- iAptInterface->setNeedRefresh(-1,-1,1,-1);
+ int dpkgupd = -1;
+ if( iAptInterface->lastDpkgUpdate() < QDateTime::currentDateTime().addSecs(-KListExpireTime) )
+ dpkgupd = 1;
+ iAptInterface->setNeedRefresh(-1,-1,dpkgupd,-1);
iWinPackageView->setStatFilter( Package::PkgStatInstalled );
GdkEventIconThemeReload();
}
+ QWidget* dialogParent = this;
+ if( iWinPackageView->isVisible() )
+ dialogParent = iWinPackageView;
+
if( iNextOperation == OpOpenPkgView && success )
{
iWinPackageView->openWin();
if( inst.count()>0 )
pkglist += QString("Total download size: %L1 kB<br>").arg(total_dl_size);
bool mismatch = false;
+ bool warn_system_package_remove = false;
+ bool warn_system_package_install = false;
if( remv.count()>0 ) {
pkglist += "<br><b><u>REMOVE:</u></b><br><font size=\"-1\">";
pkglist += "<font color=\"red\">***UNKNOWN***</font>";
mismatch = true;
}
+#ifdef Q_WS_MAEMO_5
+ if( pkg && pkg->maemoDisplayName()=="Maemo 5" ) {
+ warn_system_package_remove = true;
+ }
+#endif
if( remvver.count()>i ) {
pkglist += " " + remvver.at(i);
if( pkg && remvver.at(i) != pkg->version() ) {
pkglist += "<font color=\"red\">***BLACKLISTED***</font>";
installing_blacklisted = true;
}
+#ifdef Q_WS_MAEMO_5
+ if( pkg && pkg->maemoDisplayName()=="Maemo 5" ) {
+ warn_system_package_install = true;
+ }
+#endif
if( instver.count()>i ) {
pkglist += " " + instver.at(i);
if( pkg && instver.at(i) != pkg->version() ) {
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, dialogParent);
+ s.setText("Warning","You are about to remove a critical system package.");
+ s.exec();
+ }
+ if( warn_system_package_install ) {
+ 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";
+ d.disableButton();
+ }
d.setText("Confirmation",pkglist);
if( d.exec() ) {
iAptInterface->addQueuedOperation(AAptInterface::ModeAptGetInstall);
}
QString text = "<br><b><u>Faster Application Manager</u></b><br>"
- "<b>"+title+"</b><br>" + msgs.join("<br>") + "<br>";
+ "<b>"+title+"</b><br>" + msgs.join("<br>") + "<br>";
+ QRect r = QApplication::desktop()->rect();
+ if(r.width() < r.height()) {
+ ConfirmDialog d(false, dialogParent);
+ d.setText(title,msgs.join("<br>"));
+ d.exec();
+ } else {
#ifdef Q_WS_MAEMO_5
- QMaemo5InformationBox::information(0, text, QMaemo5InformationBox::NoTimeout);
+ QMaemo5InformationBox::information(0, text, QMaemo5InformationBox::NoTimeout);
+#else
+ ConfirmDialog d(false, dialogParent);
+ d.setText(title,msgs.join("<br>"));
+ d.exec();
#endif
+ }
+
+ showFreeSpace();
}
}
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();
}
iAptInterface->loadInstallFiles(installs);
}
}
+
+void MainWindow::orientationChanged()
+{
+ //ui->centralWidget->adjustSize();
+ //ui->listWidget->adjustSize();
+}
+
+
+void MainWindow::showFreeSpace()
+{
+ quint64 warn_limit_root = 5120;
+ quint64 warn_limit_opt = 51200;
+ struct statfs root_stat;
+ struct statfs opt_stat;
+ statfs("/",&root_stat);
+ statfs("/opt",&opt_stat);
+ quint64 free_root = root_stat.f_bavail * root_stat.f_bsize / 1024;
+ quint64 free_opt = opt_stat.f_bavail * opt_stat.f_bsize / 1024;
+ quint64 total_root = root_stat.f_blocks * root_stat.f_bsize / 1024;
+ quint64 total_opt = opt_stat.f_blocks * opt_stat.f_bsize / 1024;
+ qDebug() << "rootfs" << free_root << "/" << total_root << "kB free";
+ qDebug() << "opt fs" << free_opt << "/" << total_opt << "kB free";
+
+ QString rootstr = QString("rootfs: %L1 / %L2 MB free").arg(free_root/1024).arg(total_root/1024);
+ QString optstr = QString("opt: %L1 / %L2 MB free").arg(free_opt/1024).arg(total_opt/1024);
+
+ ui->label->setText("<font size=\"-1\">" + rootstr + "<br>" + optstr + "</font>");
+
+ /*
+ ui->progressBarRoot->setFormat(rootstr);
+ ui->progressBarRoot->setMaximum(total_root/1024);
+ ui->progressBarRoot->setValue(free_root/1024);
+ ui->progressBarOpt->setFormat(optstr);
+ ui->progressBarOpt->setMaximum(total_opt/1024);
+ ui->progressBarOpt->setValue(free_opt/1024);
+ */
+
+ if( free_root < warn_limit_root || free_opt < warn_limit_opt )
+ {
+ ConfirmDialog d(false, this);
+ QString t;
+ if( free_root < warn_limit_root )
+ t += QString("Root filesystem has %L1 kB available<br>").arg(free_root);
+ if( free_opt < warn_limit_opt )
+ t += QString("Opt (home) filesystem has %L1 kB available<br>").arg(free_opt);
+ t += "<br>You may proceed, but consider freeing up space to prevent problems in the future";
+ d.setText("Warning: Low disk space",t);
+ d.exec();
+ }
+}
+
+void MainWindow::on_listWidget_itemClicked(QListWidgetItem* item)
+{
+ if( item->text() == "Manage repositories" ) {
+ on_btnRepos_clicked();
+ }
+ else if( item->text() == "Update catalogs" ) {
+ on_btnUpdate_clicked();
+ }
+ else if( item->text() == "Install applications" ) {
+ on_btnListInstallable_clicked();
+ }
+ else if( item->text() == "Remove applications" ) {
+ on_btnListInstalled_clicked();
+ }
+ else if( item->text() == "Upgrade applications" ) {
+ on_btnUpgrade_clicked();
+ }
+ else {
+ qDebug() << "Warning: Unhandled main menu item";
+ }
+ item->setSelected(false);
+}