void query_listview::context_menu(const QPoint& pos) { query_lvitem* item = dynamic_cast<query_lvitem*>(itemAt(pos)); if (item && item != currentItem()) setCurrentItem(item); if (item && item->m_type==query_lvitem::user_defined) { // contextual menu QMenu qmenu(this); qmenu.setTitle(item->text(0)); QAction* action_run = qmenu.addAction(tr("Run query")); QAction* action_edit = qmenu.addAction(tr("Edit")); QAction* action_remove = qmenu.addAction(tr("Remove")); QAction* selected=qmenu.exec(QCursor::pos()); // user action if (selected==action_remove) { // remove this user query int r=QMessageBox::warning(this, tr("Please confirm"), tr("Delete user query?"), tr("OK"), tr("Cancel"), QString::null); if (r==0) { if (user_queries_repository::remove_query(item->text(0))) { delete item; } } } else if (selected==action_edit) { // edit the user query extern void save_filter_query(msgs_filter*, int, const QString); // FIXME msgs_filter f; f.set_user_query(item->m_sql); save_filter_query(&f, 1, item->text(0)); reload_user_queries(); } else if (selected==action_run) { // run the query msgs_filter f; f.m_sql_stmt = item->m_sql; emit run_selection_filter(f); } return; } }
qgrid() { grid_asterisks(); qmenu(grid_105 /* "Grid Snap Control" */, grid_options, Array_els(grid_options), grid_feelers); }
void mail_listview::popup_ctxt_menu(const QPoint& pos) { QAction* action_thread=NULL; QAction* action_same_from=NULL; QAction* action_more_results=NULL; QModelIndex index = indexAt(pos); if (!index.isValid()) return; // get to the first column index=index.sibling(index.row(), 0); QStandardItem* item = model()->itemFromIndex(index); QVariant v=item->data(mail_item_model::mail_msg_role); mail_msg* msg = v.value<mail_msg*>(); if (!msg) { DBG_PRINTF(1, "no msg found"); return; // can happen? } QMenu qmenu(this); QString s; /* when a new resultset gets displayed, allow for preselecting a message. Used by action_thread to set focus/selection on the message that originates the action in the previous page. */ mail_id_t preselected_id = 0; // Same thread if (msg->thread_id()) { action_thread = qmenu.addAction(tr("Show thread on new page")); } // More results action_more_results = qmenu.addAction(tr("More results")); if (!msg->From().isEmpty()) { s=tr("Last messages from '%1'").arg(msg->From()); action_same_from = qmenu.addAction(s); } /* For each tag currently assigned to the message, a menu entry is added to select 'All messages tagged as ...this_tag' */ std::list<uint>& tags = msg->get_tags(); std::list<uint>::const_iterator itt; for (itt=tags.begin(); itt!=tags.end(); ++itt) { s=tr("All messages tagged as '%1'").arg(tags_repository::hierarchy(*itt)); QAction* a = qmenu.addAction(s); if (a) a->setData(QVariant(*itt)); // *itt=tag_id } msgs_filter filter; bool action_opens_page = false; QAction* action=qmenu.exec(mapToGlobal(pos)); if (action==NULL) { return; } else if (action == action_thread) { preselected_id = msg->get_id(); if (!(filter.m_thread_id=msg->threadId())) { filter.m_sql_stmt = QString("%1").arg(msg->get_id()); // will produce: mail_id IN (%1) } action_opens_page =true; } else if (action == action_more_results) { // FIXME: postprocess should be done here if (m_msg_window) { m_msg_window->fetch_more(); m_msg_window->set_title(); } return; } else if (action == action_same_from) { filter.m_sAddress=msg->From(); filter.m_nAddrType=msgs_filter::rFrom; filter.set_date_order(-1); // latest results first action_opens_page = true; } else { bool variant_data_ok=false; uint selected_tag = action->data().toUInt(&variant_data_ok); if (variant_data_ok) { if (m_msg_window) { m_msg_window->sel_tag(selected_tag); m_msg_window->clear_quick_query_selection(); } return; } else { DBG_PRINTF(1, "Error: couldn't extract tag_id from action.data()"); return; } } if (action_opens_page && m_msg_window) { m_msg_window->add_msgs_page(&filter,true); m_msg_window->clear_quick_query_selection(); if (preselected_id > 0) { m_msg_window->current_list()->select_message(preselected_id, true); } } }
int main(int argc, char **argv){ List list = LLCreate(); Stack stack = SCreate(); Queue queue = QCreate(); User *usr; setupUsers(); MENU_CHOICE m_choice = MAIN_MENU; int choice, count; menu(); choice = getChoice(); while(choice){ switch(m_choice){ case MAIN_MENU: switch(choice){ case 1: m_choice = LL_MENU; llmenu(); break; case 2: m_choice = QUEUE_MENU; qmenu(); break; case 3: m_choice = STACK_MENU; smenu(); break; case 4: showUsers(); menu(); break; case 0: exit(0); break; default: m_choice = MAIN_MENU; menu(); } break; case LL_MENU: switch(choice){ case 1: printf("\n%s\n", "adding head, choose a user"); usr = chooseUser(); printf("%s %s\n", "You chose ", usr -> name); LLAddHead(usr, list); llmenu(); break; case 2: printf("\n%s\n", "adding tail, choose a user"); usr = chooseUser(); printf("%s %s\n", "You chose", usr -> name); LLAddTail(usr, list); llmenu(); break; case 3: printf("\n%s\n", "removing head"); LLRemoveHead(list); llmenu(); break; case 4: printf("\n%s\n", "removing tail"); LLRemoveTail(list); llmenu(); break; case 5: print(list); llmenu(); break; case 6: m_choice = MAIN_MENU; menu(); break; case 0: exit(0); break; default: m_choice = LL_MENU; } break; case QUEUE_MENU: switch(choice){ case 1: printf("\n%s\n", "enqueueing, choose a user"); usr = chooseUser(); printf("%s %s\n", "You chose ", usr -> name); Qenqueue(usr, queue); qmenu(); break; case 2: printf("\n%s\n", "dequeueing"); Qdequeue(queue); qmenu(); break; case 3: print(queue); qmenu(); break; case 4: m_choice = MAIN_MENU; menu(); break; case 0: exit(0); break; default: m_choice = QUEUE_MENU; } break; case STACK_MENU: switch(choice){ case 1: printf("%s\n", "push"); smenu(); break; case 2: printf("%s\n", "pop"); smenu(); break; case 3: printf("%s\n", "top"); smenu(); break; case 4: printf("%s\n", "print"); smenu(); break; case 5: m_choice = MAIN_MENU; menu(); break; case 0: exit(0); break; default: m_choice = STACK_MENU; } break; } choice = getChoice(); } return 0; }