diff options
Diffstat (limited to 'doc/codesnippets/doc/src/snippets/code')
6 files changed, 329 insertions, 0 deletions
diff --git a/doc/codesnippets/doc/src/snippets/code/doc_src_phonon-api.qdoc b/doc/codesnippets/doc/src/snippets/code/doc_src_phonon-api.qdoc new file mode 100644 index 000000000..3f0771e37 --- /dev/null +++ b/doc/codesnippets/doc/src/snippets/code/doc_src_phonon-api.qdoc @@ -0,0 +1,192 @@ +//! [0] +class PushStream (AbstractMediaStream): + def __init__(self, parent = None): + AbstractMediaStream.__init(self, parent) + self.timer = QTimer(self) + self.setStreamSize(self.getMediaStreamSize()) + + self.timer.timeout.connect(self.moreData) + self.timer.setInterval(0) + + @Slot() + def moreData(self): + data = self.getMediaData() + if data.isEmpty(): + self.endOfData() + else: + self.writeData(data) + + def needData(self): + self.timer.start() + self.moreData() + + def enoughData(self): + self.timer.stop() +//! [0] + + +//! [1] +class PushStream (AbstractMediaStream): + def __init__(self, parent = None): + AbstractMediaStream.__init(self, parent) + self.setStreamSize(self.getMediaStreamSize()) + + @Slot() + def needData(self): + data = self.getMediaData() + if data.isEmpty(): + self.endOfData() + else: + self.writeData(data) +//! [1] + + +//! [2] +self.seekStream(0) +//! [2] + + +//! [3] +m = MediaObject() +fileName = "/home/foo/bar.ogg" +url = QUrl("http://www.example.com/stream.mp3") +someBuffer = QBuffer() +m.setCurrentSource(fileName) +m.setCurrentSource(url) +m.setCurrentSource(someBuffer) +m.setCurrentSource(Phonon.Cd) +//! [3] + + +//! [4] +player = VideoPlayer(Phonon.VideoCategory, parentWidget) +player.finished.connect(player.deleteLater) +player.play(url) +//! [4] + + +//! [5] +audioPlayer.load(url) +audioPlayer.play() +//! [5] + + +//! [6] +media = MediaObject(self) +media.finished.connect(self.slotFinished) +media.setCurrentSource("/home/username/music/filename.ogg") + +# ... + +media.play() +//! [6] + + +//! [7] +media.setCurrentSource(":/sounds/startsound.ogg") +media.enqueue("/home/username/music/song.mp3") +media.enqueue(":/sounds/endsound.ogg") +//! [7] + + +//! [8] + media.setCurrentSource(":/sounds/startsound.ogg") + media.aboutToFinish.connect(lambda : media.enqueue("/home/username/music/song.mp3")) +//! [8] + + +//! [9] +x = 200 +media.setTickInterval(x) +assert(x == producer.tickInterval()) +//! [9] + + +//! [10] +x = 200 +media.setTickInterval(x) +assert(x >= producer.tickInterval() and x <= * producer.tickInterval()) +//! [10] + + +//! [11] +//! [12] + self.media.hasVideoChanged[bool].connect(hasVideoChanged) + self.media.setCurrentSource("somevideo.avi") + self.media.hasVideo() # returns false + + @Slot(bool) + def hasVideoChanged(self, b): + # b == true + media.hasVideo() # returns true +//! [12] +//! [11] + +//! [13] +self.setMetaArtist(media.metaData("ARTIST")) +self.setMetaAlbum(media.metaData("ALBUM")) +self.setMetaTitle(media.metaData("TITLE")) +self.setMetaDate(media.metaData("DATE")) +self.setMetaGenre(media.metaData("GENRE")) +self.setMetaTrack(media.metaData("TRACKNUMBER")) +self.setMetaComment(media.metaData("DESCRIPTION")) +//! [13] + + +//! [14] +url = QUrl("http://www.example.com/music.ogg") +media.setCurrentSource(url) +//! [14] + + +//! [15] +progressBar.setRange(0, 100) # this is the default +self.media.bufferStatus[int].connect(progressBar.setValue) +//! [15] + + +//! [16] +BackendCapabilities.notifier.capabilitiesChanged.connect(...) +//! [16] + + +//! [17] +cb = QComboBox(parentWidget) +model = ObjectDescriptionModel(cb) +model.setModelData(BackendCapabilities.availableAudioOutputDevices()) +cb.setModel(model) +cb.setCurrentIndex(0) # select first entry +//! [17] + + +//! [18] +cbIndex = cb.currentIndex() +selectedDevice = model.modelData(cbIndex) +//! [18] + + +//! [19] +path = Phonon.createPath(...) +effect = Effect(this) +path.insertEffect(effect) +//! [19] + + +//! [20] +media = MediaObject() +output = AudioOutput(Phonon.MusicCategory) +path = Phonon.createPath(media, output) +assert(path.isValid()) # for this simple case the path should always be + # valid - there are unit tests to ensure it +# insert an effect +effectList = BackendCapabilities.availableAudioEffects() +if effectList: + effect = path.insertEffect(effectList[0]) +//! [20] + + +//! [21] +media = MediaObject(parent) +vwidget = VideoWidget(parent) +Phonon.createPath(media, vwidget) +//! [21] diff --git a/doc/codesnippets/doc/src/snippets/code/src_gui_effects_qgraphicseffect.cpp b/doc/codesnippets/doc/src/snippets/code/src_gui_effects_qgraphicseffect.cpp new file mode 100644 index 000000000..c5d4809bb --- /dev/null +++ b/doc/codesnippets/doc/src/snippets/code/src_gui_effects_qgraphicseffect.cpp @@ -0,0 +1,37 @@ +//! [0] +def draw(self, painter): + # Fully opaque draw directly without going through a pixmap. + if qFuzzyCompare(self.opacity, 1): + drawSource(painter) + return + # ... +//! [0] + +//! [1] +def draw(self, painter): + # ... + offset = QPoint() + if self.sourceIsPixmap(): + # No point in drawing in device coordinates (pixmap will be scaled anyways). + pixmap = sourcePixmap(Qt.LogicalCoordinates, offset) + ... + painter.drawPixmap(offset, pixmap) + else: + # Draw pixmap in device coordinates to avoid pixmap scaling + pixmap = sourcePixmap(Qt.DeviceCoordinates, offset) + painter.setWorldTransform(QTransform()) + # ... + painter.drawPixmap(offset, pixmap) + # ... +//! [1] + +//! [2] +# ... +alphaGradient = QLinearGradient(rect.topLeft(), rect.bottomLeft()) +alphaGradient.setColorAt(0.0, Qt.transparent) +alphaGradient.setColorAt(0.5, Qt.black) +alphaGradient.setColorAt(1.0, Qt.transparent) +effect = QGraphicsOpacityEffect() +effect.setOpacityMask(alphaGradient) +# ... +//! [2] diff --git a/doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qmainwindow.cpp b/doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qmainwindow.cpp new file mode 100644 index 000000000..465fff192 --- /dev/null +++ b/doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qmainwindow.cpp @@ -0,0 +1,15 @@ +//! [0] +def closeEvent(self, event): + settings = QSettings("MyCompany", "MyApp") + settings.setValue("geometry", self.saveGeometry()) + settings.setValue("windowState", self.saveState()) + QMainWindow.closeEvent(self, event) +//! [0] + + +//! [1] +def readSettings(self): + settings = QSettings("MyCompany", "MyApp") + restoreGeometry(settings.value("myWidget/geometry")) + restoreState(settings.value("myWidget/windowState")) +//! [1] diff --git a/doc/codesnippets/doc/src/snippets/code/src_network_access_qnetworkdiskcache.cpp b/doc/codesnippets/doc/src/snippets/code/src_network_access_qnetworkdiskcache.cpp new file mode 100644 index 000000000..8d18510ce --- /dev/null +++ b/doc/codesnippets/doc/src/snippets/code/src_network_access_qnetworkdiskcache.cpp @@ -0,0 +1,24 @@ +//! [0] +manager = QNetworkAccessManager(self) +diskCache = QNetworkDiskCache(self) +diskCache.setCacheDirectory("cacheDir") +manager.setCache(diskCache) +//! [0] + +//! [1] +# do a normal request (preferred from network, as this is the default) +request = QNetworkRequest(QUrl("http://qt.nokia.com")) +manager.get(request) + +# do a request preferred from cache +request2 = QNetworkRequest(QUrl("http://qt.nokia.com")) +request2.setAttribute(QNetworkRequest.CacheLoadControlAttribute, QNetworkRequest.PreferCache) +manager.get(request2) +//! [1] + +//! [2] +@Slot(QNetworkReply) +def replyFinished(reply): + fromCache = reply.attribute(QNetworkRequest.SourceIsFromCacheAttribute) + print("page from cache? %d" % fromCache) +//! [2] diff --git a/doc/codesnippets/doc/src/snippets/code/src_network_bearer_qnetworkconfigmanager.cpp b/doc/codesnippets/doc/src/snippets/code/src_network_bearer_qnetworkconfigmanager.cpp new file mode 100644 index 000000000..837ea03ee --- /dev/null +++ b/doc/codesnippets/doc/src/snippets/code/src_network_bearer_qnetworkconfigmanager.cpp @@ -0,0 +1,8 @@ +//! [0] +mgr = QNetworkConfigurationManager() +activeConfigs = mgr.allConfigurations(QNetworkConfiguration.Active) +if activeConfigs: + assert(mgr.isOnline()) +else: + assert(not mgr.isOnline()) +//! [0] diff --git a/doc/codesnippets/doc/src/snippets/code/src_opengl_qglshaderprogram.cpp b/doc/codesnippets/doc/src/snippets/code/src_opengl_qglshaderprogram.cpp new file mode 100644 index 000000000..9c8f35a22 --- /dev/null +++ b/doc/codesnippets/doc/src/snippets/code/src_opengl_qglshaderprogram.cpp @@ -0,0 +1,53 @@ +//! [0] +shader = QGLShader(QGLShader.Vertex) +shader.compileSourceCode(code) + +program = QGLShaderProgram(context) +program.addShader(shader) +program.link() + +program.bind() +//! [0] + +//! [1] +program.addShaderFromSourceCode(QGLShader.Vertex, + "attribute highp vec4 vertex\n" \ + "attribute mediump mat4 matrix\n" \ + "void main(void)\n" \ + "{\n" \ + " gl_Position = matrix * vertex\n" \ + "}") +program.addShaderFromSourceCode(QGLShader.Fragment, + "uniform mediump vec4 color\n" \ + "void main(void)\n" \ + "{\n" \ + " gl_FragColor = color\n" \ + "}") +program.link() +program.bind() + +vertexLocation = program.attributeLocation("vertex") +matrixLocation = program.attributeLocation("matrix") +colorLocation = program.uniformLocation("color") +//! [1] + +//! [2] +triangleVertices = ( + 60.0f, 10.0f, 0.0f, + 110.0f, 110.0f, 0.0f, + 10.0f, 110.0f, 0.0f) + +color = QColor(0, 255, 0, 255) + +pmvMatrix = QMatrix4x4() +pmvMatrix.ortho(self.rect()) + +program.enableAttributeArray(vertexLocation) +program.setAttributeArray(vertexLocation, triangleVertices, 3) +program.setUniformValue(matrixLocation, pmvMatrix) +program.setUniformValue(colorLocation, color) + +glDrawArrays(GL_TRIANGLES, 0, 3) + +program.disableAttributeArray(vertexLocation) +//! [2] |