Esempio n. 1
0
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;
  }
}
Esempio n. 2
0
qgrid()
{
grid_asterisks();
qmenu(grid_105 /* "Grid Snap Control" */, 
	grid_options, Array_els(grid_options), grid_feelers);
}
Esempio n. 3
0
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);
    }
  }
}
Esempio n. 4
0
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;   
}