/*
* This file is part of NixNote
* Copyright 2009 Randy Baumgarte
*
* This file may be licensed under the terms of of the
* GNU General Public License Version 2 (the ``GPL'').
*
* Software distributed under the License is distributed
* on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
* express or implied. See the GPL for the specific language
* governing rights and limitations.
*
* You should have received a copy of the GPL along with this
* program. If not, go to http://www.gnu.org/licenses/gpl.html
* or write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
package cx.fbn.nevernote.dialog;
import java.util.List;
import com.trolltech.qt.gui.QCheckBox;
import com.trolltech.qt.gui.QComboBox;
import com.trolltech.qt.gui.QFontDatabase;
import com.trolltech.qt.gui.QGridLayout;
import com.trolltech.qt.gui.QGroupBox;
import com.trolltech.qt.gui.QLabel;
import com.trolltech.qt.gui.QVBoxLayout;
import com.trolltech.qt.gui.QWidget;
import cx.fbn.nevernote.Global;
public class ConfigFontPage extends QWidget {
private final QCheckBox overrideFonts;
private final QComboBox fontList;
private final QComboBox fontSizeList;
private String font;
private String fontSize;
public ConfigFontPage(QWidget parent) {
font = Global.getDefaultFont();
fontSize = Global.getDefaultFontSize();
// Group Box
QGroupBox fontGroup = new QGroupBox(tr("New Note Defaults"));
QGridLayout fontLayout = new QGridLayout();
overrideFonts = new QCheckBox(tr("Override Defaults"));
overrideFonts.setCheckable(true);
overrideFonts.setChecked(Global.overrideDefaultFont());
overrideFonts.clicked.connect(this, "toggleFontOverride(Boolean)");
fontLayout.addWidget(overrideFonts,1,2);
// Fonts
fontList = new QComboBox();
fontList.activated.connect(this, "fontSelected(String)");
fontLayout.addWidget(new QLabel(tr("Font")),2,1);
fontLayout.addWidget(fontList,2,2);
// Font Sizes
fontSizeList = new QComboBox();
fontLayout.addWidget(fontSizeList,3,2);
fontSizeList.activated.connect(this, "fontSizeSelected(String)");
fontLayout.addWidget(new QLabel(tr("Size")),3,1);
fontGroup.setLayout(fontLayout);
fontLayout.setColumnStretch(2, 100);
toggleFontOverride(Global.overrideDefaultFont());
loadFonts();
loadSettings();
QVBoxLayout mainLayout = new QVBoxLayout();
mainLayout.addWidget(fontGroup);
mainLayout.addStretch(1);
setLayout(mainLayout);
}
private void toggleFontOverride(Boolean value) {
fontList.setEnabled(value);
fontSizeList.setEnabled(value);
}
private void loadFonts() {
QFontDatabase fonts = new QFontDatabase();
List<String> fontFamilies = fonts.families();
for (int i = 0; i < fontFamilies.size(); i++) {
if (font.equals(""))
font = fontFamilies.get(i);
fontList.addItem(fontFamilies.get(i));
if (i == 0) {
loadFontSize(fontFamilies.get(i));
}
}
}
// Load the font combo box based upon the font selected
private void loadFontSize(String name) {
QFontDatabase db = new QFontDatabase();
fontSizeList.clear();
List<Integer> points = db.pointSizes(name);
for (int i=0; i<points.size(); i++) {
if (fontSize.equals(""))
fontSize = points.get(i).toString();
fontSizeList.addItem(points.get(i).toString());
}
}
@SuppressWarnings("unused")
private void fontSelected(String font) {
this.font = font;
loadFontSize(font);
}
@SuppressWarnings("unused")
private void fontSizeSelected(String size) {
this.fontSize = size;
}
private void loadSettings() {
if (!Global.getDefaultFont().equals("")) {
int index = fontList.findText(Global.getDefaultFont());
fontList.setCurrentIndex(index);
}
if (!Global.getDefaultFontSize().equals("")) {
int index = fontSizeList.findText(Global.getDefaultFontSize());
fontSizeList.setCurrentIndex(index);
}
}
public String getFont() {
return font;
}
public String getFontSize() {
return fontSize;
}
public boolean overrideFont() {
return overrideFonts.isChecked();
}
}