mirror of
https://github.com/oguzhaninan/Stacer.git
synced 2025-12-23 23:18:31 -05:00
219 lines
5.2 KiB
C++
219 lines
5.2 KiB
C++
#include "app.h"
|
|
#include "ui_app.h"
|
|
#include "utilities.h"
|
|
|
|
App::~App()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
App::App(QWidget *parent) :
|
|
QMainWindow(parent),
|
|
ui(new Ui::App),
|
|
mSlidingStacked(new SlidingStackedWidget(this)),
|
|
mTrayIcon(AppManager::ins()->getTrayIcon()),
|
|
mTrayMenu(new QMenu(this))
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
init();
|
|
}
|
|
|
|
void App::init()
|
|
{
|
|
setGeometry(
|
|
QStyle::alignedRect(Qt::LeftToRight, Qt::AlignCenter,
|
|
size(), qApp->desktop()->availableGeometry())
|
|
);
|
|
|
|
// form settings
|
|
ui->horizontalLayout->setContentsMargins(0,0,0,0);
|
|
ui->horizontalLayout->setSpacing(0);
|
|
|
|
dashboardPage = new DashboardPage(mSlidingStacked);
|
|
startupAppsPage = new StartupAppsPage(mSlidingStacked);
|
|
systemCleanerPage = new SystemCleanerPage(mSlidingStacked);
|
|
servicesPage = new ServicesPage(mSlidingStacked);
|
|
processPage = new ProcessesPage(mSlidingStacked);
|
|
uninstallerPage = new UninstallerPage(mSlidingStacked);
|
|
resourcesPage = new ResourcesPage(mSlidingStacked);
|
|
settingsPage = new SettingsPage(mSlidingStacked);
|
|
|
|
ui->pageContentLayout->addWidget(mSlidingStacked);
|
|
|
|
mListPages = {
|
|
dashboardPage, startupAppsPage, systemCleanerPage, servicesPage,
|
|
processPage, uninstallerPage, resourcesPage, settingsPage
|
|
};
|
|
|
|
mListSidebarButtons = {
|
|
ui->btnDash, ui->btnStartupApps, ui->btnSystemCleaner, ui->btnServices,
|
|
ui->btnProcesses, ui->btnUninstaller, ui->btnResources, ui->btnSettings
|
|
};
|
|
|
|
// APT SOURCE MANAGER
|
|
if (ToolManager::ins()->checkSourceRepository()) {
|
|
aptSourceManagerPage = new APTSourceManagerPage(mSlidingStacked);
|
|
mListPages.insert(7, aptSourceManagerPage);
|
|
mListSidebarButtons.insert(7, ui->btnAptSourceManager);
|
|
} else {
|
|
ui->btnAptSourceManager->hide();
|
|
}
|
|
|
|
// GNOME SETTINGS
|
|
bool checkDesktopSession = QString(qgetenv("DESKTOP_SESSION")).contains(QRegExp("ubuntu", Qt::CaseInsensitive));
|
|
bool checkDistribution = SystemInfo().getDistribution().contains(QRegExp("ubuntu", Qt::CaseInsensitive));;
|
|
|
|
if (checkDesktopSession || checkDistribution) {
|
|
gnomeSettingsPage = new GnomeSettingsPage(mSlidingStacked);
|
|
mListPages.insert(8, gnomeSettingsPage);
|
|
mListSidebarButtons.insert(8, ui->btnGnomeSettings);
|
|
} else {
|
|
ui->btnGnomeSettings->hide();
|
|
}
|
|
|
|
// add pages
|
|
for (QWidget *page: mListPages) {
|
|
mSlidingStacked->addWidget(page);
|
|
}
|
|
|
|
AppManager::ins()->updateStylesheet();
|
|
|
|
Utilities::addDropShadow(ui->sidebar, 60);
|
|
|
|
// set start page
|
|
clickSidebarButton(SettingManager::ins()->getStartPage());
|
|
|
|
createTrayActions();
|
|
|
|
mTrayIcon->show();
|
|
}
|
|
|
|
void App::closeEvent(QCloseEvent *event)
|
|
{
|
|
event->ignore();
|
|
hide();
|
|
}
|
|
|
|
void App::createTrayActions()
|
|
{
|
|
for (QPushButton *button: mListSidebarButtons) {
|
|
QString toolTip = button->toolTip();
|
|
QAction *action = new QAction(toolTip, this);
|
|
connect(action, &QAction::triggered, [=] {
|
|
clickSidebarButton(toolTip, true);
|
|
});
|
|
mTrayMenu->addAction(action);
|
|
}
|
|
|
|
mTrayMenu->addSeparator();
|
|
|
|
QAction *quitAction = new QAction(tr("Quit"), this);
|
|
connect(quitAction, &QAction::triggered, [=] {qApp->quit();});
|
|
mTrayMenu->addAction(quitAction);
|
|
|
|
mTrayIcon->setContextMenu(mTrayMenu);
|
|
}
|
|
|
|
void App::clickSidebarButton(QString pageTitle, bool isShow)
|
|
{
|
|
QWidget *selectedWidget = getPageByTitle(pageTitle);
|
|
if (selectedWidget) {
|
|
pageClick(selectedWidget, !isShow);
|
|
checkSidebarButtonByTooltip(pageTitle);
|
|
} else {
|
|
pageClick(mListPages.first());
|
|
}
|
|
setVisible(isShow);
|
|
if (isShow) activateWindow();
|
|
}
|
|
|
|
void App::checkSidebarButtonByTooltip(const QString &text)
|
|
{
|
|
for (QPushButton *button: mListSidebarButtons) {
|
|
if (button->toolTip() == text) {
|
|
button->setChecked(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
QWidget* App::getPageByTitle(const QString &title)
|
|
{
|
|
for (QWidget *page: mListPages) {
|
|
if (page->windowTitle() == title) {
|
|
return page;
|
|
}
|
|
}
|
|
return nullptr;
|
|
}
|
|
|
|
void App::pageClick(QWidget *widget, bool slide)
|
|
{
|
|
if (widget) {
|
|
ui->pageTitle->setText(widget->windowTitle());
|
|
if (slide) {
|
|
mSlidingStacked->slideInIdx(mSlidingStacked->indexOf(widget));
|
|
} else {
|
|
mSlidingStacked->setCurrentWidget(widget);
|
|
}
|
|
}
|
|
}
|
|
|
|
void App::on_btnDash_clicked()
|
|
{
|
|
pageClick(dashboardPage);
|
|
}
|
|
|
|
void App::on_btnStartupApps_clicked()
|
|
{
|
|
pageClick(startupAppsPage);
|
|
}
|
|
|
|
void App::on_btnSystemCleaner_clicked()
|
|
{
|
|
pageClick(systemCleanerPage);
|
|
}
|
|
|
|
void App::on_btnServices_clicked()
|
|
{
|
|
pageClick(servicesPage);
|
|
}
|
|
|
|
void App::on_btnUninstaller_clicked()
|
|
{
|
|
pageClick(uninstallerPage);
|
|
}
|
|
|
|
void App::on_btnProcesses_clicked()
|
|
{
|
|
pageClick(processPage);
|
|
}
|
|
|
|
void App::on_btnResources_clicked()
|
|
{
|
|
pageClick(resourcesPage);
|
|
}
|
|
|
|
void App::on_btnAptSourceManager_clicked()
|
|
{
|
|
pageClick(aptSourceManagerPage);
|
|
}
|
|
|
|
void App::on_btnGnomeSettings_clicked()
|
|
{
|
|
pageClick(gnomeSettingsPage);
|
|
}
|
|
|
|
void App::on_btnSettings_clicked()
|
|
{
|
|
pageClick(settingsPage);
|
|
}
|
|
|
|
void App::on_btnFeedback_clicked()
|
|
{
|
|
if (feedback.isNull()) {
|
|
feedback = QSharedPointer<Feedback>(new Feedback(this));
|
|
}
|
|
feedback->show();
|
|
}
|