diff options
Diffstat (limited to 'client/historyframe.cc')
-rw-r--r-- | client/historyframe.cc | 42 |
1 files changed, 26 insertions, 16 deletions
diff --git a/client/historyframe.cc b/client/historyframe.cc index ad9154b..8c67c66 100644 --- a/client/historyframe.cc +++ b/client/historyframe.cc @@ -29,40 +29,50 @@ #include <QVBoxLayout> #include <QResizeEvent> +#include <QListWidgetItem> HistoryFrame::HistoryFrame() { - QVBoxLayout *layout = new QVBoxLayout(); - setLayout(layout); } HistoryFrame::~HistoryFrame() { } +void HistoryFrame::clearHistory() +{ + while(!widgets.empty()) delete widgets.takeLast(); +} + void HistoryFrame::addHistoryItem(HistoryWidget *item) { - widgets.append(item); + item->setParent(this); + + if(widgets.size() == MAX_HISTORY) delete widgets.takeLast(); + widgets.prepend(item); + + doLayoutHistoryWidgets(); } void HistoryFrame::resizeEvent(QResizeEvent *event) { - int w = event->size().width(); - int h = event->size().height(); - - int widget_height = h / 10; + doLayoutHistoryWidgets(); +} - int num_widgets = h / widget_height; - int top = num_widgets<widgets.size()?num_widgets:widgets.size(); +void HistoryFrame::doLayoutHistoryWidgets() +{ + int w = width(); + int h = (int)((double)w / (720.0 / 576.0)); - while(layout()->count()) { - layout()->removeItem(layout()->itemAt(0)); // Remove all widgets - } + int num_widgets = height() / h; + int hspace = widgets.size();// - clear_button->height(); + int top = num_widgets<hspace?num_widgets:hspace; - for(int i = 0; i < top; i++) { + for(int i = 0; i < widgets.size(); i++) { HistoryWidget *history = widgets.at(i); - history->resize(w, widget_height); - layout()->addWidget(history); + history->resize(w, h); + history->move(0, i * h); + if(i < top) history->show(); + else history->hide(); } - } |