Timeout bar could not be switched off, is now disabled for CHint
TODO: find a better solution to vizualize timeout for CHint.
It looks not so good on the top of the hintbox, especially
with round corners or frameless window.
This allows to execute one ore more methods inside the ShowHintS() method.
This should simplify calls of CHint messages with or without hide delays
In the simplest or most cases, only one code line is necessary for this,
see examples inside test_menu.cpp or here:
Single methode:
old:
CHintBox *hintBox new CHintBox(LOCALE_MESSAGEBOX_INFO, g_Locale->getText(LOCALE_SERVICEMENU_GETPLUGINS_HINT));
hintBox->paint();
g_Plugins->loadPlugins();
sleep(1);
hintBox->.hide();
delete hintbox;
new:
ShowHintS(LOCALE_SERVICEMENU_GETPLUGINS_HINT, 1, true, sigc::mem_fun(g_Plugins, &CPlugins::loadPlugins));
Multiple methods:
old:
CHint *hint = new CHint("Restart Tuner");
hint->paint();
g_Zapit->setStandby(true);
sleep(2);
g_Zapit->setStandby(false);
sleep(2);
g_Zapit->Rezap();
delete hint;
new:
std::vector <hint_message_data_t> hints;
hints.push_back({sigc::bind(sigc::mem_fun(g_Zapit, &CZapitClient::setStandby), true),"Stopping tuner...", NONEXISTANT_LOCALE, 2, true});
hints.push_back({sigc::bind(sigc::mem_fun(g_Zapit, &CZapitClient::setStandby), false), "Start tuner...", NONEXISTANT_LOCALE, 2, true});
hints.push_back({sigc::hide_return(sigc::mem_fun(g_Zapit, &CZapitClient::Rezap)), "Rezap...", NONEXISTANT_LOCALE, 2, true});
ShowHintS(hints);
slots can be used with sigc::bind, sigc::hide_return (or what ever) too.
sample slot:
sigc::slot<void> sl = sigc::bind(sigc::mem_fun(this, &ClassName::method), parameter);
Note: Usage of namespace sigc are doing to simplify the lines,
but this is a matter of discretion.
TODO: - timeoutbar should visualize a kind of busy mode.
- implemetations
When no scrollbar is present, just pass through up/down keys instead
of only canceling the hintbox. This restores the behaviour before
commit dde298b1b7.
Prominent examle is the "channel not available" popup which prevented
further channel switching until canceled.
RC_up and RC_down are used for text scroll, but most message texts
are small and no scroll mode is required. In case of large texts
it should falling back to scroll mode.
Passed timeout for messeages an popup's fired by yWeb API was not really
ok.
For popups now we have a setting with default value of 6 seconds timeout
Popups fired with ShowHint() use this as default. Value of 0 and -1
are ignored.
Messages fired with ShowMsg() should be fixed and interpret
value 0 or -1 as no timeout and will remain on the screen.
Explicit call of disableTimeOutBar() after exec() is required to ensure
we have no timebar opened objects. I'm not shure, but otherwise crashs
could be possible.
showTimeOutBar() is required for OnTimer(). It doesn't need any
parameter.
Timeout bar is not embedded like other cc items in this form, therefor is
is better to kill this object explicit from screen otherwise it is possible
we hab artefacts after closing of hintbox window.