AlbumShaper  1.0a3
dialogs/shortcuts.cpp
Go to the documentation of this file.
1 //==============================================
2 // copyright : (C) 2003-2005 by Will Stokes
3 //==============================================
4 // This program is free software; you can redistribute it
5 // and/or modify it under the terms of the GNU General
6 // Public License as published by the Free Software
7 // Foundation; either version 2 of the License, or
8 // (at your option) any later version.
9 //==============================================
10 
11 //Systemwide includes
12 #include <qfile.h>
13 #include <qtextstream.h>
14 #include <qstringlist.h>
15 
16 #include <qtextbrowser.h>
17 #include <qpushbutton.h>
18 #include <qlayout.h>
19 
20 #include <qkeysequence.h>
21 
22 //Projectwide includes
23 #include "shortcuts.h"
24 #include "../../config.h"
25 
26 //==============================================
27 Shortcuts::Shortcuts( QWidget* parent, const char* name ) : QDialog(parent,name)
28 {
29  resize( 800, 550 );
30 
31  //--
32  //Generate shortcuts HTML file
33 
34  //create/open xml file
35  QFile* shortcutsFile = new QFile(TEMP_DIR + QString("/shortcuts.html") );;
36  if(shortcutsFile->open(IO_WriteOnly))
37  {
38  //-----
39  QTextStream stream( shortcutsFile );
40  stream.setEncoding( QTextStream::Unicode );
41  //-----
42  stream << "<html><body>\n";
43  stream << "<table cellpadding='4'><tr>\n";
44  stream << " <td><img src='" << IMAGE_PATH << "miscImages/asHelpLogoSmall.png'></td>\n";
45  stream << " <td valign='middle'><font face='Arial, sans-serif' size='+3'>";
46  stream << "<b>" << tr("Keyboard Shortcuts") << "</b></font></td>\n";
47  stream << "</tr></table>\n";
48  stream << "<p>\n";
49  stream << "<font face='Arial, sans-serif'>\n";
50  stream << " <table width='100%' cellpadding='4' cellspacing='0'>\n";
51  stream << " <tr><td width='50%' bgcolor='lightgray'><b>" << tr("Action") << "</b></td>\n";
52  stream << " <td width='50%' bgcolor='lightgray'><b>" << tr("Shortcut") << "</b></td></tr>\n";
53  stream << " <!-- -------------------------------------------------- -->\n";
54  stream << " <tr><td colspan='2'><b><u>" << tr("Opening &amp; Saving") << "</u></b></td></tr>\n";
55  stream << " <tr><td>" << tr("New album") << "</td>\n";
56  stream << " <td>" << ((QString)QKeySequence(CTRL+Key_N)) << "</td></tr>\n";
57  stream << " <tr><td>" << tr("Open album") << "</td>\n";
58  stream << " <td>" << ((QString)QKeySequence(CTRL+Key_O)) << "</td></tr>\n";
59  stream << " <tr><td>" << tr("Open recent album") << "</td>\n";
60  stream << " <td>" << ((QString)QKeySequence(CTRL)) << "[" <<
61  ((QString)QKeySequence(Key_1)) << "-" <<
62  ((QString)QKeySequence(Key_9)) << "]" << "</td></tr>\n";
63  stream << " <tr><td>" << tr("Save album") << "</td>\n";
64  stream << " <td>" << ((QString)QKeySequence(CTRL+Key_S)) << "</td></tr>\n";
65  stream << " <tr><td>" << tr("Save album as") << "</td>\n";
66  stream << " <td>" << ((QString)QKeySequence(SHIFT+CTRL+Key_S)) << "</td></tr>\n";
67  stream << " <tr><td>" << tr("Quit") << "</td>\n";
68  stream << " <td>" << ((QString)QKeySequence(CTRL+Key_Q)) << "</td></tr>\n";
69  stream << " <!-- -------------------------------------------------- -->\n";
70  stream << " <tr><td colspan='2'><hr></td></tr>\n";
71  stream << " <tr><td colspan='2'><b><u>" << tr("Organizing") << "</u></b></td></tr>\n";
72  stream << " <tr><td>" << tr("Move to the first photo in the collection") << "</td>\n";
73  stream << " <td>" << ((QString)QKeySequence(Key_Home)) << "</td></tr>\n";
74  stream << " <tr><td>" << tr("Move to the last photo in the collection") << "</td>\n";
75  stream << " <td>" << ((QString)QKeySequence(Key_End)) << "</td></tr>\n";
76  stream << " <tr><td>" << tr("Select all photos") << "</td>\n";
77  stream << " <td>" << ((QString)QKeySequence(CTRL+Key_A)) << "</td></tr>\n";
78  stream << " <tr><td>" << tr("Deselect all photos") << "</td>\n";
79  stream << " <td>" << ((QString)QKeySequence(SHIFT+CTRL+Key_A)) << "</td></tr>\n";
80  stream << " <tr><td>" << tr("Rotate selected photos right") << "</td>\n";
81  stream << " <td>" << ((QString)QKeySequence(CTRL+Key_R)) << "</td></tr>\n";
82  stream << " <tr><td>" << tr("Rotate selected photos left") << "</td>\n";
83  stream << " <td>" << ((QString)QKeySequence(CTRL+Key_L)) << "</td></tr>\n";
84  stream << " <tr><td>" << tr("Delete selected photos") << "</td>\n";
85  stream << " <td>" << ((QString)QKeySequence(Key_Delete)) << "</td></tr>\n";
86  stream << " <tr><td>" << tr("Modify selected photo description") << "</td>\n";
87  stream << " <td>" << ((QString)QKeySequence(Key_Enter)) << "</td></tr>\n";
88  stream << " <tr><td>" << tr("Finish modifying selected photo description") << "</td>\n";
89  stream << " <td>" << ((QString)QKeySequence(Key_Escape)) << "</td></tr>\n";
90  stream << " <tr><td>" << tr("Edit first of selected photos") << "</td>\n";
91  stream << " <td>" << ((QString)QKeySequence(CTRL+Key_E)) << "</td></tr>\n";
92  stream << " <!-- -------------------------------------------------- -->\n";
93  stream << " <tr><td colspan='2'><hr></td></tr>\n";
94  stream << " <tr><td colspan='2'><b><u>Editing</u></b></td></tr>\n";
95  stream << " <tr><td>" << tr("Go to previous photo") << "</td>\n";
96  stream << " <td>" << ((QString)QKeySequence(Key_PageUp)) << "</td></tr>\n";
97  stream << " <tr><td>" << tr("Go to next photo") << "</td>\n";
98  stream << " <td>" << ((QString)QKeySequence(Key_PageDown)) << "</td></tr>\n";
99  stream << " <tr><td>" << tr("Go to first photo in the collection") << "</td>\n";
100  stream << " <td>" << ((QString)QKeySequence(Key_Home)) << "</td></tr>\n";
101  stream << " <tr><td>" << tr("Go to last photo in the collection") << "</td>\n";
102  stream << " <td>" << ((QString)QKeySequence(Key_End)) << "</td></tr>\n";
103  stream << " <tr><td>" << tr("Return to organizing") << "</td>\n";
104  stream << " <td>" << ((QString)QKeySequence(Key_Escape)) << "</td></tr>\n";
105  stream << " <!-- =-=-=-=-=-=-=-=-=-=-= -->\n";
106  stream << " <tr><td colspan='2'>&nbsp;</td></tr>\n";
107  stream << " <!-- =-=-=-=-=-=-=-=-=-=-= -->\n";
108  stream << " <tr><td>" << tr("Rotate photo left") << "</td>\n";
109  stream << " <td>" << ((QString)QKeySequence(CTRL+Key_L)) << "</td></tr>\n";
110  stream << " <tr><td>" << tr("Rotate photo right") << "</td>\n";
111  stream << " <td>" << ((QString)QKeySequence(CTRL+Key_R)) << "</td></tr>\n";
112  stream << " <tr><td>" << tr("Flip photo horizontally") << "</td>\n";
113  stream << " <td>" << ((QString)QKeySequence(CTRL+Key_F)) << "</td></tr>\n";
114  stream << " <tr><td>" << tr("Flip photo vertically") << "</td>\n";
115  stream << " <td>" << ((QString)QKeySequence(ALT+CTRL+Key_F)) << "</td></tr>\n";
116  stream << " <!-- =-=-=-=-=-=-=-=-=-=-= -->\n";
117  stream << " <tr><td colspan='2'>&nbsp;</td></tr>\n";
118  stream << " <!-- =-=-=-=-=-=-=-=-=-=-= -->\n";
119  stream << " <tr><td>" << tr("Select all") << "</td>\n";
120  stream << " <td>" << ((QString)QKeySequence(CTRL+Key_A)) << "</td></tr>\n";
121  stream << " <tr><td>" << tr("Deselect all") << "</td>\n";
122  stream << " <td>" << ((QString)QKeySequence(SHIFT+CTRL+Key_A)) << "</td></tr>\n";
123  stream << " <tr><td>" << tr("Nudge selection left") << "</td>\n";
124  stream << " <td>" << ((QString)QKeySequence(Key_Left)) << "</td></tr>\n";
125  stream << " <tr><td>" << tr("Nudge selection right") << "</td>\n";
126  stream << " <td>" << ((QString)QKeySequence(Key_Right)) << "</td></tr>\n";
127  stream << " <tr><td>" << tr("Nudge selection up") << "</td>\n";
128  stream << " <td>" << ((QString)QKeySequence(Key_Up)) << "</td></tr>\n";
129  stream << " <tr><td>" << tr("Nudge selection down") << "</td>\n";
130  stream << " <td>" << ((QString)QKeySequence(Key_Down)) << "</td></tr>\n";
131  stream << " <tr><td>" << tr("Expand selection") << "</td>\n";
132  stream << " <td>" << ((QString)QKeySequence(Key_Plus,Key_Equal)) << "</td></tr>\n";
133  stream << " <tr><td>" << tr("Shrink selection") << "</td>\n";
134  stream << " <td>" << ((QString)QKeySequence(Key_Minus,Key_Underscore)) << "</td></tr>\n";
135  stream << " <tr><td>" << tr("Resize selection") << "</td>\n";
136  stream << " <td>" << tr("Press and hold Shift, then Click and Drag Left / Right") << "</td></tr>\n";
137  stream << " <tr><td>" << tr("Rotate selection") << "</td>\n";
138  stream << " <td>" << (QString(tr("Press and hold %1, then Click selection"))
139  .arg( ((QString)QKeySequence(CTRL)) )) << "</td></tr>\n";
140  stream << " <!-- -------------------------------------------------- -->\n";
141  stream << " <tr><td colspan='2'><hr></td></tr>\n";
142  stream << " <tr><td colspan='2'><b><u>" << tr("Levels and Grain Editors") << "</u></b></td></tr>\n";
143  stream << " <tr><td>" << tr("Show alternative") << "</td>\n";
144  stream << " <td>" << QString(tr("Hold %1")).arg( ((QString)QKeySequence(CTRL)) ) << "</td></tr>\n";
145  stream << " <tr><td>" << tr("Apply") << "</td>\n";
146  stream << " <td>" << ((QString)QKeySequence(Key_Enter)) << "</td></tr>\n";
147  stream << " <tr><td>" << tr("Cancel") << "</td>\n";
148  stream << " <td>" << ((QString)QKeySequence(Key_Escape)) << "</td></tr>\n";
149  stream << " <!-- -------------------------------------------------- -->\n";
150  stream << " <tr><td colspan='2'><hr></td></tr>\n";
151  stream << " <tr><td colspan='2'><b><u>" << tr("Miscellaneous") << "</u></b></td></tr>\n";
152  stream << " <tr><td>" << tr("View album statistics") << "</td>\n";
153  stream << " <td>" << ((QString)QKeySequence(CTRL+Key_I)) << "</td></tr>\n";
154  stream << " <tr><td>" << tr("Album Shaper help") << "</td>\n";
155  stream << " <td>" << ((QString)QKeySequence(CTRL+Key_Question)) << "</td></tr>\n";
156  stream << " <!-- -------------------------------------------------- -->\n";
157  stream << " </table>\n";
158  stream << "</font>\n";
159  stream << "</body></html>\n";
160  shortcutsFile->close();
161  }
162  //--
163  //set window title
164  setCaption( tr("Album Shaper: Shortcuts"));
165  //--
166  //create shortcuts text browser
167  QTextBrowser* content = new QTextBrowser( this );
168 
169  content->setHScrollBarMode( QScrollView::AlwaysOff );
170  content->setVScrollBarMode( QScrollView::Auto );
171 
172 // content->setFrameStyle( QFrame::Panel | QFrame::Sunken );
173  content->mimeSourceFactory()->setFilePath( QStringList(TEMP_DIR) );
174  content->setSource( "shortcuts.html");
175  //--
176  //place handbook and close button in grid layout
177  QGridLayout* grid = new QGridLayout( this, 2, 2, 0);
178  grid->addMultiCellWidget( content, 0,0, 0,1 );
179  grid->setColStretch( 0, 1 );
180  grid->setRowStretch( 0, 1 );
181  //--
182  //PLATFORM_SPECIFIC_CODE - Close Button
183 #if (!defined(Q_OS_WIN) && !defined(Q_OS_MACX))
184  QPushButton* closeButton = new QPushButton( tr("Close"), this );
185  closeButton->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed );
186  closeButton->setDefault(true);
187  connect( closeButton, SIGNAL(clicked()), SLOT(close()) );
188  grid->addWidget( closeButton, 1, 0, Qt::AlignCenter );
189 #endif
190  //--
191 }
192 //==============================================
193 void Shortcuts::closeEvent( QCloseEvent* e)
194 {
195  QWidget::closeEvent( e );
196  emit closed();
197 }
198 //==============================================
200 {
201  QDialog::reject();
202  emit closed();
203 }
204 //==============================================
void closeEvent(QCloseEvent *e)
QString TEMP_DIR
Definition: config.cpp:23
QString IMAGE_PATH
Definition: config.cpp:18
Shortcuts(QWidget *parent=0, const char *name=0)
void closed()