TrayIcon::TrayIcon(AppCore *core) : QSystemTrayIcon(core) , m_core(core) , m_message(Unknown) { setIcon(QIcon(QLatin1String(":/images/icon16.png"))); setToolTip(QString("%1 %2").arg(PRODUCT_NAME).arg(VERSION_STRING)); m_widget = new QWidget(); RecentItemDelegate *delegate = new RecentItemDelegate(core, this); m_window = new TrayWindow(core, m_widget); m_window->installEventFilter(this); m_window->recentView()->setItemDelegate(delegate); m_window->recentView()->setModel(core->recentModel()); QTimer::singleShot(0, this, SLOT(show())); QTimer::singleShot(1000, this, SLOT(show())); connect(this, SIGNAL(messageClicked()), SLOT(onMessageClicked())); connect(this, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), SLOT(onActivated(QSystemTrayIcon::ActivationReason))); connect(m_window, SIGNAL(grabRect()), m_core, SLOT(grabRect())); connect(m_window, SIGNAL(grabScreen()), m_core, SLOT(grabScreen())); connect(m_window, SIGNAL(openFile()), m_core, SLOT(openFile())); connect(delegate, SIGNAL(closeRequest()), m_window, SLOT(close())); connect(delegate, SIGNAL(linkCopied(QUrl)), SLOT(onLinkCopied(QUrl))); connect(core->autoUpdate(), SIGNAL(done(int)), SLOT(onUpdateDone(int))); }
AreaDialog::AreaDialog(Screenshot *screenshot) : QDialog(0), mScreenshot(screenshot), mMouseDown(false), mMouseMagnifier(false), mNewSelection(false), mHandleSize(10), mMouseOverHandle(0), mIdleTimer(), mShowHelp(true), mGrabbing(false), mOverlayAlpha(1), mAutoclose(false), mTLHandle(0, 0, mHandleSize, mHandleSize), mTRHandle(0, 0, mHandleSize, mHandleSize), mBLHandle(0, 0, mHandleSize, mHandleSize), mBRHandle(0, 0, mHandleSize, mHandleSize), mLHandle(0, 0, mHandleSize, mHandleSize), mTHandle(0, 0, mHandleSize, mHandleSize), mRHandle(0, 0, mHandleSize, mHandleSize), mBHandle(0, 0, mHandleSize, mHandleSize) { mHandles << &mTLHandle << &mTRHandle << &mBLHandle << &mBRHandle << &mLHandle << &mTHandle << &mRHandle << &mBHandle; mMouseOverHandle = 0; setMouseTracking(true); setWindowTitle(tr("Lightscreen Area Mode")); setWindowFlags(Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint); setCursor(Qt::CrossCursor); connect(&mIdleTimer, SIGNAL(timeout()), this, SLOT(displayHelp())); mIdleTimer.start(2000); mAutoclose = ScreenshotManager::instance()->settings()->value("options/areaAutoclose").toBool(); if (mAutoclose) return; // Avoid creating the accept widget if it's not going to get used. // Creating accept widget: mAcceptWidget = new QWidget(this); mAcceptWidget->resize(140, 70); mAcceptWidget->setWindowOpacity(0.4); mAcceptWidget->setStyleSheet("QWidget { background: rgba(255, 255, 255, 200); border: 4px solid #232323; padding: 0; } QPushButton { background: transparent; border: none; height: 50px; padding: 5px; } QPushButton:hover { cursor: hand; }"); QPushButton *awAcceptButton = new QPushButton(QIcon(":/icons/yes.big"), "", this); connect(awAcceptButton, SIGNAL(clicked()), this, SLOT(grabRect())); awAcceptButton->setCursor(Qt::PointingHandCursor); awAcceptButton->setIconSize(QSize(48, 48)); QPushButton *awRejectButton = new QPushButton(QIcon(":/icons/no.big"), "", this); connect(awRejectButton, SIGNAL(clicked()), this, SLOT(cancel())); awRejectButton->setCursor(Qt::PointingHandCursor); awRejectButton->setIconSize(QSize(48, 48)); QHBoxLayout *awLayout = new QHBoxLayout(this); awLayout->addWidget(awAcceptButton); awLayout->addWidget(awRejectButton); awLayout->setMargin(0); awLayout->setSpacing(0); mAcceptWidget->setLayout(awLayout); mAcceptWidget->setVisible(false); }
void RegionGrab::mouseReleaseEvent(QMouseEvent *event) { m_mouseDown = false; m_newSelection = false; if (m_mouseOverHandle == 0 && m_selection.contains(event->pos())) setCursor(Qt::OpenHandCursor); if (event->button() == Qt::LeftButton && event->modifiers() != Qt::SHIFT) grabRect(); update(); }
void AreaDialog::keyPressEvent(QKeyEvent* e) { if (e->key() == Qt::Key_Escape) { cancel(); } else if (e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return) { grabRect(); } else { e->ignore(); } }
void RegionGrabber::keyPressEvent( QKeyEvent* e ) { if ( e->key() == Qt::Key_Escape ) { emit regionGrabbed( QPixmap() ); } else if ( e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return ) { grabRect(); } else { e->ignore(); } }
void FreeRegionGrabber::keyPressEvent( QKeyEvent* e ) { QPolygon pol = selection; if ( e->key() == Qt::Key_Escape ) { emit freeRegionUpdated( pol ); emit freeRegionGrabbed( QPixmap() ); } else if ( e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return ) { grabRect(); } else { e->ignore(); } }
void AreaDialog::mouseReleaseEvent(QMouseEvent* e) { if (mAutoclose) grabRect(); if (!mSelection.isNull() && mAcceptWidget) mAcceptWidget->show(); mMouseDown = false; mNewSelection = false; mIdleTimer.start(); if (mMouseOverHandle == 0 && mSelection.contains(e->pos())) setCursor(Qt::OpenHandCursor); update(); }
void RegionGrab::keyPressEvent(QKeyEvent* event) { if (event->key() == Qt::Key_Escape) { emit regionUpdated(m_selection); emit regionGrabbed(QPixmap()); # ifdef Q_OS_MAC showNormal(); # endif close(); } else if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) { grabRect(); } else event->ignore(); }
void FreeRegionGrabber::mouseDoubleClickEvent( QMouseEvent* ) { grabRect(); }
void RegionGrab::mouseDoubleClickEvent(QMouseEvent *event) { Q_UNUSED(event); grabRect(); }
void AreaDialog::mouseDoubleClickEvent(QMouseEvent*) { grabRect(); }
linksLay->addWidget(m_siteBtn); linksLay->addStretch(); QVBoxLayout *layout = new QVBoxLayout(this); layout->addWidget(m_topFrame); layout->addWidget(m_recentView); layout->addWidget(m_controlFrame); layout->addWidget(m_linksFrame); layout->setMargin(0); layout->setSpacing(0); foreach (QToolButton *button, m_buttons) { connect(button, SIGNAL(clicked()), SLOT(close())); } connect(m_buttons.value(RectangleBtn), SIGNAL(clicked()), SIGNAL(grabRect())); connect(m_buttons.value(FullscreenBtn), SIGNAL(clicked()), SIGNAL(grabScreen())); connect(m_buttons.value(FileBtn), SIGNAL(clicked()), SIGNAL(openFile())); connect(m_siteBtn, SIGNAL(clicked()), SLOT(onSiteClicked())); connect(m_pinBtn, SIGNAL(clicked(bool)), SLOT(setPin(bool))); Observers::watch(this); } void TrayWindow::changeEvent(QEvent *event) { if (event->type() == QEvent::LanguageChange) retranslateUi(); QFrame::changeEvent(event);