mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
mobile/statistics: add a statistics page on mobile
This adds a reasonably flexibile mobile page that tries to do the right thing for both portrait and landscape mode. In order to get the most out of a mobile screen, it's implemented in a way that always gives it the full screen (it does so by emptying out the page stack and being the only page shown - brutal, but effective). This commit also contains a bunch of other random cleanups that didn't really justify being in separate commits. Parts of this was written by Berthold, hence the double SOB. Signed-off-by: Dirk Hohndel <dirk@hohndel.org> Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
d77f254328
commit
eb2b0f0a3e
5 changed files with 229 additions and 3 deletions
|
@ -7,13 +7,14 @@ StatsManager::StatsManager() : view(nullptr)
|
|||
state.var1Changed(2);
|
||||
state.var2Changed(3);
|
||||
state.binner2Changed(2);
|
||||
updateUi();
|
||||
}
|
||||
|
||||
StatsManager::~StatsManager()
|
||||
{
|
||||
}
|
||||
|
||||
void StatsManager::init(StatsView *v)
|
||||
void StatsManager::init(StatsView *v, QObject *o)
|
||||
{
|
||||
if (!v)
|
||||
fprintf(stderr, "StatsManager::init(): no StatsView - statistics will not work.\n");
|
||||
|
@ -26,3 +27,63 @@ void StatsManager::doit()
|
|||
return;
|
||||
view->plot(state);
|
||||
}
|
||||
|
||||
static void setVariableList(const StatsState::VariableList &list, QStringList &stringList)
|
||||
{
|
||||
stringList.clear();
|
||||
for (const StatsState::Variable &v: list.variables)
|
||||
stringList.push_back(v.name);
|
||||
}
|
||||
|
||||
static void setBinnerList(const StatsState::BinnerList &list, QStringList &stringList)
|
||||
{
|
||||
stringList.clear();
|
||||
for (const QString &v: list.binners)
|
||||
stringList.push_back(v);
|
||||
}
|
||||
|
||||
void StatsManager::updateUi()
|
||||
{
|
||||
uiState = state.getUIState();
|
||||
setVariableList(uiState.var1, var1List);
|
||||
setBinnerList(uiState.binners1, binner1List);
|
||||
setVariableList(uiState.var2, var2List);
|
||||
setBinnerList(uiState.binners2, binner2List);
|
||||
var1ListChanged();
|
||||
binner1ListChanged();
|
||||
var2ListChanged();
|
||||
binner2ListChanged();
|
||||
|
||||
if (view)
|
||||
view->plot(state);
|
||||
}
|
||||
|
||||
void StatsManager::var1Changed(int idx)
|
||||
{
|
||||
if (uiState.var1.variables.empty())
|
||||
return;
|
||||
idx = std::clamp(idx, 0, (int)uiState.var1.variables.size());
|
||||
state.var1Changed(uiState.var1.variables[idx].id);
|
||||
updateUi();
|
||||
}
|
||||
|
||||
void StatsManager::var1BinnerChanged(int idx)
|
||||
{
|
||||
state.binner1Changed(idx);
|
||||
updateUi();
|
||||
}
|
||||
|
||||
void StatsManager::var2Changed(int idx)
|
||||
{
|
||||
if (uiState.var2.variables.empty())
|
||||
return;
|
||||
idx = std::clamp(idx, 0, (int)uiState.var2.variables.size());
|
||||
state.var2Changed(uiState.var2.variables[idx].id);
|
||||
updateUi();
|
||||
}
|
||||
|
||||
void StatsManager::var2BinnerChanged(int idx)
|
||||
{
|
||||
state.binner2Changed(idx);
|
||||
updateUi();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue