Пример #1
0
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)));
}
Пример #2
0
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);
}
Пример #3
0
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();
}
Пример #4
0
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();
  }
}
Пример #5
0
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();
    }
}
Пример #6
0
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();
    }
}
Пример #7
0
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();
}
Пример #8
0
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();
}
Пример #9
0
void FreeRegionGrabber::mouseDoubleClickEvent( QMouseEvent* )
{
    grabRect();
}
Пример #10
0
void RegionGrab::mouseDoubleClickEvent(QMouseEvent *event)
{
  Q_UNUSED(event);

  grabRect();
}
Пример #11
0
void AreaDialog::mouseDoubleClickEvent(QMouseEvent*)
{
  grabRect();
}
Пример #12
0
  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);