Geometrize  1.0
An application for geometrizing images into geometric primitives
Public Member Functions | Private Member Functions | Private Attributes | List of all members
geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl Class Reference
Collaboration diagram for geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl:
Collaboration graph
[legend]

Public Member Functions

 TaskItemWidgetImpl (TaskItemWidget *pQ, const QString &taskItemId, const QString &taskItemDisplayName, const std::function< void(const QString &)> &openItemCb, const std::function< void(const QString &)> &removeItemCb)
 
 ~TaskItemWidgetImpl ()
 
void onContextMenuEvent (QContextMenuEvent *e)
 
void onMouseReleaseEvent (QMouseEvent *e)
 
void onKeyPressEvent (QKeyEvent *e)
 
void onLanguageChange ()
 

Private Member Functions

void populateUi ()
 
QImage setupThumbnail (const QString &itemPath, const RecentItem::Type type)
 

Private Attributes

TaskItemWidgetq
 
std::unique_ptr< Ui::TaskItemWidget > ui
 
const QString m_taskItemId
 
const QString m_taskItemDisplayName
 
const std::function< void(const QString &)> m_openItemCb
 
const std::function< void(const QString &)> m_removeItemCb
 
QFutureWatcher< QImage > m_thumbnailLoaderWatcher
 

Constructor & Destructor Documentation

◆ TaskItemWidgetImpl()

geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::TaskItemWidgetImpl ( TaskItemWidget pQ,
const QString &  taskItemId,
const QString &  taskItemDisplayName,
const std::function< void(const QString &)> &  openItemCb,
const std::function< void(const QString &)> &  removeItemCb 
)
inline
32  :
33  q{pQ}, ui{std::make_unique<Ui::TaskItemWidget>()}, m_taskItemId{taskItemId}, m_taskItemDisplayName{taskItemDisplayName}, m_openItemCb{openItemCb}, m_removeItemCb{removeItemCb}
34  {
35  ui->setupUi(q);
36 
37  ui->itemDisplayName->setText(m_taskItemDisplayName);
38 
39  ui->itemPath->setText(m_taskItemId);
40 
41  q->connect(&m_thumbnailLoaderWatcher, &QFutureWatcher<QImage>::finished, [this]() {
42  const QImage thumbnail{m_thumbnailLoaderWatcher.future().result()};
43  ui->thumbnailIcon->setPixmap(QPixmap::fromImage(thumbnail));
44  });
45 
46  const QString itemPath{m_taskItemId};
47  const RecentItem::Type type{RecentItem::getTypeForKey(itemPath)};
48 
49  QFuture<QImage> thumbnailFuture = QtConcurrent::run([this, itemPath, type]() {
50  return setupThumbnail(itemPath, type);
51  });
52  m_thumbnailLoaderWatcher.setFuture(thumbnailFuture);
53  }

◆ ~TaskItemWidgetImpl()

geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::~TaskItemWidgetImpl ( )
inline
56  {
57  }

Member Function Documentation

◆ onContextMenuEvent()

void geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::onContextMenuEvent ( QContextMenuEvent *  e)
inline
60  {
61  QMenu itemContextMenu;
62 
63  QAction openAction(tr("Open", "Text on a menu item the user presses to open a file/image"));
64  itemContextMenu.addAction(&openAction);
65  connect(&openAction, &QAction::triggered, [this]() {
67  });
68 
69  QAction openInDefaultViewer(tr("Open in viewer", "Text on a menu item the user presses to open an image/piece of media in a viewer"));
70  itemContextMenu.addAction(&openInDefaultViewer);
71  connect(&openInDefaultViewer, &QAction::triggered, [this]() {
73  });
74 
75  QAction revealInDefaultExplorer(tr("Reveal in file explorer", "Text on a menu item the user presses to open an image/piece of media in a file viewer/explorer"));
76  itemContextMenu.addAction(&revealInDefaultExplorer);
77  connect(&revealInDefaultExplorer, &QAction::triggered, [this]() {
79  });
80 
81  QAction copyToClipboard(tr("Copy file path to clipboard", "Text on a menu item the user selects to copy a file path to the copy-paste clipboard"));
82  itemContextMenu.addAction(&copyToClipboard);
83  connect(&copyToClipboard, &QAction::triggered, [this]() {
85  });
86 
87  QAction removalAction(tr("Remove from list", "Text on a menu item the user presses to remove an item from a list of items"));
88  itemContextMenu.addAction(&removalAction);
89  connect(&removalAction, &QAction::triggered, [this]() {
91  });
92 
93  itemContextMenu.exec(e->globalPos());
94  }
Here is the call graph for this function:

◆ onKeyPressEvent()

void geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::onKeyPressEvent ( QKeyEvent *  e)
inline
106  {
107  if(e->key() != Qt::Key_Return && e->key() != Qt::Key_Enter) {
108  return;
109  }
110 
112  }

