Update 07.12.2022
This commit is contained in:
2
HTML/gcphone/.idea/vcs.xml
generated
2
HTML/gcphone/.idea/vcs.xml
generated
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
5142
HTML/gcphone/package-lock.json
generated
5142
HTML/gcphone/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -12,8 +12,6 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"babel-preset-es2017": "^6.24.1",
|
||||
"node-sass": "^8.0.0",
|
||||
"sass-loader": "^6.0.7",
|
||||
"vue": "^2.5.16",
|
||||
"vue-router": "^2.8.1",
|
||||
"vue-timeago": "^3.4.4",
|
||||
|
||||
@@ -32,4 +32,5 @@ AddEventHandler('esx_addons_gcphone:call_taxi', function(data)
|
||||
y = coords.y,
|
||||
z = coords.z
|
||||
})
|
||||
TriggerServerEvent("taxijob:server:request")
|
||||
end)
|
||||
|
||||
@@ -29,12 +29,31 @@ local currentPlaySound = false
|
||||
local soundDistanceMax = 8.0
|
||||
|
||||
|
||||
ESX = nil
|
||||
|
||||
Citizen.CreateThread(function()
|
||||
while ESX == nil do
|
||||
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
|
||||
Citizen.Wait(0)
|
||||
end
|
||||
end)
|
||||
|
||||
--====================================================================================
|
||||
-- Check si le joueurs poséde un téléphone
|
||||
-- Callback true or false
|
||||
--====================================================================================
|
||||
function hasPhone (cb)
|
||||
--[[ function hasPhone (cb)
|
||||
cb(true)
|
||||
end ]]
|
||||
function hasPhone (cb)
|
||||
if (ESX == nil) then return cb(0) end
|
||||
ESX.TriggerServerCallback('gcphone:getItemAmount', function(qtty)
|
||||
cb(qtty > 0)
|
||||
end, 'phone')
|
||||
end
|
||||
function ShowNoPhoneWarning ()
|
||||
if (ESX == nil) then return end
|
||||
ESX.ShowNotification("~r~Du besitzt kein Smartphone!")
|
||||
end
|
||||
--====================================================================================
|
||||
-- Que faire si le joueurs veut ouvrir sont téléphone n'est qu'il en a pas ?
|
||||
@@ -48,25 +67,6 @@ end
|
||||
https://forum.fivem.net/t/tutorial-for-gcphone-with-call-and-job-message-other/177904
|
||||
]]--
|
||||
|
||||
ESX = nil
|
||||
|
||||
Citizen.CreateThread(function()
|
||||
while ESX == nil do
|
||||
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
|
||||
Citizen.Wait(0)
|
||||
end
|
||||
end)
|
||||
--[[
|
||||
function hasPhone (cb)
|
||||
if (ESX == nil) then return cb(0) end
|
||||
ESX.TriggerServerCallback('gcphone:getItemAmount', function(qtty)
|
||||
cb(qtty > 0)
|
||||
end, 'phone')
|
||||
end
|
||||
function ShowNoPhoneWarning ()
|
||||
if (ESX == nil) then return end
|
||||
ESX.ShowNotification("Vous n'avez pas de ~r~téléphone~s~")
|
||||
end --]]
|
||||
|
||||
AddEventHandler('esx:onPlayerDeath', function()
|
||||
if menuIsOpen then
|
||||
@@ -85,6 +85,19 @@ end)
|
||||
--====================================================================================
|
||||
--
|
||||
--====================================================================================
|
||||
|
||||
RegisterKeyMapping('openPhone', 'Handy öffnen', 'keyboard', 'f1')
|
||||
|
||||
RegisterCommand("openPhone", function (source, args, cmd)
|
||||
hasPhone(function (hasPhone)
|
||||
if hasPhone == true then
|
||||
TooglePhone()
|
||||
else
|
||||
ShowNoPhoneWarning()
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
Citizen.CreateThread(function()
|
||||
while true do
|
||||
Citizen.Wait(0)
|
||||
@@ -92,7 +105,7 @@ Citizen.CreateThread(function()
|
||||
DisableControlAction(0, 288, true)
|
||||
end
|
||||
if takePhoto ~= true then
|
||||
if IsControlJustPressed(1, Config.KeyOpenClose) then
|
||||
--[[ if IsControlJustPressed(1, Config.KeyOpenClose) then
|
||||
hasPhone(function (hasPhone)
|
||||
if hasPhone == true then
|
||||
TooglePhone()
|
||||
@@ -100,7 +113,7 @@ Citizen.CreateThread(function()
|
||||
ShowNoPhoneWarning()
|
||||
end
|
||||
end)
|
||||
end
|
||||
end ]]
|
||||
if menuIsOpen == true then
|
||||
for _, value in ipairs(KeyToucheCloseEvent) do
|
||||
if IsControlJustPressed(1, value.code) then
|
||||
@@ -351,6 +364,10 @@ end
|
||||
--====================================================================================
|
||||
function sendMessage(num, message)
|
||||
TriggerServerEvent('gcPhone:sendMessage', num, message)
|
||||
|
||||
if num == "555-5555" then
|
||||
TriggerServerEvent("taxijob:server:request")
|
||||
end
|
||||
end
|
||||
|
||||
function deleteMessage(msgId)
|
||||
@@ -491,25 +508,26 @@ end
|
||||
--====================================================================================
|
||||
|
||||
RegisterNUICallback('startCall', function (data, cb)
|
||||
startCall(data.numero, data.rtcOffer, data.extraData)
|
||||
cb()
|
||||
startCall(data.numero, data.rtcOffer, data.extraData)
|
||||
end)
|
||||
|
||||
RegisterNUICallback('acceptCall', function (data, cb)
|
||||
acceptCall(data.infoCall, data.rtcAnswer)
|
||||
cb()
|
||||
acceptCall(data.infoCall, data.rtcAnswer)
|
||||
end)
|
||||
RegisterNUICallback('rejectCall', function (data, cb)
|
||||
rejectCall(data.infoCall)
|
||||
cb()
|
||||
rejectCall(data.infoCall)
|
||||
end)
|
||||
|
||||
RegisterNUICallback('ignoreCall', function (data, cb)
|
||||
ignoreCall(data.infoCall)
|
||||
cb()
|
||||
ignoreCall(data.infoCall)
|
||||
end)
|
||||
|
||||
RegisterNUICallback('notififyUseRTC', function (use, cb)
|
||||
cb()
|
||||
USE_RTC = use
|
||||
if USE_RTC == true and inCall == true then
|
||||
inCall = false
|
||||
@@ -521,13 +539,12 @@ RegisterNUICallback('notififyUseRTC', function (use, cb)
|
||||
NetworkSetTalkerProximity(2.5)
|
||||
end
|
||||
end
|
||||
cb()
|
||||
end)
|
||||
|
||||
|
||||
RegisterNUICallback('onCandidates', function (data, cb)
|
||||
TriggerServerEvent('gcPhone:candidates', data.id, data.candidates)
|
||||
cb()
|
||||
TriggerServerEvent('gcPhone:candidates', data.id, data.candidates)
|
||||
end)
|
||||
|
||||
RegisterNetEvent("gcPhone:candidates")
|
||||
@@ -588,52 +605,58 @@ RegisterNUICallback('getMessages', function(data, cb)
|
||||
cb(json.encode(messages))
|
||||
end)
|
||||
RegisterNUICallback('sendMessage', function(data, cb)
|
||||
cb()
|
||||
if data.message == '%pos%' then
|
||||
local myPos = GetEntityCoords(PlayerPedId())
|
||||
data.message = 'GPS: ' .. myPos.x .. ', ' .. myPos.y
|
||||
end
|
||||
TriggerServerEvent('gcPhone:sendMessage', data.phoneNumber, data.message)
|
||||
--TriggerServerEvent('gcPhone:sendMessage', data.phoneNumber, data.message)
|
||||
sendMessage(data.phoneNumber, data.message)
|
||||
end)
|
||||
RegisterNUICallback('deleteMessage', function(data, cb)
|
||||
deleteMessage(data.id)
|
||||
cb()
|
||||
deleteMessage(data.id)
|
||||
end)
|
||||
RegisterNUICallback('deleteMessageNumber', function (data, cb)
|
||||
deleteMessageContact(data.number)
|
||||
cb()
|
||||
deleteMessageContact(data.number)
|
||||
end)
|
||||
RegisterNUICallback('deleteAllMessage', function (data, cb)
|
||||
deleteAllMessage()
|
||||
cb()
|
||||
deleteAllMessage()
|
||||
end)
|
||||
RegisterNUICallback('setReadMessageNumber', function (data, cb)
|
||||
setReadMessageNumber(data.number)
|
||||
cb()
|
||||
setReadMessageNumber(data.number)
|
||||
end)
|
||||
--====================================================================================
|
||||
-- Event - Contacts
|
||||
--====================================================================================
|
||||
RegisterNUICallback('addContact', function(data, cb)
|
||||
cb()
|
||||
TriggerServerEvent('gcPhone:addContact', data.display, data.phoneNumber)
|
||||
end)
|
||||
RegisterNUICallback('updateContact', function(data, cb)
|
||||
cb()
|
||||
TriggerServerEvent('gcPhone:updateContact', data.id, data.display, data.phoneNumber)
|
||||
end)
|
||||
RegisterNUICallback('deleteContact', function(data, cb)
|
||||
cb()
|
||||
TriggerServerEvent('gcPhone:deleteContact', data.id)
|
||||
end)
|
||||
RegisterNUICallback('getContacts', function(data, cb)
|
||||
cb(json.encode(contacts))
|
||||
end)
|
||||
RegisterNUICallback('setGPS', function(data, cb)
|
||||
SetNewWaypoint(tonumber(data.x), tonumber(data.y))
|
||||
cb()
|
||||
SetNewWaypoint(tonumber(data.x), tonumber(data.y))
|
||||
end)
|
||||
|
||||
-- Add security for event (leuit#0100)
|
||||
RegisterNUICallback('callEvent', function(data, cb)
|
||||
cb()
|
||||
local eventName = data.eventName or ''
|
||||
if string.match(eventName, 'gcphone') then
|
||||
if string.match(eventName, 'gcphone') or string.match(eventName, 'esx_addons_gcphone') then
|
||||
if data.data ~= nil then
|
||||
TriggerEvent(data.eventName, data.data)
|
||||
else
|
||||
@@ -642,14 +665,13 @@ RegisterNUICallback('callEvent', function(data, cb)
|
||||
else
|
||||
print('Event not allowed')
|
||||
end
|
||||
cb()
|
||||
end)
|
||||
RegisterNUICallback('useMouse', function(um, cb)
|
||||
useMouse = um
|
||||
end)
|
||||
RegisterNUICallback('deleteALL', function(data, cb)
|
||||
TriggerServerEvent('gcPhone:deleteALL')
|
||||
cb()
|
||||
TriggerServerEvent('gcPhone:deleteALL')
|
||||
end)
|
||||
|
||||
|
||||
@@ -668,20 +690,20 @@ function TooglePhone()
|
||||
end
|
||||
end
|
||||
RegisterNUICallback('faketakePhoto', function(data, cb)
|
||||
cb()
|
||||
menuIsOpen = false
|
||||
TriggerEvent('gcPhone:setMenuStatus', false)
|
||||
SendNUIMessage({show = false})
|
||||
cb()
|
||||
TriggerEvent('camera:open')
|
||||
end)
|
||||
|
||||
RegisterNUICallback('closePhone', function(data, cb)
|
||||
cb()
|
||||
menuIsOpen = false
|
||||
TriggerEvent('gcPhone:setMenuStatus', false)
|
||||
SendNUIMessage({show = false})
|
||||
PhonePlayOut()
|
||||
SetBigmapActive(0,0)
|
||||
cb()
|
||||
end)
|
||||
|
||||
|
||||
@@ -691,12 +713,12 @@ end)
|
||||
---------- GESTION APPEL ---------
|
||||
----------------------------------
|
||||
RegisterNUICallback('appelsDeleteHistorique', function (data, cb)
|
||||
appelsDeleteHistorique(data.numero)
|
||||
cb()
|
||||
appelsDeleteHistorique(data.numero)
|
||||
end)
|
||||
RegisterNUICallback('appelsDeleteAllHistorique', function (data, cb)
|
||||
appelsDeleteAllHistorique(data.infoCall)
|
||||
cb()
|
||||
appelsDeleteAllHistorique(data.infoCall)
|
||||
end)
|
||||
|
||||
|
||||
@@ -715,8 +737,8 @@ end)
|
||||
|
||||
|
||||
RegisterNUICallback('setIgnoreFocus', function (data, cb)
|
||||
ignoreFocus = data.ignoreFocus
|
||||
cb()
|
||||
ignoreFocus = data.ignoreFocus
|
||||
end)
|
||||
|
||||
RegisterNUICallback('takePhoto', function(data, cb)
|
||||
|
||||
@@ -165,17 +165,6 @@
|
||||
}
|
||||
],
|
||||
"apps": [
|
||||
{
|
||||
"name": "Twitter",
|
||||
"fr_FR__name": "Twitter",
|
||||
"en_US__name": "Twitter",
|
||||
"de_DE__name": "Twitter",
|
||||
"pl_PL__name": "Twitter",
|
||||
"es_ES__name": "Twitter",
|
||||
"icons": "/html/static/img/icons_app/twitter.png",
|
||||
"routeName": "twitter.splash",
|
||||
"inHomePage": false
|
||||
},
|
||||
{
|
||||
"name": "Telefon",
|
||||
"fr_FR__name": "Téléphone",
|
||||
@@ -188,18 +177,6 @@
|
||||
"routeName": "appels",
|
||||
"inHomePage": true
|
||||
},
|
||||
{
|
||||
"name": "Kontakte",
|
||||
"fr_FR__name": "Contacts",
|
||||
"en_US__name": "Contacts",
|
||||
"cs_CZ__name": "Kontakty",
|
||||
"de_DE__name": "Kontakte",
|
||||
"pl_PL__name": "Kontakty",
|
||||
"es_ES__name": "Contactos",
|
||||
"icons": "/html/static/img/icons_app/contacts.png",
|
||||
"routeName": "contacts",
|
||||
"inHomePage": false
|
||||
},
|
||||
{
|
||||
"name": "Nachrichten",
|
||||
"fr_FR__name": "Messages",
|
||||
@@ -213,6 +190,18 @@
|
||||
"inHomePage": true,
|
||||
"puceRef": "nbMessagesUnread"
|
||||
},
|
||||
{
|
||||
"name": "Kontakte",
|
||||
"fr_FR__name": "Contacts",
|
||||
"en_US__name": "Contacts",
|
||||
"cs_CZ__name": "Kontakty",
|
||||
"de_DE__name": "Kontakte",
|
||||
"pl_PL__name": "Kontakty",
|
||||
"es_ES__name": "Contactos",
|
||||
"icons": "/html/static/img/icons_app/contacts.png",
|
||||
"routeName": "contacts",
|
||||
"inHomePage": false
|
||||
},
|
||||
{
|
||||
"name": "Einstellungen",
|
||||
"fr_FR__name": "Paramètres",
|
||||
@@ -225,6 +214,17 @@
|
||||
"routeName": "parametre",
|
||||
"inHomePage": false
|
||||
},
|
||||
{
|
||||
"name": "Twitter",
|
||||
"fr_FR__name": "Twitter",
|
||||
"en_US__name": "Twitter",
|
||||
"de_DE__name": "Twitter",
|
||||
"pl_PL__name": "Twitter",
|
||||
"es_ES__name": "Twitter",
|
||||
"icons": "/html/static/img/icons_app/twitter.png",
|
||||
"routeName": "twitter.splash",
|
||||
"inHomePage": false
|
||||
},
|
||||
{
|
||||
"name": "Bank",
|
||||
"fr_FR__name": "Wallet",
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -32,19 +32,16 @@ end
|
||||
Un solution ESC basé sur la solution donnée par HalCroves
|
||||
https://forum.fivem.net/t/tutorial-for-gcphone-with-call-and-job-message-other/177904
|
||||
--]]
|
||||
--[[
|
||||
ESX.RegisterServerCallback('gcphone:getItemAmount', function(source, cb, item)
|
||||
print('gcphone:getItemAmount call item : ' .. item)
|
||||
ESX.RegisterServerCallback('gcphone:getItemAmount', function(source, cb, item)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
local items = xPlayer.getInventoryItem(item)
|
||||
local items = xPlayer.getInventoryItem(item)
|
||||
|
||||
if items == nil then
|
||||
cb(0)
|
||||
else
|
||||
cb(items.count)
|
||||
end
|
||||
if items == nil then
|
||||
cb(0)
|
||||
else
|
||||
cb(items.count)
|
||||
end
|
||||
end)
|
||||
--]]
|
||||
|
||||
--====================================================================================
|
||||
-- SIM CARDS // Thanks to AshKetchumza for the idea an some code.
|
||||
@@ -227,6 +224,7 @@ function getMessages(identifier)
|
||||
local result = MySQL.Sync.fetchAll("SELECT phone_messages.* FROM phone_messages LEFT JOIN users ON users.identifier = @identifier WHERE phone_messages.receiver = users.phone_number", {
|
||||
['@identifier'] = identifier
|
||||
})
|
||||
|
||||
return result
|
||||
--return MySQLQueryTimeStamp("SELECT phone_messages.* FROM phone_messages LEFT JOIN users ON users.identifier = @identifier WHERE phone_messages.receiver = users.phone_number", {['@identifier'] = identifier})
|
||||
end
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
<div id="app" class="phone_screen">
|
||||
<router-view></router-view>
|
||||
<div class="bottom_bar" @click.stop="$router.push({name: 'home'})"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -15,7 +16,7 @@
|
||||
|
||||
<script>
|
||||
|
||||
import './PhoneBaseStyle.scss'
|
||||
import './PhoneBaseStyle.css'
|
||||
import './assets/css/font-awesome.min.css'
|
||||
import { mapGetters, mapActions } from 'vuex'
|
||||
export default {
|
||||
@@ -93,5 +94,16 @@ export default {
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
<style>
|
||||
|
||||
.bottom_bar {
|
||||
position: absolute;
|
||||
bottom: 5px;
|
||||
left: 20%;
|
||||
width: 60%;
|
||||
height: 7px;
|
||||
border-radius: 5px;
|
||||
background-color: grey;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="phone_app">
|
||||
<PhoneTitle :title="'9 GAG (' + currentSelectPost + ')'" backgroundColor="#000" @back="quit"/>
|
||||
<PhoneTitle :title="'9 GAG (' + currentSelectPost + ')'" backgroundColor="#000" @back="quit"/>
|
||||
<div class='phone_content' @click="onClick">
|
||||
<div class="post" v-if="currentPost !== undefined">
|
||||
<h1 class="post-title">{{ currentPost.title }}</h1>
|
||||
@@ -90,35 +90,34 @@ export default {
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
<style scoped>
|
||||
.post{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
|
||||
.post-title {
|
||||
padding-left: 12px;
|
||||
font-size: 18px;
|
||||
height: 18px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.post-content{
|
||||
display: flex;
|
||||
width: 390px;
|
||||
height: 670px;
|
||||
}
|
||||
|
||||
.post-video, .post-image{
|
||||
object-fit: contain;
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.post .post-title {
|
||||
padding-left: 12px;
|
||||
font-size: 18px;
|
||||
height: 18px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.post .post-content{
|
||||
display: flex;
|
||||
width: 390px;
|
||||
height: 670px;
|
||||
}
|
||||
|
||||
.post .post-video, .post-image{
|
||||
object-fit: contain;
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.loading{
|
||||
height: 100%;
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<div
|
||||
class="subMenu-elem"
|
||||
:style="getColorItem(i)"
|
||||
v-for="(Comp, i) of subMenu"
|
||||
v-for="(Comp, i) of subMenu"
|
||||
:key="i"
|
||||
@click="swapMenu(i)"
|
||||
>
|
||||
@@ -110,14 +110,14 @@ export default {
|
||||
background-color: #2c3e50;
|
||||
}
|
||||
.content{
|
||||
height: calc(100% - 68px);
|
||||
height: calc(100% - 73px);
|
||||
overflow-y: auto;
|
||||
width: 337px;
|
||||
}
|
||||
.subMenu{
|
||||
border-top: 1px solid rgba(0,0,0,0.24);
|
||||
display: flex;
|
||||
height: 56px;
|
||||
height: 70px;
|
||||
}
|
||||
.subMenu-elem {
|
||||
height: 100%;
|
||||
|
||||
@@ -11,24 +11,24 @@
|
||||
|
||||
<div class="time"></div>
|
||||
<div class="time-display">{{timeDisplay}}</div>
|
||||
|
||||
|
||||
|
||||
<div class='home_buttons'>
|
||||
|
||||
|
||||
<button style=" top: 73px; font-family:initial; margin-left: 10px; margin-right: 10px;"
|
||||
v-for="(but, key) of AppsHome"
|
||||
v-bind:key="but.name"
|
||||
v-for="(but, key) of AppsHome"
|
||||
v-bind:key="but.name"
|
||||
v-bind:class="{ select: key === currentSelect}"
|
||||
v-bind:style="{backgroundImage: 'url(' + but.icons +')'}"
|
||||
|
||||
|
||||
@click="openApp(but)"
|
||||
>
|
||||
<!--{{but.intlName}}-->
|
||||
<span class="puce" v-if="but.puce !== undefined && but.puce !== 0">{{but.puce}}</span>
|
||||
</button>
|
||||
|
||||
|
||||
<div class="btn_menu_ctn">
|
||||
<button
|
||||
<button
|
||||
class="btn_menu"
|
||||
:class="{ select: AppsHome.length === currentSelect}"
|
||||
v-bind:style="{backgroundImage: 'url(' + '/html/static/img/icons_app/menu.png' +')'}"
|
||||
@@ -37,7 +37,7 @@
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -104,11 +104,11 @@ export default {
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped="true">
|
||||
<style scoped>
|
||||
.home{
|
||||
background-size: cover !important;
|
||||
background-position: center !important;
|
||||
|
||||
|
||||
position: relative;
|
||||
left: 0;
|
||||
top: 0;
|
||||
@@ -158,9 +158,9 @@ export default {
|
||||
|
||||
.home_buttons{
|
||||
display: flex;
|
||||
padding: 6px;
|
||||
width: 100%;
|
||||
bottom:1px;
|
||||
padding: 6px;
|
||||
width: 95.3%;
|
||||
bottom:10px;
|
||||
position: absolute;
|
||||
align-items: flex-end;
|
||||
flex-flow: row;
|
||||
@@ -183,7 +183,7 @@ button{
|
||||
font-size: 14px;
|
||||
padding-top: 72px;
|
||||
font-weight: 700;
|
||||
text-shadow: -1px 0 0 rgba(0,0,0, 0.8),
|
||||
text-shadow: -1px 0 0 rgba(0,0,0, 0.8),
|
||||
1px 0 0 rgba(0,0,0, 0.8),
|
||||
0 -1px 0 rgba(0,0,0, 0.8),
|
||||
0 1px 0 rgba(0,0,0, 0.8);
|
||||
@@ -192,7 +192,7 @@ button{
|
||||
|
||||
|
||||
button .puce{
|
||||
|
||||
|
||||
position: absolute;
|
||||
display: block;
|
||||
background-color: #EE3838;
|
||||
@@ -209,7 +209,7 @@ button .puce{
|
||||
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
|
||||
bottom: 32px;
|
||||
right: 12px;
|
||||
|
||||
|
||||
bottom: 32px;
|
||||
right: 12px;
|
||||
}
|
||||
|
||||
@@ -3,30 +3,45 @@
|
||||
<div style="width: 342px;
|
||||
height: 756px;" class="backblur" v-bind:style="{background: 'url(' + backgroundURL +')'}"></div>
|
||||
<InfoBare class="infobare"/>
|
||||
<div class="menu" @click="onBack">
|
||||
<div class="menu"><!--@click="onBack"-->
|
||||
|
||||
<div class="menu_content">
|
||||
|
||||
<div class='menu_buttons'>
|
||||
<button
|
||||
v-for="(but, key) of Apps"
|
||||
v-bind:key="but.name"
|
||||
<div class='menu_buttons'>
|
||||
<button
|
||||
v-for="(but, key) of Apps"
|
||||
v-bind:key="but.name"
|
||||
|
||||
v-bind:class="{ select: key === currentSelect}"
|
||||
v-bind:style="{backgroundImage: 'url(' + but.icons +')'}"
|
||||
@click.stop="openApp(but)"
|
||||
>
|
||||
<span class="letra">{{ but.intlName }}</span>
|
||||
<span class="puce" v-if="but.puce !== undefined && but.puce !== 0">{{ but.puce }}</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- <div class="menu_bottom">
|
||||
<button style=" top: 73px; font-family:initial; margin-left: 10px; margin-right: 10px;"
|
||||
v-for="(but, key) of AppsHome"
|
||||
v-bind:key="but.name"
|
||||
v-bind:class="{ select: key === currentSelect}"
|
||||
v-bind:style="{backgroundImage: 'url(' + but.icons +')'}"
|
||||
|
||||
@click.stop="openApp(but)"
|
||||
>
|
||||
<!–{{but.intlName}}–>
|
||||
<span class="puce" v-if="but.puce !== undefined && but.puce !== 0">{{ but.puce }}</span>
|
||||
</button>
|
||||
</div>-->
|
||||
|
||||
v-bind:class="{ select: key === currentSelect}"
|
||||
v-bind:style="{backgroundImage: 'url(' + but.icons +')'}"
|
||||
@click.stop="openApp(but)"
|
||||
>
|
||||
<span class="letra">{{but.intlName}}</span>
|
||||
<span class="puce" v-if="but.puce !== undefined && but.puce !== 0">{{but.puce}}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex'
|
||||
import {mapGetters} from 'vuex'
|
||||
import InfoBare from './InfoBare'
|
||||
|
||||
export default {
|
||||
@@ -40,7 +55,7 @@ export default {
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['nbMessagesUnread', 'backgroundURL', 'Apps', 'useMouse'])
|
||||
...mapGetters(['nbMessagesUnread', 'backgroundURL', 'Apps', 'AppsHome', 'useMouse'])
|
||||
},
|
||||
methods: {
|
||||
...mapGetters(['closePhone']),
|
||||
@@ -76,13 +91,14 @@ export default {
|
||||
this.currentSelect = newS
|
||||
},
|
||||
openApp (app) {
|
||||
this.$router.push({ name: app.routeName })
|
||||
this.$router.push({name: app.routeName})
|
||||
},
|
||||
onEnter () {
|
||||
this.openApp(this.Apps[this.currentSelect])
|
||||
},
|
||||
onBack: function () {
|
||||
this.$router.push({ name: 'home' })
|
||||
// this.$router.push({name: 'home'})
|
||||
this.$phoneAPI.closePhone()
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
@@ -111,7 +127,7 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.menu{
|
||||
.menu {
|
||||
position: relative;
|
||||
left: 0;
|
||||
top: 0;
|
||||
@@ -119,22 +135,24 @@ export default {
|
||||
height: 100%;
|
||||
padding: 6px 8px;
|
||||
}
|
||||
.backblur{
|
||||
|
||||
.backblur {
|
||||
top: -6px;
|
||||
left: -6px;
|
||||
right:-6px;
|
||||
right: -6px;
|
||||
bottom: -6px;
|
||||
position: absolute;
|
||||
background-size: cover !important;
|
||||
background-position: center !important;
|
||||
filter: blur(6px);
|
||||
/*filter: blur(6px);*/
|
||||
}
|
||||
|
||||
.menu_content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.menu_buttons{
|
||||
.menu_buttons {
|
||||
margin-top: 24px;
|
||||
display: flex;
|
||||
width: 100%;
|
||||
@@ -154,13 +172,18 @@ export default {
|
||||
animation-duration: 0.6s;
|
||||
animation-fill-mode: forwards;
|
||||
}
|
||||
|
||||
@keyframes up {
|
||||
from {transform: translateY(100vh);}
|
||||
to {transform: translateY(0);}
|
||||
from {
|
||||
transform: translateY(100vh);
|
||||
}
|
||||
to {
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
button{
|
||||
button {
|
||||
position: relative;
|
||||
margin: 0px;
|
||||
border: none;
|
||||
@@ -175,13 +198,14 @@ button{
|
||||
font-size: 14px;
|
||||
padding-top: 72px;
|
||||
font-weight: 700;
|
||||
text-shadow: -1px 0 0 rgba(0,0,0, 0.8),
|
||||
1px 0 0 rgba(0,0,0, 0.8),
|
||||
0 -1px 0 rgba(0,0,0, 0.8),
|
||||
0 1px 0 rgba(0,0,0, 0.8);
|
||||
text-shadow: -1px 0 0 rgba(0, 0, 0, 0.8),
|
||||
1px 0 0 rgba(0, 0, 0, 0.8),
|
||||
0 -1px 0 rgba(0, 0, 0, 0.8),
|
||||
0 1px 0 rgba(0, 0, 0, 0.8);
|
||||
text-align: center;
|
||||
}
|
||||
button .puce{
|
||||
|
||||
button .puce {
|
||||
position: absolute;
|
||||
display: block;
|
||||
background-color: #EE3838;
|
||||
@@ -189,26 +213,27 @@ button .puce{
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
top: -5px;
|
||||
left: 51px;
|
||||
left: 51px;
|
||||
font-family: none;
|
||||
line-height: 28px;
|
||||
text-align: center;
|
||||
border-radius: 50%;
|
||||
font-weight: 400;
|
||||
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
|
||||
font-weight: 400;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
||||
bottom: 32px;
|
||||
right: 12px;
|
||||
|
||||
bottom: 32px;
|
||||
right: 12px;
|
||||
}
|
||||
button.select, button:hover{
|
||||
background-color: rgba(255,255,255, 0.2);
|
||||
|
||||
button.select, button:hover {
|
||||
background-color: rgba(255, 255, 255, 0.2);
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.letra{
|
||||
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica;
|
||||
.letra {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
position: absolute;
|
||||
@@ -216,4 +241,67 @@ button.select, button:hover{
|
||||
transform: translate(-50%, -10px);
|
||||
}
|
||||
|
||||
.menu_bottom{
|
||||
display: flex;
|
||||
padding: 6px;
|
||||
width: 100%;
|
||||
bottom:1px;
|
||||
align-items: flex-end;
|
||||
flex-flow: row;
|
||||
flex-wrap: wrap;
|
||||
margin-bottom: 3px;
|
||||
justify-content: space-between;
|
||||
transition: all 0.5s ease-in-out;
|
||||
margin-top: 90px;
|
||||
}
|
||||
|
||||
.menu_bottom button{
|
||||
margin: 0;
|
||||
border: none;
|
||||
width: 80px;
|
||||
height: 76px;
|
||||
color: white;
|
||||
background-size: 64px 64px;
|
||||
background-position: center 6px;
|
||||
background-repeat: no-repeat;
|
||||
background-color: transparent;
|
||||
font-size: 14px;
|
||||
padding-top: 72px;
|
||||
font-weight: 700;
|
||||
text-shadow: -1px 0 0 rgba(0,0,0, 0.8),
|
||||
1px 0 0 rgba(0,0,0, 0.8),
|
||||
0 -1px 0 rgba(0,0,0, 0.8),
|
||||
0 1px 0 rgba(0,0,0, 0.8);
|
||||
text-align: center;
|
||||
transform: translateY(-100%);
|
||||
}
|
||||
|
||||
.menu_bottom button .puce{
|
||||
|
||||
position: absolute;
|
||||
display: block;
|
||||
background-color: #EE3838;
|
||||
font-size: 14px;
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
top: -5px;
|
||||
left: 51px;
|
||||
font-family: none;
|
||||
line-height: 28px;
|
||||
text-align: center;
|
||||
border-radius: 50%;
|
||||
font-weight: 400;
|
||||
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
|
||||
bottom: 32px;
|
||||
right: 12px;
|
||||
|
||||
bottom: 32px;
|
||||
right: 12px;
|
||||
}
|
||||
|
||||
.menu_bottom button.select, .menu_bottom button:hover{
|
||||
background-color: rgba(255,255,255, 0.2);
|
||||
border-radius: 22%;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<PhoneTitle :title="channelName" backgroundColor="#ff4500" @back="onQuit"/>
|
||||
<div class="phone_content">
|
||||
<div class="elements" ref="elementsDiv">
|
||||
<div class="element" v-for='(elem) in tchatMessages'
|
||||
<div class="element" v-for='(elem) in tchatMessages'
|
||||
v-bind:key="elem.id"
|
||||
>
|
||||
<div class="time">{{formatTime(elem.time)}}</div>
|
||||
@@ -148,7 +148,7 @@ export default {
|
||||
line-height: 18px;
|
||||
font-size: 18px;
|
||||
padding-bottom: 6px;
|
||||
|
||||
|
||||
flex-direction: row;
|
||||
height: 60px; */
|
||||
}
|
||||
@@ -167,15 +167,16 @@ export default {
|
||||
|
||||
.tchat_write{
|
||||
height: 56px;
|
||||
widows: 100%;
|
||||
width: 100%;
|
||||
background: #dae0e6;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
.tchat_write input{
|
||||
width: 75%;
|
||||
margin-left: 6%;
|
||||
margin-left: 1%;
|
||||
border: none;
|
||||
outline: none;
|
||||
font-size: 16px;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<textarea ref="copyTextarea" class="copyTextarea"/>
|
||||
|
||||
|
||||
<div style="width: 326px; height: 678px; backgroundColor: white" id='sms_list' @contextmenu.prevent="showOptions">
|
||||
<div style="width: 326px; height: 565px; backgroundColor: white" id='sms_list' @contextmenu.prevent="showOptions">
|
||||
<div class="sms" v-bind:class="{ select: key === selectMessage}" v-for='(mess, key) in messagesList' v-bind:key="mess.id" @click.stop="onActionMessage(mess)"
|
||||
>
|
||||
<div class="sms_message_time">
|
||||
@@ -302,7 +302,7 @@ export default {
|
||||
computed: {
|
||||
...mapGetters(['IntlString', 'messages', 'contacts', 'useMouse', 'enableTakePhoto']),
|
||||
messagesList () {
|
||||
return this.messages.filter(e => e.transmitter === this.phoneNumber).sort((a, b) => a.time - b.time)
|
||||
return this.messages.filter(e => e.transmitter === this.phoneNumber && e.receiver !== this.phoneNumber).sort((a, b) => a.time - b.time)
|
||||
},
|
||||
displayContact () {
|
||||
if (this.display !== undefined) {
|
||||
|
||||
@@ -107,9 +107,10 @@ export default {
|
||||
<style scoped>
|
||||
.twitter_menu {
|
||||
border-top: 1px solid #CCC;
|
||||
height: 56px;
|
||||
height: 60px;
|
||||
display: flex;
|
||||
width: 100%;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
.twitter_menu-item {
|
||||
flex-grow: 1;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import Vue from 'vue'
|
||||
import Router from 'vue-router'
|
||||
|
||||
import Home from '@/components/Home'
|
||||
/* import Home from '@/components/Home' */
|
||||
import Menu from '@/components/Menu'
|
||||
|
||||
import Contacts from '@/components/contacts/Contacts'
|
||||
@@ -38,7 +38,8 @@ export default new Router({
|
||||
{
|
||||
path: '/',
|
||||
name: 'home',
|
||||
component: Home
|
||||
/* component: Home */
|
||||
component: Menu
|
||||
},
|
||||
{
|
||||
path: '/menu',
|
||||
|
||||
@@ -165,17 +165,6 @@
|
||||
}
|
||||
],
|
||||
"apps": [
|
||||
{
|
||||
"name": "Twitter",
|
||||
"fr_FR__name": "Twitter",
|
||||
"en_US__name": "Twitter",
|
||||
"de_DE__name": "Twitter",
|
||||
"pl_PL__name": "Twitter",
|
||||
"es_ES__name": "Twitter",
|
||||
"icons": "/html/static/img/icons_app/twitter.png",
|
||||
"routeName": "twitter.splash",
|
||||
"inHomePage": false
|
||||
},
|
||||
{
|
||||
"name": "Telefon",
|
||||
"fr_FR__name": "Téléphone",
|
||||
@@ -188,18 +177,6 @@
|
||||
"routeName": "appels",
|
||||
"inHomePage": true
|
||||
},
|
||||
{
|
||||
"name": "Kontakte",
|
||||
"fr_FR__name": "Contacts",
|
||||
"en_US__name": "Contacts",
|
||||
"cs_CZ__name": "Kontakty",
|
||||
"de_DE__name": "Kontakte",
|
||||
"pl_PL__name": "Kontakty",
|
||||
"es_ES__name": "Contactos",
|
||||
"icons": "/html/static/img/icons_app/contacts.png",
|
||||
"routeName": "contacts",
|
||||
"inHomePage": false
|
||||
},
|
||||
{
|
||||
"name": "Nachrichten",
|
||||
"fr_FR__name": "Messages",
|
||||
@@ -213,6 +190,18 @@
|
||||
"inHomePage": true,
|
||||
"puceRef": "nbMessagesUnread"
|
||||
},
|
||||
{
|
||||
"name": "Kontakte",
|
||||
"fr_FR__name": "Contacts",
|
||||
"en_US__name": "Contacts",
|
||||
"cs_CZ__name": "Kontakty",
|
||||
"de_DE__name": "Kontakte",
|
||||
"pl_PL__name": "Kontakty",
|
||||
"es_ES__name": "Contactos",
|
||||
"icons": "/html/static/img/icons_app/contacts.png",
|
||||
"routeName": "contacts",
|
||||
"inHomePage": false
|
||||
},
|
||||
{
|
||||
"name": "Einstellungen",
|
||||
"fr_FR__name": "Paramètres",
|
||||
@@ -225,6 +214,17 @@
|
||||
"routeName": "parametre",
|
||||
"inHomePage": false
|
||||
},
|
||||
{
|
||||
"name": "Twitter",
|
||||
"fr_FR__name": "Twitter",
|
||||
"en_US__name": "Twitter",
|
||||
"de_DE__name": "Twitter",
|
||||
"pl_PL__name": "Twitter",
|
||||
"es_ES__name": "Twitter",
|
||||
"icons": "/html/static/img/icons_app/twitter.png",
|
||||
"routeName": "twitter.splash",
|
||||
"inHomePage": false
|
||||
},
|
||||
{
|
||||
"name": "Bank",
|
||||
"fr_FR__name": "Wallet",
|
||||
|
||||
Reference in New Issue
Block a user