/** add all configured teas to both menus */ void TopLevel::rebuildTeaMenus() { // first remove all current tea-entries from menus; these can be identified by their positive id while (menu->idAt(0) >= 0) menu->removeItemAt(0); // remove from right-click menu while (start_menu->idAt(0) >= 0) start_menu->removeItemAt(0); // remove from left-click menu // now add new tea-entries to top of menus int id = 0; int index = 0; for (QValueVector<tea_struct>::ConstIterator it=teas.begin(); it != teas.end(); ++it) { // construct string with name and steeping time QString str = it->name; str.append(" ("); str.append(int2time(it->time)); str.append(")"); start_menu->insertItem(str, id, index); // add to left-click menu menu->insertItem(str, id++, index++); // add to right-click menu } // now select 'current' tea if (!listempty) menu->setItemChecked(current_selected, true); // all others aren't checked, // because we just added them }
/** Check timer and initiate appropriate action if finished */ void TopLevel::timerEvent(QTimerEvent *) { if (running) { // a tea is steeping; must count down seconds--; if (seconds <= 0) { // timer has run out; notify user running = false; ready = true; enable_menuEntries(); if (shooting) { // re-check current tea shooting = false; if (!listempty) menu->setItemChecked(current_selected, true); } QString teaMessage = i18n("The %1 is now ready!").arg(current_name); // invoke action if (useNotify) { KNotifyClient::event(winId(), "tea", teaMessage); } if (useAction && (!action.isEmpty())) { QString cmd = action; cmd.replace("%t", current_name); system(QFile::encodeName(cmd)); } if (usePopup) KPassivePopup::message(i18n("The Tea Cooker"), teaMessage, teaAnim1Pixmap, this, "popup", 0); // FIXME: does auto-deletion work without timeout? setToolTip(teaMessage); repaint(); } else { // timer not yet run out; just update tray-icon (if configured)... if (useTrayVis) { int pDone = (360 * (startSeconds - seconds)) / startSeconds; if (pDone - percentDone > 8) { // update icon not every second, but only if somewhat noticable percentDone = pDone; repaint(); } } // ...and Tooltip QString min = int2time(seconds); setToolTip(i18n("%1 left for %2").arg(min).arg(current_name)); } } else { // no tea is steeping; just animate icon if (ready) { firstFrame = !firstFrame; repaint(); } } }
void TeaListItem::setTime(int t) { QListViewItem::setText(1, int2time(t)); tim = t; }