Browse Source

first push

tags/v0.0-beta-1
marcin 5 years ago
commit
62df25ce8e
62 changed files with 2410 additions and 0 deletions
  1. 245
    0
      LeftPanel.qml
  2. 72
    0
      MiddlePanel.qml
  3. 248
    0
      RightPanel.qml
  4. 17
    0
      bitmonero.pro
  5. 251
    0
      bitmonero.pro.user
  6. 177
    0
      components/DashboardTable.qml
  7. 18
    0
      components/Input.qml
  8. 28
    0
      components/Label.qml
  9. 28
    0
      components/LineEdit.qml
  10. 75
    0
      components/MenuButton.qml
  11. 41
    0
      components/NetworkStatusItem.qml
  12. 167
    0
      components/SearchInput.qml
  13. 46
    0
      components/StandardButton.qml
  14. 135
    0
      components/TableDropdown.qml
  15. 154
    0
      components/TableHeader.qml
  16. 26
    0
      components/TipItem.qml
  17. 27
    0
      deployment.pri
  18. 30
    0
      filter.cpp
  19. 24
    0
      filter.h
  20. BIN
      images/ascSortIndicator.png
  21. BIN
      images/ascSortIndicatorActived.png
  22. BIN
      images/ascSortIndicatorPressed.png
  23. BIN
      images/backToWindowIcon.png
  24. BIN
      images/backToWindowIconHovered.png
  25. BIN
      images/closeIcon.png
  26. BIN
      images/connectedImage.png
  27. BIN
      images/descSortIndicator.png
  28. BIN
      images/descSortIndicatorActived.png
  29. BIN
      images/descSortIndicatorPressed.png
  30. BIN
      images/disconnectedImage.png
  31. BIN
      images/dropIndicator.png
  32. BIN
      images/dropdownOption1.png
  33. BIN
      images/dropdownSearch.png
  34. BIN
      images/dropdownSend.png
  35. BIN
      images/helpIcon.png
  36. BIN
      images/helpIconHovered.png
  37. BIN
      images/hseparator.png
  38. BIN
      images/lockIcon.png
  39. BIN
      images/magnifier.png
  40. BIN
      images/maximizeIcon.png
  41. BIN
      images/maximizeIconHovered.png
  42. BIN
      images/menuIndicator.png
  43. BIN
      images/minimizeIcon.png
  44. BIN
      images/minimizeIconHovered.png
  45. BIN
      images/moneroLogo.png
  46. BIN
      images/statusConnected.png
  47. BIN
      images/statusDisconnected.png
  48. BIN
      images/tableOptions.png
  49. BIN
      images/tip.png
  50. BIN
      images/whatIsIcon.png
  51. 20
    0
      main.cpp
  52. 77
    0
      main.qml
  53. 5
    0
      pages/AddressBook.qml
  54. 125
    0
      pages/Dashboard.qml
  55. 5
    0
      pages/History.qml
  56. 6
    0
      pages/Mining.qml
  57. 6
    0
      pages/Settings.qml
  58. 5
    0
      pages/Transfer.qml
  59. 57
    0
      qml.qrc
  60. 88
    0
      tabs/TweetsModel.qml
  61. 124
    0
      tabs/Twitter.qml
  62. 83
    0
      tabs/tweetSearch.js

+ 245
- 0
LeftPanel.qml View File

@@ -0,0 +1,245 @@
import QtQuick 2.2
import "components"

