uiPrintAll.cc 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #include "uiPrintAll.hh"
  2. UiPrintAll::UiPrintAll(Fila* fila): box0(Gtk::Orientation::VERTICAL), button("Back"){
  3. this->fila = fila;
  4. set_title("Print all");
  5. set_child(box0);
  6. box0.set_margin(5);
  7. if(this->fila->estaVazia()){
  8. box0.append(m_label);
  9. m_label.set_text("This queue is empty");
  10. } else {
  11. set_default_size(250, 200);
  12. scrolledwindow.set_child(columnview);
  13. scrolledwindow.set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::AUTOMATIC);
  14. scrolledwindow.set_expand();
  15. box0.append(scrolledwindow);
  16. m_ListStore = Gio::ListStore<ModelColumns>::create();
  17. //m_ListStore->append(ModelColumns::create("atividade.odt", 1));
  18. //m_ListStore->append(ModelColumns::create("planilha.ods", 3));
  19. while(!fila->estaVazia()){
  20. Documento* tmp = fila->imprimir();
  21. m_ListStore->append(ModelColumns::create(tmp->retornaNome(), tmp->retornaPrioridade()));
  22. delete tmp;
  23. }
  24. auto selection_model = Gtk::SingleSelection::create(m_ListStore);
  25. selection_model->set_autoselect(false);
  26. selection_model->set_can_unselect(true);
  27. columnview.set_model(selection_model);
  28. columnview.add_css_class("data-table");
  29. columnview.set_reorderable(true);
  30. // Name column
  31. auto factory = Gtk::SignalListItemFactory::create();
  32. factory->signal_setup().connect(sigc::bind(sigc::mem_fun(*this,
  33. &UiPrintAll::label), Gtk::Align::START));
  34. factory->signal_bind().connect(
  35. sigc::mem_fun(*this, &UiPrintAll::name));
  36. auto column = Gtk::ColumnViewColumn::create("Name", factory);
  37. columnview.append_column(column);
  38. // Number column
  39. factory = Gtk::SignalListItemFactory::create();
  40. factory->signal_setup().connect(sigc::bind(sigc::mem_fun(*this,
  41. &UiPrintAll::label), Gtk::Align::END));
  42. factory->signal_bind().connect(
  43. sigc::mem_fun(*this, &UiPrintAll::priority));
  44. column = Gtk::ColumnViewColumn::create("Priority", factory);
  45. columnview.append_column(column);
  46. }
  47. box0.append(box1);
  48. box1.append(button);
  49. button.set_hexpand(true);
  50. button.set_halign(Gtk::Align::END);
  51. button.signal_clicked().connect(sigc::mem_fun(*this, &Window::hide));
  52. }
  53. void UiPrintAll::label(const Glib::RefPtr<Gtk::ListItem>& list_item, Gtk::Align halign){
  54. list_item->set_child(*Gtk::make_managed<Gtk::Label>("", halign));
  55. }
  56. void UiPrintAll::name(const Glib::RefPtr<Gtk::ListItem>& list_item){
  57. auto col = std::dynamic_pointer_cast<ModelColumns>(list_item->get_item());
  58. if (!col)
  59. return;
  60. auto label = dynamic_cast<Gtk::Label*>(list_item->get_child());
  61. if (!label)
  62. return;
  63. label->set_text(col->m_col_name);
  64. }
  65. void UiPrintAll::priority(const Glib::RefPtr<Gtk::ListItem>& list_item){
  66. auto col = std::dynamic_pointer_cast<ModelColumns>(list_item->get_item());
  67. if (!col)
  68. return;
  69. auto label = dynamic_cast<Gtk::Label*>(list_item->get_child());
  70. if (!label)
  71. return;
  72. // 10 digits, using leading zeroes.
  73. label->set_text(std::to_string(col->m_col_priority));
  74. }
  75. UiPrintAll::~UiPrintAll(){
  76. delete this->fila;
  77. }