00001 #include "main.h"
00002 #include "findtablewidget.h"
00003
00004 #include <QWidget>
00005 #include <QRegion>
00006 #include <QtGui/qlayout.h>
00007 #include <QtCore/qstring.h>
00008 #include <QtGui/qwidget.h>
00009 #include <QtCore/qvariant.h>
00010
00011
00012 findtablewidget::findtablewidget(QWidget *parent) : QWidget(parent)
00013 {
00014 setup_ui();
00015 setup_signals();
00016 assembly();
00017
00018 clear_all();
00019 }
00020
00021
00022 findtablewidget::~findtablewidget(void)
00023 {
00024
00025 }
00026
00027 void findtablewidget::setup_ui(void)
00028 {
00029 findtableview=new QTableWidget();
00030 findtableview->setObjectName("findtableview");
00031 findtableview->setMinimumSize(1,1);
00032 findtableview->horizontalHeader()->hide();
00033 findtableview->verticalHeader()->setDefaultSectionSize ( findtableview->verticalHeader()->minimumSectionSize () );
00034
00035
00036
00037 findtableview->setSelectionBehavior(QAbstractItemView::SelectRows);
00038
00039
00040 findtableview->setEditTriggers(QAbstractItemView::NoEditTriggers);
00041
00042
00043
00044 }
00045
00046 void findtablewidget::setup_signals(void)
00047 {
00048
00049 connect(findtableview, SIGNAL(cellActivated(int, int)),
00050 this, SLOT(select_cell(int, int)));
00051
00052 }
00053
00054 void findtablewidget::assembly(void)
00055 {
00056 QHBoxLayout *central_layout=new QHBoxLayout();
00057
00058 central_layout->addWidget(findtableview);
00059 central_layout->setContentsMargins(0,0,0,0);
00060
00061 this->setLayout(central_layout);
00062 }
00063
00064
00065 void findtablewidget::update_columns_width(void)
00066 {
00067 findtableview->horizontalHeader()->resizeSections(QHeaderView::ResizeToContents);
00068 findtableview->hide();
00069 findtableview->show();
00070 }
00071
00072
00073 void findtablewidget::clear_all(void)
00074 {
00075
00076 findtableview->setRowCount(0);
00077 findtableview->setColumnCount(0);
00078
00079
00080 findtableview->setColumnCount(2);
00081
00082
00083 QStringList list;
00084 list << tr("Title") << tr("About");
00085 findtableview->setHorizontalHeaderLabels(list);
00086
00087 findtableview->horizontalHeader()->resizeSections(QHeaderView::ResizeToContents);
00088 findtableview->horizontalHeader()->setStretchLastSection(true);
00089 }
00090
00091
00092 void findtablewidget::add_row(QString title, QString branchname, QString tags, QStringList path, int num_in_recordtable)
00093 {
00094 int i=findtableview->rowCount();
00095
00096 findtableview->insertRow(i);
00097
00098
00099 QTableWidgetItem *item_title=new QTableWidgetItem();
00100 item_title->setText(title);
00101
00102
00103
00104 item_title->setData(Qt::UserRole ,path);
00105 item_title->setData(Qt::UserRole+1,num_in_recordtable);
00106
00107
00108 QTableWidgetItem *item_info=new QTableWidgetItem();
00109 QString info;
00110 tags=tags.trimmed();
00111 if(tags.length()>0)
00112 item_info->setText(branchname+" ("+tags+")");
00113 else
00114 item_info->setText(branchname);
00115
00116 findtableview->setItem(i,0,item_title);
00117 findtableview->setItem(i,1,item_info);
00118
00119 qDebug() << "In findtablewidget add_row() row count " << findtableview->rowCount();
00120 }
00121
00122
00123 bool findtablewidget::eventFilter( QObject * o, QEvent * e )
00124 {
00125 if ( o == findtableview->viewport() && e->type() == QEvent::Paint )
00126 {
00127 QPaintEvent * pe = static_cast<QPaintEvent*>( e );
00128 qDebug() << "Rect to paint:" << pe->rect();
00129 qDebug() << "Visible rect:" << (findtableview->viewport()->visibleRegion()).boundingRect();
00130 qDebug() << " ";
00131 return false;
00132 }
00133 return false;
00134 }
00135
00136
00137 void findtablewidget::select_cell(int row, int column)
00138 {
00139 QTableWidgetItem *item=findtableview->item(row,0);
00140
00141
00142 QStringList path=item->data(Qt::UserRole).toStringList();
00143 int n=item->data(Qt::UserRole+1).toInt();
00144
00145 find_object<mainwindow>("mainwindow")->set_tree_position(path);
00146 find_object<mainwindow>("mainwindow")->set_recordtable_position(n);
00147 }
00148