Remember previous dropbox position and restore it on next startup.

This commit is contained in:
LoRd_MuldeR 2013-11-02 01:07:23 +01:00
parent 9001726df1
commit 9b376cd2a8
8 changed files with 80 additions and 40 deletions

View File

@ -771,17 +771,17 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_DropBox.cpp" line="123"/>
<location filename="../../src/Dialog_DropBox.cpp" line="129"/>
<source>LameXP DropBox</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_DropBox.cpp" line="123"/>
<location filename="../../src/Dialog_DropBox.cpp" line="129"/>
<source>You can add files to LameXP via Drag&amp;amp;Drop here!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_DropBox.cpp" line="123"/>
<location filename="../../src/Dialog_DropBox.cpp" line="129"/>
<source>(Right-click to close the DropBox)</source>
<translation type="unfinished"></translation>
</message>

View File

@ -777,17 +777,17 @@
<translation type="unfinished">LameXP - DropBox</translation>
</message>
<message>
<location filename="../../src/Dialog_DropBox.cpp" line="123"/>
<location filename="../../src/Dialog_DropBox.cpp" line="129"/>
<source>LameXP DropBox</source>
<translation type="unfinished">LameXP DropBox</translation>
</message>
<message>
<location filename="../../src/Dialog_DropBox.cpp" line="123"/>
<location filename="../../src/Dialog_DropBox.cpp" line="129"/>
<source>You can add files to LameXP via Drag&amp;amp;Drop here!</source>
<translation type="unfinished">Możesz dodawać pliki do lisy wrzucając je do DropBoxa!</translation>
</message>
<message>
<location filename="../../src/Dialog_DropBox.cpp" line="123"/>
<location filename="../../src/Dialog_DropBox.cpp" line="129"/>
<source>(Right-click to close the DropBox)</source>
<translation type="unfinished">(Kliknij prawym przyciskiem myszy by zamknąć okienko)</translation>
</message>

View File

@ -775,17 +775,17 @@
<translation>LameXP - DropBox</translation>
</message>
<message>
<location filename="../../src/Dialog_DropBox.cpp" line="123"/>
<location filename="../../src/Dialog_DropBox.cpp" line="129"/>
<source>LameXP DropBox</source>
<translation>LameXP DropBox</translation>
</message>
<message>
<location filename="../../src/Dialog_DropBox.cpp" line="123"/>
<location filename="../../src/Dialog_DropBox.cpp" line="129"/>
<source>You can add files to LameXP via Drag&amp;amp;Drop here!</source>
<translation>Du kan lägga till filer i LameXP via Dra&amp;amp;Släpp här!</translation>
</message>
<message>
<location filename="../../src/Dialog_DropBox.cpp" line="123"/>
<location filename="../../src/Dialog_DropBox.cpp" line="129"/>
<source>(Right-click to close the DropBox)</source>
<translation>(Högerklicka för att stänga DropBox)</translation>
</message>

View File

@ -35,7 +35,7 @@
#define VER_LAMEXP_MINOR_LO 9
#define VER_LAMEXP_TYPE Alpha
#define VER_LAMEXP_PATCH 7
#define VER_LAMEXP_BUILD 1447
#define VER_LAMEXP_BUILD 1448
#define VER_LAMEXP_CONFG 1348
///////////////////////////////////////////////////////////////////////////////

View File

@ -90,6 +90,12 @@ QDialog(parent, Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint),
DropBox::~DropBox(void)
{
if(!m_firstShow)
{
m_settings->dropBoxWidgetPositionX(this->x());
m_settings->dropBoxWidgetPositionY(this->y());
}
LAMEXP_DELETE(m_counterLabel);
LAMEXP_DELETE(m_windowReferencePoint);
LAMEXP_DELETE(m_mouseReferencePoint);
@ -134,11 +140,22 @@ void DropBox::showEvent(QShowEvent *event)
if(m_firstShow)
{
m_firstShow = false;
QWidget *parentWidget = dynamic_cast<QWidget*>(this->parent());
QRect availGeometry = QApplication::desktop()->availableGeometry((parentWidget) ? parentWidget : this);
int max_x = availGeometry.width() - frameGeometry().width() + availGeometry.left();
int max_y = availGeometry.height() - frameGeometry().height() + availGeometry.top();
move(max_x, max_y);
int pos_x = m_settings->dropBoxWidgetPositionX();
int pos_y = m_settings->dropBoxWidgetPositionY();
if((pos_x < 0) && (pos_y < 0))
{
QWidget *const parentWidget = dynamic_cast<QWidget*>(this->parent());
QWidget *const targetWidget = parentWidget ? parentWidget : this;
QRect availGeometry = QApplication::desktop()->availableGeometry(targetWidget);
pos_x = availGeometry.width() - frameGeometry().width() + availGeometry.left();
pos_y = availGeometry.height() - frameGeometry().height() + availGeometry.top();
}
else
{
pos_x = qBound(0, pos_x, m_screenGeometry.width() - frameGeometry().width());
pos_y = qBound(0, pos_y, m_screenGeometry.height() - frameGeometry().height());
}
move(pos_x, pos_y);
}
if(m_moving)
@ -147,6 +164,8 @@ void DropBox::showEvent(QShowEvent *event)
m_moving = false;
setWindowOpacity(LOW_OPACITY);
}
boundWidget(this);
}
void DropBox::keyPressEvent(QKeyEvent *event)
@ -161,7 +180,10 @@ void DropBox::keyReleaseEvent(QKeyEvent *event)
void DropBox::closeEvent(QCloseEvent *event)
{
if(!m_canClose) event->ignore();
if(!m_canClose)
{
event->ignore();
}
}
void DropBox::mousePressEvent(QMouseEvent *event)
@ -191,29 +213,12 @@ void DropBox::mouseReleaseEvent(QMouseEvent *event)
{
if(m_moving && event->button() != Qt::RightButton)
{
static const int magnetic = 24;
QRect availGeometry = QApplication::desktop()->availableGeometry(this);
const int max_x = availGeometry.width() - frameGeometry().width() + availGeometry.left();
const int max_y = availGeometry.height() - frameGeometry().height() + availGeometry.top();
int new_x = qBound(availGeometry.left(), this->x(), max_x);
int new_y = qBound(availGeometry.top() , this->y(), max_y);
if(new_x - availGeometry.left() < magnetic) new_x = availGeometry.left();
if(new_y - availGeometry.top() < magnetic) new_y = availGeometry.top();
if(max_x - new_x < magnetic) new_x = max_x;
if(max_y - new_y < magnetic) new_y = max_y;
if((this->x() != new_x) || (this->y() != new_y))
{
move(new_x, new_y);
}
boundWidget(this);
QApplication::restoreOverrideCursor();
m_moving = false;
setWindowOpacity(LOW_OPACITY);
m_settings->dropBoxWidgetPositionX(this->x());
m_settings->dropBoxWidgetPositionY(this->y());
m_moving = false;
}
}
@ -257,3 +262,30 @@ bool DropBox::event(QEvent *event)
return QDialog::event(event);
}
////////////////////////////////////////////////////////////
// PRIVATE
////////////////////////////////////////////////////////////
void DropBox::boundWidget(QWidget *widget)
{
static const int magnetic = 24;
QRect availGeometry = QApplication::desktop()->availableGeometry(widget);
const int max_x = availGeometry.width() - widget->frameGeometry().width() + availGeometry.left();
const int max_y = availGeometry.height() - widget->frameGeometry().height() + availGeometry.top();
int new_x = qBound(availGeometry.left(), widget->x(), max_x);
int new_y = qBound(availGeometry.top(), widget->y(), max_y);
if(new_x - availGeometry.left() < magnetic) new_x = availGeometry.left();
if(new_y - availGeometry.top() < magnetic) new_y = availGeometry.top();
if(max_x - new_x < magnetic) new_x = max_x;
if(max_y - new_y < magnetic) new_y = max_y;
if((widget->x() != new_x) || (widget->y() != new_y))
{
widget->move(new_x, new_y);
}
}