Rectangle {
id: panel
signal dashboardClicked()
signal historyClicked()
signal transferClicked()
signal settingsClicked()
signal addressBookClicked()
signal miningClicked()

width: 260
color: "#FFFFFF"

Image {
id: logo
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
anchors.topMargin: 31
source: "images/moneroLogo.png"
}

Column {
id: column1
anchors.left: parent.left
anchors.right: parent.right
anchors.top: logo.bottom
anchors.topMargin: 40
spacing: 6

Label {
text: qsTr("Locked balance")
anchors.left: parent.left
anchors.leftMargin: 50
}

Row {
Item {
anchors.verticalCenter: parent.verticalCenter
height: 26
width: 50

Image {
anchors.centerIn: parent
source: "images/lockIcon.png"
}
}

Text {
anchors.verticalCenter: parent.verticalCenter
font.family: "Arial"
font.pixelSize: 26
color: "#000000"
text: "78.9239845"
}
}

Item { //separator
anchors.left: parent.left
anchors.right: parent.right
height: 1
}

Label {
text: qsTr("Unlocked")
anchors.left: parent.left
anchors.leftMargin: 50
}

Text {
anchors.left: parent.left
anchors.leftMargin: 50
font.family: "Arial"
font.pixelSize: 18
color: "#000000"
text: "2324.9239845"
}
}

Rectangle {
anchors.top: parent.top
anchors.left: parent.left
anchors.bottom: menuRect.top
width: 1
color: "#DBDBDB"
}

Rectangle {
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
height: 1
color: "#DBDBDB"
}

Rectangle {
id: menuRect
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
anchors.top: column1.bottom
anchors.topMargin: 50
color: "#1C1C1C"

Column {
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top

property var previousButton: dashboardButton
MenuButton {
id: dashboardButton
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Dashboard")
symbol: qsTr("D")
dotColor: "#FFE00A"
checked: true
onClicked: {
parent.previousButton.checked = false
parent.previousButton = dashboardButton
panel.dashboardClicked()
}
}

Rectangle {
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
color: dashboardButton.checked || transferButton.checked ? "#1C1C1C" : "#505050"
height: 1
}

MenuButton {
id: transferButton
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Transfer")
symbol: qsTr("T")
dotColor: "#FF6C3C"
onClicked: {
parent.previousButton.checked = false
parent.previousButton = transferButton
panel.transferClicked()
}
}

Rectangle {
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
color: transferButton.checked || historyButton.checked ? "#1C1C1C" : "#505050"
height: 1
}

MenuButton {
id: historyButton
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("History")
symbol: qsTr("H")
dotColor: "#6B0072"
onClicked: {
parent.previousButton.checked = false
parent.previousButton = historyButton
panel.historyClicked()
}
}

Rectangle {
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
color: historyButton.checked || addressBookButton.checked ? "#1C1C1C" : "#505050"
height: 1
}

MenuButton {
id: addressBookButton
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Address book")
symbol: qsTr("B")
dotColor: "#FF4F41"
onClicked: {
parent.previousButton.checked = false
parent.previousButton = addressBookButton
panel.addressBookClicked()
}
}

Rectangle {
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
color: addressBookButton.checked || miningButton.checked ? "#1C1C1C" : "#505050"
height: 1
}

MenuButton {
id: miningButton
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Mining")
symbol: qsTr("M")
dotColor: "#FFD781"
onClicked: {
parent.previousButton.checked = false
parent.previousButton = miningButton
panel.miningClicked()
}
}

Rectangle {
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
color: miningButton.checked || settingsButton.checked ? "#1C1C1C" : "#505050"
height: 1
}

MenuButton {
id: settingsButton
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Settings")
symbol: qsTr("S")
dotColor: "#36B25C"
onClicked: {
parent.previousButton.checked = false
parent.previousButton = settingsButton
panel.settingsClicked()
}
}
}

NetworkStatusItem {
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
connected: true
}
}
}

+ 72
- 0
MiddlePanel.qml View File

@@ -0,0 +1,72 @@
import QtQuick 2.2

Rectangle {
color: "#F0EEEE"

states: [
State {
name: "Dashboard"
PropertyChanges { target: loader; source: "pages/Dashboard.qml" }
}, State {
name: "History"
PropertyChanges { target: loader; source: "pages/History.qml" }
}, State {
name: "Transfer"
PropertyChanges { target: loader; source: "pages/Transfer.qml" }
}, State {
name: "AddressBook"
PropertyChanges { target: loader; source: "pages/AddressBook.qml" }
}, State {
name: "Settings"
PropertyChanges { target: loader; source: "pages/Settings.qml" }
}, State {
name: "Mining"
PropertyChanges { target: loader; source: "pages/Mining.qml" }
}
]

Row {
id: styledRow
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top

Rectangle { height: 4; width: parent.width / 5; color: "#FFE00A" }
Rectangle { height: 4; width: parent.width / 5; color: "#6B0072" }
Rectangle { height: 4; width: parent.width / 5; color: "#FF6C3C" }
Rectangle { height: 4; width: parent.width / 5; color: "#FFD781" }
Rectangle { height: 4; width: parent.width / 5; color: "#FF4F41" }
}

Loader {
id: loader
anchors.left: parent.left
anchors.right: parent.right
anchors.top: styledRow.bottom
anchors.bottom: parent.bottom
}

Rectangle {
anchors.top: styledRow.bottom
anchors.bottom: parent.bottom
anchors.right: parent.right
width: 1
color: "#DBDBDB"
}

Rectangle {
anchors.top: styledRow.bottom
anchors.bottom: parent.bottom
anchors.left: parent.left
width: 1
color: "#DBDBDB"
}

Rectangle {
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
height: 1
color: "#DBDBDB"
}
}

+ 248
- 0
RightPanel.qml View File

@@ -0,0 +1,248 @@
import QtQuick 2.2
import QtQuick.Window 2.0
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.2
import "tabs"