◆ onLanguageChange()

void geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::onLanguageChange ( )
inline
115  {
116  ui->retranslateUi(q);
117  populateUi();
118  }
Here is the call graph for this function:

◆ onMouseReleaseEvent()

void geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::onMouseReleaseEvent ( QMouseEvent *  e)
inline
97  {
98  if(e->button() != Qt::LeftButton) {
99  return;
100  }
101 
103  }

◆ populateUi()

void geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::populateUi ( )
inlineprivate
122  {
123 
124  }
Here is the caller graph for this function:

◆ setupThumbnail()

QImage geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::setupThumbnail ( const QString &  itemPath,
const RecentItem::Type  type 
)
inlineprivate
127  {
128  switch(type) {
130  {
131  QImage thumbnail;
132  if(QFile(itemPath).exists()) {
133  thumbnail = QImage(itemPath);
134  } else {
135  thumbnail = QImage(QUrl(itemPath).toLocalFile());
136  }
137  if(!thumbnail.isNull()) {
138  thumbnail = thumbnail.scaled(64, 64, Qt::KeepAspectRatio, Qt::SmoothTransformation);
139  return thumbnail;
140  }
141  thumbnail = QImage(":/icons/image.png");
142  if(!thumbnail.isNull()) {
143  return thumbnail;
144  }
145  break;
146  }
148  {
149  const QImage thumbnail(":/icons/script_go.png");
150  if(!thumbnail.isNull()) {
151  return thumbnail;
152  }
153  break;
154  }
156  {
157  const QImage thumbnail(":/icons/world_link.png");
158  if(!thumbnail.isNull()) {
159  return thumbnail;
160  }
161  break;
162  }
164  {
165  break;
166  }
167  }
168 
169  return QImage(":/icons/error.png");
170  }

Member Data Documentation

◆ m_openItemCb

const std::function<void(const QString&)> geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::m_openItemCb
private

◆ m_removeItemCb

const std::function<void(const QString&)> geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::m_removeItemCb
private

◆ m_taskItemDisplayName

const QString geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::m_taskItemDisplayName
private

◆ m_taskItemId

const QString geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::m_taskItemId
private

◆ m_thumbnailLoaderWatcher

QFutureWatcher<QImage> geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::m_thumbnailLoaderWatcher
private

◆ q

TaskItemWidget* geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::q
private

◆ ui

std::unique_ptr<Ui::TaskItemWidget> geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::ui
private

The documentation for this class was generated from the following file:
geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::m_taskItemDisplayName
const QString m_taskItemDisplayName
Definition: taskitemwidget.cpp:175
geometrize::RecentItem::Type::UNKNOWN
@ UNKNOWN
geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::q
TaskItemWidget * q
Definition: taskitemwidget.cpp:172
geometrize::RecentItem::Type::REMOTE_RESOURCE
@ REMOTE_RESOURCE
geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::m_thumbnailLoaderWatcher
QFutureWatcher< QImage > m_thumbnailLoaderWatcher
Definition: taskitemwidget.cpp:178
geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::m_taskItemId
const QString m_taskItemId
Definition: taskitemwidget.cpp:174
geometrize::RecentItem::Type
Type
Definition: recentitem.h:17
geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::populateUi
void populateUi()
Definition: taskitemwidget.cpp:121
geometrize::util::revealInDefaultApplication
bool revealInDefaultApplication(const std::string &path)
revealInDefaultApplication Reveals the given path in the parent folder (or path with the filename tri...
Definition: util.cpp:283
geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::ui
std::unique_ptr< Ui::TaskItemWidget > ui
Definition: taskitemwidget.cpp:173
geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::m_openItemCb
const std::function< void(const QString &)> m_openItemCb
Definition: taskitemwidget.cpp:176
geometrize::util::setGlobalClipboardText
void setGlobalClipboardText(const std::string &text)
setClipboardText Sets the global system clipboard text.
Definition: util.cpp:299
geometrize::RecentItem::getTypeForKey
static RecentItem::Type getTypeForKey(const QString &key)
getTypeForKey Gets the recent item type for the given recent item key.
Definition: recentitem.cpp:14
geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::m_removeItemCb
const std::function< void(const QString &)> m_removeItemCb
Definition: taskitemwidget.cpp:177
geometrize::RecentItem::Type::LOCAL_CHAISCRIPT
@ LOCAL_CHAISCRIPT
geometrize::RecentItem::Type::LOCAL_IMAGE
@ LOCAL_IMAGE
geometrize::util::openInDefaultApplication
bool openInDefaultApplication(const std::string &path)
openInDefaultApplication Opens the given path in the default application.
Definition: util.cpp:278
geometrize::dialog::TaskItemWidget::TaskItemWidgetImpl::setupThumbnail
QImage setupThumbnail(const QString &itemPath, const RecentItem::Type type)
Definition: taskitemwidget.cpp:126