View File

@ -53,12 +53,14 @@ private:
QPoint *m_mouseReferencePoint;
QPoint *m_windowReferencePoint;
QLabel *m_counterLabel;
QAbstractItemModel *m_model;
SettingsModel *m_settings;
QAbstractItemModel *const m_model;
SettingsModel *const m_settings;
bool m_moving;
bool m_firstShow;
QRect m_screenGeometry;
static void boundWidget(QWidget *widget);
protected:
void keyPressEvent(QKeyEvent *event);
void keyReleaseEvent(QKeyEvent *event);

View File

@ -225,7 +225,9 @@ LAMEXP_MAKE_ID(customParametersOpusEnc, "AdvancedOptions/CustomParameters/O
LAMEXP_MAKE_ID(customParametersWave, "AdvancedOptions/CustomParameters/Wave");
LAMEXP_MAKE_ID(customTempPath, "AdvancedOptions/TempDirectory/CustomPath");
LAMEXP_MAKE_ID(customTempPathEnabled, "AdvancedOptions/TempDirectory/UseCustomPath");
LAMEXP_MAKE_ID(dropBoxWidgetEnabled, "Flags/EnableDropBoxWidget");
LAMEXP_MAKE_ID(dropBoxWidgetEnabled, "DropBoxWidget/Enabled");
LAMEXP_MAKE_ID(dropBoxWidgetPositionX, "DropBoxWidget/Position/X");
LAMEXP_MAKE_ID(dropBoxWidgetPositionY, "DropBoxWidget/Position/Y");
LAMEXP_MAKE_ID(favoriteOutputFolders, "OutputDirectory/Favorites");
LAMEXP_MAKE_ID(forceStereoDownmix, "AdvancedOptions/StereoDownmix/Force");
LAMEXP_MAKE_ID(hibernateComputer, "AdvancedOptions/HibernateComputerOnShutdown");
@ -611,6 +613,8 @@ LAMEXP_MAKE_OPTION_S(customParametersWave, QString())
LAMEXP_MAKE_OPTION_S(customTempPath, QDesktopServices::storageLocation(QDesktopServices::TempLocation))
LAMEXP_MAKE_OPTION_B(customTempPathEnabled, false)
LAMEXP_MAKE_OPTION_B(dropBoxWidgetEnabled, true)
LAMEXP_MAKE_OPTION_I(dropBoxWidgetPositionX, -1)
LAMEXP_MAKE_OPTION_I(dropBoxWidgetPositionY, -1)
LAMEXP_MAKE_OPTION_S(favoriteOutputFolders, QString())
LAMEXP_MAKE_OPTION_B(forceStereoDownmix, false)
LAMEXP_MAKE_OPTION_B(hibernateComputer, false)

View File

@ -155,6 +155,8 @@ public:
LAMEXP_MAKE_OPTION_S(customTempPath)
LAMEXP_MAKE_OPTION_B(customTempPathEnabled)
LAMEXP_MAKE_OPTION_B(dropBoxWidgetEnabled)
LAMEXP_MAKE_OPTION_I(dropBoxWidgetPositionX)
LAMEXP_MAKE_OPTION_I(dropBoxWidgetPositionY)
LAMEXP_MAKE_OPTION_S(favoriteOutputFolders)
LAMEXP_MAKE_OPTION_B(forceStereoDownmix)
LAMEXP_MAKE_OPTION_B(hibernateComputer)