diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-07-01 18:54:41 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-07-01 18:54:41 +0000 |
| commit | b8b7804fcc229e9c34e18dc3ec6dfafd2e3485b0 (patch) | |
| tree | 1a63bd6647225ae445adf01dceb8271632723a83 /src/ui/dock.cpp | |
| parent | bb31a704825263be94b5528a2e362898af109cf9 (diff) | |
| download | qmmp-b8b7804fcc229e9c34e18dc3ec6dfafd2e3485b0.tar.gz qmmp-b8b7804fcc229e9c34e18dc3ec6dfafd2e3485b0.tar.bz2 qmmp-b8b7804fcc229e9c34e18dc3ec6dfafd2e3485b0.zip | |
moved skinned ui to separate plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2252 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/ui/dock.cpp')
| -rw-r--r-- | src/ui/dock.cpp | 266 |
1 files changed, 0 insertions, 266 deletions
diff --git a/src/ui/dock.cpp b/src/ui/dock.cpp deleted file mode 100644 index a4e5d52d2..000000000 --- a/src/ui/dock.cpp +++ /dev/null @@ -1,266 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Ilya Kotov * - * forkotov02@hotmail.ru * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#include <QAction> -#include <QDesktopWidget> -#include <QApplication> - -#include "dock.h" - - -Dock *Dock::m_instance = 0; - -Dock *Dock::instance() -{ - if (!m_instance) - m_instance = new Dock(); - return m_instance; -} - -Dock::Dock (QObject *parent) - : QObject (parent) -{ - m_instance = this; - m_mainWidget = 0; -} - -Dock::~Dock() -{ - m_instance = 0; -} - -void Dock::setMainWidget (QWidget *widget) -{ - m_mainWidget = widget; - m_widgetList.prepend (widget); - m_dockedList.prepend (false); -} - - -QPoint Dock::snap (QPoint npos, QWidget* mv, QWidget* st) -{ - int nx = npos.x() - st->x(); - int ny = abs (npos.y() - st->y() + mv->height()); - - if (abs (nx) < 13 && ny < 13) //above - npos.rx() = st->x(); - if (ny < 13 && nx > -mv->width() && nx < st->width()) - npos.ry() = st->y() - mv->height(); - nx = abs (npos.x() + mv->width() - st->x() - st->width()); - if (nx < 13 && ny < 13) - npos.rx() = st->x() + st->width() - mv->width(); - - /***********/ - nx = npos.x() - st->x(); - ny = abs (npos.y() - st->y() - st->height()); - - if (abs (nx) < 13 && ny < 13) //near - npos.rx() = st->x(); - if (ny < 13 && nx > -mv->width() && nx < st->width()) - npos.ry() = st->y() + st->height(); - nx = abs (npos.x() + mv->width() - st->x() - st->width()); - if (nx < 13 && ny < 13) - npos.rx() = st->x() + st->width() - mv->width(); - /**************/ - nx = abs (npos.x() - st->x() + mv->width()); - ny = npos.y() - st->y(); - - if (nx < 13 && abs (ny) < 13) //left - npos.ry() = st->y(); - if (nx < 13 && ny > -mv->height() && ny < st->height()) - npos.rx() = st->x() - mv->width(); - - ny = abs (npos.y() + mv->height() - st->y() - st->height()); - if (nx < 13 && ny < 13) - npos.ry() = st->y() + st->height() - mv->height(); - /*****************/ - nx = abs (npos.x() - st->x() - st->width()); - ny = npos.y() - st->y(); - - if (nx < 13 && abs (ny) < 13) //right - npos.ry() = st->y(); - if (nx < 13 && ny > -mv->height() && ny < st->height()) - npos.rx() = st->x() + st->width(); - - ny = abs (npos.y() + mv->height() - st->y() - st->height()); - if (nx < 13 && ny < 13) - npos.ry() = st->y() + st->height() - mv->height(); - - return (npos); -} - -void Dock::addWidget (QWidget *widget) -{ - m_widgetList.append (widget); - m_dockedList.append (false); - widget->addActions(m_actions); - -} - -void Dock::move (QWidget* mv, QPoint npos) -{ - QRect DesktopRect = QApplication::desktop()->availableGeometry(m_mainWidget); - if(npos.y() < DesktopRect.y()) - npos.setY(DesktopRect.y()); - if(npos.x() < DesktopRect.x()) - npos.setX(DesktopRect.x()); - if (mv == m_mainWidget) - { - - for (int i = 1; i<m_widgetList.size(); ++i) - { - if (!m_dockedList.at (i)) - { - if (m_widgetList.at (i)->isVisible()) - npos = snap (npos, mv, m_widgetList.at (i)); - - } - else - { - QPoint pos = QPoint (npos.x() + x_list.at (i), - npos.y() + y_list.at (i)); - for (int j = 1; j<m_widgetList.size(); ++j) - { - if (!m_dockedList.at (j) && m_widgetList.at (j)->isVisible()) - { - pos = snap (pos, m_widgetList.at (i), m_widgetList.at (j)); - npos = QPoint (pos.x() - x_list.at (i), - pos.y() - y_list.at (i)); - } - } - } - } - mv->move (npos); - for (int i = 1; i<m_widgetList.size(); ++i) - { - if (m_dockedList.at (i)) - m_widgetList.at (i)->move(npos.x() + x_list.at (i), - npos.y() + y_list.at (i)); - } - } - else - { - for (int i = 0; i<m_widgetList.size(); ++i) - { - m_dockedList[i] = false; - if (mv != m_widgetList.at (i) && !m_dockedList.at (i) && m_widgetList.at (i)->isVisible()) - { - npos = snap (npos, mv, m_widgetList.at (i)); - } - } - mv->move (npos); - } -} - -void Dock::calculateDistances() -{ - x_list.clear(); - y_list.clear(); - foreach (QWidget *w, m_widgetList) - { - if (w!=m_mainWidget) - { - x_list.append (- m_mainWidget->x() + w->x()); - y_list.append (- m_mainWidget->y() + w->y()); - } - else - { - x_list.prepend (0); - y_list.prepend (0); - } - } -} - -void Dock::updateDock() -{ - QWidget *mv = m_widgetList.at (0); - for (int j = 1; j<m_widgetList.size(); ++j) - { - QWidget *st = m_widgetList.at (j); - m_dockedList[j] = isDocked (mv, st); - } - for (int j = 1; j<m_widgetList.size(); ++j) - { - if (m_dockedList[j]) - for (int i = 1; i<m_widgetList.size(); ++i) - { - if (!m_dockedList[i]) - { - mv = m_widgetList.at (j); - QWidget *st = m_widgetList.at (i); - m_dockedList[i] = isDocked (mv, st); - } - } - } - -} - -bool Dock::isDocked (QWidget* mv, QWidget* st) -{ - int nx = mv->x() - st->x(); - int ny = abs (mv->y() - st->y() + mv->height()); - if (ny < 2 && nx > -mv->width() && nx < st->width()) //above - return true; - - /***********/ - nx = mv->x() - st->x(); - ny = abs (mv->y() - st->y() - st->height()); - if (ny < 2 && nx > -mv->width() && nx < st->width()) //near - return true; - - /**************/ - nx = abs (mv->x() - st->x() + mv->width()); - ny = mv->y() - st->y(); - if (nx < 2 && ny > -mv->height() && ny < st->height()) //left - return true; - - /*****************/ - nx = abs (mv->x() - st->x() - st->width()); - ny = mv->y() - st->y(); - if (nx < 2 && ny > -mv->height() && ny < st->height()) //right - return true; - return false; -} - -void Dock::addActions (QList<QAction *> actions) -{ - m_actions << actions; - for (int i = 0; i<m_widgetList.size(); ++i) - m_widgetList.at (i)->addActions (actions); -} - -bool Dock::isUnder(QWidget* upper, QWidget* nether, int dy) -{ - int nx = upper->x() - nether->x(); - return abs (upper->y() + upper->height() -dy - nether->y()) < 2 && - nx > -upper->width() && nx < nether->width(); -} - -void Dock::align(QWidget* w, int dy) -{ - for (int i = 0; i<m_dockedList.size(); ++i) - { - if (m_widgetList.at(i) != w && isUnder(w, m_widgetList.at(i), dy)) - { - m_widgetList.at(i)->move(m_widgetList.at(i)->x(), m_widgetList.at(i)->y()+dy); - align(m_widgetList.at(i), dy); - } - } -} |