Rectangle {
width: 330

Row {
anchors.top: parent.top
anchors.right: parent.right
anchors.topMargin: 5
anchors.rightMargin: 5

Rectangle {
width: 25
height: 25
radius: 5
clip: true
color: helpArea.containsMouse ? "#DBDBDB" : "#FFFFFF"

Rectangle {
width: 25
height: 25
radius: 5
color: "#FFFFFF"
visible: helpArea.containsMouse
x: 1; y: 2
}

Image {
anchors.centerIn: parent
source: {
if(appWindow.whatIsEnable)
return "images/whatIsIcon.png"
return helpArea.containsMouse ? "images/helpIconHovered.png" :
"images/helpIcon.png"
}
}

MouseArea {
id: helpArea
anchors.fill: parent
hoverEnabled: true
onClicked: {
appWindow.whatIsEnable = !appWindow.whatIsEnable
}
}
}

Rectangle {
width: 25
height: 25
radius: 5
clip: true
color: minimizeArea.containsMouse ? "#DBDBDB" : "#FFFFFF"

Rectangle {
width: 25
height: 25
radius: 5
color: "#FFFFFF"
visible: minimizeArea.containsMouse
x: 1; y: 2
}

Image {
anchors.centerIn: parent
source: minimizeArea.containsMouse ? "images/minimizeIconHovered.png" :
"images/minimizeIcon.png"
}

MouseArea {
id: minimizeArea
anchors.fill: parent
hoverEnabled: true
onClicked: appWindow.visibility = Window.Minimized
}
}

Rectangle {
property bool checked: false
width: 25
height: 25
radius: 5
clip: true
color: maximizeArea.containsMouse ? "#DBDBDB" : "#FFFFFF"

Rectangle {
width: 25
height: 25
radius: 5
color: "#FFFFFF"
visible: maximizeArea.containsMouse
x: 1; y: 2
}

Image {
anchors.centerIn: parent
source: {
if(parent.checked)
return maximizeArea.containsMouse ? "images/backToWindowIconHovered.png" :
"images/backToWindowIcon.png"
return maximizeArea.containsMouse ? "images/maximizeIconHovered.png" :
"images/maximizeIcon.png"
}
}

MouseArea {
id: maximizeArea
anchors.fill: parent
hoverEnabled: true
onClicked: {
parent.checked = !parent.checked
appWindow.visibility = parent.checked ? Window.FullScreen :
Window.Windowed
}
}
}

Rectangle {
width: 25
height: 25
radius: 5
clip: true
color: closeArea.containsMouse ? "#DBDBDB" : "#FFFFFF"

Rectangle {
width: 25
height: 25
radius: 5
color: "#FFFFFF"
visible: closeArea.containsMouse
x: 1; y: 2
}

Image {
anchors.centerIn: parent
source: "images/closeIcon.png"
}

MouseArea {
id: closeArea
anchors.fill: parent
hoverEnabled: true
onClicked: Qt.quit()
}
}
}

TabView {
id: tabView
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: styledRow.top
anchors.leftMargin: 14
anchors.rightMargin: 14
anchors.topMargin: 40

Tab { title: qsTr("Twitter"); source: "tabs/Twitter.qml" }
Tab { title: "News" }
Tab { title: "Help" }
Tab { title: "About" }

style: TabViewStyle {
frameOverlap: 2
tabOverlap: 0
tab: Rectangle {
implicitHeight: 31
implicitWidth: 68

Text {
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 12
anchors.rightMargin: 12
elide: Text.ElideRight
font.family: "Arial"
font.pixelSize: 14
color: styleData.selected ? "#FF4E40" : "#4A4646"
text: styleData.title
}

Rectangle {
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.right: parent.right
width: 1
color: "#DBDBDB"
visible: styleData.index !== tabView.count - 1
}

Rectangle {
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
height: 1
color: styleData.selected ? "#FFFFFF" : "#DBDBDB"
}
}

frame: Rectangle {
color: "#FFFFFF"
anchors.fill: parent
Rectangle {
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
anchors.topMargin: 1
height: 1
color: "#DBDBDB"
}
}
}
}

Row {
id: styledRow
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom

Rectangle { height: 8; width: parent.width / 5; color: "#FFE00A" }
Rectangle { height: 8; width: parent.width / 5; color: "#6B0072" }
Rectangle { height: 8; width: parent.width / 5; color: "#FF6C3C" }
Rectangle { height: 8; width: parent.width / 5; color: "#FFD781" }
Rectangle { height: 8; width: parent.width / 5; color: "#FF4F41" }
}

Rectangle {
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
height: 1
color: "#DBDBDB"
}

Rectangle {
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.right: parent.right
width: 1
color: "#DBDBDB"
}
}

+ 17
- 0
bitmonero.pro View File

@@ -0,0 +1,17 @@
TEMPLATE = app

QT += qml quick widgets

SOURCES += main.cpp \
filter.cpp

RESOURCES += qml.qrc

# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =

# Default rules for deployment.
include(deployment.pri)

HEADERS += \
filter.h

+ 251
- 0
bitmonero.pro.user View File

@@ -0,0 +1,251 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 3.1.2, 2014-07-07T10:49:29. -->
<qtcreator>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap"/>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.3.0 MinGW 32bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.3.0 MinGW 32bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.53.win32_mingw482_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">G:/RPA/build-bitmonero-Desktop_Qt_5_3_0_MinGW_32bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">budowania</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">czyszczenia</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">G:/RPA/build-bitmonero-Desktop_Qt_5_3_0_MinGW_32bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">budowania</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">czyszczenia</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">instalacji</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Zainstaluj lokalnie</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">bitmonero</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:G:/RPA/bitmonero/bitmonero.pro</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">bitmonero.pro</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">false</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
<value type="QByteArray">{20382c58-78e1-43a4-9d27-354b0656be87}</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">15</value>
</data>
</qtcreator>

+ 177
- 0
components/DashboardTable.qml View File

@@ -0,0 +1,177 @@
import QtQuick 2.0
import "../components"

ListView {
id: listView
clip: true
boundsBehavior: ListView.StopAtBounds
property var previousItem
delegate: Rectangle {
id: delegate
height: 90
width: listView.width
z: 0
color: index % 2 ? "#F8F8F8" : "#FFFFFF"
function collapseDropdown() { dropdown.expanded = false }
Row {
id: row1
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
anchors.topMargin: 14
Rectangle {
id: dot
width: 14
height: width
radius: width / 2
color: out ? "#FF4F41" : "#36B05B"
}
Item { //separator
width: 12
height: 14
}
Text {
id: paymentIdText
width: text.length ? 122 : 0
anchors.verticalCenter: dot.verticalCenter
font.family: "Arial"
font.bold: true
font.pixelSize: 19
color: "#444444"
elide: Text.ElideRight
text: paymentId
}
Item { //separator
width: paymentIdText.width ? 12 : 0
height: 14
}
Text {
anchors.verticalCenter: dot.verticalCenter
width: parent.width - x - 12
elide: Text.ElideRight
font.family: "Arial"
font.pixelSize: 14
color: "#545454"
text: address
}
}
Row {
anchors.left: parent.left
anchors.top: row1.bottom
anchors.topMargin: 8
spacing: 12
Item { //separator
width: 14
height: 14
}
Column {
anchors.top: parent.top
width: 202
Text {
anchors.left: parent.left
font.family: "Arial"
font.pixelSize: 12
color: "#545454"
text: qsTr("Date")
}
Text {
font.family: "Arial"
font.pixelSize: 18
color: "#000000"
text: date
}
}
Column {
anchors.top: parent.top
width: 148
Text {
anchors.left: parent.left
font.family: "Arial"
font.pixelSize: 12
color: "#545454"
text: qsTr("Amount")
}
Text {
font.family: "Arial"
font.pixelSize: 18
color: "#000000"
text: amount
}
}
Column {
anchors.top: parent.top
width: 148
Text {
anchors.left: parent.left
font.family: "Arial"
font.pixelSize: 12
color: "#545454"
text: qsTr("Balance")
}
Row {
spacing: 2
Text {
anchors.bottom: parent.bottom
anchors.bottomMargin: 3
font.family: "Arial"
font.pixelSize: 16
color: out ? "#FF4F41" : "#36B05B"
text: out ? "↓" : "↑"
}
Text {
anchors.bottom: parent.bottom
font.family: "Arial"
font.pixelSize: 18
color: out ? "#FF4F41" : "#36B05B"
text: balance
}
}
}
}

Rectangle {
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
height: 1
color: "#DBDBDB"
}

TableDropdown {
id: dropdown
anchors.right: parent.right
anchors.bottom: parent.bottom
anchors.bottomMargin: 11
anchors.rightMargin: 5
onExpandedChanged: {
if(listView.previousItem !== undefined && listView.previousItem !== delegate)
listView.previousItem.collapseDropdown()
if(expanded) {
listView.previousItem = delegate
listView.currentIndex = index
listView.currentItem.z = 2
}
}
onCollapsed: delegate.z = 0
}
}
}

+ 18
- 0
components/Input.qml View File

@@ -0,0 +1,18 @@
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.2
import QtQuick 2.2

TextField {
font.family: "Arial"
font.pixelSize: 18

style: TextFieldStyle {
textColor: "#3F3F3F"
placeholderTextColor: "#BABABA"

background: Rectangle {
border.width: 0
color: "transparent"
}
}
}

+ 28
- 0
components/Label.qml View File

@@ -0,0 +1,28 @@
import QtQuick 2.0

Item {
property alias text: label.text
property alias color: label.color
property int fontSize: 12
width: icon.x + icon.width
height: icon.height

Text {
id: label
anchors.bottom: parent.bottom
anchors.bottomMargin: 2
anchors.left: parent.left
font.family: "Arial"
font.pixelSize: parent.fontSize
color: "#555555"
}

Image {
id: icon
anchors.verticalCenter: parent.verticalCenter
anchors.left: label.right
anchors.leftMargin: 5
source: "../images/whatIsIcon.png"
visible: appWindow.whatIsEnable
}
}

+ 28
- 0
components/LineEdit.qml View File

@@ -0,0 +1,28 @@
import QtQuick 2.0

Item {
property alias placeholderText: input.placeholderText
property alias text: input.text
height: 37

Rectangle {
anchors.fill: parent
anchors.bottomMargin: 1
color: "#DBDBDB"
radius: 4
}

Rectangle {
anchors.fill: parent
anchors.topMargin: 1
color: "#FFFFFF"
radius: 4
}

Input {
id: input
anchors.fill: parent
anchors.leftMargin: 11
anchors.rightMargin: 11
}
}

+ 75
- 0
components/MenuButton.qml View File

@@ -0,0 +1,75 @@
import QtQuick 2.0

Rectangle {
id: button
property alias text: label.text
property bool checked: false
property alias dotColor: dot.color
property alias symbol: symbolText.text
signal clicked()

height: 64
color: checked ? "#FFFFFF" : "#1C1C1C"

Item {
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.left: parent.left
width: 50

Rectangle {
id: dot
anchors.centerIn: parent
width: 16
height: width
radius: height / 2

Rectangle {
anchors.centerIn: parent
width: 12
height: width
radius: height / 2
color: "#1C1C1C"
visible: !button.checked && !buttonArea.containsMouse
}
}

Text {
id: symbolText
anchors.centerIn: parent
font.pixelSize: 11
font.bold: true
color: button.checked || buttonArea.containsMouse ? "#FFFFFF" : dot.color
visible: appWindow.ctrlPressed
}
}

Image {
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 20
source: "../images/menuIndicator.png"
}

Text {
id: label
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: 50
font.family: "Arial"
font.pixelSize: 18
color: parent.checked ? "#000000" : "#FFFFFF"
}

MouseArea {
id: buttonArea
anchors.fill: parent
hoverEnabled: true
onClicked: {
if(parent.checked)
return
button.clicked()
parent.checked = true
}
}
}

+ 41
- 0
components/NetworkStatusItem.qml View File

@@ -0,0 +1,41 @@
import QtQuick 2.0

Row {
id: item
property bool connected: false

Item {
id: iconItem
anchors.bottom: parent.bottom
width: 50
height: 50

Image {
anchors.centerIn: parent
source: item.connected ? "../images/statusConnected.png" :
"../images/statusDisconnected.png"
}
}

Column {
anchors.bottom: parent.bottom
height: 53
spacing: 3

Text {
anchors.left: parent.left
font.family: "Arial"
font.pixelSize: 12
color: "#545454"
text: qsTr("Network status")
}

Text {
anchors.left: parent.left
font.family: "Arial"
font.pixelSize: 18
color: item.connected ? "#FF6C3B" : "#AAAAAA"
text: item.connected ? qsTr("Connected") : qsTr("Disconnected")
}
}
}

+ 167
- 0
components/SearchInput.qml View File

@@ -0,0 +1,167 @@
import QtQuick 2.0

Item {
id: item
signal searchClicked(string text, int option)
height: 50

Rectangle {
anchors.fill: parent
color: "#DBDBDB"
radius: 10
}

Rectangle {
anchors.fill: parent
anchors.topMargin: 1
color: "#FFFFFF"
radius: 10

Item {
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.left: parent.left
width: 45

Image {
anchors.centerIn: parent
source: "../images/magnifier.png"
}
}

Input {
id: input
anchors.left: parent.left
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.right: dropdown.left
anchors.leftMargin: 45
verticalAlignment: TextInput.AlignVCenter
placeholderText: qsTr("Search by...")
}

Item {
id: dropdown
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.right: button.left
width: 154

Row {
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter

Text {
id: dropText
width: 114 - 12
anchors.verticalCenter: parent.verticalCenter
font.family: "Arial"
font.pixelSize: 12
color: "#4A4747"
text: "NAME"
}

Image {
anchors.verticalCenter: parent.verticalCenter
source: "../images/hseparator.png"
}

Item {
height: dropdown.height
width: 38

Image {
id: dropIndicator
anchors.centerIn: parent
source: "../images/dropIndicator.png"
rotation: droplist.height === 0 ? 0 : 180
}
}
}

MouseArea {
anchors.fill: parent
onClicked: droplist.height = droplist.height === 0 ? dropcolumn.height : 0
}
}

Rectangle {
id: droplist
property int currentOption: 0

width: 154
height: 0
clip: true
x: dropdown.x
y: dropdown.height
color: "#FFFFFF"

Behavior on height {
NumberAnimation { duration: 100; easing.type: Easing.InQuad }
}

ListModel {
id: dropdownModel
ListElement { name: "NAME" }
ListElement { name: "DESCRIPTION" }
ListElement { name: "ADDRESS" }
}

Column {
id: dropcolumn
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top

Repeater {
model: dropdownModel
delegate: Rectangle {
property bool isCurrent: name === dropText.text
anchors.left: parent.left
anchors.right: parent.right
height: 30
color: delegateArea.pressed || isCurrent ? "#4A4646" : "#FFFFFF"

Text {
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.right: parent.right
elide: Text.ElideRight
anchors.leftMargin: 12
anchors.rightMargin: 12
font.family: "Arial"
font.pixelSize: 12
color: delegateArea.pressed || parent.isCurrent ? "#FFFFFF" : "#4A4646"
text: name
}

MouseArea {
id: delegateArea
anchors.fill: parent
onClicked: {
droplist.currentOption = index
droplist.height = 0
dropText.text = name
}
}
}
}
}
}

StandardButton {
id: button
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.right: parent.right
anchors.margins: 6
width: 80

shadowColor: "#8C0B00"
pressedColor: "#C60F00"
releasedColor: "#FF4F41"
text: qsTr("SEARCH")
onClicked: item.searchClicked(input.text, droplist.currentOption)
}
}
}

+ 46
- 0
components/StandardButton.qml View File

@@ -0,0 +1,46 @@
import QtQuick 2.0

Item {
height: 37
property string shadowColor
property string pressedColor
property string releasedColor
property string textColor: "#FFFFFF"
property alias text: label.text
signal clicked()

Rectangle {
anchors.left: parent.left
anchors.right: parent.right
height: parent.height - 1
y: buttonArea.pressed ? 1 : 0
radius: 4
color: parent.shadowColor
}

Rectangle {
anchors.left: parent.left
anchors.right: parent.right
height: parent.height - 1
y: buttonArea.pressed ? 0 : 1
color: buttonArea.pressed ? parent.pressedColor : parent.releasedColor
radius: 4
}

Text {
id: label
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.right: parent.right
horizontalAlignment: Text.AlignHCenter
elide: Text.ElideRight
font.pixelSize: 12
color: parent.textColor
}

MouseArea {
id: buttonArea
anchors.fill: parent
onClicked: parent.clicked()
}
}

+ 135
- 0
components/TableDropdown.qml View File

@@ -0,0 +1,135 @@
import QtQuick 2.0

Item {
id: dropdown
property bool expanded: false
signal collapsed()
width: 72
height: 37

Item {
id: head
anchors.fill: parent

Rectangle {
anchors.fill: parent
anchors.topMargin: dropdown.expanded ? 0 : 1
radius: 3
color: dropdown.expanded ? "#888888" : "#DBDBDB"
}

Rectangle {
anchors.fill: parent
anchors.bottomMargin: dropdown.expanded ? 0 : 1
radius: 3
color: dropdown.expanded ? "#DBDBDB" : "#F0EEEE"
}

Image {
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: 10
source: "../images/tableOptions.png"
}

Rectangle {
anchors.centerIn: parent
anchors.horizontalCenterOffset: 1
height: 23
width: 1
color: dropdown.expanded ? "#FFFFFF" : "#DBDBDB"
}

Image {
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 10
source: "../images/dropIndicator.png"
}

MouseArea {
anchors.fill: parent
onPressed: dropdown.expanded = !dropdown.expanded
}
}

Item {
anchors.left: parent.left
anchors.right: parent.right
anchors.top: head.bottom
height: dropdown.expanded ? column.height : 0
onHeightChanged: if(height === 0) dropdown.collapsed()
clip: true

Behavior on height {
NumberAnimation { duration: 100; easing.type: Easing.InQuad }
}

Column {
id: column
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top

ListModel {
id: dataModel
ListElement { name: "<b>text 1</b>"; icon: "../images/dropdownOption1.png" }
ListElement { name: "<b>longer text 2</b>"; icon: "../images/dropdownSend.png" }
ListElement { name: "<b>text3</b><br/><br/>lorem ipsum asdasd asdasd"; icon: "../images/dropdownSearch.png" }
}

Repeater {
id: repeater
model: dataModel

delegate: Rectangle {
id: delegate
anchors.left: parent.left
anchors.right: parent.right
height: 30
color: delegateArea.containsMouse ? "#F0EEEE" : "#DBDBDB"
radius: index === repeater.count - 1 ? 5 : 0

Rectangle {
anchors.left: parent.left
anchors.top: parent.top
width: 5
height: 5
color: delegate.color
}

Rectangle {
anchors.right: parent.right
anchors.top: parent.top
width: 5
height: 5
color: delegate.color
}

Image {
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: 10
source: icon
}

MouseArea {
id: delegateArea
hoverEnabled: true
anchors.fill: parent
onEntered: {
var pos = rootItem.mapFromItem(delegate, 30, -20)
tipItem.text = name
tipItem.x = pos.x
if(tipItem.height > 30)
pos.y -= tipItem.height - 30
tipItem.y = pos.y
tipItem.visible = true
}
onExited: tipItem.visible = false
}
}
}
}
}
}

+ 154
- 0
components/TableHeader.qml View File

@@ -0,0 +1,154 @@
import QtQuick 2.0

Rectangle {
id: header
signal sortRequest(bool desc, int column)
property int activeSortColumn: -1

height: 31
color: "#FFFFFF"

Rectangle {
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
height: 1
color: "#DBDBDB"
}

ListModel {
id: columnsModel
ListElement { columnName: "Date"; columnWidth: 92 }
ListElement { columnName: "Amount"; columnWidth: 158 }
ListElement { columnName: "Balance"; columnWidth: 168 }
}

Row {
anchors.horizontalCenter: parent.horizontalCenter

Rectangle {
height: 31
width: 1
color: "#DBDBDB"
}

Repeater {
id: columnsRepeater
model: columnsModel
delegate: Rectangle {
id: delegate
property bool desc: false
height: 31
width: columnWidth

Text {
anchors.verticalCenter: parent.verticalCenter
anchors.verticalCenterOffset: -2
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 13
anchors.rightMargin: 13
elide: Text.ElideRight
font.family: "Arial"
font.pixelSize: 14
color: {
if(delegateArea.pressed)
return "#FF4304"
return index === header.activeSortColumn || delegateArea.containsMouse ? "#FF6C3C" : "#4A4949"
}
text: columnName
}

MouseArea {
id: delegateArea
hoverEnabled: true
anchors.fill: parent
onClicked: {
delegate.desc = !delegate.desc
header.activeSortColumn = index
header.sortRequest(delegate.desc, index)
}
}

Row {
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.rightMargin: 9

Item {
width: 14
anchors.top: parent.top
anchors.bottom: parent.bottom

Image {
anchors.centerIn: parent
anchors.verticalCenterOffset: -2
source: {
if(descArea.pressed)
return "../images/descSortIndicatorPressed.png"
return index === header.activeSortColumn || descArea.containsMouse ? "../images/descSortIndicatorActived.png" :
"../images/descSortIndicator.png"
}
}

MouseArea {
id: descArea
hoverEnabled: true
anchors.fill: parent
onClicked: {
delegate.desc = true
header.activeSortColumn = index
header.sortRequest(delegate.desc, index)
}
}
}

Item {
width: 14
anchors.top: parent.top
anchors.bottom: parent.bottom

Image {
anchors.centerIn: parent
anchors.verticalCenterOffset: -3
source: {
if(ascArea.pressed)
return "../images/ascSortIndicatorPressed.png"
return index === header.activeSortColumn || ascArea.containsMouse ? "../images/ascSortIndicatorActived.png" :
"../images/ascSortIndicator.png"
}
}

MouseArea {
id: ascArea
hoverEnabled: true
anchors.fill: parent
onClicked: {
delegate.desc = false
header.activeSortColumn = index
header.sortRequest(delegate.desc, index)
}
}
}
}

Rectangle {
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
height: 1
color: index === header.activeSortColumn ? "#FFFFFF" : "#DBDBDB"
}

Rectangle {
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.right: parent.right
width: 1
color: "#DBDBDB"
}
}
}
}
}

+ 26
- 0
components/TipItem.qml View File

@@ -0,0 +1,26 @@
import QtQuick 2.0

Rectangle {
property alias text: content.text
width: content.width + 12
height: content.height + 17
color: "#FF6C3C"
radius: 3

Image {
anchors.top: parent.bottom
anchors.left: parent.left
anchors.leftMargin: 8
source: "../images/tip.png"
}

Text {
id: content
anchors.horizontalCenter: parent.horizontalCenter
y: 6
lineHeight: 0.7
font.family: "Arial"
font.pixelSize: 12
color: "#FFFFFF"
}
}

+ 27
- 0
deployment.pri View File

@@ -0,0 +1,27 @@
android-no-sdk {
target.path = /data/user/qt
export(target.path)
INSTALLS += target
} else:android {
x86 {
target.path = /libs/x86
} else: armeabi-v7a {
target.path = /libs/armeabi-v7a
} else {
target.path = /libs/armeabi
}
export(target.path)
INSTALLS += target
} else:unix {
isEmpty(target.path) {
qnx {
target.path = /tmp/$${TARGET}/bin
} else {
target.path = /opt/$${TARGET}/bin
}
export(target.path)
}
INSTALLS += target
}

export(INSTALLS)

+ 30
- 0
filter.cpp View File

@@ -0,0 +1,30 @@
#include "filter.h"
#include <QKeyEvent>

filter::filter(QObject *parent) :
QObject(parent)
{
m_ctrlPressed = true;
}

bool filter::eventFilter(QObject *obj, QEvent *ev) {
switch(ev->type()) {
case QEvent::KeyPress: {
QKeyEvent *ke = static_cast<QKeyEvent*>(ev);
if(ke->key() == Qt::Key_Control) {
emit ctrlPressed();
m_ctrlPressed = true;
}
} break;
case QEvent::KeyRelease: {
QKeyEvent *ke = static_cast<QKeyEvent*>(ev);
if(ke->key() == Qt::Key_Control) {
emit ctrlReleased();
m_ctrlPressed = false;
}
} break;
default: break;
}

return QObject::eventFilter(obj, ev);
}

+ 24
- 0
filter.h View File

@@ -0,0 +1,24 @@
#ifndef FILTER_H
#define FILTER_H

#include <QObject>

class filter : public QObject
{
Q_OBJECT

private:
bool m_ctrlPressed;

public:
explicit filter(QObject *parent = 0);

protected:
bool eventFilter(QObject *obj, QEvent *ev);

signals:
void ctrlPressed();
void ctrlReleased();
};

#endif // FILTER_H

BIN
images/ascSortIndicator.png View File

Before After
Width: 12  |  Height: 8  |  Size: 288B

BIN
images/ascSortIndicatorActived.png View File

Before After
Width: 12  |  Height: 8  |  Size: 287B

BIN
images/ascSortIndicatorPressed.png View File

Before After
Width: 12  |  Height: 8  |  Size: 288B

BIN
images/backToWindowIcon.png View File

Before After
Width: 10  |  Height: 10  |  Size: 233B

BIN
images/backToWindowIconHovered.png View File

Before After
Width: 10  |  Height: 10  |  Size: 239B

BIN
images/closeIcon.png View File

Before After
Width: 8  |  Height: 7  |  Size: 238B

BIN
images/connectedImage.png View File

Before After
Width: 113  |  Height: 37  |  Size: 1.9KB

BIN
images/descSortIndicator.png View File

Before After
Width: 12  |  Height: 8  |  Size: 301B

BIN
images/descSortIndicatorActived.png View File

Before After
Width: 12  |  Height: 8  |  Size: 301B

BIN
images/descSortIndicatorPressed.png View File

Before After
Width: 12  |  Height: 8  |  Size: 301B

BIN
images/disconnectedImage.png View File

Before After
Width: 141  |  Height: 37  |  Size: 2.0KB

BIN
images/dropIndicator.png View File

Before After
Width: 12  |  Height: 8  |  Size: 301B

BIN
images/dropdownOption1.png View File

Before After
Width: 14  |  Height: 18  |  Size: 384B

BIN
images/dropdownSearch.png View File

Before After
Width: 18  |  Height: 18  |  Size: 477B

BIN
images/dropdownSend.png View File

Before After
Width: 16  |  Height: 19  |  Size: 514B

BIN
images/helpIcon.png View File

Before After
Width: 6  |  Height: 9  |  Size: 220B

BIN
images/helpIconHovered.png View File

Before After
Width: 6  |  Height: 9  |  Size: 220B

BIN
images/hseparator.png View File

Before After
Width: 2  |  Height: 18  |  Size: 201B

BIN
images/lockIcon.png View File

Before After
Width: 12  |  Height: 16  |  Size: 337B

BIN
images/magnifier.png View File

Before After
Width: 23  |  Height: 23  |  Size: 560B

BIN
images/maximizeIcon.png View File

Before After
Width: 10  |  Height: 8  |  Size: 212B

BIN
images/maximizeIconHovered.png View File

Before After
Width: 10  |  Height: 8  |  Size: 215B

BIN
images/menuIndicator.png View File

Before After
Width: 10  |  Height: 15  |  Size: 340B

BIN
images/minimizeIcon.png View File

Before After
Width: 8  |  Height: 8  |  Size: 198B

BIN
images/minimizeIconHovered.png View File

Before After
Width: 8  |  Height: 8  |  Size: 198B

BIN
images/moneroLogo.png View File

Before After
Width: 152  |  Height: 34  |  Size: 2.5KB

BIN
images/statusConnected.png View File

Before After
Width: 10  |  Height: 22  |  Size: 428B

BIN
images/statusDisconnected.png View File

Before After
Width: 22  |  Height: 11  |  Size: 406B

BIN
images/tableOptions.png View File

Before After
Width: 18  |  Height: 18  |  Size: 489B

BIN
images/tip.png View File

Before After
Width: 5  |  Height: 5  |  Size: 217B

BIN
images/whatIsIcon.png View File

Before After
Width: 12  |  Height: 18  |  Size: 365B

+ 20
- 0
main.cpp View File

@@ -0,0 +1,20 @@
#include <QApplication>
#include <QQmlApplicationEngine>

#include "filter.h"

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
filter *eventFilter = new filter;
app.installEventFilter(eventFilter);

QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
QObject *rootObject = engine.rootObjects().first();

QObject::connect(eventFilter, SIGNAL(ctrlPressed()), rootObject, SLOT(ctrlKeyPressed()));
QObject::connect(eventFilter, SIGNAL(ctrlReleased()), rootObject, SLOT(ctrlKeyReleased()));

return app.exec();
}

+ 77
- 0
main.qml View File

@@ -0,0 +1,77 @@
import QtQuick 2.2
import QtQuick.Window 2.0
import QtQuick.Controls 1.1
import QtQuick.Controls.Styles 1.1
import "components"

ApplicationWindow {
id: appWindow
property bool whatIsEnable: false
property bool ctrlPressed: false
function ctrlKeyPressed() { ctrlPressed = true; }
function ctrlKeyReleased() { ctrlPressed = false; }

visible: true
width: 1269
height: 932
color: "#FFFFFF"
x: (Screen.width - width) / 2
y: (Screen.height - height) / 2
flags: Qt.FramelessWindowHint | Qt.WindowSystemMenuHint | Qt.Window | Qt.WindowMinimizeButtonHint

Item {
id: rootItem
anchors.fill: parent

MouseArea {
property var previousPosition
anchors.fill: parent

onPressed: previousPosition = Qt.point(mouseX, mouseY)
onPositionChanged: {
if (pressedButtons == Qt.LeftButton) {
var dx = mouseX - previousPosition.x
var dy = mouseY - previousPosition.y
appWindow.x += dx
appWindow.y += dy
}
}
}

LeftPanel {
id: leftPanel
anchors.left: parent.left
anchors.top: parent.top
anchors.bottom: parent.bottom
onDashboardClicked: middlePanel.state = "Dashboard"
onHistoryClicked: middlePanel.state = "History"
onTransferClicked: middlePanel.state = "Transfer"
onAddressBookClicked: middlePanel.state = "AddressBook"
onMiningClicked: middlePanel.state = "Minning"
onSettingsClicked: middlePanel.state = "Settings"
}

RightPanel {
id: rightPanel
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.bottom
}

MiddlePanel {
id: middlePanel
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.left: leftPanel.right
anchors.right: rightPanel.left
state: "Dashboard"
}

TipItem {
id: tipItem
text: "send to the same destination"
visible: false
z: 100
}
}
}

+ 5
- 0
pages/AddressBook.qml View File

@@ -0,0 +1,5 @@
import QtQuick 2.0

Rectangle {
color: "#000000"
}

+ 125
- 0
pages/Dashboard.qml View File

@@ -0,0 +1,125 @@
import QtQuick 2.0
import "../components"

Rectangle {
color: "#F0EEEE"

SearchInput {
id: searchInput
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
anchors.margins: 17
z: 1
}

Text {
id: quickTransferText
anchors.left: parent.left
anchors.right: parent.right
anchors.top: searchInput.bottom
anchors.topMargin: 20
elide: Text.ElideRight
anchors.margins: 17
font.family: "Arial"
font.pixelSize: 18
color: "#4A4949"
text: qsTr("Quick transfer")
}

LineEdit {
id: quickTransferLine
anchors.left: parent.left
anchors.right: parent.right
anchors.top: quickTransferText.bottom
anchors.topMargin: 18
anchors.leftMargin: 17
anchors.rightMargin: 17
}

Row {
id: row
anchors.left: parent.left
anchors.right: parent.right
anchors.top: quickTransferLine.bottom
anchors.topMargin: 18
anchors.leftMargin: 17
anchors.rightMargin: 17
spacing: 17

LineEdit {
id: amountLine
width: 148
placeholderText: "amount..."
}