Tweaking...
This commit is contained in:
parent
08743d7113
commit
c2f893609c
@ -1,4 +1,19 @@
|
||||
<body>
|
||||
<center><h2>1.9.9.8</h2></center>
|
||||
|
||||
Fixed:
|
||||
<ul>
|
||||
<li>Informative buttons now do not accept focus.</li>
|
||||
</ul>
|
||||
|
||||
Added:
|
||||
|
||||
Changed:
|
||||
<ul>
|
||||
<li>Tab order and default widget changed for category/feed add/edit dialogs.</li>
|
||||
</ul>
|
||||
|
||||
<hr/>
|
||||
<center><h2>1.9.9.7</h2></center>
|
||||
|
||||
Fixed:
|
||||
|
@ -366,8 +366,7 @@ void FeedsModelStandardFeed::updateMessages(const QList<Message> &messages) {
|
||||
|
||||
// Used to check if give feed contains with message with given
|
||||
// title, url and date_created.
|
||||
// WARNING: One feed CANNOT contain
|
||||
// two (or more) messages with same
|
||||
// WARNING: One feed CANNOT contain two (or more) messages with same
|
||||
// AUTHOR AND TITLE AND URL AND DATE_CREATED.
|
||||
query_select.setForwardOnly(true);
|
||||
query_select.prepare("SELECT id, feed, date_created FROM Messages "
|
||||
|
@ -92,18 +92,6 @@ QSettings::Status Settings::setupSettings() {
|
||||
QDir(web_path).mkpath(web_path);
|
||||
QWebSettings::setIconDatabasePath(web_path);
|
||||
|
||||
// TODO: pridat http://qt-project.org/doc/qt-4.8/qwebsettings.html#WebAttribute-enum
|
||||
// - napsat nejakou webfactory ktera bude ke qwebsettings pristupovat
|
||||
// a upravovat dané vlastnosti
|
||||
// do FOrmSettings Webbrowser & proxy pridat tab "Advanced" a tam
|
||||
// naflakat vsecky zajimavy attributy
|
||||
/*QWebSettings::globalSettings()->setAttribute(QWebSettings::DnsPrefetchEnabled,
|
||||
true);
|
||||
QWebSettings::globalSettings()->setAttribute(QWebSettings::AutoLoadImages,
|
||||
false);
|
||||
QWebSettings::globalSettings()->setAttribute(QWebSettings::JavascriptEnabled,
|
||||
false);*/
|
||||
|
||||
qDebug("Initializing settings in '%s' (non-portable way).",
|
||||
qPrintable(QDir::toNativeSeparators(home_path_file)));
|
||||
}
|
||||
|
@ -13,8 +13,10 @@
|
||||
|
||||
QPointer<WebFactory> WebFactory::s_instance;
|
||||
|
||||
WebFactory::WebFactory(QObject *parent) : QObject(parent) {
|
||||
m_globalSettings = QWebSettings::globalSettings();
|
||||
WebFactory::WebFactory(QObject *parent)
|
||||
: QObject(parent), m_escapes(QMap<QString, QString>()),
|
||||
m_deEscapes(QMap<QString, QString>()),
|
||||
m_globalSettings(QWebSettings::globalSettings()) {
|
||||
}
|
||||
|
||||
WebFactory::~WebFactory() {
|
||||
@ -24,12 +26,9 @@ WebFactory::~WebFactory() {
|
||||
void WebFactory::loadState() {
|
||||
Settings *settings = Settings::instance();
|
||||
|
||||
switchJavascript(settings->value(APP_CFG_BROWSER, "enable_javascript", true).toBool(),
|
||||
false);
|
||||
switchImages(settings->value(APP_CFG_BROWSER, "enable_images", true).toBool(),
|
||||
false);
|
||||
switchPlugins(settings->value(APP_CFG_BROWSER, "enable_plugins", false).toBool(),
|
||||
false);
|
||||
switchJavascript(settings->value(APP_CFG_BROWSER, "enable_javascript", true).toBool(), false);
|
||||
switchImages(settings->value(APP_CFG_BROWSER, "enable_images", true).toBool(), false);
|
||||
switchPlugins(settings->value(APP_CFG_BROWSER, "enable_plugins", false).toBool(), false);
|
||||
}
|
||||
|
||||
bool WebFactory::openUrlInExternalBrowser(const QString &url) {
|
||||
@ -107,56 +106,50 @@ QString WebFactory::stripTags(QString text) {
|
||||
}
|
||||
|
||||
QString WebFactory::escapeHtml(const QString &html) {
|
||||
static QMap<QString, QString> escape_sequences = generetaEscapes();
|
||||
if (m_escapes.isEmpty()) {
|
||||
generetaEscapes();
|
||||
}
|
||||
|
||||
QList<QString> keys = escape_sequences.uniqueKeys();
|
||||
QString output = html;
|
||||
|
||||
foreach (const QString &key, keys) {
|
||||
output.replace(key, escape_sequences.value(key));
|
||||
foreach (const QString &key, m_escapes.keys()) {
|
||||
output = output.replace(key, m_escapes.value(key));
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
QString WebFactory::deEscapeHtml(const QString &text) {
|
||||
static QMap<QString, QString> deescape_sequences = generateDeescapes();
|
||||
if (m_deEscapes.isEmpty()) {
|
||||
generateDeescapes();
|
||||
}
|
||||
|
||||
QList<QString> keys = deescape_sequences.uniqueKeys();
|
||||
QString output = text;
|
||||
|
||||
foreach (const QString &key, keys) {
|
||||
output.replace(key, deescape_sequences.value(key));
|
||||
foreach (const QString &key, m_deEscapes.keys()) {
|
||||
output = output.replace(key, m_deEscapes.value(key));
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
QMap<QString, QString> WebFactory::generetaEscapes() {
|
||||
QMap<QString, QString> sequences;
|
||||
|
||||
sequences["<"] = '<';
|
||||
sequences[">"] = '>';
|
||||
sequences["&"] = '&';
|
||||
sequences["""] = '\"';
|
||||
sequences[" "] = ' ';
|
||||
sequences["±"] = "±";
|
||||
sequences["×"] = "×";
|
||||
sequences["'"] = '\'';
|
||||
|
||||
return sequences;
|
||||
void WebFactory::generetaEscapes() {
|
||||
m_escapes["<"] = '<';
|
||||
m_escapes[">"] = '>';
|
||||
m_escapes["&"] = '&';
|
||||
m_escapes["""] = '\"';
|
||||
m_escapes[" "] = ' ';
|
||||
m_escapes["±"] = "±";
|
||||
m_escapes["×"] = "×";
|
||||
m_escapes["'"] = '\'';
|
||||
}
|
||||
|
||||
QMap<QString, QString> WebFactory::generateDeescapes() {
|
||||
QMap<QString, QString> sequences;
|
||||
|
||||
sequences["<"] = "<";
|
||||
sequences[">"] = ">";
|
||||
sequences["&"] = "&";
|
||||
sequences["\""] = """;
|
||||
sequences["±"] = "±";
|
||||
sequences["×"] = "×";
|
||||
sequences["\'"] = "'";
|
||||
|
||||
return sequences;
|
||||
void WebFactory::generateDeescapes() {
|
||||
m_deEscapes["<"] = "<";
|
||||
m_deEscapes[">"] = ">";
|
||||
m_deEscapes["&"] = "&";
|
||||
m_deEscapes["\""] = """;
|
||||
m_deEscapes["±"] = "±";
|
||||
m_deEscapes["×"] = "×";
|
||||
m_deEscapes["\'"] = "'";
|
||||
}
|
||||
|
@ -24,7 +24,6 @@ class WebFactory : public QObject {
|
||||
QString stripTags(QString text);
|
||||
|
||||
// HTML entity escaping.
|
||||
// TODO: Optimize these methods.
|
||||
QString escapeHtml(const QString &html);
|
||||
QString deEscapeHtml(const QString &text);
|
||||
|
||||
@ -55,9 +54,11 @@ class WebFactory : public QObject {
|
||||
explicit WebFactory(QObject *parent = 0);
|
||||
|
||||
// Escape sequences generators.
|
||||
QMap<QString, QString> generetaEscapes();
|
||||
QMap<QString, QString> generateDeescapes();
|
||||
void generetaEscapes();
|
||||
void generateDeescapes();
|
||||
|
||||
QMap<QString, QString> m_escapes;
|
||||
QMap<QString, QString> m_deEscapes;
|
||||
QWebSettings *m_globalSettings;
|
||||
|
||||
// Singleton.
|
||||
|
@ -547,8 +547,8 @@ void FeedsView::initializeContextMenuCategoriesFeeds() {
|
||||
void FeedsView::initializeContextMenuEmptySpace() {
|
||||
m_contextMenuEmptySpace = new QMenu(tr("Context menu for feeds"), this);
|
||||
m_contextMenuEmptySpace->addActions(QList<QAction*>() <<
|
||||
FormMain::instance()->m_ui->m_actionUpdateAllFeeds);
|
||||
|
||||
FormMain::instance()->m_ui->m_actionUpdateAllFeeds <<
|
||||
FormMain::instance()->m_ui->m_actionAddStandardFeed);
|
||||
}
|
||||
|
||||
void FeedsView::setupAppearance() {
|
||||
|
@ -238,10 +238,12 @@ void FormStandardCategoryDetails::initialize() {
|
||||
m_ui->m_btnIcon->setMenu(m_iconMenu);
|
||||
|
||||
// Setup tab order.
|
||||
setTabOrder(m_ui->m_buttonBox, m_ui->m_cmbParentCategory);
|
||||
setTabOrder(m_ui->m_cmbParentCategory, m_ui->m_txtTitle->lineEdit());
|
||||
setTabOrder(m_ui->m_txtTitle->lineEdit(), m_ui->m_txtDescription->lineEdit());
|
||||
setTabOrder(m_ui->m_txtDescription->lineEdit(), m_ui->m_btnIcon);
|
||||
setTabOrder(m_ui->m_btnIcon, m_ui->m_buttonBox);
|
||||
|
||||
m_ui->m_txtTitle->lineEdit()->setFocus(Qt::TabFocusReason);
|
||||
}
|
||||
|
||||
void FormStandardCategoryDetails::loadCategories(const QList<FeedsModelCategory*> categories,
|
||||
|
@ -426,18 +426,25 @@ void FormStandardFeedDetails::initialize() {
|
||||
m_ui->m_cmbAutoUpdateType->addItem(tr("Do not auto-update at all"), QVariant::fromValue((int) FeedsModelStandardFeed::DontAutoUpdate));
|
||||
|
||||
// Set tab order.
|
||||
setTabOrder(m_ui->m_buttonBox, m_ui->m_cmbParentCategory);
|
||||
setTabOrder(m_ui->m_cmbParentCategory, m_ui->m_cmbType);
|
||||
setTabOrder(m_ui->m_cmbType, m_ui->m_txtTitle->lineEdit());
|
||||
setTabOrder(m_ui->m_txtTitle->lineEdit(), m_ui->m_txtDescription->lineEdit());
|
||||
setTabOrder(m_ui->m_txtDescription->lineEdit(), m_ui->m_txtUrl->lineEdit());
|
||||
setTabOrder(m_ui->m_txtUrl->lineEdit(), m_ui->m_cmbEncoding);
|
||||
|
||||
setTabOrder(m_ui->m_cmbType, m_ui->m_cmbEncoding);
|
||||
|
||||
setTabOrder(m_ui->m_cmbEncoding, m_ui->m_cmbAutoUpdateType);
|
||||
setTabOrder(m_ui->m_cmbAutoUpdateType, m_ui->m_spinAutoUpdateInterval);
|
||||
setTabOrder(m_ui->m_spinAutoUpdateInterval, m_ui->m_btnIcon);
|
||||
setTabOrder(m_ui->m_spinAutoUpdateInterval, m_ui->m_txtTitle->lineEdit());
|
||||
|
||||
|
||||
setTabOrder(m_ui->m_txtTitle->lineEdit(), m_ui->m_txtDescription->lineEdit());
|
||||
setTabOrder(m_ui->m_txtDescription->lineEdit(), m_ui->m_txtUrl->lineEdit());
|
||||
setTabOrder(m_ui->m_txtUrl->lineEdit(), m_ui->m_btnFetchMetadata);
|
||||
|
||||
setTabOrder(m_ui->m_btnFetchMetadata, m_ui->m_btnIcon);
|
||||
setTabOrder(m_ui->m_btnIcon, m_ui->m_gbAuthentication);
|
||||
setTabOrder(m_ui->m_gbAuthentication, m_ui->m_txtUsername->lineEdit());
|
||||
setTabOrder(m_ui->m_txtUsername->lineEdit(), m_ui->m_txtPassword->lineEdit());
|
||||
|
||||
m_ui->m_txtUrl->lineEdit()->setFocus(Qt::TabFocusReason);
|
||||
}
|
||||
|
||||
void FormStandardFeedDetails::loadCategories(const QList<FeedsModelCategory*> categories,
|
||||
|
@ -27,6 +27,7 @@ WidgetWithStatus::WidgetWithStatus(QWidget *parent)
|
||||
: QWidget(parent), m_wdgInput(NULL) {
|
||||
m_layout = new QHBoxLayout(this);
|
||||
m_btnStatus = new PlainToolButton(this);
|
||||
m_btnStatus->setFocusPolicy(Qt::NoFocus);
|
||||
|
||||
m_iconInformation = IconThemeFactory::instance()->fromTheme("dialog-information");
|
||||
m_iconWarning = IconThemeFactory::instance()->fromTheme("dialog-warning");
|
||||
|
Loading…
x
Reference in New Issue
Block a user