mirror of
https://github.com/xiaoyifang/goldendict-ng.git
synced 2024-11-23 20:14:05 +00:00
Quick search/filter for dictionary names in settings (Dictionaries and Groups tabs).
This commit is contained in:
parent
ebf28c6343
commit
c8c6a515d6
|
@ -10,9 +10,10 @@ ExtLineEdit::ExtLineEdit(QWidget *parent) :
|
|||
{
|
||||
|
||||
for (int i = 0; i < 2; ++i) {
|
||||
iconButtons[i] = new IconButton(parent);
|
||||
iconButtons[i] = new IconButton(this);
|
||||
iconButtons[i]->installEventFilter(this);
|
||||
iconButtons[i]->hide();
|
||||
iconButtons[i]->setAutoHide(false);
|
||||
iconEnabled[i] = false;
|
||||
}
|
||||
|
||||
|
@ -21,6 +22,8 @@ ExtLineEdit::ExtLineEdit(QWidget *parent) :
|
|||
|
||||
connect(iconButtons[Left], SIGNAL(clicked()), this, SLOT(iconClicked()));
|
||||
connect(iconButtons[Right], SIGNAL(clicked()), this, SLOT(iconClicked()));
|
||||
|
||||
connect(this, SIGNAL( textChanged( QString ) ), this, SLOT( updateButtons( QString ) ) );
|
||||
}
|
||||
|
||||
ExtLineEdit::~ExtLineEdit()
|
||||
|
@ -39,6 +42,33 @@ bool ExtLineEdit::isButtonVisible(Side side) const
|
|||
return iconEnabled[side];
|
||||
}
|
||||
|
||||
void ExtLineEdit::setButtonAutoHide(Side side, bool autohide)
|
||||
{
|
||||
iconButtons[side]->setAutoHide(autohide);
|
||||
|
||||
if (autohide)
|
||||
{
|
||||
iconButtons[side]->setOpacity( text().isEmpty() ? 0.0 : 1.0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
iconButtons[side]->setOpacity( 1.0 );
|
||||
}
|
||||
}
|
||||
|
||||
void ExtLineEdit::updateButtons(QString text)
|
||||
{
|
||||
if ( oldText.isEmpty() || text.isEmpty() ) {
|
||||
for (int i = 0; i < 2; ++i) {
|
||||
if ( iconButtons[i]->isAutoHide() )
|
||||
{
|
||||
iconButtons[i]->animate( !text.isEmpty() );
|
||||
}
|
||||
}
|
||||
oldText = text;
|
||||
}
|
||||
}
|
||||
|
||||
void ExtLineEdit::iconClicked()
|
||||
{
|
||||
IconButton * button = qobject_cast<IconButton *>( sender() );
|
||||
|
@ -65,8 +95,8 @@ void ExtLineEdit::updateMargins()
|
|||
int leftMargin = iconButtons[realLeft]->pixmap().width() + 8;
|
||||
int rightMargin = iconButtons[realRight]->pixmap().width() + 8;
|
||||
|
||||
QMargins margins((iconEnabled[realLeft] ? leftMargin : 0), 0,
|
||||
(iconEnabled[realRight] ? rightMargin : 0), 0);
|
||||
QMargins margins((iconEnabled[realLeft] ? leftMargin : 0), 1,
|
||||
(iconEnabled[realRight] ? rightMargin : 0), 1);
|
||||
|
||||
setTextMargins(margins);
|
||||
}
|
||||
|
@ -128,11 +158,29 @@ IconButton::IconButton(QWidget *parent)
|
|||
void IconButton::paintEvent(QPaintEvent *)
|
||||
{
|
||||
QPainter painter(this);
|
||||
QIcon::Mode state = QIcon::Disabled;
|
||||
if (isEnabled())
|
||||
state = isDown() ? QIcon::Selected : QIcon::Normal;
|
||||
|
||||
QRect pixmapRect = QRect(0, 0, m_pixmap.width(), m_pixmap.height());
|
||||
pixmapRect.moveCenter(rect().center());
|
||||
|
||||
if (m_autohide)
|
||||
{
|
||||
painter.setOpacity(m_opacity);
|
||||
}
|
||||
|
||||
painter.drawPixmap(pixmapRect, m_pixmap);
|
||||
}
|
||||
|
||||
void IconButton::animate(bool visible)
|
||||
{
|
||||
QPropertyAnimation *animation = new QPropertyAnimation(this, "opacity");
|
||||
animation->setDuration(250);
|
||||
if (visible)
|
||||
{
|
||||
animation->setEndValue(1.0);
|
||||
}
|
||||
else
|
||||
{
|
||||
animation->setEndValue(0.0);
|
||||
}
|
||||
animation->start(QAbstractAnimation::DeleteWhenStopped);
|
||||
}
|
||||
|
|
|
@ -6,20 +6,32 @@
|
|||
|
||||
#include <QLineEdit>
|
||||
#include <QAbstractButton>
|
||||
#include <QPropertyAnimation>
|
||||
|
||||
class IconButton: public QAbstractButton
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap)
|
||||
Q_PROPERTY(float opacity READ opacity WRITE setOpacity)
|
||||
|
||||
public:
|
||||
explicit IconButton(QWidget * parent = 0);
|
||||
void paintEvent(QPaintEvent * event);
|
||||
void animate(bool visible);
|
||||
|
||||
void setPixmap(const QPixmap & pixmap) { m_pixmap = pixmap; update(); }
|
||||
QPixmap pixmap() const { return m_pixmap; }
|
||||
|
||||
void setAutoHide(bool autohide) { m_autohide = autohide; update(); }
|
||||
bool isAutoHide() const { return m_autohide; }
|
||||
|
||||
float opacity() { return m_opacity; }
|
||||
void setOpacity(float opacity) { m_opacity = opacity; update(); }
|
||||
|
||||
private:
|
||||
QPixmap m_pixmap;
|
||||
bool m_autohide;
|
||||
float m_opacity;
|
||||
};
|
||||
|
||||
class ExtLineEdit : public QLineEdit
|
||||
|
@ -42,12 +54,15 @@ public:
|
|||
void setButtonToolTip(Side side, const QString &);
|
||||
void setButtonFocusPolicy(Side side, Qt::FocusPolicy policy);
|
||||
|
||||
void setButtonAutoHide(Side side, bool autohide);
|
||||
|
||||
signals:
|
||||
void leftButtonClicked();
|
||||
void rightButtonClicked();
|
||||
|
||||
private slots:
|
||||
void iconClicked();
|
||||
void updateButtons(QString text);
|
||||
|
||||
protected:
|
||||
virtual void resizeEvent( QResizeEvent * e );
|
||||
|
@ -58,6 +73,7 @@ private:
|
|||
QPixmap pixmaps[2];
|
||||
IconButton * iconButtons[2];
|
||||
bool iconEnabled[2];
|
||||
QString oldText;
|
||||
};
|
||||
|
||||
#endif // EXTLINEEDIT_H
|
||||
|
|
|
@ -23,6 +23,9 @@ Groups::Groups( QWidget * parent,
|
|||
ui.dictionaries->populate( Instances::Group( order, dicts ).dictionaries,
|
||||
dicts );
|
||||
|
||||
ui.searchLine->applyTo( ui.dictionaries );
|
||||
addAction( ui.searchLine->getFocusAction() );
|
||||
|
||||
// Populate groups' widget
|
||||
|
||||
ui.groups->populate( groups, dicts, ui.dictionaries->getCurrentDictionaries() );
|
||||
|
@ -201,3 +204,4 @@ void Groups::showDictInfo( QPoint const & pos )
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -23,6 +23,9 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QuickFilterLine" name="searchLine"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="DictListWidget" name="dictionaries"/>
|
||||
</item>
|
||||
|
@ -206,6 +209,11 @@
|
|||
<extends>QListWidget</extends>
|
||||
<header>groups_widgets.hh</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>QuickFilterLine</class>
|
||||
<extends>QLineEdit</extends>
|
||||
<header>groups_widgets.hh</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>DictGroupsWidget</class>
|
||||
<extends>QTabWidget</extends>
|
||||
|
@ -223,6 +231,7 @@
|
|||
<tabstop>renameGroup</tabstop>
|
||||
<tabstop>removeGroup</tabstop>
|
||||
<tabstop>removeAllGroups</tabstop>
|
||||
<tabstop>searchLine</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<connections/>
|
||||
|
|
|
@ -370,7 +370,19 @@ void DictListModel::addSelectedUniqueFromModel( QItemSelectionModel * source )
|
|||
if ( !rows.count() )
|
||||
return;
|
||||
|
||||
const DictListModel * baseModel = dynamic_cast< const DictListModel * > ( source->model() );
|
||||
const QSortFilterProxyModel * proxyModel = dynamic_cast< const QSortFilterProxyModel * > ( source->model() );
|
||||
|
||||
const DictListModel * baseModel;
|
||||
|
||||
if ( proxyModel )
|
||||
{
|
||||
baseModel = dynamic_cast< const DictListModel * > ( proxyModel->sourceModel() );
|
||||
}
|
||||
else
|
||||
{
|
||||
baseModel = dynamic_cast< const DictListModel * > ( source->model() );
|
||||
}
|
||||
|
||||
if ( !baseModel )
|
||||
return;
|
||||
|
||||
|
@ -381,7 +393,8 @@ void DictListModel::addSelectedUniqueFromModel( QItemSelectionModel * source )
|
|||
|
||||
for ( int i = 0; i < rows.count(); i++ )
|
||||
{
|
||||
std::string id = baseModel->dictionaries.at( rows.at( i ).row() )->getId();
|
||||
QModelIndex idx = proxyModel ? proxyModel->mapToSource(rows.at( i )) : rows.at( i );
|
||||
std::string id = baseModel->dictionaries.at( idx.row() )->getId();
|
||||
|
||||
if ( !dicts.contains( id ) )
|
||||
list.append( id );
|
||||
|
@ -996,3 +1009,66 @@ void DictGroupsWidget::tabDataChanged()
|
|||
+ QString::number( getCurrentModel()->getCurrentDictionaries().size() );
|
||||
setTabToolTip( currentIndex(), toolTipStr );
|
||||
}
|
||||
|
||||
QuickFilterLine::QuickFilterLine( QWidget * parent ): ExtLineEdit( parent ), m_focusAction(this)
|
||||
{
|
||||
m_proxyModel.setFilterCaseSensitivity( Qt::CaseInsensitive );
|
||||
|
||||
#if QT_VERSION >= 0x040700
|
||||
setPlaceholderText( tr( "Dictionary search/filter (Ctrl+F)" ) );
|
||||
#endif
|
||||
|
||||
m_focusAction.setShortcut( QKeySequence( "Ctrl+F" ) );
|
||||
connect( &m_focusAction, SIGNAL( triggered() ),
|
||||
this, SLOT( focusFilterLine() ) );
|
||||
|
||||
QPixmap image(":/icons/system-search.png");
|
||||
setButtonPixmap(ExtLineEdit::Left, image.scaled(18, 18, Qt::KeepAspectRatio, Qt::SmoothTransformation));
|
||||
setButtonToolTip(ExtLineEdit::Left, tr("Quick Search"));
|
||||
setButtonVisible(ExtLineEdit::Left, true);
|
||||
|
||||
QPixmap right(":/icons/clear.png");
|
||||
setButtonPixmap(ExtLineEdit::Right, right);
|
||||
setButtonToolTip(ExtLineEdit::Right, tr("Clear Search"));
|
||||
setButtonVisible(ExtLineEdit::Right, true);
|
||||
setButtonAutoHide(ExtLineEdit::Right, true);
|
||||
connect( this, SIGNAL( rightButtonClicked() ), this, SLOT( clear() ) );
|
||||
|
||||
setFocusPolicy(Qt::StrongFocus);
|
||||
|
||||
connect (this, SIGNAL( textChanged( QString const & ) ),
|
||||
this, SLOT( filterChangedInternal() ) );
|
||||
}
|
||||
|
||||
QuickFilterLine::~QuickFilterLine()
|
||||
{
|
||||
}
|
||||
|
||||
void QuickFilterLine::applyTo( QAbstractItemView * source )
|
||||
{
|
||||
m_proxyModel.setSourceModel( source->model() );
|
||||
source->setModel( &m_proxyModel );
|
||||
}
|
||||
|
||||
QModelIndex QuickFilterLine::mapToSource( QModelIndex const & idx )
|
||||
{
|
||||
return m_proxyModel.mapToSource( idx );
|
||||
}
|
||||
|
||||
void QuickFilterLine::filterChangedInternal()
|
||||
{
|
||||
// emit signal in async manner, to avoid UI slowdown
|
||||
QTimer::singleShot( 1, this, SLOT( emitFilterChanged() ) );
|
||||
}
|
||||
|
||||
void QuickFilterLine::emitFilterChanged()
|
||||
{
|
||||
m_proxyModel.setFilterFixedString(text());
|
||||
emit filterChanged( text() );
|
||||
}
|
||||
|
||||
void QuickFilterLine::focusFilterLine()
|
||||
{
|
||||
setFocus();
|
||||
selectAll();
|
||||
}
|
||||
|
|
|
@ -6,10 +6,14 @@
|
|||
|
||||
// Various custom widgets used in the Groups dialog
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include <QListWidget>
|
||||
#include <QSortFilterProxyModel>
|
||||
|
||||
#include "config.hh"
|
||||
#include "dictionary.hh"
|
||||
#include <vector>
|
||||
#include "extlineedit.hh"
|
||||
|
||||
/// A model to be projected into the view, according to Qt's MVC model
|
||||
class DictListModel: public QAbstractListModel
|
||||
|
@ -191,5 +195,35 @@ signals:
|
|||
void showDictionaryInfo( QString const & id );
|
||||
};
|
||||
|
||||
#endif
|
||||
class QuickFilterLine: public ExtLineEdit
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
|
||||
QuickFilterLine( QWidget * parent );
|
||||
~QuickFilterLine();
|
||||
|
||||
/// Sets the source view to filter
|
||||
void applyTo( QAbstractItemView * source );
|
||||
|
||||
QAction * getFocusAction() { return & m_focusAction; }
|
||||
|
||||
QModelIndex mapToSource( QModelIndex const & idx );
|
||||
|
||||
private:
|
||||
QSortFilterProxyModel m_proxyModel;
|
||||
QAction m_focusAction;
|
||||
|
||||
private slots:
|
||||
void filterChangedInternal();
|
||||
void emitFilterChanged();
|
||||
void focusFilterLine();
|
||||
|
||||
signals:
|
||||
void filterChanged(QString const & filter);
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
BIN
icons/clear.png
Normal file
BIN
icons/clear.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 561 B |
|
@ -104,11 +104,16 @@ OrderAndProps::OrderAndProps( QWidget * parent,
|
|||
ui.dictionaryOrder->populate( order.dictionaries, allDictionaries );
|
||||
ui.inactiveDictionaries->populate( inactive.dictionaries, allDictionaries );
|
||||
|
||||
ui.searchLine->applyTo( ui.dictionaryOrder );
|
||||
addAction( ui.searchLine->getFocusAction() );
|
||||
|
||||
disableDictionaryDescription();
|
||||
|
||||
ui.dictionaryOrder->setContextMenuPolicy( Qt::CustomContextMenu );
|
||||
connect( ui.dictionaryOrder, SIGNAL( customContextMenuRequested( QPoint ) ),
|
||||
this, SLOT( contextMenuRequested( QPoint ) ) );
|
||||
connect (ui.searchLine, SIGNAL( filterChanged( QString const & ) ),
|
||||
this, SLOT( filterChanged( QString const &) ) );
|
||||
}
|
||||
|
||||
Config::Group OrderAndProps::getCurrentDictionaryOrder() const
|
||||
|
@ -129,9 +134,16 @@ Config::Group OrderAndProps::getCurrentInactiveDictionaries() const
|
|||
return g.makeConfigGroup();
|
||||
}
|
||||
|
||||
void OrderAndProps::filterChanged( QString const & filterText)
|
||||
{
|
||||
// when the filter is active, disable the possibility
|
||||
// to drop dictionaries to this filtered list
|
||||
ui.dictionaryOrder->setAcceptDrops(filterText.isEmpty());
|
||||
}
|
||||
|
||||
void OrderAndProps::on_dictionaryOrder_clicked( QModelIndex const & idx )
|
||||
{
|
||||
describeDictionary( ui.dictionaryOrder, idx );
|
||||
describeDictionary( ui.dictionaryOrder, ui.searchLine->mapToSource( idx ) );
|
||||
}
|
||||
|
||||
void OrderAndProps::on_inactiveDictionaries_clicked( QModelIndex const & idx )
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
#include "ui_orderandprops.h"
|
||||
#include "groups_widgets.hh"
|
||||
#include <QSortFilterProxyModel>
|
||||
|
||||
class OrderAndProps: public QWidget
|
||||
{
|
||||
|
@ -25,6 +26,7 @@ private slots:
|
|||
void on_dictionaryOrder_clicked( QModelIndex const & );
|
||||
void on_inactiveDictionaries_clicked( QModelIndex const & );
|
||||
void contextMenuRequested( const QPoint & pos );
|
||||
void filterChanged( QString const & filterText );
|
||||
|
||||
private:
|
||||
|
||||
|
|
149
orderandprops.ui
149
orderandprops.ui
|
@ -19,68 +19,8 @@
|
|||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<layout class="QGridLayout" name="gridLayout_2" rowstretch="0,10,0,0,2">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Dictionary order:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="DictListWidget" name="dictionaryOrder"/>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="moveActiveUp">
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="arrowType">
|
||||
<enum>Qt::UpArrow</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="moveActiveDown">
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="arrowType">
|
||||
<enum>Qt::DownArrow</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<layout class="QGridLayout" name="gridLayout_2" rowstretch="0,10,10,0,0,2">
|
||||
<item row="3" column="0">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
|
@ -130,15 +70,78 @@
|
|||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Dictionary order:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="DictListWidget" name="dictionaryOrder"/>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="moveActiveUp">
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="arrowType">
|
||||
<enum>Qt::UpArrow</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="moveActiveDown">
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="arrowType">
|
||||
<enum>Qt::DownArrow</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="DictListWidget" name="inactiveDictionaries"/>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>Inactive (disabled) dictionaries:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="DictListWidget" name="inactiveDictionaries"/>
|
||||
<item row="1" column="0">
|
||||
<widget class="QuickFilterLine" name="searchLine"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
|
@ -417,7 +420,23 @@
|
|||
<extends>QListWidget</extends>
|
||||
<header>groups_widgets.hh</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>QuickFilterLine</class>
|
||||
<extends>QLineEdit</extends>
|
||||
<header>groups_widgets.hh</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>dictionaryOrder</tabstop>
|
||||
<tabstop>moveActiveUp</tabstop>
|
||||
<tabstop>moveActiveDown</tabstop>
|
||||
<tabstop>moveToActive</tabstop>
|
||||
<tabstop>moveToInactive</tabstop>
|
||||
<tabstop>inactiveDictionaries</tabstop>
|
||||
<tabstop>dictionaryDescription</tabstop>
|
||||
<tabstop>dictionaryFileList</tabstop>
|
||||
<tabstop>searchLine</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
|
|
@ -56,5 +56,6 @@
|
|||
<file>icons/1downarrow.png</file>
|
||||
<file>icons/system-search.png</file>
|
||||
<file>icons/menu_button.png</file>
|
||||
<file>icons/clear.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
Loading…
Reference in a new issue