MyListTab::MyListTab(QWidget *parent) :
AbstractTabBase(parent),
- ui(new Ui::MyListTab)
+ ui(new Ui::MyListTab),
+ selectedRow(-1)
{
ui->setupUi(this);
m_label = tr("MyList");
<< tr("Regexp"));
connect(ui->myListView, SIGNAL(renameTest(int)), mainWindow(), SLOT(openRenameScriptEditor(int)));
+ connect(ui->myListView->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(currentSelectionChanged(QModelIndex,QModelIndex)));
+ connect(ui->filterInput, SIGNAL(textChanged(QString)), this, SLOT(currentSelectionChanged()));
myListFilterModel->configChanged();
+ selectedRow = -1;
+}
+void MyListTab::activate()
+{
ui->filterInput->setFocus();
}
void MyListTab::on_refreshButton_clicked()
{
myListModel()->reload();
+ selectedRow = -1;
}
void MyListTab::on_myListView_openFileRequested(const QModelIndex &index)
on_filterInput_textChanged(ui->filterInput->text());
}
+void MyListTab::on_filterInput_keyUpPressed()
+{
+ selectedRow = qMax(-1, selectedRow - 1);
+ updateSelection();
+
+}
+
+void MyListTab::on_filterInput_keyDownPressed()
+{
+ int newSelectedRow = qMin(myListModel()->rowCount() - 1, selectedRow + 1);
+
+ if (selectedRow == newSelectedRow)
+ return;
+
+ selectedRow = newSelectedRow;
+ updateSelection();
+}
+
+void MyListTab::on_filterInput_returnPressed()
+{
+ if (selectedRow < 0)
+ return;
+
+ const QModelIndex idx = myListFilterModel->index(selectedRow, 0);
+ on_myListView_openFileRequested(idx);
+}
+
+void MyListTab::currentSelectionChanged(const QModelIndex ¤t, const QModelIndex &)
+{
+ selectedRow = current.row();
+}
+
+void MyListTab::currentSelectionChanged()
+{
+ selectedRow = -1;
+}
+
MyListModel *MyListTab::myListModel() const
{
return m_mainWindow->myListModel();
}
+
+void MyListTab::updateSelection()
+{
+ if (selectedRow < 0)
+ {
+ ui->myListView->selectionModel()->clear();
+ return;
+ }
+
+ const QModelIndex idx = myListFilterModel->index(selectedRow, 0);
+ ui->myListView->selectionModel()->
+ setCurrentIndex(idx, QItemSelectionModel::ClearAndSelect
+ | QItemSelectionModel::Rows);
+}
static QString name();
void init();
+ void activate();
void loadSettings(QSettings *settings);
void saveSettings(QSettings *settings);
void on_filterInput_textChanged(const QString &filter);
void on_filterType_currentIndexChanged(int);
+ void on_filterInput_keyUpPressed();
+ void on_filterInput_keyDownPressed();
+ void on_filterInput_returnPressed();
+
+ void currentSelectionChanged(const QModelIndex ¤t, const QModelIndex &previous);
+ void currentSelectionChanged();
+
private:
LocalMyList::MyListModel *myListModel() const;
+ void updateSelection();
+
MyListFilterModel *myListFilterModel;
+ int selectedRow;
Ui::MyListTab *ui;
};
<item>
<layout class="QHBoxLayout" name="filterLayout">
<item>
- <widget class="QLineEdit" name="filterInput"/>
+ <widget class="FilterLineEdit" name="filterInput"/>
</item>
<item>
<widget class="QComboBox" name="filterType"/>
<extends>QTreeView</extends>
<header>mylistview.h</header>
</customwidget>
+ <customwidget>
+ <class>FilterLineEdit</class>
+ <extends>QLineEdit</extends>
+ <header>filterlineedit.h</header>
+ </customwidget>
</customwidgets>
<resources/>
<connections/>