X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=HomeScreen%2Fsrc%2Fapplauncherwidget.cpp;fp=HomeScreen%2Fsrc%2Fapplauncherwidget.cpp;h=94dd357f6c0bf2252d55cb1d6841d25ad653ed10;hb=0a468d9b5ae7b3e5ba106facf17698d89b1ce200;hp=0000000000000000000000000000000000000000;hpb=3478f65b39560b333ba189e7d86e2c2cebfc9c7a;p=staging%2FHomeScreen.git diff --git a/HomeScreen/src/applauncherwidget.cpp b/HomeScreen/src/applauncherwidget.cpp new file mode 100644 index 0000000..94dd357 --- /dev/null +++ b/HomeScreen/src/applauncherwidget.cpp @@ -0,0 +1,153 @@ +/* + * Copyright (C) 2016 Mentor Graphics Development (Deutschland) GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "applauncherwidget.h" +#include "ui_applauncherwidget.h" +#include +#include + +#define APP_LIST_COLUMN_COUNT 5 + +AppLauncherWidget::AppLauncherWidget(QWidget *parent) : + QWidget(parent), + mp_ui(new Ui::AppLauncherWidget), + mp_appList(new QList()), + mp_appTable(0), + mp_dBusAppFrameworkProxy() +{ + mp_ui->setupUi(this); + + AppInfo ai; + for (int i = 0; i < 100; ++i) + { + ai.setName("test" + QString::number(i)); + mp_appList->append(ai); + } + + qDebug("D-Bus: connect to org.agl.homescreenappframeworkbindertizen /AppFramework"); + mp_dBusAppFrameworkProxy = new org::agl::appframework("org.agl.homescreenappframeworkbindertizen", + "/AppFramework", + QDBusConnection::sessionBus(), + 0); + + populateAppList(); +} + +AppLauncherWidget::~AppLauncherWidget() +{ + delete mp_dBusAppFrameworkProxy; + if (0 != mp_appTable) + { + delete mp_appTable; + } + delete mp_appList; + delete mp_ui; +} + +void AppLauncherWidget::updateColorScheme() +{ + QSettings settings; + QSettings settings_cs(QApplication::applicationDirPath() + + "/colorschemes/" + + settings.value("systemsettings/colorscheme", "default").toString() + + "/" + + QString::number(settings.value("systemsettings/daynightmode", SystemDayNight::DAYNIGHTMODE_DAY).toInt()) + + ".ini", + QSettings::IniFormat); + + mp_ui->widget_Background->setStyleSheet(settings_cs.value("AppLauncherWidget/widget_Background").toString()); + mp_ui->widget_Home_Icon->setStyleSheet(settings_cs.value("AppLauncherWidget/widget_Home_Icon").toString()); +} + +void AppLauncherWidget::populateAppList() +{ + setStyleSheet("QTableWidget {background-color: transparent;}" + "QTableCornerButton::section {background-color: transparent;}"); + + if (0 == mp_appTable) + { + mp_appTable = new QTableWidget(this); + QObject::connect(mp_appTable, SIGNAL(cellClicked(int, int)), this, SLOT(on_tableView_clicked(int, int))); + } + else + { + mp_appTable->clear(); + } + + mp_appTable->setShowGrid(false); + mp_appTable->setFrameShape(QFrame::NoFrame); + mp_appTable->move(40, 40); + mp_appTable->resize(1000, 1920 - 40 - 40 - 60 - 60); + mp_appTable->horizontalHeader()->setVisible(false); + mp_appTable->verticalHeader()->setVisible(false); + mp_appTable->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + mp_appTable->setRowCount(100); + mp_appTable->setColumnCount(APP_LIST_COLUMN_COUNT); + + int i; + + QStringList apps = mp_dBusAppFrameworkProxy->getAvailableAppNames(); + mp_appList->clear(); + + mp_appTable->setRowCount((apps.size() + (APP_LIST_COLUMN_COUNT - 1)) / APP_LIST_COLUMN_COUNT); + + if (apps.size() >= (9 * APP_LIST_COLUMN_COUNT)) + { + mp_appTable->resize(1000, 1920 - 40 - 40 - 60 - 60); + } + else + { + mp_appTable->resize(1000, mp_appTable->rowCount() * 190); + } + + + for (i = 0; i < (mp_appTable->rowCount() * APP_LIST_COLUMN_COUNT); i++) + { + mp_appTable->verticalHeader()->resizeSection(i, 190); + mp_appTable->horizontalHeader()->resizeSection(i, 190); + } + + AppInfo ai; + for (i = 0; i < apps.size(); ++i) + { + qDebug("new app: %s", apps.at(i).toStdString().c_str()); + ai.setName(apps.at(i)); + mp_appList->append(ai); + } + + for (i = 0; i < mp_appList->size(); i++) + { + mp_appTable->setItem(i / APP_LIST_COLUMN_COUNT, + i % APP_LIST_COLUMN_COUNT, + new QTableWidgetItem(mp_appList->at(i).getName())); + mp_appTable->item(i / APP_LIST_COLUMN_COUNT, + i % APP_LIST_COLUMN_COUNT)->setFlags(Qt::ItemIsEnabled); + mp_appTable->item(i / APP_LIST_COLUMN_COUNT, + i % APP_LIST_COLUMN_COUNT)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter); + } + + +} + +void AppLauncherWidget::on_tableView_clicked(int row, int col) +{ + if (mp_appList->size() > row * APP_LIST_COLUMN_COUNT + col) + { + int pid = mp_dBusAppFrameworkProxy->launchApp(mp_appList->at(row * APP_LIST_COLUMN_COUNT + col).getName()); + qDebug("%d, %d: start app %s", row, col, mp_appList->at(row * APP_LIST_COLUMN_COUNT + col).getName().toStdString().c_str()); + qDebug("pid: %d", pid); + } +}