-
Notifications
You must be signed in to change notification settings - Fork 124
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
wrappers can be drop into hold container from normal container, of course, wrappers in hold container can also be drop into normal container Change-Id: I21013beede7661507a9c389af21c35692b777dd4
- Loading branch information
1 parent
7c1ae86
commit fea6074
Showing
13 changed files
with
312 additions
and
39 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,108 @@ | ||
#include "holdcontainer.h" | ||
#include "../fashiontrayconstants.h" | ||
|
||
HoldContainer::HoldContainer(QWidget *parent) : QWidget(parent) | ||
HoldContainer::HoldContainer(TrayPlugin *trayPlugin, QWidget *parent) | ||
: AbstractContainer(trayPlugin, parent), | ||
m_mainBoxLayout(new QBoxLayout(QBoxLayout::Direction::LeftToRight)), | ||
m_holdSpliter(new QLabel) | ||
{ | ||
m_holdSpliter->setStyleSheet("background-color: rgba(255, 255, 255, 0.1);"); | ||
|
||
m_mainBoxLayout->setMargin(0); | ||
m_mainBoxLayout->setContentsMargins(0, 0, 0, 0); | ||
m_mainBoxLayout->setSpacing(TraySpace); | ||
|
||
QBoxLayout *preLayout = wrapperLayout(); | ||
QBoxLayout *newLayout = new QBoxLayout(QBoxLayout::Direction::LeftToRight); | ||
for (int i = 0; i < preLayout->count(); ++i) { | ||
newLayout->addItem(preLayout->takeAt(i)); | ||
} | ||
setWrapperLayout(newLayout); | ||
|
||
m_mainBoxLayout->addWidget(m_holdSpliter); | ||
m_mainBoxLayout->addLayout(newLayout); | ||
|
||
m_mainBoxLayout->setAlignment(m_holdSpliter, Qt::AlignCenter); | ||
m_mainBoxLayout->setAlignment(newLayout, Qt::AlignCenter); | ||
|
||
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); | ||
setLayout(m_mainBoxLayout); | ||
} | ||
|
||
bool HoldContainer::acceptWrapper(FashionTrayWidgetWrapper *wrapper) | ||
{ | ||
const QString &key = wrapper->itemKey() + HoldKeySuffix; | ||
return trayPlugin()->getValue(wrapper->itemKey(), key, false).toBool(); | ||
} | ||
|
||
void HoldContainer::addWrapper(FashionTrayWidgetWrapper *wrapper) | ||
{ | ||
AbstractContainer::addWrapper(wrapper); | ||
|
||
if (containsWrapper(wrapper)) { | ||
const QString &key = wrapper->itemKey() + HoldKeySuffix; | ||
trayPlugin()->saveValue(wrapper->itemKey(), key, true); | ||
} | ||
} | ||
|
||
void HoldContainer::refreshVisible() | ||
{ | ||
setVisible(expand() || !isEmpty()); | ||
} | ||
|
||
void HoldContainer::setDockPosition(const Dock::Position pos) | ||
{ | ||
if (pos == Dock::Position::Top || pos == Dock::Position::Bottom) { | ||
m_mainBoxLayout->setDirection(QBoxLayout::Direction::LeftToRight); | ||
} else{ | ||
m_mainBoxLayout->setDirection(QBoxLayout::Direction::TopToBottom); | ||
} | ||
|
||
AbstractContainer::setDockPosition(pos); | ||
} | ||
|
||
void HoldContainer::setExpand(const bool expand) | ||
{ | ||
m_holdSpliter->setVisible(expand); | ||
|
||
AbstractContainer::setExpand(expand); | ||
} | ||
|
||
QSize HoldContainer::totalSize() const | ||
{ | ||
QSize size = AbstractContainer::totalSize(); | ||
|
||
if (expand()) { | ||
if (dockPosition() == Dock::Position::Top || dockPosition() == Dock::Position::Bottom) { | ||
size.setWidth( | ||
size.width() | ||
+ SpliterSize | ||
+ TraySpace | ||
); | ||
size.setHeight(height()); | ||
} else { | ||
size.setWidth(width()); | ||
size.setHeight( | ||
size.height() | ||
+ SpliterSize | ||
+ TraySpace | ||
); | ||
} | ||
} | ||
|
||
return size; | ||
} | ||
|
||
void HoldContainer::resizeEvent(QResizeEvent *event) | ||
{ | ||
const QSize &mSize = event->size(); | ||
const Dock::Position dockPosition = trayPlugin()->dockPosition(); | ||
|
||
if (dockPosition == Dock::Position::Top || dockPosition == Dock::Position::Bottom) { | ||
m_holdSpliter->setFixedSize(SpliterSize, mSize.height() * 0.3); | ||
} else{ | ||
m_holdSpliter->setFixedSize(mSize.width() * 0.3, SpliterSize); | ||
} | ||
|
||
AbstractContainer::resizeEvent(event); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,17 +1,28 @@ | ||
#ifndef HOLDCONTAINER_H | ||
#define HOLDCONTAINER_H | ||
|
||
#include <QWidget> | ||
#include "abstractcontainer.h" | ||
|
||
class HoldContainer : public QWidget | ||
class HoldContainer : public AbstractContainer | ||
{ | ||
Q_OBJECT | ||
public: | ||
explicit HoldContainer(QWidget *parent = nullptr); | ||
explicit HoldContainer(TrayPlugin *trayPlugin, QWidget *parent = nullptr); | ||
|
||
signals: | ||
public: | ||
bool acceptWrapper(FashionTrayWidgetWrapper *wrapper) Q_DECL_OVERRIDE; | ||
void addWrapper(FashionTrayWidgetWrapper *wrapper) Q_DECL_OVERRIDE; | ||
void refreshVisible() Q_DECL_OVERRIDE; | ||
void setDockPosition(const Dock::Position pos) Q_DECL_OVERRIDE; | ||
void setExpand(const bool expand) Q_DECL_OVERRIDE; | ||
QSize totalSize() const Q_DECL_OVERRIDE; | ||
|
||
protected: | ||
void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; | ||
|
||
public slots: | ||
private: | ||
QBoxLayout *m_mainBoxLayout; | ||
QLabel *m_holdSpliter; | ||
}; | ||
|
||
#endif // HOLDCONTAINER_H | ||
#endif // HOLDCONTAINER_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.