mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-30 12:10:03 +02:00
[apps/probability] Create a class image table view
Change-Id: I96b90988226f29a5aef167c9d5fc2ffb7a9c28b9
This commit is contained in:
154
apps/probability/image_table_view.cpp
Normal file
154
apps/probability/image_table_view.cpp
Normal file
@@ -0,0 +1,154 @@
|
||||
#include "image_table_view.h"
|
||||
#include <assert.h>
|
||||
#include "app.h"
|
||||
#include "images/calcul1_icon.h"
|
||||
#include "images/calcul2_icon.h"
|
||||
#include "images/calcul3_icon.h"
|
||||
#include "images/focused_calcul1_icon.h"
|
||||
#include "images/focused_calcul2_icon.h"
|
||||
#include "images/focused_calcul3_icon.h"
|
||||
|
||||
namespace Probability {
|
||||
|
||||
ImageTableView::ImageCell::ImageCell() :
|
||||
TableViewCell()
|
||||
{
|
||||
}
|
||||
|
||||
int ImageTableView::ImageCell::numberOfSubviews() const {
|
||||
return 1;
|
||||
}
|
||||
|
||||
View * ImageTableView::ImageCell::subviewAtIndex(int index) {
|
||||
assert(index == 0);
|
||||
return &m_iconView;
|
||||
}
|
||||
|
||||
void ImageTableView::ImageCell::layoutSubviews() {
|
||||
m_iconView.setFrame(bounds());
|
||||
}
|
||||
|
||||
void ImageTableView::ImageCell::reloadCell() {
|
||||
TableViewCell::reloadCell();
|
||||
if (isHighlighted()) {
|
||||
m_iconView.setImage(m_focusedIcon);
|
||||
} else {
|
||||
m_iconView.setImage(m_icon);
|
||||
}
|
||||
}
|
||||
|
||||
void ImageTableView::ImageCell::setImage(const Image * image, const Image * focusedImage) {
|
||||
m_icon = image;
|
||||
m_focusedIcon = focusedImage;
|
||||
}
|
||||
|
||||
ImageTableView::ImageTableView(Responder * parentResponder) :
|
||||
View(),
|
||||
Responder(parentResponder),
|
||||
m_selectableTableView(SelectableTableView(this, this, 0, 0, 0, 0, nullptr, false, false)),
|
||||
m_selectedCalcul(0),
|
||||
m_isSelected(false)
|
||||
{
|
||||
}
|
||||
|
||||
void ImageTableView::didBecomeFirstResponder() {
|
||||
m_isSelected = true;
|
||||
if (m_selectableTableView.selectedRow() == -1) {
|
||||
m_selectableTableView.selectCellAtLocation(0, 0);
|
||||
} else {
|
||||
m_selectableTableView.selectCellAtLocation(m_selectableTableView.selectedColumn(), m_selectableTableView.selectedRow());
|
||||
}
|
||||
app()->setFirstResponder(&m_selectableTableView);
|
||||
}
|
||||
|
||||
bool ImageTableView::handleEvent(Ion::Events::Event event) {
|
||||
if (event == Ion::Events::OK) {
|
||||
m_selectedCalcul = m_selectableTableView.selectedRow();
|
||||
select(false);
|
||||
m_selectableTableView.reloadData();
|
||||
app()->setFirstResponder(parentResponder());
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void ImageTableView::select(bool select) {
|
||||
if (!select) {
|
||||
m_selectableTableView.deselectTable();
|
||||
m_isSelected = select;
|
||||
} else {
|
||||
m_isSelected = select;
|
||||
m_selectableTableView.selectCellAtLocation(0, m_selectedCalcul);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int ImageTableView::numberOfRows() {
|
||||
if (m_isSelected) {
|
||||
return k_numberOfImages;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
TableViewCell * ImageTableView::reusableCell(int index) {
|
||||
assert(index >= 0);
|
||||
assert(index < k_numberOfImages);
|
||||
return &m_imageCells[index];
|
||||
}
|
||||
|
||||
int ImageTableView::reusableCellCount() {
|
||||
return k_numberOfImages;
|
||||
}
|
||||
|
||||
void ImageTableView::willDisplayCellForIndex(TableViewCell * cell, int index) {
|
||||
ImageCell * myCell = (ImageCell *)cell;
|
||||
if (!m_isSelected) {
|
||||
switch (m_selectedCalcul) {
|
||||
case 0:
|
||||
myCell->setImage(ImageStore::Calcul1Icon, ImageStore::FocusedCalcul1Icon);
|
||||
break;
|
||||
case 1:
|
||||
myCell->setImage(ImageStore::Calcul2Icon, ImageStore::FocusedCalcul2Icon);
|
||||
break;
|
||||
case 2:
|
||||
myCell->setImage(ImageStore::Calcul3Icon, ImageStore::FocusedCalcul3Icon);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (index) {
|
||||
case 0:
|
||||
myCell->setImage(ImageStore::Calcul1Icon, ImageStore::FocusedCalcul1Icon);
|
||||
break;
|
||||
case 1:
|
||||
myCell->setImage(ImageStore::Calcul2Icon, ImageStore::FocusedCalcul2Icon);
|
||||
break;
|
||||
case 2:
|
||||
myCell->setImage(ImageStore::Calcul3Icon, ImageStore::FocusedCalcul3Icon);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
myCell->reloadCell();
|
||||
}
|
||||
|
||||
KDCoordinate ImageTableView::cellHeight() {
|
||||
return k_imageHeight;
|
||||
}
|
||||
|
||||
int ImageTableView::numberOfSubviews() const {
|
||||
return 1;
|
||||
}
|
||||
|
||||
View * ImageTableView::subviewAtIndex(int index) {
|
||||
assert(index == 0);
|
||||
return &m_selectableTableView;
|
||||
}
|
||||
|
||||
void ImageTableView::layoutSubviews() {
|
||||
m_selectableTableView.setFrame(bounds());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user