2 * Copyright (C) 2016 Mentor Graphics Development (Deutschland) GmbH
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include "applauncherwidget.h"
18 #include "ui_applauncherwidget.h"
19 #include <include/daynightmode.hpp>
25 #define APP_LIST_COLUMN_COUNT 5
27 AppLauncherWidget::AppLauncherWidget(QWidget *parent) :
29 mp_ui(new Ui::AppLauncherWidget),
30 mp_appList(new QList<AppInfo>()),
32 mp_dBusAppFrameworkProxy()
37 for (int i = 0; i < 100; ++i)
39 ai.setName("test" + QString::number(i));
40 mp_appList->append(ai);
43 qDebug("D-Bus: connect to org.agl.homescreenappframeworkbinder /AppFramework");
44 mp_dBusAppFrameworkProxy = new org::agl::appframework("org.agl.homescreenappframeworkbinder",
46 QDBusConnection::sessionBus(),
50 AppLauncherWidget::~AppLauncherWidget()
52 delete mp_dBusAppFrameworkProxy;
61 void AppLauncherWidget::updateColorScheme()
64 QSettings settings_cs(QApplication::applicationDirPath() +
66 settings.value("systemsettings/colorscheme", "default").toString() +
68 QString::number(settings.value("systemsettings/proximityobjectdetected", false).toBool()) +
70 QString::number(settings.value("systemsettings/daynightmode", SystemDayNight::DAYNIGHTMODE_DAY).toInt()) +
72 QSettings::IniFormat);
74 mp_ui->widget_background->setStyleSheet(settings_cs.value("AppLauncherWidget/widget_Background").toString());
75 mp_ui->widget_homeIcon->setStyleSheet(settings_cs.value("AppLauncherWidget/widget_Home_Icon").toString());
77 setStyleSheet(settings_cs.value("AppLauncherWidget/common_css").toString());
80 void AppLauncherWidget::populateAppList()
84 mp_appTable = new QTableWidget(this);
85 QObject::connect(mp_appTable, SIGNAL(cellClicked(int,int)), this, SLOT(on_tableView_clicked(int,int)));
92 mp_appTable->setShowGrid(false);
93 mp_appTable->setFrameShape(QFrame::NoFrame);
94 mp_appTable->move(40, 40);
95 mp_appTable->resize(1000, 1920 - 40 - 40 - 60 - 60);
96 mp_appTable->horizontalHeader()->setVisible(false);
97 mp_appTable->verticalHeader()->setVisible(false);
98 mp_appTable->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
99 mp_appTable->setRowCount(100);
100 mp_appTable->setColumnCount(APP_LIST_COLUMN_COUNT);
104 QStringList apps = mp_dBusAppFrameworkProxy->getAvailableAppNames();
107 mp_appTable->setRowCount((apps.size() + (APP_LIST_COLUMN_COUNT - 1)) / APP_LIST_COLUMN_COUNT);
109 if (apps.size() >= (9 * APP_LIST_COLUMN_COUNT))
111 mp_appTable->resize(1000, 1920 - 40 - 40 - 60 - 60);
115 mp_appTable->resize(1000, mp_appTable->rowCount() * 190);
119 for (i = 0; i < (mp_appTable->rowCount() * APP_LIST_COLUMN_COUNT); i++)
121 mp_appTable->verticalHeader()->resizeSection(i, 190);
122 mp_appTable->horizontalHeader()->resizeSection(i, 190);
126 for (i = 0; i < apps.size(); ++i)
128 qDebug("new app: %s", apps.at(i).toStdString().c_str());
129 ai.setName(apps.at(i));
130 mp_appList->append(ai);
133 for (i = 0; i < mp_appList->size(); i++)
135 mp_appTable->setItem(i / APP_LIST_COLUMN_COUNT,
136 i % APP_LIST_COLUMN_COUNT,
137 new QTableWidgetItem(mp_appList->at(i).getName()));
138 mp_appTable->item(i / APP_LIST_COLUMN_COUNT,
139 i % APP_LIST_COLUMN_COUNT)->setFlags(Qt::ItemIsEnabled);
140 mp_appTable->item(i / APP_LIST_COLUMN_COUNT,
141 i % APP_LIST_COLUMN_COUNT)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
145 void AppLauncherWidget::on_tableView_clicked(int row, int col)
147 if (mp_appList->size() > row * APP_LIST_COLUMN_COUNT + col)
149 int pid = mp_dBusAppFrameworkProxy->launchApp(mp_appList->at(row * APP_LIST_COLUMN_COUNT + col).getName());
150 qDebug("%d, %d: start app %s", row, col, mp_appList->at(row * APP_LIST_COLUMN_COUNT + col).getName().toStdString().c_str());
151 qDebug("pid: %d", pid);
153 // the new app wants to be visible by default
154 newRequestsToBeVisibleApp(pid);