-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnw.cpp
143 lines (109 loc) · 4.22 KB
/
nw.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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/****************************************************************************
**
** NightWatch Video Navigator
** 2020 (c) Vladi Belperchinov-Shabanski
** https://github.com/cade-vs/nightwatch
**
****************************************************************************/
#include <QApplication>
#include <QScreen>
#include "nw.h"
#include "nw_main_win.h"
#include "nw_help.h"
QString videos_extensions_filter;
QString images_extensions_filter;
QStringList images_extensions_list;
QSettings Settings( "CSA", "NW2" );
QSettings LastPlayed( "CSA", "NW2_LP" );
QSettings LastLocations( "CSA", "NW2_LL" );
QSettings LocalSort( "CSA", "NW2_LS" );
QFont main_list_big_font;
QFont main_list_small_font;
QFont keypad_menu_font;
QFont status_bar_font;
QProcess player_process;
int opt_use_toolbar;
int opt_use_per_directory_sorting;
void save_fonts_to_settings()
{
Settings.beginGroup( "fonts" );
Settings.setValue( "main_list_big_font", main_list_big_font.toString() );
Settings.setValue( "main_list_small_font", main_list_small_font.toString() );
Settings.setValue( "keypad_menu_font", keypad_menu_font.toString() );
Settings.setValue( "status_bar_font", status_bar_font.toString() );
Settings.endGroup();
}
QString find_first_image_in_dir( QString dir )
{
QDir tdir;
tdir.cd( dir );
QStringList filters = { "*" };
QFileInfoList info_list = tdir.entryInfoList( filters );
for( int i = 0; i < info_list.count(); i++ )
{
QFileInfo fi = info_list.at( i );
if( fi.fileName() == "." ) continue;
if( fi.fileName() == ".." ) continue;
QString ext = "." + fi.suffix() + ".";
if( fi.isDir() || images_extensions_filter.indexOf( ext.toUpper() ) < 0 ) continue;
return QString( dir + "/" + fi.fileName() );
}
return QString();
}
QString find_image_for_file( QString dir, QString file_name )
{
QString mask = file_name;
mask.replace( QRegularExpression( "\\.([a-z_0-9]+)$" ), "." );
for( int i = 0; i < images_extensions_list.count(); i++ )
{
QString c = dir + "/" + mask + images_extensions_list[i];
if( QFile::exists( c ) ) return c;
}
return QString();
}
int main(int argc, char **argv)
{
QApplication app( argc, argv );
Q_INIT_RESOURCE(nw);
help_browser = NULL;
opt_use_toolbar = Settings.value( "use_toolbar", 1 ).toInt();
opt_use_per_directory_sorting = Settings.value( "opt_use_per_directory_sorting", 0 ).toInt();
videos_extensions_filter = Settings.value( "videos_extensions_filter", QString( DEFAULT_VIDEOS_EXTENSIONS_FILTER ) ).toString();
images_extensions_filter = Settings.value( "images_extensions_filter", QString( DEFAULT_IMAGES_EXTENSIONS_FILTER ) ).toString();
images_extensions_list = images_extensions_filter.split( "." );
images_extensions_list.removeFirst();
images_extensions_list.removeLast();
Settings.beginGroup( "fonts" );
main_list_big_font.fromString( Settings.value( "main_list_big_font", QFont( "Coolvetica", 24, QFont::Bold, false ).toString() ).toString() );
main_list_small_font.fromString( Settings.value( "main_list_small_font", QFont( "Coolvetica", 12, QFont::Bold, false ).toString() ).toString() );
keypad_menu_font.fromString( Settings.value( "keypad_menu_font", QFont( "Coolvetica", 20, QFont::Bold, false ).toString() ).toString() );
status_bar_font.fromString( Settings.value( "status_bar_font", QFont( "Coolvetica", 18, QFont::Bold, false ).toString() ).toString() );
Settings.endGroup();
QStringList args = app.arguments();
args.takeFirst(); // remove app name
QString target_dir = ".";
int opt_maximize = 0;
while( args.count() > 0 )
{
QString arg = args.takeFirst();
if( ! args.isEmpty() && ( arg == "--targetdir" || arg == "-d" ) )
{
target_dir = args.takeFirst();
continue;
}
if( arg == "--maximize" || arg == "-x" )
{
opt_maximize = 1;
continue;
}
}
NWMainWindow *main_win = new NWMainWindow();
main_win->loadDir( target_dir, 1 );
if( opt_maximize )
{
main_win->move( app.primaryScreen()->geometry().topLeft() );
main_win->resize( app.primaryScreen()->size() );
}
return app.exec();
}