OSDN Git Service

Ver0.13
[gefu/Gefu.git] / main.cpp
1 #include "common.h"\r
2 #include "mainwindow.h"\r
3 \r
4 #include <QApplication>\r
5 #include <QSettings>\r
6 #include <QDir>\r
7 \r
8 int main(int argc, char *argv[])\r
9 {\r
10     QApplication a(argc, argv);\r
11     a.setOrganizationName("miyabi");\r
12     a.setOrganizationDomain("rakusaba.jp");\r
13     a.setApplicationName("Gefu");\r
14 #if defined(Q_OS_MAC) || defined(Q_OS_MAC64) || defined(Q_OS_MACX)\r
15     a.setWindowIcon(QIcon(":/images/Gefu.icns"));\r
16 #else\r
17     a.setWindowIcon(QIcon(":/images/Gefu.png"));\r
18 #endif\r
19 \r
20     QSettings::setDefaultFormat(QSettings::IniFormat);\r
21     QSettings settings;\r
22     if (settings.value(IniKey_ResetOnBoot, false).toBool()) {\r
23         settings.clear();\r
24     }\r
25 \r
26     // オラはやっちまっただぁ…\r
27     QString strValue = settings.value("TerminalOption", "").toString();\r
28     if (!strValue.isEmpty()) {\r
29         settings.remove("TerminalOption");\r
30         settings.setValue(IniKey_TerminalOption, strValue);\r
31     }\r
32 \r
33     // 各オプションのデフォルト値を設定する\r
34     //>>>>> 起動と終了\r
35     if (settings.value(IniKey_ConfirmExit, "").toString().isEmpty()) {\r
36         settings.setValue(IniKey_ConfirmExit, true);\r
37         settings.setValue(IniKey_BootSizeSpec, "sizeRelative");\r
38         settings.setValue(IniKey_BootSizeAbs, QSize(800,600));\r
39         settings.setValue(IniKey_BootSizeRel, QSize(75,75));\r
40         settings.setValue(IniKey_BootPosSpec, "posCenter");\r
41         settings.setValue(IniKey_BootPosAbs, QPoint(0, 0));\r
42         settings.setValue(IniKey_BootPosRel, QPoint(0, 0));\r
43     }\r
44     //>>>>> 色とフォント\r
45     if (settings.value(IniKey_BoxFont, "").toString().isEmpty()) {\r
46         settings.setValue(IniKey_BoxFont, a.font());\r
47         settings.setValue(IniKey_BoxColorBg, QPalette().base().color());\r
48         settings.setValue(IniKey_BoxColorFg, QPalette().text().color());\r
49     }\r
50     if (settings.value(IniKey_ViewFont, "").toString().isEmpty()) {\r
51         settings.setValue(IniKey_ViewFont, a.font());\r
52         settings.setValue(IniKey_ViewColorBgMark, QColor(0,192,0));\r
53         settings.setValue(IniKey_ViewColorBgNormal, QPalette().base().color());\r
54         settings.setValue(IniKey_ViewColorFgHidden, QColor(128,128,128));\r
55         settings.setValue(IniKey_ViewColorFgMark, QColor(128,0,0));\r
56         settings.setValue(IniKey_ViewColorFgNormal, QPalette().text().color());\r
57         settings.setValue(IniKey_ViewColorFgReadonly, QColor(0,128,0));\r
58         settings.setValue(IniKey_ViewColorFgSystem, QColor(128,0,128));\r
59     }\r
60     //>>>>> ファイル操作\r
61     if (settings.value(IniKey_AutoCloseCopy, "").toString().isEmpty()) {\r
62         settings.setValue(IniKey_AutoCloseCopy, false);\r
63         settings.setValue(IniKey_AutoCloseDelete, false);\r
64         settings.setValue(IniKey_AutoCloseMove, false);\r
65         settings.setValue(IniKey_AutoCloseRename, false);\r
66     }\r
67     if (settings.value(IniKey_ConfirmCopy, "").toString().isEmpty()) {\r
68         settings.setValue(IniKey_ConfirmCopy, true);\r
69         settings.setValue(IniKey_ConfirmDelete, true);\r
70         settings.setValue(IniKey_ConfirmMove, true);\r
71         settings.setValue(IniKey_ConfirmRename, true);\r
72     }\r
73     if (settings.value(IniKey_DefaultOnCopy, "").toString().isEmpty())\r
74         settings.setValue(IniKey_DefaultOnCopy, "owDefIfNew");\r
75     if (settings.value(IniKey_MoveAfterCreateFolder, "").toString().isEmpty())\r
76         settings.setValue(IniKey_MoveAfterCreateFolder, false);\r
77     if (settings.value(IniKey_OpenAfterCreateFile, "").toString().isEmpty())\r
78         settings.setValue(IniKey_OpenAfterCreateFile, false);\r
79     //>>>>> パス設定\r
80     if (settings.value(IniKey_EditorPath, "").toString().isEmpty()) {\r
81 #if defined(Q_OS_WIN)\r
82         settings.setValue(IniKey_EditorPath, "notepad.exe");\r
83 #elif defined(Q_OS_MAC)\r
84         settings.setValue(IniKey_EditorPath, "/Applications/TextEdit.app");\r
85 #else\r
86         settings.setValue(IniKey_EditorPath, "gedit");\r
87 #endif\r
88         settings.setValue(IniKey_EditorOption, QQ("$P"));\r
89     }\r
90     if (settings.value(IniKey_TerminalPath, "").toString().isEmpty()) {\r
91 #if defined(Q_OS_WIN)\r
92         settings.setValue(IniKey_TerminalPath, "cmd.exe");\r
93         settings.setValue(IniKey_TerminalOption, "/k cd " + QQ("$D"));\r
94 #elif defined(Q_OS_MAC)\r
95         settings.setValue(IniKey_TerminalPath, "/Applications/Utilities/Terminal.app");\r
96         settings.setValue(IniKey_TerminalOption, "-c cd " + QQ("$D"));\r
97 #else\r
98         settings.setValue(IniKey_TerminalPath, "gnome-terminal");\r
99         settings.setValue(IniKey_TerminalOption, "-c cd " + QQ("$D"));\r
100 #endif\r
101     }\r
102     //>>>>> テキストビューア\r
103     if (settings.value(IniKey_ViewerFont, "").toString().isEmpty()) {\r
104         settings.setValue(IniKey_ViewerColorBg, QPalette().base().color());\r
105         settings.setValue(IniKey_ViewerColorFg, QPalette().text().color());\r
106         settings.setValue(IniKey_ViewerFont, a.font());\r
107         settings.setValue(IniKey_ViewerForceOpen, false);\r
108         settings.setValue(IniKey_ViewerInherit, true);\r
109         settings.setValue(IniKey_ViewerIgnoreExt, ViewerIgnoreExt());\r
110     }\r
111 \r
112     //>>>>> 隠しファイルの表示\r
113     if (settings.value(IniKey_ShowHidden, "").toString().isEmpty())\r
114         settings.setValue(IniKey_ShowHidden, false);\r
115     //>>>>> システムファイルの表示\r
116     if (settings.value(IniKey_ShowSystem, "").toString().isEmpty())\r
117         settings.setValue(IniKey_ShowSystem, false);\r
118     //>>>>> 最新版のチェック\r
119     if (settings.value(IniKey_CheckUpdates, "").toString().isEmpty())\r
120         settings.setValue(IniKey_CheckUpdates, true);\r
121     //>>>>> 最後のフォルダとソート方法\r
122     QString side = "Left/";\r
123     if (settings.value(side + IniKey_Dir, "").toString().isEmpty()) {\r
124         settings.setValue(side + IniKey_Dir, QDir::homePath());\r
125         settings.setValue(side + IniKey_SortBy, SortByName);\r
126         settings.setValue(side + IniKey_OrderBy, OrderByAsc);\r
127         settings.setValue(side + IniKey_PutDirs, PutDirsFirst);\r
128         settings.setValue(side + IniKey_IgnoreCase, true);\r
129     }\r
130     side = "Right/";\r
131     if (settings.value(side + IniKey_Dir, "").toString().isEmpty()) {\r
132         settings.setValue(side + IniKey_Dir, QDir::homePath());\r
133         settings.setValue(side + IniKey_SortBy, SortByName);\r
134         settings.setValue(side + IniKey_OrderBy, OrderByAsc);\r
135         settings.setValue(side + IniKey_PutDirs, PutDirsFirst);\r
136         settings.setValue(side + IniKey_IgnoreCase, true);\r
137     }\r
138 \r
139     MainWindow w;\r
140     w.show();\r
141 \r
142     return a.exec();\r
143 }\r
144 \r
145 QString ViewerIgnoreExt()\r
146 {\r
147     QStringList list;\r
148     // 画像系\r
149     list << "gif" << "jpg" << "jpeg" << "png" << "bmp" << "ico" << "ai";\r
150     list << "psd" << "xcf" << "tif" << "tiff" << "wmf";\r
151     // 音・動画系\r
152     list << "wav" << "mp3" << "ogg" << "midi" << "mid" << "aif" << "aiff";\r
153     list << "mov" << "mpg" << "mpeg" << "wma" << "wmv" << "asf" << "avi";\r
154     list << "flac" << "mkv";\r
155     // 実行ファイル系\r
156     list << "exe" << "com" << "lib" << "dll" << "msi" << "scr" << "sys";\r
157     list << "o" << "obj" << "ocx" << "a" << "so" << "app";\r
158     // アーカイブ系\r
159     list << "lzh" << "zip" << "cab" << "tar" << "rar" << "gz" << "tgz";\r
160     list << "bz2" << "xz" << "jar" << "7z";\r
161     // ドキュメント系\r
162     list << "pdf" << "doc" << "docx" << "xls" << "xlsx" << "ppt" << "pptx";\r
163     // フォント\r
164     list << "ttf" << "ttc";\r
165 \r
166     list.sort();\r
167 \r
168     return list.join(",");\r
169 }\r