[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/workspace/plasma/applets/quicklaunch
From: Aaron J. Seigo <aseigo () kde ! org>
Date: 2009-06-23 5:16:59
Message-ID: 1245734219.096292.16110.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 985535 by aseigo:
make dragging slightly less infuriating, slighlty more predictable and save at the \
right moments so we don't get duplicate icons
M +5 -6 QuicklaunchLayout.cpp
M +2 -2 QuicklaunchLayout.h
M +68 -24 quicklaunchApplet.cpp
--- trunk/KDE/kdebase/workspace/plasma/applets/quicklaunch/QuicklaunchLayout.cpp \
#985534:985535 @@ -30,12 +30,12 @@
{
}
-void QuicklaunchLayout::setRowCount(int rowCount)
+void QuicklaunchLayout::setPreferredRowCount(int rowCount)
{
m_rowCount = rowCount;
}
-int QuicklaunchLayout::rowCount() const
+int QuicklaunchLayout::preferredRowCount() const
{
return m_rowCount;
}
@@ -50,12 +50,11 @@
int column = 0;
while (itemAt(row, column))
{
- kDebug() << "Row is" << row << "column is" << column;
+ //kDebug() << "Row is" << row << "column is" << column;
if (row < m_rowCount - 1) {
row++;
- }
- else {
- kDebug() << "column++";
+ } else {
+ //kDebug() << "column++";
row = 0;
column++;
}
--- trunk/KDE/kdebase/workspace/plasma/applets/quicklaunch/QuicklaunchLayout.h \
#985534:985535 @@ -32,8 +32,8 @@
public:
QuicklaunchLayout(int rowCount, QGraphicsWidget *parentWidget, \
QGraphicsLayoutItem *parent); ~QuicklaunchLayout();
- void setRowCount(int rowCount);
- int rowCount() const;
+ void setPreferredRowCount(int rowCount);
+ int preferredRowCount() const;
void addItem(Plasma::IconWidget *icon);
QSizeF sizeHint(Qt::SizeHint which, const QSizeF & constraint = QSizeF()) \
const;
--- trunk/KDE/kdebase/workspace/plasma/applets/quicklaunch/quicklaunchApplet.cpp \
#985534:985535 @@ -129,7 +129,7 @@
KService::Ptr service = KService::serviceByStorageId(defaultApp);
if (service && service->isValid()) {
QString path = service->entryPath();
- kDebug() << path;
+ //kDebug() << path;
if (!path.isEmpty() && QDir::isAbsolutePath(path)) {
desktopFiles << path;
}
@@ -156,7 +156,7 @@
if (!m_innerLayout) {
return sizeHint;
}
- qreal newWidth = m_innerLayout->columnCount() * sizeHint.height() / qMax(1, \
m_innerLayout->rowCount()); + qreal newWidth = m_innerLayout->columnCount() * \
sizeHint.height() / qMax(1, m_innerLayout->preferredRowCount()); if (m_icons.size() \
> m_visibleIcons) { sizeHint.setWidth(newWidth + sizeHint.height());
} else {
@@ -193,7 +193,7 @@
if (m_dialogLayout) {
clearLayout(m_dialogLayout);
- m_dialogLayout->setRowCount((int)(size().height() / qMin(m_dialogIconSize, \
m_dialog->size().height()))); + \
m_dialogLayout->setPreferredRowCount((int)(size().height() / qMin(m_dialogIconSize, \
m_dialog->size().height()))); }
int rowCount;
@@ -207,10 +207,10 @@
rowCount = qMax(1, rowCount);
}
- m_innerLayout->setRowCount(rowCount);
+ m_innerLayout->setPreferredRowCount(rowCount);
int count = 0;
- kDebug() << m_icons.count() << "pixel icons in" << rowCount
- << "rows, with a max of" << m_visibleIcons << "visible";
+ //kDebug() << m_icons.count() << "pixel icons in" << rowCount
+ // << "rows, with a max of" << m_visibleIcons << "visible";
foreach (QuicklaunchIcon *icon, m_icons) {
//icon->setMinimumSize(minSize);
//icon->setMaximumSize(maxSize);
@@ -279,7 +279,7 @@
m_dialog->resize(m_dialogLayout->preferredSize().toSize());
//m_dialog->updateGeometry();
if (containment() && containment()->corona()) {
- kDebug() << "position:" << \
containment()->corona()->popupPosition(m_arrow, m_dialog->size()) << "dialog size:" \
<< m_dialog->size() << "layout preferred-size:" << \
m_dialogLayout->preferredSize().toSize(); + //kDebug() << "position:" << \
containment()->corona()->popupPosition(m_arrow, m_dialog->size()) << "dialog size:" \
<< m_dialog->size() << "layout preferred-size:" << \
m_dialogLayout->preferredSize().toSize();
m_dialog->move(containment()->corona()->popupPosition(m_arrow, \
m_dialog->size())); }
KWindowSystem::setState(m_dialog->winId(), NET::SkipTaskbar);
@@ -378,23 +378,8 @@
void QuicklaunchApplet::dropApp(QGraphicsSceneDragDropEvent *event, bool \
droppedOnDialog) {
- int pos;
- if (!droppedOnDialog) {
- QPointF point = mapFromScene(event->scenePos());
- int rowCount = m_innerLayout->rowCount();
- kDebug() << "RowCount = " << rowCount;
- int cols = static_cast<int>(ceil(1.0 * qMin(m_icons.size(), m_visibleIcons) \
/ rowCount));
- int col = static_cast<int>((round(point.x()) * cols / \
m_innerLayout->geometry().width()));
- col = (col >= cols) ? col - 1 : col;
- int row = static_cast<int>(floor(point.y() * rowCount / \
m_innerLayout->geometry().height()));
- row = (row >= m_innerLayout->rowCount()) ? row - 1 : row;
- kDebug() << "row = " << row << "cols = " << cols << "col = " << col;
- pos = row * cols + col;
- kDebug() << "position is " << pos;
- if (pos >= m_icons.size()) {
- pos = m_icons.size() - 1;
- }
- } else {
+ int pos = 0;
+ if (droppedOnDialog) {
QPointF point = event->pos();
for(int i = 0; i < m_dialogLayout->count(); i++) {
QGraphicsLayoutItem *item = m_dialogLayout->itemAt(i);
@@ -405,7 +390,60 @@
break;
}
}
+ } else if (!m_icons.isEmpty()) {
+ //qreal left, top, bottom, right;
+ //getContentsMargins(&left, &top, &bottom, &right);
+ QPointF point = mapFromScene(event->scenePos());//) + QPointF(left, top);
+ int rowCount = m_innerLayout->rowCount();
+ //kDebug() << "RowCount = " << rowCount;
+ int colCount = m_innerLayout->columnCount();
+ int colWidth = m_innerLayout->geometry().width();
+ int col = 0;
+ while (col < colCount) {
+
+ if (col == colCount || col * rowCount >= m_icons.count()) {
+ break;
+ }
+
+ //kDebug() << col << m_icons.at(col * rowCount)->geometry().left() << \
point.x(); + if (m_icons.at(col * rowCount)->geometry().left() > \
point.x()) { + //kDebug() << "broke col at" << col;
+ break;
+ }
+
+ ++col;
+ }
+
+ //int col = static_cast<int>((round(point.x()) * colCount / \
m_innerLayout->geometry().width())); + //col = (col >= colCount) ? colCount - \
1 : col; + //int row = static_cast<int>(floor(point.y() * rowCount / \
m_innerLayout->geometry().height())); + //row = (row >= \
m_innerLayout->rowCount()) ? m_innerLayout->rowCount() - 1 : row; + //kDebug() \
<< "doing rows"; + int row = -1;
+ while (row < rowCount) {
+ ++row;
+ if (row == rowCount || row == m_icons.count()) {
+ //kDebug() << "row made rowCount" << row;
+ break;
+ }
+
+ //kDebug() << "row: " << row << m_icons.count();
+ if (m_icons.at(row)->geometry().center().y() > point.y()) {
+ //kDebug() << "broke row at" << row;
+ break;
+ }
+ }
+
+ //kDebug() << "row = " << row << "rows = " << rowCount << "cols = " << \
colCount << "col = " << col; + if (rowCount > 1) {
+ pos = row + rowCount * (col - 1);
+ } else {
+ pos = col;
+ }
+
+ //kDebug() << "position is " << pos;
}
+
if (dropHandler(pos, event->mimeData())) {
event->setDropAction(Qt::MoveAction);
event->accept();
@@ -444,6 +482,11 @@
m_icons.removeAll(icon);
icon->hide();
icon->deleteLater();
+
+ KConfigGroup cg = config();
+ saveState(cg);
+ emit configNeedsSaving();
+
performUiRefactor();
}
}
@@ -511,6 +554,7 @@
QuicklaunchIcon *container = new QuicklaunchIcon(appUrl, text, icon, \
genericName, this); container->installEventFilter(this);
+
m_icons.insert(index, container);
if (isNewIcon) {
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic