summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2011-03-02 02:05:07 -0500
committerJason A. Donenfeld <Jason@zx2c4.com>2011-03-02 02:05:07 -0500
commit8716cd14abd820f8419b4be58e884785d63fb6d2 (patch)
tree13c315f3b73788cf8dfe553123c02e8208b4e8d7
downloadTalkBrowser-master.tar.xz
TalkBrowser-master.zip
Initial commit.HEADmaster
-rw-r--r--TalkBrowser.pro10
-rw-r--r--Widget.cpp61
-rw-r--r--Widget.h31
-rw-r--r--main.cpp10
4 files changed, 112 insertions, 0 deletions
diff --git a/TalkBrowser.pro b/TalkBrowser.pro
new file mode 100644
index 0000000..3d7de7c
--- /dev/null
+++ b/TalkBrowser.pro
@@ -0,0 +1,10 @@
+QT += core gui webkit
+
+TARGET = TalkBrowser
+TEMPLATE = app
+
+
+SOURCES += main.cpp\
+ Widget.cpp
+
+HEADERS += Widget.h
diff --git a/Widget.cpp b/Widget.cpp
new file mode 100644
index 0000000..5ff6ea1
--- /dev/null
+++ b/Widget.cpp
@@ -0,0 +1,61 @@
+#include "Widget.h"
+#include <QWebView>
+#include <QPushButton>
+#include <QLineEdit>
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+
+Widget::Widget(QWidget *parent)
+ : QWidget(parent),
+ m_reloadButtonOn(true)
+{
+ QVBoxLayout *vLayout = new QVBoxLayout;
+ m_webView = new QWebView;
+ m_webView->setUrl(QUrl("http://www.zx2c4.com"));
+ QHBoxLayout *buttonLayout = new QHBoxLayout;
+ QPushButton *back = new QPushButton(tr("Back"));
+ QPushButton *forward = new QPushButton(tr("Forward"));
+ m_stopReload = new QPushButton(tr("Reload"));
+ m_entry = new QLineEdit;
+ buttonLayout->addWidget(back);
+ buttonLayout->addWidget(forward);
+ buttonLayout->addWidget(m_stopReload);
+ buttonLayout->addWidget(m_entry);
+ connect(back, SIGNAL(clicked()), m_webView, SLOT(back()));
+ connect(forward, SIGNAL(clicked()), m_webView, SLOT(forward()));
+ connect(m_stopReload, SIGNAL(clicked()), this, SLOT(doStopReload()));
+ connect(m_entry, SIGNAL(returnPressed()), this, SLOT(navigate()));
+ connect(m_webView, SIGNAL(urlChanged(QUrl)), this, SLOT(navigated(QUrl)));
+ connect(m_webView, SIGNAL(loadStarted()), this, SLOT(setReloadOff()));
+ connect(m_webView, SIGNAL(loadFinished(bool)), this, SLOT(setReloadOn()));
+ vLayout->addLayout(buttonLayout);
+ vLayout->addWidget(m_webView);
+ setLayout(vLayout);
+}
+void Widget::navigate()
+{
+ if (!m_entry->text().startsWith("http://") && !m_entry->text().startsWith("https://"))
+ m_entry->setText(m_entry->text().prepend("http://"));
+ m_webView->setUrl(QUrl(m_entry->text()));
+}
+void Widget::navigated(const QUrl &url)
+{
+ m_entry->setText(url.toString());
+}
+void Widget::doStopReload()
+{
+ if (m_reloadButtonOn)
+ m_webView->reload();
+ else
+ m_webView->stop();
+}
+void Widget::setReloadOff()
+{
+ m_reloadButtonOn = false;
+ m_stopReload->setText(tr("Stop"));
+}
+void Widget::setReloadOn()
+{
+ m_reloadButtonOn = true;
+ m_stopReload->setText(tr("Reload"));
+}
diff --git a/Widget.h b/Widget.h
new file mode 100644
index 0000000..40079e2
--- /dev/null
+++ b/Widget.h
@@ -0,0 +1,31 @@
+#ifndef WIDGET_H
+#define WIDGET_H
+
+#include <QWidget>
+#include <QUrl>
+class QWebView;
+class QLineEdit;
+class QPushButton;
+
+class Widget : public QWidget
+{
+ Q_OBJECT
+
+public:
+ Widget(QWidget *parent = 0);
+
+private:
+ QWebView *m_webView;
+ QLineEdit *m_entry;
+ QPushButton *m_stopReload;
+ bool m_reloadButtonOn;
+
+private slots:
+ void navigate();
+ void navigated(const QUrl &url);
+ void doStopReload();
+ void setReloadOn();
+ void setReloadOff();
+};
+
+#endif // WIDGET_H
diff --git a/main.cpp b/main.cpp
new file mode 100644
index 0000000..4ffc439
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,10 @@
+#include <QApplication>
+#include "Widget.h"
+
+int main(int argc, char *argv[])
+{
+ QApplication a(argc, argv);
+ Widget w;
+ w.show();
+ return a.exec();
+}