1 /*  smplayer, GUI front-end for mplayer.
2     Copyright (C) 2006-2021 Ricardo Villalba <ricardo@smplayer.info>
3 
4     This program is free software; you can redistribute it and/or modify
5     it under the terms of the GNU General Public License as published by
6     the Free Software Foundation; either version 2 of the License, or
7     (at your option) any later version.
8 
9     This program is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12     GNU General Public License for more details.
13 
14     You should have received a copy of the GNU General Public License
15     along with this program; if not, write to the Free Software
16     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17 */
18 
19 #include "fontcache.h"
20 #include <QProcess>
21 #include <QApplication>
22 #include <QDir>
23 
FontCacheDialog(QWidget * parent,Qt::WindowFlags f)24 FontCacheDialog::FontCacheDialog(QWidget * parent, Qt::WindowFlags f)
25 	: QProgressDialog(parent, f)
26 {
27 	setWindowTitle(tr("SMPlayer is initializing"));
28 	setLabelText(tr("Creating a font cache..."));
29 
30 	process = new QProcess(this);
31 	process->setProcessChannelMode( QProcess::MergedChannels );
32 	//connect(process, SIGNAL(readyReadStandardOutput()), this, SLOT(readOutput()));
33 
34 	connect(this, SIGNAL(canceled()), process, SLOT(kill()));
35 }
36 
~FontCacheDialog()37 FontCacheDialog::~FontCacheDialog()
38 {
39 }
40 
run(QString mplayer_bin,QString file)41 void FontCacheDialog::run(QString mplayer_bin, QString file) {
42 	qDebug("FontCacheDialog::run: mplayer_bin: '%s', file: '%s'", mplayer_bin.toUtf8().constData(), file.toUtf8().constData());
43 
44 	QRegExp rx_scanning_font("Scanning file");
45 
46 	int max = 100;
47 	QDir fon_dir("c:/windows/fonts");
48 	QStringList fon_files = fon_dir.entryList(QStringList() << "*.*", QDir::Files);
49 	qDebug("FontCacheDialog::run: number of fonts: %d", fon_files.count());
50 	if (fon_files.count() > 2) max = fon_files.count();
51 	setMaximum(max);
52 
53 	QStringList arg;
54 	arg << "-fontconfig" << "-ass" << "-vo" << "null" << "-ao" << "null";
55 	arg << file;
56 
57 	process->start(mplayer_bin, arg);
58 	if (!process->waitForStarted()) {
59 		qDebug("FontCacheDialog::run: failed to start process");
60 		return;
61 	}
62 
63 	int fonts = 0;
64 	int v = 0;
65 	QByteArray line;
66 	while (process->state() == QProcess::Running) {
67 		qApp->processEvents();
68 		if (process->waitForReadyRead(100)) {
69 			line = process->readLine().trimmed();
70 			qDebug("FontCacheDialog::run: line: %s", line.constData());
71 			if (rx_scanning_font.indexIn(line) > -1) {
72 				fonts++;
73 				v++;
74 				if (v >= (max-1)) v = 0;
75 				setValue(v);
76 			}
77 		}
78 	}
79 	qDebug("FontCacheDialog::run: %d fonts found", fonts);
80 }
81 
82 /*
83 void FontCacheDialog::readOutput() {
84 	int v = 0;
85 	QByteArray line;
86 	while (process->canReadLine()) {
87 		line = process->readLine().trimmed();
88 		qDebug("line: %s", line.constData());
89 		v++;
90 		setValue(v);
91 	}
92 }
93 */
94 
95 #include "moc_fontcache.cpp"
96 
97