qBittorrent
Private::FileLineEdit Class Referencefinal

#include <fspathedit_p.h>

Inheritance diagram for Private::FileLineEdit:
Collaboration diagram for Private::FileLineEdit:

Public Member Functions

 FileLineEdit (QWidget *parent=nullptr)
 
 ~FileLineEdit ()
 
void completeDirectoriesOnly (bool completeDirsOnly) override
 
void setFilenameFilters (const QStringList &filters) override
 
void setBrowseAction (QAction *action) override
 
void setValidator (QValidator *validator) override
 
QString placeholder () const override
 
void setPlaceholder (const QString &val) override
 
QWidget * widget () override
 
- Public Member Functions inherited from Private::FileEditorWithCompletion
virtual ~FileEditorWithCompletion ()=default
 

Protected Member Functions

void keyPressEvent (QKeyEvent *event) override
 
void contextMenuEvent (QContextMenuEvent *event) override
 

Private Member Functions

void showCompletionPopup ()
 

Static Private Member Functions

static QString warningText (FileSystemPathValidator::TestResult r)
 

Private Attributes

QFileSystemModel * m_completerModel
 
QCompleter * m_completer
 
QAction * m_browseAction
 
QFileIconProvider m_iconProvider
 
QAction * m_warningAction
 

Detailed Description

Definition at line 113 of file fspathedit_p.h.

Constructor & Destructor Documentation

◆ FileLineEdit()

Private::FileLineEdit::FileLineEdit ( QWidget *  parent = nullptr)

Definition at line 202 of file fspathedit_p.cpp.

203  : QLineEdit {parent}
204  , m_completerModel {new QFileSystemModel(this)}
205  , m_completer {new QCompleter(this)}
206  , m_browseAction {nullptr}
207  , m_warningAction {nullptr}
208 {
209  m_completerModel->setRootPath("");
210  m_completerModel->setIconProvider(&m_iconProvider);
211  m_completer->setModel(m_completerModel);
212  m_completer->setCompletionMode(QCompleter::PopupCompletion);
213  setCompleter(m_completer);
214 }
QFileSystemModel * m_completerModel
Definition: fspathedit_p.h:138
QCompleter * m_completer
Definition: fspathedit_p.h:139
QFileIconProvider m_iconProvider
Definition: fspathedit_p.h:141

References m_completer, m_completerModel, and m_iconProvider.

◆ ~FileLineEdit()

Private::FileLineEdit::~FileLineEdit ( )

Definition at line 216 of file fspathedit_p.cpp.

217 {
218  delete m_completerModel; // has to be deleted before deleting the m_iconProvider object
219 }

Member Function Documentation

◆ completeDirectoriesOnly()

void Private::FileLineEdit::completeDirectoriesOnly ( bool  completeDirsOnly)
overridevirtual

Implements Private::FileEditorWithCompletion.

Definition at line 221 of file fspathedit_p.cpp.

222 {
223  QDir::Filters filters = completeDirsOnly ? QDir::Dirs : QDir::AllEntries;
224  filters |= QDir::NoDotAndDotDot;
225  m_completerModel->setFilter(filters);
226 }

◆ contextMenuEvent()

void Private::FileLineEdit::contextMenuEvent ( QContextMenuEvent *  event)
overrideprotected

Definition at line 297 of file fspathedit_p.cpp.

298 {
299  QMenu *menu = createStandardContextMenu();
300  menu->setAttribute(Qt::WA_DeleteOnClose);
301 
302  if (m_browseAction)
303  {
304  menu->addSeparator();
305  menu->addAction(m_browseAction);
306  }
307 
308  menu->popup(event->globalPos());
309 }

◆ keyPressEvent()

void Private::FileLineEdit::keyPressEvent ( QKeyEvent *  event)
overrideprotected

Definition at line 258 of file fspathedit_p.cpp.

