summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opie-smb/qsmb.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/noncore/net/opie-smb/qsmb.cpp b/noncore/net/opie-smb/qsmb.cpp
index b978b46..e2ddc7f 100644
--- a/noncore/net/opie-smb/qsmb.cpp
+++ b/noncore/net/opie-smb/qsmb.cpp
@@ -1,168 +1,176 @@
1#include "qsmb.h" 1#include "qsmb.h"
2#include <qpushbutton.h> 2#include <qpushbutton.h>
3#include <qpe/qpeapplication.h> 3#include <qpe/qpeapplication.h>
4 4
5#include <string.h> 5#include <string.h>
6#include <qstring.h> 6#include <qstring.h>
7#include <qstringlist.h> 7#include <qstringlist.h>
8#include <qdir.h> 8#include <qdir.h>
9#include <qfileinfo.h> 9#include <qfileinfo.h>
10#include <qtabwidget.h> 10#include <qtabwidget.h>
11 11
12#include <qpe/process.h> 12#include <qpe/process.h>
13#include <qlabel.h> 13#include <qlabel.h>
14#include <qlineedit.h> 14#include <qlineedit.h>
15#include <qcombobox.h> 15#include <qcombobox.h>
16#include <qstringlist.h> 16#include <qstringlist.h>
17#include <qcheckbox.h> 17#include <qcheckbox.h>
18#include <qtextview.h> 18#include <qtextview.h>
19#include <qmessagebox.h> 19#include <qmessagebox.h>
20#include <qtextstream.h> 20#include <qtextstream.h>
21 21
22 22
23#include <pthread.h> 23#include <pthread.h>
24#include <signal.h> 24#include <signal.h>
25#include <ctype.h> 25#include <ctype.h>
26 26
27 27
28#include <netinet/in.h> 28#include <netinet/in.h>
29#include <arpa/inet.h> 29#include <arpa/inet.h>
30#include <rpc/clnt.h> 30#include <rpc/clnt.h>
31 31
32#include <sys/vfs.h> 32#include <sys/vfs.h>
33#include <mntent.h> 33#include <mntent.h>
34 34
35// #include <opie2/odebug.h> 35// #include <opie2/odebug.h>
36// using namespace Opie::Core; 36// using namespace Opie::Core;
37 37
38 38
39Qsmb::Qsmb( QWidget* parent, const char* name, WFlags fl ) 39Qsmb::Qsmb( QWidget* parent, const char* name, WFlags fl )
40 : FormQPESMBBase( parent, name, fl ) 40 : FormQPESMBBase( parent, name, fl )
41{ 41{
42 connect(CBHost, SIGNAL(activated(int)), this, SLOT(hostSelected(int))); 42 connect(CBHost, SIGNAL(activated(int)), this, SLOT(hostSelected(int)));
43 connect(DoItBtn, SIGNAL(clicked()), this, SLOT(DoItClicked())); 43 connect(DoItBtn, SIGNAL(clicked()), this, SLOT(DoItClicked()));
44 connect(UnmountBtn, SIGNAL(clicked()), this, SLOT(umountIt())); 44 connect(UnmountBtn, SIGNAL(clicked()), this, SLOT(umountIt()));
45 connect(BtnScan, SIGNAL(clicked()), this, SLOT(scanClicked())); 45 connect(BtnScan, SIGNAL(clicked()), this, SLOT(scanClicked()));
46 connect(BtnClear, SIGNAL(clicked()), this, SLOT(clear())); 46 connect(BtnClear, SIGNAL(clicked()), this, SLOT(clear()));
47 47
48 mountpt->setEditable(true); 48 mountpt->setEditable(true);
49 mountpt->insertItem("/mnt/samba1",-1); 49 mountpt->insertItem("/mnt/samba1",-1);
50 mountpt->insertItem("/mnt/samba2",-1); 50 mountpt->insertItem("/mnt/samba2",-1);
51 mountpt->insertItem("/mnt/samba3",-1); 51 mountpt->insertItem("/mnt/samba3",-1);
52 52
53// TextViewOutput 53 setTabOrder(BtnScan, username);
54 setTabOrder(username, password);
55 setTabOrder(password, CBHost);
56 setTabOrder(CBHost, TextViewOutput);
57 setTabOrder(TextViewOutput, mountpt);
58 setTabOrder(mountpt, DoItBtn);
59 setTabOrder(DoItBtn, UnmountBtn);
54 60
55 top_element = NULL; 61 top_element = NULL;
56 scanning = false; 62 scanning = false;
57} 63}
58 64
59Qsmb::~Qsmb() 65Qsmb::~Qsmb()
60{ 66{
61} 67}
62 68
63void Qsmb::clear() 69void Qsmb::clear()
64{ 70{
65 if (scanning) return; 71 if (scanning) return;
66 ListViewScan->clear(); 72 ListViewScan->clear();
67 TextViewOutput->setText(""); 73 TextViewOutput->setText("");
74 CBHost->clear();
68 top_element = NULL; 75 top_element = NULL;
69} 76}
70 77
71void Qsmb::scanClicked() 78void Qsmb::scanClicked()
72{ 79{
73 if (scanning) return; 80 if (scanning) return;
74 pthread_create(&tpid, NULL, runit, (void *)this); 81 pthread_create(&tpid, NULL, runit, (void *)this);
75} 82}
76 83
77void Qsmb::DoItClicked() 84void Qsmb::DoItClicked()
78{ 85{
79 86
80 if( !ListViewScan->selectedItem()) { 87 if( !ListViewScan->selectedItem()) {
81 QMessageBox::warning(this, tr("Error"),tr("<p>No share selected!</p>")); 88 QMessageBox::warning(this, tr("Error"),tr("<p>No share selected!</p>"));
82 return; 89 return;
83 } 90 }
84 if (scanning) return; 91 if (scanning) return;
85 pthread_create(&tpid, NULL, runitm, (void *)this); 92 pthread_create(&tpid, NULL, runitm, (void *)this);
86} 93}
87 94
88void* runit(void* arg) 95void* runit(void* arg)
89{ 96{
90 Qsmb* caller = (Qsmb*)arg; 97 Qsmb* caller = (Qsmb*)arg;
91 caller->scan(); 98 caller->scan();
92 return(0); 99 return(0);
93} 100}
94 101
95void* runitm(void* arg) 102void* runitm(void* arg)
96{ 103{
97 Qsmb* caller = (Qsmb*)arg; 104 Qsmb* caller = (Qsmb*)arg;
98 caller->DoIt(); 105 caller->DoIt();
99 return(0); 106 return(0);
100} 107}
101 108
102void Qsmb::scan() 109void Qsmb::scan()
103{ 110{
104 if (scanning) return; 111 clear();
112// if (scanning) return;
105 scanning = true; 113 scanning = true;
106 114
107 QString match; 115 QString match;
108 QString cmd; 116 QString cmd;
109 LScan->setText("Scanning..."); 117 LScan->setText("Scanning...");
110 qApp->processEvents(); 118 qApp->processEvents();
111 119
112 sockaddr_in my_addr; 120 sockaddr_in my_addr;
113 get_myaddress( &my_addr); 121 get_myaddress( &my_addr);
114 122
115 QString ip = inet_ntoa( my_addr.sin_addr); 123 QString ip = inet_ntoa( my_addr.sin_addr);
116 qWarning("IP Address : "+ip); 124 qWarning("IP Address : "+ip);
117 125
118 match = ip.left(5); 126 match = ip.left(5);
119 127
120 QStringList ccmd; 128 QStringList ccmd;
121 TextViewOutput->append("smbfind"); 129 TextViewOutput->append("smbfind");
122 130
123 QFile lmhosts("/etc/samba/lmhosts"); 131 QFile lmhosts("/etc/samba/lmhosts");
124 QTextStream lms(&lmhosts); 132 QTextStream lms(&lmhosts);
125 lmhosts.open(IO_WriteOnly); 133 lmhosts.open(IO_WriteOnly);
126 lms << "127.0.0.1 localhost\n"; 134 lms << "127.0.0.1 localhost\n";
127 135
128 /* parse output and display in ListViewScan */ 136 /* parse output and display in ListViewScan */
129 ccmd = "smbfind"; 137 ccmd = "smbfind";
130 runCommand(ccmd); 138 runCommand(ccmd);
131 139
132 QTextStream s(&out, IO_ReadOnly); 140 QTextStream s(&out, IO_ReadOnly);
133 141
134 while ( !s.atEnd() ) { 142 while ( !s.atEnd() ) {
135 QString ip_addr, host, output; 143 QString ip_addr, host, output;
136 QString tmp = s.readLine(); 144 QString tmp = s.readLine();
137 bool ok; 145 bool ok;
138 tmp.left(1).toInt( &ok, 10 ); 146 tmp.left(1).toInt( &ok, 10 );
139 if(ok) { 147 if(ok) {
140 QStringList token = QStringList::split(' ', tmp ); 148 QStringList token = QStringList::split(' ', tmp );
141 ip_addr = token[0]; 149 ip_addr = token[0];
142 host = token[1]; 150 host = token[1];
143 CBHost->insertItem( host, -1); 151 CBHost->insertItem( host, -1);
144 lms << ip_addr+" "+host+"\n"; 152 lms << ip_addr+" "+host+"\n";
145 } 153 }
146 } 154 }
147 lmhosts.close(); 155 lmhosts.close();
148 156
149 TextViewOutput->append("\n\n============================================\n"); 157 TextViewOutput->append("\n\n============================================\n");
150 LScan->setText(""); 158 LScan->setText("");
151 scanning = false; 159 scanning = false;
152} 160}
153 161
154void Qsmb::hostSelected(int /*index*/ ) 162void Qsmb::hostSelected(int /*index*/ )
155{ 163{
156 QListViewItem *element; 164 QListViewItem *element;
157// QListViewItem *parent; 165// QListViewItem *parent;
158 166
159 QString text = CBHost->currentText(); 167 QString text = CBHost->currentText();
160 ListViewScan->clear(); 168 ListViewScan->clear();
161 169
162 if (scanning) return; 170 if (scanning) return;
163 scanning = true; 171 scanning = true;
164 172
165 QString cmd; 173 QString cmd;
166 QStringList ccmd; 174 QStringList ccmd;
167 175
168 LScan->setText("Scanning..."); 176 LScan->setText("Scanning...");