Skip to content

Commit 8976ae4

Browse files
committed
First Release.
-- Apps are sorted alphabetiavally, searching is fully functional. -- Scrolling works perfectly. -- Freely customizable through its config file in ~/.config/rocket -- Looks beautiful
1 parent fd31e3a commit 8976ae4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+400
-138
lines changed

Rocket/Rocket.pro.user

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<!DOCTYPE QtCreatorProject>
3-
<!-- Written by QtCreator 4.8.2, 2021-04-11T00:11:03. -->
3+
<!-- Written by QtCreator 4.8.2, 2021-04-13T01:05:13. -->
44
<qtcreator>
55
<data>
66
<variable>EnvironmentId</variable>

Rocket/icongrid/icongrid.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,6 @@ void IconGrid::mouseMoveEvent(QMouseEvent *event)
8989
event->ignore();
9090
}
9191

92-
void IconGrid::resizeEvent(QResizeEvent *event)
93-
{
94-
95-
}
9692

9793
IconGrid::~IconGrid()
9894
{

Rocket/icongrid/icongrid.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ class IconGrid : public QWidget
1717
//explicit IconGrid(QWidget * parent, int rows, int columns);
1818
~IconGrid();
1919
void paintEvent(QPaintEvent *event);
20-
void resizeEvent(QResizeEvent *event);
2120
void mouseMoveEvent(QMouseEvent *event);
2221

2322
int getMaxNumberOfRows() {return m_rows;}
@@ -31,6 +30,7 @@ class IconGrid : public QWidget
3130
void setMaxNumberOfColumns(int cols) {m_cols = cols;}
3231
void addItem(IconGridItem * item);
3332

33+
QGridLayout * getLayout(){return m_layout;}
3434
int getActiveElement(){return m_active_element;}
3535
void setActiveElement(int element);
3636
void unhighlightAll();

Rocket/icongrid/icongriditem.cpp

Lines changed: 50 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
#include <QFont>
55
#include <QDebug>
66
#include <QMouseEvent>
7+
#include <QDrag>
8+
#include <QMimeData>
79

810
#include "icongriditem.h"
911
#include "icongriditemcanvas.h"
@@ -19,6 +21,7 @@ IconGridItem::IconGridItem(QWidget *parent, KApplication application, QSize item
1921
m_item_size = itemsize;
2022
setFixedSize(m_item_size);
2123
setMouseTracking(true);
24+
setAcceptDrops(true);
2225

2326
//QPalette p;
2427
//setAutoFillBackground(true);
@@ -54,13 +57,56 @@ IconGridItem::IconGridItem(QWidget *parent, KApplication application, QSize item
5457

5558
void IconGridItem::paintEvent(QPaintEvent *event)
5659
{
57-
if (!m_highlighted) return;
5860
QPainter painter(this);
59-
painter.setBrush(QBrush(ConfigManager.getBaseColour(),Qt::BrushStyle::SolidPattern));
60-
painter.setPen(ConfigManager.getBaseColour());
61-
painter.drawRoundedRect(0,0,width(),height()*0.99,15,15);
61+
/*if (m_hoveredover_during_drag_and_drop)
62+
{
63+
QPen pen = painter.pen();
64+
pen.setWidth(3);
65+
pen.setColor(ConfigManager.getSecondaryColour());
66+
painter.setPen(pen);
67+
//painter.drawLine(0,0,0,height());
68+
painter.drawRoundedRect(0,0,width()*0.99,height()*0.99,15,15);
69+
}*/
70+
if(m_highlighted)
71+
{
72+
painter.setBrush(QBrush(ConfigManager.getBaseColour(),Qt::BrushStyle::SolidPattern));
73+
painter.setPen(ConfigManager.getBaseColour());
74+
painter.drawRoundedRect(0,0,width()*0.99,height()*0.99,15,15);
75+
}
6276
}
6377

78+
/*
79+
void IconGridItem::dragEnterEvent(QDragEnterEvent *event)
80+
{
81+
qDebug() << "griditem: dragging into " << m_application.name();
82+
//m_hoveredover_during_drag_and_drop = true;
83+
update();
84+
event->ignore();
85+
}
86+
87+
/*
88+
void IconGridItem::dropEvent(QDropEvent *event)
89+
{
90+
qDebug() << "griditem: dropped" << event->mimeData()->text() << "on"<< m_application.name();
91+
event->ignore();
92+
}
93+
94+
95+
void IconGridItem::dragMoveEvent(QDragMoveEvent *event)
96+
{
97+
qDebug() << "griditem: dragMoveIconGriditem";
98+
event->accept();
99+
}
100+
101+
102+
void IconGridItem::dragLeaveEvent(QDragLeaveEvent *event)
103+
{
104+
qDebug() << "griditem: dragging left";
105+
m_hoveredover_during_drag_and_drop = false;
106+
update();
107+
event->ignore();
108+
}
109+
*/
64110
void IconGridItem::resizeEvent(QResizeEvent *event)
65111
{
66112
m_canvas->update();

Rocket/icongrid/icongriditem.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ class IconGridItem : public QWidget
2020
void mouseMoveEvent(QMouseEvent * event);
2121
void paintEvent(QPaintEvent *event);
2222
void initIconSize();
23+
//void dragEnterEvent(QDragEnterEvent *event);
24+
//void dragMoveEvent(QDragMoveEvent *event);
25+
//void dropEvent(QDropEvent *event);
26+
//void dragLeaveEvent(QDragLeaveEvent *event);
2327
void resizeEvent(QResizeEvent *event);
2428
~IconGridItem();
2529

@@ -37,6 +41,7 @@ class IconGridItem : public QWidget
3741
QGridLayout * m_layout = new QGridLayout(this);
3842
QLabel * m_name_label;
3943
QPixmap map;
44+
bool m_hoveredover_during_drag_and_drop = false;
4045

4146
QSize m_item_size;
4247
std::vector<int> m_ratio_rows = RocketStyle::icongrid_ratio_rows;

Rocket/icongrid/icongriditemcanvas.cpp

Lines changed: 73 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,29 @@
11
#include "stylingparams.h"
22
#include <QPainter>
3-
#include <KMessageBox>
43
#include <QDebug>
54
#include <QMouseEvent>
65
#include <QTimer>
76
#include <QApplication>
87
#include <QGridLayout>
8+
#include <QDrag>
9+
#include <QMimeData>
10+
#include <QMimeData>
11+
912
#include <KRun>
13+
#include <KService>
14+
#include <KDesktopFile>
1015

1116
#include "icongriditemcanvas.h"
1217
#include "kapplication.h"
1318
#include "stylingparams.h"
19+
#include "tools/rocketconfigmanager.h"
1420

1521
IconGridItemCanvas::IconGridItemCanvas(QWidget *parent, KApplication application)
1622
{
1723
m_icon = application.icon();
1824
m_application = application;
1925
setMouseTracking(true);
26+
setAcceptDrops(true);
2027

2128
//QPalette p;
2229
//setAutoFillBackground(true);
@@ -41,13 +48,40 @@ void IconGridItemCanvas::mousePressEvent(QMouseEvent *event)
4148
{
4249
m_clicked = true;
4350
m_pressPos = QCursor::pos();
44-
QTimer * timer = new QTimer();
45-
connect(timer,&QTimer::timeout,this,&IconGridItemCanvas::longpressanimation);
46-
timer->start(1000);
47-
timer->setSingleShot(true);
48-
event->ignore();
51+
m_longclicktimer = new QTimer();
52+
connect(m_longclicktimer,&QTimer::timeout,this,&IconGridItemCanvas::m_starticondragging);
53+
m_longclicktimer->setSingleShot(true);
54+
//m_longclicktimer->start(1000);
4955
}
50-
event->accept();
56+
event->ignore();
57+
}
58+
59+
void IconGridItemCanvas::setDraggable(bool draggable)
60+
{
61+
m_draggable = draggable;
62+
}
63+
64+
void IconGridItemCanvas::m_starticondragging()
65+
{
66+
if (!m_draggable)
67+
{
68+
return;
69+
}
70+
if (m_clicked) //i.e. cursor has not moved a lot
71+
{
72+
iconDraggingOn(true);
73+
QDrag *drag = new QDrag(this);
74+
QMimeData *mime = new QMimeData;
75+
mime->setText(m_application.name());
76+
drag->setMimeData(mime);
77+
drag->setPixmap(m_application.icon().pixmap(size()));
78+
drag->setHotSpot(QPoint(drag->pixmap().width()/2,drag->pixmap().height()/2));
79+
Qt::DropAction dropAction = drag->exec();
80+
}
81+
else {
82+
iconDraggingOn(false);
83+
}
84+
m_clicked = false;
5185
}
5286

5387
void IconGridItemCanvas::mouseMoveEvent(QMouseEvent *event)
@@ -56,6 +90,7 @@ void IconGridItemCanvas::mouseMoveEvent(QMouseEvent *event)
5690
int dy = QCursor::pos().y()-m_pressPos.y();
5791
if (dx*dx+dy*dy>=RocketStyle::click_tolerance && m_clicked)
5892
{
93+
m_longclicktimer->stop();
5994
m_clicked = false;
6095
}
6196
event->ignore();
@@ -67,35 +102,51 @@ void IconGridItemCanvas::mouseReleaseEvent(QMouseEvent *event)
67102
{
68103
m_clicked = false;
69104
QList<QUrl> urls;
70-
if (m_application.terminal())
105+
KDesktopFile d(m_application.entrypath());
106+
KService s(&d,m_application.entrypath());
107+
if (KRun::run(s,urls,nullptr))
71108
{
72-
if(KRun::run("konsole -e "+m_application.exec(),urls,nullptr,m_application.name(),m_application.iconname()))
73-
{
74-
qApp->exit();
75-
}
76-
}
77-
else {
78-
if(KRun::run(m_application.exec(),urls,nullptr,m_application.name(),m_application.iconname())) {
79-
qApp->exit();
80-
}
109+
qApp->exit();
81110
}
82-
111+
event->accept();
83112
}
84113
else
85114
{
86115
event->ignore();
87116
}
88117
}
118+
/*
119+
void IconGridItemCanvas::dragEnterEvent(QDragEnterEvent *event)
120+
{
121+
qDebug() << "dragging into" << m_application.name();
122+
event->acceptProposedAction();
123+
}
89124
90-
void IconGridItemCanvas::longpressanimation()
125+
void IconGridItemCanvas::dropEvent(QDropEvent *event)
91126
{
92-
if (m_clicked)
127+
qDebug() << "dropped" << event->mimeData()->text() << "on"<< m_application.name();
128+
iconDraggingOn(false);
129+
event->acceptProposedAction();
130+
}
131+
132+
void IconGridItemCanvas::dragMoveEvent(QDragMoveEvent *event)
133+
{
134+
//qDebug() << "dragMoveIconGriditem";
135+
if (event->source()!=this)
93136
{
94-
KMessageBox::information(nullptr,"move_animation");
95-
m_clicked = false;
137+
move(pos().x()+(width()/2-event->pos().x())*0.1,pos().y());
96138
}
139+
event->accept();
97140
}
98141
142+
void IconGridItemCanvas::dragLeaveEvent(QDragLeaveEvent *event)
143+
{
144+
qDebug() << "dragging left";
145+
iconDraggingOn(false);
146+
update();
147+
event->ignore();
148+
}
149+
*/
99150
void IconGridItemCanvas::resizeEvent(QResizeEvent *event)
100151
{
101152

Rocket/icongrid/icongriditemcanvas.h

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include <QWidget>
66
#include <QIcon>
77
#include <QDateTime>
8+
#include <QTimer>
89
#include "kapplication.h"
910
#include "stylingparams.h"
1011

@@ -16,20 +17,30 @@ class IconGridItemCanvas : public QWidget
1617
void mousePressEvent(QMouseEvent *event);
1718
void mouseMoveEvent(QMouseEvent *event);
1819
void mouseReleaseEvent(QMouseEvent *event);
20+
//void dragEnterEvent(QDragEnterEvent *event);
21+
//void dragMoveEvent(QDragMoveEvent *event);
22+
//void dropEvent(QDropEvent *event);
23+
//void dragLeaveEvent(QDragLeaveEvent *event);
1924
void resizeEvent(QResizeEvent *event);
2025
~IconGridItemCanvas();
2126

27+
public slots:
28+
void setDraggable(bool draggable);
2229

23-
public slots:
24-
void longpressanimation();
30+
signals:
31+
void iconDraggingOn(bool on);
2532

2633
private:
34+
void m_starticondragging();
35+
2736
QIcon m_icon;
2837
QPixmap pixmap;
2938
KApplication m_application;
3039

3140
bool m_clicked = false;
41+
bool m_draggable = true;
3242
QPoint m_pressPos;
43+
QTimer * m_longclicktimer = new QTimer();
3344

3445

3546
protected:

Rocket/icongrid/kapplication.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include "kapplication.h"
22

3-
KApplication::KApplication(QString name, QString iconname, QIcon icon, QString exec, QString comment, bool terminal, QStringList keywords, QString genericname, QString untranslatedGenericName, QStringList categories)
3+
KApplication::KApplication(QString name, QString iconname, QIcon icon, QString exec, QString comment, bool terminal, QStringList keywords, QString genericname, QString untranslatedGenericName, QStringList categories, QString entrypath)
44
{
55
m_name = name;
66
m_iconname = iconname;
@@ -12,6 +12,7 @@ KApplication::KApplication(QString name, QString iconname, QIcon icon, QString e
1212
m_genericname = genericname;
1313
m_untranslatedGenericName = untranslatedGenericName;
1414
m_categories = categories;
15+
m_entrypath = entrypath;
1516
}
1617

1718
KApplication::KApplication()
@@ -29,5 +30,6 @@ bool operator==(const KApplication& a, const KApplication& b)
2930
if (a.m_genericname!=b.m_genericname) return false;
3031
if (a.m_untranslatedGenericName!=b.m_untranslatedGenericName) return false;
3132
if (a.m_categories!=b.m_categories) return false;
33+
if (a.m_entrypath!=b.m_entrypath) return false;
3234
return true;
3335
}

Rocket/icongrid/kapplication.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
class KApplication
88
{
99
public:
10-
KApplication(QString name, QString iconname, QIcon icon, QString exec, QString comment, bool terminal, QStringList keywords, QString genericname, QString untranslatedGenericName, QStringList categories);
10+
KApplication(QString name, QString iconname, QIcon icon, QString exec, QString comment, bool terminal, QStringList keywords, QString genericname, QString untranslatedGenericName, QStringList categories, QString entrypath);
1111
KApplication();
1212
QString name(){return m_name;}
1313
QString iconname(){return m_iconname;}
@@ -19,6 +19,7 @@ class KApplication
1919
QString genericname() {return m_genericname;}
2020
QString untranslatedGenericName() {return m_untranslatedGenericName;}
2121
QStringList categories() {return m_categories;}
22+
QString entrypath(){return m_entrypath;}
2223
friend bool operator==(const KApplication& a, const KApplication& b);
2324

2425
private:
@@ -32,6 +33,7 @@ class KApplication
3233
QString m_genericname;
3334
QString m_untranslatedGenericName;
3435
QStringList m_categories;
36+
QString m_entrypath;
3537
};
3638

3739
#endif // KAPPLICATION_H

0 commit comments

Comments
 (0)