*/
#ifdef MYDEF_GTK_EXISTS
-#include <gdk/gdk.h>
-#include <gtk/gtk.h>
+extern "C"
+{
+ #include <gdk/gdk.h>
+ #include <gtk/gtk.h>
+}
#endif
#include <QtCore>
#include <QtMaemo5>
#endif
+extern "C"
+{
+ #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);
}
iMediaObject = new Phonon::MediaObject(this);
Phonon::AudioOutput* aout = new Phonon::AudioOutput(Phonon::NotificationCategory, this);
Phonon::createPath(iMediaObject, aout);
+
+ showFreeSpace();
+
+ show();
+ orientationChanged();
}
MainWindow::~MainWindow()
// save "need repo refresh" status
iSettings->qsettings()->setValue("need_repo_refresh", iAptInterface->needRepoRefresh());
- delete iWinPackageView;
- delete iWinRepoView;
- delete iAptInterface;
- delete iDpkgInterface;
- delete iDimmer;
- delete iSettings;
- delete ui;
+ delete iWinPackageView; iWinPackageView=0;
+ delete iWinRepoView; iWinRepoView=0;
+ delete iAptInterface; iAptInterface=0;
+ delete iDpkgInterface; iDpkgInterface=0;
+ delete iDimmer; iDimmer=0;
+ delete iSettings; iSettings=0;
+ delete ui; ui=0;
+ //iMediaObject and aout automatically deleted by their parent
}
void MainWindow::changeEvent(QEvent *e)
#endif
}
+ showFreeSpace();
}
}
iAptInterface->loadInstallFiles(installs);
}
}
+
+void MainWindow::orientationChanged()
+{
+ if( QApplication::desktop()->width() > QApplication::desktop()->height() )
+ ui->listWidget->setGridSize( QSize((ui->listWidget->width()-12)/5, (ui->listWidget->height()-12)/2) );
+ else
+ ui->listWidget->setGridSize( QSize((ui->listWidget->width()-12)/3, (ui->listWidget->height()-12)/3) );
+}
+
+
+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)
+{
+ qDebug() << "main menu:" << item->statusTip();
+
+ if( item->statusTip() == "manage_repos" ) {
+ on_btnRepos_clicked();
+ }
+ else if( item->statusTip() == "update_catalogs" ) {
+ on_btnUpdate_clicked();
+ }
+ else if( item->statusTip() == "install_apps" ) {
+ on_btnListInstallable_clicked();
+ }
+ else if( item->statusTip() == "remove_apps" ) {
+ on_btnListInstalled_clicked();
+ }
+ else if( item->statusTip() == "upgrade_apps" ) {
+ on_btnUpgrade_clicked();
+ }
+ else {
+ qDebug() << "Warning: Unhandled main menu item";
+ }
+ item->setSelected(false);
+}