-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfindbutton.cpp
83 lines (66 loc) · 2.36 KB
/
findbutton.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include "findbutton.h"
#include <QDir>
#include <QCompleter>
#include <QProcess>
FindButton::FindButton()
{
actionWidget = new QWidgetAction(this);
actionWidget->setObjectName("ActionWidget");
findLineEdite = new QLineEdit;
connect(findLineEdite,SIGNAL(textChanged(QString)),this,SIGNAL(findTextChanged(QString)));
connect(findLineEdite,SIGNAL(returnPressed()),this,SLOT(execFindApplication()));
findLineEdite->setFrame(false);
findLineEdite->setStyleSheet("background-color: transparent;");
findLineEdite->setPlaceholderText("type text");
// QStringList dirs = QString(getenv("PATH")).split(":");
// foreach(QString dir,dirs)
// {
// // qDebug()<<dir;
// chargeCompliterDirs( dir);
// }
// m_wordList.removeDuplicates();
// QCompleter *completer = new QCompleter(m_wordList, this);
// completer->setCaseSensitivity(Qt::CaseInsensitive);
// completer->setCompletionMode(QCompleter::InlineCompletion);
// findLineEdite->setCompleter(completer);
actionWidget->setDefaultWidget(findLineEdite);
}
//------------------------------------------------------------------
void FindButton::execFindApplication()
{
QString exec=findLineEdite->text();
if(exec.isEmpty())return;
QProcess process;
process.setWorkingDirectory(QDir::homePath());
process.startDetached(exec,QStringList(),QDir::homePath());
// qDebug()<<exec;
}
/************************************
***تحميل قائمة بالبرامج المثبتة*****
************************************/
void FindButton::chargeCompliterDirs(QString dir)
{
chargeCompliterFiles(dir);
//qDebug()<<dir;
QString subdir;
QDir dirS(dir);
foreach ( subdir, dirS.entryList(QDir::AllDirs| QDir::NoSymLinks| QDir::NoDotAndDotDot )){
chargeCompliterDirs(dir+"/"+subdir);
}
}
void FindButton::chargeCompliterFiles(QString dir)
{
QString subfile;
QDir dirS(dir);
foreach ( subfile, dirS.entryList(QDir::AllEntries)){
QFileInfo fi(dir+"/"+subfile);
if(fi.isExecutable()&&fi.isFile()){
QString name=fi.baseName();
m_wordList.append(name);
}
}
}
void FindButton::setFocus()
{
findLineEdite->setFocus();
}