OSDN Git Service

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