Exemple #1
0
    PagingWidget::PagingWidget(QWidget *parent)
        :BaseClass(parent)
    {
        _skipEdit = new QLineEdit;
        _batchSizeEdit = new QLineEdit;
        _skipEdit->setAlignment(Qt::AlignHCenter);
        _skipEdit->setToolTip("Skip");
        _batchSizeEdit->setAlignment(Qt::AlignHCenter);
        _batchSizeEdit->setToolTip("Batch Size (number of documents shown at once)");

        QFontMetrics metrics = _skipEdit->fontMetrics();
        int width = metrics.boundingRect("000000").width();
        QRegExp rx("\\d+");
        _skipEdit->setValidator(new QRegExpValidator(rx, this));
        _batchSizeEdit->setValidator(new QRegExpValidator(rx, this));
        _skipEdit->setFixedWidth(width);
        _batchSizeEdit->setFixedWidth(width);

        QPushButton *leftButton = createButtonWithIcon(GuiRegistry::instance().leftIcon());
        QPushButton *rightButton = createButtonWithIcon(GuiRegistry::instance().rightIcon());
        VERIFY(connect(leftButton, SIGNAL(clicked()), this, SLOT(leftButton_clicked())));
        VERIFY(connect(rightButton, SIGNAL(clicked()), this, SLOT(rightButton_clicked())));

        VERIFY(connect(_batchSizeEdit, SIGNAL(returnPressed()), this, SLOT(refresh())));
        VERIFY(connect(_skipEdit, SIGNAL(returnPressed()), this, SLOT(refresh())));

        QHBoxLayout *layout = new QHBoxLayout();
        layout->setSpacing(0);
        layout->setContentsMargins(0, 0, 0, 0);

        layout->addWidget(leftButton);
        layout->addSpacing(0);
        layout->addWidget(_skipEdit);
        layout->addSpacing(1);
        layout->addWidget(_batchSizeEdit);
        layout->addSpacing(0);
        layout->addWidget(rightButton);
        setLayout(layout);
    }
ViewKeysDialog::ViewKeysDialog(const QString& title, core::IDatabaseSPtr db, QWidget* parent)
  : QDialog(parent), cursorStack_(), curPos_(0), db_(db) {
  CHECK(db_);
  core::IServerSPtr serv = db_->server();
  VERIFY(connect(serv.get(), &core::IServer::startedLoadDataBaseContent,
                 this, &ViewKeysDialog::startLoadDatabaseContent));
  VERIFY(connect(serv.get(), &core::IServer::finishedLoadDatabaseContent,
                 this, &ViewKeysDialog::finishLoadDatabaseContent));

  setWindowTitle(title);

  // main layout
  QVBoxLayout* mainlayout = new QVBoxLayout;

  QHBoxLayout* searchLayout = new QHBoxLayout;
  searchBox_ = new QLineEdit;
  searchBox_->setText("*");
  VERIFY(connect(searchBox_, &QLineEdit::textChanged, this, &ViewKeysDialog::searchLineChanged));
  searchLayout->addWidget(searchBox_);

  countSpinEdit_ = new QSpinBox;
  countSpinEdit_->setRange(min_key_on_page, max_key_on_page);
  countSpinEdit_->setSingleStep(step_keys_on_page);
  countSpinEdit_->setValue(defaults_key);

  keyCountLabel_ = new QLabel;

  searchLayout->addWidget(keyCountLabel_);
  searchLayout->addWidget(countSpinEdit_);

  searchButton_ = new QPushButton;
  VERIFY(connect(searchButton_, &QPushButton::clicked,
                 this, &ViewKeysDialog::rightPageClicked));
  searchLayout->addWidget(searchButton_);

  keysModel_ = new KeysTableModel(this);
  VERIFY(connect(keysModel_, &KeysTableModel::changedValue,
                 this, &ViewKeysDialog::executeCommand, Qt::DirectConnection));

  VERIFY(connect(serv.get(), &core::IServer::startedExecuteCommand,
                 this, &ViewKeysDialog::startExecuteCommand, Qt::DirectConnection));
  VERIFY(connect(serv.get(), &core::IServer::finishedExecuteCommand,
                 this, &ViewKeysDialog::finishExecuteCommand, Qt::DirectConnection));
  keysTable_ = new FastoTableView;
  keysTable_->setModel(keysModel_);
  keysTable_->setItemDelegateForColumn(KeyTableItem::kTTL, new NumericDelegate(this));

  QDialogButtonBox* buttonBox = new QDialogButtonBox;
  buttonBox->setOrientation(Qt::Horizontal);
  buttonBox->setStandardButtons(QDialogButtonBox::Cancel | QDialogButtonBox::Ok);
  VERIFY(connect(buttonBox, &QDialogButtonBox::accepted, this, &ViewKeysDialog::accept));
  VERIFY(connect(buttonBox, &QDialogButtonBox::rejected, this, &ViewKeysDialog::reject));
  mainlayout->addLayout(searchLayout);
  mainlayout->addWidget(keysTable_);

  leftButtonList_ = createButtonWithIcon(GuiFactory::instance().leftIcon());
  rightButtonList_ = createButtonWithIcon(GuiFactory::instance().rightIcon());
  VERIFY(connect(leftButtonList_, &QPushButton::clicked, this, &ViewKeysDialog::leftPageClicked));
  VERIFY(connect(rightButtonList_, &QPushButton::clicked, this, &ViewKeysDialog::rightPageClicked));
  QHBoxLayout* pagingLayout = new QHBoxLayout;
  pagingLayout->addWidget(leftButtonList_);
  core::IDataBaseInfoSPtr inf = db_->info();
  size_t keysCount = inf->dbKeysCount();
  currentKey_ = new QSpinBox;
  currentKey_->setEnabled(false);
  currentKey_->setValue(0);
  currentKey_->setMinimum(0);
  currentKey_->setMaximum(keysCount);
  countKey_ = new QSpinBox;
  countKey_->setEnabled(false);
  countKey_->setValue(keysCount);
  pagingLayout->addWidget(new QSplitter(Qt::Horizontal));
  pagingLayout->addWidget(currentKey_);
  pagingLayout->addWidget(countKey_);
  pagingLayout->addWidget(new QSplitter(Qt::Horizontal));
  pagingLayout->addWidget(rightButtonList_);

  mainlayout->addLayout(pagingLayout);
  mainlayout->addWidget(buttonBox);

  setMinimumSize(QSize(min_width, min_height));
  setLayout(mainlayout);

  updateControls();
  retranslateUi();
}