259 {
260  QLineEdit::keyPressEvent(e);
261  if ((e->key() == Qt::Key_Space) && (e->modifiers() == Qt::CTRL))
262  {
263  m_completerModel->setRootPath(QFileInfo(text()).absoluteDir().absolutePath());
265  }
266 
267  auto *validator = qobject_cast<const FileSystemPathValidator *>(this->validator());
268  if (validator)
269  {
270  FileSystemPathValidator::TestResult lastTestResult = validator->lastTestResult();
271  QValidator::State lastState = validator->lastValidationState();
272  if (lastTestResult == FileSystemPathValidator::TestResult::OK)
273  {
274  delete m_warningAction;
275  m_warningAction = nullptr;
276  }
277  else
278  {
279  if (!m_warningAction)
280  {
281  m_warningAction = new QAction(this);
282  addAction(m_warningAction, QLineEdit::TrailingPosition);
283  }
284  }
285 
286  if (m_warningAction)
287  {
288  if (lastState == QValidator::Invalid)
289  m_warningAction->setIcon(style()->standardIcon(QStyle::SP_MessageBoxCritical));
290  else if (lastState == QValidator::Intermediate)
291  m_warningAction->setIcon(style()->standardIcon(QStyle::SP_MessageBoxWarning));
292  m_warningAction->setToolTip(warningText(lastTestResult).arg(validator->lastTestedPath()));
293  }
294  }
295 }
static QString warningText(FileSystemPathValidator::TestResult r)

References nova3.nova2dl::e, and Private::FileSystemPathValidator::OK.

◆ placeholder()

QString Private::FileLineEdit::placeholder ( ) const
overridevirtual

Implements Private::FileEditorWithCompletion.

Definition at line 243 of file fspathedit_p.cpp.

244 {
245  return placeholderText();
246 }

◆ setBrowseAction()

void Private::FileLineEdit::setBrowseAction ( QAction *  action)
overridevirtual

Implements Private::FileEditorWithCompletion.

Definition at line 233 of file fspathedit_p.cpp.

234 {
236 }
action
Definition: tstool.py:143

References tstool::action.

◆ setFilenameFilters()

void Private::FileLineEdit::setFilenameFilters ( const QStringList &  filters)
overridevirtual

Implements Private::FileEditorWithCompletion.

Definition at line 228 of file fspathedit_p.cpp.

229 {
230  m_completerModel->setNameFilters(filters);
231 }

◆ setPlaceholder()

void Private::FileLineEdit::setPlaceholder ( const QString &  val)
overridevirtual

Implements Private::FileEditorWithCompletion.

Definition at line 248 of file fspathedit_p.cpp.

249 {
250  setPlaceholderText(val);
251 }

◆ setValidator()

void Private::FileLineEdit::setValidator ( QValidator *  validator)
overridevirtual

Implements Private::FileEditorWithCompletion.

Definition at line 238 of file fspathedit_p.cpp.

239 {
240  QLineEdit::setValidator(validator);
241 }

◆ showCompletionPopup()

void Private::FileLineEdit::showCompletionPopup ( )
private

Definition at line 311 of file fspathedit_p.cpp.

312 {
313  m_completer->setCompletionPrefix(text());
314  m_completer->complete();
315 }

◆ warningText()

QString Private::FileLineEdit::warningText ( FileSystemPathValidator::TestResult  r)
staticprivate

Definition at line 317 of file fspathedit_p.cpp.

318 {
319  using TestResult = FileSystemPathValidator::TestResult;
320  switch (r)
321  {
322  case TestResult::DoesNotExist:
323  return tr("'%1' does not exist");
324  case TestResult::NotADir:
325  return tr("'%1' does not point to a directory");
326  case TestResult::NotAFile:
327  return tr("'%1' does not point to a file");
328  case TestResult::CantRead:
329  return tr("Does not have read permission in '%1'");
330  case TestResult::CantWrite:
331  return tr("Does not have write permission in '%1'");
332  default:
333  return {};
334  }
335 }

◆ widget()

QWidget * Private::FileLineEdit::widget ( )
overridevirtual

Implements Private::FileEditorWithCompletion.

Definition at line 253 of file fspathedit_p.cpp.

254 {
255  return this;
256 }

Member Data Documentation

◆ m_browseAction

QAction* Private::FileLineEdit::m_browseAction
private

Definition at line 140 of file fspathedit_p.h.

◆ m_completer

QCompleter* Private::FileLineEdit::m_completer
private

Definition at line 139 of file fspathedit_p.h.

Referenced by FileLineEdit().

◆ m_completerModel

QFileSystemModel* Private::FileLineEdit::m_completerModel
private

Definition at line 138 of file fspathedit_p.h.

Referenced by FileLineEdit().

◆ m_iconProvider

QFileIconProvider Private::FileLineEdit::m_iconProvider
private

Definition at line 141 of file fspathedit_p.h.

Referenced by FileLineEdit().

◆ m_warningAction

QAction* Private::FileLineEdit::m_warningAction
private

Definition at line 142 of file fspathedit_p.h.


The documentation for this class was generated from the following files: